mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-07-13 03:55:23 +02:00
shortcuts: re-add shortcuts and shortcuts view
Gitlab: #2 Change-Id: Ic04fe6f2dfd01c561799d1707601b48058a9c89c
This commit is contained in:
parent
d4c5f42253
commit
214d9add58
14 changed files with 905 additions and 20 deletions
2
qml.qrc
2
qml.qrc
|
@ -5,6 +5,8 @@
|
|||
<file>src/settingsview/components/LeftPanelView.qml</file>
|
||||
<file>src/settingsview/components/AvSettingPage.qml</file>
|
||||
<file>src/settingsview/components/GeneralSettingsPage.qml</file>
|
||||
<file>src/settingsview/components/KeyBoardShortcutTable.qml</file>
|
||||
<file>src/settingsview/components/KeyBoardShortcutKey.qml</file>
|
||||
<file>src/settingsview/components/PluginSettingsPage.qml</file>
|
||||
<file>src/settingsview/components/PluginListSettingsView.qml</file>
|
||||
<file>src/settingsview/components/PluginListPreferencesView.qml</file>
|
||||
|
|
|
@ -708,4 +708,95 @@ Window {
|
|||
mainViewWindow.hide()
|
||||
mainViewWindow.closeApp()
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+M"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: {
|
||||
if (!inSettingsView) {
|
||||
toggleSettingsView()
|
||||
}
|
||||
leftPanelSettingsView.btnMediaSettings.clicked()
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+G"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: {
|
||||
if (!inSettingsView) {
|
||||
toggleSettingsView()
|
||||
}
|
||||
leftPanelSettingsView.btnGeneralSettings.clicked()
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+I"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: {
|
||||
if (!inSettingsView) {
|
||||
toggleSettingsView()
|
||||
}
|
||||
leftPanelSettingsView.btnAccountSettings.clicked()
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+P"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: {
|
||||
if (!inSettingsView) {
|
||||
toggleSettingsView()
|
||||
}
|
||||
leftPanelSettingsView.btnPluginSettings.clicked()
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "F10"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: {
|
||||
shortcutsTable.open()
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "F11"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: {
|
||||
if (mainViewWindow.visibility !== 5) // 5 = FullScreen
|
||||
mainViewWindow.visibility = "FullScreen"
|
||||
else
|
||||
mainViewWindow.visibility = "Windowed"
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+D"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: CallAdapter.hangUpThisCall()
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+Shift+A"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: {
|
||||
ClientWrapper.utilsAdaptor.makePermanentCurrentConv()
|
||||
communicationPageMessageWebView.setSendContactRequestButtonVisible(false)
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+Shift+N"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: mainViewWindowSidePanel.needToAddNewAccount()
|
||||
}
|
||||
|
||||
KeyBoardShortcutTable {
|
||||
id: shortcutsTable
|
||||
|
||||
x: Math.round((mainViewWindow.width - width) / 2)
|
||||
y: Math.round((mainViewWindow.height - height) / 2)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -271,6 +271,14 @@ ComboBox {
|
|||
popup: AccountComboBoxPopup {
|
||||
id: comboBoxPopup
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+J"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: comboBoxPopup.visible ?
|
||||
comboBoxPopup.close() :
|
||||
comboBoxPopup.open()
|
||||
}
|
||||
|
||||
onAccountNeedToChange: {
|
||||
accountComboBox.accountChanged(index)
|
||||
}
|
||||
|
@ -279,4 +287,10 @@ ComboBox {
|
|||
accountComboBox.newAccountButtonClicked()
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+,"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: settingBtnClicked()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,12 +31,6 @@ Rectangle {
|
|||
|
||||
anchors.fill: parent
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+D"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: CallAdapter.hangUpThisCall()
|
||||
}
|
||||
|
||||
/*
|
||||
* When selected conversation is changed,
|
||||
* these values will also be changed.
|
||||
|
|
|
@ -110,4 +110,10 @@ Rectangle {
|
|||
contactSearchBar.text)
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+F"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: contactSearchBar.forceActiveFocus()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -97,4 +97,74 @@ ListView {
|
|||
}
|
||||
|
||||
ScrollIndicator.vertical: ScrollIndicator {}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+Shift+X"
|
||||
context: Qt.ApplicationShortcut
|
||||
enabled: conversationSmartListView.visible
|
||||
onActivated: {
|
||||
CallAdapter.placeCall()
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+Shift+C"
|
||||
context: Qt.ApplicationShortcut
|
||||
enabled: conversationSmartListView.visible
|
||||
onActivated: {
|
||||
CallAdapter.placeAudioOnlyCall()
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+Shift+L"
|
||||
context: Qt.ApplicationShortcut
|
||||
enabled: conversationSmartListView.visible
|
||||
onActivated: {
|
||||
ClientWrapper.utilsAdaptor.clearConversationHistory(ClientWrapper.utilsAdaptor.getCurrAccId(),
|
||||
ClientWrapper.utilsAdaptor.getCurrConvId())
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+Shift+B"
|
||||
context: Qt.ApplicationShortcut
|
||||
enabled: conversationSmartListView.visible
|
||||
onActivated: {
|
||||
ClientWrapper.utilsAdaptor.removeConversation(ClientWrapper.utilsAdaptor.getCurrAccId(),
|
||||
ClientWrapper.utilsAdaptor.getCurrConvId(), true)
|
||||
conversationSmartListView.needToBackToWelcomePage()
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+Shift+Delete"
|
||||
context: Qt.ApplicationShortcut
|
||||
enabled: conversationSmartListView.visible
|
||||
onActivated: {
|
||||
ClientWrapper.utilsAdaptor.removeConversation(ClientWrapper.utilsAdaptor.getCurrAccId(),
|
||||
ClientWrapper.utilsAdaptor.getCurrConvId(), false)
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+Down"
|
||||
context: Qt.ApplicationShortcut
|
||||
enabled: conversationSmartListView.visible
|
||||
onActivated: {
|
||||
if (currentIndex + 1 >= count) return
|
||||
conversationSmartListView.currentIndex += 1
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+Up"
|
||||
context: Qt.ApplicationShortcut
|
||||
enabled: conversationSmartListView.visible
|
||||
onActivated: {
|
||||
if (currentIndex <= 0) return
|
||||
conversationSmartListView.currentIndex -= 1
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -57,6 +57,8 @@ ItemDelegate {
|
|||
return InCall ? Qt.lighter(JamiTheme.selectionBlue,
|
||||
1.8) : JamiTheme.releaseColor
|
||||
})
|
||||
conversationSmartListView.needToSelectItems(UID)
|
||||
conversationSmartListView.needToGrabFocus()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -200,8 +202,6 @@ ItemDelegate {
|
|||
smartListContextMenu.openMenu()
|
||||
} else if (mouse.button === Qt.LeftButton) {
|
||||
conversationSmartListView.currentIndex = index
|
||||
conversationSmartListView.needToSelectItems(UID)
|
||||
conversationSmartListView.needToGrabFocus()
|
||||
}
|
||||
}
|
||||
onEntered: {
|
||||
|
|
|
@ -339,4 +339,24 @@ Window {
|
|||
}
|
||||
|
||||
color: "transparent"
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+Y"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: {
|
||||
incomingCallPage.close()
|
||||
CallAdapter.acceptACall(responsibleAccountId,
|
||||
responsibleConvUid)
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+Shift+D"
|
||||
context: Qt.ApplicationShortcut
|
||||
onActivated: {
|
||||
incomingCallPage.close()
|
||||
CallAdapter.refuseACall(responsibleAccountId,
|
||||
responsibleConvUid)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -76,6 +76,16 @@ TabBar {
|
|||
height: tabBar.height
|
||||
color: JamiTheme.backgroundColor
|
||||
|
||||
function showConversations() {
|
||||
ConversationsAdapter.setConversationFilter("")
|
||||
contactSearchBar.setPlaceholderString(
|
||||
JamiTheme.contactSearchBarPlaceHolderConversationText)
|
||||
pageOne.down = true
|
||||
pageTwo.down = false
|
||||
setCurrentUidSmartListModelIndex()
|
||||
forceReselectConversationSmartListCurrentIndex()
|
||||
}
|
||||
|
||||
Image {
|
||||
id: imgRectOne
|
||||
anchors.horizontalCenter: buttonRectOne.horizontalCenter
|
||||
|
@ -127,13 +137,7 @@ TabBar {
|
|||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onPressed: {
|
||||
ConversationsAdapter.setConversationFilter("")
|
||||
contactSearchBar.setPlaceholderString(
|
||||
JamiTheme.contactSearchBarPlaceHolderConversationText)
|
||||
pageOne.down = true
|
||||
pageTwo.down = false
|
||||
setCurrentUidSmartListModelIndex()
|
||||
forceReselectConversationSmartListCurrentIndex()
|
||||
buttonRectOne.showConversations()
|
||||
}
|
||||
onReleased: {
|
||||
buttonRectOne.color = JamiTheme.backgroundColor
|
||||
|
@ -145,6 +149,15 @@ TabBar {
|
|||
buttonRectOne.color = JamiTheme.backgroundColor
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+L"
|
||||
context: Qt.ApplicationShortcut
|
||||
enabled: buttonRectOne.visible
|
||||
onActivated: {
|
||||
buttonRectOne.showConversations()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -184,6 +197,14 @@ TabBar {
|
|||
height: tabBar.height
|
||||
color: JamiTheme.backgroundColor
|
||||
|
||||
function showRequests() {
|
||||
ConversationsAdapter.setConversationFilter("PENDING")
|
||||
contactSearchBar.setPlaceholderString(
|
||||
JamiTheme.contactSearchBarPlaceHolderInivitionText)
|
||||
pageTwo.down = true
|
||||
pageOne.down = false
|
||||
}
|
||||
|
||||
Image {
|
||||
id: imgRectTwo
|
||||
anchors.horizontalCenter: buttonRectTwo.horizontalCenter
|
||||
|
@ -237,11 +258,7 @@ TabBar {
|
|||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onPressed: {
|
||||
ConversationsAdapter.setConversationFilter("PENDING")
|
||||
contactSearchBar.setPlaceholderString(
|
||||
JamiTheme.contactSearchBarPlaceHolderInivitionText)
|
||||
pageTwo.down = true
|
||||
pageOne.down = false
|
||||
buttonRectTwo.showRequests()
|
||||
}
|
||||
onReleased: {
|
||||
buttonRectTwo.color = JamiTheme.backgroundColor
|
||||
|
@ -253,6 +270,15 @@ TabBar {
|
|||
buttonRectTwo.color = JamiTheme.backgroundColor
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Ctrl+R"
|
||||
context: Qt.ApplicationShortcut
|
||||
enabled: buttonRectTwo.visible
|
||||
onActivated: {
|
||||
buttonRectTwo.showRequests()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -188,6 +188,8 @@ Rectangle {
|
|||
return pageIdAvSettingPage
|
||||
case SettingsView.Plugin:
|
||||
return pageIdPluginSettingsPage
|
||||
case SettingsView.Plugin:
|
||||
return pageIdPluginSettingsPage
|
||||
}
|
||||
}
|
||||
|
||||
|
|
27
src/settingsview/components/KeyBoardShortcutKey.qml
Normal file
27
src/settingsview/components/KeyBoardShortcutKey.qml
Normal file
|
@ -0,0 +1,27 @@
|
|||
import QtQuick 2.9
|
||||
import QtQuick.Controls 2.2
|
||||
|
||||
Item {
|
||||
property alias text: shortcutText.text
|
||||
Rectangle{
|
||||
id: keyRect
|
||||
width: t_metrics.tightBoundingRect.width + 10
|
||||
height: t_metrics.tightBoundingRect.height + 10
|
||||
color: "#525252"
|
||||
radius: 5
|
||||
anchors.centerIn: parent
|
||||
Text {
|
||||
id : shortcutText
|
||||
anchors.centerIn: parent
|
||||
anchors.leftMargin: 10
|
||||
font.family: "Arial"
|
||||
font.pointSize: 12
|
||||
color: "white"
|
||||
}
|
||||
TextMetrics {
|
||||
id: t_metrics
|
||||
font: shortcutText.font
|
||||
text: shortcutText.text
|
||||
}
|
||||
}
|
||||
}
|
619
src/settingsview/components/KeyBoardShortcutTable.qml
Normal file
619
src/settingsview/components/KeyBoardShortcutTable.qml
Normal file
|
@ -0,0 +1,619 @@
|
|||
/*
|
||||
* Copyright (C) 2019-2020 by Savoir-faire Linux
|
||||
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import QtQuick 2.9
|
||||
import QtQuick.Controls 2.2
|
||||
import QtQuick.Controls 1.4
|
||||
import QtQuick.Controls.Styles 1.4
|
||||
import QtQuick.Layouts 1.3
|
||||
|
||||
Dialog {
|
||||
id: root
|
||||
modal: true
|
||||
|
||||
width: rectangle.width + 24
|
||||
height: rectangle.height + 24
|
||||
|
||||
Rectangle {
|
||||
id: rectangle
|
||||
|
||||
property int minWidth: 1200
|
||||
property int minHeight: 500
|
||||
|
||||
implicitWidth: minWidth
|
||||
implicitHeight: minHeight
|
||||
color: "white"
|
||||
radius: 30
|
||||
|
||||
Rectangle {
|
||||
width: 500
|
||||
height: t_metrics_title.tightBoundingRect.height + 15
|
||||
color: "#e0e0e0"
|
||||
radius: 8
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 10
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
Text {
|
||||
id : titleText
|
||||
anchors.centerIn: parent
|
||||
anchors.leftMargin: 10
|
||||
font.family: "Arial"
|
||||
font.pointSize: 12
|
||||
font.bold: true
|
||||
text: "Shortcuts"
|
||||
color: "black"
|
||||
}
|
||||
TextMetrics {
|
||||
id: t_metrics_title
|
||||
font: titleText.font
|
||||
text: titleText.text
|
||||
}
|
||||
}
|
||||
|
||||
ListModel {
|
||||
id: keyboardGeneralShortcutsModel
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+J"
|
||||
Description: qsTr("Open account list")
|
||||
KeyLength: 2
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+L"
|
||||
Description: qsTr("Focus conversations list")
|
||||
KeyLength: 2
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+R"
|
||||
Description: qsTr("Focus requests list")
|
||||
KeyLength: 2
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+↑"
|
||||
Description: qsTr("Focus the previous conversation")
|
||||
KeyLength: 2
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+↓"
|
||||
Description: qsTr("Focus the next conversation")
|
||||
KeyLength: 2
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+F"
|
||||
Description: qsTr("Focus search bar")
|
||||
KeyLength: 2
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "F11"
|
||||
Description: qsTr("Toggle fullscreen")
|
||||
KeyLength: 1
|
||||
}
|
||||
}
|
||||
ListModel {
|
||||
id: keyboardConversationShortcutsModel
|
||||
ListElement {
|
||||
Shortcut: "Shift+Ctrl+C"
|
||||
Description: qsTr("Start an audio call")
|
||||
KeyLength: 3
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Shift+Ctrl+X"
|
||||
Description: qsTr("Start an video call")
|
||||
KeyLength: 3
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Shift+Ctrl+L"
|
||||
Description: qsTr("Clear history")
|
||||
KeyLength: 3
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Shift+Ctrl+B"
|
||||
Description: qsTr("Block contact")
|
||||
KeyLength: 3
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Shift+Ctrl+A"
|
||||
Description: qsTr("Accept contact request")
|
||||
KeyLength: 3
|
||||
}
|
||||
}
|
||||
ListModel {
|
||||
id: keyboardSettingsShortcutsModel
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+M"
|
||||
Description: qsTr("Toggle media settings")
|
||||
KeyLength: 2
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+G"
|
||||
Description: qsTr("Toggle general settings")
|
||||
KeyLength: 2
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+I"
|
||||
Description: qsTr("Toggle account settings")
|
||||
KeyLength: 2
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+Shift+N"
|
||||
Description: qsTr("Open account creation's wizard")
|
||||
KeyLength: 3
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "F10"
|
||||
Description: qsTr("Open this window")
|
||||
KeyLength: 1
|
||||
}
|
||||
}
|
||||
ListModel {
|
||||
id: keyboardCallsShortcutsModel
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+Y"
|
||||
Description: qsTr("Answer an incoming call")
|
||||
KeyLength: 2
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+D"
|
||||
Description: qsTr("Hangup current call")
|
||||
KeyLength: 2
|
||||
}
|
||||
ListElement {
|
||||
Shortcut: "Ctrl+Shift+D"
|
||||
Description: qsTr("Decline the call request")
|
||||
KeyLength: 2
|
||||
}
|
||||
}
|
||||
Component {
|
||||
id: shortcutDelegateWithThreeKeys
|
||||
|
||||
Rectangle {
|
||||
id: cellRectWithThreeKeys
|
||||
|
||||
implicitWidth: minWidth /2
|
||||
implicitHeight: 50
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 50
|
||||
color: "white"
|
||||
border.color: "white"
|
||||
Rectangle {
|
||||
id: containerRectWithThreeKeys
|
||||
|
||||
implicitWidth: parent.width - 10
|
||||
implicitHeight: 50
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
Component.onCompleted: {
|
||||
var componentKeyOne = Qt.createComponent("KeyBoardShortcutKey.qml")
|
||||
if (componentKeyOne.status === Component.Ready) {
|
||||
var objectKeyOne = componentKeyOne.createObject(containerRectWithThreeKeys)
|
||||
objectKeyOne.anchors.verticalCenter = containerRectWithThreeKeys.verticalCenter
|
||||
objectKeyOne.anchors.left = containerRectWithThreeKeys.left
|
||||
objectKeyOne.text = Qt.binding(function() { return modelData.Shortcut.split("+")[0] })
|
||||
}
|
||||
if (modelData.Shortcut.split("+").length === 1)
|
||||
return
|
||||
var componentPlusSign = Qt.createQmlObject('import QtQuick 2.0;' +
|
||||
'Text {anchors.verticalCenter: containerRectWithThreeKeys.verticalCenter;' +
|
||||
'anchors.verticalCenterOffset: -2;' +
|
||||
'anchors.left: containerRectWithThreeKeys.left;' +
|
||||
'anchors.leftMargin: 30;' +
|
||||
'color: "#525252";' +
|
||||
'font.bold: true;' +
|
||||
'font.pointSize : 12;' +
|
||||
'text: "+"}',
|
||||
containerRectWithThreeKeys)
|
||||
|
||||
var componentKeyTwo = Qt.createComponent("KeyBoardShortcutKey.qml")
|
||||
if (componentKeyTwo.status === Component.Ready) {
|
||||
var objectKeyTwo = componentKeyTwo.createObject(containerRectWithThreeKeys)
|
||||
objectKeyTwo.anchors.verticalCenter = containerRectWithThreeKeys.verticalCenter
|
||||
objectKeyTwo.anchors.left = containerRectWithThreeKeys.left
|
||||
objectKeyTwo.anchors.leftMargin = componentPlusSign.anchors.leftMargin + 42
|
||||
objectKeyTwo.text = Qt.binding(function() { return modelData.Shortcut.split("+")[1] })
|
||||
}
|
||||
|
||||
if (modelData.Shortcut.split("+").length === 2)
|
||||
return
|
||||
var componentPlusSignTwo = Qt.createQmlObject('import QtQuick 2.0;' +
|
||||
'Text {anchors.verticalCenter: containerRectWithThreeKeys.verticalCenter;' +
|
||||
'anchors.verticalCenterOffset: -2;' +
|
||||
'anchors.left: containerRectWithThreeKeys.left;' +
|
||||
'anchors.leftMargin: 97;' +
|
||||
'color: "#525252";' +
|
||||
'font.bold: true;' +
|
||||
'font.pointSize : 12;' +
|
||||
'text: "+"}',
|
||||
containerRectWithThreeKeys)
|
||||
|
||||
var componentKeyThree = Qt.createComponent("KeyBoardShortcutKey.qml")
|
||||
if (componentKeyThree.status === Component.Ready) {
|
||||
var objectKeyThree = componentKeyThree.createObject(containerRectWithThreeKeys)
|
||||
objectKeyThree.anchors.verticalCenter = containerRectWithThreeKeys.verticalCenter
|
||||
objectKeyThree.anchors.left = containerRectWithThreeKeys.left
|
||||
objectKeyThree.anchors.leftMargin = componentPlusSignTwo.anchors.leftMargin + 35
|
||||
objectKeyThree.text = Qt.binding(function() { return modelData.Shortcut.split("+")[2] })
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Component {
|
||||
id: descriptionDelegate
|
||||
|
||||
Rectangle {
|
||||
implicitWidth: minWidth /2
|
||||
implicitHeight: 50
|
||||
|
||||
color: "white"
|
||||
border.color: "white"
|
||||
Text {
|
||||
id : descriptionText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 10
|
||||
font.family: "Arial"
|
||||
font.pointSize: 10
|
||||
text: styleData.value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
spacing: 2
|
||||
id: columnAll
|
||||
anchors.rightMargin: 20
|
||||
anchors.leftMargin: 20
|
||||
anchors.bottomMargin: 20
|
||||
anchors.topMargin: 50
|
||||
|
||||
width: minWidth
|
||||
height: minHeight - 100
|
||||
anchors.fill: parent
|
||||
|
||||
StackLayout {
|
||||
// pages
|
||||
implicitWidth: parent.width
|
||||
implicitHeight: parent.height - tabBar.height
|
||||
currentIndex: tabBar.currentIndex
|
||||
Item {
|
||||
id: tabOne
|
||||
Rectangle {
|
||||
implicitWidth: parent.width / 2
|
||||
implicitHeight: parent.height
|
||||
anchors.left: parent.left
|
||||
TableView {
|
||||
id: generalTableView
|
||||
anchors.fill: parent
|
||||
horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
|
||||
TableViewColumn {
|
||||
role: "Description"
|
||||
width: generalTableView.width / 2
|
||||
delegate: descriptionDelegate
|
||||
}
|
||||
TableViewColumn {
|
||||
role: "Shortcut"
|
||||
width: generalTableView.width / 2
|
||||
delegate: Component{
|
||||
Loader {
|
||||
property variant modelData: model
|
||||
sourceComponent: shortcutDelegateWithThreeKeys
|
||||
}
|
||||
}
|
||||
}
|
||||
model: keyboardGeneralShortcutsModel
|
||||
rowDelegate: Rectangle {
|
||||
height: 50
|
||||
color: "white"
|
||||
}
|
||||
style: TableViewStyle {
|
||||
alternateBackgroundColor: "white"
|
||||
frame: Rectangle {
|
||||
border{
|
||||
color: "transparent" // color of the border
|
||||
}
|
||||
}
|
||||
headerDelegate: Rectangle {
|
||||
// Only first column's header is shown
|
||||
height: [t_metrics_general.tightBoundingRect.height + 10, 0][styleData.column % 2]
|
||||
width: [parent.width, 0][styleData.column % 2]
|
||||
color: "white"
|
||||
radius: 10
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 5
|
||||
Text {
|
||||
id : generalShortcutText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 10
|
||||
font.family: "Arial"
|
||||
font.pointSize: 12
|
||||
text: styleData.column % 2 ? "" : "General"
|
||||
color: "black"
|
||||
}
|
||||
TextMetrics {
|
||||
id: t_metrics_general
|
||||
font: generalShortcutText.font
|
||||
text: generalShortcutText.text
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
implicitWidth: parent.width / 2
|
||||
implicitHeight: parent.height
|
||||
anchors.right: parent.right
|
||||
|
||||
TableView {
|
||||
id: conversationsTableView
|
||||
anchors.fill: parent
|
||||
horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
|
||||
TableViewColumn {
|
||||
role: "Description"
|
||||
width: conversationsTableView.width / 2
|
||||
delegate: descriptionDelegate
|
||||
}
|
||||
TableViewColumn {
|
||||
role: "Shortcut"
|
||||
width: conversationsTableView.width / 2
|
||||
delegate: Component{
|
||||
Loader {
|
||||
property variant modelData: model
|
||||
sourceComponent: shortcutDelegateWithThreeKeys
|
||||
}
|
||||
}
|
||||
}
|
||||
model: keyboardConversationShortcutsModel
|
||||
rowDelegate: Rectangle {
|
||||
height: 50
|
||||
color: "white"
|
||||
}
|
||||
style: TableViewStyle {
|
||||
alternateBackgroundColor: "white"
|
||||
frame: Rectangle {
|
||||
border{
|
||||
color: "transparent" // color of the border
|
||||
}
|
||||
}
|
||||
headerDelegate: Rectangle {
|
||||
// Only first column's header is shown
|
||||
height: [t_metrics_conversations.tightBoundingRect.height + 10, 0][styleData.column % 2]
|
||||
width: [parent.width, 0][styleData.column % 2]
|
||||
color: "white"
|
||||
radius: 10
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 5
|
||||
Text {
|
||||
id : conversationsShortcutText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 10
|
||||
font.family: "Arial"
|
||||
font.pointSize: 12
|
||||
text: styleData.column % 2 ? "" : "Conversations"
|
||||
color: "black"
|
||||
}
|
||||
TextMetrics {
|
||||
id: t_metrics_conversations
|
||||
font: conversationsShortcutText.font
|
||||
text: conversationsShortcutText.text
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Item {
|
||||
id: tabTwo
|
||||
Rectangle {
|
||||
implicitWidth: parent.width / 2
|
||||
implicitHeight: parent.height
|
||||
anchors.left: parent.left
|
||||
TableView {
|
||||
id: callsTableView
|
||||
anchors.fill: parent
|
||||
horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
|
||||
TableViewColumn {
|
||||
role: "Description"
|
||||
width: callsTableView.width / 2
|
||||
delegate: descriptionDelegate
|
||||
}
|
||||
TableViewColumn {
|
||||
role: "Shortcut"
|
||||
width: callsTableView.width / 2
|
||||
delegate: Component{
|
||||
Loader {
|
||||
property variant modelData: model
|
||||
sourceComponent: shortcutDelegateWithThreeKeys
|
||||
}
|
||||
}
|
||||
}
|
||||
model: keyboardCallsShortcutsModel
|
||||
rowDelegate: Rectangle {
|
||||
height: 50
|
||||
color: "white"
|
||||
}
|
||||
style: TableViewStyle {
|
||||
alternateBackgroundColor: "white"
|
||||
frame: Rectangle {
|
||||
border{
|
||||
color: "transparent" // color of the border
|
||||
}
|
||||
}
|
||||
headerDelegate: Rectangle {
|
||||
// Only first column's header is shown
|
||||
height: [t_metrics_calls.tightBoundingRect.height + 10, 0][styleData.column % 2]
|
||||
width: [parent.width, 0][styleData.column % 2]
|
||||
color: "white"
|
||||
radius: 10
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 5
|
||||
Text {
|
||||
id : callsShortcutText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 10
|
||||
font.family: "Arial"
|
||||
font.pointSize: 12
|
||||
text: styleData.column % 2 ? "" : "Calls"
|
||||
color: "black"
|
||||
}
|
||||
// make sure that calls and settings header are parallel
|
||||
TextMetrics {
|
||||
id: t_metrics_calls
|
||||
font: callsShortcutText.font
|
||||
text: "Settings"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
implicitWidth: parent.width / 2
|
||||
implicitHeight: parent.height
|
||||
anchors.right: parent.right
|
||||
TableView {
|
||||
id: settingsTableView
|
||||
anchors.fill: parent
|
||||
horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
|
||||
TableViewColumn {
|
||||
role: "Description"
|
||||
width: settingsTableView.width / 2
|
||||
delegate: descriptionDelegate
|
||||
}
|
||||
TableViewColumn {
|
||||
role: "Shortcut"
|
||||
width: settingsTableView.width / 2
|
||||
delegate: Component{
|
||||
Loader {
|
||||
property variant modelData: model
|
||||
sourceComponent: shortcutDelegateWithThreeKeys
|
||||
}
|
||||
}
|
||||
}
|
||||
model: keyboardSettingsShortcutsModel
|
||||
rowDelegate: Rectangle {
|
||||
height: 50
|
||||
color: "white"
|
||||
}
|
||||
style: TableViewStyle {
|
||||
alternateBackgroundColor: "white"
|
||||
frame: Rectangle {
|
||||
border{
|
||||
color: "transparent" // color of the border
|
||||
}
|
||||
}
|
||||
headerDelegate: Rectangle {
|
||||
// Only first column's header is shown
|
||||
height: [t_metrics_settings.tightBoundingRect.height + 10, 0][styleData.column % 2]
|
||||
width: [parent.width, 0][styleData.column % 2]
|
||||
color: "white"
|
||||
radius: 10
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 5
|
||||
Text {
|
||||
id : settingsShortcutText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 10
|
||||
font.family: "Arial"
|
||||
font.pointSize: 12
|
||||
text: styleData.column % 2 ? "" : "Settings"
|
||||
color: "black"
|
||||
}
|
||||
TextMetrics {
|
||||
id: t_metrics_settings
|
||||
font: settingsShortcutText.font
|
||||
text: settingsShortcutText.text
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
TabBar {
|
||||
id: tabBar
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.bottomMargin: 15
|
||||
width: 240
|
||||
currentIndex: 0
|
||||
TabButton {
|
||||
id: pageOne
|
||||
width: tabBar.width / 2
|
||||
text: qsTr("1")
|
||||
down: true
|
||||
// customize tab button
|
||||
contentItem: Text {
|
||||
text: pageOne.text
|
||||
font: pageOne.font
|
||||
opacity: enabled ? 1.0 : 0.3
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
// customize tab button
|
||||
background: Rectangle {
|
||||
id: buttonRectOne
|
||||
implicitWidth: tabBar.width / 2
|
||||
implicitHeight: tabBar.height
|
||||
radius: 10
|
||||
color: pageOne.down ? "#e0e0e0" :"#fdfdfd"
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onPressed: { buttonRectOne.color = "#c0c0c0"; tabBar.currentIndex = 0; pageOne.down = true; pageTwo.down = false;}
|
||||
onReleased: { buttonRectOne.color = "#e0e0e0"; }
|
||||
onEntered: { buttonRectOne.color = "#c7c7c7"; }
|
||||
onExited: { buttonRectOne.color = Qt.binding(function() { return pageOne.down ? "#e0e0e0" :"#fdfdfd" }); }
|
||||
}
|
||||
}
|
||||
}
|
||||
TabButton {
|
||||
id: pageTwo
|
||||
text: qsTr("2")
|
||||
width: tabBar.width / 2
|
||||
contentItem: Text {
|
||||
text: pageTwo.text
|
||||
font: pageTwo.font
|
||||
opacity: enabled ? 1.0 : 0.3
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
id: buttonRectTwo
|
||||
implicitWidth: tabBar.width / 2
|
||||
implicitHeight: tabBar.height
|
||||
radius: 10
|
||||
color: pageTwo.down ? "#e0e0e0" :"#fdfdfd"
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onPressed: { buttonRectTwo.color = "#c0c0c0"; tabBar.currentIndex = 1; pageTwo.down = true; pageOne.down = false;}
|
||||
onReleased: { buttonRectTwo.color = "#e0e0e0"; }
|
||||
onEntered: { buttonRectTwo.color = "#c7c7c7"; }
|
||||
onExited: { buttonRectTwo.color = Qt.binding(function() { return pageTwo.down ? "#e0e0e0" :"#fdfdfd" }); }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -988,6 +988,18 @@ UtilsAdapter::getCurrAccId()
|
|||
return LRCInstance::getCurrAccId();
|
||||
}
|
||||
|
||||
const QString
|
||||
UtilsAdapter::getCurrConvId()
|
||||
{
|
||||
return LRCInstance::getCurrentConvUid();
|
||||
}
|
||||
|
||||
void
|
||||
UtilsAdapter::makePermanentCurrentConv()
|
||||
{
|
||||
LRCInstance::getCurrentConversationModel()->makePermanent(LRCInstance::getCurrentConvUid());
|
||||
}
|
||||
|
||||
const QStringList
|
||||
UtilsAdapter::getCurrAccList()
|
||||
{
|
||||
|
|
|
@ -497,6 +497,8 @@ public:
|
|||
Q_INVOKABLE const QString getBestId(const QString &accountId, const QString &uid);
|
||||
|
||||
Q_INVOKABLE const QString getCurrAccId();
|
||||
Q_INVOKABLE const QString getCurrConvId();
|
||||
Q_INVOKABLE void makePermanentCurrentConv();
|
||||
Q_INVOKABLE const QStringList getCurrAccList();
|
||||
Q_INVOKABLE int getAccountListSize();
|
||||
Q_INVOKABLE void setCurrentCall(const QString &accountId, const QString &convUid);
|
||||
|
|
Loading…
Add table
Reference in a new issue