mirror of
https://github.com/MatsuriDayo/nekoray.git
synced 2025-12-17 20:44:38 +03:00
chore: connection list icon
This commit is contained in:
1
res/icon/material/cancel.svg
Normal file
1
res/icon/material/cancel.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z" /></svg>
|
||||
|
After Width: | Height: | Size: 309 B |
1
res/icon/material/history.svg
Normal file
1
res/icon/material/history.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13.5,8H12V13L16.28,15.54L17,14.33L13.5,12.25V8M13,3A9,9 0 0,0 4,12H1L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3" /></svg>
|
||||
|
After Width: | Height: | Size: 308 B |
1
res/icon/material/swap-vertical.svg
Normal file
1
res/icon/material/swap-vertical.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9,3L5,7H8V14H10V7H13M16,17V10H14V17H11L15,21L19,17H16Z" /></svg>
|
||||
|
After Width: | Height: | Size: 134 B |
@@ -8,6 +8,9 @@
|
||||
<file alias="icon/b-system-software-update.svg">icon/system-software-update.svg</file>
|
||||
<file>icon/material/lock-open-outline.svg</file>
|
||||
<file>icon/material/lock-outline.svg</file>
|
||||
<file>icon/material/cancel.svg</file>
|
||||
<file>icon/material/history.svg</file>
|
||||
<file>icon/material/swap-vertical.svg</file>
|
||||
</qresource>
|
||||
<qresource prefix="/neko">
|
||||
<file alias="nekobox.png">public/nekobox.png</file>
|
||||
|
||||
@@ -1177,11 +1177,11 @@ Split by line.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>End</source>
|
||||
<translation>پایان</translation>
|
||||
<translation type="vanished">پایان</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Active</source>
|
||||
<translation>فعال</translation>
|
||||
<translation type="vanished">فعال</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start: %1
|
||||
|
||||
@@ -1009,11 +1009,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>End</source>
|
||||
<translation>结束</translation>
|
||||
<translation type="vanished">结束</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Active</source>
|
||||
<translation>活动</translation>
|
||||
<translation type="vanished">活动</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start: %1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
#include <QPainter>
|
||||
|
||||
QIcon Icon::GetTrayIcon(Icon::TrayIconStatus status) {
|
||||
QPixmap Icon::GetTrayIcon(Icon::TrayIconStatus status) {
|
||||
QPixmap pixmap;
|
||||
|
||||
// software embedded icon
|
||||
@@ -47,7 +47,7 @@ QIcon Icon::GetTrayIcon(Icon::TrayIconStatus status) {
|
||||
return pixmap;
|
||||
}
|
||||
|
||||
QIcon Icon::GetMaterialIcon(const QString &name) {
|
||||
QPixmap Icon::GetMaterialIcon(const QString &name) {
|
||||
QPixmap pixmap(":/icon/material/" + name + ".svg");
|
||||
return pixmap;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <QIcon>
|
||||
#include <QPixmap>
|
||||
|
||||
namespace Icon {
|
||||
|
||||
@@ -11,8 +11,8 @@ namespace Icon {
|
||||
VPN,
|
||||
};
|
||||
|
||||
QIcon GetTrayIcon(TrayIconStatus status);
|
||||
QPixmap GetTrayIcon(TrayIconStatus status);
|
||||
|
||||
QIcon GetMaterialIcon(const QString &name);
|
||||
QPixmap GetMaterialIcon(const QString &name);
|
||||
|
||||
} // namespace Icon
|
||||
|
||||
@@ -1438,27 +1438,36 @@ void MainWindow::refresh_connection_list(const QJsonArray &arr) {
|
||||
row++;
|
||||
ui->tableWidget_conn->insertRow(row);
|
||||
|
||||
auto f0 = std::make_unique<QTableWidgetItem>();
|
||||
f0->setData(114514, item["ID"].toInt());
|
||||
|
||||
// C0: Status
|
||||
auto *f = new QTableWidgetItem("");
|
||||
f->setData(114514, item["ID"].toInt());
|
||||
auto c0 = new QLabel;
|
||||
auto start_t = item["Start"].toInt();
|
||||
auto end_t = item["End"].toInt();
|
||||
if (end_t > 0) {
|
||||
f->setText(tr("End"));
|
||||
// icon
|
||||
auto outboundTag = item["Tag"].toString();
|
||||
if (outboundTag == "block") {
|
||||
c0->setPixmap(Icon::GetMaterialIcon("cancel"));
|
||||
} else {
|
||||
f->setText(tr("Active"));
|
||||
if (end_t > 0) {
|
||||
c0->setPixmap(Icon::GetMaterialIcon("history"));
|
||||
} else {
|
||||
c0->setPixmap(Icon::GetMaterialIcon("swap-vertical"));
|
||||
}
|
||||
f->setToolTip(tr("Start: %1\nEnd: %2").arg(DisplayTime(start_t), end_t > 0 ? DisplayTime(end_t) : ""));
|
||||
ui->tableWidget_conn->setItem(row, 0, f);
|
||||
}
|
||||
c0->setAlignment(Qt::AlignCenter);
|
||||
c0->setToolTip(tr("Start: %1\nEnd: %2").arg(DisplayTime(start_t), end_t > 0 ? DisplayTime(end_t) : ""));
|
||||
ui->tableWidget_conn->setCellWidget(row, 0, c0);
|
||||
|
||||
// C1: Outbound
|
||||
f = f->clone();
|
||||
auto f = f0->clone();
|
||||
f->setToolTip("");
|
||||
f->setText(item["Tag"].toString());
|
||||
f->setText(outboundTag);
|
||||
ui->tableWidget_conn->setItem(row, 1, f);
|
||||
|
||||
// C2: Destination
|
||||
f = f->clone();
|
||||
f = f0->clone();
|
||||
QString target1 = item["Dest"].toString();
|
||||
QString target2 = item["RDest"].toString();
|
||||
if (target2.isEmpty() || target1 == target2) {
|
||||
|
||||
Reference in New Issue
Block a user