diff --git a/include/global/NekoGui_DataStore.hpp b/include/global/NekoGui_DataStore.hpp index 1004a6f..f50e1f2 100644 --- a/include/global/NekoGui_DataStore.hpp +++ b/include/global/NekoGui_DataStore.hpp @@ -93,6 +93,7 @@ namespace NekoGui { int max_log_line = 200; QString splitter_state = ""; bool enable_stats = true; + QString stats_tab = ""; // either connection or log // Subscription QString user_agent = ""; // set at main.cpp diff --git a/include/ui/mainwindow.h b/include/ui/mainwindow.h index 3838877..a07af82 100644 --- a/include/ui/mainwindow.h +++ b/include/ui/mainwindow.h @@ -180,6 +180,8 @@ private: int exit_reason = 0; // QMutex mu_download_assets; + // + int toolTipID; QList> get_now_selected_list(); diff --git a/include/ui/mainwindow.ui b/include/ui/mainwindow.ui index 5335f05..3859f21 100644 --- a/include/ui/mainwindow.ui +++ b/include/ui/mainwindow.ui @@ -308,11 +308,49 @@ false - false + true false + + + true + + + Logs + + + + 0 + + + QLayout::SizeConstraint::SetDefaultConstraint + + + 1 + + + 0 + + + 1 + + + 0 + + + + + Qt::ContextMenuPolicy::CustomContextMenu + + + false + + + + + Connections @@ -387,44 +425,6 @@ - - - true - - - Logs - - - - 0 - - - QLayout::SizeConstraint::SetDefaultConstraint - - - 1 - - - 0 - - - 1 - - - 0 - - - - - Qt::ContextMenuPolicy::CustomContextMenu - - - false - - - - - diff --git a/src/global/NekoGui.cpp b/src/global/NekoGui.cpp index b79f30e..e81391d 100644 --- a/src/global/NekoGui.cpp +++ b/src/global/NekoGui.cpp @@ -310,6 +310,7 @@ namespace NekoGui { _add(new configItem("system_dns_servers", &system_dns_servers, itemType::stringList)); _add(new configItem("windows_set_admin", &windows_set_admin, itemType::boolean)); _add(new configItem("enable_stats", &enable_stats, itemType::boolean)); + _add(new configItem("stats_tab", &stats_tab, itemType::string)); } void DataStore::UpdateStartedId(int id) { diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 3954914..c07e519 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -42,6 +42,8 @@ #include #include #include +#include +#include #include <3rdparty/QHotkey/qhotkey.h> #include @@ -156,6 +158,19 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi // setup connection UI setupConnectionList(); + for (int i=0;istats_widget->tabBar()->count();i++) + { + if (ui->stats_widget->tabBar()->tabText(i) == NekoGui::dataStore->stats_tab) + { + ui->stats_widget->tabBar()->setCurrentIndex(i); + break; + } + } + connect(ui->stats_widget->tabBar(), &QTabBar::currentChanged, this, [=](int index) + { + auto tabText = ui->stats_widget->tabBar()->tabText(index); + NekoGui::dataStore->stats_tab = tabText; + }); connect(ui->connections->horizontalHeader(), &QHeaderView::sectionClicked, this, [=](int index) { // TODO this is a very bad idea to hardcode it like this, need to refactor it later @@ -842,7 +857,6 @@ void MainWindow::neko_set_spmode_vpn(bool enable, bool save) { void MainWindow::setupConnectionList() { ui->connections->horizontalHeader()->setHighlightSections(false); - ui->connections->setSelectionMode(QAbstractItemView::NoSelection); ui->connections->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->connections->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); ui->connections->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); @@ -851,6 +865,22 @@ void MainWindow::setupConnectionList() ui->connections->horizontalHeader()->setSectionResizeMode(4, QHeaderView::ResizeToContents); ui->connections->horizontalHeader()->setSectionResizeMode(5, QHeaderView::ResizeToContents); ui->connections->verticalHeader()->hide(); + connect(ui->connections, &QTableWidget::cellClicked, this, [=](int row, int column) + { + if (column > 3) return; + auto selected = ui->connections->item(row, column); + QApplication::clipboard()->setText(selected->text()); + QPoint pos = ui->connections->mapToGlobal(ui->connections->visualItemRect(selected).center()); + QToolTip::showText(pos, "Copied!", this); + auto r = ++toolTipID; + QTimer::singleShot(1500, [=] { + if (r != toolTipID) + { + return; + } + QToolTip::hideText(); + }); + }); } void MainWindow::UpdateConnectionList(const QMap& toUpdate, const QMap& toAdd)