Newer
Older
import QtQuick.Controls 2.2
import QtQuick.Controls.Styles 1.4
import QtGraphicalEffects 1.0
///@detalis normalColorText Text color in normal state.
///@detalis hilightColorText Text color in selected state.
///@detalis normalColorTopText Text color in the main line in normal state.
///@detalis hilightColorTopText Text color in the main line in active state.
///@detalis hilightColor Item color in selected state.
///@detalis normalTopColor Top string color in normal state.
///@detalis hilightTopColor Top string color in selected state.
///@detalis widthPopupComboBoxNormal Width of the combo box in the normal state.
///@detalis widthPopupComboBoxActive Width of the ComboBox in the active state.
///@detalis heightComboBoxNormal Height of the ComboBox in the normal state.
///@detalis heightComboBoxActive Height of the ComboBox in the active state.
///@detalis sidePaddingNormal: Sets the indent from the edge of the right and left edges of the parent in the normal state.
///@detalis sidePaddingActive Sets the indent from the edge of the right and left edges of the parent in the active state.
///@detalis topIndentNormal Sets the indent from the edge of the upper of the parent in the normal state.
///@detalis topIndentActive Sets the indent from the edge of the upper of the parent in the active state.
///@detalis bottomIndentNormal Sets the indent from the edge of the lower of the parent in the normal state.
///@detalis bottomIndentActive Sets the indent from the edge of the lower of the parent in the active state.
///@detalis paddingTopItemDelegate Indent above from item delegate.
///@detalis paddingBottomItemDelegate Indent below from item delegate.
///@detalis intervalListElement Spacing between items in a list.
///@detalis bottomIntervalListElement Spacing from bottom to bottom.
///@detalis topEffect Using an effect for the top element.
///@detalis indicatorImageNormal Indicator picture address for normal state.
///@detalis indicatorImageActive Indicator picture address for active state.
/// colorTopNormalDropShadow Color of the shadow effect of the combo box when minimized.
///@detalis colorDropShadow Unboxed shadow color in expanded state.
property string colorDropShadow
///@detalis fontComboBox Font setting combobox.
property alias fontComboBox:customComboBox.font
id: customComboBox
width: popup.visible ? widthPopupComboBoxActive : widthPopupComboBoxNormal
height: popup.visible ? heightComboBoxActive : heightComboBoxNormal
anchors.verticalCenter: parent.verticalCenter
//Icon icon near the text (arrow)
indicator:
Image
{
source: parent.popup.visible ? indicatorImageActive : indicatorImageNormal
width: indicatorWidth
height: indicatorHeight
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: popup.visible ? sidePaddingActive : sidePaddingNormal
}
background:
Rectangle
{
anchors.fill: parent
color: parent.popup.visible ? hilightTopColor : normalTopColor
radius: 2 * pt
height: parent.height
}
contentItem:
Text
{
id:textTopComboBox
anchors.fill: parent
anchors.leftMargin: popup.visible ? sidePaddingActive : sidePaddingNormal
text: parent.displayText
font: parent.font
color: popup.visible ? hilightColorTopText : normalColorTopText
verticalAlignment: Text.AlignVCenter
}
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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
color: normalColor
Rectangle
{
id: contentCorner
anchors.fill: parent
}
DropShadow
{
anchors.fill: parent
source: contentCorner
verticalOffset: 9 * pt
samples: 13 * pt
color: colorDropShadow
}
}
//Shadow effect for the top element.
DropShadow
anchors.fill: if (topEffect)
parent
source: if (topEffect)
background
verticalOffset: if (topEffect)
9 * pt
else 0
samples: if (topEffect)
13 * pt
else 0
color: if (topEffect)
customComboBox.popup.visible ? colorDropShadow : colorTopNormalDropShadow
else "#00000000"