Show the connection config name in tooltip when displaying multiple icons
This commit is contained in:
parent
0d8c5e524a
commit
a6727b0fa7
|
@ -251,7 +251,9 @@ void TrayIcon::showSyncthingNotification(CppUtilities::DateTime when, const QStr
|
|||
|
||||
void TrayIcon::updateStatusIconAndText()
|
||||
{
|
||||
const StatusInfo statusInfo(trayMenu().widget().connection());
|
||||
auto &trayWidget = trayMenu().widget();
|
||||
const auto statusInfo = StatusInfo(trayMenu().widget().connection(),
|
||||
TrayWidget::instances().size() > 1 && trayWidget.selectedConnection() ? trayWidget.selectedConnection()->label : QString());
|
||||
if (statusInfo.additionalStatusText().isEmpty()) {
|
||||
setToolTip(statusInfo.statusText());
|
||||
} else {
|
||||
|
|
|
@ -84,11 +84,19 @@ TrayWidget::TrayWidget(TrayMenu *parent)
|
|||
, m_selectedConnection(nullptr)
|
||||
, m_startStopButtonTarget(StartStopButtonTarget::None)
|
||||
{
|
||||
// don't show connection status within connection settings if there are multiple tray widgets/icons (would be ambiguous)
|
||||
if (!s_instances.empty() && s_settingsDlg) {
|
||||
s_settingsDlg->hideConnectionStatus();
|
||||
}
|
||||
|
||||
// take record of the newly created instance
|
||||
s_instances.push_back(this);
|
||||
|
||||
// show the connection configuration in the previous icon's tooltip as soon as there's a 2nd icon
|
||||
if (s_instances.size() == 2) {
|
||||
s_instances.front()->updateIconAndTooltip();
|
||||
}
|
||||
|
||||
m_ui->setupUi(this);
|
||||
|
||||
// setup models and views
|
||||
|
@ -214,6 +222,8 @@ TrayWidget::~TrayWidget()
|
|||
if (s_instances.empty()) {
|
||||
delete s_dialogParent;
|
||||
QCoreApplication::quit();
|
||||
} else if (s_instances.size() == 1) {
|
||||
s_instances.front()->updateIconAndTooltip();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -649,6 +659,16 @@ void TrayWidget::updateOverallStatistics()
|
|||
m_ui->localStatisticsLabel->setText(directoryStatusString(overallStats.local));
|
||||
}
|
||||
|
||||
void TrayWidget::updateIconAndTooltip()
|
||||
{
|
||||
if (!m_menu) {
|
||||
return;
|
||||
}
|
||||
if (auto *const trayIcon = m_menu->icon()) {
|
||||
trayIcon->updateStatusIconAndText();
|
||||
}
|
||||
}
|
||||
|
||||
void TrayWidget::toggleRunning()
|
||||
{
|
||||
switch (m_startStopButtonTarget) {
|
||||
|
|
|
@ -55,6 +55,7 @@ public:
|
|||
const Data::SyncthingNotifier ¬ifier() const;
|
||||
QMenu *connectionsMenu();
|
||||
static const std::vector<TrayWidget *> &instances();
|
||||
Data::SyncthingConnectionSettings *selectedConnection();
|
||||
|
||||
public Q_SLOTS:
|
||||
void showSettingsDialog();
|
||||
|
@ -88,6 +89,7 @@ private Q_SLOTS:
|
|||
void changeStatus();
|
||||
void updateTraffic();
|
||||
void updateOverallStatistics();
|
||||
void updateIconAndTooltip();
|
||||
void toggleRunning();
|
||||
Settings::Launcher::LauncherStatus handleLauncherStatusChanged();
|
||||
Settings::Launcher::LauncherStatus applyLauncherSettings(
|
||||
|
@ -161,6 +163,12 @@ inline const std::vector<TrayWidget *> &TrayWidget::instances()
|
|||
{
|
||||
return s_instances;
|
||||
}
|
||||
|
||||
inline Data::SyncthingConnectionSettings *TrayWidget::selectedConnection()
|
||||
{
|
||||
return m_selectedConnection;
|
||||
}
|
||||
|
||||
} // namespace QtGui
|
||||
|
||||
#endif // TRAY_WIDGET_H
|
||||
|
|
|
@ -32,7 +32,7 @@ void StatusInfo::recomputeAdditionalStatusText()
|
|||
}
|
||||
}
|
||||
|
||||
void StatusInfo::updateConnectionStatus(const SyncthingConnection &connection)
|
||||
void StatusInfo::updateConnectionStatus(const SyncthingConnection &connection, const QString &configurationName)
|
||||
{
|
||||
m_additionalStatusInfo.clear();
|
||||
|
||||
|
@ -92,6 +92,10 @@ void StatusInfo::updateConnectionStatus(const SyncthingConnection &connection)
|
|||
}
|
||||
}
|
||||
|
||||
if (!configurationName.isEmpty()) {
|
||||
m_statusText = configurationName % QChar(':') % QChar(' ') % m_statusText;
|
||||
}
|
||||
|
||||
recomputeAdditionalStatusText();
|
||||
}
|
||||
|
||||
|
|
|
@ -16,12 +16,12 @@ namespace QtGui {
|
|||
class SYNCTHINGWIDGETS_EXPORT StatusInfo {
|
||||
public:
|
||||
explicit StatusInfo();
|
||||
explicit StatusInfo(const Data::SyncthingConnection &connection);
|
||||
explicit StatusInfo(const Data::SyncthingConnection &connection, const QString &configurationName = QString());
|
||||
|
||||
const QString &statusText() const;
|
||||
const QString &additionalStatusText() const;
|
||||
const QIcon &statusIcon() const;
|
||||
void updateConnectionStatus(const Data::SyncthingConnection &connection);
|
||||
void updateConnectionStatus(const Data::SyncthingConnection &connection, const QString &configurationName = QString());
|
||||
void updateConnectedDevices(const Data::SyncthingConnection &connection);
|
||||
|
||||
private:
|
||||
|
@ -34,9 +34,9 @@ private:
|
|||
const QIcon *m_statusIcon;
|
||||
};
|
||||
|
||||
inline StatusInfo::StatusInfo(const Data::SyncthingConnection &connection)
|
||||
inline StatusInfo::StatusInfo(const Data::SyncthingConnection &connection, const QString &configurationName)
|
||||
{
|
||||
updateConnectionStatus(connection);
|
||||
updateConnectionStatus(connection, configurationName);
|
||||
updateConnectedDevices(connection);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue