Warning, /plasma/qqc2-breeze-style/style/impl/Units.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2015 Marco Martin <mart@kde.org> 0003 * SPDX-FileCopyrightText: 2020 Noah Davis <noahadvs@gmail.com> 0004 * SPDX-FileCopyrightText: 2021 Dan Leinir Turthra Jensen <admin@leinir.dk> 0005 * SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 import QtQuick 0009 import QtQuick.Window 0010 import org.kde.kirigami as Kirigami 0011 0012 pragma Singleton 0013 0014 /** 0015 * A set of values to define semantically sizes and durations 0016 * @inherit QtQuick.QtObject 0017 */ 0018 QtObject { 0019 id: units 0020 0021 // The default border width 0022 property int smallBorder: 1 0023 // Used for the focus ring 0024 property int mediumBorder: smallBorder * 2 0025 // Usually for highlights on larger surfaces like Cards 0026 property int largeBorder: smallBorder * 4 0027 0028 // The default corner radius 0029 property int smallRadius: 3 0030 // Usually for larger surfaces like Cards 0031 property int largeRadius: smallRadius * 2 0032 0033 // Used to underline checkbox labels 0034 property int focusUnderlineThickness: smallBorder 0035 // Used for tabs and items in sidebars 0036 property int highlightLineThickness: smallRadius 0037 0038 property int grooveHeight: { 0039 let h = Math.floor(fontMetrics.height / 3); 0040 h += h % 2; 0041 return h; 0042 } 0043 0044 property int thickGrooveHeight: { 0045 let h = Math.floor(fontMetrics.height / 1.5); 0046 h += h % 2; 0047 return h; 0048 } 0049 0050 /// For things like checkboxes/radiobuttons/switches/slider handles 0051 property int inlineControlHeight: fontMetrics.height 0052 0053 // For small controls with a small amount of vertical padding 0054 property int smallControlHeight: fontMetrics.height + Kirigami.Units.smallSpacing * 2 0055 0056 // For medium controls with a medium amount of vertical padding 0057 property int mediumControlHeight: fontMetrics.height + Kirigami.Units.mediumSpacing * 2 0058 0059 // For large controls with a large amount of vertical padding 0060 property int largeControlHeight: fontMetrics.height + Kirigami.Units.largeSpacing * 2 0061 0062 property real horizontalPaddingRatio: Math.max(fontMetrics.height / fontMetrics.fullWidthCharWidth, 1) 0063 0064 property int verySmallHorizontalPadding: Math.round(horizontalPaddingRatio * units.verySmallSpacing) 0065 0066 property int smallHorizontalPadding: Math.round(horizontalPaddingRatio * Kirigami.Units.smallSpacing) 0067 0068 property int mediumHorizontalPadding: Math.round(horizontalPaddingRatio * Kirigami.Units.mediumSpacing) 0069 0070 property int largeHorizontalPadding: Math.round(horizontalPaddingRatio * Kirigami.Units.largeSpacing) 0071 0072 function symbolSize(size) { 0073 size -= size % 6 0074 size -= size/3 0075 return size 0076 } 0077 0078 /** 0079 * Units.verySmallSpacing is the amount of spacing that should be used around smaller UI elements, 0080 * for example as spacing in Columns. Internally, this size depends on the size of 0081 * the default font as rendered on the screen, so it takes user-configured font size and DPI 0082 * into account. 0083 */ 0084 property int verySmallSpacing: Kirigami.Units.smallSpacing * 0.5 0085 0086 /** 0087 * Units.veryLargeSpacing is the amount of spacing that should be used inside very big UI elements 0088 */ 0089 property int veryLargeSpacing: Kirigami.Units.largeSpacing * 1.5 0090 0091 /** 0092 * metrics used by the default font 0093 */ 0094 property var fontMetrics: FontMetrics { 0095 property real fullWidthCharWidth: fontMetrics.tightBoundingRect('_').width 0096 } 0097 }