[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice
From: Sven Langkamp <sven.langkamp () gmail ! com>
Date: 2007-10-31 21:54:37
Message-ID: 1193867677.716405.11050.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 731515 by langkamp:
ported Karbon to the gradient resource server and fixed some casting problems
M +1 -1 karbon/plugins/tools/CMakeLists.txt
M +2 -3 karbon/plugins/tools/KarbonGradientTool.cpp
M +9 -11 karbon/plugins/tools/KarbonPatternTool.cpp
M +20 -18 karbon/widgets/vgradienttabwidget.cc
M +5 -3 karbon/widgets/vgradienttabwidget.h
M +1 -2 libs/resources/CMakeLists.txt
M +3 -3 libs/resources/KoAbstractGradient.h
D libs/resources/KoResourceServer.cpp
M +81 -27 libs/resources/KoResourceServer.h
A libs/resources/KoResourceServerProvider.cpp \
libs/resources/KoResourceServerRegistry.cpp#731222 [License: LGPL (v2+)] A \
libs/resources/KoResourceServerProvider.h \
libs/resources/KoResourceServerRegistry.h#731222 [License: LGPL (v2+)] D \
libs/resources/KoResourceServerRegistry.cpp D \
libs/resources/KoResourceServerRegistry.h
--- trunk/koffice/karbon/plugins/tools/CMakeLists.txt #731514:731515
@@ -19,7 +19,7 @@
kde4_add_plugin(karbontools ${karbon_tools_PART_SRCS})
-target_link_libraries(karbontools ${KDE4_KPARTS_LIBS} koguiutils kopainter \
karboncommon ) +target_link_libraries(karbontools ${KDE4_KPARTS_LIBS} koguiutils \
karboncommon )
install(TARGETS karbontools DESTINATION ${PLUGIN_INSTALL_DIR})
--- trunk/koffice/karbon/plugins/tools/KarbonGradientTool.cpp #731514:731515
@@ -21,8 +21,6 @@
#include "KarbonGradientTool.h"
#include "KarbonGradientEditStrategy.h"
-#include <karbon_factory.h>
-#include <karbon_resourceserver.h>
#include <vgradienttabwidget.h>
#include <KoShape.h>
@@ -32,6 +30,7 @@
#include <KoSelection.h>
#include <KoPointerEvent.h>
#include <KoShapeBackgroundCommand.h>
+#include <KoResourceServerProvider.h>
#include <QGridLayout>
@@ -234,7 +233,7 @@
m_gradientWidget = new VGradientTabWidget( optionWidget );
m_gradientWidget->setGradient( m_gradient );
- m_gradientWidget->setResourceServer( KarbonFactory::rServer() );
+ m_gradientWidget->setResourceServer( \
KoResourceServerProvider::instance()->gradientServer() ); layout->addWidget( \
m_gradientWidget );
layout->addItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, \
QSizePolicy::MinimumExpanding));
--- trunk/koffice/karbon/plugins/tools/KarbonPatternTool.cpp #731514:731515
@@ -31,7 +31,7 @@
#include <KoPointerEvent.h>
#include <KoPattern.h>
#include <KoResourceServer.h>
-#include <KoResourceServerRegistry.h>
+#include <KoResourceServerProvider.h>
#include <klocale.h>
#include <kiconloader.h>
@@ -224,15 +224,13 @@
QWidget *optionWidget = new QWidget();
QGridLayout* layout = new QGridLayout( optionWidget );
- KoResourceServerBase* srv = \
KoResourceServerRegistry::instance()->value("PatternServer");
- QList<KoResource*> patterns = srv->resources();
+ KoResourceServer<KoPattern>* srv = \
KoResourceServerProvider::instance()->patternServer(); + QList<KoPattern*> \
patterns = srv->resources();
- QList<QTableWidgetItem*> items;
- foreach( KoResource* resource, patterns ) {
- KoPattern* pat = dynamic_cast<KoPattern*>(resource);
- if(pat)
- items.append( static_cast<QTableWidgetItem*>( new KarbonPatternItem( pat \
) ) );
- }
+ QList<QTableWidgetItem*> items;
+ foreach( KoPattern* pat, patterns ) {
+ items.append( static_cast<QTableWidgetItem*>( new KarbonPatternItem( \
pat ) ) ); + }
m_patternChooser = new KoPatternChooser( items, optionWidget );
//m_patternChooser->setFixedSize( 180, 120 );
@@ -311,7 +309,7 @@
QString newFilename = \
KGlobal::mainComponent().dirs()->saveLocation("ko_patterns" ) + fi.baseName() + \
".pat"; pattern->setFilename(newFilename);
- KoResourceServerBase* srv = \
KoResourceServerRegistry::instance()->value("PatternServer"); + \
KoResourceServer<KoPattern>* srv = \
KoResourceServerProvider::instance()->patternServer();; srv->addResource(pattern);
if( pattern )
@@ -322,7 +320,7 @@
{
KoPattern * pattern = m_currentPattern->pattern();
m_patternChooser->removePattern( m_currentPattern );
- KoResourceServerRegistry::instance()->value("PatternServer")->removeResource(pattern);
+ KoResourceServerProvider::instance()->patternServer()->removeResource(pattern);
m_currentPattern = static_cast<KarbonPatternItem*>( \
m_patternChooser->currentPattern() ); }
--- trunk/koffice/karbon/widgets/vgradienttabwidget.cc #731514:731515
@@ -21,12 +21,12 @@
#include "vgradientwidget.h"
#include "vgradienttabwidget.h"
-#include "karbon_resourceserver.h"
#include "KarbonGradientItem.h"
#include <KoAbstractGradient.h>
-#include <KoStopGradient.h>
#include <KoResourceChooser.h>
+#include <KoResourceServer.h>
+#include <KoResourceServerProvider.h>
#include <knuminput.h>
#include <kcombobox.h>
@@ -408,11 +408,12 @@
if( ! m_resourceServer )
return;
- QList<KoAbstractGradient*> gradients = m_resourceServer->gradients();
+ QList<KoAbstractGradient*> gradients = m_resourceServer->resources();
if( gradients.count() > 0 )
{
- foreach( KoAbstractGradient * gradient, gradients )
- m_predefGradientsView->addItem( new KarbonGradientItem( gradient ) );
+ foreach( KoAbstractGradient * gradient, gradients ) {
+ m_predefGradientsView->addItem( new KarbonGradientItem( gradient ) \
); + }
}
}
@@ -453,7 +454,7 @@
m_gradientTarget->setCurrentIndex( target );
}
-void VGradientTabWidget::setResourceServer( KarbonResourceServer* server )
+void VGradientTabWidget::setResourceServer( KoResourceServer<KoAbstractGradient>* \
server ) {
m_resourceServer = server;
updatePredefGradients();
@@ -543,9 +544,10 @@
void VGradientTabWidget::addGradientToPredefs()
{
- KoAbstractGradient * g = m_resourceServer->addGradient( cloneGradient( \
m_gradient ) );
- if( g )
- m_predefGradientsView->addItem( new KarbonGradientItem( g ) );
+// KoStopGradient * g; = cloneGradient( m_gradient );
+// m_resourceServer->addResource( g );
+// if( g )
+// m_predefGradientsView->addItem( new KarbonGradientItem( g ) );
}
void VGradientTabWidget::predefSelected( QTableWidgetItem * item )
@@ -585,15 +587,15 @@
void VGradientTabWidget::deletePredef()
{
- KarbonGradientItem * item = dynamic_cast<KarbonGradientItem*>( \
m_predefGradientsView->currentItem() );
- if( ! item )
- return;
-
- m_resourceServer->removeGradient( item->gradient() );
- int row = m_predefGradientsView->row( item );
- int col = m_predefGradientsView->column( item );
- m_predefGradientsView->takeItem( row, col );
- delete item;
+// KarbonGradientItem * item = dynamic_cast<KarbonGradientItem*>( \
m_predefGradientsView->currentItem() ); +// if( ! item )
+// return;
+//
+// m_resourceServer->removeResource( item->gradient() );
+// int row = m_predefGradientsView->row( item );
+// int col = m_predefGradientsView->column( item );
+// m_predefGradientsView->takeItem( row, col );
+// delete item;
}
void VGradientTabWidget::stopsChanged()
--- trunk/koffice/karbon/widgets/vgradienttabwidget.h #731514:731515
@@ -29,12 +29,14 @@
#include <QPixmap>
#include <QtGui/QTableWidgetItem>
+#include <KoResourceServer.h>
+#include <KoAbstractGradient.h>
+
class KComboBox;
class VGradientWidget;
class KListWidget;
class KIntNumInput;
class QPushButton;
-class KarbonResourceServer;
class KoResourceChooser;
/// A widget to preview a gradient
@@ -117,7 +119,7 @@
* Sets the resource server to get the predefined gradients from.
* @param server the new resource server to use
*/
- void setResourceServer( KarbonResourceServer* server );
+ void setResourceServer( KoResourceServer<KoAbstractGradient>* server );
Q_SIGNALS:
/// Is emmited a soon as the gradient changes
@@ -153,7 +155,7 @@
KIntNumInput *m_opacity;
QGradient * m_gradient; /// the actual edited gradient
- KarbonResourceServer* m_resourceServer; ///< the predefined gradients list.
+ KoResourceServer<KoAbstractGradient>* m_resourceServer; ///< the predefined \
gradients list. double m_gradOpacity; ///< the gradient opacity
};
--- trunk/koffice/libs/resources/CMakeLists.txt #731514:731515
@@ -10,8 +10,7 @@
KoStopGradient.cpp
KoSegmentGradient.cc
KoResource.cpp
- KoResourceServer.cpp
- KoResourceServerRegistry.cpp
+ KoResourceServerProvider.cpp
)
kde4_add_library(koresources SHARED ${koresources_LIB_SRCS})
--- trunk/koffice/libs/resources/KoAbstractGradient.h #731514:731515
@@ -32,10 +32,10 @@
KoAbstractGradient(const QString& filename);
virtual ~KoAbstractGradient();
- virtual bool load() = 0;
- virtual bool save() = 0;
+ virtual bool load() { return false; }
+ virtual bool save() { return false; }
- virtual QGradient* toQGradient() const = 0;
+ virtual QGradient* toQGradient() const { return new QGradient(); }
void setColorSpace(KoColorSpace* colorSpace);
KoColorSpace * colorSpace() const;
--- trunk/koffice/libs/resources/KoResourceServer.h #731514:731515
@@ -25,50 +25,104 @@
#include <QString>
#include <QStringList>
#include <QList>
+#include <QFileInfo>
-#include "KoGenericRegistry.h"
+#include <kdebug.h>
+
+#include "KoResource.h"
+
#include <koresource_export.h>
class KoResource;
-class KORESOURCES_EXPORT KoResourceServerBase : public QObject {
- Q_OBJECT
+class KoResource;
+
+class KORESOURCES_EXPORT KoResourceServerBase {
+
public:
- KoResourceServerBase(const QString & type);
- virtual ~KoResourceServerBase();
+ KoResourceServerBase() {}
+ virtual ~KoResourceServerBase() {}
- void loadResources(QStringList filenames);
+ virtual void loadResources(QStringList filenames) = 0;
+};
+
+template <class T> class KoResourceServer : public KoResourceServerBase {
+
+public:
+ KoResourceServer() : m_loaded(false) {}
+ virtual ~KoResourceServer() {}
+
+ void loadResources(QStringList filenames) {
+ QStringList uniqueFiles;
+
+ while (!filenames.empty())
+ {
+ QString front = filenames.first();
+ filenames.pop_front();
+
+ QString fname = QFileInfo(front).fileName();
+ //ebug() << "Loading " << fname << "\n";
+ // XXX: Don't load resources with the same filename. Actually, we should \
look inside + // the resource to find out whether they are really the \
same, but for now this + // will prevent the same brush etc. showing \
up twice. + if (uniqueFiles.empty() || uniqueFiles.indexOf(fname) == -1) {
+ uniqueFiles.append(fname);
+ T* resource = createResource(front);
+ if (resource->load() && resource->valid())
+ {
+ m_resources.append(resource);
+ Q_CHECK_PTR(resource);
+ }
+ else {
+ delete resource;
+ }
+ }
+ }
+ m_loaded = true;
+}
+
+
/// Adds an already loaded resource to the server
- void addResource(KoResource* resource);
+ void addResource(T* resource) {
+ if (!resource->valid()) {
+ kWarning(41001) << "Tried to add an invalid resource!";
+ return;
+ }
+ resource->save();
+
+ m_resources.append(resource);
+ }
+
/// Remove a resource from resourceserver and hard disk
- void removeResource(KoResource* resource);
- QList<KoResource*> resources();
- QString type() { return m_type; }
- QString id() const { return QString(); }
- QString name() const { return QString(); }
+ void removeResource(T* resource) {
+ int index = m_resources.indexOf( resource );
+ if( index < 0 )
+ return;
-signals:
- void resourceAdded(KoResource*);
+ QFile file( resource->filename() );
+ if( file.remove() )
+ {
+ m_resources.removeAt( index );
+ delete resource;
+ }
+ }
+
+ QList<T*> resources() {
+ if(!m_loaded) {
+ return QList<T*>();
+ }
+ return m_resources;
+ }
+
protected:
- virtual KoResource* createResource( const QString & filename ) = 0;
+ virtual T* createResource( const QString & filename ) { return new T(filename); \
}
private:
- QList<KoResource*> m_resources;
- QString m_type;
+ QList<T*> m_resources;
bool m_loaded;
};
-template <class T> class KoResourceServer : public KoResourceServerBase {
-
-public:
- KoResourceServer(const QString & type) : KoResourceServerBase(type) {}
- virtual ~KoResourceServer() {}
-
-private:
- KoResource* createResource(const QString & filename) { return new T(filename); }
-};
-
#endif // KORESOURCESERVER_H
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic