From: Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com> Date: Sun, 5 Jan 2020 15:25:32 +0000 (+0100) Subject: Focus and popup improvements for macOS X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~222^2^2~413^2~75 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a90995cf15e19c7fcdc548901fe00eb23c71beec;p=nextcloud-desktop.git Focus and popup improvements for macOS Signed-off-by: Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com> --- diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp index a8c4a7f34..24eb9aea9 100644 --- a/src/gui/owncloudgui.cpp +++ b/src/gui/owncloudgui.cpp @@ -176,6 +176,8 @@ void ownCloudGui::slotTrayClicked(QSystemTrayIcon::ActivationReason reason) Q_ASSERT(shareDialog.data()); raiseDialog(shareDialog); } + } else if (_tray->isOpen()) { + _tray->hideWindow(); } else { _tray->showWindow(); } diff --git a/src/gui/systray.cpp b/src/gui/systray.cpp index 82673db47..db61cfa82 100644 --- a/src/gui/systray.cpp +++ b/src/gui/systray.cpp @@ -37,7 +37,8 @@ namespace OCC { Systray::Systray() // TODO: make singleton, provide ::instance() - : _trayComponent(nullptr) + : _isOpen(false) + , _trayComponent(nullptr) , _trayContext(nullptr) { // Create QML tray engine, build component, set C++ backend context used in window.qml @@ -70,6 +71,21 @@ void Systray::slotChangeActivityModel() emit currentUserChanged(); } +bool Systray::isOpen() +{ + return _isOpen; +} + +Q_INVOKABLE void Systray::setOpened() +{ + _isOpen = true; +} + +Q_INVOKABLE void Systray::setClosed() +{ + _isOpen = false; +} + void Systray::showMessage(const QString &title, const QString &message, MessageIcon icon, int millisecondsTimeoutHint) { #ifdef USE_FDO_NOTIFICATIONS diff --git a/src/gui/systray.h b/src/gui/systray.h index b2254841c..6fe451c00 100644 --- a/src/gui/systray.h +++ b/src/gui/systray.h @@ -47,9 +47,12 @@ public: ~Systray(); void showMessage(const QString &title, const QString &message, MessageIcon icon = Information, int millisecondsTimeoutHint = 10000); void setToolTip(const QString &tip); + bool isOpen(); Q_INVOKABLE int calcTrayWindowX(); Q_INVOKABLE int calcTrayWindowY(); + Q_INVOKABLE void setOpened(); + Q_INVOKABLE void setClosed(); signals: void currentUserChanged(); @@ -63,6 +66,7 @@ private slots: void slotChangeActivityModel(); private: + bool _isOpen; QQmlEngine *_trayEngine; QQmlComponent *_trayComponent; QQmlContext *_trayContext; diff --git a/src/gui/tray/Window.qml b/src/gui/tray/Window.qml index 42a63a9bc..a761885b7 100644 --- a/src/gui/tray/Window.qml +++ b/src/gui/tray/Window.qml @@ -17,6 +17,7 @@ Window { onActiveChanged: { if(!active) { trayWindow.hide(); + systrayBackend.setClosed(); } } @@ -45,13 +46,17 @@ Window { Connections { target: systrayBackend onShowWindow: { + accountMenu.close(); trayWindow.show(); + trayWindow.raise(); trayWindow.requestActivate(); trayWindow.setX( systrayBackend.calcTrayWindowX()); trayWindow.setY( systrayBackend.calcTrayWindowY()); + systrayBackend.setOpened(); } onHideWindow: { trayWindow.hide(); + systrayBackend.setClosed(); } } @@ -138,6 +143,11 @@ Window { MenuSeparator { id: otherMenuSeparator } + MenuItem { + text: systrayBackend.syncIsPaused() ? "Resume syncing" : "Pause syncing" + onClicked: systrayBackend.pauseResumeSync() + } + MenuItem { text: "Open settings" onClicked: systrayBackend.openSettings()