Skip to content

Connection tree improvements #4013

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Feb 22, 2018
Prev Previous commit
Next Next commit
Add shortcuts support to inline menu
  • Loading branch information
uglide committed Feb 20, 2018
commit da2c98a48210887c2c7c0f8024e32d0b9bca6ab8
39 changes: 24 additions & 15 deletions src/qml/connections-tree/menu/InlineMenu.qml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import QtQuick 2.3
import QtQuick 2.5
import QtQuick.Layouts 1.1
import QtQuick.Controls 1.4
import QtQuick.Window 2.2
Expand All @@ -7,7 +7,7 @@ import "./../../"

RowLayout {
id: root
property alias model: repeater.model
property alias model: repeater.model
property var callbacks

function sendEvent(e) {
Expand All @@ -24,25 +24,34 @@ RowLayout {
Repeater {
id: repeater

ToolButton {

property variant data: modelData || model

iconSource: data['icon']

Item {
Layout.preferredWidth: PlatformUtils.isOSXRetina(Screen)? 20 : 25
Layout.preferredHeight: PlatformUtils.isOSXRetina(Screen)? 20 : 25
Layout.maximumHeight: PlatformUtils.isOSXRetina(Screen)? 20 : 25

onClicked: {
if (data['callback'] != undefined)
return root.callCallback(data['callback'])
else
return root.sendEvent(data['event'])
ToolButton {
id: actionButton
anchors.fill: parent

iconSource: modelData['icon']

onClicked: handleClick()

function handleClick() {
if (modelData['callback'] != undefined)
return root.callCallback(modelData['callback'])
else
return root.sendEvent(modelData['event'])
}

tooltip: modelData['help'] != undefined ? modelData['help'] + " (" + modelData["shortcut"] + ")" : ""
objectName: modelData['event'] != undefined ? "rdm_inline_menu_button_" + modelData['event'] : ""
}

tooltip: data['help'] != undefined ? data['help'] : ""
objectName: data['event'] != undefined ? "rdm_inline_menu_button_" + data['event'] : ""
Shortcut {
sequence: modelData["shortcut"]
onActivated: actionButton.handleClick()
}
}
}
}
33 changes: 13 additions & 20 deletions src/qml/connections-tree/menu/key.qml
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,22 @@ import QtQuick.Layouts 1.1
import QtQuick.Controls 1.4
import "."

RowLayout {
InlineMenu {
id: root

callbacks: {
"copy": function() {
var result = styleData.value["full_name"]

InlineMenu {
callbacks: {
"copy": function() {
if (!connectionsManager)
return

var result = connectionsManager.data(styleData.index, 258) // 258 - original name role

if (result) {
qmlUtils.copyToClipboard(result)
}
},
}

model:
[
{'icon': "qrc:/images/copy.svg", "callback": "copy", "help": qsTr("Copy Key Name")},
{'icon': "qrc:/images/delete.svg", "event": "delete", "help": qsTr("Delete Key")}
]
if (result) {
qmlUtils.copyToClipboard(result)
}
},
}

model:
[
{'icon': "qrc:/images/copy.svg", "callback": "copy", "help": qsTr("Copy Key Name")},
{'icon': "qrc:/images/delete.svg", "event": "delete", "help": qsTr("Delete Key")}
]
}
34 changes: 14 additions & 20 deletions src/qml/connections-tree/menu/namespace.qml
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,23 @@ import QtQuick.Layouts 1.1
import QtQuick.Controls 1.4
import "."

RowLayout {
InlineMenu {
id: root

callbacks: {
"copy": function() {
var result = styleData.value["full_name"]

InlineMenu {
callbacks: {
"copy": function() {
if (!connectionsManager)
return

var result = connectionsManager.data(styleData.index, 258) // 258 - original name role

if (result) {
qmlUtils.copyToClipboard(result + ":*")
}
},
}

model:
[
{'icon': "qrc:/images/copy.svg", "callback": "copy", "help": qsTr("Copy Namespace Pattern")},
{'icon': "qrc:/images/delete.svg", "event": "delete", "help": qsTr("Delete Namespace")}
]
if (result) {
qmlUtils.copyToClipboard(result + ":*")
}
},
}

model:
[
{'icon': "qrc:/images/copy.svg", "callback": "copy", "help": qsTr("Copy Namespace Pattern")},
{'icon': "qrc:/images/delete.svg", "event": "delete", "help": qsTr("Delete Namespace")}
]
}

94 changes: 27 additions & 67 deletions src/qml/connections-tree/menu/server.qml
Original file line number Diff line number Diff line change
Expand Up @@ -3,73 +3,33 @@ import QtQuick.Layouts 1.1
import QtQuick.Controls 1.4
import "."

RowLayout {
InlineMenu {
id: root

property var shortcuts: {
'server_info': Qt.platform.os == "osx"? "Meta+I" : "Ctrl+I",
'console': Qt.platform.os == "osx"? "Meta+T" : "Ctrl+T",
'reload': Qt.platform.os == "osx"? "Meta+R" : "Ctrl+R",
'unload': Qt.platform.os == "osx"? "Meta+U" : "Ctrl+U",
'edit': Qt.platform.os == "osx"? "Meta+E" : "Ctrl+E",
'delete': Qt.platform.os == "osx"? "Meta+Del" : "Ctrl+Del",
}

function sc(t, a) {
return t + " (" + root.shortcuts[a] + ")"
}

InlineMenu {
id: serverMenu
model: [
{'icon': "qrc:/images/log.svg", 'event': 'server_info', "help": sc(qsTr("Server Info"), 'server_info')},
{'icon': "qrc:/images/console.svg", 'event': 'console', "help": sc(qsTr("Open Console"), 'console')},
{'icon': "qrc:/images/refresh.svg", 'event': 'reload', "help": sc(qsTr("Reload Server"), 'reload')},
{'icon': "qrc:/images/offline.svg", 'event': 'unload', "help": sc(qsTr("Unload All Data"), 'unload')},
{'icon': "qrc:/images/editdb.svg", 'event': 'edit', "help": sc(qsTr("Edit Connection Settings"), 'edit')},
{'icon': "qrc:/images/delete.svg", 'event': 'delete', "help": sc(qsTr("Delete Connection"), 'delete')},
]
}

Shortcut {
sequence: root.shortcuts['server_info']
onActivated: {
serverMenu.sendEvent('server_info')
}
}

Shortcut {
sequence: root.shortcuts['console']
onActivated: {
serverMenu.sendEvent('console')
}
}

Shortcut {
sequence: root.shortcuts['reload']
onActivated: {
serverMenu.sendEvent('reload')
}
}

Shortcut {
sequence: root.shortcuts['unload']
onActivated: {
serverMenu.sendEvent('unload')
}
}

Shortcut {
sequence: root.shortcuts['edit']
onActivated: {
serverMenu.sendEvent('edit')
}
}

Shortcut {
sequence: root.shortcuts['delete']
onActivated: {
serverMenu.sendEvent('delete')
}
}
model: [
{
'icon': "qrc:/images/log.svg", 'event': 'server_info', "help": qsTr("Server Info"),
"shortcut": Qt.platform.os == "osx"? "Meta+I" : "Ctrl+I"
},
{
'icon': "qrc:/images/console.svg", 'event': 'console', "help": qsTr("Open Console"),
"shortcut": Qt.platform.os == "osx"? "Meta+T" : "Ctrl+T",
},
{
'icon': "qrc:/images/refresh.svg", 'event': 'reload', "help": qsTr("Reload Server"),
"shortcut": Qt.platform.os == "osx"? "Meta+R" : "Ctrl+R",
},
{
'icon': "qrc:/images/offline.svg", 'event': 'unload', "help": qsTr("Unload All Data"),
"shortcut": Qt.platform.os == "osx"? "Meta+U" : "Ctrl+U",
},
{
'icon': "qrc:/images/editdb.svg", 'event': 'edit', "help": qsTr("Edit Connection Settings"),
"shortcut": Qt.platform.os == "osx"? "Meta+E" : "Ctrl+E",
},
{
'icon': "qrc:/images/delete.svg", 'event': 'delete', "help": qsTr("Delete Connection"),
"shortcut": Qt.platform.os == "osx"? "Meta+Del" : "Ctrl+Del",
},
]
}