From 162c54aae4c2b1e472893341956341989681959d Mon Sep 17 00:00:00 2001 From: thunder2 Date: Fri, 26 Nov 2010 00:54:18 +0000 Subject: [PATCH] Added a combined notify icon in systray. You can enable/disable this in the NotifyPage. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3871 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- retroshare-gui/src/gui/MainWindow.cpp | 356 +++++++++++++++--- retroshare-gui/src/gui/MainWindow.h | 22 +- retroshare-gui/src/gui/images.qrc | 1 + retroshare-gui/src/gui/images/rstray_new.png | Bin 0 -> 1281 bytes .../src/gui/settings/NotifyPage.cpp | 4 + retroshare-gui/src/gui/settings/NotifyPage.ui | 16 +- .../src/gui/settings/rsharesettings.h | 14 +- retroshare-gui/src/lang/retroshare_de.qm | Bin 275626 -> 276143 bytes retroshare-gui/src/lang/retroshare_de.ts | 113 ++++-- 9 files changed, 413 insertions(+), 113 deletions(-) create mode 100644 retroshare-gui/src/gui/images/rstray_new.png diff --git a/retroshare-gui/src/gui/MainWindow.cpp b/retroshare-gui/src/gui/MainWindow.cpp index 12d534786..b8de7244c 100644 --- a/retroshare-gui/src/gui/MainWindow.cpp +++ b/retroshare-gui/src/gui/MainWindow.cpp @@ -158,6 +158,18 @@ MainWindow::MainWindow(QWidget* parent, Qt::WFlags flags) m_bStatusLoadDone = false; isIdle = false; + trayIconCombined = NULL; + trayIconMessages = NULL; + trayIconForums = NULL; + trayIconChannels = NULL; + trayIconChat = NULL; + trayIconTransfers = NULL; + trayActionMessages = NULL; + trayActionForums = NULL; + trayActionChannels = NULL; + trayActionChat = NULL; + trayActionTransfers = NULL; + setWindowTitle(tr("RetroShare %1 a secure decentralised communication platform").arg(retroshareVersion())); /* add url handler for RetroShare links */ @@ -298,12 +310,6 @@ MainWindow::MainWindow(QWidget* parent, Qt::WFlags flags) /* Set focus to the current page */ ui.stackPages->currentWidget()->setFocus(); - /* call once */ - updateMessages(); - updateForums(); - updateChannels(NOTIFY_TYPE_ADD); - privateChatChanged(NOTIFY_LIST_PRIVATE_INCOMING_CHAT, NOTIFY_TYPE_ADD); - idle = new Idle(); idle->start(); connect(idle, SIGNAL(secondsIdle(int)), this, SLOT(checkAndSetIdle(int))); @@ -357,7 +363,7 @@ void MainWindow::displayDiskSpaceWarning(int loc,int size_limit_mb) void MainWindow::createTrayIcon() { /** Tray icon Menu **/ - trayMenu = new QMenu(this); + QMenu *trayMenu = new QMenu(this); QObject::connect(trayMenu, SIGNAL(aboutToShow()), this, SLOT(updateMenu())); toggleVisibilityAction = trayMenu->addAction(QIcon(IMAGE_RETROSHARE), tr("Show/Hide"), this, SLOT(toggleVisibilitycontextmenu())); @@ -390,30 +396,135 @@ void MainWindow::createTrayIcon() connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(toggleVisibility(QSystemTrayIcon::ActivationReason))); trayIcon->show(); - // Create the tray icon for messages - trayIconMessages = new QSystemTrayIcon(this); - trayIconMessages->setIcon(QIcon(":/images/newmsg.png")); - connect(trayIconMessages, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconMessagesClicked(QSystemTrayIcon::ActivationReason))); + createNotifyIcons(); +} - // Create the tray icon for forums - trayIconForums = new QSystemTrayIcon(this); - trayIconForums->setIcon(QIcon(":/images/konversation16.png")); - connect(trayIconForums, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconForumsClicked(QSystemTrayIcon::ActivationReason))); +void MainWindow::createNotifyIcons() +{ +#define DELETE_ICON(x) if (x) { delete(x); x = NULL; } - // Create the tray icon for channels - trayIconChannels = new QSystemTrayIcon(this); - trayIconChannels->setIcon(QIcon(":/images/channels16.png")); - connect(trayIconChannels, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconChannelsClicked(QSystemTrayIcon::ActivationReason))); + int notifyFlag = Settings->getTrayNotifyFlags(); - // Create the tray icon for chat - trayIconChat = new QSystemTrayIcon(this); - trayIconChat->setIcon(QIcon(":/images/chat.png")); - connect(trayIconChat, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconChatClicked(QSystemTrayIcon::ActivationReason))); + QMenu *trayMenu = NULL; - // Create the tray icon for transfers - trayIconTransfers = new QSystemTrayIcon(this); - trayIconTransfers->setIcon(QIcon(":/images/ktorrent32.png")); - connect(trayIconTransfers, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconTransfersClicked(QSystemTrayIcon::ActivationReason))); + /* Delete combined systray icon and rebuild it */ + trayActionMessages = NULL; + trayActionForums = NULL; + trayActionChannels = NULL; + trayActionChat = NULL; + trayActionTransfers = NULL; + DELETE_ICON(trayIconCombined); + + if (notifyFlag & TRAYNOTIFY_COMBINEDICON) { + /* Delete single systray icons */ + DELETE_ICON(trayIconMessages); + DELETE_ICON(trayIconForums); + DELETE_ICON(trayIconChannels); + DELETE_ICON(trayIconChat); + DELETE_ICON(trayIconTransfers); + + /* Create combined systray icon */ + trayIconCombined = new QSystemTrayIcon(this); + trayIconCombined->setIcon(QIcon(":/images/rstray_new.png")); + + trayMenu = new QMenu(this); + trayIconCombined->setContextMenu(trayMenu); + } + + /* Create systray icons or actions */ + if (notifyFlag & TRAYNOTIFY_MESSAGES) { + if (trayMenu) { + DELETE_ICON(trayIconMessages); + + trayActionMessages = trayMenu->addAction(QIcon(":/images/newmsg.png"), "", this, SLOT(trayIconMessagesClicked())); + trayActionMessages->setVisible(false); + trayActionMessages->setData(tr("Messages")); + } else if (trayIconMessages == NULL) { + // Create the tray icon for messages + trayIconMessages = new QSystemTrayIcon(this); + trayIconMessages->setIcon(QIcon(":/images/newmsg.png")); + connect(trayIconMessages, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconMessagesClicked(QSystemTrayIcon::ActivationReason))); + } + } else { + DELETE_ICON(trayIconMessages); + } + + if (notifyFlag & TRAYNOTIFY_FORUMS) { + if (trayMenu) { + DELETE_ICON(trayIconForums); + + trayActionForums = trayMenu->addAction(QIcon(":/images/konversation16.png"), "", this, SLOT(trayIconForumsClicked())); + trayActionForums->setVisible(false); + trayActionForums->setData(tr("Forums")); + } else if (trayIconForums == NULL) { + // Create the tray icon for forums + trayIconForums = new QSystemTrayIcon(this); + trayIconForums->setIcon(QIcon(":/images/konversation16.png")); + connect(trayIconForums, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconForumsClicked(QSystemTrayIcon::ActivationReason))); + } + } else { + DELETE_ICON(trayIconForums); + } + + if (notifyFlag & TRAYNOTIFY_CHANNELS) { + if (trayMenu) { + DELETE_ICON(trayIconChannels); + + trayActionChannels = trayMenu->addAction(QIcon(":/images/channels16.png"), "", this, SLOT(trayIconChannelsClicked())); + trayActionChannels->setVisible(false); + trayActionChannels->setData(tr("Channels")); + } else if (trayIconChannels == NULL) { + // Create the tray icon for channels + trayIconChannels = new QSystemTrayIcon(this); + trayIconChannels->setIcon(QIcon(":/images/channels16.png")); + connect(trayIconChannels, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconChannelsClicked(QSystemTrayIcon::ActivationReason))); + } + } else { + DELETE_ICON(trayIconChannels); + } + + if (notifyFlag & TRAYNOTIFY_PRIVATECHAT) { + if (trayMenu) { + DELETE_ICON(trayIconChat); + + trayActionChat = trayMenu->addAction(QIcon(":/images/chat.png"), "", this, SLOT(trayIconChatClicked())); + trayActionChat->setVisible(false); + trayActionChat->setData(tr("Chat")); + } else if (trayIconChat == NULL) { + // Create the tray icon for chat + trayIconChat = new QSystemTrayIcon(this); + trayIconChat->setIcon(QIcon(":/images/chat.png")); + connect(trayIconChat, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconChatClicked(QSystemTrayIcon::ActivationReason))); + } + } else { + DELETE_ICON(trayIconChat); + } + + if (notifyFlag & TRAYNOTIFY_TRANSFERS) { + if (trayMenu) { + DELETE_ICON(trayIconTransfers); + + trayActionTransfers = trayMenu->addAction(QIcon(":/images/ktorrent32.png"), "", this, SLOT(trayIconTransfersClicked())); + trayActionTransfers->setVisible(false); + trayActionTransfers->setData(tr("Transfers")); + } else if (trayIconTransfers == NULL) { + // Create the tray icon for transfers + trayIconTransfers = new QSystemTrayIcon(this); + trayIconTransfers->setIcon(QIcon(":/images/ktorrent32.png")); + connect(trayIconTransfers, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconTransfersClicked(QSystemTrayIcon::ActivationReason))); + } + } else { + DELETE_ICON(trayIconTransfers); + } + + /* call once */ + updateMessages(); + updateForums(); + updateChannels(NOTIFY_TYPE_ADD); + privateChatChanged(NOTIFY_LIST_PRIVATE_INCOMING_CHAT, NOTIFY_TYPE_ADD); + // transfer + +#undef DELETE_ICON } /*static*/ void MainWindow::installGroupChatNotifier() @@ -430,6 +541,16 @@ void MainWindow::createTrayIcon() } } +/*static*/ void MainWindow::installNotifyIcons() +{ + if (_instance == NULL) { + // nothing to do + return; + } + + _instance->createNotifyIcons(); +} + void MainWindow::displaySystrayMsg(const QString& title,const QString& msg) { trayIcon->showMessage(title, msg, QSystemTrayIcon::Information, 3000); @@ -446,16 +567,33 @@ void MainWindow::updateMessages() messageAction->setIcon(QIcon(QPixmap(":/images/evolution.png"))) ; } - if (newInboxCount && (Settings->getTrayNotifyFlags() & TRAYNOTIFY_MESSAGES)) { - if (newInboxCount > 1) { - trayIconMessages->setToolTip(tr("RetroShare") + "\n" + tr("You have %1 new messages").arg(newInboxCount)); + if (trayIconMessages) { + if (newInboxCount) { + if (newInboxCount > 1) { + trayIconMessages->setToolTip("RetroShare\n" + tr("You have %1 new messages").arg(newInboxCount)); + } else { + trayIconMessages->setToolTip("RetroShare\n" + tr("You have %1 new message").arg(newInboxCount)); + } + trayIconMessages->show(); } else { - trayIconMessages->setToolTip(tr("RetroShare") + "\n" + tr("You have %1 new message").arg(newInboxCount)); + trayIconMessages->hide(); } - trayIconMessages->show(); - } else { - trayIconMessages->hide(); } + + if (trayActionMessages) { + if (newInboxCount) { + if (newInboxCount > 1) { + trayActionMessages->setText(tr("%1 new messages").arg(newInboxCount)); + } else { + trayActionMessages->setText(tr("%1 new message").arg(newInboxCount)); + } + trayActionMessages->setVisible(true); + } else { + trayActionMessages->setVisible(false); + } + } + + updateTrayCombine(); } void MainWindow::updateForums() @@ -470,16 +608,33 @@ void MainWindow::updateForums() forumAction->setIcon(QIcon(IMAGE_FORUMS)) ; } - if (newMessageCount && (Settings->getTrayNotifyFlags() & TRAYNOTIFY_FORUMS)) { - if (newMessageCount > 1) { - trayIconForums->setToolTip(tr("RetroShare") + "\n" + tr("You have %1 new messages").arg(newMessageCount)); + if (trayIconForums) { + if (newMessageCount) { + if (newMessageCount > 1) { + trayIconForums->setToolTip("RetroShare\n" + tr("You have %1 new messages").arg(newMessageCount)); + } else { + trayIconForums->setToolTip("RetroShare\n" + tr("You have %1 new message").arg(newMessageCount)); + } + trayIconForums->show(); } else { - trayIconForums->setToolTip(tr("RetroShare") + "\n" + tr("You have %1 new message").arg(newMessageCount)); + trayIconForums->hide(); } - trayIconForums->show(); - } else { - trayIconForums->hide(); } + + if (trayActionForums) { + if (newMessageCount) { + if (newMessageCount > 1) { + trayActionForums->setText(tr("%1 new messages").arg(newMessageCount)); + } else { + trayActionForums->setText(tr("%1 new message").arg(newMessageCount)); + } + trayActionForums->setVisible(true); + } else { + trayActionForums->setVisible(false); + } + } + + updateTrayCombine(); } void MainWindow::updateChannels(int type) @@ -494,16 +649,33 @@ void MainWindow::updateChannels(int type) channelAction->setIcon(QIcon(IMAGE_CHANNELS)) ; } - if (newMessageCount && (Settings->getTrayNotifyFlags() & TRAYNOTIFY_CHANNELS)) { - if (newMessageCount > 1) { - trayIconChannels->setToolTip(tr("RetroShare") + "\n" + tr("You have %1 new messages").arg(newMessageCount)); + if (trayIconChannels) { + if (newMessageCount) { + if (newMessageCount > 1) { + trayIconChannels->setToolTip("RetroShare\n" + tr("You have %1 new messages").arg(newMessageCount)); + } else { + trayIconChannels->setToolTip("RetroShare\n" + tr("You have %1 new message").arg(newMessageCount)); + } + trayIconChannels->show(); } else { - trayIconChannels->setToolTip(tr("RetroShare") + "\n" + tr("You have %1 new message").arg(newMessageCount)); + trayIconChannels->hide(); } - trayIconChannels->show(); - } else { - trayIconChannels->hide(); } + + if (trayActionChannels) { + if (newMessageCount) { + if (newMessageCount > 1) { + trayActionChannels->setText(tr("%1 new messages").arg(newMessageCount)); + } else { + trayActionChannels->setText(tr("%1 new message").arg(newMessageCount)); + } + trayActionChannels->setVisible(true); + } else { + trayActionChannels->setVisible(false); + } + } + + updateTrayCombine(); } void MainWindow::updateTransfers(int count) @@ -514,15 +686,57 @@ void MainWindow::updateTransfers(int count) transferAction->setIcon(QIcon(IMAGE_TRANSFERS)) ; } - if (count && (Settings->getTrayNotifyFlags() & TRAYNOTIFY_TRANSFERS)) { - if (count > 1) { - trayIconTransfers->setToolTip(tr("RetroShare") + "\n" + tr("You have %1 completed downloads").arg(count)); + if (trayIconTransfers) { + if (count) { + if (count > 1) { + trayIconTransfers->setToolTip("RetroShare\n" + tr("You have %1 completed downloads").arg(count)); + } else { + trayIconTransfers->setToolTip("RetroShare\n" + tr("You have %1 completed download").arg(count)); + } + trayIconTransfers->show(); } else { - trayIconTransfers->setToolTip(tr("RetroShare") + "\n" + tr("You have %1 completed download").arg(count)); + trayIconTransfers->hide(); } - trayIconTransfers->show(); - } else { - trayIconTransfers->hide(); + } + + if (trayActionTransfers) { + if (count) { + if (count > 1) { + trayActionTransfers->setText(tr("%1 completed downloads").arg(count)); + } else { + trayActionTransfers->setText(tr("%1 completed download").arg(count)); + } + trayActionTransfers->setVisible(true); + } else { + trayActionTransfers->setVisible(false); + } + } + + updateTrayCombine(); +} + +void MainWindow::updateTrayCombine() +{ + if (trayIconCombined) { + QMenu *trayMenu = trayIconCombined->contextMenu(); + QList actions = trayMenu->actions(); + + bool visible = false; + QString toolTip; + + QList::iterator actionIt; + for (actionIt = actions.begin(); actionIt != actions.end(); actionIt++) { + if ((*actionIt)->isVisible()) { + visible = true; + if (toolTip.isEmpty() == false) { + toolTip += "\r"; + } + toolTip += (*actionIt)->data().toString() + ":" + (*actionIt)->text(); + } + } + + trayIconCombined->setToolTip(toolTip); + trayIconCombined->setVisible(visible); } } @@ -569,7 +783,7 @@ void MainWindow::updateStatus() trayIcon->setIcon(QIcon(IMAGE_RETROSHARE)); } - QString tray = tr("RetroShare") + "\n" + tr("Down: %1 (kB/s)").arg(downKb, 0, 'f', 2) + " | " + tr("Up: %1 (kB/s)").arg(upKb, 0, 'f', 2) + "\n"; + QString tray = "RetroShare\n" + tr("Down: %1 (kB/s)").arg(downKb, 0, 'f', 2) + " | " + tr("Up: %1 (kB/s)").arg(upKb, 0, 'f', 2) + "\n"; if (nOnlineCount == 1) { tray += tr("%1 friend connected").arg(nOnlineCount); @@ -589,11 +803,33 @@ void MainWindow::privateChatChanged(int list, int type) /* than count the chat messages */ int chatCount = rsMsgs->getPrivateChatQueueCount(true); - if (chatCount && (Settings->getTrayNotifyFlags() & TRAYNOTIFY_PRIVATECHAT)) { - trayIconChat->show(); - } else { - trayIconChat->hide(); + if (trayIconChat) { + if (chatCount) { + if (chatCount > 1) { + trayIconChat->setToolTip("RetroShare\n" + tr("You have %1 new messages").arg(chatCount)); + } else { + trayIconChat->setToolTip("RetroShare\n" + tr("You have %1 new message").arg(chatCount)); + } + trayIconChat->show(); + } else { + trayIconChat->hide(); + } } + + if (trayActionChat) { + if (chatCount) { + if (chatCount > 1) { + trayActionChat->setText(tr("%1 new messages").arg(chatCount)); + } else { + trayActionChat->setText(tr("%1 new message").arg(chatCount)); + } + trayActionChat->setVisible(true); + } else { + trayActionChat->setVisible(false);; + } + } + + updateTrayCombine(); } } diff --git a/retroshare-gui/src/gui/MainWindow.h b/retroshare-gui/src/gui/MainWindow.h index de1e9699c..ac2aa7fae 100644 --- a/retroshare-gui/src/gui/MainWindow.h +++ b/retroshare-gui/src/gui/MainWindow.h @@ -131,6 +131,7 @@ public: PluginsPage* pluginsPage ; static void installGroupChatNotifier(); + static void installNotifyIcons(); /* initialize widget with status informations, status constant stored in data or in Qt::UserRole */ void initializeStatusObject(QObject *pObject, bool bConnect); @@ -164,11 +165,13 @@ private slots: void toggleVisibility(QSystemTrayIcon::ActivationReason e); void toggleVisibilitycontextmenu(); - void trayIconMessagesClicked(QSystemTrayIcon::ActivationReason e); - void trayIconForumsClicked(QSystemTrayIcon::ActivationReason e); - void trayIconChannelsClicked(QSystemTrayIcon::ActivationReason e); - void trayIconChatClicked(QSystemTrayIcon::ActivationReason e); - void trayIconTransfersClicked(QSystemTrayIcon::ActivationReason e); + + /* default parameter for connect with the actions of the combined systray icon */ + void trayIconMessagesClicked(QSystemTrayIcon::ActivationReason e = QSystemTrayIcon::Trigger); + void trayIconForumsClicked(QSystemTrayIcon::ActivationReason e = QSystemTrayIcon::Trigger); + void trayIconChannelsClicked(QSystemTrayIcon::ActivationReason e = QSystemTrayIcon::Trigger); + void trayIconChatClicked(QSystemTrayIcon::ActivationReason e = QSystemTrayIcon::Trigger); + void trayIconTransfersClicked(QSystemTrayIcon::ActivationReason e = QSystemTrayIcon::Trigger); /** Toolbar fns. */ void addFriend(); @@ -206,6 +209,8 @@ private: void createActions(); void createTrayIcon(); + void createNotifyIcons(); + void updateTrayCombine(); static MainWindow *_instance; @@ -231,13 +236,18 @@ private: void loadStyleSheet(const QString &sheetName); QSystemTrayIcon *trayIcon; + QSystemTrayIcon *trayIconCombined; QSystemTrayIcon *trayIconMessages; QSystemTrayIcon *trayIconForums; QSystemTrayIcon *trayIconChannels; QSystemTrayIcon *trayIconChat; QSystemTrayIcon *trayIconTransfers; + QAction *trayActionMessages; + QAction *trayActionForums; + QAction *trayActionChannels; + QAction *trayActionChat; + QAction *trayActionTransfers; QAction *toggleVisibilityAction, *toolAct; - QMenu *trayMenu; PeerStatus *peerstatus; NATStatus *natstatus; diff --git a/retroshare-gui/src/gui/images.qrc b/retroshare-gui/src/gui/images.qrc index 75e89ab73..56d474e0b 100644 --- a/retroshare-gui/src/gui/images.qrc +++ b/retroshare-gui/src/gui/images.qrc @@ -354,6 +354,7 @@ images/rstray0.png images/rstray1.png images/rstray2.png + images/rstray_new.png images/security-high-16.png images/security-high-48.png images/security-low-48.png diff --git a/retroshare-gui/src/gui/images/rstray_new.png b/retroshare-gui/src/gui/images/rstray_new.png new file mode 100644 index 0000000000000000000000000000000000000000..a45d972d34e53f6018678af3e922f4673f5bb6b0 GIT binary patch literal 1281 zcmV+c1^)VpP)>*? zAIwx<+LkG`RBC;6q&})3Afi%Gf?GHgqUnLU4mLW$~cU7W_M?H@BQuFbI4OQ&caE>yoLWfk{C?#Wz6hF(4`lhn&Kb4}*m(^HxVGl@Ykm z*kJsAf7zvnp~m+iVhFjNPA72KmN7>%HDe1$r^!kUn*!8S0(Hk9^NV0y7|(vEm`Ml&uWKrT2|r9;Ed3GlH`G+V&NMv#noCql(mg? zr$+$0jTV;hsN2dAfKVo`%uHLlttvW91Z5!5cnxUK09^V7?7@cS`4Jr@enOU7)$mr7 z@XaKE0t}xV#9soK0?sIeiG4lj$yTFYUx(}t6ToEQgx+K#7Umzl7#^J-6)6XrI)K8e z|2{ua1-v^gAL;yRIE)VPUzd6A_wBij+dAv#j#kNQQ9f*0{Tum^xQb|<1qgE4u)Wpr zDY0N}jeGLcRD?_fHWmY4%X1;;bYXZ%Nz!wmc)oDay7HDJfGO_vfXQAt^t(@ba)u0M zFogc-yQK$VlRKN8@~-v|FsezOY;@OF9Q;+DuxHfqT98jN%h9 zeQ@FGA#r1GJq(vE2Y4UXEsLEV<0ky)9QchLv@~OohLUs#LOxLR%xcW#6v6A2XF)J+ zqx+8};L_29-KBv+;Od#T2b1nUBBEoaD;?8*u9L_VLMAZ+4&~IKK%RynjTd;c1YnK# zdK7w>0qZro(`r4WnTv4hdgaNS4M=?e9zMmUuZ!nRdVa?^f5|Kkn*pPF$UK8ueCD0x z{tRb}9pdzHj|I1t_2YKLbDhaKfs@Nh_EoJYK=%K@!_jv28k5WAatMN8kR<5{4GDHO z?^XSx7--89PUDRv(N+WFUI8uJjo)pk3P?wIj08V@TU=0f7@HpfKQ31~<6Q0W6dJ>mI7UNdd0<>#2#y|ES&9B>i_Q{)&eyiB+?>zv*LO`#h zFi2->?IMH{Mg*xCAkDy!-6DLkT!sLjKuocR8F!}^M$x6(QNa{-Ty%5Ii+8-;6#7gs zl1{9B&pR+vvHs<(_)EPAt~>;pw-tZ)0hwz?Y9fWvker%Ocw+OBwWESHY6MXfI_br+ znZ6dPDqzgsnNvJIMXH{_k-%)!p}%qumYf09d9-Yzk-C`HxKm9Z)Q@f3jNLf1ls{jv z++hC)UDoTcQ+AJH&7$Y&@51uOyB3^pt-3$!g=H|-~eUTr9?uY021MvDtg7kLHcALR-H rgu#Ftce)2U#CQBF%gf7q@8|pr3S!a8Gwxxm00000NkvXXu0mjf|Ltdi literal 0 HcmV?d00001 diff --git a/retroshare-gui/src/gui/settings/NotifyPage.cpp b/retroshare-gui/src/gui/settings/NotifyPage.cpp index 8121ac539..25daddbe7 100755 --- a/retroshare-gui/src/gui/settings/NotifyPage.cpp +++ b/retroshare-gui/src/gui/settings/NotifyPage.cpp @@ -114,6 +114,8 @@ NotifyPage::save(QString &errmsg) traynotifyflags |= TRAYNOTIFY_FORUMS; if (ui.trayNotify_Transfer->isChecked()) traynotifyflags |= TRAYNOTIFY_TRANSFERS; + if (ui.trayNotify_CombinedIcon->isChecked()) + traynotifyflags |= TRAYNOTIFY_COMBINEDICON; Settings->setNotifyFlags(notifyflags); Settings->setTrayNotifyFlags(traynotifyflags); @@ -122,6 +124,7 @@ NotifyPage::save(QString &errmsg) Settings->setDisplayTrayGroupChat(ui.systray_GroupChat->isChecked()); MainWindow::installGroupChatNotifier(); + MainWindow::installNotifyIcons(); Settings->setAddFeedsAtEnd(ui.addFeedsAtEnd->isChecked()); @@ -164,6 +167,7 @@ void NotifyPage::load() ui.trayNotify_Channels->setChecked(traynotifyflags & TRAYNOTIFY_CHANNELS); ui.trayNotify_Forums->setChecked(traynotifyflags & TRAYNOTIFY_FORUMS); ui.trayNotify_Transfer->setChecked(traynotifyflags & TRAYNOTIFY_TRANSFERS); + ui.trayNotify_CombinedIcon->setChecked(traynotifyflags & TRAYNOTIFY_COMBINEDICON); ui.addFeedsAtEnd->setChecked(Settings->getAddFeedsAtEnd()); } diff --git a/retroshare-gui/src/gui/settings/NotifyPage.ui b/retroshare-gui/src/gui/settings/NotifyPage.ui index 03b179230..bc4c4992f 100755 --- a/retroshare-gui/src/gui/settings/NotifyPage.ui +++ b/retroshare-gui/src/gui/settings/NotifyPage.ui @@ -6,7 +6,7 @@ 0 0 - 396 + 408 425 @@ -616,6 +616,20 @@ + + + + Qt::Horizontal + + + + + + + Combined icon + + + diff --git a/retroshare-gui/src/gui/settings/rsharesettings.h b/retroshare-gui/src/gui/settings/rsharesettings.h index 79b107cc9..49af523db 100644 --- a/retroshare-gui/src/gui/settings/rsharesettings.h +++ b/retroshare-gui/src/gui/settings/rsharesettings.h @@ -32,12 +32,14 @@ #include "rsettings.h" /* Defines for get/setTrayNotifyFlags */ -#define TRAYNOTIFY_PRIVATECHAT 0x01 -#define TRAYNOTIFY_MESSAGES 0x02 -#define TRAYNOTIFY_CHANNELS 0x04 -#define TRAYNOTIFY_FORUMS 0x08 -#define TRAYNOTIFY_TRANSFERS 0x10 -#define TRAYNOTIFY_ALL 0x1F +#define TRAYNOTIFY_PRIVATECHAT 0x00000001 +#define TRAYNOTIFY_MESSAGES 0x00000002 +#define TRAYNOTIFY_CHANNELS 0x00000004 +#define TRAYNOTIFY_FORUMS 0x00000008 +#define TRAYNOTIFY_TRANSFERS 0x00000010 +#define TRAYNOTIFY_ALL 0x0000001F + +#define TRAYNOTIFY_COMBINEDICON 0x80000000 //Forward declaration. class QWidget; diff --git a/retroshare-gui/src/lang/retroshare_de.qm b/retroshare-gui/src/lang/retroshare_de.qm index 6fc13b146702800f7b6065be2c68af13757c9445..5bc62d001da7b8382daa09289eda87428f468267 100644 GIT binary patch delta 13319 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 A)Bpeg delta 12942 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 Pxr?IskwsCW>bd^`IiAG! diff --git a/retroshare-gui/src/lang/retroshare_de.ts b/retroshare-gui/src/lang/retroshare_de.ts index 633ad81d0..d24aed433 100644 --- a/retroshare-gui/src/lang/retroshare_de.ts +++ b/retroshare-gui/src/lang/retroshare_de.ts @@ -5100,7 +5100,7 @@ p, li { white-space: pre-wrap; } MainWindow - + Network Netzwerk @@ -5111,26 +5111,50 @@ p, li { white-space: pre-wrap; } + Transfers Übertragungen - + + Messages Nachrichten - + + Channels Kanäle - + Blogs Blogs - + + Chat + Chat + + + + + + + %1 new messages + %1 neue Nachrichten + + + + + + + %1 new message + %1 neue Nachricht + + + You have %1 completed downloads Du hast %1 fertige Downloads @@ -5140,7 +5164,17 @@ p, li { white-space: pre-wrap; } Du hast %1 fertigen Download - + + %1 completed downloads + %1 fertige Downloads + + + + %1 completed download + %1 fertigen Download + + + Down: %1 (kB/s) Runter: %1 (kB/s) @@ -5155,7 +5189,7 @@ p, li { white-space: pre-wrap; } %1 Freunde verbunden - + It seems to be an old RetroShare link. Please use copy instead. Es scheint ein alter RetroShare Link zu sein. Bitte kopiere den Link stattdessen. @@ -5165,12 +5199,12 @@ p, li { white-space: pre-wrap; } Link ist fehlerhaft. - + %1 friend connected %1 Freund verbunden - + Internal Error Interener Fehler @@ -5191,16 +5225,7 @@ p, li { white-space: pre-wrap; } Zeigen - - - - - - - - - - + RetroShare @@ -5231,7 +5256,7 @@ p, li { white-space: pre-wrap; } Schnellstart Assistent - + Search Suchen @@ -5246,7 +5271,7 @@ p, li { white-space: pre-wrap; } Messenger - + Show/Hide Anzeigen/Verbergen @@ -5256,21 +5281,23 @@ p, li { white-space: pre-wrap; } &Schliessen - - - + + + + You have %1 new messages Du hast %1 neue Nachrichten - - - + + + + You have %1 new message Du hast %1 neue Nachricht - + Bandwidth Graph Bandbreiten-Graph @@ -5285,7 +5312,7 @@ p, li { white-space: pre-wrap; } Schliessen - + Minimize Minimieren @@ -5295,7 +5322,7 @@ p, li { white-space: pre-wrap; } Maximieren - + Links Cloud Verknüpfungs-Wolke @@ -5310,7 +5337,7 @@ p, li { white-space: pre-wrap; } - + Help Hilfe @@ -5320,17 +5347,18 @@ p, li { white-space: pre-wrap; } Über - + + Forums Foren - + RetroShare %1 a secure decentralised communication platform RetroShare %1 eine sichere und dezentralisierte Kommunikationsplattform - + Open Messages Öffne Nachrichten @@ -5340,12 +5368,12 @@ p, li { white-space: pre-wrap; } Anwendungen - + Plugins - + Do you really want to exit RetroShare ? Willst Du RetroShare wirklich beenden? @@ -5355,7 +5383,7 @@ p, li { white-space: pre-wrap; } Wirklich beenden? - + Low disk space warning Wenig Festplatenspeicher @@ -7017,12 +7045,17 @@ p, li { white-space: pre-wrap; } - + Download completed Download fertig - + + Combined icon + Kombiniertes Icon + + + Toasters @@ -7067,7 +7100,7 @@ p, li { white-space: pre-wrap; } Zeige Systemabschnitts-Nachricht an - + Add feeds at end Feeds am Ende anfügen