Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • beta/202506161038
  • stable/20250613.0
  • nightly/20250613.0
  • beta/202506101658
  • stable/20250610.0
  • nightly/20250610.0
  • beta/202506091027
  • beta/202506061543
  • nightly/20250605.0
  • beta/202506051039
  • beta/202506051002
  • beta/202506041611
  • beta/202506041335
  • beta/202505231812
  • stable/20250523.0
  • nightly/20250523.0
  • nightly/20250515.0
  • nightly/20250510.0
  • nightly/20250509.1
  • nightly/20250509.0
21 results

SettingSpinBox.qml

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    SettingSpinBox.qml 4.84 KiB
    /*
     * Copyright (C) 2020-2022 Savoir-faire Linux Inc.
     * Author: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
     * Author: Fadi Shehadeh <fadi.shehadeh@savoirfairelinux.com>
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation; either version 3 of the License, or
     * (at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     */
    
    import QtQuick
    import QtQuick.Layouts
    import QtQuick.Controls
    
    import net.jami.Models 1.1
    import net.jami.Adapters 1.1
    import net.jami.Constants 1.1
    
    import "../../commoncomponents"
    
    RowLayout {
        id: root
    
        property alias title: title.text
        property alias enabled: spinbox.enabled
        property alias bottomValue: spinbox.from
        property alias topValue: spinbox.to
        property alias valueField: spinbox.value
        property alias tooltipText: toolTip.text
        property alias step: spinbox.stepSize
    
        property string borderColor: JamiTheme.greyBorderColor
        property int itemWidth
    
        signal newValue
    
        Text {
            id: title
    
            Layout.fillWidth: true
            Layout.rightMargin: JamiTheme.preferredMarginSize
            Layout.preferredHeight: JamiTheme.preferredFieldHeight
    
            color: JamiTheme.textColor
            elide: Text.ElideRight
            font.pointSize: JamiTheme.settingsFontSize
            font.kerning: true
            verticalAlignment: Text.AlignVCenter
        }
    
        SpinBox {
            id: spinbox
    
            wheelEnabled: true
            hoverEnabled: true
    
            Layout.preferredWidth: root.itemWidth
            Layout.preferredHeight: JamiTheme.preferredFieldHeight
            Layout.alignment: Qt.AlignCenter
            font.pointSize: JamiTheme.buttonFontSize
            font.kerning: true
    
            onValueChanged: newValue()
    
            Keys.onPressed: function (keyEvent) {
    
                if (keyEvent.key === Qt.Key_Enter ||
                        keyEvent.key === Qt.Key_Return) {
                    textInput.focus = false
                    spinbox.value = textInput.text
                    keyEvent.accepted = true
                }
            }
    
            contentItem: TextInput {
                id: textInput
    
                text: spinbox.textFromValue(spinbox.value, spinbox.locale)
                color : JamiTheme.textColor
                horizontalAlignment: Qt.AlignHCenter
                verticalAlignment: Qt.AlignVCenter
                inputMethodHints : Qt.ImhDigitsOnly
                validator: spinbox.validator
            }
    
            background: Rectangle {
                border.color: JamiTheme.spinboxBorderColor
                color: JamiTheme.transparentColor
                radius: JamiTheme.primaryRadius
            }
    
            MaterialToolTip {
                id: toolTip
                parent: spinbox
                visible: spinbox.hovered && (root.tooltipText.length > 0)
                delay: Qt.styleHints.mousePressAndHoldInterval
            }
    
            height: down.implicitIndicatorHeight
    
            up.indicator: Rectangle {
    
                width: parent.width / 8
                radius : 4
                anchors {
                    top : parent.top
                    bottom : parent.bottom
                    right: parent.right
                    margins: 1
                }
    
                color: spinbox.up.pressed || spinbox.up.hovered ? JamiTheme.spinboxBorderColor : JamiTheme.transparentColor
    
                ResponsiveImage {
    
                    containerHeight: 6
                    containerWidth: 10
                    width: 20
                    height: 20
                    color: JamiTheme.primaryForegroundColor
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    source: JamiResources.chevron_right_black_24dp_svg
                }
            }
    
            down.indicator: Rectangle {
    
                width: parent.width / 8
                radius : 4
                anchors {
                    top : parent.top
                    bottom : parent.bottom
                    left: parent.left
                    margins: 1
                }
    
                color: spinbox.down.pressed || spinbox.down.hovered ? JamiTheme.spinboxBorderColor : JamiTheme.transparentColor
    
                ResponsiveImage {
    
                    containerHeight: 6
                    containerWidth: 10
                    width: 20
                    height: 20
                    color: JamiTheme.primaryForegroundColor
                    anchors.verticalCenter: parent.verticalCenter
                    anchors.horizontalCenter: parent.horizontalCenter
                    source: JamiResources.chevron_left_black_24dp_svg
                }
            }
        }
    }