mirror of
https://github.com/Qv2ray/Qv2ray.git
synced 2025-05-20 02:40:20 +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
|
||||
//
|
||||
logRCM_Menu->addAction(action_RCM_tovCoreLog);
|
||||
logRCM_Menu->addAction(action_RCM_toQvLog);
|
||||
logRCM_Menu->addAction(action_RCM_CopyRecentLogs);
|
||||
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(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);
|
||||
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));
|
||||
{
|
||||
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()
|
||||
{
|
||||
if (!qvLogAutoScoll)
|
||||
@ -1136,14 +1129,8 @@ void MainWindow::on_newConnectionBtn_clicked()
|
||||
outboundsList.push_back(outboundEntry);
|
||||
CONFIGROOT root;
|
||||
root.insert("outbounds", outboundsList);
|
||||
//
|
||||
const auto item = connectionListWidget->currentItem();
|
||||
GroupId id = DefaultGroupId;
|
||||
if (item)
|
||||
{
|
||||
id = GetItemWidget(item)->Identifier().groupId;
|
||||
}
|
||||
//
|
||||
const auto id = item ? DefaultGroupId : GetItemWidget(item)->Identifier().groupId;
|
||||
ConnectionManager->CreateConnection(root, alias, id);
|
||||
}
|
||||
}
|
||||
@ -1156,12 +1143,7 @@ void MainWindow::on_newComplexConnectionBtn_clicked()
|
||||
if (isChanged)
|
||||
{
|
||||
const auto item = connectionListWidget->currentItem();
|
||||
GroupId id = DefaultGroupId;
|
||||
if (item)
|
||||
{
|
||||
id = GetItemWidget(item)->Identifier().groupId;
|
||||
}
|
||||
//
|
||||
const auto id = item ? DefaultGroupId : GetItemWidget(item)->Identifier().groupId;
|
||||
ConnectionManager->CreateConnection(root, QJsonIO::GetValue(root, "outbounds", 0, "tag").toString(), id);
|
||||
}
|
||||
}
|
||||
@ -1170,3 +1152,17 @@ void MainWindow::on_collapseGroupsBtn_clicked()
|
||||
{
|
||||
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_DuplicateConnection();
|
||||
void Action_ResetStats();
|
||||
void Action_SwitchCoreLog();
|
||||
void Action_SwitchQv2rayLog();
|
||||
void Action_CopyGraphAsImage();
|
||||
void Action_CopyRecentLogs();
|
||||
void OnConnectionWidgetFocusRequested(const ConnectionItemWidget *widget);
|
||||
|
||||
private:
|
||||
@ -152,10 +151,11 @@ class MainWindow
|
||||
sortAction_SortByData_Asc->setText(tr("By data, Ascending"));
|
||||
sortAction_SortByData_Dsc->setText(tr("By data, Descending"));
|
||||
//
|
||||
action_RCM_tovCoreLog->setText(tr("Switch to Core log"));
|
||||
action_RCM_toQvLog->setText(tr("Switch to Qv2ray log"));
|
||||
action_RCM_SwitchCoreLog->setText(tr("Switch to Core log"));
|
||||
action_RCM_SwitchQv2rayLog->setText(tr("Switch to Qv2ray log"));
|
||||
//
|
||||
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_SortByData_Asc);
|
||||
DECL_ACTION(sortMenu, sortAction_SortByData_Dsc);
|
||||
DECL_ACTION(logRCM_Menu, action_RCM_tovCoreLog);
|
||||
DECL_ACTION(logRCM_Menu, action_RCM_toQvLog);
|
||||
DECL_ACTION(logRCM_Menu, action_RCM_SwitchCoreLog);
|
||||
DECL_ACTION(logRCM_Menu, action_RCM_SwitchQv2rayLog);
|
||||
DECL_ACTION(logRCM_Menu, action_RCM_CopyRecentLogs);
|
||||
#undef DECL_ACTION
|
||||
//
|
||||
QTextDocument *vCoreLogDocument = new QTextDocument(this);
|
||||
|
Loading…
Reference in New Issue
Block a user