20 #include "collectionpropertiesdialog.h"
22 #include "cachepolicy.h"
23 #include "cachepolicypage.h"
24 #include "collection.h"
25 #include "collectiongeneralpropertiespage_p.h"
26 #include "collectionmodifyjob.h"
29 #include <ktabwidget.h>
33 using namespace Akonadi;
38 class CollectionPropertiesDialog::Private
45 static void registerBuiltinPages();
49 for (
int i = 0; i < mTabWidget->count(); ++i ) {
51 page->
save( mCollection );
55 connect( job, SIGNAL(result(KJob*)), q, SLOT(saveResult(KJob*)) );
58 void saveResult( KJob *job )
62 kWarning() << job->errorString();
69 for (
int i = 0; i < mTabWidget->count(); ++i ) {
70 QWidget *w = mTabWidget->widget( i );
71 if ( w->objectName() == name ) {
72 mTabWidget->setCurrentIndex( i );
80 QStringList mPageNames;
81 KTabWidget* mTabWidget;
84 typedef QList<CollectionPropertiesPageFactory*> CollectionPropertiesPageFactoryList;
86 K_GLOBAL_STATIC( CollectionPropertiesPageFactoryList, s_pages )
88 static
bool s_defaultPage = true;
92 mCollection( collection ),
93 mPageNames( pageNames )
95 if ( s_defaultPage ) {
96 registerBuiltinPages();
100 void CollectionPropertiesDialog::Private::registerBuiltinPages()
102 static bool registered =
false;
108 s_pages->append(
new CollectionGeneralPropertiesPageFactory() );
109 s_pages->append(
new CachePolicyPageFactory() );
114 void CollectionPropertiesDialog::Private::init()
116 QBoxLayout *layout =
new QHBoxLayout( q->mainWidget() );
117 layout->setMargin( 0 );
118 mTabWidget =
new KTabWidget( q->mainWidget() );
119 layout->addWidget( mTabWidget );
121 if ( mPageNames.isEmpty() ) {
125 mTabWidget->addTab( page, page->
pageTitle() );
126 page->
load( mCollection );
132 QHash<QString, CollectionPropertiesPage*> pages;
136 const QString pageName = page->objectName();
138 if ( page->
canHandle( mCollection ) && mPageNames.contains( pageName ) && !pages.contains( pageName ) ) {
139 pages.insert( page->objectName(), page );
145 foreach (
const QString &pageName, mPageNames ) {
148 mTabWidget->addTab( page, page->
pageTitle() );
149 page->
load( mCollection );
154 q->connect( q, SIGNAL(okClicked()), SLOT(save()) );
155 q->connect( q, SIGNAL(cancelClicked()), SLOT(deleteLater()) );
157 KConfigGroup group( KGlobal::config(),
"CollectionPropertiesDialog" );
158 const QSize size = group.readEntry(
"Size", QSize() );
159 if ( size.isValid() ) {
162 q->resize( q->sizeHint().width(), q->sizeHint().height() );
170 d( new Private( this, collection, QStringList() ) )
177 d( new Private( this, collection, pages ) )
184 KConfigGroup group( KGlobal::config(),
"CollectionPropertiesDialog" );
185 group.writeEntry(
"Size", size() );
191 if ( s_pages->isEmpty() && s_defaultPage ) {
192 Private::registerBuiltinPages();
194 s_pages->append( factory );
199 s_defaultPage = defaultPage;
206 return QLatin1String(
"Akonadi::CollectionGeneralPropertiesPage" );
208 return QLatin1String(
"Akonadi::CachePolicyPage" );
216 d->setCurrentPage( name );
219 #include "moc_collectionpropertiesdialog.cpp"