id: userLine\r
height: Style.trayWindowHeaderHeight\r
\r
+ Accessible.role: Accessible.MenuItem\r
+ Accessible.name: qsTr("Account entry")\r
+ Accessible.description: qsTr("Menu entry corresponding to a specific account")\r
+\r
RowLayout {\r
id: userLineLayout\r
spacing: 0\r
hoverEnabled: true\r
flat: true\r
\r
+ Accessible.role: Accessible.Button\r
+ Accessible.name: name\r
+ Accessible.description: qsTr("Account button, selecting the corresponding account as active when clicked")\r
+\r
MouseArea {\r
anchors.fill: parent\r
hoverEnabled: true\r
y: accountStateIndicatorBackground.y + 1\r
sourceSize.width: Style.accountAvatarStateIndicatorSize\r
sourceSize.height: Style.accountAvatarStateIndicatorSize\r
+\r
+ Accessible.role: Accessible.Indicator\r
+ Accessible.name: isConnected ? qsTr("Connected") : qsTr("Disconnected")\r
+ Accessible.description: qsTr("Icon that indicates current connection state for the corresponding account")\r
}\r
}\r
\r
icon.source: "qrc:///client/theme/more.svg"\r
icon.color: "transparent"\r
\r
+ Accessible.role: Accessible.ButtonMenu\r
+ Accessible.name: "More"\r
+ Accessible.description: qsTr("Menu button providing more account actions when clicked")\r
+ Accessible.onPressAction: {\r
+ userMoreButtonMenu.popup()\r
+ }\r
+\r
MouseArea {\r
id: userMoreButtonMouseArea\r
anchors.fill: parent\r
color: parent.parent.hovered ? Style.lightHover : "transparent"\r
}\r
}\r
+\r
+ Accessible.role: Accessible.Button\r
+ Accessible.name: isConnected ? qsTr("Log out") : qsTr("Log in")\r
+ Accessible.description: qsTr("Logs user account in or out depending on current connection state")\r
+\r
+ onPressed: {\r
+ isConnected ? UserModel.logout(index) : UserModel.login(index)\r
+ accountMenu.close()\r
+ }\r
}\r
\r
MenuItem {\r
color: parent.parent.hovered ? Style.lightHover : "transparent"\r
}\r
}\r
+\r
+ Accessible.role: Accessible.Button\r
+ Accessible.name: qsTr("Remove Account")\r
+ Accessible.description: qsTr("Permanently removes account from Nextcloud client configuration")\r
+\r
+ Accessible.onPressAction: {\r
+ UserModel.removeAccount(index)\r
+ accountMenu.close()\r
+ }\r
}\r
}\r
}\r
\r
readonly property int maxMenuHeight: Style.trayWindowHeight - Style.trayWindowHeaderHeight - 2 * Style.trayWindowBorderWidth\r
\r
+ Accessible.role: Accessible.Window\r
+ Accessible.name: "Nextcloud client tray window"\r
+\r
// Close tray window when focus is lost (e.g. click somewhere else on the screen)\r
onActiveChanged: {\r
if(!active) {\r
display: AbstractButton.IconOnly\r
flat: true\r
\r
+ Accessible.role: Accessible.ButtonMenu\r
+ Accessible.name: "Current account"\r
+ Accessible.description: "Shows the currently selected account and opens a dropdown list for all accounts when clicked"\r
+ Accessible.onPressAction: {\r
+ syncPauseButton.text = Systray.syncIsPaused() ? qsTr("Resume sync for all") : qsTr("Pause sync for all")\r
+ accountMenu.open()\r
+ }\r
+\r
MouseArea {\r
id: accountBtnMouseArea\r
\r
radius: Style.currentAccountButtonRadius\r
}\r
\r
+ Accessible.role: PopupMenu\r
+ Accessible.name: qsTr("Account menu")\r
+ Accessible.description: qsTr("Popup menu showing a list of accounts and general client actions")\r
+\r
onClosed: {\r
// HACK: reload account Instantiator immediately by restting it - could be done better I guess\r
// see also onVisibleChanged above\r
color: parent.parent.hovered ? Style.lightHover : "transparent"\r
}\r
}\r
+\r
+ Accessible.role: Accessible.MenuItem\r
+ Accessible.name: Systray.syncIsPaused() ? qsTr("Resume sync for all") : qsTr("Pause sync for all")\r
+ Accessible.description: qsTr("Button that pause or resumes sync activity")\r
+ Accessible.onPressAction: {\r
+ Systray.pauseResumeSync()\r
+ }\r
}\r
\r
MenuItem {\r
color: parent.parent.hovered ? Style.lightHover : "transparent"\r
}\r
}\r
+\r
+ Accessible.role: Accessible.MenuItem\r
+ Accessible.name: text\r
+ Accessible.description: qsTr("Button that opens the client settings window")\r
+ Accessible.onPressAction: {\r
+ Systray.openSettings()\r
+ }\r
}\r
\r
MenuItem {\r
color: parent.parent.hovered ? Style.lightHover : "transparent"\r
}\r
}\r
+\r
+ Accessible.role: Accessible.MenuItem\r
+ Accessible.name: text\r
+ Accessible.description: qsTr("Quits the nextcloud client application")\r
+ Accessible.onPressAction: {\r
+ Systray.shutdown()\r
+ }\r
}\r
}\r
}\r
height: Style.trayWindowHeaderHeight\r
width: Style.currentAccountButtonWidth\r
spacing: 0\r
+\r
Image {\r
id: currentAccountAvatar\r
\r
Layout.preferredHeight: Style.accountAvatarSize\r
Layout.preferredWidth: Style.accountAvatarSize\r
\r
+ Accessible.role: Accessible.Graphic\r
+ Accessible.name: qsTr("Current user avatar")\r
+\r
Rectangle {\r
id: currentAccountStateIndicatorBackground\r
width: Style.accountAvatarStateIndicatorSize + 2\r
y: currentAccountStateIndicatorBackground.y + 1\r
sourceSize.width: Style.accountAvatarStateIndicatorSize\r
sourceSize.height: Style.accountAvatarStateIndicatorSize\r
+\r
+ Accessible.role: Accessible.Indicator\r
+ Accessible.name: UserModel.isUserConnected(UserModel.currentUserId()) ? qsTr("Connected") : qsTr("Disconnected")\r
+ Accessible.description: qsTr("Icon that indicates connection state for the currently selected account")\r
}\r
}\r
\r
visible: UserModel.currentUser.hasLocalFolder\r
icon.source: "qrc:///client/theme/white/folder.svg"\r
onClicked: UserModel.openCurrentAccountLocalFolder()\r
+\r
+ Accessible.role: Accessible.Button\r
+ Accessible.name: qsTr("Local folder button")\r
+ Accessible.description: qsTr("Opens the local folder corresponding to the currently selected account")\r
+ Accessible.onPressAction: {\r
+ UserModel.openCurrentAccountLocalFolder()\r
+ }\r
}\r
\r
HeaderButton {\r
visible: UserModel.currentUser.serverHasTalk\r
icon.source: "qrc:///client/theme/white/talk-app.svg"\r
onClicked: UserModel.openCurrentAccountTalk()\r
+\r
+ Accessible.role: Accessible.Button\r
+ Accessible.name: qsTr("Open Nextcloud Talk")\r
+ Accessible.description: qsTr("Opens Nextcloud Talk corresponding the currently sdelected users server in a new browser window")\r
+ Accessible.onPressAction: {\r
+ UserModel.openCurrentAccountTalk()\r
+ }\r
}\r
\r
HeaderButton {\r
}\r
}\r
\r
+ Accessible.role: Accessible.ButtonMenu\r
+ Accessible.name: qsTr("Show other apps")\r
+ Accessible.description: qsTr("Opens a popup menu with all other supported Nextcloud apps from the currently selected users server")\r
+ Accessible.onPressAction: {\r
+ appsMenu.open();\r
+ UserModel.openCurrentAccountServer();\r
+ }\r
+\r
Menu {\r
id: appsMenu\r
y: (trayWindowAppsButton.y + trayWindowAppsButton.height + 2)\r
radius: 2\r
}\r
\r
+ Accessible.role: Accessible.PopupMenu\r
+ Accessible.name: qsTr("Apps menu")\r
+\r
Instantiator {\r
id: appsMenuInstantiator\r
model: UserAppsModel\r
color: appEntry.hovered ? Style.lightHover : "transparent"\r
}\r
}\r
+\r
+ Accessible.role: Accessible.MenuItem\r
+ Accessible.name: appName\r
+ Accessible.description: qsTr("Opens the corresponding Nextcloud app in a new browser window")\r
+ Accessible.onPressAction: {\r
+ UserAppsModel.openAppUrl(appUrl)\r
+ }\r
}\r
}\r
}\r
id: listViewScrollbar\r
}\r
\r
+ Accessible.role: Accessible.List\r
+ Accessible.name: qsTr("Activity list")\r
+ Accessible.description: qsTr("A list of activities for the currently selected user account")\r
+\r
model: activityModel\r
\r
delegate: RowLayout {\r
height: Style.trayWindowHeaderHeight\r
spacing: 0\r
\r
+ Accessible.role: Accessible.ListItem\r
+ Accessible.name: activityTextColumn.text\r
+ Accessible.description: qsTr("Activity item - if applicable opens local folder containing the corresponding sync object when clicked")\r
+ Accessible.onPressAction: {\r
+ if (path !== "") {\r
+ Qt.openUrlExternally(path)\r
+ } else {\r
+ Qt.openUrlExternally(link)\r
+ }\r
+ }\r
+\r
MouseArea {\r
id: activityMouseArea\r
enabled: (path !== "" || link !== "")\r
anchors.margins: 2\r
hoverEnabled: true\r
onClicked: {\r
- if (path !== "") {\r
- Qt.openUrlExternally(path)\r
- } else {\r
- Qt.openUrlExternally(link)\r
- }\r
+\r
}\r
\r
Rectangle {\r
ToolTip.delay: 1000\r
ToolTip.text: qsTr("Open share dialog")\r
onClicked: Systray.openShareDialog(displayPath,absolutePath)\r
+\r
+ Accessible.role: Accessible.Button\r
+ Accessible.name: qsTr("Share button")\r
+ Accessible.description: qsTr("Opens share window for the corresponding sync object")\r
+ Accessible.onPressAction: {\r
+ Systray.openShareDialog(displayPath,absolutePath)\r
+ }\r
}\r
}\r
\r