summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--microkde/kresources/configdialog.cpp89
-rw-r--r--microkde/kresources/configdialog.h4
-rw-r--r--microkde/kresources/configpage.cpp75
-rw-r--r--microkde/kresources/configpage.h1
-rw-r--r--microkde/kresources/factory.cpp44
-rw-r--r--microkde/kresources/factory.h26
-rw-r--r--microkde/microkdeE.pro2
7 files changed, 179 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
@@ -41,2 +41,3 @@
41#include "configdialog.h" 41#include "configdialog.h"
42#include "syncwidget.h"
42 43
@@ -45,6 +46,7 @@ using namespace KRES;
45ConfigDialog::ConfigDialog( QWidget *parent, const QString& resourceFamily, 46ConfigDialog::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 );
@@ -63,3 +65,3 @@ ConfigDialog::ConfigDialog( QWidget *parent, const QString& resourceFamily,
63 65
64 new QLabel( i18n( "Name:" ), generalGroupBox ); 66 new QLabel( mResource->isSyncable()?i18n( "Profile Name:" ):i18n( "Name:" ), generalGroupBox );
65 67
@@ -67,6 +69,8 @@ ConfigDialog::ConfigDialog( QWidget *parent, const QString& resourceFamily,
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
@@ -84,5 +88,5 @@ ConfigDialog::ConfigDialog( QWidget *parent, const QString& resourceFamily,
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 ) ) );
@@ -91,6 +95,26 @@ ConfigDialog::ConfigDialog( QWidget *parent, const QString& resourceFamily,
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 &)));
@@ -98,3 +122,3 @@ ConfigDialog::ConfigDialog( QWidget *parent, const QString& resourceFamily,
98 slotNameChanged( mName->text() ); 122 slotNameChanged( mName->text() );
99 123
100//US setMinimumSize( 400, 250 ); 124//US setMinimumSize( 400, 250 );
@@ -108,2 +132,6 @@ void ConfigDialog::setInEditMode( bool value )
108 mConfigWidget->setInEditMode( value ); 132 mConfigWidget->setInEditMode( value );
133
134 if ( mSyncWidget )
135 mSyncWidget->setInEditMode( value );
136
109} 137}
@@ -117,6 +145,9 @@ 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}
@@ -125,9 +156,11 @@ 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}
@@ -137,3 +170,3 @@ void ConfigDialog::accept()
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;
@@ -142,3 +175,4 @@ void ConfigDialog::accept()
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
@@ -150,2 +184,9 @@ void ConfigDialog::accept()
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();
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
@@ -33,2 +33,3 @@ namespace KRES {
33 class ConfigWidget; 33 class ConfigWidget;
34 class SyncWidget;
34 35
@@ -52,2 +53,3 @@ class ConfigDialog : public KDialogBase
52 ConfigWidget *mConfigWidget; 53 ConfigWidget *mConfigWidget;
54 SyncWidget *mSyncWidget;
53 Resource* mResource; 55 Resource* mResource;
@@ -57,3 +59,3 @@ class ConfigDialog : public KDialogBase
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};
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
@@ -23,2 +23,9 @@
23 23
24/*
25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk
27
28$Id$
29*/
30
24#include <qgroupbox.h> 31#include <qgroupbox.h>
@@ -52,2 +59,5 @@ using namespace KRES;
52 59
60const QString ConfigPage::syncfamily = "syncprofiles";
61
62
53class ConfigViewItem : public QCheckListItem 63class ConfigViewItem : public QCheckListItem
@@ -166,5 +176,7 @@ void ConfigPage::load()
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);
@@ -172,3 +184,3 @@ void ConfigPage::load()
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 ) {
@@ -230,3 +242,3 @@ void ConfigPage::slotFamilyChanged( int pos )
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;
@@ -241,11 +253,11 @@ void ConfigPage::slotFamilyChanged( int pos )
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;
@@ -256,3 +268,3 @@ void ConfigPage::slotFamilyChanged( int pos )
256 } 268 }
257 269
258 if ( mListView->childCount() == 0 ) { 270 if ( mListView->childCount() == 0 ) {
@@ -265,8 +277,8 @@ void ConfigPage::slotFamilyChanged( int pos )
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 }
@@ -285,5 +297,18 @@ void ConfigPage::slotAdd()
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 )
@@ -382,3 +407,3 @@ void ConfigPage::slotEdit()
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 );
@@ -401,3 +426,3 @@ void ConfigPage::slotStandard()
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;
@@ -406,3 +431,3 @@ void ConfigPage::slotStandard()
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;
@@ -466,3 +491,3 @@ void ConfigPage::slotItemClicked( QListViewItem *item )
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 );
@@ -481,3 +506,3 @@ void ConfigPage::saveResourceSettings()
481 if ( mCurrentManager ) { 506 if ( mCurrentManager ) {
482 507
483 QListViewItem *item = mListView->firstChild(); 508 QListViewItem *item = mListView->firstChild();
@@ -489,6 +514,6 @@ void ConfigPage::saveResourceSettings()
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
@@ -501,7 +526,7 @@ void ConfigPage::saveResourceSettings()
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}
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
@@ -98,2 +98,3 @@ class ConfigPage : public QWidget, public ManagerListener<Resource>
98 QListViewItem* mLastItem; 98 QListViewItem* mLastItem;
99 static const QString syncfamily;
99}; 100};
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
@@ -41,3 +41,3 @@ static KStaticDeleter< QDict<Factory> > staticDeleter;
41 41
42Factory *Factory::self( const QString& resourceFamily ) 42Factory *Factory::self( const QString& resourceFamily)
43{ 43{
@@ -54,3 +54,3 @@ Factory *Factory::self( const QString& resourceFamily )
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 );
@@ -61,3 +61,3 @@ Factory *Factory::self( const QString& resourceFamily )
61 61
62Factory::Factory( const QString& resourceFamily ) : 62Factory::Factory( const QString& resourceFamily) :
63 mResourceFamily( resourceFamily ) 63 mResourceFamily( resourceFamily )
@@ -189,2 +189,36 @@ ConfigWidget *Factory::configWidget( const QString& type, QWidget *parent )
189 189
190SyncWidget *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
190QString Factory::typeName( const QString &type ) const 224QString Factory::typeName( const QString &type ) const
@@ -213,3 +247,3 @@ QString Factory::typeDescription( const QString &type ) const
213 247
214Resource *Factory::resource( const QString& type, const KConfig *config ) 248Resource *Factory::resource( const QString& type, const KConfig *config, bool syncable )
215{ 249{
@@ -244,3 +278,3 @@ Resource *Factory::resource( const QString& type, const KConfig *config )
244 278
245 Resource *resource = pluginFactory->resource( config ); 279 Resource *resource = pluginFactory->resource( config, syncable );
246 if ( !resource ) { 280 if ( !resource ) {
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
@@ -36,3 +36,3 @@ namespace KRES {
36 36
37//US 37//US
38struct PluginInfo 38struct PluginInfo
@@ -67,3 +67,3 @@ class Factory
67 67
68 68
69 /** 69 /**
@@ -80,3 +80,3 @@ class Factory
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
@@ -86,2 +86,13 @@ class Factory
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
@@ -92,4 +103,5 @@ class Factory
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
@@ -111,3 +123,3 @@ class Factory
111 protected: 123 protected:
112 Factory( const QString& resourceFamily ); 124 Factory( const QString& resourceFamily);
113 125
@@ -118,4 +130,4 @@ class Factory
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};
diff --git a/microkde/microkdeE.pro b/microkde/microkdeE.pro
index ec2b1f7..b664c9a 100644
--- a/microkde/microkdeE.pro
+++ b/microkde/microkdeE.pro
@@ -91,2 +91,3 @@ osmartpointer.h \
91 kresources/kcmkresources.h \ 91 kresources/kcmkresources.h \
92 kresources/syncwidget.h \
92 kdecore/kmdcodec.h \ 93 kdecore/kmdcodec.h \
@@ -171,2 +172,3 @@ oprocess.cpp \
171 kresources/selectdialog.cpp \ 172 kresources/selectdialog.cpp \
173 kresources/syncwidget.cpp \
172 kutils/kcmultidialog.cpp 174 kutils/kcmultidialog.cpp