File indexing completed on 2024-05-19 05:13:17

0001 /*
0002     This file is part of Akonadi.
0003 
0004     SPDX-FileCopyrightText: 2006 Tobias Koenig <tokoe@kde.org>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "mainwidget.h"
0010 
0011 #include "agentwidget.h"
0012 #include "config-akonadiconsole.h"
0013 #include "dbbrowser.h"
0014 #include "dbconsole.h"
0015 #include "debugwidget.h"
0016 #if ENABLE_SEARCH
0017 #include "searchwidget.h"
0018 #endif
0019 #include "jobtrackerwidget.h"
0020 #include "logging.h"
0021 #include "monitorswidget.h"
0022 #include "notificationmonitor.h"
0023 #include "querydebugger.h"
0024 
0025 #include <Akonadi/AgentFilterProxyModel>
0026 #include <Akonadi/AgentInstanceWidget>
0027 #include <Akonadi/ControlGui>
0028 #include <Akonadi/SearchCreateJob>
0029 #include <Akonadi/ServerManager>
0030 
0031 #include <KActionCollection>
0032 #include <KLocalizedString>
0033 #include <KXmlGuiWindow>
0034 #include <QAction>
0035 #include <QTabWidget>
0036 
0037 #include <QVBoxLayout>
0038 
0039 MainWidget::MainWidget(KXmlGuiWindow *parent)
0040     : QWidget(parent)
0041 {
0042     auto layout = new QVBoxLayout(this);
0043 
0044     auto tabWidget = new QTabWidget(this);
0045     tabWidget->setObjectName(QLatin1StringView("mainTab"));
0046     layout->addWidget(tabWidget);
0047 
0048     tabWidget->addTab(new AgentWidget(tabWidget), i18n("Agents"));
0049     mBrowser = new BrowserWidget(parent, tabWidget);
0050     tabWidget->addTab(mBrowser, i18n("Browser"));
0051     tabWidget->addTab(new DebugWidget(tabWidget), i18n("Debugger"));
0052     tabWidget->addTab(new Logging(tabWidget), i18n("Logging"));
0053     tabWidget->addTab(new DbBrowser(tabWidget), i18n("DB Browser"));
0054     tabWidget->addTab(new DbConsole(tabWidget), i18n("DB Console"));
0055     tabWidget->addTab(new QueryDebugger(tabWidget), i18n("Query Debugger"));
0056     tabWidget->addTab(new JobTrackerWidget("jobtracker", tabWidget, i18n("Enable job tracker")), i18n("Job Tracker"));
0057     tabWidget->addTab(new JobTrackerWidget("resourcesJobtracker", tabWidget, i18n("Enable tracking of Resource Schedulers")), i18n("Resources Schedulers"));
0058     tabWidget->addTab(new NotificationMonitor(tabWidget), i18n("Notification Monitor"));
0059 #if ENABLE_SEARCH
0060     tabWidget->addTab(new SearchWidget(tabWidget), i18n("Item Search"));
0061 #endif
0062     tabWidget->addTab(new MonitorsWidget(tabWidget), i18n("Monitors"));
0063 
0064     auto action = parent->actionCollection()->addAction(QStringLiteral("akonadiconsole_akonadi2xml"));
0065     action->setText(i18n("Dump to XML..."));
0066     connect(action, &QAction::triggered, mBrowser, &BrowserWidget::dumpToXml);
0067 
0068     action = parent->actionCollection()->addAction(QStringLiteral("akonadiconsole_clearcache"));
0069     action->setText(i18n("Clear Akonadi Cache"));
0070     connect(action, &QAction::triggered, mBrowser, &BrowserWidget::clearCache);
0071 
0072     action = parent->actionCollection()->addAction(QStringLiteral("akonadiserver_start"));
0073     action->setText(i18n("Start Server"));
0074     connect(action, &QAction::triggered, this, &MainWidget::startServer);
0075 
0076     action = parent->actionCollection()->addAction(QStringLiteral("akonadiserver_stop"));
0077     action->setText(i18n("Stop Server"));
0078     connect(action, &QAction::triggered, this, &MainWidget::stopServer);
0079 
0080     action = parent->actionCollection()->addAction(QStringLiteral("akonadiserver_restart"));
0081     action->setText(i18n("Restart Server"));
0082     connect(action, &QAction::triggered, this, &MainWidget::restartServer);
0083 }
0084 
0085 MainWidget::~MainWidget()
0086 {
0087     delete mBrowser;
0088 }
0089 
0090 void MainWidget::startServer()
0091 {
0092     Akonadi::ServerManager::start();
0093 }
0094 
0095 void MainWidget::stopServer()
0096 {
0097     Akonadi::ServerManager::stop();
0098 }
0099 
0100 void MainWidget::restartServer()
0101 {
0102     Akonadi::ControlGui::restart(this);
0103 }
0104 
0105 #include "moc_mainwidget.cpp"