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"
30 #include <ktabwidget.h>
34 using namespace Akonadi;
39 class CollectionPropertiesDialog::Private
46 static void registerBuiltinPages();
50 for (
int i = 0; i < mTabWidget->count(); ++i ) {
52 page->
save( mCollection );
56 connect( job, SIGNAL(result(KJob*)), q, SLOT(saveResult(KJob*)) );
59 void saveResult( KJob *job )
63 kWarning() << job->errorString();
70 for (
int i = 0; i < mTabWidget->count(); ++i ) {
71 QWidget *w = mTabWidget->widget( i );
72 if ( w->objectName() == name ) {
73 mTabWidget->setCurrentIndex( i );
81 QStringList mPageNames;
82 KTabWidget* mTabWidget;
85 typedef QList<CollectionPropertiesPageFactory*> CollectionPropertiesPageFactoryList;
87 K_GLOBAL_STATIC( CollectionPropertiesPageFactoryList, s_pages )
89 static
bool s_defaultPage = true;
93 mCollection( collection ),
94 mPageNames( pageNames ),
97 if ( s_defaultPage ) {
98 registerBuiltinPages();
102 void CollectionPropertiesDialog::Private::registerBuiltinPages()
104 static bool registered =
false;
110 s_pages->append(
new CollectionGeneralPropertiesPageFactory() );
111 s_pages->append(
new CachePolicyPageFactory() );
116 void CollectionPropertiesDialog::Private::init()
118 QBoxLayout *layout =
new QHBoxLayout( q->mainWidget() );
119 layout->setMargin( 0 );
120 mTabWidget =
new KTabWidget( q->mainWidget() );
121 layout->addWidget( mTabWidget );
123 if ( mPageNames.isEmpty() ) {
127 mTabWidget->addTab( page, page->
pageTitle() );
128 page->
load( mCollection );
134 QHash<QString, CollectionPropertiesPage*> pages;
138 const QString pageName = page->objectName();
140 if ( page->
canHandle( mCollection ) && mPageNames.contains( pageName ) && !pages.contains( pageName ) ) {
141 pages.insert( page->objectName(), page );
147 foreach (
const QString &pageName, mPageNames ) {
150 mTabWidget->addTab( page, page->
pageTitle() );
151 page->
load( mCollection );
156 q->connect( q, SIGNAL(okClicked()), SLOT(save()) );
157 q->connect( q, SIGNAL(cancelClicked()), SLOT(deleteLater()) );
159 KConfigGroup group( KGlobal::config(),
"CollectionPropertiesDialog" );
160 const QSize size = group.readEntry(
"Size", QSize() );
161 if ( size.isValid() ) {
164 q->resize( q->sizeHint().width(), q->sizeHint().height() );
172 d( new Private( this, collection, QStringList() ) )
179 d( new Private( this, collection, pages ) )
186 KConfigGroup group( KGlobal::config(),
"CollectionPropertiesDialog" );
187 group.writeEntry(
"Size", size() );
193 if ( s_pages->isEmpty() && s_defaultPage ) {
194 Private::registerBuiltinPages();
196 s_pages->append( factory );
201 s_defaultPage = defaultPage;
208 return QLatin1String(
"Akonadi::CollectionGeneralPropertiesPage" );
210 return QLatin1String(
"Akonadi::CachePolicyPage" );
218 d->setCurrentPage( name );
221 #include "moc_collectionpropertiesdialog.cpp"