author | ulf69 <ulf69> | 2004-08-02 18:15:04 (UTC) |
---|---|---|
committer | ulf69 <ulf69> | 2004-08-02 18:15:04 (UTC) |
commit | e084a79b8aa0174e7587893f9b87d88670ed9f2c (patch) (unidiff) | |
tree | d3250447b9352effc8fb953866c772418c5e166c /microkde/kresources | |
parent | b4203356adb6008a4b4e6782afdae7dd34178697 (diff) | |
download | kdepimpi-e084a79b8aa0174e7587893f9b87d88670ed9f2c.zip kdepimpi-e084a79b8aa0174e7587893f9b87d88670ed9f2c.tar.gz kdepimpi-e084a79b8aa0174e7587893f9b87d88670ed9f2c.tar.bz2 |
added support for the syncing of resources
-rw-r--r-- | microkde/kresources/configdialog.cpp | 89 | ||||
-rw-r--r-- | microkde/kresources/configdialog.h | 4 | ||||
-rw-r--r-- | microkde/kresources/configpage.cpp | 75 | ||||
-rw-r--r-- | microkde/kresources/configpage.h | 1 | ||||
-rw-r--r-- | microkde/kresources/factory.cpp | 44 | ||||
-rw-r--r-- | microkde/kresources/factory.h | 26 |
6 files changed, 177 insertions, 62 deletions
diff --git a/microkde/kresources/configdialog.cpp b/microkde/kresources/configdialog.cpp index 0fc199c..90febca 100644 --- a/microkde/kresources/configdialog.cpp +++ b/microkde/kresources/configdialog.cpp | |||
@@ -30,125 +30,166 @@ | |||
30 | #include <qlayout.h> | 30 | #include <qlayout.h> |
31 | #include <qpushbutton.h> | 31 | #include <qpushbutton.h> |
32 | 32 | ||
33 | #include <qcheckbox.h> | 33 | #include <qcheckbox.h> |
34 | 34 | ||
35 | #include <kbuttonbox.h> | 35 | #include <kbuttonbox.h> |
36 | #include <kdialog.h> | 36 | #include <kdialog.h> |
37 | #include <klineedit.h> | 37 | #include <klineedit.h> |
38 | 38 | ||
39 | #include "factory.h" | 39 | #include "factory.h" |
40 | #include "configwidget.h" | 40 | #include "configwidget.h" |
41 | #include "configdialog.h" | 41 | #include "configdialog.h" |
42 | #include "syncwidget.h" | ||
42 | 43 | ||
43 | using namespace KRES; | 44 | using namespace KRES; |
44 | 45 | ||
45 | ConfigDialog::ConfigDialog( QWidget *parent, const QString& resourceFamily, | 46 | ConfigDialog::ConfigDialog( QWidget *parent, const QString& resourceFamily, |
46 | /*const QString& type,*/ Resource* resource, /*KConfig *config, */const char *name ) | 47 | Resource* resource, const char *name ) |
47 | : KDialogBase( parent, name, true, i18n( "Resource Configuration" ), | 48 | : KDialogBase( parent, name, true, resource->isSyncable()?i18n( "Sync Profile Configuration" ):i18n( "Resource Configuration" ), |
48 | Ok|Cancel, Ok, true )/*, mConfig( config )*/, mResource( resource ), mPersistentReadOnly(false) | 49 | Ok|Cancel, Ok, true )/*, mConfig( config )*/, mSyncWidget(0), mResource( resource ), mPersistentReadOnly(false) |
49 | { | 50 | { |
51 | |||
50 | Factory *factory = Factory::self( resourceFamily ); | 52 | Factory *factory = Factory::self( resourceFamily ); |
51 | 53 | ||
52 | //US resize( 250, 240 ); | 54 | //US resize( 250, 240 ); |
53 | resize( KMIN(KGlobal::getDesktopWidth(), 250), KMIN(KGlobal::getDesktopHeight(), 240)); | 55 | resize( KMIN(KGlobal::getDesktopWidth(), 250), KMIN(KGlobal::getDesktopHeight(), 240)); |
54 | 56 | ||
55 | //US QFrame *main = makeMainWidget(); | 57 | //US QFrame *main = makeMainWidget(); |
56 | QFrame *main = plainPage(); | 58 | QFrame *main = plainPage(); |
57 | 59 | ||
58 | QVBoxLayout *mainLayout = new QVBoxLayout( main, 0, spacingHint() ); | 60 | QVBoxLayout *mainLayout = new QVBoxLayout( main, 0, spacingHint() ); |
59 | 61 | ||
60 | QGroupBox *generalGroupBox = new QGroupBox( 2, Qt::Horizontal, main ); | 62 | QGroupBox *generalGroupBox = new QGroupBox( 2, Qt::Horizontal, main ); |
61 | generalGroupBox->layout()->setSpacing( spacingHint() ); | 63 | generalGroupBox->layout()->setSpacing( spacingHint() ); |
62 | generalGroupBox->setTitle( i18n( "General Settings" ) ); | 64 | generalGroupBox->setTitle( i18n( "General Settings" ) ); |
63 | 65 | ||
64 | new QLabel( i18n( "Name:" ), generalGroupBox ); | 66 | new QLabel( mResource->isSyncable()?i18n( "Profile Name:" ):i18n( "Name:" ), generalGroupBox ); |
65 | 67 | ||
66 | mName = new KLineEdit( generalGroupBox ); | 68 | mName = new KLineEdit( generalGroupBox ); |
67 | 69 | ||
68 | mReadOnly = new QCheckBox( i18n( "Read-only" ), generalGroupBox ); | 70 | if (!mResource->isSyncable()) { |
71 | mReadOnly = new QCheckBox( i18n( "Read-only" ), generalGroupBox ); | ||
72 | mReadOnly->setChecked( mResource->readOnly() ); | ||
73 | } | ||
69 | 74 | ||
70 | mName->setText( mResource->resourceName() ); | 75 | mName->setText( mResource->resourceName() ); |
71 | mReadOnly->setChecked( mResource->readOnly() ); | ||
72 | 76 | ||
73 | mainLayout->addWidget( generalGroupBox ); | 77 | mainLayout->addWidget( generalGroupBox ); |
74 | 78 | ||
75 | QGroupBox *resourceGroupBox = new QGroupBox( 2, Qt::Horizontal, main ); | 79 | QGroupBox *resourceGroupBox = new QGroupBox( 2, Qt::Horizontal, main ); |
76 | resourceGroupBox->layout()->setSpacing( spacingHint()); | 80 | resourceGroupBox->layout()->setSpacing( spacingHint()); |
77 | resourceGroupBox->setTitle( i18n( "%1 Resource Settings" ) | 81 | resourceGroupBox->setTitle( i18n( "%1 Resource Settings" ) |
78 | .arg( factory->typeName( resource->type() ) ) ); | 82 | .arg( factory->typeName( resource->type() ) ) ); |
79 | mainLayout->addWidget( resourceGroupBox ); | 83 | mainLayout->addWidget( resourceGroupBox ); |
80 | 84 | ||
81 | mainLayout->addStretch(); | 85 | mainLayout->addStretch(); |
82 | 86 | ||
83 | mConfigWidget = factory->configWidget( resource->type(), resourceGroupBox ); | 87 | mConfigWidget = factory->configWidget( resource->type(), resourceGroupBox ); |
84 | if ( mConfigWidget ) { | 88 | if ( mConfigWidget ) { |
85 | connect( mConfigWidget, SIGNAL( setReadOnly( bool ) ), | 89 | connect( mConfigWidget, SIGNAL( setReadOnly( bool ) ), |
86 | SLOT( setReadOnly( bool ) ) ); | 90 | SLOT( setReadOnly( bool ) ) ); |
87 | connect( mConfigWidget, SIGNAL( setPersistentReadOnly( bool ) ), | 91 | connect( mConfigWidget, SIGNAL( setPersistentReadOnly( bool ) ), |
88 | SLOT( setPersistentReadOnly( bool ) ) ); | 92 | SLOT( setPersistentReadOnly( bool ) ) ); |
89 | mConfigWidget->setInEditMode( false ); | 93 | mConfigWidget->setInEditMode( false ); |
90 | mConfigWidget->loadSettings( mResource ); | 94 | mConfigWidget->loadSettings( mResource ); |
91 | mConfigWidget->show(); | 95 | mConfigWidget->show(); |
92 | 96 | ||
93 | } | 97 | } |
94 | 98 | ||
95 | connect( mName, SIGNAL( textChanged(const QString &)), | 99 | if (mResource->isSyncable()) |
100 | { | ||
101 | QGroupBox *syncGroupBox = new QGroupBox( 2, Qt::Horizontal, main ); | ||
102 | syncGroupBox->layout()->setSpacing( spacingHint()); | ||
103 | syncGroupBox->setTitle( i18n( "Syncronize Preferences" ) ); | ||
104 | mainLayout->addWidget( syncGroupBox ); | ||
105 | |||
106 | mainLayout->addStretch(); | ||
107 | |||
108 | mSyncWidget = factory->syncWidget( resource->type(), syncGroupBox ); | ||
109 | if ( mSyncWidget ) { | ||
110 | mSyncWidget->setInEditMode( false ); | ||
111 | mSyncWidget->loadSettings( mResource ); | ||
112 | mSyncWidget->show(); | ||
113 | } | ||
114 | } | ||
115 | |||
116 | |||
117 | |||
118 | |||
119 | connect( mName, SIGNAL( textChanged(const QString &)), | ||
96 | SLOT( slotNameChanged(const QString &))); | 120 | SLOT( slotNameChanged(const QString &))); |
97 | 121 | ||
98 | slotNameChanged( mName->text() ); | 122 | slotNameChanged( mName->text() ); |
99 | 123 | ||
100 | //US setMinimumSize( 400, 250 ); | 124 | //US setMinimumSize( 400, 250 ); |
101 | setMinimumSize( KMIN(KGlobal::getDesktopWidth(), 400), KMIN(KGlobal::getDesktopHeight(), 250)); | 125 | setMinimumSize( KMIN(KGlobal::getDesktopWidth(), 400), KMIN(KGlobal::getDesktopHeight(), 250)); |
102 | 126 | ||
103 | } | 127 | } |
104 | 128 | ||
105 | void ConfigDialog::setInEditMode( bool value ) | 129 | void ConfigDialog::setInEditMode( bool value ) |
106 | { | 130 | { |
107 | if ( mConfigWidget ) | 131 | if ( mConfigWidget ) |
108 | mConfigWidget->setInEditMode( value ); | 132 | mConfigWidget->setInEditMode( value ); |
133 | |||
134 | if ( mSyncWidget ) | ||
135 | mSyncWidget->setInEditMode( value ); | ||
136 | |||
109 | } | 137 | } |
110 | 138 | ||
111 | void ConfigDialog::slotNameChanged( const QString &text) | 139 | void ConfigDialog::slotNameChanged( const QString &text) |
112 | { | 140 | { |
113 | enableButtonOK( !text.isEmpty() ); | 141 | enableButtonOK( !text.isEmpty() ); |
114 | } | 142 | } |
115 | 143 | ||
116 | void ConfigDialog::setReadOnly( bool value ) | 144 | void ConfigDialog::setReadOnly( bool value ) |
117 | { | 145 | { |
118 | if (mPersistentReadOnly == false) | 146 | if (!mResource->isSyncable()) { |
119 | mReadOnly->setChecked( value ); | 147 | |
120 | else | 148 | if (mPersistentReadOnly == false) |
121 | mReadOnly->setChecked( true ); | 149 | mReadOnly->setChecked( value ); |
150 | else | ||
151 | mReadOnly->setChecked( true ); | ||
152 | } | ||
122 | } | 153 | } |
123 | 154 | ||
124 | void ConfigDialog::setPersistentReadOnly( bool value ) | 155 | void ConfigDialog::setPersistentReadOnly( bool value ) |
125 | { | 156 | { |
126 | mPersistentReadOnly = value; | 157 | if (!mResource->isSyncable()) { |
127 | 158 | ||
128 | if (value == true) | 159 | mPersistentReadOnly = value; |
129 | setReadOnly( true ); | 160 | |
130 | 161 | if (value == true) | |
131 | mReadOnly->setEnabled( !value ); | 162 | setReadOnly( true ); |
132 | 163 | ||
164 | mReadOnly->setEnabled( !value ); | ||
165 | } | ||
133 | } | 166 | } |
134 | 167 | ||
135 | void ConfigDialog::accept() | 168 | void ConfigDialog::accept() |
136 | { | 169 | { |
137 | if ( mName->text().isEmpty() ) { | 170 | if ( mName->text().isEmpty() ) { |
138 | KMessageBox::sorry( this, i18n( "Please enter a resource name" ) ); | 171 | KMessageBox::sorry( this, mResource->isSyncable()?i18n( "Please enter a profile name" ):i18n( "Please enter a resource name" ) ); |
139 | return; | 172 | return; |
140 | } | 173 | } |
141 | 174 | ||
142 | mResource->setResourceName( mName->text() ); | 175 | mResource->setResourceName( mName->text() ); |
143 | mResource->setReadOnly( mReadOnly->isChecked() ); | 176 | if (!mResource->isSyncable()) |
177 | mResource->setReadOnly( mReadOnly->isChecked() ); | ||
144 | 178 | ||
145 | if ( mConfigWidget ) { | 179 | if ( mConfigWidget ) { |
146 | // First save generic information | 180 | // First save generic information |
147 | // Also save setting of specific resource type | 181 | // Also save setting of specific resource type |
148 | mConfigWidget->saveSettings( mResource ); | 182 | mConfigWidget->saveSettings( mResource ); |
149 | } | 183 | } |
150 | 184 | ||
185 | if ( mSyncWidget ) { | ||
186 | // First save generic information | ||
187 | // Also save setting of specific resource type | ||
188 | mSyncWidget->saveSettings( mResource ); | ||
189 | } | ||
190 | |||
191 | |||
151 | KDialog::accept(); | 192 | KDialog::accept(); |
152 | } | 193 | } |
153 | 194 | ||
154 | //US #include "configdialog.moc" | 195 | //US #include "configdialog.moc" |
diff --git a/microkde/kresources/configdialog.h b/microkde/kresources/configdialog.h index ba66f8e..b629347 100644 --- a/microkde/kresources/configdialog.h +++ b/microkde/kresources/configdialog.h | |||
@@ -22,42 +22,44 @@ | |||
22 | #ifndef KRESOURCES_CONFIGDIALOG_H | 22 | #ifndef KRESOURCES_CONFIGDIALOG_H |
23 | #define KRESOURCES_CONFIGDIALOG_H | 23 | #define KRESOURCES_CONFIGDIALOG_H |
24 | 24 | ||
25 | #include <kdialogbase.h> | 25 | #include <kdialogbase.h> |
26 | 26 | ||
27 | class KLineEdit; | 27 | class KLineEdit; |
28 | class QCheckBox; | 28 | class QCheckBox; |
29 | class KButtonBox; | 29 | class KButtonBox; |
30 | 30 | ||
31 | namespace KRES { | 31 | namespace KRES { |
32 | class Resource; | 32 | class Resource; |
33 | class ConfigWidget; | 33 | class ConfigWidget; |
34 | class SyncWidget; | ||
34 | 35 | ||
35 | class ConfigDialog : public KDialogBase | 36 | class ConfigDialog : public KDialogBase |
36 | { | 37 | { |
37 | Q_OBJECT | 38 | Q_OBJECT |
38 | public: | 39 | public: |
39 | // Resource=0: create new resource | 40 | // Resource=0: create new resource |
40 | ConfigDialog( QWidget *parent, const QString& resourceFamily, | 41 | ConfigDialog( QWidget *parent, const QString& resourceFamily, |
41 | Resource* resource, const char *name = 0); | 42 | Resource* resource, const char *name = 0); |
42 | 43 | ||
43 | void setInEditMode( bool value ); | 44 | void setInEditMode( bool value ); |
44 | 45 | ||
45 | protected slots: | 46 | protected slots: |
46 | void accept(); | 47 | void accept(); |
47 | void setReadOnly( bool value ); | 48 | void setReadOnly( bool value ); |
48 | void setPersistentReadOnly( bool value ); | 49 | void setPersistentReadOnly( bool value ); |
49 | void slotNameChanged( const QString &text); | 50 | void slotNameChanged( const QString &text); |
50 | 51 | ||
51 | private: | 52 | private: |
52 | ConfigWidget *mConfigWidget; | 53 | ConfigWidget *mConfigWidget; |
54 | SyncWidget *mSyncWidget; | ||
53 | Resource* mResource; | 55 | Resource* mResource; |
54 | 56 | ||
55 | KLineEdit *mName; | 57 | KLineEdit *mName; |
56 | QCheckBox *mReadOnly; | 58 | QCheckBox *mReadOnly; |
57 | //US add a persistent readonly flag. We need that for opie and qtopia addressbooks. | 59 | //US add a persistent readonly flag. We need that for opie and qtopia addressbooks. |
58 | bool mPersistentReadOnly; | 60 | bool mPersistentReadOnly; |
59 | }; | 61 | }; |
60 | 62 | ||
61 | } | 63 | } |
62 | 64 | ||
63 | #endif | 65 | #endif |
diff --git a/microkde/kresources/configpage.cpp b/microkde/kresources/configpage.cpp index 8782ffd..912c62e 100644 --- a/microkde/kresources/configpage.cpp +++ b/microkde/kresources/configpage.cpp | |||
@@ -12,24 +12,31 @@ | |||
12 | 12 | ||
13 | This library is distributed in the hope that it will be useful, | 13 | This library is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 | Library General Public License for more details. | 16 | Library General Public License for more details. |
17 | 17 | ||
18 | You should have received a copy of the GNU Library General Public License | 18 | You should have received a copy of the GNU Library General Public License |
19 | along with this library; see the file COPYING.LIB. If not, write to | 19 | along with this library; see the file COPYING.LIB. If not, write to |
20 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 20 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
21 | Boston, MA 02111-1307, USA. | 21 | Boston, MA 02111-1307, USA. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | /* | ||
25 | Enhanced Version of the file for platform independent KDE tools. | ||
26 | Copyright (c) 2004 Ulf Schenk | ||
27 | |||
28 | $Id$ | ||
29 | */ | ||
30 | |||
24 | #include <qgroupbox.h> | 31 | #include <qgroupbox.h> |
25 | #include <qinputdialog.h> | 32 | #include <qinputdialog.h> |
26 | #include <qlabel.h> | 33 | #include <qlabel.h> |
27 | #include <qlayout.h> | 34 | #include <qlayout.h> |
28 | 35 | ||
29 | #include <kapplication.h> | 36 | #include <kapplication.h> |
30 | #include <kcombobox.h> | 37 | #include <kcombobox.h> |
31 | #include <kdebug.h> | 38 | #include <kdebug.h> |
32 | #include <klocale.h> | 39 | #include <klocale.h> |
33 | #include <kmessagebox.h> | 40 | #include <kmessagebox.h> |
34 | #include <ksimpleconfig.h> | 41 | #include <ksimpleconfig.h> |
35 | #include <kstandarddirs.h> | 42 | #include <kstandarddirs.h> |
@@ -41,24 +48,27 @@ | |||
41 | #include "resource.h" | 48 | #include "resource.h" |
42 | #include "configdialog.h" | 49 | #include "configdialog.h" |
43 | 50 | ||
44 | #include "configpage.h" | 51 | #include "configpage.h" |
45 | 52 | ||
46 | //US | 53 | //US |
47 | #include <qpushbutton.h> | 54 | #include <qpushbutton.h> |
48 | #include <qfile.h> | 55 | #include <qfile.h> |
49 | #include <kglobal.h> | 56 | #include <kglobal.h> |
50 | 57 | ||
51 | using namespace KRES; | 58 | using namespace KRES; |
52 | 59 | ||
60 | const QString ConfigPage::syncfamily = "syncprofiles"; | ||
61 | |||
62 | |||
53 | class ConfigViewItem : public QCheckListItem | 63 | class ConfigViewItem : public QCheckListItem |
54 | { | 64 | { |
55 | public: | 65 | public: |
56 | ConfigViewItem( QListView *parent, Resource* resource ) : | 66 | ConfigViewItem( QListView *parent, Resource* resource ) : |
57 | QCheckListItem( parent, resource->resourceName(), CheckBox ), | 67 | QCheckListItem( parent, resource->resourceName(), CheckBox ), |
58 | mResource( resource ), | 68 | mResource( resource ), |
59 | mIsStandard( false ) | 69 | mIsStandard( false ) |
60 | { | 70 | { |
61 | setText( 1, mResource->type() ); | 71 | setText( 1, mResource->type() ); |
62 | setOn( mResource->isActive() ); | 72 | setOn( mResource->isActive() ); |
63 | } | 73 | } |
64 | 74 | ||
@@ -155,31 +165,33 @@ void ConfigPage::load() | |||
155 | kdDebug(5650) << "ConfigPage::load()" << endl; | 165 | kdDebug(5650) << "ConfigPage::load()" << endl; |
156 | 166 | ||
157 | mListView->clear(); | 167 | mListView->clear(); |
158 | 168 | ||
159 | //US we remove the dynamic pluginloader, and set the one family we need (contact) manually. | 169 | //US we remove the dynamic pluginloader, and set the one family we need (contact) manually. |
160 | 170 | ||
161 | //US KTrader::OfferList plugins = KTrader::self()->query( "KResources/Plugin" ); | 171 | //US KTrader::OfferList plugins = KTrader::self()->query( "KResources/Plugin" ); |
162 | //US KTrader::OfferList::ConstIterator it; | 172 | //US KTrader::OfferList::ConstIterator it; |
163 | //US for ( it = plugins.begin(); it != plugins.end(); ++it ) { | 173 | //US for ( it = plugins.begin(); it != plugins.end(); ++it ) { |
164 | //US QVariant tmp = (*it)->property( "X-KDE-ResourceFamily" ); | 174 | //US QVariant tmp = (*it)->property( "X-KDE-ResourceFamily" ); |
165 | //US QString family = tmp.toString(); | 175 | //US QString family = tmp.toString(); |
166 | QStringList families; | 176 | QStringList families; |
167 | families << "contact" << "sync-contacts"; | 177 | families << "contact" << syncfamily; |
178 | |||
179 | |||
168 | for ( QStringList::Iterator it = families.begin(); it != families.end(); ++it ) | 180 | for ( QStringList::Iterator it = families.begin(); it != families.end(); ++it ) |
169 | { | 181 | { |
170 | QString family = (*it); | 182 | QString family = (*it); |
171 | if ( !family.isEmpty() ) { | 183 | if ( !family.isEmpty() ) { |
172 | if ( !mFamilyMap.contains( family ) ) { | 184 | if ( !mFamilyMap.contains( family ) ) { |
173 | mCurrentManager = new Manager<Resource>( family ); | 185 | mCurrentManager = new Manager<Resource>( family, (family == syncfamily) ); |
174 | if ( mCurrentManager ) { | 186 | if ( mCurrentManager ) { |
175 | mFamilyMap.append( family ); | 187 | mFamilyMap.append( family ); |
176 | mCurrentManager->addListener( this ); | 188 | mCurrentManager->addListener( this ); |
177 | 189 | ||
178 | ResourcePageInfo info; | 190 | ResourcePageInfo info; |
179 | info.mManager = mCurrentManager; | 191 | info.mManager = mCurrentManager; |
180 | QString configDir = KGlobal::dirs()->saveLocation( "config" ); | 192 | QString configDir = KGlobal::dirs()->saveLocation( "config" ); |
181 | //QString configDir = KStandardDirs::appDir() + "/config"; | 193 | //QString configDir = KStandardDirs::appDir() + "/config"; |
182 | if ( family == "contact" && QFile::exists( configDir + "/kabcrc" ) ) { | 194 | if ( family == "contact" && QFile::exists( configDir + "/kabcrc" ) ) { |
183 | info.mConfig = new KConfig( locateLocal( "config", "kabcrc" ) ); | 195 | info.mConfig = new KConfig( locateLocal( "config", "kabcrc" ) ); |
184 | } else if ( family == "calendar" && QFile::exists( configDir + "/kcalrc" ) ) { | 196 | } else if ( family == "calendar" && QFile::exists( configDir + "/kcalrc" ) ) { |
185 | info.mConfig = new KConfig( locateLocal( "config", "kcalrc" ) ); | 197 | info.mConfig = new KConfig( locateLocal( "config", "kcalrc" ) ); |
@@ -219,82 +231,95 @@ void ConfigPage::defaults() | |||
219 | } | 231 | } |
220 | 232 | ||
221 | void ConfigPage::slotFamilyChanged( int pos ) | 233 | void ConfigPage::slotFamilyChanged( int pos ) |
222 | { | 234 | { |
223 | if ( pos < 0 || pos >= (int)mFamilyMap.count() ) | 235 | if ( pos < 0 || pos >= (int)mFamilyMap.count() ) |
224 | return; | 236 | return; |
225 | 237 | ||
226 | saveResourceSettings(); | 238 | saveResourceSettings(); |
227 | 239 | ||
228 | mFamily = mFamilyMap[ pos ]; | 240 | mFamily = mFamilyMap[ pos ]; |
229 | 241 | ||
230 | //US qDebug("ConfigPage::slotFamilyChanged 4 family=%s", mFamily.latin1()); | 242 | //US qDebug("ConfigPage::slotFamilyChanged 4 family=%s", mFamily.latin1()); |
231 | 243 | ||
232 | mCurrentManager = mInfoMap[ pos ].mManager; | 244 | mCurrentManager = mInfoMap[ pos ].mManager; |
233 | mCurrentConfig = mInfoMap[ pos ].mConfig; | 245 | mCurrentConfig = mInfoMap[ pos ].mConfig; |
234 | 246 | ||
235 | if ( !mCurrentManager ) | 247 | if ( !mCurrentManager ) |
236 | kdDebug(5650) << "ERROR: cannot create ResourceManager<Resource>( mFamily )" << endl; | 248 | kdDebug(5650) << "ERROR: cannot create ResourceManager<Resource>( mFamily )" << endl; |
237 | 249 | ||
238 | mListView->clear(); | 250 | mListView->clear(); |
239 | 251 | ||
240 | if ( mCurrentManager->isEmpty() ) { | 252 | if ( mCurrentManager->isEmpty() ) { |
241 | //US qDebug("ConfigPage::slotFamilyChanged 4.1 mCurrentManager=%ul", mCurrentManager ); | 253 | //US qDebug("ConfigPage::slotFamilyChanged 4.1 mCurrentManager=%ul", mCurrentManager ); |
242 | 254 | ||
243 | defaults(); | 255 | defaults(); |
244 | } | 256 | } |
245 | 257 | ||
246 | Resource *standardResource = mCurrentManager->standardResource(); | 258 | Resource *standardResource = mCurrentManager->standardResource(); |
247 | 259 | ||
248 | //US qDebug("ConfigPage::slotFamilyChanged 4.4 resourcename=%s", standardResource->resourceName().latin1()); | 260 | //US qDebug("ConfigPage::slotFamilyChanged 4.4 resourcename=%s", standardResource->resourceName().latin1()); |
249 | 261 | ||
250 | 262 | ||
251 | Manager<Resource>::Iterator it; | 263 | Manager<Resource>::Iterator it; |
252 | for ( it = mCurrentManager->begin(); it != mCurrentManager->end(); ++it ) { | 264 | for ( it = mCurrentManager->begin(); it != mCurrentManager->end(); ++it ) { |
253 | ConfigViewItem *item = new ConfigViewItem( mListView, *it ); | 265 | ConfigViewItem *item = new ConfigViewItem( mListView, *it ); |
254 | if ( *it == standardResource ) | 266 | if ( *it == standardResource ) |
255 | item->setStandard( true ); | 267 | item->setStandard( true ); |
256 | } | 268 | } |
257 | 269 | ||
258 | if ( mListView->childCount() == 0 ) { | 270 | if ( mListView->childCount() == 0 ) { |
259 | //US qDebug("ConfigPage::slotFamilyChanged 4.5 "); | 271 | //US qDebug("ConfigPage::slotFamilyChanged 4.5 "); |
260 | 272 | ||
261 | defaults(); | 273 | defaults(); |
262 | emit changed( true ); | 274 | emit changed( true ); |
263 | mCurrentManager->writeConfig( mCurrentConfig ); | 275 | mCurrentManager->writeConfig( mCurrentConfig ); |
264 | } else { | 276 | } else { |
265 | //US qDebug("ConfigPage::slotFamilyChanged 4.6 "); | 277 | //US qDebug("ConfigPage::slotFamilyChanged 4.6 "); |
266 | 278 | ||
267 | if ( !standardResource ) { | 279 | if ( !standardResource ) { |
268 | KMessageBox::sorry( this, i18n( "There is no standard resource! Please select one." ) ); | 280 | KMessageBox::sorry( this, i18n( "There is no standard resource!<br> Please select one." ) ); |
269 | 281 | ||
270 | //US qDebug("ConfigPage::slotFamilyChanged 4.7" ); | 282 | //US qDebug("ConfigPage::slotFamilyChanged 4.7" ); |
271 | 283 | ||
272 | } | 284 | } |
273 | 285 | ||
274 | emit changed( false ); | 286 | emit changed( false ); |
275 | } | 287 | } |
276 | } | 288 | } |
277 | 289 | ||
278 | void ConfigPage::slotAdd() | 290 | void ConfigPage::slotAdd() |
279 | { | 291 | { |
280 | if ( !mCurrentManager ) | 292 | if ( !mCurrentManager ) |
281 | return; | 293 | return; |
282 | 294 | ||
283 | QStringList types = mCurrentManager->resourceTypeNames(); | 295 | QStringList types = mCurrentManager->resourceTypeNames(); |
284 | QStringList descs = mCurrentManager->resourceTypeDescriptions(); | 296 | QStringList descs = mCurrentManager->resourceTypeDescriptions(); |
285 | bool ok = false; | 297 | bool ok = false; |
286 | QString desc = QInputDialog::getItem( i18n( "Resource Configuration" ), | 298 | |
287 | i18n( "Please select type of the new resource:" ), descs, 0, | 299 | QString desc; |
300 | |||
301 | if (mFamily == syncfamily) | ||
302 | { | ||
303 | desc = QInputDialog::getItem( i18n( "Sync Configuration" ), | ||
304 | i18n( "Please select resource type for new sync profile:" ), descs, 0, | ||
305 | false, &ok, this ); | ||
306 | } | ||
307 | else | ||
308 | { | ||
309 | desc = QInputDialog::getItem( i18n( "Resource Configuration" ), | ||
310 | i18n( "Please select type of the new resource:" ), descs, 0, | ||
288 | false, &ok, this ); | 311 | false, &ok, this ); |
312 | } | ||
313 | |||
289 | if ( !ok ) | 314 | if ( !ok ) |
290 | return; | 315 | return; |
291 | 316 | ||
292 | QString type = types[ descs.findIndex( desc ) ]; | 317 | QString type = types[ descs.findIndex( desc ) ]; |
293 | 318 | ||
294 | // Create new resource | 319 | // Create new resource |
295 | Resource *resource = mCurrentManager->createResource( type ); | 320 | Resource *resource = mCurrentManager->createResource( type ); |
296 | if ( !resource ) { | 321 | if ( !resource ) { |
297 | KMessageBox::error( this, i18n("Unable to create resource of type '%1'.") | 322 | KMessageBox::error( this, i18n("Unable to create resource of type '%1'.") |
298 | .arg( type ) ); | 323 | .arg( type ) ); |
299 | return; | 324 | return; |
300 | } | 325 | } |
@@ -371,49 +396,49 @@ void ConfigPage::slotEdit() | |||
371 | if ( !configItem ) | 396 | if ( !configItem ) |
372 | return; | 397 | return; |
373 | 398 | ||
374 | Resource *resource = configItem->resource(); | 399 | Resource *resource = configItem->resource(); |
375 | 400 | ||
376 | ConfigDialog dlg( this, mFamily, resource, "KRES::ConfigDialog" ); | 401 | ConfigDialog dlg( this, mFamily, resource, "KRES::ConfigDialog" ); |
377 | 402 | ||
378 | if ( dlg.exec() ) { | 403 | if ( dlg.exec() ) { |
379 | configItem->setText( 0, resource->resourceName() ); | 404 | configItem->setText( 0, resource->resourceName() ); |
380 | configItem->setText( 1, resource->type() ); | 405 | configItem->setText( 1, resource->type() ); |
381 | 406 | ||
382 | if ( configItem->standard() && configItem->readOnly() ) { | 407 | if ( configItem->standard() && configItem->readOnly() ) { |
383 | KMessageBox::sorry( this, i18n( "You cannot use a read-only resource as standard!" ) ); | 408 | KMessageBox::sorry( this, i18n( "You cannot use a read-only<br> resource as standard!" ) ); |
384 | configItem->setStandard( false ); | 409 | configItem->setStandard( false ); |
385 | } | 410 | } |
386 | 411 | ||
387 | mCurrentManager->resourceChanged( resource ); | 412 | mCurrentManager->resourceChanged( resource ); |
388 | emit changed( true ); | 413 | emit changed( true ); |
389 | } | 414 | } |
390 | } | 415 | } |
391 | 416 | ||
392 | void ConfigPage::slotStandard() | 417 | void ConfigPage::slotStandard() |
393 | { | 418 | { |
394 | if ( !mCurrentManager ) | 419 | if ( !mCurrentManager ) |
395 | return; | 420 | return; |
396 | 421 | ||
397 | ConfigViewItem *item = static_cast<ConfigViewItem*>( mListView->currentItem() ); | 422 | ConfigViewItem *item = static_cast<ConfigViewItem*>( mListView->currentItem() ); |
398 | if ( !item ) | 423 | if ( !item ) |
399 | return; | 424 | return; |
400 | 425 | ||
401 | if ( item->readOnly() ) { | 426 | if ( item->readOnly() ) { |
402 | KMessageBox::sorry( this, i18n( "You cannot use a read-only resource as standard!" ) ); | 427 | KMessageBox::sorry( this, i18n( "You cannot use a read-only<br>resource as standard!" ) ); |
403 | return; | 428 | return; |
404 | } | 429 | } |
405 | 430 | ||
406 | if ( !item->isOn() ) { | 431 | if ( !item->isOn() ) { |
407 | KMessageBox::sorry( this, i18n( "You cannot use an inactive resource as standard!" ) ); | 432 | KMessageBox::sorry( this, i18n( "You cannot use an inactive<br>resource as standard!" ) ); |
408 | return; | 433 | return; |
409 | } | 434 | } |
410 | 435 | ||
411 | QListViewItem *it = mListView->firstChild(); | 436 | QListViewItem *it = mListView->firstChild(); |
412 | while ( it != 0 ) { | 437 | while ( it != 0 ) { |
413 | ConfigViewItem *configItem = static_cast<ConfigViewItem*>( it ); | 438 | ConfigViewItem *configItem = static_cast<ConfigViewItem*>( it ); |
414 | if ( configItem->standard() ) | 439 | if ( configItem->standard() ) |
415 | configItem->setStandard( false ); | 440 | configItem->setStandard( false ); |
416 | it = it->itemBelow(); | 441 | it = it->itemBelow(); |
417 | } | 442 | } |
418 | 443 | ||
419 | item->setStandard( true ); | 444 | item->setStandard( true ); |
@@ -455,56 +480,56 @@ void ConfigPage::resourceModified( Resource* resource ) | |||
455 | void ConfigPage::resourceDeleted( Resource* resource ) | 480 | void ConfigPage::resourceDeleted( Resource* resource ) |
456 | { | 481 | { |
457 | qDebug("ConfigPage::resourceDeleted : %s", resource->resourceName().latin1()); | 482 | qDebug("ConfigPage::resourceDeleted : %s", resource->resourceName().latin1()); |
458 | kdDebug(5650) << "ConfigPage::resourceDeleted( " << resource->resourceName() << " )" << endl; | 483 | kdDebug(5650) << "ConfigPage::resourceDeleted( " << resource->resourceName() << " )" << endl; |
459 | } | 484 | } |
460 | 485 | ||
461 | void ConfigPage::slotItemClicked( QListViewItem *item ) | 486 | void ConfigPage::slotItemClicked( QListViewItem *item ) |
462 | { | 487 | { |
463 | ConfigViewItem *configItem = static_cast<ConfigViewItem *>( item ); | 488 | ConfigViewItem *configItem = static_cast<ConfigViewItem *>( item ); |
464 | if ( !configItem ) return; | 489 | if ( !configItem ) return; |
465 | 490 | ||
466 | if ( configItem->standard() && !configItem->isOn() ) { | 491 | if ( configItem->standard() && !configItem->isOn() ) { |
467 | KMessageBox::sorry( this, i18n( "You cannot deactivate the standard resource. Choose another standard resource first." ) ); | 492 | KMessageBox::sorry( this, i18n( "You cannot deactivate the<br>standard resource. Choose<br>another standard resource first." ) ); |
468 | configItem->setOn( true ); | 493 | configItem->setOn( true ); |
469 | return; | 494 | return; |
470 | } | 495 | } |
471 | 496 | ||
472 | if ( configItem->isOn() != configItem->resource()->isActive() ) { | 497 | if ( configItem->isOn() != configItem->resource()->isActive() ) { |
473 | emit changed( true ); | 498 | emit changed( true ); |
474 | } | 499 | } |
475 | } | 500 | } |
476 | 501 | ||
477 | void ConfigPage::saveResourceSettings() | 502 | void ConfigPage::saveResourceSettings() |
478 | { | 503 | { |
479 | qDebug("ConfigPage::saveResourceSettings() begin"); | 504 | qDebug("ConfigPage::saveResourceSettings() begin"); |
480 | 505 | ||
481 | if ( mCurrentManager ) { | 506 | if ( mCurrentManager ) { |
482 | 507 | ||
483 | QListViewItem *item = mListView->firstChild(); | 508 | QListViewItem *item = mListView->firstChild(); |
484 | while ( item ) { | 509 | while ( item ) { |
485 | ConfigViewItem *configItem = static_cast<ConfigViewItem*>( item ); | 510 | ConfigViewItem *configItem = static_cast<ConfigViewItem*>( item ); |
486 | 511 | ||
487 | // check if standard resource | 512 | // check if standard resource |
488 | if ( configItem->standard() && !configItem->readOnly() && | 513 | if ( configItem->standard() && !configItem->readOnly() && |
489 | configItem->isOn() ) { | 514 | configItem->isOn() ) { |
490 | 515 | ||
491 | mCurrentManager->setStandardResource( configItem->resource() ); | 516 | mCurrentManager->setStandardResource( configItem->resource() ); |
492 | } | 517 | } |
493 | 518 | ||
494 | // check if active or passive resource | 519 | // check if active or passive resource |
495 | configItem->resource()->setActive( configItem->isOn() ); | 520 | configItem->resource()->setActive( configItem->isOn() ); |
496 | 521 | ||
497 | item = item->nextSibling(); | 522 | item = item->nextSibling(); |
498 | } | 523 | } |
499 | mCurrentManager->writeConfig( mCurrentConfig ); | 524 | mCurrentManager->writeConfig( mCurrentConfig ); |
500 | 525 | ||
501 | if ( !mCurrentManager->standardResource() ) | 526 | if ( !mCurrentManager->standardResource() ) |
502 | KMessageBox::sorry( this, i18n( "There is no valid standard resource! Please select one which is neither read-only nor inactive." ) ); | 527 | KMessageBox::sorry( this, i18n( "There is no valid standard resource!<br>Please select one which is neither read-only nor inactive." ) ); |
503 | } | 528 | } |
504 | 529 | ||
505 | qDebug("ConfigPage::saveResourceSettings() end"); | 530 | qDebug("ConfigPage::saveResourceSettings() end"); |
506 | 531 | ||
507 | } | 532 | } |
508 | 533 | ||
509 | //US #include "configpage.moc" | 534 | //US #include "configpage.moc" |
510 | 535 | ||
diff --git a/microkde/kresources/configpage.h b/microkde/kresources/configpage.h index 492ea54..be9239e 100644 --- a/microkde/kresources/configpage.h +++ b/microkde/kresources/configpage.h | |||
@@ -87,17 +87,18 @@ class ConfigPage : public QWidget, public ManagerListener<Resource> | |||
87 | QString mFamily; | 87 | QString mFamily; |
88 | QStringList mFamilyMap; | 88 | QStringList mFamilyMap; |
89 | QValueList<ResourcePageInfo> mInfoMap; | 89 | QValueList<ResourcePageInfo> mInfoMap; |
90 | 90 | ||
91 | KComboBox* mFamilyCombo; | 91 | KComboBox* mFamilyCombo; |
92 | KListView* mListView; | 92 | KListView* mListView; |
93 | QPushButton* mAddButton; | 93 | QPushButton* mAddButton; |
94 | QPushButton* mRemoveButton; | 94 | QPushButton* mRemoveButton; |
95 | QPushButton* mEditButton; | 95 | QPushButton* mEditButton; |
96 | QPushButton* mStandardButton; | 96 | QPushButton* mStandardButton; |
97 | 97 | ||
98 | QListViewItem* mLastItem; | 98 | QListViewItem* mLastItem; |
99 | static const QString syncfamily; | ||
99 | }; | 100 | }; |
100 | 101 | ||
101 | } | 102 | } |
102 | 103 | ||
103 | #endif | 104 | #endif |
diff --git a/microkde/kresources/factory.cpp b/microkde/kresources/factory.cpp index f82e94c..7a5c2f6 100644 --- a/microkde/kresources/factory.cpp +++ b/microkde/kresources/factory.cpp | |||
@@ -30,45 +30,45 @@ | |||
30 | #include <klibloader.h> | 30 | #include <klibloader.h> |
31 | //#endif | 31 | //#endif |
32 | #include <qfile.h> | 32 | #include <qfile.h> |
33 | 33 | ||
34 | #include "resource.h" | 34 | #include "resource.h" |
35 | #include "factory.h" | 35 | #include "factory.h" |
36 | 36 | ||
37 | using namespace KRES; | 37 | using namespace KRES; |
38 | 38 | ||
39 | QDict<Factory> *Factory::mSelves = 0; | 39 | QDict<Factory> *Factory::mSelves = 0; |
40 | static KStaticDeleter< QDict<Factory> > staticDeleter; | 40 | static KStaticDeleter< QDict<Factory> > staticDeleter; |
41 | 41 | ||
42 | Factory *Factory::self( const QString& resourceFamily ) | 42 | Factory *Factory::self( const QString& resourceFamily) |
43 | { | 43 | { |
44 | 44 | ||
45 | 45 | ||
46 | Factory *factory = 0; | 46 | Factory *factory = 0; |
47 | if ( !mSelves ) | 47 | if ( !mSelves ) |
48 | { | 48 | { |
49 | mSelves = staticDeleter.setObject( new QDict<Factory> ); | 49 | mSelves = staticDeleter.setObject( new QDict<Factory> ); |
50 | } | 50 | } |
51 | 51 | ||
52 | factory = mSelves->find( resourceFamily ); | 52 | factory = mSelves->find( resourceFamily ); |
53 | 53 | ||
54 | if ( !factory ) { | 54 | if ( !factory ) { |
55 | factory = new Factory( resourceFamily ); | 55 | factory = new Factory( resourceFamily); |
56 | mSelves->insert( resourceFamily, factory ); | 56 | mSelves->insert( resourceFamily, factory ); |
57 | } | 57 | } |
58 | 58 | ||
59 | return factory; | 59 | return factory; |
60 | } | 60 | } |
61 | 61 | ||
62 | Factory::Factory( const QString& resourceFamily ) : | 62 | Factory::Factory( const QString& resourceFamily) : |
63 | mResourceFamily( resourceFamily ) | 63 | mResourceFamily( resourceFamily ) |
64 | { | 64 | { |
65 | //US so far we have three types available for resourceFamily "contact" | 65 | //US so far we have three types available for resourceFamily "contact" |
66 | // and that are "file", "dir", "ldap" | 66 | // and that are "file", "dir", "ldap" |
67 | /*US | 67 | /*US |
68 | 68 | ||
69 | KTrader::OfferList plugins = KTrader::self()->query( "KResources/Plugin", QString( "[X-KDE-ResourceFamily] == '%1'" ) | 69 | KTrader::OfferList plugins = KTrader::self()->query( "KResources/Plugin", QString( "[X-KDE-ResourceFamily] == '%1'" ) |
70 | .arg( resourceFamily ) ); | 70 | .arg( resourceFamily ) ); |
71 | KTrader::OfferList::ConstIterator it; | 71 | KTrader::OfferList::ConstIterator it; |
72 | for ( it = plugins.begin(); it != plugins.end(); ++it ) { | 72 | for ( it = plugins.begin(); it != plugins.end(); ++it ) { |
73 | QVariant type = (*it)->property( "X-KDE-ResourceType" ); | 73 | QVariant type = (*it)->property( "X-KDE-ResourceType" ); |
74 | if ( !type.toString().isEmpty() ) | 74 | if ( !type.toString().isEmpty() ) |
@@ -178,49 +178,83 @@ ConfigWidget *Factory::configWidget( const QString& type, QWidget *parent ) | |||
178 | } | 178 | } |
179 | 179 | ||
180 | ConfigWidget *wdg = pluginFactory->configWidget( parent ); | 180 | ConfigWidget *wdg = pluginFactory->configWidget( parent ); |
181 | if ( !wdg ) { | 181 | if ( !wdg ) { |
182 | //US kdDebug() << "'" << ptr->library() << "' is not a " + mResourceFamily + " plugin." << endl; | 182 | //US kdDebug() << "'" << ptr->library() << "' is not a " + mResourceFamily + " plugin." << endl; |
183 | qDebug("%s is not a %s plugin.", pi->library.latin1(), mResourceFamily.latin1()); | 183 | qDebug("%s is not a %s plugin.", pi->library.latin1(), mResourceFamily.latin1()); |
184 | return 0; | 184 | return 0; |
185 | } | 185 | } |
186 | return wdg; | 186 | return wdg; |
187 | 187 | ||
188 | } | 188 | } |
189 | 189 | ||
190 | SyncWidget *Factory::syncWidget( const QString& type, QWidget *parent ) | ||
191 | { | ||
192 | if ( type.isEmpty() || !mTypeMap.contains( type ) ) | ||
193 | return 0; | ||
194 | |||
195 | //US KService::Ptr ptr = mTypeMap[ type ]; | ||
196 | //US KLibFactory *factory = KLibLoader::self()->factory( ptr->library().latin1() ); | ||
197 | PluginInfo* pi = mTypeMap[ type ]; | ||
198 | KLibFactory *factory = (KLibFactory *)KLibLoader::self()->factory( pi->library.latin1() ); | ||
199 | if ( !factory ) { | ||
200 | qDebug("KRES::Factory::syncWidget(): Factory creation failed for library %s", pi->library.latin1()); | ||
201 | kdDebug() << "KRES::Factory::syncWidget(): Factory creation failed" << endl; | ||
202 | return 0; | ||
203 | } | ||
204 | |||
205 | PluginFactoryBase *pluginFactory = static_cast<PluginFactoryBase *>( factory ); | ||
206 | |||
207 | if ( !pluginFactory ) { | ||
208 | qDebug("KRES::Factory::syncWidget(): no plugin factory for library %s", pi->library.latin1()); | ||
209 | kdDebug() << "KRES::Factory::syncWidget(): no plugin factory." << endl; | ||
210 | return 0; | ||
211 | } | ||
212 | |||
213 | SyncWidget *wdg = pluginFactory->syncWidget( parent ); | ||
214 | if ( !wdg ) { | ||
215 | //US kdDebug() << "'" << ptr->library() << "' is not a " + mResourceFamily + " plugin." << endl; | ||
216 | qDebug("%s is not a %s plugin.", pi->library.latin1(), mResourceFamily.latin1()); | ||
217 | return 0; | ||
218 | } | ||
219 | return wdg; | ||
220 | |||
221 | } | ||
222 | |||
223 | |||
190 | QString Factory::typeName( const QString &type ) const | 224 | QString Factory::typeName( const QString &type ) const |
191 | { | 225 | { |
192 | if ( type.isEmpty() || !mTypeMap.contains( type ) ) | 226 | if ( type.isEmpty() || !mTypeMap.contains( type ) ) |
193 | return QString(); | 227 | return QString(); |
194 | 228 | ||
195 | 229 | ||
196 | //US KService::Ptr ptr = mTypeMap[ type ]; | 230 | //US KService::Ptr ptr = mTypeMap[ type ]; |
197 | //US return ptr->name(); | 231 | //US return ptr->name(); |
198 | PluginInfo* pi = mTypeMap[ type ]; | 232 | PluginInfo* pi = mTypeMap[ type ]; |
199 | return pi->nameLabel; | 233 | return pi->nameLabel; |
200 | 234 | ||
201 | } | 235 | } |
202 | 236 | ||
203 | QString Factory::typeDescription( const QString &type ) const | 237 | QString Factory::typeDescription( const QString &type ) const |
204 | { | 238 | { |
205 | if ( type.isEmpty() || !mTypeMap.contains( type ) ) | 239 | if ( type.isEmpty() || !mTypeMap.contains( type ) ) |
206 | return QString(); | 240 | return QString(); |
207 | 241 | ||
208 | //US KService::Ptr ptr = mTypeMap[ type ]; | 242 | //US KService::Ptr ptr = mTypeMap[ type ]; |
209 | //US return ptr->comment(); | 243 | //US return ptr->comment(); |
210 | PluginInfo* pi = mTypeMap[ type ]; | 244 | PluginInfo* pi = mTypeMap[ type ]; |
211 | return pi->descriptionLabel; | 245 | return pi->descriptionLabel; |
212 | } | 246 | } |
213 | 247 | ||
214 | Resource *Factory::resource( const QString& type, const KConfig *config ) | 248 | Resource *Factory::resource( const QString& type, const KConfig *config, bool syncable ) |
215 | { | 249 | { |
216 | 250 | ||
217 | 251 | ||
218 | if ( type.isEmpty() || !mTypeMap.contains( type ) ) | 252 | if ( type.isEmpty() || !mTypeMap.contains( type ) ) |
219 | return 0; | 253 | return 0; |
220 | 254 | ||
221 | /*US load the lib not dynamicly. !! | 255 | /*US load the lib not dynamicly. !! |
222 | KService::Ptr ptr = mTypeMap[ type ]; | 256 | KService::Ptr ptr = mTypeMap[ type ]; |
223 | KLibFactory *factory = KLibLoader::self()->factory( ptr->library().latin1() ); | 257 | KLibFactory *factory = KLibLoader::self()->factory( ptr->library().latin1() ); |
224 | if ( !factory ) { | 258 | if ( !factory ) { |
225 | kdDebug() << "KRES::Factory::resource(): Factory creation failed" << endl; | 259 | kdDebug() << "KRES::Factory::resource(): Factory creation failed" << endl; |
226 | return 0; | 260 | return 0; |
@@ -233,23 +267,23 @@ Resource *Factory::resource( const QString& type, const KConfig *config ) | |||
233 | kdDebug() << "KRES::Factory::resource(): Factory creation failed" << endl; | 267 | kdDebug() << "KRES::Factory::resource(): Factory creation failed" << endl; |
234 | return 0; | 268 | return 0; |
235 | } | 269 | } |
236 | 270 | ||
237 | PluginFactoryBase *pluginFactory = static_cast<PluginFactoryBase *>( factory ); | 271 | PluginFactoryBase *pluginFactory = static_cast<PluginFactoryBase *>( factory ); |
238 | 272 | ||
239 | if ( !pluginFactory ) { | 273 | if ( !pluginFactory ) { |
240 | qDebug("KRES::Factory::resource(): no plugin factory for library %s", pi->library.latin1()); | 274 | qDebug("KRES::Factory::resource(): no plugin factory for library %s", pi->library.latin1()); |
241 | kdDebug() << "KRES::Factory::resource(): no plugin factory." << endl; | 275 | kdDebug() << "KRES::Factory::resource(): no plugin factory." << endl; |
242 | return 0; | 276 | return 0; |
243 | } | 277 | } |
244 | 278 | ||
245 | Resource *resource = pluginFactory->resource( config ); | 279 | Resource *resource = pluginFactory->resource( config, syncable ); |
246 | if ( !resource ) { | 280 | if ( !resource ) { |
247 | //US kdDebug() << "'" << ptr->library() << "' is not a " + mResourceFamily + " plugin." << endl; | 281 | //US kdDebug() << "'" << ptr->library() << "' is not a " + mResourceFamily + " plugin." << endl; |
248 | qDebug("%s is not a %s plugin.", pi->library.latin1(), mResourceFamily.latin1()); | 282 | qDebug("%s is not a %s plugin.", pi->library.latin1(), mResourceFamily.latin1()); |
249 | return 0; | 283 | return 0; |
250 | } | 284 | } |
251 | 285 | ||
252 | resource->setType( type ); | 286 | resource->setType( type ); |
253 | 287 | ||
254 | return resource; | 288 | return resource; |
255 | } | 289 | } |
diff --git a/microkde/kresources/factory.h b/microkde/kresources/factory.h index ad67ab3..a265bc8 100644 --- a/microkde/kresources/factory.h +++ b/microkde/kresources/factory.h | |||
@@ -25,25 +25,25 @@ | |||
25 | #define KRESOURCES_FACTORY_H | 25 | #define KRESOURCES_FACTORY_H |
26 | 26 | ||
27 | #include <qdict.h> | 27 | #include <qdict.h> |
28 | #include <qstring.h> | 28 | #include <qstring.h> |
29 | 29 | ||
30 | #include <kconfig.h> | 30 | #include <kconfig.h> |
31 | 31 | ||
32 | 32 | ||
33 | #include "resource.h" | 33 | #include "resource.h" |
34 | 34 | ||
35 | namespace KRES { | 35 | namespace KRES { |
36 | 36 | ||
37 | //US | 37 | //US |
38 | struct PluginInfo | 38 | struct PluginInfo |
39 | { | 39 | { |
40 | QString library; | 40 | QString library; |
41 | QString nameLabel; | 41 | QString nameLabel; |
42 | QString descriptionLabel; | 42 | QString descriptionLabel; |
43 | }; | 43 | }; |
44 | 44 | ||
45 | 45 | ||
46 | /** | 46 | /** |
47 | * Class for loading resource plugins. | 47 | * Class for loading resource plugins. |
48 | * Do not use this class directly. Use ResourceManager instead | 48 | * Do not use this class directly. Use ResourceManager instead |
49 | * | 49 | * |
@@ -56,69 +56,81 @@ struct PluginInfo | |||
56 | * QStringList::Iterator it; | 56 | * QStringList::Iterator it; |
57 | * for ( it = list.begin(); it != list.end(); ++it ) { | 57 | * for ( it = list.begin(); it != list.end(); ++it ) { |
58 | * Resource<Calendar> *resource = factory->resource( (*it), | 58 | * Resource<Calendar> *resource = factory->resource( (*it), |
59 | * KABC::StdAddressBook::self(), 0 ); | 59 | * KABC::StdAddressBook::self(), 0 ); |
60 | * // do something with resource | 60 | * // do something with resource |
61 | * } | 61 | * } |
62 | * </pre> | 62 | * </pre> |
63 | */ | 63 | */ |
64 | class Factory | 64 | class Factory |
65 | { | 65 | { |
66 | public: | 66 | public: |
67 | 67 | ||
68 | 68 | ||
69 | /** | 69 | /** |
70 | * Returns the global resource factory. | 70 | * Returns the global resource factory. |
71 | */ | 71 | */ |
72 | static Factory *self( const QString& resourceFamily ); | 72 | static Factory *self( const QString& resourceFamily ); |
73 | 73 | ||
74 | ~Factory(); | 74 | ~Factory(); |
75 | 75 | ||
76 | /** | 76 | /** |
77 | * Returns the config widget for the given resource type, | 77 | * Returns the config widget for the given resource type, |
78 | * or a null pointer if resource type doesn't exist. | 78 | * or a null pointer if resource type doesn't exist. |
79 | * | 79 | * |
80 | * @param type The type of the resource, returned by @ref resources() | 80 | * @param type The type of the resource, returned by @ref resources() |
81 | * @param resource The resource to be editted. | 81 | * @param resource The resource to be editted. |
82 | * @param parent The parent widget | 82 | * @param parent The parent widget |
83 | */ | 83 | */ |
84 | ConfigWidget *configWidget( const QString& type, QWidget *parent = 0 ); | 84 | ConfigWidget *configWidget( const QString& type, QWidget *parent = 0 ); |
85 | 85 | ||
86 | /** | 86 | /** |
87 | * Returns the sync widget for the given resource type, | ||
88 | * or a null pointer if resource type doesn't exist, | ||
89 | * or a null pointer if resource does not support syncing. | ||
90 | * | ||
91 | * @param type The type of the resource, returned by @ref resources() | ||
92 | * @param resource The resource to be editted. | ||
93 | * @param parent The parent widget | ||
94 | */ | ||
95 | SyncWidget *syncWidget( const QString& type, QWidget *parent = 0 ); | ||
96 | |||
97 | /** | ||
87 | * Returns a pointer to a resource object or a null pointer | 98 | * Returns a pointer to a resource object or a null pointer |
88 | * if resource type doesn't exist. | 99 | * if resource type doesn't exist. |
89 | * | 100 | * |
90 | * @param type The type of the resource, returned by @ref resources() | 101 | * @param type The type of the resource, returned by @ref resources() |
91 | * @param ab The address book, the resource should belong to | 102 | * @param ab The address book, the resource should belong to |
92 | * @param config The config object where the resource get it settings from, or 0 if a new resource should be created. | 103 | * @param config The config object where the resource get it settings from, or 0 if a new resource should be created. |
104 | * @param syncable If the resource should support syncing capabilities. | ||
93 | */ | 105 | */ |
94 | Resource *resource( const QString& type, const KConfig *config ); | 106 | Resource *resource( const QString& type, const KConfig *config, bool syncable ); |
95 | 107 | ||
96 | /** | 108 | /** |
97 | * Returns a list of all available resource types. | 109 | * Returns a list of all available resource types. |
98 | */ | 110 | */ |
99 | QStringList typeNames() const; | 111 | QStringList typeNames() const; |
100 | 112 | ||
101 | /** | 113 | /** |
102 | * Returns the name for a special type. | 114 | * Returns the name for a special type. |
103 | */ | 115 | */ |
104 | QString typeName( const QString &type ) const; | 116 | QString typeName( const QString &type ) const; |
105 | 117 | ||
106 | /** | 118 | /** |
107 | * Returns the description for a special type. | 119 | * Returns the description for a special type. |
108 | */ | 120 | */ |
109 | QString typeDescription( const QString &type ) const; | 121 | QString typeDescription( const QString &type ) const; |
110 | 122 | ||
111 | protected: | 123 | protected: |
112 | Factory( const QString& resourceFamily ); | 124 | Factory( const QString& resourceFamily); |
113 | 125 | ||
114 | private: | 126 | private: |
115 | static QDict<Factory> *mSelves; | 127 | static QDict<Factory> *mSelves; |
116 | 128 | ||
117 | QString mResourceFamily; | 129 | QString mResourceFamily; |
118 | //US QMap<QString, KService::Ptr> mTypeMap; | 130 | //US QMap<QString, KService::Ptr> mTypeMap; |
119 | //US lets store the pluginfo struct as value instead of a KService | 131 | //US lets store the pluginfo struct as value instead of a KService |
120 | QMap<QString, PluginInfo*> mTypeMap; | 132 | QMap<QString, PluginInfo*> mTypeMap; |
121 | }; | 133 | }; |
122 | 134 | ||
123 | } | 135 | } |
124 | #endif | 136 | #endif |