diff --git a/kmmainwidget.cpp b/kmmainwidget.cpp index ebf0ab7d2..12ab37e56 100644 --- a/kmmainwidget.cpp +++ b/kmmainwidget.cpp @@ -3176,7 +3176,7 @@ void KMMainWidget::setupActions() // slotExpireFolder() and FolderViewItem::slotShowExpiryProperties(). mExpireFolderAction = new QAction(i18n("&Expiration Settings"), this); actionCollection()->addAction(QLatin1String("expire"), mExpireFolderAction); - connect(mExpireFolderAction, SIGNAL(triggered(bool)), mManageShowCollectionProperties, SLOT(slotExpireFolder())); + connect(mExpireFolderAction, SIGNAL(triggered(bool)), this, SLOT(slotExpireFolder())); mAkonadiStandardActionManager->interceptAction(Akonadi::StandardMailActionManager::MoveToTrash); connect(mAkonadiStandardActionManager->action(Akonadi::StandardMailActionManager::MoveToTrash), SIGNAL(triggered(bool)), this, SLOT(slotTrashSelectedMessages())); @@ -3494,7 +3494,7 @@ void KMMainWidget::setupActions() { mExpireConfigAction = new QAction(i18n("Expire..."), this); actionCollection()->addAction(QLatin1String("expire_settings"), mExpireConfigAction); - connect(mExpireConfigAction, SIGNAL(triggered(bool)), this, SLOT(slotShowExpiryProperties())); + connect( mExpireConfigAction, SIGNAL(triggered(bool)), mManageShowCollectionProperties, SLOT(slotShowExpiryProperties()) ); } { diff --git a/manageshowcollectionproperties.cpp b/manageshowcollectionproperties.cpp index 8a4fc0bd8..28493faa1 100644 --- a/manageshowcollectionproperties.cpp +++ b/manageshowcollectionproperties.cpp @@ -70,8 +70,14 @@ void ManageShowCollectionProperties::showCollectionProperties(const QString &pag return; } - if (Solid::Networking::status() == Solid::Networking::Unconnected) { - + if (mHashDialogBox.contains(mMainWidget->currentFolder()->collection().id())) { + if (mHashDialogBox.value(mMainWidget->currentFolder()->collection().id())) { + mHashDialogBox.value(mMainWidget->currentFolder()->collection().id())->activateWindow(); + mHashDialogBox.value(mMainWidget->currentFolder()->collection().id())->raise(); + return; + } + } + if ( Solid::Networking::status() == Solid::Networking::Unconnected ) { KMessageBox::information( mMainWidget, i18n("Network is unconnected. Folder information cannot be updated.")); @@ -174,23 +180,25 @@ void ManageShowCollectionProperties::slotCollectionPropertiesFinished(KJob *job) const Akonadi::Collection collection = fetch->collections().first(); - const QStringList pages = QStringList() << QLatin1String("MailCommon::CollectionGeneralPage") - << QLatin1String("KMail::CollectionViewPage") - << QLatin1String("Akonadi::CachePolicyPage") - << QLatin1String("KMail::CollectionTemplatesPage") - << QLatin1String("MailCommon::CollectionExpiryPage") - << QLatin1String("PimCommon::CollectionAclPage") - << QLatin1String("KMail::CollectionMailingListPage") - << QLatin1String("KMail::CollectionQuotaPage") - << QLatin1String("KMail::CollectionShortcutPage") - << QLatin1String("KMail::CollectionMaintenancePage"); - - Akonadi::CollectionPropertiesDialog *dlg = new Akonadi::CollectionPropertiesDialog(collection, pages, mMainWidget); - dlg->setWindowTitle(i18nc("@title:window", "Properties of Folder %1", collection.name())); - - const QString pageToShow = fetch->property("pageToShow").toString(); - if (!pageToShow.isEmpty()) { // show a specific page - dlg->setCurrentPage(pageToShow); + const QStringList pages = QStringList() << QLatin1String( "MailCommon::CollectionGeneralPage" ) + << QLatin1String( "KMail::CollectionViewPage" ) + << QLatin1String( "Akonadi::CachePolicyPage" ) + << QLatin1String( "KMail::CollectionTemplatesPage" ) + << QLatin1String( "MailCommon::CollectionExpiryPage" ) + << QLatin1String( "PimCommon::CollectionAclPage" ) + << QLatin1String( "KMail::CollectionMailingListPage" ) + << QLatin1String( "KMail::CollectionQuotaPage" ) + << QLatin1String( "KMail::CollectionShortcutPage" ) + << QLatin1String( "KMail::CollectionMaintenancePage" ); + + QPointer dlg = new Akonadi::CollectionPropertiesDialog( collection, pages, mMainWidget ); + dlg->setWindowTitle( i18nc( "@title:window", "Properties of Folder %1", collection.name() ) ); + + + const QString pageToShow = fetch->property( "pageToShow" ).toString(); + if ( !pageToShow.isEmpty() ) { // show a specific page + dlg->setCurrentPage( pageToShow ); } dlg->show(); + mHashDialogBox.insert(collection.id(), dlg); } diff --git a/manageshowcollectionproperties.h b/manageshowcollectionproperties.h index 3f4132f06..a2605a3da 100644 --- a/manageshowcollectionproperties.h +++ b/manageshowcollectionproperties.h @@ -23,6 +23,11 @@ #include #include + +namespace Akonadi { +class CollectionPropertiesDialog; +} + class KJob; class KMMainWidget; class ManageShowCollectionProperties : public QObject @@ -47,6 +52,7 @@ private: void showCollectionPropertiesContinued(const QString &pageToShow, QPointer progressItem); private: + QHash > mHashDialogBox; KMMainWidget *mMainWidget; };