diff --git a/client/ui/mainwindow.cpp b/client/ui/mainwindow.cpp index 4062608a..d528918c 100644 --- a/client/ui/mainwindow.cpp +++ b/client/ui/mainwindow.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -61,12 +62,6 @@ MainWindow::MainWindow(QWidget *parent) : setupTray(); setupUiConnections(); - customSitesModel = new QStringListModel(); - ui->listView_sites_custom->setModel(customSitesModel); - - connect(ui->listView_sites_custom, &QListView::doubleClicked, [&](const QModelIndex &index){ - QDesktopServices::openUrl("https://" + index.data().toString()); - }); connect(ui->lineEdit_sites_add_custom, &QLineEdit::returnPressed, [&](){ ui->pushButton_sites_add_custom->click(); }); @@ -569,7 +564,6 @@ void MainWindow::setupUiConnections() connect(ui->pushButton_back_from_share, &QPushButton::clicked, this, [this](){ goToPage(Page::GeneralSettings); }); connect(ui->pushButton_sites_add_custom, &QPushButton::clicked, this, [this](){ onPushButtonAddCustomSitesClicked(); }); - connect(ui->pushButton_sites_delete_custom, &QPushButton::clicked, this, [this](){ onPushButtonDeleteCustomSiteClicked(); }); connect(ui->radioButton_mode_selected_sites, &QRadioButton::toggled, ui->pushButton_vpn_add_site, &QPushButton::setEnabled); @@ -741,11 +735,8 @@ void MainWindow::onPushButtonAddCustomSitesClicked() } } -void MainWindow::onPushButtonDeleteCustomSiteClicked() +void MainWindow::onPushButtonDeleteCustomSiteClicked(const QString &siteToDelete) { - QModelIndex index = ui->listView_sites_custom->currentIndex(); - QString siteToDelete = index.data(Qt::DisplayRole).toString(); - if (siteToDelete.isEmpty()) { return; } @@ -762,7 +753,6 @@ void MainWindow::onPushButtonDeleteCustomSiteClicked() qDebug() << "Deleted custom ip:" << ipToDelete; m_settings.setCustomIps(customIps); - updateSettings(); if (m_vpnConnection->connectionState() == VpnProtocol::ConnectionState::Connected) { @@ -773,7 +763,6 @@ void MainWindow::onPushButtonDeleteCustomSiteClicked() void MainWindow::updateSettings() { - customSitesModel->setStringList(m_settings.customSites()); ui->radioButton_mode_selected_sites->setChecked(m_settings.customRouting()); ui->pushButton_vpn_add_site->setEnabled(m_settings.customRouting()); @@ -782,6 +771,12 @@ void MainWindow::updateSettings() ui->lineEdit_network_settings_dns1->setText(m_settings.primaryDns()); ui->lineEdit_network_settings_dns2->setText(m_settings.secondaryDns()); + + + ui->listWidget_sites->clear(); + for(const QString &site : m_settings.customSites()) { + makeSitesListItem(ui->listWidget_sites, site); + } } void MainWindow::updateShareCode() @@ -797,3 +792,32 @@ void MainWindow::updateShareCode() //qDebug() << "Share code" << QJsonDocument(o).toJson(); } + +void MainWindow::makeSitesListItem(QListWidget *listWidget, const QString &address) +{ + QSize size(330, 25); + QWidget* widget = new QWidget; + widget->resize(size); + + QLabel *label = new QLabel(address, widget); + label->resize(size); + + QPushButton* btn = new QPushButton(widget); + btn->resize(size); + + QPushButton* btn1 = new QPushButton(widget); + btn1->resize(30, 25); + btn1->move(300, 0); + btn1->setCursor(QCursor(Qt::PointingHandCursor)); + + connect(btn1, &QPushButton::clicked, this, [this, label]() { + onPushButtonDeleteCustomSiteClicked(label->text()); + return; + }); + + QListWidgetItem* item = new QListWidgetItem(listWidget); + item->setSizeHint(size); + listWidget->setItemWidget(item, widget); + + widget->setStyleSheet(styleSheet()); +} diff --git a/client/ui/mainwindow.h b/client/ui/mainwindow.h index 78b70243..462bb65e 100644 --- a/client/ui/mainwindow.h +++ b/client/ui/mainwindow.h @@ -2,6 +2,7 @@ #define MAINWINDOW_H #include +#include #include #include #include @@ -53,7 +54,7 @@ private slots: void onPushButtonForgetServer(bool); void onPushButtonAddCustomSitesClicked(); - void onPushButtonDeleteCustomSiteClicked(); + void onPushButtonDeleteCustomSiteClicked(const QString &siteToDelete); void onTrayActionConnect(); // connect from context menu void setTrayState(VpnProtocol::ConnectionState state); @@ -78,7 +79,7 @@ private: void updateSettings(); void updateShareCode(); - + void makeSitesListItem(QListWidget* listWidget, const QString &address); Ui::MainWindow *ui; VpnConnection* m_vpnConnection; @@ -90,7 +91,6 @@ private: QSystemTrayIcon m_tray; QMenu* m_menu; - QStringListModel *customSitesModel = nullptr; QRegExpValidator m_ipAddressValidator; bool canMove = false; diff --git a/client/ui/mainwindow.ui b/client/ui/mainwindow.ui index 3048018c..59994fc8 100644 --- a/client/ui/mainwindow.ui +++ b/client/ui/mainwindow.ui @@ -254,7 +254,7 @@ QPushButton:hover { - 8 + 3 @@ -1175,22 +1175,6 @@ background: rgba(167, 167, 167, 0.1); color: #181922; } - - - - 0 - 0 - 381 - 0 - - - - PointingHandCursor - - - QAbstractItemView::NoEditTriggers - - @@ -1273,22 +1257,6 @@ color: #100A44; true - - - - 20 - 200 - 341 - 361 - - - - PointingHandCursor - - - QAbstractItemView::NoEditTriggers - - @@ -1354,28 +1322,6 @@ background: #211966; + - - - true - - - - 90 - 584 - 201 - 21 - - - - PointingHandCursor - - - color: #181922; - - - Delete selected site - - @@ -1401,6 +1347,49 @@ color: #333333; Web site or hostname or IP address + + + + 20 + 200 + 340 + 400 + + + + QWidget { + margin: 0px; + padding: 0px; +} + +QPushButton:hover { + image: url(:/images/close.png); + image-position: right center; +} + +QListView { + show-decoration-selected: 1; /* make the selection span the entire width of the view */ +} + +QListView::item:selected:!active { + background: transparent; + border: none; +} + +QListView::item:selected:active { + background: transparent; + border: none; +} + +QListView::item:hover { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #FAFBFE, stop: 1 #ECEEFF); +} + + + QAbstractItemView::NoSelection + +