Commit 532092dc authored by Laurent Montel's avatar Laurent Montel 😁

Move in own class. Reduce code in kmmainwidget

parent c53602ca
......@@ -158,6 +158,7 @@ if (KDEPIM_BUILD_DESKTOP)
job/removeduplicatemailjob.cpp
job/createfollowupreminderonexistingmessagejob.cpp
job/manageserversidesubscriptionjob.cpp
job/manageserversidesubscriptionjob.cpp
)
set(kmailprivate_widgets_LIB_SRCS
......@@ -189,6 +190,7 @@ if (KDEPIM_BUILD_DESKTOP)
messageactions.cpp
foldershortcutactionmanager.cpp
kmconfigureagent.cpp
manageshowcollectionproperties.cpp
${kmailprivate_attributes_LIB_SRCS}
${kmailprivate_tag_LIB_SRCS}
${kmailprivate_job_LIB_SRCS}
......
......@@ -22,7 +22,6 @@
#include <QSharedPointer>
#include <foldercollection.h>
class QDBusPendingCallWatcher;
class ManageServerSideSubscriptionJob : public QObject
{
Q_OBJECT
......
This diff is collapsed.
......@@ -59,7 +59,7 @@ class CollectionPane;
class KMCommand;
class KMMoveCommand;
class KRecentFilesAction;
class QDBusPendingCallWatcher;
class ManageShowCollectionProperties;
template <typename T, typename S> class QMap;
namespace KIO {
......@@ -255,7 +255,6 @@ public slots:
void slotStartCheckMail();
void slotEndCheckMail();
void slotCollectionProperties();
void slotRemoveDuplicates();
void slotSelectCollectionFolder( const Akonadi::Collection & col );
......@@ -299,8 +298,6 @@ protected slots:
void slotImport();
void slotCompose();
void slotPostToML();
void slotFolderMailingListProperties();
void slotShowFolderShortcutDialog();
void slotExpireFolder();
void slotExpireAll();
void slotArchiveFolder();
......@@ -416,7 +413,6 @@ protected slots:
void updateVacationScriptStatus(bool active , const QString &serverName = QString());
void slotShowExpiryProperties();
void slotItemAdded( const Akonadi::Item &, const Akonadi::Collection& col);
void slotItemRemoved( const Akonadi::Item & );
void slotItemMoved( const Akonadi::Item &item, const Akonadi::Collection &from, const Akonadi::Collection &to );
......@@ -497,8 +493,6 @@ private:
void showMessagePopup(const Akonadi::Item&msg ,const KUrl&aUrl,const KUrl &imageUrl,const QPoint& aPoint, bool contactAlreadyExists, bool uniqueContactFound);
void showCollectionProperties( const QString &pageToShow );
void showCollectionPropertiesContinued( const QString &pageToShow, QPointer<KPIM::ProgressItem> progressItem );
private slots:
void slotMoveMessageToTrash();
......@@ -524,8 +518,6 @@ private slots:
void itemsReceived(const Akonadi::Item::List &list );
void itemsFetchDone( KJob *job );
void slotCollectionPropertiesContinued( KJob* job );
void slotCollectionPropertiesFinished( KJob *job );
void slotDeletionCollectionResult(KJob* job);
void slotServerSideSubscription();
void slotFetchItemsForFolderDone(KJob*job);
......@@ -627,6 +619,7 @@ private:
MessageViewer::Viewer::DisplayFormatMessage mFolderDisplayFormatPreference;
KAction *mSearchMessages;
KMConfigureAgent *mConfigAgent;
ManageShowCollectionProperties *mManageShowCollectionProperties;
};
#endif
......
/*
Copyright (c) 2014 Montel Laurent <montel@kde.org>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "manageshowcollectionproperties.h"
#include "kmmainwidget.h"
#include <KLocalizedString>
#include <KMessageBox>
#include <akonadi/collectionattributessynchronizationjob.h>
#include <Solid/Networking>
#include <akonadi/collectionfetchjob.h>
#include <akonadi/collectionpropertiesdialog.h>
#include <Akonadi/CollectionFetchScope>
#include <Akonadi/AgentInstance>
#include <Akonadi/AgentManager>
Q_DECLARE_METATYPE(KPIM::ProgressItem*)
Q_DECLARE_METATYPE(Akonadi::Job*)
Q_DECLARE_METATYPE(QPointer<KPIM::ProgressItem>)
ManageShowCollectionProperties::ManageShowCollectionProperties(KMMainWidget *mainWidget, QObject *parent)
: QObject(parent),
mMainWidget(mainWidget)
{
}
ManageShowCollectionProperties::~ManageShowCollectionProperties()
{
}
void ManageShowCollectionProperties::slotCollectionProperties()
{
showCollectionProperties( QString() );
}
void ManageShowCollectionProperties::slotShowExpiryProperties()
{
showCollectionProperties( QLatin1String( "MailCommon::CollectionExpiryPage" ) );
}
void ManageShowCollectionProperties::slotFolderMailingListProperties()
{
showCollectionProperties( QLatin1String( "KMail::CollectionMailingListPage" ) );
}
void ManageShowCollectionProperties::slotShowFolderShortcutDialog()
{
showCollectionProperties( QLatin1String( "KMail::CollectionShortcutPage" ) );
}
void ManageShowCollectionProperties::showCollectionProperties( const QString &pageToShow )
{
if ( !mMainWidget->currentFolder() )
return;
if ( Solid::Networking::status() == Solid::Networking::Unconnected ) {
KMessageBox::information(
mMainWidget,
i18n( "Network is unconnected. Folder information cannot be updated." ) );
showCollectionPropertiesContinued( pageToShow, QPointer<KPIM::ProgressItem>() );
} else {
const Akonadi::AgentInstance agentInstance = Akonadi::AgentManager::self()->instance( mMainWidget->currentFolder()->collection().resource() );
bool isOnline = agentInstance.isOnline();
if (!isOnline) {
showCollectionPropertiesContinued( pageToShow, QPointer<KPIM::ProgressItem>() );
} else {
QPointer<KPIM::ProgressItem> progressItem( KPIM::ProgressManager::createProgressItem( i18n( "Retrieving folder properties" ) ) );
progressItem->setUsesBusyIndicator( true );
progressItem->setCryptoStatus(KPIM::ProgressItem::Unknown);
Akonadi::CollectionAttributesSynchronizationJob *sync
= new Akonadi::CollectionAttributesSynchronizationJob( mMainWidget->currentFolder()->collection() );
sync->setProperty( "collectionId", mMainWidget->currentFolder()->collection().id() );
sync->setProperty( "pageToShow", pageToShow ); // note for dialog later
sync->setProperty( "progressItem", QVariant::fromValue( progressItem ) );
connect( sync, SIGNAL(result(KJob*)),
this, SLOT(slotCollectionPropertiesContinued(KJob*)) );
connect( progressItem, SIGNAL(progressItemCanceled(KPIM::ProgressItem*)),
sync, SLOT(kill()) );
connect( progressItem, SIGNAL(progressItemCanceled(KPIM::ProgressItem*)),
KPIM::ProgressManager::instance(), SLOT(slotStandardCancelHandler(KPIM::ProgressItem*)) );
sync->start();
}
}
}
void ManageShowCollectionProperties::slotCollectionPropertiesContinued( KJob* job )
{
QString pageToShow;
QPointer<KPIM::ProgressItem> progressItem;
if ( job ) {
Akonadi::CollectionAttributesSynchronizationJob *sync
= dynamic_cast<Akonadi::CollectionAttributesSynchronizationJob *>( job );
Q_ASSERT( sync );
if ( sync->property( "collectionId" ) != mMainWidget->currentFolder()->collection().id() )
return;
pageToShow = sync->property( "pageToShow" ).toString();
progressItem = sync->property( "progressItem" ).value< QPointer<KPIM::ProgressItem> >();
if ( progressItem ) {
disconnect( progressItem, SIGNAL(progressItemCanceled(KPIM::ProgressItem*)),
sync, SLOT(kill()) );
} else {
// progressItem does not exist anymore, operation has been canceled
return;
}
}
showCollectionPropertiesContinued( pageToShow, progressItem );
}
void ManageShowCollectionProperties::showCollectionPropertiesContinued( const QString &pageToShow, QPointer<KPIM::ProgressItem> progressItem )
{
if ( !progressItem ) {
progressItem = KPIM::ProgressManager::createProgressItem( i18n( "Retrieving folder properties" ) );
progressItem->setUsesBusyIndicator( true );
progressItem->setCryptoStatus(KPIM::ProgressItem::Unknown);
connect( progressItem, SIGNAL(progressItemCanceled(KPIM::ProgressItem*)),
KPIM::ProgressManager::instance(), SLOT(slotStandardCancelHandler(KPIM::ProgressItem*)) );
}
Akonadi::CollectionFetchJob *fetch = new Akonadi::CollectionFetchJob( mMainWidget->currentFolder()->collection(),
Akonadi::CollectionFetchJob::Base );
connect( progressItem, SIGNAL(progressItemCanceled(KPIM::ProgressItem*)), fetch, SLOT(kill()) );
fetch->fetchScope().setIncludeStatistics( true );
fetch->setProperty( "pageToShow", pageToShow );
fetch->setProperty( "progressItem", QVariant::fromValue( progressItem ) );
connect( fetch, SIGNAL(result(KJob*)),
this, SLOT(slotCollectionPropertiesFinished(KJob*)) );
connect( progressItem, SIGNAL(progressItemCanceled(KPIM::ProgressItem*)),
fetch, SLOT(kill()) );
}
void ManageShowCollectionProperties::slotCollectionPropertiesFinished( KJob *job )
{
if ( !job )
return;
QPointer<KPIM::ProgressItem> progressItem = job->property( "progressItem" ).value< QPointer<KPIM::ProgressItem> >();
// progressItem does not exist anymore, operation has been canceled
if ( !progressItem ) {
return;
}
progressItem->setComplete();
progressItem->setStatus( i18n( "Done" ) );
Akonadi::CollectionFetchJob *fetch = dynamic_cast<Akonadi::CollectionFetchJob *>( job );
Q_ASSERT( fetch );
if ( fetch->collections().isEmpty() )
{
kWarning() << "no collection";
return;
}
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->setCaption( 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();
}
/*
Copyright (c) 2014 Montel Laurent <montel@kde.org>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef MANAGESHOWCOLLECTIONPROPERTIES_H
#define MANAGESHOWCOLLECTIONPROPERTIES_H
#include <QObject>
#include <QPointer>
#include <foldercollection.h>
#include <progresswidget/progressmanager.h>
class KJob;
class KMMainWidget;
class ManageShowCollectionProperties : public QObject
{
Q_OBJECT
public:
explicit ManageShowCollectionProperties(KMMainWidget *mainWidget, QObject *parent = 0);
~ManageShowCollectionProperties();
public slots:
void slotFolderMailingListProperties();
void slotShowFolderShortcutDialog();
void slotShowExpiryProperties();
void slotCollectionProperties();
private slots:
void slotCollectionPropertiesContinued(KJob *job);
void slotCollectionPropertiesFinished(KJob *job);
private:
void showCollectionProperties(const QString &pageToShow);
void showCollectionPropertiesContinued(const QString &pageToShow, QPointer<KPIM::ProgressItem> progressItem);
private:
KMMainWidget *mMainWidget;
};
#endif // MANAGESHOWCOLLECTIONPROPERTIES_H
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment