File indexing completed on 2024-05-05 17:45:18

0001 /*
0002     SPDX-FileCopyrightText: 2007-2010 John Tapsell <johnflux@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-only
0005 */
0006 
0007 #ifndef Q_WS_WIN
0008 
0009 #include "ksystemactivitydialog.h"
0010 
0011 #include "processui/ksysguardprocesslist.h"
0012 
0013 #include <QAction>
0014 #include <QCloseEvent>
0015 #include <QDBusConnection>
0016 #include <QIcon>
0017 #include <QLineEdit>
0018 #include <QString>
0019 #include <QVBoxLayout>
0020 
0021 #include <KLocalizedString>
0022 #include <KSharedConfig>
0023 #include <KX11Extras>
0024 
0025 KSystemActivityDialog::KSystemActivityDialog(QWidget *parent)
0026     : KMainWindow(parent)
0027     , m_configGroup(KSharedConfig::openConfig()->group("TaskDialog"))
0028 {
0029     setAutoSaveSettings();
0030 
0031     m_processList = new KSysGuardProcessList;
0032     m_processList->setScriptingEnabled(true);
0033 
0034     QVBoxLayout *mainLayout = new QVBoxLayout;
0035     mainLayout->addWidget(m_processList);
0036 
0037     QWidget *mainWidget = new QWidget;
0038     mainWidget->setLayout(mainLayout);
0039     setCentralWidget(mainWidget);
0040 
0041     QAction *closeAction = new QAction;
0042     closeAction->setShortcuts({QKeySequence::Quit, Qt::Key_Escape});
0043     connect(closeAction, &QAction::triggered, this, &KSystemActivityDialog::close);
0044     addAction(closeAction);
0045 
0046     m_processList->loadSettings(m_configGroup);
0047 
0048     QDBusConnection con = QDBusConnection::sessionBus();
0049     con.registerObject(QStringLiteral("/"), this, QDBusConnection::ExportAllSlots);
0050 }
0051 
0052 void KSystemActivityDialog::run()
0053 {
0054     show();
0055     raise();
0056     KX11Extras::setOnDesktop(winId(), KX11Extras::currentDesktop());
0057     KX11Extras::forceActiveWindow(winId());
0058 }
0059 
0060 void KSystemActivityDialog::setFilterText(const QString &filterText)
0061 {
0062     m_processList->filterLineEdit()->setText(filterText);
0063     m_processList->filterLineEdit()->setFocus();
0064 }
0065 
0066 QString KSystemActivityDialog::filterText() const
0067 {
0068     return m_processList->filterLineEdit()->text();
0069 }
0070 
0071 void KSystemActivityDialog::closeEvent(QCloseEvent *event)
0072 {
0073     m_processList->saveSettings(m_configGroup);
0074     KSharedConfig::openConfig()->sync();
0075 
0076     KMainWindow::closeEvent(event);
0077 }
0078 
0079 QSize KSystemActivityDialog::sizeHint() const
0080 {
0081     return QSize(650, 420);
0082 }
0083 
0084 #endif // not Q_WS_WIN