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

HoverableButtonTextItem.qml

Blame
    • Aline Gondim Santos's avatar
      c5687508
      settings: code clean up · c5687508
      Aline Gondim Santos authored and Aline Gondim Santos's avatar Aline Gondim Santos committed
      Correct Layout and Anchors emplacement
      Erase inutile code
      Fix binding loop warnings
      Replace magic numbers by JamiTheme values
      Remove multiline comments from qml files
      
      Change-Id: Icdde094750ccc39fa3b3c9fb9368f8609eb8981d
      Gitlab: #5
      c5687508
      History
      settings: code clean up
      Aline Gondim Santos authored and Aline Gondim Santos's avatar Aline Gondim Santos committed
      Correct Layout and Anchors emplacement
      Erase inutile code
      Fix binding loop warnings
      Replace magic numbers by JamiTheme values
      Remove multiline comments from qml files
      
      Change-Id: Icdde094750ccc39fa3b3c9fb9368f8609eb8981d
      Gitlab: #5
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    HoverableButtonTextItem.qml 3.24 KiB
    /*
     * Copyright (C) 2020 by Savoir-faire Linux
     * Author: Mingrui Zhang <mingrui.zhang@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 <https://www.gnu.org/licenses/>.
     */
    import QtQuick 2.14
    import QtQuick.Controls 2.14
    import net.jami.Models 1.0
    
    // HoverableButton containes functionalites:
    // 1. Color changes on different button state
    // 2. Radius control (rounded)
    // 3. Text content or image content
    // 4. Can use OnClicked slot to implement some click logic
    
    Button {
        id: root
    
        property int fontPointSize: 9
        property int buttonImageHeight: hoverableButtonBackground.height
        property int buttonImageWidth: hoverableButtonBackground.width
    
        property string backgroundColor: JamiTheme.releaseColor
        property string onPressColor: JamiTheme.pressColor
        property string onReleaseColor: backgroundColor
        property string onEnterColor: JamiTheme.hoverColor
        property string onExitColor: backgroundColor
        property string onDisabledBackgroundColor: backgroundColor
        property string textColor: "black"
    
        property alias radius: hoverableButtonBackground.radius
        property alias source: hoverableButtonImage.source
    
        property string toolTipText: ""
    
        font.pointSize: fontPointSize
        font.kerning:  true
    
        hoverEnabled: true
    
        ToolTip.delay: Qt.styleHints.mousePressAndHoldInterval
        ToolTip.visible: hovered && (toolTipText.length > 0)
        ToolTip.text: toolTipText
    
        contentItem: Text {
                text: root.text
                font: root.font
                opacity: enabled ? 1.0 : 0.3
                color: textColor
                horizontalAlignment: Text.AlignHCenter
                verticalAlignment: Text.AlignVCenter
                elide: Text.ElideRight
            }
    
        background: Rectangle {
            id: hoverableButtonBackground
    
            color: root.enabled ? backgroundColor:onDisabledBackgroundColor
    
            Image {
                id: hoverableButtonImage
    
                anchors.centerIn: hoverableButtonBackground
    
                height: buttonImageHeight
                width: buttonImageWidth
    
                fillMode: Image.PreserveAspectFit
                mipmap: true
                asynchronous: true
            }
    
            MouseArea {
                enabled: root.enabled
                anchors.fill: parent
    
                hoverEnabled: true
    
                onPressed: {
                    hoverableButtonBackground.color = onPressColor
                }
                onReleased: {
                    hoverableButtonBackground.color = onReleaseColor
                    root.clicked()
                }
                onEntered: {
                    hoverableButtonBackground.color = onEnterColor
                }
                onExited: {
                    hoverableButtonBackground.color = onExitColor
                }
            }
        }
    }