File indexing completed on 2024-12-22 03:45:39
0001 /* 0002 This file is part of the KDE libraries 0003 SPDX-FileCopyrightText: 2009 Marco Martin <notmart@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "kstatusnotifieritemtest.h" 0009 0010 #include "kstatusnotifieritem.h" 0011 #include <QApplication> 0012 #include <QLabel> 0013 #include <QMenu> 0014 0015 #include <QCommandLineParser> 0016 0017 #include <QDebug> 0018 0019 KStatusNotifierItemTest::KStatusNotifierItemTest(QObject *parent, KStatusNotifierItem *tray) 0020 : QObject(parent) 0021 { 0022 QMenu *menu = tray->contextMenu(); 0023 m_tray = tray; 0024 0025 QAction *needsAttention = new QAction(QStringLiteral("Set needs attention"), menu); 0026 QAction *active = new QAction(QStringLiteral("Set active"), menu); 0027 QAction *passive = new QAction(QStringLiteral("Set passive"), menu); 0028 0029 menu->addAction(needsAttention); 0030 menu->addAction(active); 0031 menu->addAction(passive); 0032 0033 connect(needsAttention, &QAction::triggered, this, &KStatusNotifierItemTest::setNeedsAttention); 0034 connect(active, &QAction::triggered, this, &KStatusNotifierItemTest::setActive); 0035 connect(passive, &QAction::triggered, this, &KStatusNotifierItemTest::setPassive); 0036 } 0037 0038 void KStatusNotifierItemTest::setNeedsAttention() 0039 { 0040 qDebug() << "Asking for attention"; 0041 m_tray->showMessage(QStringLiteral("message test"), QStringLiteral("Test of the new systemtray notifications wrapper"), QStringLiteral("konqueror"), 3000); 0042 m_tray->setStatus(KStatusNotifierItem::NeedsAttention); 0043 } 0044 0045 void KStatusNotifierItemTest::setActive() 0046 { 0047 qDebug() << "Systray icon in active state"; 0048 m_tray->setStatus(KStatusNotifierItem::Active); 0049 } 0050 0051 void KStatusNotifierItemTest::setPassive() 0052 { 0053 qDebug() << "Systray icon in passive state"; 0054 m_tray->setStatus(KStatusNotifierItem::Passive); 0055 } 0056 0057 int main(int argc, char **argv) 0058 { 0059 QApplication app(argc, argv); 0060 0061 int ksniCount; 0062 QString iconName; 0063 { 0064 QCommandLineParser parser; 0065 parser.setApplicationDescription(QCoreApplication::translate("main", "KStatusNotifierItemtest")); 0066 parser.addHelpOption(); 0067 parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("active-icon"), 0068 QCoreApplication::translate("main", "Name of active icon"), 0069 QStringLiteral("name"), 0070 QStringLiteral("konqueror"))); 0071 parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("ksni-count"), 0072 QCoreApplication::translate("main", "How many instances of KStatusNotifierItem to create"), 0073 QStringLiteral("count"), 0074 QStringLiteral("1"))); 0075 parser.process(app); 0076 0077 if (parser.positionalArguments().count() != 0) { 0078 parser.showHelp(); 0079 return (1); 0080 } 0081 ksniCount = parser.value(QStringLiteral("ksni-count")).toInt(); 0082 iconName = parser.value(QStringLiteral("active-icon")); 0083 } 0084 0085 if (!iconName.isEmpty()) { 0086 app.setWindowIcon(QIcon::fromTheme(iconName)); 0087 } 0088 0089 QLabel *l = new QLabel(QStringLiteral("System Tray Main Window"), nullptr); 0090 for (int x = 0; x < ksniCount; ++x) { 0091 KStatusNotifierItem *tray = new KStatusNotifierItem(l); 0092 0093 new KStatusNotifierItemTest(nullptr, tray); 0094 0095 tray->setTitle(QStringLiteral("DBus System tray test")); 0096 tray->setIconByName(iconName); 0097 // tray->setIconByPixmap(QIcon::fromTheme("konqueror")); 0098 // tray->setAttentionIconByName("kmail"); 0099 tray->setOverlayIconByName(QStringLiteral("emblem-important")); 0100 tray->setStatus(KStatusNotifierItem::Active); 0101 0102 tray->setToolTipIconByName(QStringLiteral("konqueror")); 0103 tray->setToolTipTitle(QStringLiteral("DBus System tray test")); 0104 tray->setToolTipSubTitle(QStringLiteral("This is a test of the new systemtray specification")); 0105 0106 tray->setToolTip(QStringLiteral("konqueror"), 0107 QStringLiteral("DBus System tray test #%1").arg(x + 1), 0108 QStringLiteral("This is a test of the new systemtray specification")); 0109 0110 tray->showMessage(QStringLiteral("message test"), 0111 QStringLiteral("Test of the new systemtray notifications wrapper"), 0112 QStringLiteral("konqueror"), 0113 3000); 0114 // tray->setStandardActionsEnabled(false); 0115 } 0116 0117 return app.exec(); 0118 } 0119 0120 #include "moc_kstatusnotifieritemtest.cpp"