From 6db39d7067244d18a17698eb072b8705786617b4 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Thu, 24 Aug 2023 02:44:12 +0300 Subject: [PATCH] kvkbd: port to KStatusNotifierItem Signed-off-by: Ivailo Monev --- kvkbd/CMakeLists.txt | 1 - kvkbd/pics/CMakeLists.txt | 1 - kvkbd/pics/tray.png | Bin 348 -> 0 bytes kvkbd/src/kbdtray.cpp | 39 +++++--------------------------------- kvkbd/src/kbdtray.h | 20 +++++-------------- kvkbd/src/kvkbdapp.cpp | 5 +++-- kvkbd/src/main.cpp | 1 + 7 files changed, 14 insertions(+), 53 deletions(-) delete mode 100644 kvkbd/pics/CMakeLists.txt delete mode 100644 kvkbd/pics/tray.png diff --git a/kvkbd/CMakeLists.txt b/kvkbd/CMakeLists.txt index 90ff15aa..ea7d2733 100644 --- a/kvkbd/CMakeLists.txt +++ b/kvkbd/CMakeLists.txt @@ -10,7 +10,6 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) endif() add_subdirectory( src ) -add_subdirectory( pics ) add_subdirectory( colors ) add_subdirectory( themes ) diff --git a/kvkbd/pics/CMakeLists.txt b/kvkbd/pics/CMakeLists.txt deleted file mode 100644 index b033a9d9..00000000 --- a/kvkbd/pics/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -install( FILES tray.png DESTINATION ${KDE4_DATA_INSTALL_DIR}/kvkbd/pics) diff --git a/kvkbd/pics/tray.png b/kvkbd/pics/tray.png deleted file mode 100644 index d398787416f707967a7a030c4725769f2b736364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmV-i0i*tjP)$4Y`~6&S`GP1$5O;mKoOa{6vB z{P&TjX^Jt1rfCona?VWCMAvmMVagc8e!s^#hlmhD;CMW;-EOhgRx_ow#yQ6@3@D}W z-qW@%&Nto z0f;ejI2=Ctt7W_04mAt|tJUh|?!EVDtx@Om`B&VB5Xd=y{|0^EQ%b2~m&*l}QeqrO zoO1xnEsx`fwYHimtu@x#FFs$z-Z^;Zpe+Bp)*2CEp6938(>Yk$NrY0$kJ!T;h)7js uKFmSwf~Au`+~u6P-EQ=Kzx3*#o;&bUPGwtX8*Tsq002ovPDHLkV1f$kSe%jo diff --git a/kvkbd/src/kbdtray.cpp b/kvkbd/src/kbdtray.cpp index 60cd8449..a060cd70 100644 --- a/kvkbd/src/kbdtray.cpp +++ b/kvkbd/src/kbdtray.cpp @@ -20,41 +20,12 @@ #include "kbdtray.h" -#include -#include -#include -#include -#include -#include -#include -#include - -// TODO: find a way to hide the widget before asking for quit -KbdTray::KbdTray(QWidget* parent) : KSystemTrayIcon(parent) +KbdTray::KbdTray(QWidget* parent) + : KStatusNotifierItem(parent) { - setObjectName("KvkbdTray"); - setIcon(UserIcon("tray")); - - QAction *titleAction = contextMenuTitle(); - titleAction->setText("Kvkbd"); - - connect(this, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(activationHandler(QSystemTrayIcon::ActivationReason))); + setTitle("Kvkbd"); + setIconByName("input-keyboard"); + connect(this, SIGNAL(activateRequested(bool,QPoint)), this, SIGNAL(requestVisibility())); } -KbdTray::~KbdTray() -{ - -} - -QMenu* KbdTray::getContextMenu() -{ - return this->contextMenu(); - -} -void KbdTray::activationHandler(QSystemTrayIcon::ActivationReason reason) -{ - if (reason == QSystemTrayIcon::Trigger) { - emit requestVisibility(); - } -} diff --git a/kvkbd/src/kbdtray.h b/kvkbd/src/kbdtray.h index 8237d969..c3416426 100644 --- a/kvkbd/src/kbdtray.h +++ b/kvkbd/src/kbdtray.h @@ -19,27 +19,17 @@ #ifndef KBDTRAY_H #define KBDTRAY_H -#include -#include -#include -#include +#include +#include -class KbdTray : public KSystemTrayIcon +class KbdTray : public KStatusNotifierItem { Q_OBJECT - public: - explicit KbdTray(QWidget* parent = 0); - ~KbdTray(); - QMenu* getContextMenu(); + explicit KbdTray(QWidget *parent = nullptr); -public slots: - void activationHandler(QSystemTrayIcon::ActivationReason reason); - - -signals: +Q_SIGNALS: void requestVisibility(); - }; diff --git a/kvkbd/src/kvkbdapp.cpp b/kvkbd/src/kvkbdapp.cpp index 159b0327..e3ec2852 100644 --- a/kvkbd/src/kvkbdapp.cpp +++ b/kvkbd/src/kvkbdapp.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include @@ -86,7 +87,7 @@ KvkbdApp::KvkbdApp(bool loginhelper) : KUniqueApplication(), is_login(loginhelpe connect(themeLoader, SIGNAL(partLoaded(MainWidget*, int, int)), this, SLOT(partLoaded(MainWidget*, int, int))); connect(themeLoader, SIGNAL(buttonLoaded(VButton*)), this, SLOT(buttonLoaded(VButton*))); - QMenu *cmenu = tray->contextMenu(); + KMenu *cmenu = tray->contextMenu(); KAction *chooseFontAction = new KAction(KIcon("preferences-desktop-font"), i18nc("@action:inmenu", "Choose Font..."), this); connect(chooseFontAction, SIGNAL(triggered(bool)), this, SLOT(chooseFont()) ); @@ -200,7 +201,7 @@ KvkbdApp::KvkbdApp(bool loginhelper) : KUniqueApplication(), is_login(loginhelpe widget->showMinimized(); } widget->setWindowTitle("kvkbd"); - tray->show(); + tray->setStatus(KStatusNotifierItem::Active); } else { QTimer *timer = new QTimer(this); timer->setInterval(1000); diff --git a/kvkbd/src/main.cpp b/kvkbd/src/main.cpp index b55d6b73..db872352 100644 --- a/kvkbd/src/main.cpp +++ b/kvkbd/src/main.cpp @@ -66,6 +66,7 @@ void findLoginWindow() int main(int argc, char **argv) { + setenv("KSNI_NO_DBUSMENU", "1", 1); KAboutData about("kvkbd", 0, ki18n("Kvkbd"), version, ki18n(description), KAboutData::License_LGPL_V3, ki18n("(C) 2007-2014 The Kvkbd Developers"));