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