From 20fcdb3cd8cbe10c4598de72b4f647f3bbad2f4a Mon Sep 17 00:00:00 2001 From: Konstantin <djtv01@gmail.com> Date: Wed, 4 Dec 2019 21:23:05 +0300 Subject: [PATCH] bug-2708 --- DapComboBox.qml | 96 +++++++++++++++++++++++++++++++++++++++++ DapComboBoxDelegate.qml | 31 +++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 DapComboBox.qml create mode 100644 DapComboBoxDelegate.qml diff --git a/DapComboBox.qml b/DapComboBox.qml new file mode 100644 index 0000000..50bf9ea --- /dev/null +++ b/DapComboBox.qml @@ -0,0 +1,96 @@ +import QtQuick 2.0 +import QtQuick.Controls 2.5 +import QtQuick.Controls.Styles 1.4 +import QtGraphicalEffects 1.0 + +///This file will be moved to libdap and removed from here. +///this comboBox used int top panel exchange and statusBar will be deleted in the future +///About property +/// hilightColor - color of the selected item +/// fontSizeComboBox - font size for the entire widget +///widthPopupComboBoxActive and widthPopupComboBoxNormal - width of the combo box +/// in the active state and in the normal state +///spacingEdgeActive and spacingEdgeNormal - padding width of the combo box in the active state +/// and in the normal state +ComboBox { + property string normalColorText: "#070023" + property string hilightColorText: "#FFFFFF" + property string normalColor: "#FFFFFF" + property string hilightColor: "#330F54" + property int fontSizeComboBox: 16*pt + property int widthPopupComboBoxActive: parent.width + property int widthPopupComboBoxNormal: parent.width + property int spacingEdgeActive:16 * pt + property int spacingEdgeNormal:16 * pt + + + id: customComboBox + width: popup.visible ? widthPopupComboBoxActive : widthPopupComboBoxNormal + height: parent.height + + delegate:DapComboBoxDelegate{delegateContentText: modelData;} + + indicator: Image { + source: parent.popup.visible ? "qrc:/Resources/Icons/ic_arrow_drop_up_dark_blue.png" : "qrc:/Resources/Icons/ic_arrow_drop_down_dark_blue.png" + width: 24 * pt + height: 24 * pt + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: popup.visible ? spacingEdgeActive : spacingEdgeNormal + } + + background: Rectangle { + anchors.fill: parent + color: parent.popup.visible ? normalColor : "transparent" + radius: 2 * pt + height: parent.height + + } + + contentItem: Text { + anchors.fill: parent + anchors.leftMargin: popup.visible ? spacingEdgeActive : spacingEdgeNormal + anchors.topMargin: 12 * pt + text: parent.displayText + font.family: fontRobotoRegular.name + font.pixelSize: fontSizeComboBox + color: normalColorText + verticalAlignment: Text.AlignTop + } + + popup: Popup { + y: parent.height - 1 + width: parent.width + 1 + padding: 1 + contentItem: ListView { + clip: true + implicitHeight: contentHeight + model: customComboBox.popup.visible ? customComboBox.delegateModel : null + ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle { + width: customComboBox.background.width + Rectangle { + id: contentCorner + anchors.fill: parent + } + + DropShadow { + anchors.fill: parent + source: contentCorner + verticalOffset: 9 * pt + samples: 13 * pt + color: "#40000000" + } + } + } + + DropShadow { + anchors.fill: parent + source: background + verticalOffset: 9 * pt + samples: 13 * pt + color: "#40000000" + } +} diff --git a/DapComboBoxDelegate.qml b/DapComboBoxDelegate.qml new file mode 100644 index 0000000..5f159a7 --- /dev/null +++ b/DapComboBoxDelegate.qml @@ -0,0 +1,31 @@ +import QtQuick 2.0 +import QtQuick.Controls 2.5 + +ItemDelegate { + property string delegateContentText: "" + width: parent.width + height:{ + if(index == currentIndex) return 0 + else return 42*pt + } + contentItem: Text { + id:textDelegateComboBox + anchors.fill: parent + anchors.topMargin: 8 * pt + anchors.leftMargin: popup.visible ? spacingEdgeActive : spacingEdgeNormal + verticalAlignment: Qt.AlignTop + font.family: fontRobotoRegular.name + font.pixelSize: fontSizeComboBox + text: {if(index != currentIndex) return delegateContentText;} + color: hovered ? hilightColorText : normalColorText + } + + background: Rectangle { + anchors.fill: parent + anchors.bottomMargin: 10 * pt + color: hovered ? hilightColor : normalColor + } + + highlighted: parent.highlightedIndex === index + +} -- GitLab