diff options
Diffstat (limited to 'src/virtualkeyboard/doc/snippets/qtvirtualkeyboard-custom-language-popup.qml')
-rw-r--r-- | src/virtualkeyboard/doc/snippets/qtvirtualkeyboard-custom-language-popup.qml | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/src/virtualkeyboard/doc/snippets/qtvirtualkeyboard-custom-language-popup.qml b/src/virtualkeyboard/doc/snippets/qtvirtualkeyboard-custom-language-popup.qml new file mode 100644 index 00000000..261ad9be --- /dev/null +++ b/src/virtualkeyboard/doc/snippets/qtvirtualkeyboard-custom-language-popup.qml @@ -0,0 +1,128 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// ![popup] +Dialog { + id: languageDialog + title: "Select Input Language" + modality: Qt.ApplicationModal + + function show(localeList, currentIndex) { + languageListModel.clear() + for (var i = 0; i < localeList.length; i++) { + languageListModel.append({localeName: localeList[i], displayName: Qt.locale(localeList[i]).nativeLanguageName}) + } + languageListView.currentIndex = currentIndex + languageListView.positionViewAtIndex(currentIndex, ListView.Center) + languageDialog.visible = true + } + + contentItem: ListView { + id: languageListView + model: ListModel { + id: languageListModel + function selectItem(index) { + VirtualKeyboardSettings.locale = languageListModel.get(index).localeName + languageDialog.visible = false + } + } + delegate: Item { + id: languageListItem + width: languageNameTextMetrics.width * 17 + height: languageNameTextMetrics.height + languageListLabel.anchors.topMargin + languageListLabel.anchors.bottomMargin + Text { + id: languageListLabel + anchors.left: parent.left + anchors.top: parent.top + anchors.leftMargin: languageNameTextMetrics.height / 2 + anchors.rightMargin: anchors.leftMargin + anchors.topMargin: languageNameTextMetrics.height / 3 + anchors.bottomMargin: anchors.topMargin + text: languageNameFormatter.elidedText + color: "#5CAA15" + font { + weight: Font.Normal + pixelSize: 28 + } + } + TextMetrics { + id: languageNameTextMetrics + font { + weight: Font.Normal + pixelSize: 28 + } + text: "X" + } + TextMetrics { + id: languageNameFormatter + font { + weight: Font.Normal + pixelSize: 28 + } + elide: Text.ElideRight + elideWidth: languageListItem.width - languageListLabel.anchors.leftMargin - languageListLabel.anchors.rightMargin + text: displayName + } + MouseArea { + anchors.fill: parent + hoverEnabled: true + onClicked: { + if (index === -1) + return + parent.ListView.view.currentIndex = index + parent.ListView.view.model.selectItem(index) + } + } + states: State { + name: "current" + when: languageListItem.ListView.isCurrentItem + PropertyChanges { + target: languageListLabel + color: "black" + } + } + } + } +} +// ![popup] + +// ![declaring] +LanguageDialog { + id: languageDialog + width: 400 + height: 400 +} +// ![declaring] + +// ![using] +InputPanel { + id: inputPanel + externalLanguageSwitchEnabled: true + onExternalLanguageSwitch: languageDialog.show(localeList, currentIndex) + // ... +} +// ![using] |