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 ),
96 if ( s_defaultPage ) {
97 registerBuiltinPages();
101 void CollectionPropertiesDialog::Private::registerBuiltinPages()
103 static bool registered =
false;
109 s_pages->append(
new CollectionGeneralPropertiesPageFactory() );
110 s_pages->append(
new CachePolicyPageFactory() );
115 void CollectionPropertiesDialog::Private::init()
117 QBoxLayout *layout =
new QHBoxLayout( q->mainWidget() );
118 layout->setMargin( 0 );
119 mTabWidget =
new KTabWidget( q->mainWidget() );
120 layout->addWidget( mTabWidget );
122 if ( mPageNames.isEmpty() ) {
126 mTabWidget->addTab( page, page->
pageTitle() );
127 page->
load( mCollection );
133 QHash<QString, CollectionPropertiesPage*> pages;
137 const QString pageName = page->objectName();
139 if ( page->
canHandle( mCollection ) && mPageNames.contains( pageName ) && !pages.contains( pageName ) ) {
140 pages.insert( page->objectName(), page );
146 foreach (
const QString &pageName, mPageNames ) {
149 mTabWidget->addTab( page, page->
pageTitle() );
150 page->
load( mCollection );
155 q->connect( q, SIGNAL(okClicked()), SLOT(save()) );
156 q->connect( q, SIGNAL(cancelClicked()), SLOT(deleteLater()) );
158 KConfigGroup group( KGlobal::config(),
"CollectionPropertiesDialog" );
159 const QSize size = group.readEntry(
"Size", QSize() );
160 if ( size.isValid() ) {
163 q->resize( q->sizeHint().width(), q->sizeHint().height() );
171 d( new Private( this, collection, QStringList() ) )
178 d( new Private( this, collection, pages ) )
185 KConfigGroup group( KGlobal::config(),
"CollectionPropertiesDialog" );
186 group.writeEntry(
"Size", size() );
192 if ( s_pages->isEmpty() && s_defaultPage ) {
193 Private::registerBuiltinPages();
195 s_pages->append( factory );
200 s_defaultPage = defaultPage;
207 return QLatin1String(
"Akonadi::CollectionGeneralPropertiesPage" );
209 return QLatin1String(
"Akonadi::CachePolicyPage" );
217 d->setCurrentPage( name );
220 #include "moc_collectionpropertiesdialog.cpp"