Allow reloading log by pressing F5
This commit is contained in:
parent
5b4a0ef51e
commit
5d358e31fc
|
@ -8,6 +8,7 @@
|
|||
#include <QTextBrowser>
|
||||
#include <QFontDatabase>
|
||||
#include <QVBoxLayout>
|
||||
#include <QKeyEvent>
|
||||
|
||||
using namespace Dialogs;
|
||||
|
||||
|
@ -43,4 +44,18 @@ TextViewDialog::TextViewDialog(const QString &title, QWidget *parent) :
|
|||
centerWidget(this);
|
||||
}
|
||||
|
||||
void TextViewDialog::keyPressEvent(QKeyEvent *event)
|
||||
{
|
||||
switch(event->key()) {
|
||||
case Qt::Key_Escape:
|
||||
close();
|
||||
break;
|
||||
case Qt::Key_F5:
|
||||
emit reload();
|
||||
break;
|
||||
default:
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -15,6 +15,12 @@ public:
|
|||
|
||||
QTextBrowser *browser();
|
||||
|
||||
signals:
|
||||
void reload();
|
||||
|
||||
protected:
|
||||
void keyPressEvent(QKeyEvent *event);
|
||||
|
||||
private:
|
||||
QTextBrowser *m_browser;
|
||||
};
|
||||
|
|
|
@ -50,6 +50,7 @@ TrayIcon::TrayIcon(QObject *parent) :
|
|||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("internet-web-browser"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/internet-web-browser.svg"))), tr("Web UI")), &QAction::triggered, m_trayMenu.widget(), &TrayWidget::showWebUi);
|
||||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("preferences-other"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/preferences-other.svg"))), tr("Settings")), &QAction::triggered, m_trayMenu.widget(), &TrayWidget::showSettingsDialog);
|
||||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("folder-sync"), QIcon(QStringLiteral(":/icons/hicolor/scalable/actions/folder-sync.svg"))), tr("Rescan all")), &QAction::triggered, &m_trayMenu.widget()->connection(), &SyncthingConnection::rescanAllDirs);
|
||||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("text-x-generic"), QIcon(QStringLiteral(":/icons/hicolor/scalable/mimetypes/text-x-generic.svg"))), tr("Log")), &QAction::triggered, m_trayMenu.widget(), &TrayWidget::showLog);
|
||||
m_contextMenu.addMenu(m_trayMenu.widget()->connectionsMenu());
|
||||
connect(m_contextMenu.addAction(QIcon::fromTheme(QStringLiteral("help-about"), QIcon(QStringLiteral(":/icons/hicolor/scalable/apps/help-about.svg"))), tr("About")), &QAction::triggered, m_trayMenu.widget(), &TrayWidget::showAboutDialog);
|
||||
m_contextMenu.addSeparator();
|
||||
|
|
|
@ -222,14 +222,19 @@ void TrayWidget::showOwnDeviceId()
|
|||
void TrayWidget::showLog()
|
||||
{
|
||||
auto *dlg = new TextViewDialog(tr("Log"), this);
|
||||
connect(dlg, &QWidget::destroyed,
|
||||
bind(static_cast<bool(*)(const QMetaObject::Connection &)>(&QObject::disconnect),
|
||||
m_connection.requestLog([dlg] (const std::vector<SyncthingLogEntry> &entries) {
|
||||
for(const SyncthingLogEntry &entry : entries) {
|
||||
dlg->browser()->append(entry.when % QChar(':') % QChar(' ') % QChar('\n') % entry.message % QChar('\n'));
|
||||
}
|
||||
})
|
||||
));
|
||||
auto loadLog = [dlg, this] {
|
||||
connect(dlg, &QWidget::destroyed,
|
||||
bind(static_cast<bool(*)(const QMetaObject::Connection &)>(&QObject::disconnect),
|
||||
m_connection.requestLog([dlg, this] (const std::vector<SyncthingLogEntry> &entries) {
|
||||
dlg->browser()->clear();
|
||||
for(const SyncthingLogEntry &entry : entries) {
|
||||
dlg->browser()->append(entry.when % QChar(':') % QChar(' ') % QChar('\n') % entry.message % QChar('\n'));
|
||||
}
|
||||
})
|
||||
));
|
||||
};
|
||||
connect(dlg, &TextViewDialog::reload, loadLog);
|
||||
loadLog();
|
||||
showDialog(dlg);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue