MCPcopy Create free account
hub / github.com/ElementsProject/elements / createTrayIconMenu

Method createTrayIconMenu

src/qt/bitcoingui.cpp:759–837  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

757}
758
759void BitcoinGUI::createTrayIconMenu()
760{
761#ifndef Q_OS_MAC
762 if (!trayIcon) return;
763#endif // Q_OS_MAC
764
765 // Configuration of the tray icon (or Dock icon) menu.
766 QAction* show_hide_action{nullptr};
767#ifndef Q_OS_MAC
768 // Note: On macOS, the Dock icon's menu already has Show / Hide action.
769 show_hide_action = trayIconMenu->addAction(QString(), this, &BitcoinGUI::toggleHidden);
770 trayIconMenu->addSeparator();
771#endif // Q_OS_MAC
772
773 QAction* send_action{nullptr};
774 QAction* receive_action{nullptr};
775 QAction* sign_action{nullptr};
776 QAction* verify_action{nullptr};
777 if (enableWallet) {
778 send_action = trayIconMenu->addAction(sendCoinsAction->text(), sendCoinsAction, &QAction::trigger);
779 receive_action = trayIconMenu->addAction(receiveCoinsAction->text(), receiveCoinsAction, &QAction::trigger);
780 trayIconMenu->addSeparator();
781 sign_action = trayIconMenu->addAction(signMessageAction->text(), signMessageAction, &QAction::trigger);
782 verify_action = trayIconMenu->addAction(verifyMessageAction->text(), verifyMessageAction, &QAction::trigger);
783 trayIconMenu->addSeparator();
784 }
785 QAction* options_action = trayIconMenu->addAction(optionsAction->text(), optionsAction, &QAction::trigger);
786 options_action->setMenuRole(QAction::PreferencesRole);
787 QAction* node_window_action = trayIconMenu->addAction(openRPCConsoleAction->text(), openRPCConsoleAction, &QAction::trigger);
788 QAction* quit_action{nullptr};
789#ifndef Q_OS_MAC
790 // Note: On macOS, the Dock icon's menu already has Quit action.
791 trayIconMenu->addSeparator();
792 quit_action = trayIconMenu->addAction(quitAction->text(), quitAction, &QAction::trigger);
793
794 trayIcon->setContextMenu(trayIconMenu.get());
795 connect(trayIcon, &QSystemTrayIcon::activated, [this](QSystemTrayIcon::ActivationReason reason) {
796 if (reason == QSystemTrayIcon::Trigger) {
797 // Click on system tray icon triggers show/hide of the main window
798 toggleHidden();
799 }
800 });
801#else
802 // Note: On macOS, the Dock icon is used to provide the tray's functionality.
803 MacDockIconHandler* dockIconHandler = MacDockIconHandler::instance();
804 connect(dockIconHandler, &MacDockIconHandler::dockIconClicked, [this] {
805 show();
806 activateWindow();
807 });
808 trayIconMenu->setAsDockMenu();
809#endif // Q_OS_MAC
810
811 connect(
812 // Using QSystemTrayIcon::Context is not reliable.
813 // See https://bugreports.qt.io/browse/QTBUG-91697
814 trayIconMenu.get(), &QMenu::aboutToShow,
815 [this, show_hide_action, send_action, receive_action, sign_action, verify_action, options_action, node_window_action, quit_action] {
816 if (show_hide_action) show_hide_action->setText(

Callers

nothing calls this directly

Calls 4

isObscuredFunction · 0.85
setTextMethod · 0.80
getMethod · 0.45
setEnabledMethod · 0.45

Tested by

no test coverage detected