From e7d2e0bd38f0362ac52da4e0a85b394073989480 Mon Sep 17 00:00:00 2001 From: arcan1s Date: Sun, 24 Aug 2014 16:30:37 +0400 Subject: [PATCH] change menu to toolboxes --- CHANGELOG | 7 +- sources/gui/bash-completions | 1 + sources/gui/src/mainprivateslots.cpp | 172 ++++------ sources/gui/src/mainwindow.cpp | 161 ++++++++-- sources/gui/src/mainwindow.h | 11 +- sources/gui/src/mainwindow.ui | 424 +------------------------ sources/gui/src/settingswindow.cpp | 9 + sources/gui/src/settingswindow.ui | 11 +- sources/gui/zsh-completions | 1 + sources/helper/netctlgui-helper.conf | 3 + sources/helper/netctlgui-helper.conf.5 | 3 + sources/helper/src/netctlhelper.cpp | 1 + 12 files changed, 235 insertions(+), 569 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index aa8d438..7e3f8b1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -21,10 +21,13 @@ Ver.1.3.0 + add ability to use helper + add ability to start minimized/maximized/detached + add ability to don't save profile from WiFi tab + + add ability to skip external components checking + - remove buttons * more correct actions into SettingsWindow * update to library changes * rewrite tables to use toolTip * edit about window + * change menuBar * helper: + create daemon DBus system interface org.netctlgui.helper to the library: self control slots, netctl control slots and netctl information slots @@ -39,11 +42,11 @@ Ver.1.3.0 + add slots forceStartProfile() and forceStopProfile() + add double quotes to profile names + add tests + - remove functions getProfileDescriptions() and getProfileStatuses() + - remove SleepThread class * rewrite to use [tasks](https://github.com/mhogomchungu/tasks) (see #7) * rename getInterfaceList() to getWirelessInterfaceList() * change temporaty directory from $HOME/.cache to system one - - remove functions getProfileDescriptions() and getProfileStatuses() - - remove SleepThread class * plasmoid: + add 3rd party license information + allow plasmoid to use system tray diff --git a/sources/gui/bash-completions b/sources/gui/bash-completions index 934e9ba..4f130c6 100644 --- a/sources/gui/bash-completions +++ b/sources/gui/bash-completions @@ -63,6 +63,7 @@ _netctl_gui_settings=( 'PREFERED_IFACE' 'PROFILE_DIR' 'RFKILL_DIR' + 'SKIPCOMPONENTS' 'STARTTOTRAY' 'SUDO_PATH' 'SYSTEMCTL_PATH' diff --git a/sources/gui/src/mainprivateslots.cpp b/sources/gui/src/mainprivateslots.cpp index 834d510..56a4e39 100644 --- a/sources/gui/src/mainprivateslots.cpp +++ b/sources/gui/src/mainprivateslots.cpp @@ -61,22 +61,22 @@ void MainWindow::setMenuActionsShown(const bool state) if (debug) qDebug() << PDEBUG << ":" << "State" << state; // main - ui->actionMainEdit->setVisible(state); - ui->actionMainEnable->setVisible(state); - ui->actionMainRefresh->setVisible(state); - ui->actionMainRemove->setVisible(state); - ui->actionMainRestart->setVisible(state); - ui->actionMainStart->setVisible(state); - ui->actionMainStopAll->setVisible(state); - ui->actionMainSwitch->setVisible(state); + toolBarActions[QString("mainRefresh")]->setVisible(state); + toolBarActions[QString("mainStart")]->setVisible(state); + toolBarActions[QString("mainSwitch")]->setVisible(state); + toolBarActions[QString("mainRestart")]->setVisible(state); + toolBarActions[QString("mainEnable")]->setVisible(state); + toolBarActions[QString("mainStopAll")]->setVisible(state); + toolBarActions[QString("mainEdit")]->setVisible(state); + toolBarActions[QString("mainRemove")]->setVisible(state); // profile - ui->actionProfileClear->setVisible(state); - ui->actionProfileLoad->setVisible(state); - ui->actionProfileRemove->setVisible(state); - ui->actionProfileSave->setVisible(state); + toolBarActions[QString("profileClear")]->setVisible(state); + toolBarActions[QString("profileLoad")]->setVisible(state); + toolBarActions[QString("profileSave")]->setVisible(state); + toolBarActions[QString("profileRemove")]->setVisible(state); // wifi - ui->actionWifiRefresh->setVisible(state); - ui->actionWifiStart->setVisible(state); + toolBarActions[QString("wifiRefresh")]->setVisible(state); + toolBarActions[QString("wifiStart")]->setVisible(state); } @@ -84,33 +84,33 @@ void MainWindow::updateMenuMain() { if (debug) qDebug() << PDEBUG; - ui->actionMainRefresh->setVisible(true); + toolBarActions[QString("mainRefresh")]->setVisible(true); if (ui->tableWidget_main->currentItem() == 0) return; if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 2)->text().isEmpty()) { - ui->actionMainRestart->setVisible(true); - ui->actionMainStart->setText(QApplication::translate("MainWindow", "Stop profile")); - ui->actionMainStart->setIcon(QIcon::fromTheme("process-stop")); + toolBarActions[QString("mainRestart")]->setVisible(true); + toolBarActions[QString("mainStart")]->setText(QApplication::translate("MainWindow", "Stop")); + toolBarActions[QString("mainStart")]->setIcon(QIcon::fromTheme("process-stop")); } else { - ui->actionMainStart->setText(QApplication::translate("MainWindow", "Start profile")); - ui->actionMainStart->setIcon(QIcon::fromTheme("system-run")); + toolBarActions[QString("mainStart")]->setText(QApplication::translate("MainWindow", "Start")); + toolBarActions[QString("mainStart")]->setIcon(QIcon::fromTheme("system-run")); } if (!mainTabGetActiveProfiles().isEmpty()) { if (!mainTabGetActiveProfiles() .contains(ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text())) - ui->actionMainSwitch->setVisible(true); - ui->actionMainStopAll->setVisible(true); + toolBarActions[QString("mainSwitch")]->setVisible(true); + toolBarActions[QString("mainStopAll")]->setVisible(true); } - ui->actionMainStart->setVisible(true); + toolBarActions[QString("mainStart")]->setVisible(true); if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 3)->text().isEmpty()) { - ui->actionMainEnable->setText(QApplication::translate("MainWindow", "Disable profile")); - ui->actionMainEnable->setIcon(QIcon::fromTheme("edit-remove")); + toolBarActions[QString("mainEnable")]->setText(QApplication::translate("MainWindow", "Disable")); + toolBarActions[QString("mainEnable")]->setIcon(QIcon::fromTheme("edit-remove")); } else { - ui->actionMainEnable->setText(QApplication::translate("MainWindow", "Enable profile")); - ui->actionMainEnable->setIcon(QIcon::fromTheme("edit-add")); + toolBarActions[QString("mainEnable")]->setText(QApplication::translate("MainWindow", "Enable")); + toolBarActions[QString("mainEnable")]->setIcon(QIcon::fromTheme("edit-add")); } - ui->actionMainEnable->setVisible(true); - ui->actionMainEdit->setVisible(true); - ui->actionMainRemove->setVisible(true); + toolBarActions[QString("mainEnable")]->setVisible(true); + toolBarActions[QString("mainEdit")]->setVisible(true); + toolBarActions[QString("mainRemove")]->setVisible(true); } @@ -118,15 +118,15 @@ void MainWindow::updateMenuProfile() { if (debug) qDebug() << PDEBUG; - ui->actionProfileClear->setVisible(true); + toolBarActions[QString("profileClear")]->setVisible(true); if (ui->comboBox_profile->currentText().isEmpty()) { - ui->actionProfileLoad->setVisible(false); - ui->actionProfileRemove->setVisible(false); - ui->actionProfileSave->setVisible(false); + toolBarActions[QString("profileLoad")]->setVisible(false); + toolBarActions[QString("profileRemove")]->setVisible(false); + toolBarActions[QString("profileSave")]->setVisible(false); } else { - ui->actionProfileLoad->setVisible(true); - ui->actionProfileRemove->setVisible(true); - ui->actionProfileSave->setVisible(true); + toolBarActions[QString("profileLoad")]->setVisible(true); + toolBarActions[QString("profileRemove")]->setVisible(true); + toolBarActions[QString("profileSave")]->setVisible(true); } } @@ -135,21 +135,43 @@ void MainWindow::updateMenuWifi() { if (debug) qDebug() << PDEBUG; - ui->actionWifiRefresh->setVisible(true); + toolBarActions[QString("wifiRefresh")]->setVisible(true); if (ui->tableWidget_wifi->currentItem() == 0) return; if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 4)->text().isEmpty()) { if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 3)->text().isEmpty()) { - ui->actionWifiStart->setText(QApplication::translate("MainWindow", "Stop WiFi")); - ui->actionWifiStart->setIcon(QIcon::fromTheme("process-stop")); + toolBarActions[QString("wifiStart")]->setText(QApplication::translate("MainWindow", "Stop")); + toolBarActions[QString("wifiStart")]->setIcon(QIcon::fromTheme("process-stop")); } else { - ui->actionWifiStart->setText(QApplication::translate("MainWindow", "Start WiFi")); - ui->actionWifiStart->setIcon(QIcon::fromTheme("system-run")); + toolBarActions[QString("wifiStart")]->setText(QApplication::translate("MainWindow", "Start")); + toolBarActions[QString("wifiStart")]->setIcon(QIcon::fromTheme("system-run")); } } else { - ui->actionWifiStart->setText(QApplication::translate("MainWindow", "Start WiFi")); - ui->actionWifiStart->setIcon(QIcon::fromTheme("system-run")); + toolBarActions[QString("wifiStart")]->setText(QApplication::translate("MainWindow", "Start")); + toolBarActions[QString("wifiStart")]->setIcon(QIcon::fromTheme("system-run")); + } + toolBarActions[QString("wifiStart")]->setVisible(true); +} + + +void MainWindow::updateToolBars() +{ + if (debug) qDebug() << PDEBUG; + + if (sender() == toolBarActions[QString("menu")]) { + mainToolBar->setHidden(false); + actionToolBar->setHidden(true); + helpToolBar->setHidden(true); + } else if (sender() == toolBarActions[QString("actions")]) { + mainToolBar->setHidden(true); + actionToolBar->setHidden(false); + helpToolBar->setHidden(true); + updateMenu(); + } else if (sender() == toolBarActions[QString("help")]) { + mainToolBar->setHidden(true); + actionToolBar->setHidden(true); + helpToolBar->setHidden(false); + } - ui->actionWifiStart->setVisible(true); } @@ -543,32 +565,6 @@ void MainWindow::mainTabSwitchToProfile() } -void MainWindow::mainTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous) -{ - Q_UNUSED(previous); - if (debug) qDebug() << PDEBUG; - if (!checkExternalApps(QString("netctl"))) - return errorWin->showWindow(1, QString(PDEBUG)); - if (current == 0) { - ui->pushButton_mainRestart->setDisabled(true); - ui->pushButton_mainStart->setDisabled(true); - return; - } - - ui->pushButton_mainStart->setEnabled(true); - - if (!ui->tableWidget_main->item(current->row(), 2)->text().isEmpty()) { - ui->pushButton_mainRestart->setEnabled(true); - ui->pushButton_mainStart->setText(QApplication::translate("MainWindow", "Stop")); - ui->pushButton_mainStart->setIcon(QIcon::fromTheme("process-stop")); - } else { - ui->pushButton_mainRestart->setDisabled(true); - ui->pushButton_mainStart->setText(QApplication::translate("MainWindow", "Start")); - ui->pushButton_mainStart->setIcon(QIcon::fromTheme("system-run")); - } -} - - // profile tab slots void MainWindow::profileTabChangeState(const QString current) { @@ -1042,12 +1038,9 @@ void MainWindow::wifiTabSetEnabled(const bool state) if (state) { ui->tableWidget_wifi->show(); - ui->pushButton_wifiRefresh->setEnabled(true); ui->label_wifi->hide(); } else { ui->tableWidget_wifi->hide(); - ui->pushButton_wifiRefresh->setDisabled(true); - ui->pushButton_wifiStart->setDisabled(true); ui->label_wifi->show(); } } @@ -1125,34 +1118,3 @@ void MainWindow::wifiTabStart() updateWifiTab(); } - - -void MainWindow::wifiTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous) -{ - Q_UNUSED(previous); - if (debug) qDebug() << PDEBUG; - if (!checkExternalApps(QString("wpasup"))) - return errorWin->showWindow(1, QString(PDEBUG)); - if (current == 0) { - ui->pushButton_wifiStart->setDisabled(true); - return; - } - if (ui->tableWidget_wifi->item(current->row(), 0)->text() == QString("")) { - ui->pushButton_wifiStart->setDisabled(true); - return; - } - - ui->pushButton_wifiStart->setEnabled(true); - if (!ui->tableWidget_wifi->item(current->row(), 4)->text().isEmpty()) { - if (!ui->tableWidget_wifi->item(current->row(), 3)->text().isEmpty()) { - ui->pushButton_wifiStart->setText(QApplication::translate("MainWindow", "Stop")); - ui->pushButton_wifiStart->setIcon(QIcon::fromTheme("process-stop")); - } else { - ui->pushButton_wifiStart->setText(QApplication::translate("MainWindow", "Start")); - ui->pushButton_wifiStart->setIcon(QIcon::fromTheme("system-run")); - } - } else { - ui->pushButton_wifiStart->setText(QApplication::translate("MainWindow", "Start")); - ui->pushButton_wifiStart->setIcon(QIcon::fromTheme("system-run")); - } -} diff --git a/sources/gui/src/mainwindow.cpp b/sources/gui/src/mainwindow.cpp index 4ba2b88..756baa2 100644 --- a/sources/gui/src/mainwindow.cpp +++ b/sources/gui/src/mainwindow.cpp @@ -274,6 +274,7 @@ bool MainWindow::checkExternalApps(const QString apps = QString("all")) { if (debug) qDebug() << PDEBUG; + if (configuration[QString("SKIPCOMPONENTS")] == QString("true")) return true; QStringList cmd; cmd.append("which"); cmd.append(configuration[QString("SUDO_PATH")]); @@ -344,52 +345,23 @@ void MainWindow::createActions() if (debug) qDebug() << PDEBUG; connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(updateTabs(int))); - connect(ui->actionAbout, SIGNAL(triggered(bool)), this, SLOT(showAboutWindow())); - connect(ui->actionApi, SIGNAL(triggered(bool)), this, SLOT(showApi())); - connect(ui->actionLibrary, SIGNAL(triggered(bool)), this, SLOT(showLibrary())); - connect(ui->actionNetctlAuto, SIGNAL(triggered(bool)), this, SLOT(showNetctlAutoWindow())); - connect(ui->actionReport, SIGNAL(triggered(bool)), this, SLOT(reportABug())); - connect(ui->actionSecurity, SIGNAL(triggered(bool)), this, SLOT(showSecurityNotes())); - connect(ui->actionSettings, SIGNAL(triggered(bool)), this, SLOT(showSettingsWindow())); - connect(ui->actionQuit, SIGNAL(triggered(bool)), this, SLOT(closeMainWindow())); - - // actions menu - connect(ui->menuActions, SIGNAL(aboutToShow()), this, SLOT(updateMenu())); - connect(ui->actionMainEdit, SIGNAL(triggered(bool)), this, SLOT(mainTabEditProfile())); - connect(ui->actionMainEnable, SIGNAL(triggered(bool)), this, SLOT(mainTabEnableProfile())); - connect(ui->actionMainRefresh, SIGNAL(triggered(bool)), this, SLOT(updateMainTab())); - connect(ui->actionMainRemove, SIGNAL(triggered(bool)), this, SLOT(mainTabRemoveProfile())); - connect(ui->actionMainRestart, SIGNAL(triggered(bool)), this, SLOT(mainTabRestartProfile())); - connect(ui->actionMainStart, SIGNAL(triggered(bool)), this, SLOT(mainTabStartProfile())); - connect(ui->actionMainStopAll, SIGNAL(triggered(bool)), this, SLOT(mainTabStopAllProfiles())); - connect(ui->actionMainSwitch, SIGNAL(triggered(bool)), this, SLOT(mainTabSwitchToProfile())); - connect(ui->actionProfileClear, SIGNAL(triggered(bool)), this, SLOT(profileTabClear())); - connect(ui->actionProfileLoad, SIGNAL(triggered(bool)), this, SLOT(profileTabLoadProfile())); - connect(ui->actionProfileRemove, SIGNAL(triggered(bool)), this, SLOT(profileTabRemoveProfile())); - connect(ui->actionProfileSave, SIGNAL(triggered(bool)), this, SLOT(profileTabCreateProfile())); - connect(ui->actionWifiRefresh, SIGNAL(triggered(bool)), this, SLOT(updateWifiTab())); - connect(ui->actionWifiStart, SIGNAL(triggered(bool)), this, SLOT(wifiTabStart())); // main tab events - connect(ui->pushButton_mainRefresh, SIGNAL(clicked(bool)), this, SLOT(updateMainTab())); - connect(ui->pushButton_mainRestart, SIGNAL(clicked(bool)), this, SLOT(mainTabRestartProfile())); - connect(ui->pushButton_mainStart, SIGNAL(clicked(bool)), this, SLOT(mainTabStartProfile())); connect(ui->pushButton_netctlAuto, SIGNAL(clicked(bool)), this, SLOT(showNetctlAutoWindow())); connect(ui->tableWidget_main, SIGNAL(itemActivated(QTableWidgetItem *)), this, SLOT(mainTabStartProfile())); - connect(ui->tableWidget_main, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)), this, SLOT(mainTabRefreshButtons(QTableWidgetItem *, QTableWidgetItem *))); + connect(ui->tableWidget_main, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)), + this, SLOT(updateMenuMain())); connect(ui->tableWidget_main, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(mainTabContextualMenu(QPoint))); // profile tab events connect(ui->comboBox_profile, SIGNAL(currentIndexChanged(QString)), this, SLOT(profileTabLoadProfile())); - connect(ui->pushButton_profileClear, SIGNAL(clicked(bool)), this, SLOT(profileTabClear())); - connect(ui->pushButton_profileSave, SIGNAL(clicked(bool)), this, SLOT(profileTabCreateProfile())); + connect(ui->comboBox_profile, SIGNAL(editTextChanged(QString)), this, SLOT(updateMenuProfile())); connect(generalWid->connectionType, SIGNAL(currentIndexChanged(QString)), this, SLOT(profileTabChangeState(QString))); // wifi tab events - connect(ui->pushButton_wifiRefresh, SIGNAL(clicked(bool)), this, SLOT(updateWifiTab())); - connect(ui->pushButton_wifiStart, SIGNAL(clicked(bool)), this, SLOT(wifiTabStart())); connect(ui->tableWidget_wifi, SIGNAL(itemActivated(QTableWidgetItem *)), this, SLOT(wifiTabStart())); - connect(ui->tableWidget_wifi, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)), this, SLOT(wifiTabRefreshButtons(QTableWidgetItem *, QTableWidgetItem *))); + connect(ui->tableWidget_wifi, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)), + this, SLOT(updateMenuWifi())); connect(ui->tableWidget_wifi, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(wifiTabContextualMenu(QPoint))); } @@ -465,6 +437,108 @@ void MainWindow::createObjects() ui->scrollAreaWidgetContents->layout()->addWidget(vlanWid); wirelessWid = new WirelessWidget(this, configuration); ui->scrollAreaWidgetContents->layout()->addWidget(wirelessWid); + + createToolBars(); +} + + +void MainWindow::createToolBars() +{ + if (debug) qDebug() << PDEBUG; + + toolBarActions[QString("menu")] = ui->menuBar->addAction(QApplication::translate("MainWindow", "Menu"), + this, SLOT(updateToolBars())); + toolBarActions[QString("actions")] = ui->menuBar->addAction(QApplication::translate("MainWindow", "Actions"), + this, SLOT(updateToolBars())); + toolBarActions[QString("help")] = ui->menuBar->addAction(QApplication::translate("MainWindow", "Help"), + this, SLOT(updateToolBars())); + + mainToolBar = new QToolBar(this); + mainToolBar->setToolButtonStyle(Qt::ToolButtonFollowStyle); + toolBarActions[QString("netctlAuto")] = mainToolBar->addAction(QApplication::translate("MainWindow", "netctl-auto"), + this, SLOT(showNetctlAutoWindow())); + toolBarActions[QString("settings")] = mainToolBar->addAction(QIcon::fromTheme(QString("configure")), + QApplication::translate("MainWindow", "Settings"), + this, SLOT(showSettingsWindow())); + appShortcuts[QString("settingsShortcut")] = new QShortcut(QKeySequence(QApplication::translate("MainWindow", "Ctrl+S")), + this, SLOT(showSettingsWindow())); + toolBarActions[QString("quit")] = mainToolBar->addAction(QIcon::fromTheme(QString("exit")), + QApplication::translate("MainWindow", "Quit"), + this, SLOT(closeMainWindow())); + appShortcuts[QString("quitShortcut")] = new QShortcut(QKeySequence(QApplication::translate("MainWindow", "Ctrl+Q")), + this, SLOT(closeMainWindow())); + ui->verticalLayout_4->insertWidget(0, mainToolBar); + mainToolBar->setHidden(true); + + actionToolBar = new QToolBar(this); + actionToolBar->setToolButtonStyle(Qt::ToolButtonFollowStyle); + toolBarActions[QString("mainRefresh")] = actionToolBar->addAction(QIcon::fromTheme(QString("stock-refresh")), + QApplication::translate("MainWindow", "Refresh"), + this, SLOT(updateMainTab())); + toolBarActions[QString("profileClear")] = actionToolBar->addAction(QIcon::fromTheme(QString("edit-clear")), + QApplication::translate("MainWindow", "Clear"), + this, SLOT(profileTabClear())); + toolBarActions[QString("wifiRefresh")] = actionToolBar->addAction(QIcon::fromTheme(QString("stock-refresh")), + QApplication::translate("MainWindow", "Refresh"), + this, SLOT(updateWifiTab())); + actionToolBar->addSeparator(); + toolBarActions[QString("mainStart")] = actionToolBar->addAction(QIcon::fromTheme(QString("system-run")), + QApplication::translate("MainWindow", "Start"), + this, SLOT(mainTabStartProfile())); + toolBarActions[QString("mainSwitch")] = actionToolBar->addAction(QIcon::fromTheme(QString("system-run")), + QApplication::translate("MainWindow", "Switch"), + this, SLOT(mainTabSwitchToProfile())); + toolBarActions[QString("mainRestart")] = actionToolBar->addAction(QIcon::fromTheme(QString("stock-refresh")), + QApplication::translate("MainWindow", "Restart"), + this, SLOT(mainTabRestartProfile())); + toolBarActions[QString("mainEnable")] = actionToolBar->addAction(QIcon::fromTheme(QString("edit-add")), + QApplication::translate("MainWindow", "Enable"), + this, SLOT(mainTabEnableProfile())); + toolBarActions[QString("mainStopAll")] = actionToolBar->addAction(QIcon::fromTheme(QString("process-stop")), + QApplication::translate("MainWindow", "Stop all"), + this, SLOT(mainTabStopAllProfiles())); + toolBarActions[QString("profileLoad")] = actionToolBar->addAction(QIcon::fromTheme(QString("document-open")), + QApplication::translate("MainWindow", "Load"), + this, SLOT(profileTabLoadProfile())); + toolBarActions[QString("profileSave")] = actionToolBar->addAction(QIcon::fromTheme(QString("document-save")), + QApplication::translate("MainWindow", "Save"), + this, SLOT(profileTabCreateProfile())); + toolBarActions[QString("wifiStart")] = actionToolBar->addAction(QIcon::fromTheme(QString("system-run")), + QApplication::translate("MainWindow", "Start"), + this, SLOT(wifiTabStart())); + actionToolBar->addSeparator(); + toolBarActions[QString("mainEdit")] = actionToolBar->addAction(QIcon::fromTheme(QString("edit")), + QApplication::translate("MainWindow", "Edit"), + this, SLOT(mainTabEditProfile())); + toolBarActions[QString("mainRemove")] = actionToolBar->addAction(QIcon::fromTheme(QString("edit-delete")), + QApplication::translate("MainWindow", "Remove"), + this, SLOT(mainTabRemoveProfile())); + toolBarActions[QString("profileRemove")] = actionToolBar->addAction(QIcon::fromTheme(QString("edit-delete")), + QApplication::translate("MainWindow", "Remove"), + this, SLOT(profileTabRemoveProfile())); + ui->verticalLayout_4->insertWidget(0, actionToolBar); + actionToolBar->setHidden(true); + + helpToolBar = new QToolBar(this); + helpToolBar->setToolButtonStyle(Qt::ToolButtonFollowStyle); + toolBarActions[QString("security")] = helpToolBar->addAction(QIcon::fromTheme(QString("security-medium")), + QApplication::translate("MainWindow", "Security"), + this, SLOT(showSecurityNotes())); + toolBarActions[QString("api")] = helpToolBar->addAction(QApplication::translate("MainWindow", "DBus API"), + this, SLOT(showApi())); + toolBarActions[QString("library")] = helpToolBar->addAction(QApplication::translate("MainWindow", "Library"), + this, SLOT(showLibrary())); + helpToolBar->addSeparator(); + toolBarActions[QString("report")] = helpToolBar->addAction(QIcon::fromTheme(QString("tools-report-bug")), + QApplication::translate("MainWindow", "Report a bug"), + this, SLOT(reportABug())); + toolBarActions[QString("about")] = helpToolBar->addAction(QIcon::fromTheme(QString("help-about")), + QApplication::translate("MainWindow", "About"), + this, SLOT(showAboutWindow())); + ui->verticalLayout_4->insertWidget(0, helpToolBar); + helpToolBar->setHidden(true); + + toolBarActions[QString("menu")]->trigger(); } @@ -494,8 +568,25 @@ void MainWindow::deleteObjects() if (errorWin != nullptr) delete errorWin; if (netctlAutoWin != nullptr) delete netctlAutoWin; if (settingsWin != nullptr) delete settingsWin; + if (actionToolBar != nullptr) { + actionToolBar->clear(); + delete actionToolBar; + } + if (helpToolBar != nullptr) { + helpToolBar->clear(); + delete helpToolBar; + } + if (mainToolBar != nullptr) { + mainToolBar->clear(); + delete mainToolBar; + delete appShortcuts[QString("settingsShortcut")]; + delete appShortcuts[QString("quitShortcut")]; + } if (trayIcon != nullptr) delete trayIcon; - if (ui != nullptr) delete ui; + if (ui != nullptr) { + ui->menuBar->clear(); + delete ui; + } } diff --git a/sources/gui/src/mainwindow.h b/sources/gui/src/mainwindow.h index d4061dd..ee7476f 100644 --- a/sources/gui/src/mainwindow.h +++ b/sources/gui/src/mainwindow.h @@ -20,7 +20,9 @@ #include #include +#include #include +#include #include @@ -103,6 +105,7 @@ private slots: void updateMenuMain(); void updateMenuProfile(); void updateMenuWifi(); + void updateToolBars(); // tab update slots void updateMainTab(); void updateProfileTab(); @@ -117,7 +120,6 @@ private slots: void mainTabStartProfile(); void mainTabStopAllProfiles(); void mainTabSwitchToProfile(); - void mainTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous); // profile tab slots void profileTabChangeState(const QString current); void profileTabClear(); @@ -128,11 +130,15 @@ private slots: void wifiTabContextualMenu(const QPoint &pos); void wifiTabSetEnabled(const bool state); void wifiTabStart(); - void wifiTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous); private: // ui TrayIcon *trayIcon = nullptr; + QMap appShortcuts; + QMap toolBarActions; + QToolBar *actionToolBar = nullptr; + QToolBar *helpToolBar = nullptr; + QToolBar *mainToolBar = nullptr; Ui::MainWindow *ui = nullptr; AboutWindow *aboutWin = nullptr; ErrorWindow *errorWin = nullptr; @@ -160,6 +166,7 @@ private: void createActions(); void createDBusSession(); void createObjects(); + void createToolBars(); void deleteObjects(); void keyPressEvent(QKeyEvent *pressedKey); QString configPath; diff --git a/sources/gui/src/mainwindow.ui b/sources/gui/src/mainwindow.ui index 24131d8..e6ffa64 100644 --- a/sources/gui/src/mainwindow.ui +++ b/sources/gui/src/mainwindow.ui @@ -101,77 +101,6 @@ - - - - - - Refresh - - - - - - - - Ctrl+R - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - Restart - - - - - - - - true - - - - - - - false - - - Start - - - - - - - - true - - - - - @@ -228,7 +157,7 @@ 0 0 437 - 338 + 371 @@ -241,47 +170,6 @@ - - - - - - Clear - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Save - - - - - - - - - - @@ -357,59 +245,6 @@ - - - - - - Refresh - - - - - - - - Ctrl+R - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - Start - - - - - - - - true - - - - - @@ -425,271 +260,14 @@ 22 - - - Menu - - - - - - - - Actions - - - - - - - - - - - - - - - - - - - - - Help - - - - - - - - - - - - - - - - - - - Settings - - - Ctrl+S - - - - - - - - - - Quit - - - Ctrl+Q - - - - - - - - - - Refresh - - - - - - - - - - Start profile - - - - - - - - - - Restart profile - - - - - - - - - - Enable profile - - - - - - - - - - Edit profile - - - - - - - - - - Remove profile - - - - - - - - - - Clear - - - - - - - - - - Refresh - - - - - - - - - - Load profile - - - - - - - - - - Save profile - - - - - - - - - - Start Wi-Fi - - - - - - - - - - Remove profile - - - - - netctl-auto - - - - - - - - - - About - - - - - - - - - - Report a bug - - - - - DBus API reference - - - - - - - - - - Security notes - - - - - Library documentation - - - - - - - - Switch to profile - - - - - - - - Stop all profiles - - tabWidget tableWidget_main - pushButton_mainRefresh - pushButton_mainRestart - pushButton_mainStart scrollArea - pushButton_profileClear - pushButton_profileSave tableWidget_wifi - pushButton_wifiRefresh - pushButton_wifiStart diff --git a/sources/gui/src/settingswindow.cpp b/sources/gui/src/settingswindow.cpp index 24e639b..e327d5f 100644 --- a/sources/gui/src/settingswindow.cpp +++ b/sources/gui/src/settingswindow.cpp @@ -263,6 +263,10 @@ QMap SettingsWindow::readSettings() settings[QString("PREFERED_IFACE")] = ui->lineEdit_interface->text(); settings[QString("PROFILE_DIR")] = ui->lineEdit_profilePath->text(); settings[QString("RFKILL_DIR")] = ui->lineEdit_rfkill->text(); + if (ui->checkBox_components->checkState() == 2) + settings[QString("SKIPCOMPONENTS")] = QString("true"); + else + settings[QString("SKIPCOMPONENTS")] = QString("false"); if (ui->checkBox_startToTray->checkState() == 2) settings[QString("STARTTOTRAY")] = QString("true"); else @@ -319,6 +323,10 @@ void SettingsWindow::setSettings(const QMap settings) ui->lineEdit_interface->setText(settings[QString("PREFERED_IFACE")]); ui->lineEdit_profilePath->setText(settings[QString("PROFILE_DIR")]); ui->lineEdit_rfkill->setText(settings[QString("RFKILL_DIR")]); + if (settings[QString("SKIPCOMPONENTS")] == QString("true")) + ui->checkBox_components->setCheckState(Qt::Checked); + else + ui->checkBox_components->setCheckState(Qt::Unchecked); if (settings[QString("STARTTOTRAY")] == QString("true")) ui->checkBox_startToTray->setCheckState(Qt::Checked); else @@ -362,6 +370,7 @@ QMap SettingsWindow::getDefault() settings[QString("PREFERED_IFACE")] = QString(""); settings[QString("PROFILE_DIR")] = QString("/etc/netctl/"); settings[QString("RFKILL_DIR")] = QString("/sys/class/rfkill/"); + settings[QString("SKIPCOMPONENTS")] = QString("false"); settings[QString("STARTTOTRAY")] = QString("false"); settings[QString("SUDO_PATH")] = QString("/usr/bin/kdesu"); settings[QString("SYSTEMCTL_PATH")] = QString("/usr/bin/systemctl"); diff --git a/sources/gui/src/settingswindow.ui b/sources/gui/src/settingswindow.ui index 6853ae0..51ac9cf 100644 --- a/sources/gui/src/settingswindow.ui +++ b/sources/gui/src/settingswindow.ui @@ -180,6 +180,13 @@ + + + + Skip components checking + + + @@ -211,8 +218,8 @@ 0 0 - 464 - 336 + 397 + 256 diff --git a/sources/gui/zsh-completions b/sources/gui/zsh-completions index 195caca..48eaf8d 100644 --- a/sources/gui/zsh-completions +++ b/sources/gui/zsh-completions @@ -55,6 +55,7 @@ _netctl_gui_settings=( 'PREFERED_IFACE' 'PROFILE_DIR' 'RFKILL_DIR' + 'SKIPCOMPONENTS' 'STARTTOTRAY' 'SUDO_PATH' 'SYSTEMCTL_PATH' diff --git a/sources/helper/netctlgui-helper.conf b/sources/helper/netctlgui-helper.conf index 35e13b6..6fa1d2d 100644 --- a/sources/helper/netctlgui-helper.conf +++ b/sources/helper/netctlgui-helper.conf @@ -39,6 +39,9 @@ PROFILE_DIR=/etc/netctl/ # path to directory with rfkill devices. # This option is not recognized by netctlgui-helper RFKILL_DIR=/sys/class/rfkill/ +# skip external components checking +# This option is not recognized by netctlgui-helper +SKIPCOMPONENTS=false # start netctl-gui minimized to tray if it is available. # This option is not recognized by netctlgui-helper STARTTOTRAY=false diff --git a/sources/helper/netctlgui-helper.conf.5 b/sources/helper/netctlgui-helper.conf.5 index f7edf05..27a93ae 100644 --- a/sources/helper/netctlgui-helper.conf.5 +++ b/sources/helper/netctlgui-helper.conf.5 @@ -70,6 +70,9 @@ path to directory with .BR rfkill (8) devices. This option is not recognized by .BR netctlgui-helper (1) +.IP "SKIPCOMPONENTS=false" +skip external components checking. This option is not recognized by +.BR netctlgui-helper (1) .IP "STARTTOTRAY=false" start .BR netctl-gui (1) diff --git a/sources/helper/src/netctlhelper.cpp b/sources/helper/src/netctlhelper.cpp index 759bbb8..d819ea6 100644 --- a/sources/helper/src/netctlhelper.cpp +++ b/sources/helper/src/netctlhelper.cpp @@ -122,6 +122,7 @@ QMap NetctlHelper::getDefault() settings[QString("PREFERED_IFACE")] = QString(""); settings[QString("PROFILE_DIR")] = QString("/etc/netctl/"); settings[QString("RFKILL_DIR")] = QString("/sys/class/rfkill/"); + settings[QString("SKIPCOMPONENTS")] = QString("false"); settings[QString("STARTTOTRAY")] = QString("false"); settings[QString("SUDO_PATH")] = QString("/usr/bin/kdesu"); settings[QString("SYSTEMCTL_PATH")] = QString("/usr/bin/systemctl");