Merge lp:~attente/ubuntu-system-settings/1392699 into lp:ubuntu-system-settings

Proposed by William Hua
Status: Needs review
Proposed branch: lp:~attente/ubuntu-system-settings/1392699
Merge into: lp:ubuntu-system-settings
Diff against target: 269 lines (+102/-16)
4 files modified
plugins/language/DisplayLanguage.qml (+14/-6)
plugins/language/PageComponent.qml (+40/-4)
plugins/language/language-plugin.cpp (+37/-6)
plugins/language/language-plugin.h (+11/-0)
To merge this branch: bzr merge lp:~attente/ubuntu-system-settings/1392699
Reviewer Review Type Date Requested Status
Ken VanDine Needs Information
PS Jenkins bot continuous-integration Pending
Review via email: mp+296271@code.launchpad.net

Commit message

Make language and formats locale independent settings

Description of the change

Make language and formats locale independent settings

To post a comment you must log in.
Revision history for this message
Ken VanDine (ken-vandine) wrote :

Looks good and seems to work fine.

Please update the test plan to match https://wiki.ubuntu.com/Process/Merges/TestPlan/ubuntu-system-settings#Language_.26_Text

review: Approve
Revision history for this message
Ken VanDine (ken-vandine) wrote :

We need Pat and design to agree to what we're implementing here and from the conversation on IRC I have the feeling not everyone is agreement to land this.

review: Needs Information

Unmerged revisions

1662. By William Hua

Only change the language if the mode is 0

1661. By William Hua

Make language and formats locale independent settings

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'plugins/language/DisplayLanguage.qml'
--- plugins/language/DisplayLanguage.qml 2015-08-10 13:31:45 +0000
+++ plugins/language/DisplayLanguage.qml 2016-06-14 14:37:20 +0000
@@ -28,12 +28,13 @@
28 id: root28 id: root
29 objectName: "displayLanguageDialog"29 objectName: "displayLanguageDialog"
3030
31 property int displayMode: 0
31 property string initialLanguage32 property string initialLanguage
3233
33 signal languageChanged (int newLanguage, int oldLanguage)34 signal languageChanged (int newLanguage, int oldLanguage)
3435
35 modal: true36 modal: true
36 title: i18n.tr("Display language")37 title: displayMode == 0 ? i18n.tr("Display language") : i18n.tr("Date & number formats")
3738
38 contentsWidth: parent.width39 contentsWidth: parent.width
39 contentsHeight: parent.height40 contentsHeight: parent.height
@@ -58,7 +59,7 @@
58 otherwise the UI might end up in a situation where scrolling doesn't work */59 otherwise the UI might end up in a situation where scrolling doesn't work */
59 flickableDirection: Flickable.VerticalFlick60 flickableDirection: Flickable.VerticalFlick
6061
61 currentIndex: plugin.currentLanguage62 currentIndex: displayMode == 0 ? plugin.currentLanguage : plugin.currentFormat
6263
63 model: plugin.languageNames64 model: plugin.languageNames
64 delegate: ListItem.Standard {65 delegate: ListItem.Standard {
@@ -72,7 +73,8 @@
72 }73 }
7374
74 onCurrentIndexChanged: {75 onCurrentIndexChanged: {
75 i18n.language = plugin.languageCodes[currentIndex]76 if (displayMode == 0)
77 i18n.language = plugin.languageCodes[currentIndex]
76 }78 }
77 }79 }
7880
@@ -114,7 +116,7 @@
114 id: confirmButton116 id: confirmButton
115 objectName: "confirmChangeLanguage"117 objectName: "confirmChangeLanguage"
116 text: i18n.tr("Confirm")118 text: i18n.tr("Confirm")
117 enabled: languageList.currentIndex != plugin.currentLanguage119 enabled: languageList.currentIndex != (displayMode == 0 ? plugin.currentLanguage : plugin.currentFormat)
118120
119 anchors.left: parent.horizontalCenter121 anchors.left: parent.horizontalCenter
120 anchors.right: parent.right122 anchors.right: parent.right
@@ -125,10 +127,16 @@
125 anchors.bottomMargin: units.gu(1)127 anchors.bottomMargin: units.gu(1)
126128
127 onClicked: {129 onClicked: {
128 var oldLang = plugin.currentLanguage;130 var oldLang = displayMode == 0 ? plugin.currentLanguage : plugin.currentFormat;
129 var newLang = languageList.currentIndex;131 var newLang = languageList.currentIndex;
132
130 languageChanged(newLang, oldLang);133 languageChanged(newLang, oldLang);
131 plugin.currentLanguage = newLang;134
135 if (displayMode == 0)
136 plugin.currentLanguage = newLang;
137 else
138 plugin.currentFormat = newLang;
139
132 PopupUtils.close(root);140 PopupUtils.close(root);
133 }141 }
134 }142 }
135143
=== modified file 'plugins/language/PageComponent.qml'
--- plugins/language/PageComponent.qml 2016-03-02 13:15:34 +0000
+++ plugins/language/PageComponent.qml 2016-06-14 14:37:20 +0000
@@ -53,8 +53,24 @@
53 id: displayLanguage53 id: displayLanguage
5454
55 DisplayLanguage {55 DisplayLanguage {
56 onLanguageChanged: {56 displayMode: 0
57 PopupUtils.open(rebootNecessaryNotification, root, {57
58 onLanguageChanged: {
59 PopupUtils.open(rebootNecessaryNotificationLanguage, root, {
60 revertTo: oldLanguage
61 })
62 }
63 }
64 }
65
66 Component {
67 id: displayFormat
68
69 DisplayLanguage {
70 displayMode: 1
71
72 onLanguageChanged: {
73 PopupUtils.open(rebootNecessaryNotificationFormat, root, {
58 revertTo: oldLanguage74 revertTo: oldLanguage
59 })75 })
60 }76 }
@@ -68,7 +84,7 @@
68 }84 }
6985
70 Component {86 Component {
71 id: rebootNecessaryNotification87 id: rebootNecessaryNotificationLanguage
7288
73 RebootNecessary {89 RebootNecessary {
7490
@@ -82,6 +98,20 @@
82 }98 }
83 }99 }
84100
101 Component {
102 id: rebootNecessaryNotificationFormat
103
104 RebootNecessary {
105
106 onReboot: {
107 plugin.reboot();
108 }
109 onRevert: {
110 plugin.currentFormat = to;
111 }
112 }
113 }
114
85 GSettings {115 GSettings {
86 id: settings116 id: settings
87117
@@ -106,7 +136,6 @@
106 iconSource: "image://theme/language-chooser"136 iconSource: "image://theme/language-chooser"
107 text: i18n.tr("Display languageā€¦")137 text: i18n.tr("Display languageā€¦")
108 objectName: "displayLanguage"138 objectName: "displayLanguage"
109 showDivider: false
110 component: Label {139 component: Label {
111 property int currentLanguage: plugin.currentLanguage140 property int currentLanguage: plugin.currentLanguage
112 objectName: "currentLanguage"141 objectName: "currentLanguage"
@@ -118,6 +147,13 @@
118 onClicked: PopupUtils.open(displayLanguage)147 onClicked: PopupUtils.open(displayLanguage)
119 }148 }
120149
150 ListItem.SingleValue {
151 text: i18n.tr("Date & number formats")
152 progression: true
153 value: plugin.languageNames[plugin.currentFormat]
154 onClicked: PopupUtils.open(displayFormat)
155 }
156
121 ListItem.Divider {}157 ListItem.Divider {}
122158
123 ListItem.SingleValue {159 ListItem.SingleValue {
124160
=== modified file 'plugins/language/language-plugin.cpp'
--- plugins/language/language-plugin.cpp 2015-12-22 13:49:39 +0000
+++ plugins/language/language-plugin.cpp 2016-06-14 14:37:20 +0000
@@ -86,6 +86,8 @@
86 QObject(parent),86 QObject(parent),
87 m_currentLanguage(-1),87 m_currentLanguage(-1),
88 m_nextCurrentLanguage(-1),88 m_nextCurrentLanguage(-1),
89 m_currentFormat(-1),
90 m_nextCurrentFormat(-1),
89 m_manager(act_user_manager_get_default()),91 m_manager(act_user_manager_get_default()),
90 m_user(nullptr)92 m_user(nullptr)
91{93{
@@ -159,6 +161,22 @@
159 }161 }
160}162}
161163
164int
165LanguagePlugin::currentFormat() const
166{
167 return m_currentFormat;
168}
169
170void
171LanguagePlugin::setCurrentFormat(int index)
172{
173 if (index >= 0 && index < m_languageCodes.length()) {
174 m_nextCurrentFormat = index;
175
176 updateCurrentLanguage();
177 }
178}
179
162SubsetModel *180SubsetModel *
163LanguagePlugin::spellCheckingModel()181LanguagePlugin::spellCheckingModel()
164{182{
@@ -246,6 +264,7 @@
246LanguagePlugin::updateCurrentLanguage()264LanguagePlugin::updateCurrentLanguage()
247{265{
248 int previousLanguage(m_currentLanguage);266 int previousLanguage(m_currentLanguage);
267 int previousFormat(m_currentFormat);
249268
250 if (m_user != nullptr && act_user_is_loaded(m_user)) {269 if (m_user != nullptr && act_user_is_loaded(m_user)) {
251 if (m_nextCurrentLanguage >= 0) {270 if (m_nextCurrentLanguage >= 0) {
@@ -255,23 +274,35 @@
255 QString formatsLocale(m_languageCodes[m_currentLanguage]);274 QString formatsLocale(m_languageCodes[m_currentLanguage]);
256 QString language(formatsLocale.left(formatsLocale.indexOf('.')));275 QString language(formatsLocale.left(formatsLocale.indexOf('.')));
257 act_user_set_language(m_user, qPrintable(language));276 act_user_set_language(m_user, qPrintable(language));
277 } else if (m_nextCurrentFormat >= 0) {
278 m_currentFormat = m_nextCurrentFormat;
279 m_nextCurrentFormat = -1;
280
281 QString formatsLocale(m_languageCodes[m_currentFormat]);
258 act_user_set_formats_locale(m_user, qPrintable(formatsLocale));282 act_user_set_formats_locale(m_user, qPrintable(formatsLocale));
259 } else {283 } else {
284 QString language(act_user_get_language(m_user));
260 QString formatsLocale(act_user_get_formats_locale(m_user));285 QString formatsLocale(act_user_get_formats_locale(m_user));
261 m_currentLanguage = indexForLocale(formatsLocale);286
262287 m_currentLanguage = indexForLocale(language);
263 if (m_currentLanguage < 0) {288 m_currentFormat = indexForLocale(formatsLocale);
264 QString language(act_user_get_language(m_user));289
265 m_currentLanguage = indexForLocale(language);290 if (m_currentLanguage < 0)
266 }291 m_currentLanguage = m_currentFormat;
267 }292 }
268 }293 }
269294
270 if (m_currentLanguage < 0)295 if (m_currentLanguage < 0)
271 m_currentLanguage = indexForLocale(QLocale::system().name());296 m_currentLanguage = indexForLocale(QLocale::system().name());
272297
298 if (m_currentFormat < 0)
299 m_currentFormat = indexForLocale(QLocale::system().name());
300
273 if (m_currentLanguage != previousLanguage)301 if (m_currentLanguage != previousLanguage)
274 Q_EMIT currentLanguageChanged();302 Q_EMIT currentLanguageChanged();
303
304 if (m_currentFormat != previousFormat)
305 Q_EMIT currentFormatChanged();
275}306}
276307
277308
278309
=== modified file 'plugins/language/language-plugin.h'
--- plugins/language/language-plugin.h 2015-12-22 13:49:39 +0000
+++ plugins/language/language-plugin.h 2016-06-14 14:37:20 +0000
@@ -56,6 +56,11 @@
56 WRITE setCurrentLanguage56 WRITE setCurrentLanguage
57 NOTIFY currentLanguageChanged)57 NOTIFY currentLanguageChanged)
5858
59 Q_PROPERTY(int currentFormat
60 READ currentFormat
61 WRITE setCurrentFormat
62 NOTIFY currentFormatChanged)
63
59 Q_PROPERTY(SubsetModel *spellCheckingModel64 Q_PROPERTY(SubsetModel *spellCheckingModel
60 READ spellCheckingModel65 READ spellCheckingModel
61 CONSTANT)66 CONSTANT)
@@ -73,6 +78,10 @@
73 void setCurrentLanguage(int index);78 void setCurrentLanguage(int index);
74 Q_SIGNAL void currentLanguageChanged() const;79 Q_SIGNAL void currentLanguageChanged() const;
7580
81 int currentFormat() const;
82 void setCurrentFormat(int index);
83 Q_SIGNAL void currentFormatChanged() const;
84
76 SubsetModel *spellCheckingModel();85 SubsetModel *spellCheckingModel();
77 Q_SLOT void spellCheckingModelChanged();86 Q_SLOT void spellCheckingModelChanged();
7887
@@ -104,6 +113,8 @@
104113
105 int m_currentLanguage;114 int m_currentLanguage;
106 int m_nextCurrentLanguage;115 int m_nextCurrentLanguage;
116 int m_currentFormat;
117 int m_nextCurrentFormat;
107 ActUserManager *m_manager;118 ActUserManager *m_manager;
108 ActUser *m_user;119 ActUser *m_user;
109120

Subscribers

People subscribed via source and target branches