+void MainWin::setupActions()
+{
+ QAction* action{nullptr};
+ ActionCollection* coll = QtUi::actionCollection("General", tr("General"));
+
+ // File
+ coll->addActions(
+ {{"ConnectCore", new Action(icon::get("connect-quassel"), tr("&Connect to Core..."), coll, this, &MainWin::showCoreConnectionDlg)},
+ {"DisconnectCore",
+ new Action(icon::get("disconnect-quassel"), tr("&Disconnect from Core"), coll, Client::instance(), &Client::disconnectFromCore)},
+ {"ChangePassword", new Action(icon::get("dialog-password"), tr("Change &Password..."), coll, this, &MainWin::showPasswordChangeDlg)},
+ {"CoreInfo", new Action(icon::get("help-about"), tr("Core &Info..."), coll, this, &MainWin::showCoreInfoDlg)},
+ {"ConfigureNetworks",
+ new Action(icon::get("configure"), tr("Configure &Networks..."), coll, this, &MainWin::onConfigureNetworksTriggered)},
+ {"Quit", new Action(icon::get("application-exit"), tr("&Quit"), coll, Quassel::instance(), &Quassel::quit, Qt::CTRL + Qt::Key_Q)}});
+
+ // View
+ coll->addAction("ConfigureBufferViews", new Action(tr("&Configure Chat Lists..."), coll, this, &MainWin::onConfigureViewsTriggered));
+
+ coll->addAction("ToggleSearchBar", new Action(icon::get("edit-find"), tr("Show &Search Bar"), coll, QKeySequence::Find))->setCheckable(true);
+ coll->addAction("ShowAwayLog", new Action(tr("Show Away Log"), coll, this, &MainWin::showAwayLog));
+ coll->addAction("ToggleMenuBar", new Action(icon::get("show-menu"), tr("Show &Menubar"), coll))->setCheckable(true);
+ coll->addAction("ToggleStatusBar", new Action(tr("Show Status &Bar"), coll))->setCheckable(true);
+
+ action = coll->addAction("LockLayout", new Action(tr("&Lock Layout"), coll));
+ action->setCheckable(true);
+ connect(action, &QAction::toggled, this, &MainWin::onLockLayoutToggled);
+
+#ifdef HAVE_KDE
+# if KCONFIGWIDGETS_VERSION < QT_VERSION_CHECK(5, 23, 0)
+ _fullScreenAction = KStandardAction::fullScreen(this, SLOT(onFullScreenToggled()), this, coll);
+# else
+ _fullScreenAction = KStandardAction::fullScreen(this, &MainWin::onFullScreenToggled, this, coll);
+# endif
+#else
+ _fullScreenAction = new Action(icon::get("view-fullscreen"),
+ tr("&Full Screen Mode"),
+ coll,
+ this,
+ &MainWin::onFullScreenToggled,
+ QKeySequence::FullScreen);
+ _fullScreenAction->setCheckable(true);
+ coll->addAction("ToggleFullScreen", _fullScreenAction);
+#endif
+
+ // Settings
+ coll->addAction("ConfigureShortcuts",
+ new Action(icon::get("configure-shortcuts"), tr("Configure &Shortcuts..."), coll, this, &MainWin::showShortcutsDlg))
+ ->setMenuRole(QAction::NoRole);
+ coll->addAction("ConfigureQuassel",
+ new Action(icon::get("configure"), tr("&Configure Quassel..."), coll, this, &MainWin::showSettingsDlg, QKeySequence(Qt::Key_F7)))
+ ->setMenuRole(QAction::PreferencesRole);
+
+ // Help
+ coll->addAction("AboutQuassel", new Action(icon::get("quassel"), tr("&About Quassel"), coll, this, &MainWin::showAboutDlg))
+ ->setMenuRole(QAction::AboutRole);
+ coll->addAction("AboutQt", new Action(QIcon(":/pics/qt-logo-32.png"), tr("About &Qt"), coll, qApp, &QApplication::aboutQt))
+ ->setMenuRole(QAction::AboutQtRole);
+ coll->addActions(
+ {{"DebugNetworkModel",
+ new Action(icon::get("tools-report-bug"), tr("Debug &NetworkModel"), coll, this, &MainWin::onDebugNetworkModelTriggered)},
+ {"DebugBufferViewOverlay",
+ new Action(icon::get("tools-report-bug"), tr("Debug &BufferViewOverlay"), coll, this, &MainWin::onDebugBufferViewOverlayTriggered)},
+ {"DebugMessageModel",
+ new Action(icon::get("tools-report-bug"), tr("Debug &MessageModel"), coll, this, &MainWin::onDebugMessageModelTriggered)},
+ {"DebugHotList", new Action(icon::get("tools-report-bug"), tr("Debug &HotList"), coll, this, &MainWin::onDebugHotListTriggered)},
+ {"DebugLog", new Action(icon::get("tools-report-bug"), tr("Debug &Log"), coll, this, &MainWin::onDebugLogTriggered)},
+ {"ShowResourceTree",
+ new Action(icon::get("tools-report-bug"), tr("Show &Resource Tree"), coll, this, &MainWin::onShowResourceTreeTriggered)},
+ {"ReloadStyle",
+ new Action(icon::get("view-refresh"),
+ tr("Reload Stylesheet"),
+ coll,
+ QtUi::style(),
+ &UiStyle::reload,
+ QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_R))}});
+
+ // Other
+ coll->addAction("HideCurrentBuffer", new Action(tr("Hide Current Buffer"), coll, this, &MainWin::hideCurrentBuffer, QKeySequence::Close));
+
+ // Text formatting
+ coll = QtUi::actionCollection("TextFormat", tr("Text formatting"));
+
+ coll->addActions(
+ {{"FormatApplyColor",
+ new Action(icon::get("format-text-color"),
+ tr("Apply foreground color"),
+ coll,
+ this,
+ &MainWin::onFormatApplyColorTriggered,
+ QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_G))},
+ {"FormatApplyColorFill",
+ new Action(icon::get("format-fill-color"),
+ tr("Apply background color"),
+ coll,
+ this,
+ &MainWin::onFormatApplyColorFillTriggered,
+ QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_B))},
+ {"FormatClear",
+ new Action(icon::get("edit-clear"),
+ tr("Clear formatting"),
+ coll,
+ this,
+ &MainWin::onFormatClearTriggered,
+ QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_C))},
+ {"FormatBold",
+ new Action(icon::get("format-text-bold"), tr("Toggle bold"), coll, this, &MainWin::onFormatBoldTriggered, QKeySequence::Bold)},
+ {"FormatItalic",
+ new Action(icon::get("format-text-italic"), tr("Toggle italics"), coll, this, &MainWin::onFormatItalicTriggered, QKeySequence::Italic)},
+ {"FormatUnderline",
+ new Action(icon::get("format-text-underline"),
+ tr("Toggle underline"),
+ coll,
+ this,
+ &MainWin::onFormatUnderlineTriggered,
+ QKeySequence::Underline)},
+ {"FormatStrikethrough",
+ new Action(icon::get("format-text-strikethrough"),
+ tr("Toggle strikethrough"),
+ coll,
+ this,
+ &MainWin::onFormatStrikethroughTriggered,
+ QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_S))}});
+
+ // Navigation
+ coll = QtUi::actionCollection("Navigation", tr("Navigation"));
+
+ coll->addActions(
+ {{"JumpHotBuffer",
+ new Action(tr("Jump to hot chat"), coll, this, &MainWin::onJumpHotBufferTriggered, QKeySequence(Qt::META + Qt::Key_A))},
+ {"ActivateBufferFilter",
+ new Action(tr("Activate the buffer search"), coll, this, &MainWin::onBufferSearchTriggered, QKeySequence(Qt::CTRL + Qt::Key_S))}});
+
+ // Jump keys
+#ifdef Q_OS_MAC
+ const int bindModifier = Qt::ControlModifier | Qt::AltModifier;
+ const int jumpModifier = Qt::ControlModifier;
+#else
+ const int bindModifier = Qt::ControlModifier;
+ const int jumpModifier = Qt::AltModifier;
+#endif
+
+ coll->addAction("BindJumpKey0",
+ new Action(tr("Set Quick Access #0"), coll, this, &MainWin::bindJumpKey, QKeySequence(bindModifier + Qt::Key_0)))
+ ->setProperty("Index", 0);
+ coll->addAction("BindJumpKey1",
+ new Action(tr("Set Quick Access #1"), coll, this, &MainWin::bindJumpKey, QKeySequence(bindModifier + Qt::Key_1)))
+ ->setProperty("Index", 1);
+ coll->addAction("BindJumpKey2",
+ new Action(tr("Set Quick Access #2"), coll, this, &MainWin::bindJumpKey, QKeySequence(bindModifier + Qt::Key_2)))
+ ->setProperty("Index", 2);
+ coll->addAction("BindJumpKey3",
+ new Action(tr("Set Quick Access #3"), coll, this, &MainWin::bindJumpKey, QKeySequence(bindModifier + Qt::Key_3)))
+ ->setProperty("Index", 3);
+ coll->addAction("BindJumpKey4",
+ new Action(tr("Set Quick Access #4"), coll, this, &MainWin::bindJumpKey, QKeySequence(bindModifier + Qt::Key_4)))
+ ->setProperty("Index", 4);
+ coll->addAction("BindJumpKey5",
+ new Action(tr("Set Quick Access #5"), coll, this, &MainWin::bindJumpKey, QKeySequence(bindModifier + Qt::Key_5)))
+ ->setProperty("Index", 5);
+ coll->addAction("BindJumpKey6",
+ new Action(tr("Set Quick Access #6"), coll, this, &MainWin::bindJumpKey, QKeySequence(bindModifier + Qt::Key_6)))
+ ->setProperty("Index", 6);
+ coll->addAction("BindJumpKey7",
+ new Action(tr("Set Quick Access #7"), coll, this, &MainWin::bindJumpKey, QKeySequence(bindModifier + Qt::Key_7)))
+ ->setProperty("Index", 7);
+ coll->addAction("BindJumpKey8",
+ new Action(tr("Set Quick Access #8"), coll, this, &MainWin::bindJumpKey, QKeySequence(bindModifier + Qt::Key_8)))
+ ->setProperty("Index", 8);
+ coll->addAction("BindJumpKey9",
+ new Action(tr("Set Quick Access #9"), coll, this, &MainWin::bindJumpKey, QKeySequence(bindModifier + Qt::Key_9)))
+ ->setProperty("Index", 9);
+
+ coll->addAction("JumpKey0", new Action(tr("Quick Access #0"), coll, this, &MainWin::onJumpKey, QKeySequence(jumpModifier + Qt::Key_0)))
+ ->setProperty("Index", 0);
+ coll->addAction("JumpKey1", new Action(tr("Quick Access #1"), coll, this, &MainWin::onJumpKey, QKeySequence(jumpModifier + Qt::Key_1)))
+ ->setProperty("Index", 1);
+ coll->addAction("JumpKey2", new Action(tr("Quick Access #2"), coll, this, &MainWin::onJumpKey, QKeySequence(jumpModifier + Qt::Key_2)))
+ ->setProperty("Index", 2);
+ coll->addAction("JumpKey3", new Action(tr("Quick Access #3"), coll, this, &MainWin::onJumpKey, QKeySequence(jumpModifier + Qt::Key_3)))
+ ->setProperty("Index", 3);
+ coll->addAction("JumpKey4", new Action(tr("Quick Access #4"), coll, this, &MainWin::onJumpKey, QKeySequence(jumpModifier + Qt::Key_4)))
+ ->setProperty("Index", 4);
+ coll->addAction("JumpKey5", new Action(tr("Quick Access #5"), coll, this, &MainWin::onJumpKey, QKeySequence(jumpModifier + Qt::Key_5)))
+ ->setProperty("Index", 5);
+ coll->addAction("JumpKey6", new Action(tr("Quick Access #6"), coll, this, &MainWin::onJumpKey, QKeySequence(jumpModifier + Qt::Key_6)))
+ ->setProperty("Index", 6);
+ coll->addAction("JumpKey7", new Action(tr("Quick Access #7"), coll, this, &MainWin::onJumpKey, QKeySequence(jumpModifier + Qt::Key_7)))
+ ->setProperty("Index", 7);
+ coll->addAction("JumpKey8", new Action(tr("Quick Access #8"), coll, this, &MainWin::onJumpKey, QKeySequence(jumpModifier + Qt::Key_8)))
+ ->setProperty("Index", 8);
+ coll->addAction("JumpKey9", new Action(tr("Quick Access #9"), coll, this, &MainWin::onJumpKey, QKeySequence(jumpModifier + Qt::Key_9)))
+ ->setProperty("Index", 9);
+
+ // Buffer navigation
+ coll->addAction("NextBufferView",
+ new Action(icon::get("go-next-view"),
+ tr("Activate Next Chat List"),
+ coll,
+ this,
+ &MainWin::nextBufferView,
+ QKeySequence(QKeySequence::Forward)));
+ coll->addAction("PreviousBufferView",
+ new Action(icon::get("go-previous-view"),
+ tr("Activate Previous Chat List"),
+ coll,
+ this,
+ &MainWin::previousBufferView,
+ QKeySequence::Back));
+ coll->addAction("NextBuffer",
+ new Action(icon::get("go-down"),
+ tr("Go to Next Chat"),
+ coll,
+ this,
+ &MainWin::nextBuffer,
+ QKeySequence(Qt::ALT + Qt::Key_Down)));
+ coll->addAction("PreviousBuffer",
+ new Action(icon::get("go-up"),
+ tr("Go to Previous Chat"),
+ coll,
+ this,
+ &MainWin::previousBuffer,
+ QKeySequence(Qt::ALT + Qt::Key_Up)));