Newer
Older
import QtQuick.Controls 2.2
import QtQuick.Controls.Styles 1.4
import QtGraphicalEffects 1.0

tatiana.novikova
committed
id: dapComboBox
///@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 paddingTopItemDelegate Indent above 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.

tatiana.novikova
committed
///@detalis indicatorLeftInterval Space between indicator border and text border.
property int indicatorLeftInterval
/// 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.

tatiana.novikova
committed
property alias fontComboBox: dapComboBox.font
///@detalis mainLineText Text without unneccesary part.
property string mainLineText
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
}
{
anchors.fill: parent
color: parent.popup.visible ? hilightTopColor : normalTopColor
height: parent.height
}

tatiana.novikova
committed
{
anchors.fill: parent
anchors.leftMargin: popup.visible ? sidePaddingActive : sidePaddingNormal

tatiana.novikova
committed
text: mainLineText
font: parent.font
color: popup.visible ? hilightColorTopText : normalColorTopText
verticalAlignment: Text.AlignVCenter
}
popup:
Popup
{
y: parent.height - 1

tatiana.novikova
committed
width: parent.width
padding: 0
contentItem:
ListView
{
clip: true
implicitHeight: contentHeight

tatiana.novikova
committed
model: dapComboBox.popup.visible ? dapComboBox.delegateModel : null
ScrollIndicator.vertical: ScrollIndicator {}
}
background:
Rectangle
{

tatiana.novikova
committed
width: dapComboBox.background.width
color: normalColor
Rectangle
{
id: contentCorner
anchors.fill: parent
}
{
anchors.fill: parent
source: contentCorner
verticalOffset: 9 * pt
samples: 13 * pt
color: colorDropShadow
}
}
anchors.fill: topEffect ? parent : null
source: topEffect ? background : null
verticalOffset: topEffect ? 9 * pt : 0
samples: topEffect ? 13 * pt : 0
color: topEffect ? (dapComboBox.popup.visible ? colorDropShadow : colorTopNormalDropShadow) : "#000000"