X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fcoreinfodlg.cpp;h=d7b1c3c162aa50b205ffcb355c8e136c5c23bdd3;hb=2c8434f74c68194d56f2084f637419123e61d18b;hp=063e7a433ff896f3f3fe7d5ab30936f7700e53b1;hpb=e375f7a6a6de045735a897ef05bf6dcc82770ff5;p=quassel.git diff --git a/src/qtui/coreinfodlg.cpp b/src/qtui/coreinfodlg.cpp index 063e7a43..d7b1c3c1 100644 --- a/src/qtui/coreinfodlg.cpp +++ b/src/qtui/coreinfodlg.cpp @@ -25,17 +25,18 @@ #include "bufferwidget.h" #include "client.h" #include "icon.h" +#include "util.h" CoreInfoDlg::CoreInfoDlg(QWidget *parent) : QDialog(parent) { ui.setupUi(this); // Listen for resynchronization events (pre-0.13 cores only) - connect(Client::instance(), SIGNAL(coreInfoResynchronized()), - this, SLOT(coreInfoResynchronized())); + connect(Client::instance(), &Client::coreInfoResynchronized, + this, &CoreInfoDlg::coreInfoResynchronized); // 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,13 +49,28 @@ 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, &CoreInfoDlg::refreshLegacyCoreInfo); +} + + void CoreInfoDlg::coreInfoResynchronized() { // CoreInfo object has been recreated, or this is the first time the dialog's been shown CoreInfo *coreInfo = Client::coreInfo(); // Listen for changes to core information - connect(coreInfo, SIGNAL(coreDataChanged(const QVariantMap &)), - this, SLOT(coreInfoChanged(const QVariantMap &))); + connect(coreInfo, &CoreInfo::coreDataChanged, + this, &CoreInfoDlg::coreInfoChanged); // Update with any known core information set before connecting the signal. This is needed for // both modern (0.13+) and legacy cores. @@ -79,7 +95,14 @@ 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(), + Qt::DateFormat::DefaultLocaleShortDate)); + } ui.labelClientCount->setNum(coreInfo["sessionConnectedClients"].toInt()); } @@ -106,7 +129,7 @@ void CoreInfoDlg::coreInfoChanged(const QVariantMap &coreInfo) { // The layout stretch item should never be removed, so count should always be >= 1. ui.coreSessionContainer->insertWidget(ui.coreSessionContainer->count() - 1, coreSessionWidget, 0, Qt::AlignTop); - connect(coreSessionWidget, SIGNAL(disconnectClicked(int)), this, SLOT(disconnectClicked(int))); + connect(coreSessionWidget, &CoreSessionWidget::disconnectClicked, this, &CoreInfoDlg::disconnectClicked); } } @@ -152,7 +175,8 @@ void CoreInfoDlg::updateUptime() { .arg(uphours, 2, 10, QChar('0')) .arg(upmins, 2, 10, QChar('0')) .arg(uptime, 2, 10, QChar('0')) - .arg(startTime.toLocalTime().toString(Qt::TextDate)); + .arg(startTime.toLocalTime() + .toString(Qt::DefaultLocaleShortDate)); ui.labelUptime->setText(uptimeText); } }