Ensure errors on first connection after startup are handled
This commit is contained in:
parent
c8d4807e88
commit
49b33e5afe
|
@ -98,8 +98,6 @@ void SyncthingApplet::init()
|
|||
|
||||
// restore settings
|
||||
Settings::restore();
|
||||
// load primary connection config
|
||||
setCurrentConnectionConfigIndex(config().readEntry<int>("selectedConfig", 0));
|
||||
|
||||
// initialize systemd service support
|
||||
#ifdef LIB_SYNCTHING_CONNECTOR_SUPPORT_SYSTEMD
|
||||
|
@ -110,6 +108,9 @@ void SyncthingApplet::init()
|
|||
connect(&m_service, &SyncthingService::errorOccurred, this, &SyncthingApplet::handleSystemdServiceError);
|
||||
#endif
|
||||
|
||||
// load primary connection config
|
||||
m_currentConnectionConfig = config().readEntry<int>("selectedConfig", 0);
|
||||
|
||||
// apply settings and connect according to settings
|
||||
handleSettingsChanged();
|
||||
|
||||
|
|
|
@ -56,9 +56,10 @@ int initSyncthingTray(bool windowed, bool waitForTray, const char *connectionCon
|
|||
// handle "windowed" case
|
||||
if (windowed) {
|
||||
settings.launcher.autostart();
|
||||
auto *const trayWidget = new TrayWidget(connectionConfigQStr);
|
||||
auto *const trayWidget = new TrayWidget();
|
||||
trayWidget->setAttribute(Qt::WA_DeleteOnClose);
|
||||
trayWidget->show();
|
||||
trayWidget->applySettings(connectionConfigQStr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ namespace QtGui {
|
|||
*/
|
||||
TrayIcon::TrayIcon(const QString &connectionConfig, QObject *parent)
|
||||
: QSystemTrayIcon(parent)
|
||||
, m_trayMenu(connectionConfig, this)
|
||||
, m_trayMenu(this)
|
||||
#ifdef QT_UTILITIES_SUPPORT_DBUS_NOTIFICATIONS
|
||||
, m_dbusNotificationsEnabled(Settings::values().dbusNotifications)
|
||||
#endif
|
||||
|
@ -104,6 +104,10 @@ TrayIcon::TrayIcon(const QString &connectionConfig, QObject *parent)
|
|||
connect(&m_dbusNotifier, &DBusStatusNotifier::webUiRequested, &widget, &TrayWidget::showWebUi);
|
||||
connect(¬ifier, &SyncthingNotifier::connected, &m_dbusNotifier, &DBusStatusNotifier::hideDisconnect);
|
||||
#endif
|
||||
|
||||
// apply settings, this also establishes the connection to Syncthing (according to settings)
|
||||
// note: it is important to apply settings after all Signals & Slots have been connected (eg. to handle SyncthingConnection::error())
|
||||
m_trayMenu.widget().applySettings(connectionConfig);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
|
||||
namespace QtGui {
|
||||
|
||||
TrayMenu::TrayMenu(const QString &connectionConfig, TrayIcon *trayIcon, QWidget *parent)
|
||||
TrayMenu::TrayMenu(TrayIcon *trayIcon, QWidget *parent)
|
||||
: QMenu(parent)
|
||||
, m_trayIcon(trayIcon)
|
||||
{
|
||||
auto *const menuLayout = new QHBoxLayout;
|
||||
menuLayout->setMargin(0);
|
||||
menuLayout->setSpacing(0);
|
||||
menuLayout->addWidget(m_trayWidget = new TrayWidget(connectionConfig, this));
|
||||
menuLayout->addWidget(m_trayWidget = new TrayWidget(this));
|
||||
setLayout(menuLayout);
|
||||
setPlatformMenu(nullptr);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ class TrayMenu : public QMenu {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TrayMenu(const QString &connectionConfig = QString(), TrayIcon *trayIcon = nullptr, QWidget *parent = nullptr);
|
||||
TrayMenu(TrayIcon *trayIcon = nullptr, QWidget *parent = nullptr);
|
||||
|
||||
QSize sizeHint() const;
|
||||
TrayWidget &widget();
|
||||
|
|
|
@ -55,8 +55,11 @@ vector<TrayWidget *> TrayWidget::m_instances;
|
|||
|
||||
/*!
|
||||
* \brief Instantiates a new tray widget.
|
||||
* \remarks Doesn't apply the settings (and won't connect according to settings). This must be done manually by calling
|
||||
* TrayWidget::applySettings(). This allows postponing connecting until all signals of the TrayWidget::connection()
|
||||
* are connected as required.
|
||||
*/
|
||||
TrayWidget::TrayWidget(const QString &connectionConfig, TrayMenu *parent)
|
||||
TrayWidget::TrayWidget(TrayMenu *parent)
|
||||
: QWidget(parent)
|
||||
, m_menu(parent)
|
||||
, m_ui(new Ui::TrayWidget)
|
||||
|
@ -122,9 +125,6 @@ TrayWidget::TrayWidget(const QString &connectionConfig, TrayMenu *parent)
|
|||
m_notificationsMenu->addAction(m_ui->actionDismissNotifications);
|
||||
m_ui->notificationsPushButton->setMenu(m_notificationsMenu);
|
||||
|
||||
// apply settings, this also establishes the connection to Syncthing (according to settings)
|
||||
applySettings(connectionConfig);
|
||||
|
||||
// setup other widgets
|
||||
m_ui->notificationsPushButton->setHidden(true);
|
||||
m_ui->trafficIconLabel->setPixmap(
|
||||
|
|
|
@ -42,7 +42,7 @@ class TrayWidget : public QWidget {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TrayWidget(const QString &connectionConfig = QString(), TrayMenu *parent = nullptr);
|
||||
TrayWidget(TrayMenu *parent = nullptr);
|
||||
~TrayWidget();
|
||||
|
||||
Data::SyncthingConnection &connection();
|
||||
|
@ -63,10 +63,10 @@ public slots:
|
|||
void dismissNotifications();
|
||||
void restartSyncthing();
|
||||
void quitTray();
|
||||
void applySettings(const QString &connectionConfig = QString());
|
||||
|
||||
private slots:
|
||||
void handleStatusChanged(Data::SyncthingStatus status);
|
||||
void applySettings(const QString &connectionConfig = QString());
|
||||
static void applySettingsOnAllInstances();
|
||||
void openDir(const Data::SyncthingDir &dir);
|
||||
void openItemDir(const Data::SyncthingItemDownloadProgress &item);
|
||||
|
|
Loading…
Reference in New Issue