summaryrefslogtreecommitdiff
path: root/src/controls/Styles/Base/MenuBarStyle.qml
blob: c49dbb1d59ec9b8d88e2aa6d5cd830cb9475fd40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
**   * Redistributions of source code must retain the above copyright
**     notice, this list of conditions and the following disclaimer.
**   * Redistributions in binary form must reproduce the above copyright
**     notice, this list of conditions and the following disclaimer in
**     the documentation and/or other materials provided with the
**     distribution.
**   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
**     of its contributors may be used to endorse or promote products derived
**     from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/

import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Controls.Private 1.0

/*!
    \qmltype MenuBarStyle
    \inqmlmodule QtQuick.Controls.Styles
    \since 5.3
    \ingroup controlsstyling
    \brief Provides custom styling for MenuBar

    \note Styling menu bars may not be supported on platforms using native menu bars
    through their QPA plugin.
*/

Style {
    id: root

    /*! Returns a formatted string to render mnemonics for a given menu item.

        The mnemonic character is prefixed by an ampersand in the original string.

        Passing \c true for \c underline will underline the mnemonic character (e.g.,
        \c formatMnemonic("&File", true) will return \c "<u>F</u>ile"). Passing \c false
        for \c underline will return the plain text form (e.g., \c formatMnemonic("&File", false)
        will return \c "File").

        \sa Label
    */
    function formatMnemonic(text, underline) {
        return underline ? StyleHelpers.stylizeMnemonics(text) : StyleHelpers.removeMnemonics(text)
    }

    /*! The background for the full menu bar.

        The background will be extended to the full containing window width.
        Its height will always fit all of the menu bar items. The final size
        will include the paddings.
    */
    property Component background: Rectangle {
        color: "#dcdcdc"
        implicitHeight: 20
    }

    /*! The menu bar item.

        \target styleData properties
        This item has to be configured using the \b styleData object which is in scope,
        and contains the following read-only properties:
        \table
            \row \li \b {styleData.index} : int \li The index of the menu item in its menu.
            \row \li \b {styleData.selected} : bool \li \c true if the menu item is selected.
            \row \li \b {styleData.open} : bool \li \c true when the pull down menu is open.
            \row \li \b {styleData.text} : string \li The menu bar item's text.
            \row \li \b {styleData.underlineMnemonic} : bool \li When \c true, the style should underline the menu item's label mnemonic.
        \endtable

    */
    property Component itemDelegate: Rectangle {
        implicitWidth: text.width + 12
        implicitHeight: text.height + 4
        color: styleData.open ? "#49d" : "transparent"

        Text {
            id: text
            font: root.font
            text: formatMnemonic(styleData.text, styleData.underlineMnemonic)
            anchors.centerIn: parent
            renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering
            color: styleData.open ? "white" : SystemPaletteSingleton.windowText(control.enabled)
        }
    }

    /*! The style component for the menubar's own menus and their submenus.

        \sa {QtQuick.Controls.Styles::}{MenuStyle}
    */
    property Component menuStyle: MenuStyle {
        font: root.font
    }

    /*!
        \since QtQuick.Controls.Styles 1.3
        The font of the control.
    */
    property font font

    /*! \internal */
    property bool __isNative: true
}