mirror of
https://github.com/Qv2ray/Qv2ray.git
synced 2025-05-20 10:50:23 +08:00
add: added copy recent 20 lines of log
This commit is contained in:
parent
6e52249e43
commit
e1081b0a42
@ -1 +1 @@
|
|||||||
5881
|
5882
|
||||||
|
@ -248,15 +248,18 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
|
|||||||
//
|
//
|
||||||
// Actions for right click the log text browser
|
// Actions for right click the log text browser
|
||||||
//
|
//
|
||||||
logRCM_Menu->addAction(action_RCM_tovCoreLog);
|
logRCM_Menu->addAction(action_RCM_CopyRecentLogs);
|
||||||
logRCM_Menu->addAction(action_RCM_toQvLog);
|
logRCM_Menu->addSeparator();
|
||||||
|
logRCM_Menu->addAction(action_RCM_SwitchCoreLog);
|
||||||
|
logRCM_Menu->addAction(action_RCM_SwitchQv2rayLog);
|
||||||
connect(masterLogBrowser, &QTextBrowser::customContextMenuRequested, [this](const QPoint &) { logRCM_Menu->popup(QCursor::pos()); });
|
connect(masterLogBrowser, &QTextBrowser::customContextMenuRequested, [this](const QPoint &) { logRCM_Menu->popup(QCursor::pos()); });
|
||||||
|
connect(action_RCM_SwitchCoreLog, &QAction::triggered, [this] { masterLogBrowser->setDocument(vCoreLogDocument); });
|
||||||
|
connect(action_RCM_SwitchQv2rayLog, &QAction::triggered, [this] { masterLogBrowser->setDocument(qvLogDocument); });
|
||||||
|
connect(action_RCM_CopyRecentLogs, &QAction::triggered, this, &MainWindow::Action_CopyRecentLogs);
|
||||||
//
|
//
|
||||||
speedChartWidget->setContextMenuPolicy(Qt::CustomContextMenu);
|
speedChartWidget->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
connect(speedChartWidget, &QWidget::customContextMenuRequested, [this](const QPoint &) { graphWidgetMenu->popup(QCursor::pos()); });
|
connect(speedChartWidget, &QWidget::customContextMenuRequested, [this](const QPoint &) { graphWidgetMenu->popup(QCursor::pos()); });
|
||||||
//
|
//
|
||||||
connect(action_RCM_tovCoreLog, &QAction::triggered, this, &MainWindow::Action_SwitchCoreLog);
|
|
||||||
connect(action_RCM_toQvLog, &QAction::triggered, this, &MainWindow::Action_SwitchQv2rayLog);
|
|
||||||
masterLogBrowser->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
|
masterLogBrowser->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
|
||||||
{
|
{
|
||||||
auto font = masterLogBrowser->font();
|
auto font = masterLogBrowser->font();
|
||||||
@ -1027,16 +1030,6 @@ void MainWindow::on_connectionListWidget_currentItemChanged(QTreeWidgetItem *cur
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::Action_SwitchCoreLog()
|
|
||||||
{
|
|
||||||
masterLogBrowser->setDocument(vCoreLogDocument);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::Action_SwitchQv2rayLog()
|
|
||||||
{
|
|
||||||
masterLogBrowser->setDocument(qvLogDocument);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::on_masterLogBrowser_textChanged()
|
void MainWindow::on_masterLogBrowser_textChanged()
|
||||||
{
|
{
|
||||||
if (!qvLogAutoScoll)
|
if (!qvLogAutoScoll)
|
||||||
@ -1136,14 +1129,8 @@ void MainWindow::on_newConnectionBtn_clicked()
|
|||||||
outboundsList.push_back(outboundEntry);
|
outboundsList.push_back(outboundEntry);
|
||||||
CONFIGROOT root;
|
CONFIGROOT root;
|
||||||
root.insert("outbounds", outboundsList);
|
root.insert("outbounds", outboundsList);
|
||||||
//
|
|
||||||
const auto item = connectionListWidget->currentItem();
|
const auto item = connectionListWidget->currentItem();
|
||||||
GroupId id = DefaultGroupId;
|
const auto id = item ? DefaultGroupId : GetItemWidget(item)->Identifier().groupId;
|
||||||
if (item)
|
|
||||||
{
|
|
||||||
id = GetItemWidget(item)->Identifier().groupId;
|
|
||||||
}
|
|
||||||
//
|
|
||||||
ConnectionManager->CreateConnection(root, alias, id);
|
ConnectionManager->CreateConnection(root, alias, id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1156,12 +1143,7 @@ void MainWindow::on_newComplexConnectionBtn_clicked()
|
|||||||
if (isChanged)
|
if (isChanged)
|
||||||
{
|
{
|
||||||
const auto item = connectionListWidget->currentItem();
|
const auto item = connectionListWidget->currentItem();
|
||||||
GroupId id = DefaultGroupId;
|
const auto id = item ? DefaultGroupId : GetItemWidget(item)->Identifier().groupId;
|
||||||
if (item)
|
|
||||||
{
|
|
||||||
id = GetItemWidget(item)->Identifier().groupId;
|
|
||||||
}
|
|
||||||
//
|
|
||||||
ConnectionManager->CreateConnection(root, QJsonIO::GetValue(root, "outbounds", 0, "tag").toString(), id);
|
ConnectionManager->CreateConnection(root, QJsonIO::GetValue(root, "outbounds", 0, "tag").toString(), id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1170,3 +1152,17 @@ void MainWindow::on_collapseGroupsBtn_clicked()
|
|||||||
{
|
{
|
||||||
connectionListWidget->collapseAll();
|
connectionListWidget->collapseAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::Action_CopyRecentLogs()
|
||||||
|
{
|
||||||
|
const auto lines = SplitLines(masterLogBrowser->document()->toPlainText());
|
||||||
|
constexpr auto line = 20;
|
||||||
|
const auto totalLinesCount = lines.count();
|
||||||
|
const auto linesToCopy = std::min(totalLinesCount, line);
|
||||||
|
QStringList result;
|
||||||
|
for (auto i = totalLinesCount - linesToCopy; i < totalLinesCount; i++)
|
||||||
|
{
|
||||||
|
result.append(lines[i]);
|
||||||
|
}
|
||||||
|
qApp->clipboard()->setText(result.join(NEWLINE));
|
||||||
|
}
|
||||||
|
@ -76,9 +76,8 @@ class MainWindow
|
|||||||
void Action_DeleteConnections();
|
void Action_DeleteConnections();
|
||||||
void Action_DuplicateConnection();
|
void Action_DuplicateConnection();
|
||||||
void Action_ResetStats();
|
void Action_ResetStats();
|
||||||
void Action_SwitchCoreLog();
|
|
||||||
void Action_SwitchQv2rayLog();
|
|
||||||
void Action_CopyGraphAsImage();
|
void Action_CopyGraphAsImage();
|
||||||
|
void Action_CopyRecentLogs();
|
||||||
void OnConnectionWidgetFocusRequested(const ConnectionItemWidget *widget);
|
void OnConnectionWidgetFocusRequested(const ConnectionItemWidget *widget);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -152,10 +151,11 @@ class MainWindow
|
|||||||
sortAction_SortByData_Asc->setText(tr("By data, Ascending"));
|
sortAction_SortByData_Asc->setText(tr("By data, Ascending"));
|
||||||
sortAction_SortByData_Dsc->setText(tr("By data, Descending"));
|
sortAction_SortByData_Dsc->setText(tr("By data, Descending"));
|
||||||
//
|
//
|
||||||
action_RCM_tovCoreLog->setText(tr("Switch to Core log"));
|
action_RCM_SwitchCoreLog->setText(tr("Switch to Core log"));
|
||||||
action_RCM_toQvLog->setText(tr("Switch to Qv2ray log"));
|
action_RCM_SwitchQv2rayLog->setText(tr("Switch to Qv2ray log"));
|
||||||
//
|
//
|
||||||
graph_action_CopyAsImage->setText(tr("Copy graph as image."));
|
graph_action_CopyAsImage->setText(tr("Copy graph as image."));
|
||||||
|
action_RCM_CopyRecentLogs->setText(tr("Copy recent 20 lines."));
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -195,8 +195,9 @@ class MainWindow
|
|||||||
DECL_ACTION(sortMenu, sortAction_SortByPing_Dsc);
|
DECL_ACTION(sortMenu, sortAction_SortByPing_Dsc);
|
||||||
DECL_ACTION(sortMenu, sortAction_SortByData_Asc);
|
DECL_ACTION(sortMenu, sortAction_SortByData_Asc);
|
||||||
DECL_ACTION(sortMenu, sortAction_SortByData_Dsc);
|
DECL_ACTION(sortMenu, sortAction_SortByData_Dsc);
|
||||||
DECL_ACTION(logRCM_Menu, action_RCM_tovCoreLog);
|
DECL_ACTION(logRCM_Menu, action_RCM_SwitchCoreLog);
|
||||||
DECL_ACTION(logRCM_Menu, action_RCM_toQvLog);
|
DECL_ACTION(logRCM_Menu, action_RCM_SwitchQv2rayLog);
|
||||||
|
DECL_ACTION(logRCM_Menu, action_RCM_CopyRecentLogs);
|
||||||
#undef DECL_ACTION
|
#undef DECL_ACTION
|
||||||
//
|
//
|
||||||
QTextDocument *vCoreLogDocument = new QTextDocument(this);
|
QTextDocument *vCoreLogDocument = new QTextDocument(this);
|
||||||
|
Loading…
Reference in New Issue
Block a user