File: DisplayLanguage.qml

package info (click to toggle)
lomiri-system-settings 1.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 22,484 kB
  • sloc: cpp: 15,892; python: 5,994; xml: 362; javascript: 80; makefile: 46; sh: 5
file content (115 lines) | stat: -rw-r--r-- 3,627 bytes parent folder | download | duplicates (3)
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
/*
 * This file is part of system-settings
 *
 * Copyright (C) 2013 Canonical Ltd.
 *
 * Contact: William Hua <william.hua@canonical.com>
 *
 * This program is free software: you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 3, as published
 * by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranties of
 * MERCHANTABILITY, SATISFACTORY QUALITY, 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 2.12
import Lomiri.Components 1.3
import Lomiri.Components.Popups 1.3
import Lomiri.Components.ListItems 1.3 as ListItem
import Lomiri.SystemSettings.LanguagePlugin 1.0

PopupBase {
    id: root
    objectName: "displayLanguageDialog"

    property string initialLanguage
    property string initialCancel

    signal languageChanged (int newLanguage, int oldLanguage)
    
    Rectangle {
    anchors.fill: root
    color: theme.palette.normal.background
    }
    
    width: parent.width
    height: parent.height
    
    Component.onCompleted: {
        initialLanguage = i18n.language
        initialCancel = i18n.tr("Cancel")
    }
    
    PageHeader {
        id: head
        title: i18n.tr("Display language")
        leadingActionBar.actions: [
            Action {
                iconName: "back"
                text: i18n.tr("Back")
                  onTriggered: {
                      i18n.language = initialLanguage
                      PopupUtils.close(root)
                  }
            }
        ]

        trailingActionBar { actions: [
                    Action {
                        id: setAction
                        text: i18n.tr("Confirm")
                        enabled: languageList.currentIndex != plugin.currentLanguage
                        iconName: "tick"
                        onTriggered: {
                            var oldLang = plugin.currentLanguage;
                            var newLang = languageList.currentIndex;
                            languageChanged(newLang, oldLang);
                            plugin.currentLanguage = newLang;
                            PopupUtils.close(root)
                        }
                    }]               
                }
    }

  

    ListView {
        id: languageList
        objectName: "languagesList"
        clip: true

        anchors.top: head.bottom
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.bottom: parent.bottom

        contentHeight: contentItem.childrenRect.height
        boundsBehavior: contentHeight > root.height ? Flickable.DragAndOvershootBounds : Flickable.StopAtBounds
        /* Set the direction to workaround https://bugreports.qt-project.org/browse/QTBUG-31905
           otherwise the UI might end up in a situation where scrolling doesn't work */
        flickableDirection: Flickable.VerticalFlick

        currentIndex: plugin.currentLanguage

        model: plugin.languageNames
        delegate: ListItem.Standard {
            objectName: "languageName" + index
            text: modelData
            selected: index == languageList.currentIndex

            onClicked: {
                languageList.currentIndex = index
            }
        }

        onCurrentIndexChanged: {
            i18n.language = plugin.languageCodes[currentIndex]
        }
    }
}