123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // Copyright (c) 2019 Ultimaker B.V.
- // Cura is released under the terms of the LGPLv3 or higher.
- import QtQuick 2.2
- import QtQuick.Controls 2.0
- import UM 1.3 as UM
- import Cura 1.0 as Cura
- /**
- * The expandable component has 3 major sub components:
- * - The headerItem Always visible and should hold some info about what happens if the component is expanded
- * - The popupItem The content that needs to be shown if the component is expanded.
- */
- Item
- {
- id: base
- property bool expanded: false
- property bool enabled: true
- property var borderWidth: 1
- property color borderColor: UM.Theme.getColor("monitor_card_border")
- property color headerBackgroundColor: UM.Theme.getColor("monitor_icon_accent")
- property color headerHoverColor: UM.Theme.getColor("monitor_card_hover")
- property color drawerBackgroundColor: UM.Theme.getColor("monitor_icon_accent")
- property alias headerItem: header.children
- property alias drawerItem: drawer.children
- width: parent.width
- height: childrenRect.height
- Rectangle
- {
- id: header
- border
- {
- color: borderColor
- width: borderWidth
- }
- color: base.enabled && headerMouseArea.containsMouse ? headerHoverColor : headerBackgroundColor
- height: childrenRect.height
- width: parent.width
- radius: 2 * screenScaleFactor // TODO: Theme!
- Behavior on color
- {
- ColorAnimation
- {
- duration: 100
- }
- }
- }
- MouseArea
- {
- id: headerMouseArea
- anchors.fill: header
- onClicked:
- {
- if (!base.enabled) return
- base.expanded = !base.expanded
- }
- hoverEnabled: base.enabled
- }
- Rectangle
- {
- id: drawer
- anchors
- {
- top: header.bottom
- topMargin: -1
- }
- border
- {
- color: borderColor
- width: borderWidth
- }
- clip: true
- color: headerBackgroundColor
- height: base.expanded ? childrenRect.height : 0
- width: parent.width
- radius: 2 * screenScaleFactor // TODO: Theme!
- Behavior on height
- {
- NumberAnimation
- {
- duration: 100
- }
- }
- }
- }
|