X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fcoreinfodlg.cpp;h=b1759776bc6b69dd62fece41287caa015924caaa;hb=8fb51dcb129db8399209e9d07b518063d1a910f1;hp=063e7a433ff896f3f3fe7d5ab30936f7700e53b1;hpb=e375f7a6a6de045735a897ef05bf6dcc82770ff5;p=quassel.git diff --git a/src/qtui/coreinfodlg.cpp b/src/qtui/coreinfodlg.cpp index 063e7a43..b1759776 100644 --- a/src/qtui/coreinfodlg.cpp +++ b/src/qtui/coreinfodlg.cpp @@ -25,6 +25,7 @@ #include "bufferwidget.h" #include "client.h" #include "icon.h" +#include "util.h" CoreInfoDlg::CoreInfoDlg(QWidget *parent) : QDialog(parent) { ui.setupUi(this); @@ -35,7 +36,7 @@ CoreInfoDlg::CoreInfoDlg(QWidget *parent) : QDialog(parent) { // Update legacy core info for Quassel cores earlier than 0.13. This does nothing on modern // cores. - Client::refreshLegacyCoreInfo(); + refreshLegacyCoreInfo(); // Display existing core info, set up signal handlers coreInfoResynchronized(); @@ -48,6 +49,21 @@ CoreInfoDlg::CoreInfoDlg(QWidget *parent) : QDialog(parent) { } +void CoreInfoDlg::refreshLegacyCoreInfo() { + if (!Client::isConnected() || Client::isCoreFeatureEnabled(Quassel::Feature::SyncedCoreInfo)) { + // If we're not connected, or the core supports SyncedCoreInfo (0.13+), bail out + return; + } + + // Request legacy (pre-0.13) CoreInfo object to be resynchronized (does nothing on modern cores) + Client::refreshLegacyCoreInfo(); + + // On legacy cores, CoreInfo data does not send signals. Periodically poll for information. + // 15 seconds seems like a reasonable trade-off as this only happens while the dialog is open. + QTimer::singleShot(15 * 1000, this, SLOT(refreshLegacyCoreInfo())); +} + + void CoreInfoDlg::coreInfoResynchronized() { // CoreInfo object has been recreated, or this is the first time the dialog's been shown @@ -79,7 +95,13 @@ void CoreInfoDlg::coreInfoChanged(const QVariantMap &coreInfo) { } else { ui.labelCoreVersion->setText(coreInfo["quasselVersion"].toString()); // "BuildDate" for compatibility - ui.labelCoreVersionDate->setText(coreInfo["quasselBuildDate"].toString()); + if (coreInfo["quasselBuildDate"].toString().isEmpty()) { + ui.labelCoreVersionDate->setText(QString("%1").arg(tr("Unknown date"))); + } + else { + ui.labelCoreVersionDate->setText( + tryFormatUnixEpoch(coreInfo["quasselBuildDate"].toString())); + } ui.labelClientCount->setNum(coreInfo["sessionConnectedClients"].toInt()); }