X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=mardrone%2Fimports%2Fcom%2Fnokia%2Fandroid.1.1%2FMenuItem.qml;fp=mardrone%2Fimports%2Fcom%2Fnokia%2Fandroid.1.1%2FMenuItem.qml;h=d93018c58ea78fd700246a329c0e56a83a2054fa;hb=423f5226eddc5c327ef47559c03b0e2775add19e;hp=0000000000000000000000000000000000000000;hpb=c6326414c8585a359a4278f028042dfb4c0a749e;p=mardrone diff --git a/mardrone/imports/com/nokia/android.1.1/MenuItem.qml b/mardrone/imports/com/nokia/android.1.1/MenuItem.qml new file mode 100644 index 0000000..d93018c --- /dev/null +++ b/mardrone/imports/com/nokia/android.1.1/MenuItem.qml @@ -0,0 +1,208 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Components project. +** +** $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 Nokia Corporation 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 1.1 +import "." 1.1 + +Item { + id: root + + property alias text: textArea.text + + // Symbian specific API + property bool platformInverted: false + property bool platformSubItemIndicator: false + property real platformLeftMargin: platformStyle.paddingLarge + + signal clicked + + width: parent.width; height: privateStyle.menuItemHeight + + QtObject { + id: internal + + function bg_postfix() { + if (activeFocus && android.listInteractionMode == Android.KeyNavigation) + return "highlighted" + else if (mouseArea.pressed && mouseArea.containsMouse && !mouseArea.canceled) + return "pressed" + else + return "popup_normal" + } + + function textColor() { + if (!enabled) + return root.platformInverted ? platformStyle.colorDisabledLightInverted + : platformStyle.colorDisabledLight + else if (activeFocus && android.listInteractionMode == Android.KeyNavigation) + return root.platformInverted ? platformStyle.colorHighlightedInverted + : platformStyle.colorHighlighted + else if (mouseArea.pressed && mouseArea.containsMouse) + return root.platformInverted ? platformStyle.colorPressedInverted + : platformStyle.colorPressed + else + return root.platformInverted ? platformStyle.colorNormalLightInverted + : platformStyle.colorNormalLight + } + } + + BorderImage { + source: privateStyle.imagePath("qtg_fr_list_" + internal.bg_postfix(), root.platformInverted) + border { left: 20; top: 20; right: 20; bottom: 20 } + anchors.fill: parent + } + + Text { + id: textArea + anchors { + verticalCenter: parent.verticalCenter + left: parent.left + leftMargin: platformLeftMargin + right: iconLoader.status == Loader.Ready ? iconLoader.left : parent.right + rightMargin: iconLoader.status == Loader.Ready ? platformStyle.paddingMedium : privateStyle.scrollBarThickness + } + font { family: platformStyle.fontFamilyRegular; pixelSize: platformStyle.fontSizeMedium } + color: internal.textColor() + horizontalAlignment: Text.AlignLeft + elide: Text.ElideRight + } + + Loader { + id: iconLoader + sourceComponent: root.platformSubItemIndicator ? subItemIcon : undefined + anchors { + right: parent.right + rightMargin: privateStyle.scrollBarThickness + verticalCenter: parent.verticalCenter + } + } + + Component { + id: subItemIcon + + Image { + source: privateStyle.imagePath("qtg_graf_drill_down_indicator", platformInverted) + sourceSize.width: platformStyle.graphicSizeSmall + sourceSize.height: platformStyle.graphicSizeSmall + mirror: LayoutMirroring.enabled + } + } + + + MouseArea { + id: mouseArea + + property bool canceled: false + + anchors.fill: parent + + onPressed: { + canceled = false + android.listInteractionMode = Android.TouchInteraction + privateStyle.play(Android.BasicItem) + } + onClicked: { + if (!canceled) + root.clicked() + } + onReleased: { + if (!canceled) + privateStyle.play(Android.PopupClose) + } + onExited: canceled = true + } + + Keys.onPressed: { + event.accepted = true + switch (event.key) { + case Qt.Key_Select: + case Qt.Key_Enter: + case Qt.Key_Return: { + if (!event.isAutoRepeat) { + if (android.listInteractionMode != Android.KeyNavigation) + android.listInteractionMode = Android.KeyNavigation + else + root.clicked() + } + break + } + + case Qt.Key_Up: { + if (android.listInteractionMode != Android.KeyNavigation) { + android.listInteractionMode = Android.KeyNavigation + if (ListView.view != null) + ListView.view.positionViewAtIndex(index, ListView.Beginning) + } else { + if (ListView.view != null) + ListView.view.decrementCurrentIndex() + else + event.accepted = false + } + break + } + + case Qt.Key_Down: { + if (android.listInteractionMode != Android.KeyNavigation) { + android.listInteractionMode = Android.KeyNavigation + if (ListView.view != null) + ListView.view.positionViewAtIndex(index, ListView.Beginning) + } else { + if (ListView.view != null) + ListView.view.incrementCurrentIndex() + else + event.accepted = false + } + break + } + case Qt.Key_Left: + case Qt.Key_Right: { + // If this MenuItem belongs to Menu invoke highlight + // in other cases consume event but do nothing + if (ListView.view == null && android.listInteractionMode != Android.KeyNavigation) + android.listInteractionMode = Android.KeyNavigation + break + } + default: { + event.accepted = false + break + } + } + } +}