File indexing completed on 2024-05-12 05:20:37
0001 /* 0002 0003 This file is part of KMail. 0004 SPDX-FileCopyrightText: 2002-2003 Don Sanders <sanders@kde.org>, 0005 SPDX-FileCopyrightText: 2003 Zack Rusin <zack@kde.org>, 0006 Based on the work of Cornelius Schumacher <schumacher@kde.org> 0007 0008 SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0 0009 */ 0010 0011 #include "kmail_part.h" 0012 0013 #include "kmmainwidget.h" 0014 0015 #include <QVBoxLayout> 0016 0017 #include "foldershortcutactionmanager.h" 0018 #include "kmail_debug.h" 0019 #include "tag/tagactionmanager.h" 0020 #include <Akonadi/ChangeRecorder> 0021 #include <Akonadi/Collection> 0022 #include <Akonadi/EntityDisplayAttribute> 0023 #include <KLocalizedString> 0024 #include <KParts/GUIActivateEvent> 0025 #include <KPluginFactory> 0026 #include <KSharedConfig> 0027 #include <MailCommon/FolderTreeView> 0028 #include <kmailpartadaptor.h> 0029 #include <kparts/mainwindow.h> 0030 #include <kparts/statusbarextension.h> 0031 0032 K_PLUGIN_FACTORY(KMailFactory, registerPlugin<KMailPart>();) 0033 0034 using namespace KMail; 0035 0036 KMailPart::KMailPart(QWidget *parentWidget, QObject *parent, const KPluginMetaData &data, const QVariantList &) 0037 : KParts::ReadOnlyPart(parent, data) 0038 { 0039 setComponentName(QStringLiteral("kmail2"), i18n("KMail2")); 0040 // local, do the init 0041 auto mKMailKernel = new KMKernel(); 0042 mKMailKernel->init(); 0043 mKMailKernel->setXmlGuiInstanceName(QStringLiteral("kmail2")); 0044 0045 // and session management 0046 mKMailKernel->doSessionManagement(); 0047 0048 // any dead letters? 0049 mKMailKernel->recoverDeadLetters(); 0050 0051 kmkernel->setupDBus(); // Ok. We are ready for D-Bus requests. 0052 (void)new KmailpartAdaptor(this); 0053 QDBusConnection::sessionBus().registerObject(QStringLiteral("/KMailPart"), this); 0054 0055 // create a canvas to insert our widget 0056 auto canvas = new QWidget(parentWidget); 0057 canvas->setFocusPolicy(Qt::ClickFocus); 0058 canvas->setObjectName(QLatin1StringView("canvas")); 0059 setWidget(canvas); 0060 mainWidget = new KMMainWidget(canvas, this, actionCollection(), KSharedConfig::openConfig()); 0061 mainWidget->setObjectName(QLatin1StringView("partmainwidget")); 0062 auto topLayout = new QVBoxLayout(canvas); 0063 topLayout->addWidget(mainWidget); 0064 topLayout->setContentsMargins({}); 0065 mainWidget->setFocusPolicy(Qt::ClickFocus); 0066 auto statusBar = new KParts::StatusBarExtension(this); 0067 statusBar->addStatusBarItem(mainWidget->vacationScriptIndicator(), 2, false); 0068 statusBar->addStatusBarItem(mainWidget->zoomLabelIndicator(), 3, false); 0069 statusBar->addStatusBarItem(mainWidget->dkimWidgetInfo(), 4, false); 0070 0071 setXMLFile(QStringLiteral("kmail_part.rc"), true); 0072 connect(mainWidget, &KMMainWidget::captionChangeRequest, this, &KMailPart::setWindowCaption); 0073 } 0074 0075 KMailPart::~KMailPart() 0076 { 0077 qCDebug(KMAIL_LOG) << "Closing last KMMainWin: stopping mail check"; 0078 // Running KIO jobs prevent kapp from exiting, so we need to kill them 0079 // if they are only about checking mail (not important stuff like moving messages) 0080 mainWidget->destruct(); 0081 kmkernel->cleanup(); 0082 delete kmkernel; 0083 } 0084 0085 void KMailPart::updateQuickSearchText() 0086 { 0087 mainWidget->updateQuickSearchLineText(); 0088 } 0089 0090 bool KMailPart::openFile() 0091 { 0092 return true; 0093 } 0094 0095 //----------------------------------------------------------------------------- 0096 0097 void KMailPart::guiActivateEvent(KParts::GUIActivateEvent *e) 0098 { 0099 KParts::ReadOnlyPart::guiActivateEvent(e); 0100 if (e->activated()) { 0101 mainWidget->initializeFilterActions(true); 0102 mainWidget->tagActionManager()->createActions(); 0103 mainWidget->folderShortcutActionManager()->createActions(); 0104 mainWidget->populateMessageListStatusFilterCombo(); 0105 mainWidget->initializePluginActions(); 0106 0107 const QString title = mainWidget->fullCollectionPath(); 0108 if (!title.isEmpty()) { 0109 Q_EMIT setWindowCaption(title); 0110 } 0111 } 0112 } 0113 0114 void KMailPart::exit() 0115 { 0116 delete this; 0117 } 0118 0119 void KMailPart::save() 0120 { 0121 /*TODO*/ 0122 } 0123 0124 #include "kmail_part.moc" 0125 0126 #include "moc_kmail_part.cpp"