Browse Source

Add visible scrollbar to list of printer profiles

fieldOfView 4 years ago
parent
commit
8ce5593eec

+ 2 - 2
resources/qml/WelcomePages/AddLocalPrinterScrollView.qml

@@ -5,7 +5,7 @@ import QtQuick 2.10
 import QtQuick.Controls 2.3
 
 import UM 1.3 as UM
-import Cura 1.0 as Cura
+import Cura 1.1 as Cura
 
 
 //
@@ -68,7 +68,7 @@ Item
         height: childrenRect.height
 
         // ScrollView + ListView for selecting a local printer to add
-        ScrollView
+        Cura.ScrollView
         {
             id: scrollView
             anchors.left: parent.left

+ 45 - 0
resources/qml/Widgets/ScrollView.qml

@@ -0,0 +1,45 @@
+// Copyright (c) 2020 Ultimaker B.V.
+// Toolbox is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.10
+import QtQuick.Controls 2.3
+
+import UM 1.1 as UM
+
+ScrollView
+{
+    clip: true
+    // Setting this property to false hides the scrollbar both when the scrollbar is not needed (child height < height)
+    // and when the scrollbar is not actively being hovered or pressed
+    property bool scrollAlwaysVisible: true
+
+    ScrollBar.vertical: ScrollBar
+    {
+        hoverEnabled: true
+        policy: parent.scrollAlwaysVisible ? ScrollBar.AlwaysOn : ScrollBar.AsNeeded
+        anchors.top: parent.top
+        anchors.right: parent.right
+        anchors.bottom: parent.bottom
+
+        contentItem: Rectangle
+        {
+            implicitWidth: UM.Theme.getSize("scrollbar").width
+            opacity: (parent.active || parent.parent.scrollAlwaysVisible) ? 1.0 : 0.0
+            radius: Math.round(width / 2)
+            color:
+            {
+                if (parent.pressed)
+                {
+                    return UM.Theme.getColor("scrollbar_handle_down")
+                }
+                else if (parent.hovered)
+                {
+                    return UM.Theme.getColor("scrollbar_handle_hover")
+                }
+                return UM.Theme.getColor("scrollbar_handle")
+            }
+            Behavior on color { ColorAnimation { duration: 100; } }
+            Behavior on opacity { NumberAnimation { duration: 100 } }
+        }
+    }
+}

+ 1 - 0
resources/qml/qmldir

@@ -35,6 +35,7 @@ RadioButton         1.0 RadioButton.qml
 Scrollable          1.0 Scrollable.qml
 TabButton           1.0 TabButton.qml
 TextField           1.0 TextField.qml
+ScrollView          1.0 ScrollView.qml
 
 
 # Cura/MachineSettings