@@ -34,7 +34,7 @@ LocalComponents.Page {
35 Component.onCompleted: {
35 Component.onCompleted: {
36 if (!modemManager.available) { // don't wait for the modem if it's not there
36 if (!modemManager.available) { // don't wait for the modem if it's not there
@@ -50,63 +50,17 @@ LocalComponents.Page {
51 var detectedLangs = []
51 var detectedLangs = []
52 if (simManager0.present && simManager0.preferredLanguages.length > 0) {
52 if (simManager0.present && simManager0.preferredLanguages.length > 0) {
53− detectedLangs = simManager0.preferredLanguages
53+ detectedLangs = simManager0.preferredLanguages;
54− print("SIM 0 detected langs:", detectedLangs)
54+ print("SIM 0 detected langs:", detectedLangs);
55 } else if (simManager1.present && simManager1.preferredLanguages.length > 0) {
55 } else if (simManager1.present && simManager1.preferredLanguages.length > 0) {
56− detectedLangs = simManager1.preferredLanguages
56+ detectedLangs = simManager1.preferredLanguages;
57− print("SIM 1 detected langs:", detectedLangs)
57+ print("SIM 1 detected langs:", detectedLangs);
59− print("No lang detected, falling back to default:", defaultLanguage)
59+ print("No lang detected, falling back to default:", defaultLanguage);
60− detectedLangs = [defaultLanguage] // fallback to default lang
60+ detectedLangs = [defaultLanguage]; // fallback to default lang
63− populateModel(false, detectedLangs)
63+ //populateModel(false, detectedLangs)
66− function populateModel(onlyDetected, detectedLangs)
70− var selectedIndex = -1;
71− var langs = LocalePlugin.languages();
72− Object.keys(langs).map(function(code) { // prepare the object
73− //console.log("Got language:" + code);
76− if (!!detectedLangs && detectedLangs.indexOf(code) !== -1) {
77− return { "code": code, "language": langs[code] || code }
80− return { "code": code, "language": langs[code] || code }
84− .sort(function(a, b) { // sort by language name
85− return a.language.toLocaleLowerCase().localeCompare(b.language.toLocaleLowerCase()); // sort languages case insensitively
87− .forEach(function(lang) { // build the model
88− if (lang.code === "C") {
92− if (!onlyDetected && detectedLangs.length > 0 && lang.code === detectedLangs[0]) { // preselect the first of detected languages
93− selectedIndex = index;
94− selectLanguage(lang.code, selectedIndex)
99− if (selectedIndex !== -1) {
100− languagesListView.positionViewAtIndex(selectedIndex, ListView.Center)
104− function selectLanguage(code, index)
106− root.language = code
107− languagesListView.currentIndex = index
108− print("Selected language: " + root.language)
109− print("Current index: " + languagesListView.currentIndex)
@@ -114,11 +68,10 @@ LocalComponents.Page {
114 anchors.fill: content
68 anchors.fill: content
116 ListView {
70 ListView {
117− id: languagesListView;
71+ id: languagesListView
119− boundsBehavior: Flickable.StopAtBounds;
72+ boundsBehavior: Flickable.StopAtBounds
120− clip: true;
73+ clip: true
121− currentIndex: -1
74+ currentIndex: plugin.currentLanguage
122 snapMode: ListView.SnapToItem
75 snapMode: ListView.SnapToItem
124 anchors {
77 anchors {
@@ -128,9 +81,7 @@ LocalComponents.Page {
129 height: column.height - column.spacing
82 height: column.height - column.spacing
131− model: ListModel {
84+ model: plugin.languageNames
135 delegate: ListItem {
86 delegate: ListItem {
136 id: itemDelegate;
87 id: itemDelegate;
@@ -139,7 +90,7 @@ LocalComponents.Page {
141 id: langLabel
92 id: langLabel
142− text: language;
93+ text: modelData
144 anchors {
95 anchors {
145 left: parent.left;
96 left: parent.left;
@@ -164,7 +115,8 @@ LocalComponents.Page {
166 onClicked: {
117 onClicked: {
167− selectLanguage(code, index)
118+ languagesListView.currentIndex = index;
119+ i18n.language = plugin.languageCodes[index];
@@ -174,12 +126,16 @@ LocalComponents.Page {
174 id: forwardButton
126 id: forwardButton
175 LocalComponents.StackButton {
127 LocalComponents.StackButton {
176 text: i18n.tr("Next")
128 text: i18n.tr("Next")
177− enabled: root.language !== ""
129+ enabled: languagesListView.currentIndex
178 onClicked: {
130 onClicked: {
179− if (root.language !== plugin.languageCodes[plugin.currentLanguage]) {
131+ if (plugin.currentLanguage !== languagesListView.currentIndex) {
180− i18n.language = i18n.language // re-notify of change after above call (for qlocale change)
132+ plugin.currentLanguage = languagesListView.currentIndex;
133+ print("Updating session locale:", plugin.languageCodes[plugin.currentLanguage])
134+ System.updateSessionLocale(plugin.languageCodes[plugin.currentLanguage]);
136+ i18n.language = plugin.languageCodes[plugin.currentLanguage]; // re-notify of change after above call (for qlocale change)
137+ root.countryCode = plugin.languageCodes[plugin.currentLanguage].split('_')[1].split('.')[0] // extract the country code, save it for the timezone page
182− pageStack.next()
138+ pageStack.next();