From d42a3ca56a88f49f56a935a40465dac1135fc3b5 Mon Sep 17 00:00:00 2001 From: Qv2ray-dev <59914293+Qv2ray-dev@users.noreply.github.com> Date: Sat, 22 Feb 2020 18:17:04 +0800 Subject: [PATCH] wip: try to fix CI before continue -- stage 1 --- Qv2ray.pro | 2 +- makespec/BUILDVERSION | 2 +- src/core/handler/ConnectionHandler.cpp | 29 ++---- src/ui/w_MainWindow.cpp | 19 ++-- src/ui/w_MainWindow.hpp | 4 +- src/ui/w_MainWindow.ui | 9 +- ...ionWidget.cpp => ConnectionItemWidget.cpp} | 24 ++--- ...ionWidget.hpp => ConnectionItemWidget.hpp} | 16 ++-- src/ui/widgets/ConnectionItemWidget.ui | 93 +++++++++++++++++++ src/ui/widgets/ConnectionWidget.ui | 66 ------------- 10 files changed, 146 insertions(+), 118 deletions(-) rename src/ui/widgets/{ConnectionWidget.cpp => ConnectionItemWidget.cpp} (60%) rename src/ui/widgets/{ConnectionWidget.hpp => ConnectionItemWidget.hpp} (68%) create mode 100644 src/ui/widgets/ConnectionItemWidget.ui delete mode 100644 src/ui/widgets/ConnectionWidget.ui diff --git a/Qv2ray.pro b/Qv2ray.pro index 8f29b9f5..62900ead 100644 --- a/Qv2ray.pro +++ b/Qv2ray.pro @@ -109,8 +109,8 @@ Qv2rayAddSource(ui, _, w_MainWindow_extra, cpp) Qv2rayAddSource(ui, _, w_PreferencesWindow, cpp, hpp, ui) Qv2rayAddSource(ui, _, w_ScreenShot_Core, cpp, hpp, ui) Qv2rayAddSource(ui, _, w_SubscriptionManager, cpp, hpp, ui) -Qv2rayAddSource(ui, widgets, ConnectionWidget, cpp, hpp, ui) Qv2rayAddSource(ui, widgets, StreamSettingsWidget, cpp, hpp, ui) +Qv2rayAddSource(ui, widgets, ConnectionItemWidget, cpp, hpp, ui) Qv2rayAddSource(ui, widgets, ConnectionInfoWidget, cpp, hpp, ui) SOURCES += $$PWD/src/main.cpp diff --git a/makespec/BUILDVERSION b/makespec/BUILDVERSION index 8b6eff0e..24b73993 100644 --- a/makespec/BUILDVERSION +++ b/makespec/BUILDVERSION @@ -1 +1 @@ -3887 +3889 diff --git a/src/core/handler/ConnectionHandler.cpp b/src/core/handler/ConnectionHandler.cpp index 9d05346c..63704d1b 100644 --- a/src/core/handler/ConnectionHandler.cpp +++ b/src/core/handler/ConnectionHandler.cpp @@ -82,7 +82,7 @@ namespace Qv2ray::core::handlers } - const QString QvConnectionHandler:: GetConnectionBasicInfo(const ConnectionId &id) const + const QString QvConnectionHandler::GetConnectionBasicInfo(const ConnectionId &id) const { QString result; @@ -91,28 +91,19 @@ namespace Qv2ray::core::handlers } CONFIGROOT root = CHGetConnectionRoot_p(connections[id].groupId, id); - bool isTLSEnabled = false; - - if (root.contains("inbounds") && !root["inbounds"].toArray().isEmpty()) { - QString inProtocol = tr("Inbounds: "); - - for (auto inbound : root["inbounds"].toArray()) { - inProtocol.append(inbound.toObject()["protocol"].toString()); - inProtocol.append("/"); - } - - inProtocol.chop(1); - result.append(inProtocol); - } - QStringList protocols; QStringList streamProtocols; + auto outbound = root["outbounds"].toArray().first().toObject(); + result.append(outbound["protocol"].toString()); - for (auto outbound : root["outbounds"].toArray()) { - protocols.append(outbound.toObject()["protocol"].toString()); + if (outbound.contains("streamSettings")) { + result.append(" + " + outbound["streamSettings"].toObject()["network"].toString()); + + if (outbound["streamSettings"].toObject().contains("tls")) { + result.append(outbound["streamSettings"].toObject()["tls"].toBool() ? " + tls" : ""); + } } - result.chop(1); return result; } @@ -134,7 +125,7 @@ namespace Qv2ray::core::handlers const CONFIGROOT QvConnectionHandler::CHGetConnectionRoot_p(const GroupId &group, const ConnectionId &id) const { - auto path = QV2RAY_CONNECTIONS_DIR + group.toString() + "/" + id.toString() + QV2RAY_CONFIG_FILE_EXTENSION; + auto path = group.toString() + "/" + id.toString() + QV2RAY_CONFIG_FILE_EXTENSION; path.prepend(groups[group].isSubscription ? QV2RAY_SUBSCRIPTION_DIR : QV2RAY_CONNECTIONS_DIR); return CONFIGROOT(JsonFromString(StringFromFile(path))); } diff --git a/src/ui/w_MainWindow.cpp b/src/ui/w_MainWindow.cpp index 27a250e0..729f03c9 100644 --- a/src/ui/w_MainWindow.cpp +++ b/src/ui/w_MainWindow.cpp @@ -32,7 +32,7 @@ #define TRAY_TOOLTIP_PREFIX "Qv2ray " QV2RAY_VERSION_STRING // -#define GetItemWidget(item) (static_cast(connectionListWidget->itemWidget(item, 0))) +#define GetItemWidget(item) (qobject_cast(connectionListWidget->itemWidget(item, 0))) // //#define ItemConnectionIdentifier(__item__) (__item__->data(0, Qt::UserRole).value()) // @@ -324,20 +324,25 @@ void MainWindow::OnConfigListChanged(bool need_restart) auto groups = ConnectionHandler->AllGroups(); for (auto group : groups) { - auto groupItem = new QTreeWidgetItem(); + auto groupItem = new QTreeWidgetItem(QStringList() << "" << ConnectionHandler->GetGroup(group).displayName); connectionListWidget->addTopLevelItem(groupItem); - connectionListWidget->setItemWidget(groupItem, 0, new ConnectionWidget(group, connectionListWidget)); + connectionListWidget->setItemWidget(groupItem, 0, new ConnectionItemWidget(group, connectionListWidget)); auto connections = ConnectionHandler->Connections(group); for (auto connection : connections) { - auto connectionItem = new QTreeWidgetItem(); + auto connectionItem = new QTreeWidgetItem(QStringList() << "" << ConnectionHandler->GetConnection(connection).displayName); groupItem->addChild(connectionItem); - auto widget = new ConnectionWidget(connection, connectionListWidget); - connect(widget, &ConnectionWidget::RequestWidgetFocus, this, &MainWindow::onConnectionWidgetFocusRequested); + auto widget = new ConnectionItemWidget(connection, connectionListWidget); + connect(widget, &ConnectionItemWidget::RequestWidgetFocus, this, &MainWindow::onConnectionWidgetFocusRequested); connectionListWidget->setItemWidget(connectionItem, 0, widget); } } + // Do not sort + //connectionListWidget->sortItems(1, Qt::SortOrder::AscendingOrder); + // + // ================================================================ + // //auto wasRunning = vinstance->KernelStarted && need_restart; // //if (wasRunning) on_stopButton_clicked(); @@ -1011,7 +1016,7 @@ void MainWindow::OnConnected(const ConnectionId &id) } -void MainWindow::onConnectionWidgetFocusRequested(const ConnectionWidget *_widget) +void MainWindow::onConnectionWidgetFocusRequested(const ConnectionItemWidget *_widget) { if (_widget == nullptr) { return; diff --git a/src/ui/w_MainWindow.hpp b/src/ui/w_MainWindow.hpp index 3e4e1ee1..78f20914 100644 --- a/src/ui/w_MainWindow.hpp +++ b/src/ui/w_MainWindow.hpp @@ -14,7 +14,7 @@ #include "ui/messaging/QvMessageBus.hpp" // ========================================================================================== -#include "ui/widgets/ConnectionWidget.hpp" +#include "ui/widgets/ConnectionItemWidget.hpp" #include "ui/widgets/ConnectionInfoWidget.hpp" class MainWindow : public QMainWindow, Ui::MainWindow @@ -72,7 +72,7 @@ class MainWindow : public QMainWindow, Ui::MainWindow private slots: // - void onConnectionWidgetFocusRequested(const ConnectionWidget *widget); + void onConnectionWidgetFocusRequested(const ConnectionItemWidget *widget); // void on_action_StartThis_triggered(); void on_action_RCM_EditJson_triggered(); diff --git a/src/ui/w_MainWindow.ui b/src/ui/w_MainWindow.ui index 5096b276..2906d25a 100644 --- a/src/ui/w_MainWindow.ui +++ b/src/ui/w_MainWindow.ui @@ -127,6 +127,9 @@ QAbstractItemView::ScrollPerPixel + + 0 + true @@ -386,8 +389,8 @@ 0 0 - 459 - 848 + 480 + 851 @@ -553,7 +556,7 @@ 0 0 800 - 29 + 26 diff --git a/src/ui/widgets/ConnectionWidget.cpp b/src/ui/widgets/ConnectionItemWidget.cpp similarity index 60% rename from src/ui/widgets/ConnectionWidget.cpp rename to src/ui/widgets/ConnectionItemWidget.cpp index 6f1f0a6c..f42899ce 100644 --- a/src/ui/widgets/ConnectionWidget.cpp +++ b/src/ui/widgets/ConnectionItemWidget.cpp @@ -1,32 +1,34 @@ -#include "ConnectionWidget.hpp" +#include "ConnectionItemWidget.hpp" #include "common/QvHelpers.hpp" -ConnectionWidget::ConnectionWidget(QWidget *parent) : QWidget(parent), connectionId("null"), groupId("null") +ConnectionItemWidget::ConnectionItemWidget(QWidget *parent) : QWidget(parent), connectionId("null"), groupId("null") { setupUi(this); - connect(ConnectionHandler, &QvConnectionHandler::OnConnected, this, &ConnectionWidget::OnConnected); + connect(ConnectionHandler, &QvConnectionHandler::OnConnected, this, &ConnectionItemWidget::OnConnected); } -ConnectionWidget::ConnectionWidget(const ConnectionId &identifier, QWidget *parent): ConnectionWidget(parent) +ConnectionItemWidget::ConnectionItemWidget(const ConnectionId &identifier, QWidget *parent): ConnectionItemWidget(parent) { auto connection = ConnectionHandler->GetConnection(identifier); connectionId = identifier; groupId = connection.groupId; itemType = NODE_ITEM; - connNameLabel->setText(connection.displayName); + connNameLabel->setText("" + connection.displayName); latencyLabel->setText(QSTRN(connection.latency) + " " + tr("ms")); - connTypeLabel->setText("DODO"); + connTypeLabel->setText(tr("Type: ") + ConnectionHandler->GetConnectionBasicInfo(identifier)); dataLabel->setText(FormatBytes(connection.upLinkData + connection.downLinkData)); + // + indentSpacer->changeSize(10, indentSpacer->sizeHint().height()); } // ======================================= Initialisation for root nodes. -ConnectionWidget::ConnectionWidget(const GroupId &id, QWidget *parent) : ConnectionWidget(parent) +ConnectionItemWidget::ConnectionItemWidget(const GroupId &id, QWidget *parent) : ConnectionItemWidget(parent) { groupId = id; itemType = GROUP_HEADER_ITEM; auto displayName = ConnectionHandler->GetGroup(id).displayName; auto connectionCount = ConnectionHandler->Connections(id).count(); - connNameLabel->setText(displayName); + connNameLabel->setText(/*"• " +*/ displayName); latencyLabel->setText(QSTRN(connectionCount) + " " + (connectionCount < 2 ? tr("connection") : tr("connections"))); // layout()->removeWidget(connTypeLabel); @@ -36,7 +38,7 @@ ConnectionWidget::ConnectionWidget(const GroupId &id, QWidget *parent) : Connect } -void ConnectionWidget::BeginConnection() +void ConnectionItemWidget::BeginConnection() { if (itemType == NODE_ITEM) { ConnectionHandler->StartConnection(connectionId); @@ -45,7 +47,7 @@ void ConnectionWidget::BeginConnection() } } -void ConnectionWidget::OnConnected(const ConnectionId &id) +void ConnectionItemWidget::OnConnected(const ConnectionId &id) { if (id == connectionId) { LOG(MODULE_UI, "OnConnected signal received for: " + id.toString()) @@ -53,7 +55,7 @@ void ConnectionWidget::OnConnected(const ConnectionId &id) } } -ConnectionWidget::~ConnectionWidget() +ConnectionItemWidget::~ConnectionItemWidget() { // } diff --git a/src/ui/widgets/ConnectionWidget.hpp b/src/ui/widgets/ConnectionItemWidget.hpp similarity index 68% rename from src/ui/widgets/ConnectionWidget.hpp rename to src/ui/widgets/ConnectionItemWidget.hpp index c3c294ee..2771f312 100644 --- a/src/ui/widgets/ConnectionWidget.hpp +++ b/src/ui/widgets/ConnectionItemWidget.hpp @@ -1,7 +1,7 @@ #pragma once #include -#include "ui_ConnectionWidget.h" +#include "ui_ConnectionItemWidget.h" #include "core/handler/ConnectionHandler.hpp" enum ITEM_TYPE { @@ -9,15 +9,15 @@ enum ITEM_TYPE { NODE_ITEM }; -class ConnectionWidget : public QWidget, private Ui::ConnectionWidget +class ConnectionItemWidget : public QWidget, private Ui::ConnectionWidget { Q_OBJECT public: - explicit ConnectionWidget(const ConnectionId &connecionId, QWidget *parent = nullptr); - explicit ConnectionWidget(const GroupId &groupId, QWidget *parent = nullptr); + explicit ConnectionItemWidget(const ConnectionId &connecionId, QWidget *parent = nullptr); + explicit ConnectionItemWidget(const GroupId &groupId, QWidget *parent = nullptr); // void BeginConnection(); - ~ConnectionWidget(); + ~ConnectionItemWidget(); // inline bool NameMatched(const QString &arg) { @@ -39,14 +39,14 @@ class ConnectionWidget : public QWidget, private Ui::ConnectionWidget return itemType == NODE_ITEM; } signals: - void RequestWidgetFocus(const ConnectionWidget *me); + void RequestWidgetFocus(const ConnectionItemWidget *me); private slots: void OnConnected(const ConnectionId &id); private: - explicit ConnectionWidget(QWidget *parent = nullptr); + explicit ConnectionItemWidget(QWidget *parent = nullptr); ITEM_TYPE itemType; ConnectionId connectionId; GroupId groupId; - Q_DISABLE_COPY_MOVE(ConnectionWidget) + Q_DISABLE_COPY_MOVE(ConnectionItemWidget) }; diff --git a/src/ui/widgets/ConnectionItemWidget.ui b/src/ui/widgets/ConnectionItemWidget.ui new file mode 100644 index 00000000..2157258b --- /dev/null +++ b/src/ui/widgets/ConnectionItemWidget.ui @@ -0,0 +1,93 @@ + + + ConnectionWidget + + + + 0 + 0 + 277 + 66 + + + + Form + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 0 + 0 + + + + + + + + + + + + + 12 + + + + Connection Name + + + + + + + 500ms + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + Type: vmess + tls + ws + + + + + + + + 8 + + + + 0KB + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + diff --git a/src/ui/widgets/ConnectionWidget.ui b/src/ui/widgets/ConnectionWidget.ui deleted file mode 100644 index 2d022d4b..00000000 --- a/src/ui/widgets/ConnectionWidget.ui +++ /dev/null @@ -1,66 +0,0 @@ - - - ConnectionWidget - - - - 0 - 0 - 283 - 84 - - - - Form - - - - - - - - - 12 - - - - Connection Name - - - - - - - 500ms - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Type: vmess + tls + ws - - - - - - - - 8 - - - - 0KB - - - - - - - -