You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

128 lines
4.3 KiB

/*
This file is part of the KDE project
Copyright (C) 2003 Sven L<EFBFBD>ppken <sven@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "summaryview_plugin.h"
#include "summaryview_part.h"
#include "kmail-version.h"
#include "kmailinterface.h"
#include <KontactInterface/Core>
#include <KAboutData>
#include <KActionCollection>
#include <QIcon>
#include <KLocalizedString>
#include <KSelectAction>
#include <QMenu>
EXPORT_KONTACT_PLUGIN(SummaryView, summary)
SummaryView::SummaryView(KontactInterface::Core *core, const QVariantList &)
: KontactInterface::Plugin(core, core, nullptr), mPart(nullptr)
{
mSyncAction = new KSelectAction(QIcon::fromTheme(QStringLiteral("view-refresh")), i18n("Sync All"), this);
actionCollection()->addAction(QStringLiteral("kontact_summary_sync"), mSyncAction);
connect(mSyncAction, static_cast<void (KSelectAction::*)(const QString &)>(&KSelectAction::triggered), this, &SummaryView::syncAccount);
connect(mSyncAction->menu(), &QMenu::aboutToShow, this, &SummaryView::fillSyncActionSubEntries);
insertSyncAction(mSyncAction);
fillSyncActionSubEntries();
}
void SummaryView::fillSyncActionSubEntries()
{
QStringList menuItems;
menuItems.append(i18nc("@action:inmenu sync everything", "All"));
org::kde::kmail::kmail kmail(QStringLiteral("org.kde.kmail"), QStringLiteral("/KMail"), QDBusConnection::sessionBus());
const QDBusReply<QStringList> reply = kmail.accounts();
if (reply.isValid()) {
menuItems << reply.value();
}
mSyncAction->clear();
mSyncAction->setItems(menuItems);
}
void SummaryView::syncAccount(const QString &account)
{
if (account == i18nc("sync everything", "All")) {
doSync();
} else {
org::kde::kmail::kmail kmail(QStringLiteral("org.kde.kmail"), QStringLiteral("/KMail"),
QDBusConnection::sessionBus());
kmail.checkAccount(account);
}
fillSyncActionSubEntries();
}
SummaryView::~SummaryView()
{
}
void SummaryView::doSync()
{
if (mPart) {
mPart->updateSummaries();
}
const QList<KontactInterface::Plugin *> pluginList = core()->pluginList();
for (const KontactInterface::Plugin *i : pluginList) {
// execute all sync actions but our own
const QList<QAction *> actList = i->syncActions();
for (QAction *j : actList ) {
if (j != mSyncAction) {
j->trigger();
}
}
}
fillSyncActionSubEntries();
}
KParts::ReadOnlyPart *SummaryView::createPart()
{
mPart = new SummaryViewPart(core(), aboutData(), this);
mPart->setObjectName(QStringLiteral("summaryPart"));
return mPart;
}
const KAboutData SummaryView::aboutData()
{
KAboutData aboutData = KAboutData(
QStringLiteral("kontactsummary"),
i18n("Kontact Summary"),
QStringLiteral(KDEPIM_VERSION),
i18n("Kontact Summary View"),
KAboutLicense::LGPL,
i18n("(c) 2003-2017 The Kontact developers"));
aboutData.addAuthor(i18n("Sven Lueppken"),
QString(), QStringLiteral("sven@kde.org"));
aboutData.addAuthor(i18n("Cornelius Schumacher"),
QString(), QStringLiteral("schumacher@kde.org"));
aboutData.addAuthor(i18n("Tobias Koenig"),
QString(), QStringLiteral("tokoe@kde.org"));
aboutData.setProductName(QByteArrayLiteral("kontact/summary"));
return aboutData;
}
#include "summaryview_plugin.moc"