add: added copy recent 20 lines of log

This commit is contained in:
QwQ 2020-08-08 17:31:37 +08:00
parent 6e52249e43
commit e1081b0a42
No known key found for this signature in database
GPG Key ID: E7FAEFAFCD031D4B
3 changed files with 31 additions and 34 deletions

View File

@ -1 +1 @@
5881
5882

View File

@ -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));
}

View File

@ -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);