Merge lp:~thomas-moenicke/ubuntu-keyboard/ubuntu-keyboard-language-menu-2 into lp:ubuntu-keyboard

Proposed by Thomas Moenicke
Status: Merged
Approved by: Günter Schwann
Approved revision: 97
Merged at revision: 88
Proposed branch: lp:~thomas-moenicke/ubuntu-keyboard/ubuntu-keyboard-language-menu-2
Merge into: lp:ubuntu-keyboard
Diff against target: 1881 lines (+1343/-67)
32 files modified
qml/Keyboard.qml (+16/-1)
qml/KeyboardContainer.qml (+19/-8)
qml/keys/LanguageKey.qml (+34/-0)
qml/keys/LanguageMenu.qml (+39/-18)
qml/keys/UrlKey.qml (+1/-2)
qml/keys/key_constants.js (+4/-0)
qml/languages/Keyboard_symbols.qml (+1/-1)
qml/languages/de/Keyboard_de.qml (+3/-2)
qml/languages/de/Keyboard_de_email.qml (+94/-0)
qml/languages/de/Keyboard_de_url.qml (+93/-0)
qml/languages/de/Keyboard_de_url_search.qml (+94/-0)
qml/languages/en/Keyboard_en.qml (+3/-2)
qml/languages/en/Keyboard_en_email.qml (+2/-2)
qml/languages/en/Keyboard_en_url.qml (+2/-2)
qml/languages/en/Keyboard_en_url_search.qml (+2/-2)
qml/languages/es/Keyboard_es.qml (+3/-2)
qml/languages/es/Keyboard_es_email.qml (+92/-0)
qml/languages/es/Keyboard_es_url.qml (+91/-0)
qml/languages/es/Keyboard_es_url_search.qml (+92/-0)
qml/languages/fr/Keyboard_fr.qml (+3/-2)
qml/languages/fr/Keyboard_fr_email.qml (+92/-0)
qml/languages/fr/Keyboard_fr_url.qml (+91/-0)
qml/languages/fr/Keyboard_fr_url_search.qml (+92/-0)
qml/languages/pt/Keyboard_pt.qml (+3/-2)
qml/languages/pt/Keyboard_pt_email.qml (+92/-0)
qml/languages/pt/Keyboard_pt_url.qml (+91/-0)
qml/languages/pt/Keyboard_pt_url_search.qml (+92/-0)
qml/languages/zh_cn/Keyboard_zh_cn_pinyin.qml (+3/-2)
qml/qml.pro (+45/-10)
src/plugin/inputmethod.cpp (+26/-7)
src/plugin/inputmethod.h (+10/-0)
src/plugin/inputmethod_p.h (+18/-2)
To merge this branch: bzr merge lp:~thomas-moenicke/ubuntu-keyboard/ubuntu-keyboard-language-menu-2
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve
Günter Schwann (community) Approve
Review via email: mp+190657@code.launchpad.net

Commit message

adding key to change language

Description of the change

adding key to change language

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
79. By Thomas Moenicke

enabled languages are being read from settings

80. By Thomas Moenicke

language key only visible when languages are enabled

81. By Thomas Moenicke

language menu only when more than 1 language enabled (to have smth to choose from)

Revision history for this message
Thomas Moenicke (thomas-moenicke) wrote :

to set the full list:
gsettings set com.canonical.keyboard.maliit enabled-languages "['en_us', 'es', 'fr', 'pt', 'de', 'zh_cn_pinyin']"

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
82. By Thomas Moenicke

rebase

[ Christopher Lee ]
* Update to the ubuntu-keyboard emulator so that they work after the
  recent changes to the loader.
[ Guenter Schwann ]
* Increase the size of the swipe area.
[ Ubuntu daily release ]
* Automatic snapshot from revision 78
[ Daniel d'Andrada ]
* Various improvements to ubuntu-keyboard-info socket server Make it
  more robust. (LP: #1237870)
[ Thomas Moenicke ]
* more languages.
* new action key icons.
[ Guenter Schwann ]
* Fix for auto caps to work more than once Essentially it's only 25 +
  autoCapsActivated = false;.
[ Ubuntu daily release ]
* Automatic snapshot from revision 75

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
83. By Thomas Moenicke

rebase

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
84. By Thomas Moenicke

moved each language into its own folder

85. By Thomas Moenicke

adding url_search layouts for all languages

86. By Thomas Moenicke

adding email + url for de

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
87. By Thomas Moenicke

fixed urlkey in de-email layout

88. By Thomas Moenicke

adding email + url layout for es

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
89. By Thomas Moenicke

adding fr email, url layouts

90. By Thomas Moenicke

adding email, url layouts portuguese

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
91. By Thomas Moenicke

fixed abstraction: C++ side does not know about QML, which instead sets a binding into a C++ property
fixed loading default en_us keyboard

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
92. By Thomas Moenicke

dont overwrite our binding

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
93. By Thomas Moenicke

dividing activeLayout and activeLanguage
fixed typo that broke build on this branch @ last commit

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Günter Schwann (schwann) wrote :

I get this warning when running this branch:
WARNING: QObject::connect: No such signal QQuickItem_QML_29::layoutIdChanged(QString) in inputmethod.cpp:475
WARNING: QObject::connect: (sender name: 'ubuntuKeyboard')
WARNING: QObject::connect: No such slot MaliitKeyboard::InputMethod::__onEnabledLanguagesChanged() in inputmethod_p.h:345

review: Needs Fixing
94. By Thomas Moenicke

fixed typo

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
95. By Thomas Moenicke

reading locale from env variable

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
96. By Thomas Moenicke

fixed reading locale
reading locale at show() to detect changes in system

97. By Thomas Moenicke

moved code back to setActiveSubView(), as it overwrites special layouts like browser

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Günter Schwann (schwann) wrote :

looks good

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'qml/Keyboard.qml'
2--- qml/Keyboard.qml 2013-10-21 13:21:28 +0000
3+++ qml/Keyboard.qml 2013-10-24 13:11:26 +0000
4@@ -52,7 +52,6 @@
5 property variant event_handler: maliit_event_handler
6
7 OrientationHelper {
8-
9 automaticOrientation: false
10 transitionEnabled: false
11
12@@ -69,10 +68,14 @@
13
14 property int keypadHeight: 0 // set by InputMethod
15
16+ property string activeLanguage: input_method.activeLanguage
17+
18 property string layoutId: "en_us"
19 Component.onCompleted: keypad.loadLayout(layoutId);
20 onLayoutIdChanged: keypad.loadLayout(layoutId);
21
22+ property var enabledLanguages: input_method.enabledLanguages
23+
24 visible: layout.visible
25
26 // Expose details for use with Autopilot.
27@@ -84,6 +87,8 @@
28 property bool shown: false;
29 property bool wordribbon_visible: false;
30
31+ property bool languageMenuShown: false
32+
33 MouseArea {
34 id: swipeArea
35
36@@ -173,6 +178,15 @@
37 anchors.bottomMargin: units.gu( UI.bottom_margin )
38 width: parent.width
39 }
40+
41+ LanguageMenu {
42+ id: languageMenu
43+ anchors.centerIn: parent
44+ width: 400;
45+ height: keypad.height;
46+ enabled: canvas.languageMenuShown
47+ opacity: canvas.languageMenuShown ? 1.0 : 0.0
48+ }
49 } // keyboardComp
50 }
51 }
52@@ -199,6 +213,7 @@
53 name: "HIDDEN"
54 PropertyChanges { target: canvas; y: height; }
55 onCompleted: {
56+ canvas.languageMenuShown = false
57 keyboardSurface.y = 0;
58 keypad.closeExtendedKeys();
59 keypad.activeKeypadState = "NORMAL"
60
61=== modified file 'qml/KeyboardContainer.qml'
62--- qml/KeyboardContainer.qml 2013-10-16 13:16:23 +0000
63+++ qml/KeyboardContainer.qml 2013-10-24 13:11:26 +0000
64@@ -33,28 +33,39 @@
65
66 state: "CHARACTERS"
67
68+ property variant supportedLocales: ["en", "de", "es", "fr", "zh", "pt"]
69+
70+ function localeIsSupported(locale)
71+ {
72+ return (supportedLocales.indexOf( locale ) > -1)
73+ }
74+
75 function loadLayout(layoutId)
76 {
77+ var locale = canvas.activeLanguage.slice(0,2).toLowerCase();
78+
79 if (layoutId === "number")
80 characterKeypadSource = "languages/Keyboard_numbers.qml";
81 if (layoutId === "phonenumber")
82 characterKeypadSource = "languages/Keyboard_telephone.qml";
83 if (layoutId === "email")
84- characterKeypadSource = "languages/Keyboard_en_email.qml";
85+ if (localeIsSupported(locale))
86+ characterKeypadSource = "languages/"+locale+"/Keyboard_"+locale+"_email.qml";
87 if (layoutId === "url")
88- characterKeypadSource = "languages/Keyboard_en_url_search.qml";
89+ if (localeIsSupported(locale))
90+ characterKeypadSource = "languages/"+locale+"/Keyboard_"+locale+"_url_search.qml";
91 if (layoutId === "en_us")
92- characterKeypadSource = "languages/Keyboard_en_us.qml";
93+ characterKeypadSource = "languages/en/Keyboard_en.qml";
94 if (layoutId === "es")
95- characterKeypadSource = "languages/Keyboard_es.qml";
96+ characterKeypadSource = "languages/es/Keyboard_es.qml";
97 if (layoutId === "pt")
98- characterKeypadSource = "languages/Keyboard_pt.qml";
99+ characterKeypadSource = "languages/pt/Keyboard_pt.qml";
100 if (layoutId === "de")
101- characterKeypadSource = "languages/Keyboard_de.qml";
102+ characterKeypadSource = "languages/de/Keyboard_de.qml";
103 if (layoutId === "fr")
104- characterKeypadSource = "languages/Keyboard_fr.qml";
105+ characterKeypadSource = "languages/fr/Keyboard_fr.qml";
106 if (layoutId === "zh_cn_pinyin")
107- characterKeypadSource = "languages/Keyboard_zh_cn_pinyin.qml";
108+ characterKeypadSource = "languages/zh/Keyboard_zh_pinyin.qml";
109 }
110
111 onCharacterKeypadSourceChanged: {
112
113=== added file 'qml/keys/LanguageKey.qml'
114--- qml/keys/LanguageKey.qml 1970-01-01 00:00:00 +0000
115+++ qml/keys/LanguageKey.qml 2013-10-24 13:11:26 +0000
116@@ -0,0 +1,34 @@
117+/*
118+ * Copyright 2013 Canonical Ltd.
119+ *
120+ * This program is free software; you can redistribute it and/or modify
121+ * it under the terms of the GNU Lesser General Public License as published by
122+ * the Free Software Foundation; version 3.
123+ *
124+ * This program is distributed in the hope that it will be useful,
125+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
126+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
127+ * GNU Lesser General Public License for more details.
128+ *
129+ * You should have received a copy of the GNU Lesser General Public License
130+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
131+ */
132+
133+import QtQuick 2.0
134+
135+ActionKey {
136+ iconNormal: "language-chooser";
137+ iconShifted: "language-chooser";
138+ iconCapsLock: "language-chooser";
139+
140+ padding: 0
141+
142+ visible: canvas.enabledLanguages.length > 1 ? true : false
143+ width: canvas.enabledLanguages.length > 1 ? panel.keyWidth : 0
144+
145+ MouseArea {
146+ anchors.fill: parent
147+ preventStealing: true
148+ onPressAndHold: canvas.languageMenuShown = true
149+ }
150+}
151
152=== renamed file 'qml/LanguageMenu.qml' => 'qml/keys/LanguageMenu.qml'
153--- qml/LanguageMenu.qml 2013-07-19 12:05:07 +0000
154+++ qml/keys/LanguageMenu.qml 2013-10-24 13:11:26 +0000
155@@ -18,36 +18,57 @@
156 import Ubuntu.Components 0.1
157 import Ubuntu.Components.ListItems 0.1 as ListItem
158
159+import "key_constants.js" as UI
160+
161 Item {
162
163- Rectangle {
164+ MouseArea {
165+ width: fullScreenItem.width
166+ height: fullScreenItem.height
167+
168+ anchors.centerIn: parent
169+
170+ onClicked: canvas.languageMenuShown = false
171+ }
172+
173+ BorderImage {
174+ id: name
175 anchors.fill: parent
176- color: "lightGray"
177- }
178-
179- // tempor., will come from settings
180- ListModel {
181- id: availableLanguagesModel
182- ListElement { language: "English - US"; languageId: "en_us"; }
183- ListElement { language: "English - UK"; languageId: "en_gb"; }
184- ListElement { language: "Chinese - Pinyin"; languageId: "zh_cn_pinyin"; }
185- ListElement { language: "Spanish"; languageId: "es"; }
186- ListElement { language: "German"; languageId: "de"; }
187+ source: "../images/popover@27.png"
188+
189+ property int __corner: units.gu(UI.languageMenuCorner)
190+
191+ border.left: __corner; border.top: __corner;
192+ border.right: __corner; border.bottom: __corner;
193 }
194
195 ListView {
196 id: menuList
197- anchors.fill: parent
198- interactive: false
199+ anchors.centerIn: parent
200+ width: parent.width - units.gu(UI.languageMenuListViewPadding)
201+ height: parent.height - units.gu(UI.languageMenuListViewPadding)
202+ interactive: true
203+ clip: true
204
205- model: availableLanguagesModel
206+ model: canvas.enabledLanguages
207
208 delegate: ListItem.Standard {
209- text: language
210+ text: languageIdToName(modelData)
211 onClicked: {
212- event_handler.onLanguageChangeRequested(languageId);
213- canvas.languageMenuVisible = false;
214+ canvas.layoutId = modelData;
215+ canvas.languageMenuShown = false;
216 }
217 }
218 }
219+
220+ function languageIdToName(languageId)
221+ {
222+ if (languageId == "en_us") return "English - US";
223+ if (languageId == "es") return "Spanish";
224+ if (languageId == "pt") return "Portuguese";
225+ if (languageId == "fr") return "French";
226+ if (languageId == "de") return "German";
227+ if (languageId == "zh_cn_pinyin") return "Chinese - Pinyin";
228+ }
229+
230 }
231
232=== modified file 'qml/keys/UrlKey.qml'
233--- qml/keys/UrlKey.qml 2013-10-16 17:04:05 +0000
234+++ qml/keys/UrlKey.qml 2013-10-24 13:11:26 +0000
235@@ -21,8 +21,7 @@
236 width: panel.keyWidth + units.gu( UI.emailLayoutUrlKeyPadding )
237
238 label: ".com";
239- shifted: ".com";
240- extended: [".co.uk", ".net", ".org", ".edu", ".gov", ".ac.uk"];
241+ shifted: label
242 extendedShifted: extended
243 fontSize: units.gu(UI.smallFontSize);
244 }
245
246=== modified file 'qml/keys/key_constants.js'
247--- qml/keys/key_constants.js 2013-10-09 12:57:30 +0000
248+++ qml/keys/key_constants.js 2013-10-24 13:11:26 +0000
249@@ -53,3 +53,7 @@
250
251 var urlLayoutLeftSpacerSize = 5; // gu
252 var emailLayoutUrlKeyPadding = 4; // gu
253+
254+/* language menu */
255+var languageMenuListViewPadding = 2.22; // gu
256+var languageMenuCorner = 2.5; // gu
257
258=== modified file 'qml/languages/Keyboard_symbols.qml'
259--- qml/languages/Keyboard_symbols.qml 2013-10-08 10:02:10 +0000
260+++ qml/languages/Keyboard_symbols.qml 2013-10-24 13:11:26 +0000
261@@ -71,7 +71,7 @@
262 OneTwoKey { label: "1/2"; shifted: "2/2"; fontSize: units.gu(UI.fontSize); }
263 CharKey { label: "@"; shifted: "«"; }
264 CharKey { label: "~"; shifted: "»"; }
265- CharKey { label: "/"; shifted: "¨"; }
266+ CharKey { label: "/"; shifted: "\""; }
267 CharKey { label: "\\"; shifted: "“"; }
268 CharKey { label: "'"; shifted: "”"; }
269 CharKey { label: ";"; shifted: "„"; }
270
271=== added directory 'qml/languages/de'
272=== renamed file 'qml/languages/Keyboard_de.qml' => 'qml/languages/de/Keyboard_de.qml'
273--- qml/languages/Keyboard_de.qml 2013-10-10 09:27:28 +0000
274+++ qml/languages/de/Keyboard_de.qml 2013-10-24 13:11:26 +0000
275@@ -15,7 +15,7 @@
276 */
277
278 import QtQuick 2.0
279-import "../keys"
280+import "../../keys"
281
282 KeyPad {
283 anchors.fill: parent
284@@ -83,7 +83,8 @@
285 height: panel.keyHeight;
286
287 SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
288- CharKey { id: commaKey; label: ","; shifted: "/"; anchors.left: symShiftKey.right; }
289+ LanguageKey { id: languageMenuButton; anchors.left: symShiftKey.right; }
290+ CharKey { id: commaKey; label: ","; shifted: "/"; anchors.left: languageMenuButton.right; }
291 SpaceKey { id: spaceKey; anchors.left: commaKey.right; anchors.right: dotKey.left; noMagnifier: true }
292 CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: umlaut.left; }
293 CharKey { id: umlaut; label: "ö"; shifted: "Ö"; anchors.right: enterKey.left; }
294
295=== added file 'qml/languages/de/Keyboard_de_email.qml'
296--- qml/languages/de/Keyboard_de_email.qml 1970-01-01 00:00:00 +0000
297+++ qml/languages/de/Keyboard_de_email.qml 2013-10-24 13:11:26 +0000
298@@ -0,0 +1,94 @@
299+/*
300+ * Copyright 2013 Canonical Ltd.
301+ *
302+ * This program is free software; you can redistribute it and/or modify
303+ * it under the terms of the GNU Lesser General Public License as published by
304+ * the Free Software Foundation; version 3.
305+ *
306+ * This program is distributed in the hope that it will be useful,
307+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
308+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
309+ * GNU Lesser General Public License for more details.
310+ *
311+ * You should have received a copy of the GNU Lesser General Public License
312+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
313+ */
314+
315+import QtQuick 2.0
316+import "../../keys"
317+
318+KeyPad {
319+ anchors.fill: parent
320+
321+ content: c1
322+ symbols: "languages/Keyboard_symbols.qml"
323+
324+ Column {
325+ id: c1
326+ anchors.fill: parent
327+ spacing: 0
328+
329+ Row {
330+ anchors.horizontalCenter: parent.horizontalCenter;
331+ spacing: 0
332+
333+ CharKey { label: "q"; shifted: "Q"; }
334+ CharKey { label: "w"; shifted: "W"; }
335+ CharKey { label: "e"; shifted: "E"; extended: ["è", "é", "ë", "ê", "€"]; extendedShifted: ["È","É", "Ë", "Ê", "€"] }
336+ CharKey { label: "r"; shifted: "R"; }
337+ CharKey { label: "t"; shifted: "T"; extended: ["þ"]; extendedShifted: ["Þ"] }
338+ CharKey { label: "z"; shifted: "Z"; }
339+ CharKey { label: "u"; shifted: "U"; extended: ["ü","ù","ú","û"]; extendedShifted: ["Ü","Ù","Ú","Û"] }
340+ CharKey { label: "i"; shifted: "I"; extended: ["ì","í","î","ï","ı"]; extendedShifted: ["Ì","Í","Î","Ï","İ"] }
341+ CharKey { label: "o"; shifted: "O"; extended: ["ö","ò","ó","ô","õ","ø"]; extendedShifted: ["Ö","Ò","Ó","Ô","Õ","Ø"] }
342+ CharKey { label: "p"; shifted: "P"; }
343+ }
344+
345+ Row {
346+ anchors.horizontalCenter: parent.horizontalCenter;
347+ spacing: 0
348+
349+ CharKey { label: "a"; shifted: "A"; extended: ["ä","à","á","ã","â","å","æ"]; extendedShifted: ["Ä","À","Â","Á","Ã","Å","Æ"] }
350+ CharKey { label: "s"; shifted: "S"; extended: ["ß","$"]; extendedShifted: ["ş","$"] }
351+ CharKey { label: "d"; shifted: "D"; }
352+ CharKey { label: "f"; shifted: "F"; }
353+ CharKey { label: "g"; shifted: "G"; extended: ["ğ"]; extendedShifted: ["Ğ"]; }
354+ CharKey { label: "h"; shifted: "H"; }
355+ CharKey { label: "j"; shifted: "J"; }
356+ CharKey { label: "k"; shifted: "K"; }
357+ CharKey { label: "l"; shifted: "L"; }
358+ CharKey { label: "ü"; shifted: "Ü"; }
359+ }
360+
361+ Row {
362+ anchors.horizontalCenter: parent.horizontalCenter;
363+ spacing: 0
364+
365+ ShiftKey { padding: 0 }
366+ CharKey { label: "y"; shifted: "Y"; extended: ["¥"]; extendedShifted: ["¥"] }
367+ CharKey { label: "x"; shifted: "X"; }
368+ CharKey { label: "c"; shifted: "C"; extended: ["ç"]; extendedShifted: ["Ç"] }
369+ CharKey { label: "v"; shifted: "V"; }
370+ CharKey { label: "b"; shifted: "B"; }
371+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
372+ CharKey { label: "m"; shifted: "M"; }
373+ CharKey { label: "ä"; shifted: "Ä"; }
374+ BackspaceKey { padding: 0 }
375+ }
376+
377+ Item {
378+ anchors.left: parent.left
379+ anchors.right: parent.right
380+
381+ height: panel.keyHeight;
382+
383+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
384+ CharKey { id: atKey; label: "@"; shifted: "@"; anchors.left: symShiftKey.right; }
385+ SpaceKey { id: spaceKey; anchors.left: atKey.right; anchors.right: urlKey.left; noMagnifier: true }
386+ UrlKey { id: urlKey; label: ".de"; extended: [".at", ".ch", ".de"]; anchors.right: dotKey.left; }
387+ CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: umlaut.left; }
388+ CharKey { id: umlaut; label: "ö"; shifted: "Ö"; anchors.right: enterKey.left; }
389+ ReturnKey { id: enterKey; anchors.right: parent.right }
390+ }
391+ } // column
392+}
393
394=== added file 'qml/languages/de/Keyboard_de_url.qml'
395--- qml/languages/de/Keyboard_de_url.qml 1970-01-01 00:00:00 +0000
396+++ qml/languages/de/Keyboard_de_url.qml 2013-10-24 13:11:26 +0000
397@@ -0,0 +1,93 @@
398+/*
399+ * Copyright 2013 Canonical Ltd.
400+ *
401+ * This program is free software; you can redistribute it and/or modify
402+ * it under the terms of the GNU Lesser General Public License as published by
403+ * the Free Software Foundation; version 3.
404+ *
405+ * This program is distributed in the hope that it will be useful,
406+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
407+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
408+ * GNU Lesser General Public License for more details.
409+ *
410+ * You should have received a copy of the GNU Lesser General Public License
411+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
412+ */
413+
414+import QtQuick 2.0
415+import "../../keys"
416+
417+KeyPad {
418+ anchors.fill: parent
419+
420+ content: c1
421+ symbols: "languages/Keyboard_symbols.qml"
422+
423+ Column {
424+ id: c1
425+ anchors.fill: parent
426+ spacing: 0
427+
428+ Row {
429+ anchors.horizontalCenter: parent.horizontalCenter;
430+ spacing: 0
431+
432+ CharKey { label: "q"; shifted: "Q"; }
433+ CharKey { label: "w"; shifted: "W"; }
434+ CharKey { label: "e"; shifted: "E"; extended: ["è", "é", "ë", "ê", "€"]; extendedShifted: ["È","É", "Ë", "Ê", "€"] }
435+ CharKey { label: "r"; shifted: "R"; }
436+ CharKey { label: "t"; shifted: "T"; extended: ["þ"]; extendedShifted: ["Þ"] }
437+ CharKey { label: "z"; shifted: "Z"; }
438+ CharKey { label: "u"; shifted: "U"; extended: ["ü","ù","ú","û"]; extendedShifted: ["Ü","Ù","Ú","Û"] }
439+ CharKey { label: "i"; shifted: "I"; extended: ["ì","í","î","ï","ı"]; extendedShifted: ["Ì","Í","Î","Ï","İ"] }
440+ CharKey { label: "o"; shifted: "O"; extended: ["ö","ò","ó","ô","õ","ø"]; extendedShifted: ["Ö","Ò","Ó","Ô","Õ","Ø"] }
441+ CharKey { label: "p"; shifted: "P"; }
442+ }
443+
444+ Row {
445+ anchors.horizontalCenter: parent.horizontalCenter;
446+ spacing: 0
447+
448+ CharKey { label: "a"; shifted: "A"; extended: ["ä","à","á","ã","â","å","æ"]; extendedShifted: ["Ä","À","Â","Á","Ã","Å","Æ"] }
449+ CharKey { label: "s"; shifted: "S"; extended: ["ß","$"]; extendedShifted: ["ş","$"] }
450+ CharKey { label: "d"; shifted: "D"; }
451+ CharKey { label: "f"; shifted: "F"; }
452+ CharKey { label: "g"; shifted: "G"; extended: ["ğ"]; extendedShifted: ["Ğ"]; }
453+ CharKey { label: "h"; shifted: "H"; }
454+ CharKey { label: "j"; shifted: "J"; }
455+ CharKey { label: "k"; shifted: "K"; }
456+ CharKey { label: "l"; shifted: "L"; }
457+ CharKey { label: "ü"; shifted: "Ü"; }
458+ }
459+
460+ Row {
461+ anchors.horizontalCenter: parent.horizontalCenter;
462+ spacing: 0
463+
464+ ShiftKey { padding: 0 }
465+ CharKey { label: "y"; shifted: "Y"; extended: ["¥"]; extendedShifted: ["¥"] }
466+ CharKey { label: "x"; shifted: "X"; }
467+ CharKey { label: "c"; shifted: "C"; extended: ["ç"]; extendedShifted: ["Ç"] }
468+ CharKey { label: "v"; shifted: "V"; }
469+ CharKey { label: "b"; shifted: "B"; }
470+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
471+ CharKey { label: "m"; shifted: "M"; }
472+ CharKey { label: "ä"; shifted: "Ä"; }
473+ BackspaceKey { padding: 0 }
474+ }
475+
476+ Item {
477+ anchors.left: parent.left
478+ anchors.right: parent.right
479+
480+ height: panel.keyHeight;
481+
482+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
483+ CharKey { id: slashKey; label: "/"; shifted: "/"; anchors.left: symShiftKey.right; }
484+ UrlKey { id: urlKey; label: ".de"; extended: [".at", ".ch", ".de"]; anchors.right: dotKey.left; }
485+ CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: umlaut.left; }
486+ CharKey { id: umlaut; label: "ö"; shifted: "Ö"; anchors.right: enterKey.left; }
487+ ReturnKey { id: enterKey; anchors.right: parent.right }
488+ }
489+ } // column
490+}
491
492=== added file 'qml/languages/de/Keyboard_de_url_search.qml'
493--- qml/languages/de/Keyboard_de_url_search.qml 1970-01-01 00:00:00 +0000
494+++ qml/languages/de/Keyboard_de_url_search.qml 2013-10-24 13:11:26 +0000
495@@ -0,0 +1,94 @@
496+/*
497+ * Copyright 2013 Canonical Ltd.
498+ *
499+ * This program is free software; you can redistribute it and/or modify
500+ * it under the terms of the GNU Lesser General Public License as published by
501+ * the Free Software Foundation; version 3.
502+ *
503+ * This program is distributed in the hope that it will be useful,
504+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
505+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
506+ * GNU Lesser General Public License for more details.
507+ *
508+ * You should have received a copy of the GNU Lesser General Public License
509+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
510+ */
511+
512+import QtQuick 2.0
513+import "../../keys"
514+
515+KeyPad {
516+ anchors.fill: parent
517+
518+ content: c1
519+ symbols: "languages/Keyboard_symbols.qml"
520+
521+ Column {
522+ id: c1
523+ anchors.fill: parent
524+ spacing: 0
525+
526+ Row {
527+ anchors.horizontalCenter: parent.horizontalCenter;
528+ spacing: 0
529+
530+ CharKey { label: "q"; shifted: "Q"; }
531+ CharKey { label: "w"; shifted: "W"; }
532+ CharKey { label: "e"; shifted: "E"; extended: ["è", "é", "ë", "ê", "€"]; extendedShifted: ["È","É", "Ë", "Ê", "€"] }
533+ CharKey { label: "r"; shifted: "R"; }
534+ CharKey { label: "t"; shifted: "T"; extended: ["þ"]; extendedShifted: ["Þ"] }
535+ CharKey { label: "z"; shifted: "Z"; }
536+ CharKey { label: "u"; shifted: "U"; extended: ["ü","ù","ú","û"]; extendedShifted: ["Ü","Ù","Ú","Û"] }
537+ CharKey { label: "i"; shifted: "I"; extended: ["ì","í","î","ï","ı"]; extendedShifted: ["Ì","Í","Î","Ï","İ"] }
538+ CharKey { label: "o"; shifted: "O"; extended: ["ö","ò","ó","ô","õ","ø"]; extendedShifted: ["Ö","Ò","Ó","Ô","Õ","Ø"] }
539+ CharKey { label: "p"; shifted: "P"; }
540+ }
541+
542+ Row {
543+ anchors.horizontalCenter: parent.horizontalCenter;
544+ spacing: 0
545+
546+ CharKey { label: "a"; shifted: "A"; extended: ["ä","à","á","ã","â","å","æ"]; extendedShifted: ["Ä","À","Â","Á","Ã","Å","Æ"] }
547+ CharKey { label: "s"; shifted: "S"; extended: ["ß","$"]; extendedShifted: ["ş","$"] }
548+ CharKey { label: "d"; shifted: "D"; }
549+ CharKey { label: "f"; shifted: "F"; }
550+ CharKey { label: "g"; shifted: "G"; extended: ["ğ"]; extendedShifted: ["Ğ"]; }
551+ CharKey { label: "h"; shifted: "H"; }
552+ CharKey { label: "j"; shifted: "J"; }
553+ CharKey { label: "k"; shifted: "K"; }
554+ CharKey { label: "l"; shifted: "L"; }
555+ CharKey { label: "ü"; shifted: "Ü"; }
556+ }
557+
558+ Row {
559+ anchors.horizontalCenter: parent.horizontalCenter;
560+ spacing: 0
561+
562+ ShiftKey { padding: 0 }
563+ CharKey { label: "y"; shifted: "Y"; extended: ["¥"]; extendedShifted: ["¥"] }
564+ CharKey { label: "x"; shifted: "X"; }
565+ CharKey { label: "c"; shifted: "C"; extended: ["ç"]; extendedShifted: ["Ç"] }
566+ CharKey { label: "v"; shifted: "V"; }
567+ CharKey { label: "b"; shifted: "B"; }
568+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
569+ CharKey { label: "m"; shifted: "M"; }
570+ CharKey { label: "ä"; shifted: "Ä"; }
571+ BackspaceKey { padding: 0 }
572+ }
573+
574+ Item {
575+ anchors.left: parent.left
576+ anchors.right: parent.right
577+
578+ height: panel.keyHeight;
579+
580+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
581+ CharKey { id: slashKey; label: "/"; shifted: "/"; anchors.left: symShiftKey.right; }
582+ SpaceKey { id: spaceKey; anchors.left: slashKey.right; anchors.right: urlKey.left; noMagnifier: true }
583+ UrlKey { id: urlKey; label: ".de"; extended: [".at", ".ch", ".de"]; anchors.right: dotKey.left; }
584+ CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: umlaut.left; }
585+ CharKey { id: umlaut; label: "ö"; shifted: "Ö"; anchors.right: enterKey.left; }
586+ ReturnKey { id: enterKey; anchors.right: parent.right }
587+ }
588+ } // column
589+}
590
591=== added directory 'qml/languages/en'
592=== renamed file 'qml/languages/Keyboard_en_us.qml' => 'qml/languages/en/Keyboard_en.qml'
593--- qml/languages/Keyboard_en_us.qml 2013-10-09 15:45:52 +0000
594+++ qml/languages/en/Keyboard_en.qml 2013-10-24 13:11:26 +0000
595@@ -15,7 +15,7 @@
596 */
597
598 import QtQuick 2.0
599-import "../keys"
600+import "../../keys"
601
602 KeyPad {
603 anchors.fill: parent
604@@ -81,7 +81,8 @@
605 height: panel.keyHeight;
606
607 SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
608- CharKey { id: commaKey; label: ","; shifted: "/"; anchors.left: symShiftKey.right; }
609+ LanguageKey { id: languageMenuButton; anchors.left: symShiftKey.right; }
610+ CharKey { id: commaKey; label: ","; shifted: "/"; anchors.left: languageMenuButton.right; }
611 SpaceKey { id: spaceKey; anchors.left: commaKey.right; anchors.right: dotKey.left; noMagnifier: true }
612 CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
613 ReturnKey { id: enterKey; anchors.right: parent.right }
614
615=== renamed file 'qml/languages/Keyboard_en_email.qml' => 'qml/languages/en/Keyboard_en_email.qml'
616--- qml/languages/Keyboard_en_email.qml 2013-10-16 17:04:05 +0000
617+++ qml/languages/en/Keyboard_en_email.qml 2013-10-24 13:11:26 +0000
618@@ -15,7 +15,7 @@
619 */
620
621 import QtQuick 2.0
622-import "../keys"
623+import "../../keys"
624
625 KeyPad {
626 anchors.fill: parent
627@@ -83,7 +83,7 @@
628 SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
629 CharKey { id: atKey; label: "@"; shifted: "@"; anchors.left: symShiftKey.right; }
630 SpaceKey { id: spaceKey; anchors.left: atKey.right; anchors.right: urlKey.left; noMagnifier: true }
631- UrlKey { id: urlKey; anchors.right: dotKey.left; }
632+ UrlKey { id: urlKey; label: ".com"; extended: [".co.uk", ".net", ".org", ".edu", ".gov", ".ac.uk"]; anchors.right: dotKey.left; }
633 CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
634 ReturnKey { id: enterKey; anchors.right: parent.right }
635 }
636
637=== renamed file 'qml/languages/Keyboard_en_url.qml' => 'qml/languages/en/Keyboard_en_url.qml'
638--- qml/languages/Keyboard_en_url.qml 2013-10-09 09:12:38 +0000
639+++ qml/languages/en/Keyboard_en_url.qml 2013-10-24 13:11:26 +0000
640@@ -15,7 +15,7 @@
641 */
642
643 import QtQuick 2.0
644-import "../keys"
645+import "../../keys"
646
647 KeyPad {
648 anchors.fill: parent
649@@ -82,7 +82,7 @@
650
651 SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
652 CharKey { id: slashKey; label: "/"; shifted: "/"; anchors.left: symShiftKey.right; }
653- UrlKey { id: urlKey; anchors.right: dotKey.left; anchors.left: slashKey.right }
654+ UrlKey { id: urlKey; label: ".com"; extended: [".co.uk", ".net", ".org", ".edu", ".gov", ".ac.uk"]; anchors.right: dotKey.left; }
655 CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
656 ReturnKey { id: enterKey; anchors.right: parent.right }
657 }
658
659=== renamed file 'qml/languages/Keyboard_en_url_search.qml' => 'qml/languages/en/Keyboard_en_url_search.qml'
660--- qml/languages/Keyboard_en_url_search.qml 2013-10-09 08:59:16 +0000
661+++ qml/languages/en/Keyboard_en_url_search.qml 2013-10-24 13:11:26 +0000
662@@ -15,7 +15,7 @@
663 */
664
665 import QtQuick 2.0
666-import "../keys"
667+import "../../keys"
668
669 KeyPad {
670 anchors.fill: parent
671@@ -84,7 +84,7 @@
672 SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
673 CharKey { id: slashKey; label: "/"; shifted: "/"; anchors.left: symShiftKey.right; }
674 SpaceKey { id: spaceKey; anchors.left: slashKey.right; anchors.right: urlKey.left; noMagnifier: true }
675- UrlKey { id: urlKey; anchors.right: dotKey.left; }
676+ UrlKey { id: urlKey; label: ".com"; extended: [".co.uk", ".net", ".org", ".edu", ".gov", ".ac.uk"]; anchors.right: dotKey.left; }
677 CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
678 ReturnKey { id: enterKey; anchors.right: parent.right }
679 }
680
681=== added directory 'qml/languages/es'
682=== renamed file 'qml/languages/Keyboard_es.qml' => 'qml/languages/es/Keyboard_es.qml'
683--- qml/languages/Keyboard_es.qml 2013-10-10 09:27:28 +0000
684+++ qml/languages/es/Keyboard_es.qml 2013-10-24 13:11:26 +0000
685@@ -15,7 +15,7 @@
686 */
687
688 import QtQuick 2.0
689-import "../keys"
690+import "../../keys"
691
692 KeyPad {
693 anchors.fill: parent
694@@ -82,7 +82,8 @@
695 height: panel.keyHeight;
696
697 SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
698- CharKey { id: commaKey; label: ","; shifted: "/"; anchors.left: symShiftKey.right; }
699+ LanguageKey { id: languageMenuButton; anchors.left: symShiftKey.right; }
700+ CharKey { id: commaKey; label: ","; shifted: "/"; anchors.left: languageMenuButton.right; }
701 SpaceKey { id: spaceKey; anchors.left: commaKey.right; anchors.right: dotKey.left; noMagnifier: true }
702 CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
703 ReturnKey { id: enterKey; anchors.right: parent.right }
704
705=== added file 'qml/languages/es/Keyboard_es_email.qml'
706--- qml/languages/es/Keyboard_es_email.qml 1970-01-01 00:00:00 +0000
707+++ qml/languages/es/Keyboard_es_email.qml 2013-10-24 13:11:26 +0000
708@@ -0,0 +1,92 @@
709+/*
710+ * Copyright 2013 Canonical Ltd.
711+ *
712+ * This program is free software; you can redistribute it and/or modify
713+ * it under the terms of the GNU Lesser General Public License as published by
714+ * the Free Software Foundation; version 3.
715+ *
716+ * This program is distributed in the hope that it will be useful,
717+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
718+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
719+ * GNU Lesser General Public License for more details.
720+ *
721+ * You should have received a copy of the GNU Lesser General Public License
722+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
723+ */
724+
725+import QtQuick 2.0
726+import "../../keys"
727+
728+KeyPad {
729+ anchors.fill: parent
730+
731+ content: c1
732+ symbols: "languages/Keyboard_symbols.qml"
733+
734+ Column {
735+ id: c1
736+ anchors.fill: parent
737+ spacing: 0
738+
739+ Row {
740+ anchors.horizontalCenter: parent.horizontalCenter;
741+ spacing: 0
742+
743+ CharKey { label: "q"; shifted: "Q"; }
744+ CharKey { label: "w"; shifted: "W"; }
745+ CharKey { label: "e"; shifted: "E"; extended: ["è", "é", "ê", "ë", "€"]; extendedShifted: ["È","É", "Ê", "Ë", "€"] }
746+ CharKey { label: "r"; shifted: "R"; }
747+ CharKey { label: "t"; shifted: "T"; extended: ["þ"]; extendedShifted: ["Þ"] }
748+ CharKey { label: "y"; shifted: "Y"; extended: ["ý", "¥", "ÿ"]; extendedShifted: ["Ý", "¥", "Ÿ"] }
749+ CharKey { label: "u"; shifted: "U"; extended: ["û","ù","ú","ü"]; extendedShifted: ["Û","Ù","Ú","Ü"] }
750+ CharKey { label: "i"; shifted: "I"; extended: ["î","ï","ì","í"]; extendedShifted: ["Î","Ï","Ì","Í"] }
751+ CharKey { label: "o"; shifted: "O"; extended: ["ö","ô","ò","ó", "º","õ"]; extendedShifted: ["Ö","Ô","Ò","Ó", "º","Õ"] }
752+ CharKey { label: "p"; shifted: "P"; }
753+ }
754+
755+ Row {
756+ anchors.horizontalCenter: parent.horizontalCenter;
757+ spacing: 0
758+
759+ CharKey { label: "a"; shifted: "A"; extended: ["ä","à","â","á","ã","å","ª","æ"]; extendedShifted: ["Ä","À","Â","Á","Ã","Å","ª","Æ"] }
760+ CharKey { label: "s"; shifted: "S"; extended: ["ß","$"]; extendedShifted: ["$"] }
761+ CharKey { label: "d"; shifted: "D"; extended: ["ð"]; extendedShifted: ["Ð"] }
762+ CharKey { label: "f"; shifted: "F"; }
763+ CharKey { label: "g"; shifted: "G"; }
764+ CharKey { label: "h"; shifted: "H"; }
765+ CharKey { label: "j"; shifted: "J"; }
766+ CharKey { label: "k"; shifted: "K"; }
767+ CharKey { label: "l"; shifted: "L"; }
768+ CharKey { label: "ñ"; shifted: "Ñ"; }
769+ }
770+
771+ Row {
772+ anchors.horizontalCenter: parent.horizontalCenter;
773+ spacing: 0
774+
775+ ShiftKey {}
776+ CharKey { label: "z"; shifted: "Z"; }
777+ CharKey { label: "x"; shifted: "X"; }
778+ CharKey { label: "c"; shifted: "C"; extended: ["ç"]; extendedShifted: ["Ç"] }
779+ CharKey { label: "v"; shifted: "V"; }
780+ CharKey { label: "b"; shifted: "B"; }
781+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
782+ CharKey { label: "m"; shifted: "M"; }
783+ BackspaceKey {}
784+ }
785+
786+ Item {
787+ anchors.left: parent.left
788+ anchors.right: parent.right
789+
790+ height: panel.keyHeight;
791+
792+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
793+ CharKey { id: atKey; label: "@"; shifted: "@"; anchors.left: symShiftKey.right; }
794+ SpaceKey { id: spaceKey; anchors.left: atKey.right; anchors.right: urlKey.left; noMagnifier: true }
795+ UrlKey { id: urlKey; label: ".es"; extended: [".mx", ".co", ".ar", ".com", ".pe", ".ve", ".cl"]; anchors.right: dotKey.left; }
796+ CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
797+ ReturnKey { id: enterKey; anchors.right: parent.right }
798+ }
799+ } // column
800+}
801
802=== added file 'qml/languages/es/Keyboard_es_url.qml'
803--- qml/languages/es/Keyboard_es_url.qml 1970-01-01 00:00:00 +0000
804+++ qml/languages/es/Keyboard_es_url.qml 2013-10-24 13:11:26 +0000
805@@ -0,0 +1,91 @@
806+/*
807+ * Copyright 2013 Canonical Ltd.
808+ *
809+ * This program is free software; you can redistribute it and/or modify
810+ * it under the terms of the GNU Lesser General Public License as published by
811+ * the Free Software Foundation; version 3.
812+ *
813+ * This program is distributed in the hope that it will be useful,
814+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
815+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
816+ * GNU Lesser General Public License for more details.
817+ *
818+ * You should have received a copy of the GNU Lesser General Public License
819+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
820+ */
821+
822+import QtQuick 2.0
823+import "../../keys"
824+
825+KeyPad {
826+ anchors.fill: parent
827+
828+ content: c1
829+ symbols: "languages/Keyboard_symbols.qml"
830+
831+ Column {
832+ id: c1
833+ anchors.fill: parent
834+ spacing: 0
835+
836+ Row {
837+ anchors.horizontalCenter: parent.horizontalCenter;
838+ spacing: 0
839+
840+ CharKey { label: "q"; shifted: "Q"; }
841+ CharKey { label: "w"; shifted: "W"; }
842+ CharKey { label: "e"; shifted: "E"; extended: ["è", "é", "ê", "ë", "€"]; extendedShifted: ["È","É", "Ê", "Ë", "€"] }
843+ CharKey { label: "r"; shifted: "R"; }
844+ CharKey { label: "t"; shifted: "T"; extended: ["þ"]; extendedShifted: ["Þ"] }
845+ CharKey { label: "y"; shifted: "Y"; extended: ["ý", "¥", "ÿ"]; extendedShifted: ["Ý", "¥", "Ÿ"] }
846+ CharKey { label: "u"; shifted: "U"; extended: ["û","ù","ú","ü"]; extendedShifted: ["Û","Ù","Ú","Ü"] }
847+ CharKey { label: "i"; shifted: "I"; extended: ["î","ï","ì","í"]; extendedShifted: ["Î","Ï","Ì","Í"] }
848+ CharKey { label: "o"; shifted: "O"; extended: ["ö","ô","ò","ó", "º","õ"]; extendedShifted: ["Ö","Ô","Ò","Ó", "º","Õ"] }
849+ CharKey { label: "p"; shifted: "P"; }
850+ }
851+
852+ Row {
853+ anchors.horizontalCenter: parent.horizontalCenter;
854+ spacing: 0
855+
856+ CharKey { label: "a"; shifted: "A"; extended: ["ä","à","â","á","ã","å","ª","æ"]; extendedShifted: ["Ä","À","Â","Á","Ã","Å","ª","Æ"] }
857+ CharKey { label: "s"; shifted: "S"; extended: ["ß","$"]; extendedShifted: ["$"] }
858+ CharKey { label: "d"; shifted: "D"; extended: ["ð"]; extendedShifted: ["Ð"] }
859+ CharKey { label: "f"; shifted: "F"; }
860+ CharKey { label: "g"; shifted: "G"; }
861+ CharKey { label: "h"; shifted: "H"; }
862+ CharKey { label: "j"; shifted: "J"; }
863+ CharKey { label: "k"; shifted: "K"; }
864+ CharKey { label: "l"; shifted: "L"; }
865+ CharKey { label: "ñ"; shifted: "Ñ"; }
866+ }
867+
868+ Row {
869+ anchors.horizontalCenter: parent.horizontalCenter;
870+ spacing: 0
871+
872+ ShiftKey {}
873+ CharKey { label: "z"; shifted: "Z"; }
874+ CharKey { label: "x"; shifted: "X"; }
875+ CharKey { label: "c"; shifted: "C"; extended: ["ç"]; extendedShifted: ["Ç"] }
876+ CharKey { label: "v"; shifted: "V"; }
877+ CharKey { label: "b"; shifted: "B"; }
878+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
879+ CharKey { label: "m"; shifted: "M"; }
880+ BackspaceKey {}
881+ }
882+
883+ Item {
884+ anchors.left: parent.left
885+ anchors.right: parent.right
886+
887+ height: panel.keyHeight;
888+
889+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
890+ CharKey { id: slashKey; label: "/"; shifted: "/"; anchors.left: symShiftKey.right; }
891+ UrlKey { id: urlKey; label: ".es"; extended: [".mx", ".co", ".ar", ".com", ".pe", ".ve", ".cl"]; anchors.right: dotKey.left; }
892+ CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
893+ ReturnKey { id: enterKey; anchors.right: parent.right }
894+ }
895+ } // column
896+}
897
898=== added file 'qml/languages/es/Keyboard_es_url_search.qml'
899--- qml/languages/es/Keyboard_es_url_search.qml 1970-01-01 00:00:00 +0000
900+++ qml/languages/es/Keyboard_es_url_search.qml 2013-10-24 13:11:26 +0000
901@@ -0,0 +1,92 @@
902+/*
903+ * Copyright 2013 Canonical Ltd.
904+ *
905+ * This program is free software; you can redistribute it and/or modify
906+ * it under the terms of the GNU Lesser General Public License as published by
907+ * the Free Software Foundation; version 3.
908+ *
909+ * This program is distributed in the hope that it will be useful,
910+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
911+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
912+ * GNU Lesser General Public License for more details.
913+ *
914+ * You should have received a copy of the GNU Lesser General Public License
915+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
916+ */
917+
918+import QtQuick 2.0
919+import "../../keys"
920+
921+KeyPad {
922+ anchors.fill: parent
923+
924+ content: c1
925+ symbols: "languages/Keyboard_symbols.qml"
926+
927+ Column {
928+ id: c1
929+ anchors.fill: parent
930+ spacing: 0
931+
932+ Row {
933+ anchors.horizontalCenter: parent.horizontalCenter;
934+ spacing: 0
935+
936+ CharKey { label: "q"; shifted: "Q"; }
937+ CharKey { label: "w"; shifted: "W"; }
938+ CharKey { label: "e"; shifted: "E"; extended: ["è", "é", "ê", "ë", "€"]; extendedShifted: ["È","É", "Ê", "Ë", "€"] }
939+ CharKey { label: "r"; shifted: "R"; }
940+ CharKey { label: "t"; shifted: "T"; extended: ["þ"]; extendedShifted: ["Þ"] }
941+ CharKey { label: "y"; shifted: "Y"; extended: ["ý", "¥", "ÿ"]; extendedShifted: ["Ý", "¥", "Ÿ"] }
942+ CharKey { label: "u"; shifted: "U"; extended: ["û","ù","ú","ü"]; extendedShifted: ["Û","Ù","Ú","Ü"] }
943+ CharKey { label: "i"; shifted: "I"; extended: ["î","ï","ì","í"]; extendedShifted: ["Î","Ï","Ì","Í"] }
944+ CharKey { label: "o"; shifted: "O"; extended: ["ö","ô","ò","ó", "º","õ"]; extendedShifted: ["Ö","Ô","Ò","Ó", "º","Õ"] }
945+ CharKey { label: "p"; shifted: "P"; }
946+ }
947+
948+ Row {
949+ anchors.horizontalCenter: parent.horizontalCenter;
950+ spacing: 0
951+
952+ CharKey { label: "a"; shifted: "A"; extended: ["ä","à","â","á","ã","å","ª","æ"]; extendedShifted: ["Ä","À","Â","Á","Ã","Å","ª","Æ"] }
953+ CharKey { label: "s"; shifted: "S"; extended: ["ß","$"]; extendedShifted: ["$"] }
954+ CharKey { label: "d"; shifted: "D"; extended: ["ð"]; extendedShifted: ["Ð"] }
955+ CharKey { label: "f"; shifted: "F"; }
956+ CharKey { label: "g"; shifted: "G"; }
957+ CharKey { label: "h"; shifted: "H"; }
958+ CharKey { label: "j"; shifted: "J"; }
959+ CharKey { label: "k"; shifted: "K"; }
960+ CharKey { label: "l"; shifted: "L"; }
961+ CharKey { label: "ñ"; shifted: "Ñ"; }
962+ }
963+
964+ Row {
965+ anchors.horizontalCenter: parent.horizontalCenter;
966+ spacing: 0
967+
968+ ShiftKey {}
969+ CharKey { label: "z"; shifted: "Z"; }
970+ CharKey { label: "x"; shifted: "X"; }
971+ CharKey { label: "c"; shifted: "C"; extended: ["ç"]; extendedShifted: ["Ç"] }
972+ CharKey { label: "v"; shifted: "V"; }
973+ CharKey { label: "b"; shifted: "B"; }
974+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
975+ CharKey { label: "m"; shifted: "M"; }
976+ BackspaceKey {}
977+ }
978+
979+ Item {
980+ anchors.left: parent.left
981+ anchors.right: parent.right
982+
983+ height: panel.keyHeight;
984+
985+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
986+ CharKey { id: slashKey; label: "/"; shifted: "/"; anchors.left: symShiftKey.right; }
987+ SpaceKey { id: spaceKey; anchors.left: slashKey.right; anchors.right: urlKey.left; noMagnifier: true }
988+ UrlKey { id: urlKey; label: ".es"; extended: [".mx", ".co", ".ar", ".com", ".pe", ".ve", ".cl"]; anchors.right: dotKey.left; }
989+ CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
990+ ReturnKey { id: enterKey; anchors.right: parent.right }
991+ }
992+ } // column
993+}
994
995=== added directory 'qml/languages/fr'
996=== renamed file 'qml/languages/Keyboard_fr.qml' => 'qml/languages/fr/Keyboard_fr.qml'
997--- qml/languages/Keyboard_fr.qml 2013-10-10 09:27:28 +0000
998+++ qml/languages/fr/Keyboard_fr.qml 2013-10-24 13:11:26 +0000
999@@ -15,7 +15,7 @@
1000 */
1001
1002 import QtQuick 2.0
1003-import "../keys"
1004+import "../../keys"
1005
1006 KeyPad {
1007 anchors.fill: parent
1008@@ -82,7 +82,8 @@
1009 height: panel.keyHeight;
1010
1011 SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
1012- CharKey { id: commaKey; label: "'"; shifted: "/"; anchors.left: symShiftKey.right; }
1013+ LanguageKey { id: languageMenuButton; anchors.left: symShiftKey.right; }
1014+ CharKey { id: commaKey; label: "'"; shifted: "/"; anchors.left: languageMenuButton.right; }
1015 SpaceKey { id: spaceKey; anchors.left: commaKey.right; anchors.right: dotKey.left; noMagnifier: true }
1016 CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
1017 ReturnKey { id: enterKey; anchors.right: parent.right }
1018
1019=== added file 'qml/languages/fr/Keyboard_fr_email.qml'
1020--- qml/languages/fr/Keyboard_fr_email.qml 1970-01-01 00:00:00 +0000
1021+++ qml/languages/fr/Keyboard_fr_email.qml 2013-10-24 13:11:26 +0000
1022@@ -0,0 +1,92 @@
1023+/*
1024+ * Copyright 2013 Canonical Ltd.
1025+ *
1026+ * This program is free software; you can redistribute it and/or modify
1027+ * it under the terms of the GNU Lesser General Public License as published by
1028+ * the Free Software Foundation; version 3.
1029+ *
1030+ * This program is distributed in the hope that it will be useful,
1031+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1032+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1033+ * GNU Lesser General Public License for more details.
1034+ *
1035+ * You should have received a copy of the GNU Lesser General Public License
1036+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1037+ */
1038+
1039+import QtQuick 2.0
1040+import "../../keys"
1041+
1042+KeyPad {
1043+ anchors.fill: parent
1044+
1045+ content: c1
1046+ symbols: "languages/Keyboard_symbols.qml"
1047+
1048+ Column {
1049+ id: c1
1050+ anchors.fill: parent
1051+ spacing: 0
1052+
1053+ Row {
1054+ anchors.horizontalCenter: parent.horizontalCenter;
1055+ spacing: 0
1056+
1057+ CharKey { label: "a"; shifted: "A"; extended: ["à","â","æ","á","ã","ä"]; extendedShifted: ["À","Â","Æ","Á","Ã","Ä"] }
1058+ CharKey { label: "z"; shifted: "Z"; }
1059+ CharKey { label: "e"; shifted: "E"; extended: ["è","é","ë","ê","€"]; extendedShifted: ["È","É","Ë","Ê","€"] }
1060+ CharKey { label: "r"; shifted: "R"; }
1061+ CharKey { label: "t"; shifted: "T"; }
1062+ CharKey { label: "y"; shifted: "Y"; extended: ["ÿ","¥"]; extendedShifted: ["Ÿ","¥"] }
1063+ CharKey { label: "u"; shifted: "U"; extended: ["û","ù","ú","ü"]; extendedShifted: ["Û","Ù","Ú","Ü"] }
1064+ CharKey { label: "i"; shifted: "I"; extended: ["î","ï","ì","í"]; extendedShifted: ["Î","Ï","Ì","Í"] }
1065+ CharKey { label: "o"; shifted: "O"; extended: ["ô","œ","ò","ó","õ"]; extendedShifted: ["Ô","Œ","Ò","Ó","Õ"] }
1066+ CharKey { label: "p"; shifted: "P"; }
1067+ }
1068+
1069+ Row {
1070+ anchors.horizontalCenter: parent.horizontalCenter;
1071+ spacing: 0
1072+ CharKey { label: "q"; shifted: "Q"; }
1073+ CharKey { label: "s"; shifted: "S"; extended: ["ß","$"]; extendedShifted: ["$"] }
1074+ CharKey { label: "d"; shifted: "D"; extended: ["ð"]; extendedShifted: ["Ð"] }
1075+ CharKey { label: "f"; shifted: "F"; }
1076+ CharKey { label: "g"; shifted: "G"; }
1077+ CharKey { label: "h"; shifted: "H"; }
1078+ CharKey { label: "j"; shifted: "J"; }
1079+ CharKey { label: "k"; shifted: "K"; }
1080+ CharKey { label: "l"; shifted: "L"; }
1081+ CharKey { label: "m"; shifted: "M"; }
1082+ }
1083+
1084+ Row {
1085+ anchors.horizontalCenter: parent.horizontalCenter;
1086+ spacing: 0
1087+
1088+ ShiftKey {}
1089+
1090+ CharKey { label: "w"; shifted: "W"; }
1091+ CharKey { label: "x"; shifted: "X"; }
1092+ CharKey { label: "c"; shifted: "C"; extended: ["ç"]; extendedShifted: ["Ç"] }
1093+ CharKey { label: "v"; shifted: "V"; }
1094+ CharKey { label: "b"; shifted: "B"; }
1095+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
1096+ CharKey { label: "ç"; shifted: "Ç"; }
1097+ BackspaceKey {}
1098+ }
1099+
1100+ Item {
1101+ anchors.left: parent.left
1102+ anchors.right: parent.right
1103+
1104+ height: panel.keyHeight;
1105+
1106+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
1107+ CharKey { id: atKey; label: "@"; shifted: "@"; anchors.left: symShiftKey.right; }
1108+ SpaceKey { id: spaceKey; anchors.left: atKey.right; anchors.right: urlKey.left; noMagnifier: true }
1109+ UrlKey { id: urlKey; label: ".fr"; extended: [".ca", ".cd", ".ci", ".ch", ".be", ".ht"]; anchors.right: dotKey.left; }
1110+ CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
1111+ ReturnKey { id: enterKey; anchors.right: parent.right }
1112+ }
1113+ } // column
1114+}
1115
1116=== added file 'qml/languages/fr/Keyboard_fr_url.qml'
1117--- qml/languages/fr/Keyboard_fr_url.qml 1970-01-01 00:00:00 +0000
1118+++ qml/languages/fr/Keyboard_fr_url.qml 2013-10-24 13:11:26 +0000
1119@@ -0,0 +1,91 @@
1120+/*
1121+ * Copyright 2013 Canonical Ltd.
1122+ *
1123+ * This program is free software; you can redistribute it and/or modify
1124+ * it under the terms of the GNU Lesser General Public License as published by
1125+ * the Free Software Foundation; version 3.
1126+ *
1127+ * This program is distributed in the hope that it will be useful,
1128+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1129+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1130+ * GNU Lesser General Public License for more details.
1131+ *
1132+ * You should have received a copy of the GNU Lesser General Public License
1133+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1134+ */
1135+
1136+import QtQuick 2.0
1137+import "../../keys"
1138+
1139+KeyPad {
1140+ anchors.fill: parent
1141+
1142+ content: c1
1143+ symbols: "languages/Keyboard_symbols.qml"
1144+
1145+ Column {
1146+ id: c1
1147+ anchors.fill: parent
1148+ spacing: 0
1149+
1150+ Row {
1151+ anchors.horizontalCenter: parent.horizontalCenter;
1152+ spacing: 0
1153+
1154+ CharKey { label: "a"; shifted: "A"; extended: ["à","â","æ","á","ã","ä"]; extendedShifted: ["À","Â","Æ","Á","Ã","Ä"] }
1155+ CharKey { label: "z"; shifted: "Z"; }
1156+ CharKey { label: "e"; shifted: "E"; extended: ["è","é","ë","ê","€"]; extendedShifted: ["È","É","Ë","Ê","€"] }
1157+ CharKey { label: "r"; shifted: "R"; }
1158+ CharKey { label: "t"; shifted: "T"; }
1159+ CharKey { label: "y"; shifted: "Y"; extended: ["ÿ","¥"]; extendedShifted: ["Ÿ","¥"] }
1160+ CharKey { label: "u"; shifted: "U"; extended: ["û","ù","ú","ü"]; extendedShifted: ["Û","Ù","Ú","Ü"] }
1161+ CharKey { label: "i"; shifted: "I"; extended: ["î","ï","ì","í"]; extendedShifted: ["Î","Ï","Ì","Í"] }
1162+ CharKey { label: "o"; shifted: "O"; extended: ["ô","œ","ò","ó","õ"]; extendedShifted: ["Ô","Œ","Ò","Ó","Õ"] }
1163+ CharKey { label: "p"; shifted: "P"; }
1164+ }
1165+
1166+ Row {
1167+ anchors.horizontalCenter: parent.horizontalCenter;
1168+ spacing: 0
1169+ CharKey { label: "q"; shifted: "Q"; }
1170+ CharKey { label: "s"; shifted: "S"; extended: ["ß","$"]; extendedShifted: ["$"] }
1171+ CharKey { label: "d"; shifted: "D"; extended: ["ð"]; extendedShifted: ["Ð"] }
1172+ CharKey { label: "f"; shifted: "F"; }
1173+ CharKey { label: "g"; shifted: "G"; }
1174+ CharKey { label: "h"; shifted: "H"; }
1175+ CharKey { label: "j"; shifted: "J"; }
1176+ CharKey { label: "k"; shifted: "K"; }
1177+ CharKey { label: "l"; shifted: "L"; }
1178+ CharKey { label: "m"; shifted: "M"; }
1179+ }
1180+
1181+ Row {
1182+ anchors.horizontalCenter: parent.horizontalCenter;
1183+ spacing: 0
1184+
1185+ ShiftKey {}
1186+
1187+ CharKey { label: "w"; shifted: "W"; }
1188+ CharKey { label: "x"; shifted: "X"; }
1189+ CharKey { label: "c"; shifted: "C"; extended: ["ç"]; extendedShifted: ["Ç"] }
1190+ CharKey { label: "v"; shifted: "V"; }
1191+ CharKey { label: "b"; shifted: "B"; }
1192+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
1193+ CharKey { label: "ç"; shifted: "Ç"; }
1194+ BackspaceKey {}
1195+ }
1196+
1197+ Item {
1198+ anchors.left: parent.left
1199+ anchors.right: parent.right
1200+
1201+ height: panel.keyHeight;
1202+
1203+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
1204+ CharKey { id: slashKey; label: "/"; shifted: "/"; anchors.left: symShiftKey.right; }
1205+ UrlKey { id: urlKey; label: ".fr"; extended: [".ca", ".cd", ".ci", ".ch", ".be", ".ht"]; anchors.right: dotKey.left; }
1206+ CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
1207+ ReturnKey { id: enterKey; anchors.right: parent.right }
1208+ }
1209+ } // column
1210+}
1211
1212=== added file 'qml/languages/fr/Keyboard_fr_url_search.qml'
1213--- qml/languages/fr/Keyboard_fr_url_search.qml 1970-01-01 00:00:00 +0000
1214+++ qml/languages/fr/Keyboard_fr_url_search.qml 2013-10-24 13:11:26 +0000
1215@@ -0,0 +1,92 @@
1216+/*
1217+ * Copyright 2013 Canonical Ltd.
1218+ *
1219+ * This program is free software; you can redistribute it and/or modify
1220+ * it under the terms of the GNU Lesser General Public License as published by
1221+ * the Free Software Foundation; version 3.
1222+ *
1223+ * This program is distributed in the hope that it will be useful,
1224+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1225+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1226+ * GNU Lesser General Public License for more details.
1227+ *
1228+ * You should have received a copy of the GNU Lesser General Public License
1229+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1230+ */
1231+
1232+import QtQuick 2.0
1233+import "../../keys"
1234+
1235+KeyPad {
1236+ anchors.fill: parent
1237+
1238+ content: c1
1239+ symbols: "languages/Keyboard_symbols.qml"
1240+
1241+ Column {
1242+ id: c1
1243+ anchors.fill: parent
1244+ spacing: 0
1245+
1246+ Row {
1247+ anchors.horizontalCenter: parent.horizontalCenter;
1248+ spacing: 0
1249+
1250+ CharKey { label: "a"; shifted: "A"; extended: ["à","â","æ","á","ã","ä"]; extendedShifted: ["À","Â","Æ","Á","Ã","Ä"] }
1251+ CharKey { label: "z"; shifted: "Z"; }
1252+ CharKey { label: "e"; shifted: "E"; extended: ["è","é","ë","ê","€"]; extendedShifted: ["È","É","Ë","Ê","€"] }
1253+ CharKey { label: "r"; shifted: "R"; }
1254+ CharKey { label: "t"; shifted: "T"; }
1255+ CharKey { label: "y"; shifted: "Y"; extended: ["ÿ","¥"]; extendedShifted: ["Ÿ","¥"] }
1256+ CharKey { label: "u"; shifted: "U"; extended: ["û","ù","ú","ü"]; extendedShifted: ["Û","Ù","Ú","Ü"] }
1257+ CharKey { label: "i"; shifted: "I"; extended: ["î","ï","ì","í"]; extendedShifted: ["Î","Ï","Ì","Í"] }
1258+ CharKey { label: "o"; shifted: "O"; extended: ["ô","œ","ò","ó","õ"]; extendedShifted: ["Ô","Œ","Ò","Ó","Õ"] }
1259+ CharKey { label: "p"; shifted: "P"; }
1260+ }
1261+
1262+ Row {
1263+ anchors.horizontalCenter: parent.horizontalCenter;
1264+ spacing: 0
1265+ CharKey { label: "q"; shifted: "Q"; }
1266+ CharKey { label: "s"; shifted: "S"; extended: ["ß","$"]; extendedShifted: ["$"] }
1267+ CharKey { label: "d"; shifted: "D"; extended: ["ð"]; extendedShifted: ["Ð"] }
1268+ CharKey { label: "f"; shifted: "F"; }
1269+ CharKey { label: "g"; shifted: "G"; }
1270+ CharKey { label: "h"; shifted: "H"; }
1271+ CharKey { label: "j"; shifted: "J"; }
1272+ CharKey { label: "k"; shifted: "K"; }
1273+ CharKey { label: "l"; shifted: "L"; }
1274+ CharKey { label: "m"; shifted: "M"; }
1275+ }
1276+
1277+ Row {
1278+ anchors.horizontalCenter: parent.horizontalCenter;
1279+ spacing: 0
1280+
1281+ ShiftKey {}
1282+
1283+ CharKey { label: "w"; shifted: "W"; }
1284+ CharKey { label: "x"; shifted: "X"; }
1285+ CharKey { label: "c"; shifted: "C"; extended: ["ç"]; extendedShifted: ["Ç"] }
1286+ CharKey { label: "v"; shifted: "V"; }
1287+ CharKey { label: "b"; shifted: "B"; }
1288+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
1289+ CharKey { label: "ç"; shifted: "Ç"; }
1290+ BackspaceKey {}
1291+ }
1292+
1293+ Item {
1294+ anchors.left: parent.left
1295+ anchors.right: parent.right
1296+
1297+ height: panel.keyHeight;
1298+
1299+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
1300+ CharKey { id: slashKey; label: "/"; shifted: "/"; anchors.left: symShiftKey.right; }
1301+ SpaceKey { id: spaceKey; anchors.left: slashKey.right; anchors.right: urlKey.left; noMagnifier: true }
1302+ UrlKey { id: urlKey; label: ".fr"; extended: [".ca", ".cd", ".ci", ".ch", ".be", ".ht"]; anchors.right: dotKey.left; }
1303+ CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
1304+ ReturnKey { id: enterKey; anchors.right: parent.right }
1305+ }
1306+ } // column
1307+}
1308
1309=== added directory 'qml/languages/pt'
1310=== renamed file 'qml/languages/Keyboard_pt.qml' => 'qml/languages/pt/Keyboard_pt.qml'
1311--- qml/languages/Keyboard_pt.qml 2013-10-10 09:27:28 +0000
1312+++ qml/languages/pt/Keyboard_pt.qml 2013-10-24 13:11:26 +0000
1313@@ -15,7 +15,7 @@
1314 */
1315
1316 import QtQuick 2.0
1317-import "../keys"
1318+import "../../keys"
1319
1320 KeyPad {
1321 anchors.fill: parent
1322@@ -82,7 +82,8 @@
1323 height: panel.keyHeight;
1324
1325 SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
1326- CharKey { id: commaKey; label: ","; shifted: "/"; anchors.left: symShiftKey.right; }
1327+ LanguageKey { id: languageMenuButton; anchors.left: symShiftKey.right; }
1328+ CharKey { id: commaKey; label: ","; shifted: "/"; anchors.left: languageMenuButton.right; }
1329 SpaceKey { id: spaceKey; anchors.left: commaKey.right; anchors.right: dotKey.left; noMagnifier: true }
1330 CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
1331 ReturnKey { id: enterKey; anchors.right: parent.right }
1332
1333=== added file 'qml/languages/pt/Keyboard_pt_email.qml'
1334--- qml/languages/pt/Keyboard_pt_email.qml 1970-01-01 00:00:00 +0000
1335+++ qml/languages/pt/Keyboard_pt_email.qml 2013-10-24 13:11:26 +0000
1336@@ -0,0 +1,92 @@
1337+/*
1338+ * Copyright 2013 Canonical Ltd.
1339+ *
1340+ * This program is free software; you can redistribute it and/or modify
1341+ * it under the terms of the GNU Lesser General Public License as published by
1342+ * the Free Software Foundation; version 3.
1343+ *
1344+ * This program is distributed in the hope that it will be useful,
1345+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1346+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1347+ * GNU Lesser General Public License for more details.
1348+ *
1349+ * You should have received a copy of the GNU Lesser General Public License
1350+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1351+ */
1352+
1353+import QtQuick 2.0
1354+import "../../keys"
1355+
1356+KeyPad {
1357+ anchors.fill: parent
1358+
1359+ content: c1
1360+ symbols: "languages/Keyboard_symbols.qml"
1361+
1362+ Column {
1363+ id: c1
1364+ anchors.fill: parent
1365+ spacing: 0
1366+
1367+ Row {
1368+ anchors.horizontalCenter: parent.horizontalCenter;
1369+ spacing: 0
1370+
1371+ CharKey { label: "q"; shifted: "Q"; }
1372+ CharKey { label: "w"; shifted: "W"; }
1373+ CharKey { label: "e"; shifted: "E"; extended: ["é","ê","è","ë","€"]; extendedShifted: ["É","Ê","È","Ë","€"] }
1374+ CharKey { label: "r"; shifted: "R"; }
1375+ CharKey { label: "t"; shifted: "T"; extended: ["þ"]; extendedShifted: ["Þ"] }
1376+ CharKey { label: "y"; shifted: "Y"; extended: ["ý", "¥", "ÿ"]; extendedShifted: ["Ý", "¥", "Ÿ"] }
1377+ CharKey { label: "u"; shifted: "U"; extended: ["ú","û","ù","ü"]; extendedShifted: ["Ú","Û","Ù","Ü"] }
1378+ CharKey { label: "i"; shifted: "I"; extended: ["í","î","ì","ï"]; extendedShifted: ["Í","Î","Ì","Ï"] }
1379+ CharKey { label: "o"; shifted: "O"; extended: ["ó","õ","ô","º","ò","ö"]; extendedShifted: ["Ó","Õ","Ô","º","Ò","Ö"] }
1380+ CharKey { label: "p"; shifted: "P"; }
1381+ }
1382+
1383+ Row {
1384+ anchors.horizontalCenter: parent.horizontalCenter;
1385+ spacing: 0
1386+
1387+ CharKey { label: "a"; shifted: "A"; extended: ["ã","á","à","â","ª","ä","å","æ"]; extendedShifted: ["Ã","Á","À","Â","ª","Ä","Å","Æ"] }
1388+ CharKey { label: "s"; shifted: "S"; extended: ["ß","$"]; extendedShifted: ["$"] }
1389+ CharKey { label: "d"; shifted: "D"; extended: ["ð"]; extendedShifted: ["Ð"] }
1390+ CharKey { label: "f"; shifted: "F"; }
1391+ CharKey { label: "g"; shifted: "G"; }
1392+ CharKey { label: "h"; shifted: "H"; }
1393+ CharKey { label: "j"; shifted: "J"; }
1394+ CharKey { label: "k"; shifted: "K"; }
1395+ CharKey { label: "l"; shifted: "L"; }
1396+ CharKey { label: "ç"; shifted: "Ç"; }
1397+ }
1398+
1399+ Row {
1400+ anchors.horizontalCenter: parent.horizontalCenter;
1401+ spacing: 0
1402+
1403+ ShiftKey {}
1404+ CharKey { label: "z"; shifted: "Z"; }
1405+ CharKey { label: "x"; shifted: "X"; }
1406+ CharKey { label: "c"; shifted: "C"; extended: ["ç"]; extendedShifted: ["Ç"] }
1407+ CharKey { label: "v"; shifted: "V"; }
1408+ CharKey { label: "b"; shifted: "B"; }
1409+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
1410+ CharKey { label: "m"; shifted: "M"; }
1411+ BackspaceKey {}
1412+ }
1413+
1414+ Item {
1415+ anchors.left: parent.left
1416+ anchors.right: parent.right
1417+
1418+ height: panel.keyHeight;
1419+
1420+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
1421+ CharKey { id: atKey; label: "@"; shifted: "@"; anchors.left: symShiftKey.right; }
1422+ SpaceKey { id: spaceKey; anchors.left: atKey.right; anchors.right: urlKey.left; noMagnifier: true }
1423+ UrlKey { id: urlKey; label: ".br"; extended: [".pt", ".mz", ".ao", ".gw", ".tl"]; anchors.right: dotKey.left; }
1424+ CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
1425+ ReturnKey { id: enterKey; anchors.right: parent.right }
1426+ }
1427+ } // column
1428+}
1429
1430=== added file 'qml/languages/pt/Keyboard_pt_url.qml'
1431--- qml/languages/pt/Keyboard_pt_url.qml 1970-01-01 00:00:00 +0000
1432+++ qml/languages/pt/Keyboard_pt_url.qml 2013-10-24 13:11:26 +0000
1433@@ -0,0 +1,91 @@
1434+/*
1435+ * Copyright 2013 Canonical Ltd.
1436+ *
1437+ * This program is free software; you can redistribute it and/or modify
1438+ * it under the terms of the GNU Lesser General Public License as published by
1439+ * the Free Software Foundation; version 3.
1440+ *
1441+ * This program is distributed in the hope that it will be useful,
1442+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1443+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1444+ * GNU Lesser General Public License for more details.
1445+ *
1446+ * You should have received a copy of the GNU Lesser General Public License
1447+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1448+ */
1449+
1450+import QtQuick 2.0
1451+import "../../keys"
1452+
1453+KeyPad {
1454+ anchors.fill: parent
1455+
1456+ content: c1
1457+ symbols: "languages/Keyboard_symbols.qml"
1458+
1459+ Column {
1460+ id: c1
1461+ anchors.fill: parent
1462+ spacing: 0
1463+
1464+ Row {
1465+ anchors.horizontalCenter: parent.horizontalCenter;
1466+ spacing: 0
1467+
1468+ CharKey { label: "q"; shifted: "Q"; }
1469+ CharKey { label: "w"; shifted: "W"; }
1470+ CharKey { label: "e"; shifted: "E"; extended: ["é","ê","è","ë","€"]; extendedShifted: ["É","Ê","È","Ë","€"] }
1471+ CharKey { label: "r"; shifted: "R"; }
1472+ CharKey { label: "t"; shifted: "T"; extended: ["þ"]; extendedShifted: ["Þ"] }
1473+ CharKey { label: "y"; shifted: "Y"; extended: ["ý", "¥", "ÿ"]; extendedShifted: ["Ý", "¥", "Ÿ"] }
1474+ CharKey { label: "u"; shifted: "U"; extended: ["ú","û","ù","ü"]; extendedShifted: ["Ú","Û","Ù","Ü"] }
1475+ CharKey { label: "i"; shifted: "I"; extended: ["í","î","ì","ï"]; extendedShifted: ["Í","Î","Ì","Ï"] }
1476+ CharKey { label: "o"; shifted: "O"; extended: ["ó","õ","ô","º","ò","ö"]; extendedShifted: ["Ó","Õ","Ô","º","Ò","Ö"] }
1477+ CharKey { label: "p"; shifted: "P"; }
1478+ }
1479+
1480+ Row {
1481+ anchors.horizontalCenter: parent.horizontalCenter;
1482+ spacing: 0
1483+
1484+ CharKey { label: "a"; shifted: "A"; extended: ["ã","á","à","â","ª","ä","å","æ"]; extendedShifted: ["Ã","Á","À","Â","ª","Ä","Å","Æ"] }
1485+ CharKey { label: "s"; shifted: "S"; extended: ["ß","$"]; extendedShifted: ["$"] }
1486+ CharKey { label: "d"; shifted: "D"; extended: ["ð"]; extendedShifted: ["Ð"] }
1487+ CharKey { label: "f"; shifted: "F"; }
1488+ CharKey { label: "g"; shifted: "G"; }
1489+ CharKey { label: "h"; shifted: "H"; }
1490+ CharKey { label: "j"; shifted: "J"; }
1491+ CharKey { label: "k"; shifted: "K"; }
1492+ CharKey { label: "l"; shifted: "L"; }
1493+ CharKey { label: "ç"; shifted: "Ç"; }
1494+ }
1495+
1496+ Row {
1497+ anchors.horizontalCenter: parent.horizontalCenter;
1498+ spacing: 0
1499+
1500+ ShiftKey {}
1501+ CharKey { label: "z"; shifted: "Z"; }
1502+ CharKey { label: "x"; shifted: "X"; }
1503+ CharKey { label: "c"; shifted: "C"; extended: ["ç"]; extendedShifted: ["Ç"] }
1504+ CharKey { label: "v"; shifted: "V"; }
1505+ CharKey { label: "b"; shifted: "B"; }
1506+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
1507+ CharKey { label: "m"; shifted: "M"; }
1508+ BackspaceKey {}
1509+ }
1510+
1511+ Item {
1512+ anchors.left: parent.left
1513+ anchors.right: parent.right
1514+
1515+ height: panel.keyHeight;
1516+
1517+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
1518+ CharKey { id: slashKey; label: "/"; shifted: "/"; anchors.left: symShiftKey.right; }
1519+ UrlKey { id: urlKey; label: ".br"; extended: [".pt", ".mz", ".ao", ".gw", ".tl"]; anchors.right: dotKey.left; }
1520+ CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
1521+ ReturnKey { id: enterKey; anchors.right: parent.right }
1522+ }
1523+ } // column
1524+}
1525
1526=== added file 'qml/languages/pt/Keyboard_pt_url_search.qml'
1527--- qml/languages/pt/Keyboard_pt_url_search.qml 1970-01-01 00:00:00 +0000
1528+++ qml/languages/pt/Keyboard_pt_url_search.qml 2013-10-24 13:11:26 +0000
1529@@ -0,0 +1,92 @@
1530+/*
1531+ * Copyright 2013 Canonical Ltd.
1532+ *
1533+ * This program is free software; you can redistribute it and/or modify
1534+ * it under the terms of the GNU Lesser General Public License as published by
1535+ * the Free Software Foundation; version 3.
1536+ *
1537+ * This program is distributed in the hope that it will be useful,
1538+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1539+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1540+ * GNU Lesser General Public License for more details.
1541+ *
1542+ * You should have received a copy of the GNU Lesser General Public License
1543+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1544+ */
1545+
1546+import QtQuick 2.0
1547+import "../../keys"
1548+
1549+KeyPad {
1550+ anchors.fill: parent
1551+
1552+ content: c1
1553+ symbols: "languages/Keyboard_symbols.qml"
1554+
1555+ Column {
1556+ id: c1
1557+ anchors.fill: parent
1558+ spacing: 0
1559+
1560+ Row {
1561+ anchors.horizontalCenter: parent.horizontalCenter;
1562+ spacing: 0
1563+
1564+ CharKey { label: "q"; shifted: "Q"; }
1565+ CharKey { label: "w"; shifted: "W"; }
1566+ CharKey { label: "e"; shifted: "E"; extended: ["é","ê","è","ë","€"]; extendedShifted: ["É","Ê","È","Ë","€"] }
1567+ CharKey { label: "r"; shifted: "R"; }
1568+ CharKey { label: "t"; shifted: "T"; extended: ["þ"]; extendedShifted: ["Þ"] }
1569+ CharKey { label: "y"; shifted: "Y"; extended: ["ý", "¥", "ÿ"]; extendedShifted: ["Ý", "¥", "Ÿ"] }
1570+ CharKey { label: "u"; shifted: "U"; extended: ["ú","û","ù","ü"]; extendedShifted: ["Ú","Û","Ù","Ü"] }
1571+ CharKey { label: "i"; shifted: "I"; extended: ["í","î","ì","ï"]; extendedShifted: ["Í","Î","Ì","Ï"] }
1572+ CharKey { label: "o"; shifted: "O"; extended: ["ó","õ","ô","º","ò","ö"]; extendedShifted: ["Ó","Õ","Ô","º","Ò","Ö"] }
1573+ CharKey { label: "p"; shifted: "P"; }
1574+ }
1575+
1576+ Row {
1577+ anchors.horizontalCenter: parent.horizontalCenter;
1578+ spacing: 0
1579+
1580+ CharKey { label: "a"; shifted: "A"; extended: ["ã","á","à","â","ª","ä","å","æ"]; extendedShifted: ["Ã","Á","À","Â","ª","Ä","Å","Æ"] }
1581+ CharKey { label: "s"; shifted: "S"; extended: ["ß","$"]; extendedShifted: ["$"] }
1582+ CharKey { label: "d"; shifted: "D"; extended: ["ð"]; extendedShifted: ["Ð"] }
1583+ CharKey { label: "f"; shifted: "F"; }
1584+ CharKey { label: "g"; shifted: "G"; }
1585+ CharKey { label: "h"; shifted: "H"; }
1586+ CharKey { label: "j"; shifted: "J"; }
1587+ CharKey { label: "k"; shifted: "K"; }
1588+ CharKey { label: "l"; shifted: "L"; }
1589+ CharKey { label: "ç"; shifted: "Ç"; }
1590+ }
1591+
1592+ Row {
1593+ anchors.horizontalCenter: parent.horizontalCenter;
1594+ spacing: 0
1595+
1596+ ShiftKey {}
1597+ CharKey { label: "z"; shifted: "Z"; }
1598+ CharKey { label: "x"; shifted: "X"; }
1599+ CharKey { label: "c"; shifted: "C"; extended: ["ç"]; extendedShifted: ["Ç"] }
1600+ CharKey { label: "v"; shifted: "V"; }
1601+ CharKey { label: "b"; shifted: "B"; }
1602+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
1603+ CharKey { label: "m"; shifted: "M"; }
1604+ BackspaceKey {}
1605+ }
1606+
1607+ Item {
1608+ anchors.left: parent.left
1609+ anchors.right: parent.right
1610+
1611+ height: panel.keyHeight;
1612+
1613+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; }
1614+ CharKey { id: slashKey; label: "/"; shifted: "/"; anchors.left: symShiftKey.right; }
1615+ SpaceKey { id: spaceKey; anchors.left: slashKey.right; anchors.right: urlKey.left; noMagnifier: true }
1616+ UrlKey { id: urlKey; label: ".br"; extended: [".pt", ".mz", ".ao", ".gw", ".tl"]; anchors.right: dotKey.left; }
1617+ CharKey { id: dotKey; label: "."; shifted: "."; anchors.right: enterKey.left; }
1618+ ReturnKey { id: enterKey; anchors.right: parent.right }
1619+ }
1620+ } // column
1621+}
1622
1623=== added directory 'qml/languages/zh_cn'
1624=== renamed file 'qml/languages/Keyboard_zh_cn_pinyin.qml' => 'qml/languages/zh_cn/Keyboard_zh_cn_pinyin.qml'
1625--- qml/languages/Keyboard_zh_cn_pinyin.qml 2013-10-08 08:14:25 +0000
1626+++ qml/languages/zh_cn/Keyboard_zh_cn_pinyin.qml 2013-10-24 13:11:26 +0000
1627@@ -15,7 +15,7 @@
1628 */
1629
1630 import QtQuick 2.0
1631-import "../keys"
1632+import "../../keys"
1633
1634 KeyPad {
1635 anchors.fill: parent
1636@@ -81,7 +81,8 @@
1637 height: panel.keyHeight;
1638
1639 SymbolShiftKey { id: symShiftKey; label: "符号"; anchors.left: parent.left; }
1640- CharKey { id: commaKey; label: ","; shifted: ","; anchors.left: symShiftKey.right; }
1641+ LanguageKey { id: languageMenuButton; anchors.left: symShiftKey.right; }
1642+ CharKey { id: commaKey; label: ","; shifted: ","; anchors.left: languageMenuButton.right; }
1643 SpaceKey { id: spaceKey; anchors.left: commaKey.right; anchors.right: dotKey.left; noMagnifier: true }
1644 CharKey { id: dotKey; label: "。"; shifted: "。"; anchors.right: enterKey.left; }
1645 ReturnKey { id: enterKey; anchors.right: parent.right }
1646
1647=== modified file 'qml/qml.pro'
1648--- qml/qml.pro 2013-10-10 09:27:28 +0000
1649+++ qml/qml.pro 2013-10-24 13:11:26 +0000
1650@@ -12,10 +12,29 @@
1651 qml_languages.path = "$$UBUNTU_KEYBOARD_DATA_DIR/languages"
1652 qml_languages.files = languages/*.qml languages/*.js
1653
1654+lang_de.path = "$$UBUNTU_KEYBOARD_DATA_DIR/languages/de"
1655+lang_de.files = languages/de/*.qml languages/de/*.js
1656+
1657+lang_es.path = "$$UBUNTU_KEYBOARD_DATA_DIR/languages/es"
1658+lang_es.files = languages/es/*.qml languages/es/*.js
1659+
1660+lang_pt.path = "$$UBUNTU_KEYBOARD_DATA_DIR/languages/pt"
1661+lang_pt.files = languages/pt/*.qml languages/pt/*.js
1662+
1663+lang_fr.path = "$$UBUNTU_KEYBOARD_DATA_DIR/languages/fr"
1664+lang_fr.files = languages/fr/*.qml languages/fr/*.js
1665+
1666+lang_en.path = "$$UBUNTU_KEYBOARD_DATA_DIR/languages/en"
1667+lang_en.files = languages/en/*.qml languages/en/*.js
1668+
1669+lang_zh_cn.path = "$$UBUNTU_KEYBOARD_DATA_DIR/languages/zh_cn"
1670+lang_zh_cn.files = languages/zh_cn/*.qml languages/zh_cn/*.js
1671+
1672+
1673 images.path = "$$UBUNTU_KEYBOARD_DATA_DIR/images"
1674 images.files = images/*.png images/*.sci
1675
1676-INSTALLS += qml qml_keys qml_languages images
1677+INSTALLS += qml qml_keys qml_languages lang_de lang_es lang_pt lang_fr lang_en lang_zh_cn images
1678
1679 # for QtCreator
1680 OTHER_FILES += \
1681@@ -34,6 +53,8 @@
1682 keys/DropShadow.qml \
1683 keys/ExtendedKeysSelector.qml \
1684 keys/KeyPad.qml \
1685+ keys/LanguageKey.qml \
1686+ keys/LanguageMenu.qml \
1687 keys/Magnifier.qml \
1688 keys/OneTwoKey.qml \
1689 keys/PressArea.qml \
1690@@ -43,15 +64,29 @@
1691 keys/Spacer.qml \
1692 keys/SymbolShiftKey.qml \
1693 keys/UrlKey.qml \
1694- languages/Keyboard_en_email.qml \
1695- languages/Keyboard_en_url.qml \
1696- languages/Keyboard_en_url_search.qml \
1697- languages/Keyboard_en_us.qml \
1698+ languages/en/Keyboard_en_email.qml \
1699+ languages/en/Keyboard_en_url.qml \
1700+ languages/en/Keyboard_en.qml \
1701+ languages/en/Keyboard_en_url_search.qml \
1702 languages/Keyboard_numbers.qml \
1703 languages/Keyboard_symbols.qml \
1704 languages/Keyboard_telephone.qml \
1705- languages/Keyboard_zh_cn_pinyin.qml \
1706- languages/Keyboard_es.qml \
1707- languages/Keyboard_pt.qml \
1708- languages/Keyboard_de.qml \
1709- languages/Keyboard_fr.qml
1710+ languages/zh_cn/Keyboard_zh_cn_pinyin.qml \
1711+ languages/es/Keyboard_es.qml \
1712+ languages/pt/Keyboard_pt.qml \
1713+ languages/de/Keyboard_de.qml \
1714+ languages/fr/Keyboard_fr.qml \
1715+ languages/de/Keyboard_de_url_search.qml \
1716+ languages/es/Keyboard_es_url_search.qml \
1717+ languages/fr/Keyboard_fr_url_search.qml \
1718+ languages/pt/Keyboard_pt_url_search.qml \
1719+ languages/de/Keyboard_de_email.qml \
1720+ languages/de/Keyboard_de_url.qml \
1721+ languages/es/Keyboard_es_email.qml \
1722+ languages/es/Keyboard_es_url.qml \
1723+ languages/fr/Keyboard_fr_email.qml \
1724+ languages/fr/Keyboard_fr_url.qml \
1725+ languages/pt/Keyboard_pt_email.qml \
1726+ languages/pt/Keyboard_pt_url.qml
1727+
1728+
1729
1730=== modified file 'src/plugin/inputmethod.cpp'
1731--- src/plugin/inputmethod.cpp 2013-10-23 12:47:18 +0000
1732+++ src/plugin/inputmethod.cpp 2013-10-24 13:11:26 +0000
1733@@ -106,8 +106,7 @@
1734 d->registerAutoCorrectSetting();
1735 d->registerAutoCapsSetting();
1736 d->registerWordEngineSetting();
1737-
1738- setActiveSubView("en_us");
1739+ d->registerEnabledLanguages();
1740
1741 // Setting layout orientation depends on word engine and hide word ribbon
1742 // settings to be initialized first:
1743@@ -190,12 +189,13 @@
1744 Maliit::HandlerState state)
1745 {
1746 Q_UNUSED(state)
1747+ Q_UNUSED(id);
1748 Q_D(InputMethod);
1749
1750- // store language id, so we can switch back to current active view
1751- // after showing special layouts as e.g. URL or Num layouts
1752- d->activeLanguageId = id;
1753- d->setActiveKeyboardId(id);
1754+ QString locale = QString(getenv("LANGUAGE"));
1755+ locale.truncate(2);
1756+ d->activeLanguage = locale;
1757+ d->setActiveKeyboardId(locale);
1758 }
1759
1760 QString InputMethod::activeSubView(Maliit::HandlerState state) const
1761@@ -287,6 +287,12 @@
1762 }
1763 }
1764
1765+void InputMethod::onEnabledLanguageSettingsChanged()
1766+{
1767+ Q_D(InputMethod);
1768+ Q_EMIT enabledLanguagesChanged(d->m_settings.enabledLanguages());
1769+}
1770+
1771 void InputMethod::setKeyOverrides(const QMap<QString, QSharedPointer<MKeyOverride> > &overrides)
1772 {
1773 Q_D(InputMethod);
1774@@ -435,7 +441,7 @@
1775 // TODO when refactoring, forward the enum to QML
1776
1777 if (contentType == Maliit::FreeTextContentType)
1778- d->setActiveKeyboardId( d->activeLanguageId );
1779+ d->setActiveKeyboardId( d->activeLanguage );
1780
1781 if (contentType == Maliit::NumberContentType)
1782 d->setActiveKeyboardId( "number" );
1783@@ -473,6 +479,7 @@
1784 {
1785 d->qmlRootItem = d->view->rootObject()->findChild<QQuickItem*>("ubuntuKeyboard");
1786 QObject::connect(d->qmlRootItem, SIGNAL(stateChanged(QString)), this, SLOT(onQMLStateChanged(QString)));
1787+ QObject::connect(d->qmlRootItem, SIGNAL(layoutIdChanged(QString)), &d->editor, SLOT(onLanguageChanged(QString)));
1788
1789 d->applicationApiWrapper->setRootObject(d->view->rootObject());
1790 }
1791@@ -500,4 +507,16 @@
1792 }
1793 }
1794
1795+QStringList InputMethod::enabledLanguages()
1796+{
1797+ Q_D(InputMethod);
1798+ return d->m_settings.enabledLanguages();
1799+}
1800+
1801+QString InputMethod::activeLanguage()
1802+{
1803+ Q_D(InputMethod);
1804+ return d->activeLanguage;
1805+}
1806+
1807 } // namespace MaliitKeyboard
1808
1809=== modified file 'src/plugin/inputmethod.h'
1810--- src/plugin/inputmethod.h 2013-10-15 12:24:32 +0000
1811+++ src/plugin/inputmethod.h 2013-10-24 13:11:26 +0000
1812@@ -85,6 +85,14 @@
1813
1814 void update();
1815
1816+ Q_PROPERTY(QStringList enabledLanguages READ enabledLanguages NOTIFY enabledLanguagesChanged)
1817+ QStringList enabledLanguages();
1818+ Q_SIGNAL void enabledLanguagesChanged(QStringList languages);
1819+
1820+ Q_PROPERTY(QString activeLanguage READ activeLanguage NOTIFY activeLanguageChanged)
1821+ QString activeLanguage();
1822+ Q_SIGNAL void activeLanguageChanged(QString language);
1823+
1824 Q_SIGNALS:
1825 void predictionEnabledChanged();
1826 void contentTypeChanged(Maliit::TextContentType contentType);
1827@@ -94,7 +102,9 @@
1828 Q_SLOT void onStyleSettingChanged();
1829 Q_SLOT void onFeedbackSettingChanged();
1830 Q_SLOT void onAutoCorrectSettingChanged();
1831+ Q_SLOT void onEnabledLanguageSettingsChanged();
1832 Q_SLOT void updateAutoCaps();
1833+
1834 Q_SLOT void updateKey(const QString &key_id,
1835 const MKeyOverride::KeyOverrideAttributes changed_attributes);
1836 Q_SLOT void onKeyboardClosed();
1837
1838=== modified file 'src/plugin/inputmethod_p.h'
1839--- src/plugin/inputmethod_p.h 2013-10-15 12:24:32 +0000
1840+++ src/plugin/inputmethod_p.h 2013-10-24 13:11:26 +0000
1841@@ -91,7 +91,7 @@
1842 bool autocapsEnabled;
1843 bool predictionEnabled;
1844 Maliit::TextContentType contentType;
1845- QString activeLanguageId;
1846+ QString activeLanguage;
1847 Qt::ScreenOrientation appsCurrentOrientation;
1848
1849 KeyboadSettings m_settings;
1850@@ -113,7 +113,6 @@
1851 , autocapsEnabled(false)
1852 , predictionEnabled(false)
1853 , contentType(Maliit::FreeTextContentType)
1854- , activeLanguageId("en_us")
1855 , appsCurrentOrientation(qGuiApp->primaryScreen()->orientation())
1856 , m_settings()
1857 {
1858@@ -338,6 +337,23 @@
1859 #endif
1860 }
1861
1862+ void registerEnabledLanguages()
1863+ {
1864+ QObject::connect(&m_settings, SIGNAL(enabledLanguagesChanged()),
1865+ q, SLOT(onEnabledLanguageSettingsChanged()));
1866+ Q_EMIT q->enabledLanguagesChanged(m_settings.enabledLanguages());
1867+
1868+ registerActiveLanguage();
1869+ }
1870+
1871+ void registerActiveLanguage()
1872+ {
1873+ activeLanguage = QString(getenv("LANGUAGE"));
1874+ activeLanguage.truncate(2);
1875+
1876+ Q_EMIT q->activeLanguageChanged(activeLanguage);
1877+ }
1878+
1879 void onScreenSizeChange(const QSize &size)
1880 {
1881 layout.helper.setScreenSize(size);

Subscribers

People subscribed via source and target branches