Allow reloading log by pressing F5

This commit is contained in:
Martchus 2016-12-11 20:52:46 +01:00
parent 5b4a0ef51e
commit 5d358e31fc
4 changed files with 35 additions and 8 deletions

View File

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

View File

@ -15,6 +15,12 @@ public:
QTextBrowser *browser();
signals:
void reload();
protected:
void keyPressEvent(QKeyEvent *event);
private:
QTextBrowser *m_browser;
};

View File

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

View File

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