on xenial help sign in
Merge from trunk
4d2d6a4Michael Terry
data/com.canonical.Unity8.gschema.xml+5
@@ -27,6 +27,11 @@
27 <summary>Maximum push needed to overcome edge barrier</summary>
27 <summary>Maximum push needed to overcome edge barrier</summary>
28 <description>How much you have to push (in grid units) the mouse against an edge barrier when sensibility is 1.</description>
28 <description>How much you have to push (in grid units) the mouse against an edge barrier when sensibility is 1.</description>
29 </key>
29 </key>
30+ <key type="u" name="edge-drag-width">
31+ <default>2</default>
32+ <summary>The width of the edge drag areas</summary>
33+ <description>How big (in grid units) the edge-drag sensitive area should be.</description>
34+ </key>
30 <key type="b" name="autohide-launcher">
35 <key type="b" name="autohide-launcher">
31 <default>true</default>
36 <default>true</default>
32 <summary>Autohide the launcher</summary>
37 <summary>Autohide the launcher</summary>
debian/changelog+12
@@ -1,3 +1,15 @@
1+unity8 (8.12+16.04.20160414.1-0ubuntu1) xenial; urgency=medium
2+
3+ [ Michael Terry ]
4+ * Make sure that usageMode is set on startup, fixing a problem with
5+ the tutorial not noticing that it is running on a desktop. (LP:
6+ #1564351)
7+
8+ [ Michael Zanetti ]
9+ * make the edge drag area width configurable (LP: #1559512)
10+
11+ -- Michael Zanetti <michael.zanetti@canonical.com> Thu, 14 Apr 2016 21:20:28 +0000
12+
1unity8 (8.12+16.04.20160401-0ubuntu1) xenial; urgency=medium
13unity8 (8.12+16.04.20160401-0ubuntu1) xenial; urgency=medium
2
14
3 * Add missing Testsuite header
15 * Add missing Testsuite header
po/ast.po+23−32
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2016-03-23 10:01+0000\n"
10"POT-Creation-Date: 2016-03-23 10:01+0000\n"
11−"PO-Revision-Date: 2016-03-12 00:17+0000\n"
11+"PO-Revision-Date: 2016-04-17 16:57+0000\n"
12−"Last-Translator: enolp <enolp@softastur.org>\n"
12+"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
13"Language-Team: Asturian <ast@li.org>\n"
13"Language-Team: Asturian <ast@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-03-24 06:07+0000\n"
18+"X-Launchpad-Export-Date: 2016-04-18 05:42+0000\n"
19−"X-Generator: Launchpad (build 17958)\n"
19+"X-Generator: Launchpad (build 17995)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -187,7 +187,7 @@ msgstr ""
187
187
188#: qml/Dash/FiltersPopover.qml:69
188#: qml/Dash/FiltersPopover.qml:69
189msgid "Reset"
189msgid "Reset"
190−msgstr ""
190+msgstr "Reafitar"
191
191
192#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
192#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
193msgid "See less"
193msgid "See less"
@@ -208,7 +208,7 @@ msgstr ""
208
208
209#: qml/Dash/PageHeaderExtraPanel.qml:66
209#: qml/Dash/PageHeaderExtraPanel.qml:66
210msgid "Clear All"
210msgid "Clear All"
211−msgstr ""
211+msgstr "Llimpiar too"
212
212
213#: qml/Dash/Previews/PreviewActionCombo.qml:35
213#: qml/Dash/Previews/PreviewActionCombo.qml:35
214msgid "More..."
214msgid "More..."
@@ -478,7 +478,7 @@ msgstr "Atrás"
478
478
479#: qml/Wizard/Pages/10-welcome.qml:27
479#: qml/Wizard/Pages/10-welcome.qml:27
480msgid "Language"
480msgid "Language"
481−msgstr ""
481+msgstr "Llingua"
482
482
483#: qml/Wizard/Pages/10-welcome.qml:156 qml/Wizard/Pages/30-wifi.qml:206
483#: qml/Wizard/Pages/10-welcome.qml:156 qml/Wizard/Pages/30-wifi.qml:206
484#: qml/Wizard/Pages/40-location.qml:271 qml/Wizard/Pages/50-timezone.qml:267
484#: qml/Wizard/Pages/40-location.qml:271 qml/Wizard/Pages/50-timezone.qml:267
@@ -487,7 +487,7 @@ msgstr ""
487#: qml/Wizard/Pages/passcode-desktop.qml:124
487#: qml/Wizard/Pages/passcode-desktop.qml:124
488#: qml/Wizard/Pages/password-set.qml:141
488#: qml/Wizard/Pages/password-set.qml:141
489msgid "Next"
489msgid "Next"
490−msgstr ""
490+msgstr "Siguiente"
491
491
492#: qml/Wizard/Pages/30-wifi.qml:29
492#: qml/Wizard/Pages/30-wifi.qml:29
493msgid "Connect to Wi‑Fi"
493msgid "Connect to Wi‑Fi"
@@ -495,15 +495,15 @@ msgstr "Coneutase al WiFi"
495
495
496#: qml/Wizard/Pages/30-wifi.qml:130
496#: qml/Wizard/Pages/30-wifi.qml:130
497msgid "Connected"
497msgid "Connected"
498−msgstr ""
498+msgstr "Coneutáu"
499
499
500#: qml/Wizard/Pages/30-wifi.qml:163
500#: qml/Wizard/Pages/30-wifi.qml:163
501msgid "Available Wi-Fi networks"
501msgid "Available Wi-Fi networks"
502−msgstr ""
502+msgstr "Redes Wi-Fi disponibles"
503
503
504#: qml/Wizard/Pages/30-wifi.qml:164
504#: qml/Wizard/Pages/30-wifi.qml:164
505msgid "No available Wi-Fi networks"
505msgid "No available Wi-Fi networks"
506−msgstr ""
506+msgstr "Nun hai redes Wi-Fi disponibles"
507
507
508#: qml/Wizard/Pages/30-wifi.qml:206 qml/Wizard/Pages/60-account.qml:65
508#: qml/Wizard/Pages/30-wifi.qml:206 qml/Wizard/Pages/60-account.qml:65
509#: qml/Wizard/Pages/sim.qml:101
509#: qml/Wizard/Pages/sim.qml:101
@@ -544,23 +544,23 @@ msgstr ""
544
544
545#: qml/Wizard/Pages/50-timezone.qml:29
545#: qml/Wizard/Pages/50-timezone.qml:29
546msgid "Time Zone"
546msgid "Time Zone"
547−msgstr ""
547+msgstr "Estaya horaria"
548
548
549#: qml/Wizard/Pages/50-timezone.qml:178
549#: qml/Wizard/Pages/50-timezone.qml:178
550msgid "Enter your city"
550msgid "Enter your city"
551−msgstr ""
551+msgstr "Escribe la ciudá"
552
552
553#: qml/Wizard/Pages/60-account.qml:24
553#: qml/Wizard/Pages/60-account.qml:24
554msgid "Personalize Your Device"
554msgid "Personalize Your Device"
555−msgstr ""
555+msgstr "Personaliza'l preséu"
556
556
557#: qml/Wizard/Pages/60-account.qml:48
557#: qml/Wizard/Pages/60-account.qml:48
558msgid "Preferred Name"
558msgid "Preferred Name"
559−msgstr ""
559+msgstr "Nome preferíu"
560
560
561#: qml/Wizard/Pages/70-passwd-type.qml:39
561#: qml/Wizard/Pages/70-passwd-type.qml:39
562msgid "Lock Screen"
562msgid "Lock Screen"
563−msgstr ""
563+msgstr "Bloquiar pantalla"
564
564
565#: qml/Wizard/Pages/70-passwd-type.qml:101
565#: qml/Wizard/Pages/70-passwd-type.qml:101
566msgctxt "Label: Type of security method"
566msgctxt "Label: Type of security method"
@@ -595,7 +595,7 @@ msgstr ""
595
595
596#: qml/Wizard/Pages/80-finished.qml:89
596#: qml/Wizard/Pages/80-finished.qml:89
597msgid "Welcome to Ubuntu"
597msgid "Welcome to Ubuntu"
598−msgstr ""
598+msgstr "Bienveníu/a a Ubuntu"
599
599
600#: qml/Wizard/Pages/80-finished.qml:104
600#: qml/Wizard/Pages/80-finished.qml:104
601msgid "You are ready to use your device now"
601msgid "You are ready to use your device now"
@@ -603,7 +603,7 @@ msgstr ""
603
603
604#: qml/Wizard/Pages/80-finished.qml:124
604#: qml/Wizard/Pages/80-finished.qml:124
605msgid "Get Started"
605msgid "Get Started"
606−msgstr ""
606+msgstr "Primeros pasos"
607
607
608#: qml/Wizard/Pages/here-terms.qml:25
608#: qml/Wizard/Pages/here-terms.qml:25
609msgid "Terms & Conditions"
609msgid "Terms & Conditions"
@@ -692,7 +692,7 @@ msgstr ""
692
692
693#: qml/Wizard/Pages/password-set.qml:103
693#: qml/Wizard/Pages/password-set.qml:103
694msgid "Confirm password"
694msgid "Confirm password"
695−msgstr ""
695+msgstr "Confirmar contraseña"
696
696
697#: qml/Wizard/Pages/sim.qml:27
697#: qml/Wizard/Pages/sim.qml:27
698msgid "No SIM card installed"
698msgid "No SIM card installed"
@@ -728,19 +728,19 @@ msgstr ""
728
728
729#: qml/Wizard/PasswordMeter.qml:93
729#: qml/Wizard/PasswordMeter.qml:93
730msgid "Strong password"
730msgid "Strong password"
731−msgstr ""
731+msgstr "Contraseña fuerte"
732
732
733#: qml/Wizard/PasswordMeter.qml:95
733#: qml/Wizard/PasswordMeter.qml:95
734msgid "Fair password"
734msgid "Fair password"
735−msgstr ""
735+msgstr "Contraseña aceutable"
736
736
737#: qml/Wizard/PasswordMeter.qml:97
737#: qml/Wizard/PasswordMeter.qml:97
738msgid "Weak password"
738msgid "Weak password"
739−msgstr ""
739+msgstr "Contraseña feble"
740
740
741#: qml/Wizard/PasswordMeter.qml:99
741#: qml/Wizard/PasswordMeter.qml:99
742msgid "Very weak password"
742msgid "Very weak password"
743−msgstr ""
743+msgstr "Contraseña feble enforma"
744
744
745#~ msgid "Skip intro"
745#~ msgid "Skip intro"
746#~ msgstr "Omitir la intro"
746#~ msgstr "Omitir la intro"
@@ -1056,12 +1056,3 @@ msgstr ""
1056
1056
1057#~ msgid "Call back"
1057#~ msgid "Call back"
1058#~ msgstr "Devolver llamada"
1058#~ msgstr "Devolver llamada"
1059−
1060−#~ msgid "Your device is now ready to use."
1061−#~ msgstr "Agora'l to preséu ta preparáu pa usase."
1062−
1063−#~ msgid "Welcome to your Ubuntu device."
1064−#~ msgstr "Bienllegáu/ada al to preséu d'Ubuntu."
1065−
1066−#~ msgid "Please select how you’d like to unlock your device."
1067−#~ msgstr "Esbilla cómo te prestaría desbloquiar el to preséu, por favor."
po/br.po+50−57
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2016-03-23 10:01+0000\n"
10"POT-Creation-Date: 2016-03-23 10:01+0000\n"
11−"PO-Revision-Date: 2016-02-22 12:29+0000\n"
11+"PO-Revision-Date: 2016-04-18 07:33+0000\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
13"Language-Team: Breton <br@li.org>\n"
13"Language-Team: Breton <br@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-03-24 06:07+0000\n"
18+"X-Launchpad-Export-Date: 2016-04-19 04:59+0000\n"
19−"X-Generator: Launchpad (build 17958)\n"
19+"X-Generator: Launchpad (build 17995)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -144,6 +144,8 @@ msgctxt ""
144"Re-dock means connect the device again to an external screen/mouse/keyboard"
144"Re-dock means connect the device again to an external screen/mouse/keyboard"
145msgid "Re-dock, save your work and close these apps to continue."
145msgid "Re-dock, save your work and close these apps to continue."
146msgstr ""
146msgstr ""
147+"Adkevreit ouzh ar savlec'h degemer, enrollot ho labour ha serrit an arloadoù-"
148+"mañ evit kenderc'hel."
147
149
148#: qml/Components/ModeSwitchWarningDialog.qml:63
150#: qml/Components/ModeSwitchWarningDialog.qml:63
149msgid "Or force close now (unsaved data will be lost)."
151msgid "Or force close now (unsaved data will be lost)."
@@ -191,7 +193,7 @@ msgstr ""
191
193
192#: qml/Dash/FiltersPopover.qml:69
194#: qml/Dash/FiltersPopover.qml:69
193msgid "Reset"
195msgid "Reset"
194−msgstr ""
196+msgstr "Adderaouekaat"
195
197
196#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
198#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
197msgid "See less"
199msgid "See less"
@@ -208,11 +210,11 @@ msgstr "Klask"
208
210
209#: qml/Dash/PageHeaderExtraPanel.qml:55
211#: qml/Dash/PageHeaderExtraPanel.qml:55
210msgid "Recent Searches"
212msgid "Recent Searches"
211−msgstr ""
213+msgstr "Enklaskoù graet nevez zo"
212
214
213#: qml/Dash/PageHeaderExtraPanel.qml:66
215#: qml/Dash/PageHeaderExtraPanel.qml:66
214msgid "Clear All"
216msgid "Clear All"
215−msgstr ""
217+msgstr "Diverkañ pep tra"
216
218
217#: qml/Dash/Previews/PreviewActionCombo.qml:35
219#: qml/Dash/Previews/PreviewActionCombo.qml:35
218msgid "More..."
220msgid "More..."
@@ -433,7 +435,7 @@ msgstr ""
433
435
434#: qml/Tutorial/TutorialBottom.qml:78
436#: qml/Tutorial/TutorialBottom.qml:78
435msgid "Swipe up to add a contact"
437msgid "Swipe up to add a contact"
436−msgstr ""
438+msgstr "Riklit d'an nec'h evit ouzhpennañ un darempred"
437
439
438#: qml/Tutorial/TutorialBottom.qml:80
440#: qml/Tutorial/TutorialBottom.qml:80
439msgid "Swipe up for favorite calculations"
441msgid "Swipe up for favorite calculations"
@@ -445,7 +447,7 @@ msgstr ""
445
447
446#: qml/Tutorial/TutorialBottom.qml:84
448#: qml/Tutorial/TutorialBottom.qml:84
447msgid "Swipe up to create a message"
449msgid "Swipe up to create a message"
448−msgstr ""
450+msgstr "Riklit d'an nec'h evit krouiñ ur gemennadenn"
449
451
450#: qml/Tutorial/TutorialBottom.qml:85
452#: qml/Tutorial/TutorialBottom.qml:85
451msgid "Swipe up to manage the app"
453msgid "Swipe up to manage the app"
@@ -482,7 +484,7 @@ msgstr "Distreiñ"
482
484
483#: qml/Wizard/Pages/10-welcome.qml:27
485#: qml/Wizard/Pages/10-welcome.qml:27
484msgid "Language"
486msgid "Language"
485−msgstr ""
487+msgstr "Yezh"
486
488
487#: qml/Wizard/Pages/10-welcome.qml:156 qml/Wizard/Pages/30-wifi.qml:206
489#: qml/Wizard/Pages/10-welcome.qml:156 qml/Wizard/Pages/30-wifi.qml:206
488#: qml/Wizard/Pages/40-location.qml:271 qml/Wizard/Pages/50-timezone.qml:267
490#: qml/Wizard/Pages/40-location.qml:271 qml/Wizard/Pages/50-timezone.qml:267
@@ -491,7 +493,7 @@ msgstr ""
491#: qml/Wizard/Pages/passcode-desktop.qml:124
493#: qml/Wizard/Pages/passcode-desktop.qml:124
492#: qml/Wizard/Pages/password-set.qml:141
494#: qml/Wizard/Pages/password-set.qml:141
493msgid "Next"
495msgid "Next"
494−msgstr ""
496+msgstr "War-lerc'h"
495
497
496#: qml/Wizard/Pages/30-wifi.qml:29
498#: qml/Wizard/Pages/30-wifi.qml:29
497msgid "Connect to Wi‑Fi"
499msgid "Connect to Wi‑Fi"
@@ -499,15 +501,15 @@ msgstr "Kevreañ ouzh ar Wi-Fi"
499
501
500#: qml/Wizard/Pages/30-wifi.qml:130
502#: qml/Wizard/Pages/30-wifi.qml:130
501msgid "Connected"
503msgid "Connected"
502−msgstr ""
504+msgstr "Kevreet"
503
505
504#: qml/Wizard/Pages/30-wifi.qml:163
506#: qml/Wizard/Pages/30-wifi.qml:163
505msgid "Available Wi-Fi networks"
507msgid "Available Wi-Fi networks"
506−msgstr ""
508+msgstr "Rouedadoù Wi-Fi da gaout"
507
509
508#: qml/Wizard/Pages/30-wifi.qml:164
510#: qml/Wizard/Pages/30-wifi.qml:164
509msgid "No available Wi-Fi networks"
511msgid "No available Wi-Fi networks"
510−msgstr ""
512+msgstr "N'eus ket rouedadoù Wi-Fi da gaout"
511
513
512#: qml/Wizard/Pages/30-wifi.qml:206 qml/Wizard/Pages/60-account.qml:65
514#: qml/Wizard/Pages/30-wifi.qml:206 qml/Wizard/Pages/60-account.qml:65
513#: qml/Wizard/Pages/sim.qml:101
515#: qml/Wizard/Pages/sim.qml:101
@@ -516,7 +518,7 @@ msgstr "Tremen hebiou"
516
518
517#: qml/Wizard/Pages/40-location.qml:27
519#: qml/Wizard/Pages/40-location.qml:27
518msgid "Location Services"
520msgid "Location Services"
519−msgstr ""
521+msgstr "Servijoù lec'hiañ"
520
522
521#: qml/Wizard/Pages/40-location.qml:83
523#: qml/Wizard/Pages/40-location.qml:83
522msgid ""
524msgid ""
@@ -532,15 +534,15 @@ msgstr ""
532#: qml/Wizard/Pages/40-location.qml:106
534#: qml/Wizard/Pages/40-location.qml:106
533msgctxt "part of: Nokia HERE terms and conditions"
535msgctxt "part of: Nokia HERE terms and conditions"
534msgid "terms and conditions"
536msgid "terms and conditions"
535−msgstr ""
537+msgstr "penndivizoù implij"
536
538
537#: qml/Wizard/Pages/40-location.qml:160
539#: qml/Wizard/Pages/40-location.qml:160
538msgid "GPS only"
540msgid "GPS only"
539−msgstr ""
541+msgstr "GPS hepken"
540
542
541#: qml/Wizard/Pages/40-location.qml:214
543#: qml/Wizard/Pages/40-location.qml:214
542msgid "Don't use my location"
544msgid "Don't use my location"
543−msgstr ""
545+msgstr "Arabat implijout ma lec'h"
544
546
545#: qml/Wizard/Pages/40-location.qml:260
547#: qml/Wizard/Pages/40-location.qml:260
546msgid "You can change it later in System Settings."
548msgid "You can change it later in System Settings."
@@ -548,15 +550,15 @@ msgstr ""
548
550
549#: qml/Wizard/Pages/50-timezone.qml:29
551#: qml/Wizard/Pages/50-timezone.qml:29
550msgid "Time Zone"
552msgid "Time Zone"
551−msgstr ""
553+msgstr "Gwerzhid-eur"
552
554
553#: qml/Wizard/Pages/50-timezone.qml:178
555#: qml/Wizard/Pages/50-timezone.qml:178
554msgid "Enter your city"
556msgid "Enter your city"
555−msgstr ""
557+msgstr "Skrivit ho kêr"
556
558
557#: qml/Wizard/Pages/60-account.qml:24
559#: qml/Wizard/Pages/60-account.qml:24
558msgid "Personalize Your Device"
560msgid "Personalize Your Device"
559−msgstr ""
561+msgstr "Personelaat ho penveg"
560
562
561#: qml/Wizard/Pages/60-account.qml:48
563#: qml/Wizard/Pages/60-account.qml:48
562msgid "Preferred Name"
564msgid "Preferred Name"
@@ -564,30 +566,30 @@ msgstr ""
564
566
565#: qml/Wizard/Pages/70-passwd-type.qml:39
567#: qml/Wizard/Pages/70-passwd-type.qml:39
566msgid "Lock Screen"
568msgid "Lock Screen"
567−msgstr ""
569+msgstr "Prennañ ar skramm"
568
570
569#: qml/Wizard/Pages/70-passwd-type.qml:101
571#: qml/Wizard/Pages/70-passwd-type.qml:101
570msgctxt "Label: Type of security method"
572msgctxt "Label: Type of security method"
571msgid "Create new password"
573msgid "Create new password"
572−msgstr ""
574+msgstr "Krouiñ ur ger-tremen nevez"
573
575
574#: qml/Wizard/Pages/70-passwd-type.qml:103
576#: qml/Wizard/Pages/70-passwd-type.qml:103
575msgctxt "Label: Type of security method"
577msgctxt "Label: Type of security method"
576msgid "Create passcode (numbers only)"
578msgid "Create passcode (numbers only)"
577−msgstr ""
579+msgstr "Krouiñ ur c'hod (difroù hepken)"
578
580
579#: qml/Wizard/Pages/70-passwd-type.qml:105
581#: qml/Wizard/Pages/70-passwd-type.qml:105
580msgctxt "Label: Type of security method"
582msgctxt "Label: Type of security method"
581msgid "No lock code"
583msgid "No lock code"
582−msgstr ""
584+msgstr "N'eus kod prennañ ebet"
583
585
584#: qml/Wizard/Pages/75-report-check.qml:26 qml/Wizard/Pages/here-terms.qml:108
586#: qml/Wizard/Pages/75-report-check.qml:26 qml/Wizard/Pages/here-terms.qml:108
585msgid "Privacy Policy"
587msgid "Privacy Policy"
586−msgstr ""
588+msgstr "Reolennoù prevezded"
587
589
588#: qml/Wizard/Pages/75-report-check.qml:26
590#: qml/Wizard/Pages/75-report-check.qml:26
589msgid "Help Us Improve"
591msgid "Help Us Improve"
590−msgstr ""
592+msgstr "Sikourit ac'hanomp da wellaat"
591
593
592#: qml/Wizard/Pages/75-report-check.qml:59
594#: qml/Wizard/Pages/75-report-check.qml:59
593msgid "Improve system performance by sending us crashes and error reports."
595msgid "Improve system performance by sending us crashes and error reports."
@@ -595,19 +597,19 @@ msgstr ""
595
597
596#: qml/Wizard/Pages/75-report-check.qml:60
598#: qml/Wizard/Pages/75-report-check.qml:60
597msgid "Privacy policy"
599msgid "Privacy policy"
598−msgstr ""
600+msgstr "Reolennoù buhez prevez"
599
601
600#: qml/Wizard/Pages/80-finished.qml:89
602#: qml/Wizard/Pages/80-finished.qml:89
601msgid "Welcome to Ubuntu"
603msgid "Welcome to Ubuntu"
602−msgstr ""
604+msgstr "Donemat en Ubuntu"
603
605
604#: qml/Wizard/Pages/80-finished.qml:104
606#: qml/Wizard/Pages/80-finished.qml:104
605msgid "You are ready to use your device now"
607msgid "You are ready to use your device now"
606−msgstr ""
608+msgstr "Bremañ oc'h prest da implijout ho penveg"
607
609
608#: qml/Wizard/Pages/80-finished.qml:124
610#: qml/Wizard/Pages/80-finished.qml:124
609msgid "Get Started"
611msgid "Get Started"
610−msgstr ""
612+msgstr "Kregiñ ganti"
611
613
612#: qml/Wizard/Pages/here-terms.qml:25
614#: qml/Wizard/Pages/here-terms.qml:25
613msgid "Terms & Conditions"
615msgid "Terms & Conditions"
@@ -637,7 +639,7 @@ msgstr ""
637
639
638#: qml/Wizard/Pages/here-terms.qml:107
640#: qml/Wizard/Pages/here-terms.qml:107
639msgid "Service Terms"
641msgid "Service Terms"
640−msgstr ""
642+msgstr "Divizoù servij"
641
643
642#: qml/Wizard/Pages/passcode-confirm.qml:43
644#: qml/Wizard/Pages/passcode-confirm.qml:43
643#: qml/Wizard/Pages/passcode-desktop.qml:80
645#: qml/Wizard/Pages/passcode-desktop.qml:80
@@ -646,16 +648,16 @@ msgstr "Kadarnaat ar c'hod-tremen"
646
648
647#: qml/Wizard/Pages/passcode-confirm.qml:45
649#: qml/Wizard/Pages/passcode-confirm.qml:45
648msgid "Incorrect passcode."
650msgid "Incorrect passcode."
649−msgstr ""
651+msgstr "Kod direizh"
650
652
651#: qml/Wizard/Pages/passcode-confirm.qml:45
653#: qml/Wizard/Pages/passcode-confirm.qml:45
652msgctxt "Enter the passcode again"
654msgctxt "Enter the passcode again"
653msgid "Please re-enter."
655msgid "Please re-enter."
654−msgstr ""
656+msgstr "Skrivit adarre, mar plij."
655
657
656#: qml/Wizard/Pages/passcode-desktop.qml:30
658#: qml/Wizard/Pages/passcode-desktop.qml:30
657msgid "Lock Screen Passcode"
659msgid "Lock Screen Passcode"
658−msgstr ""
660+msgstr "Kod da brennañ ar skramm"
659
661
660#: qml/Wizard/Pages/passcode-desktop.qml:56
662#: qml/Wizard/Pages/passcode-desktop.qml:56
661msgid "Enter 4 numbers to setup your passcode"
663msgid "Enter 4 numbers to setup your passcode"
@@ -664,11 +666,11 @@ msgstr ""
664#: qml/Wizard/Pages/passcode-desktop.qml:65
666#: qml/Wizard/Pages/passcode-desktop.qml:65
665#: qml/Wizard/Pages/passcode-set.qml:54
667#: qml/Wizard/Pages/passcode-set.qml:54
666msgid "Choose passcode"
668msgid "Choose passcode"
667−msgstr ""
669+msgstr "Choaz ur c'hod"
668
670
669#: qml/Wizard/Pages/passcode-desktop.qml:105
671#: qml/Wizard/Pages/passcode-desktop.qml:105
670msgid "Passcode too short"
672msgid "Passcode too short"
671−msgstr ""
673+msgstr "Kod re verr"
672
674
673#: qml/Wizard/Pages/passcode-desktop.qml:107
675#: qml/Wizard/Pages/passcode-desktop.qml:107
674msgid "Passcodes match"
676msgid "Passcodes match"
@@ -684,27 +686,27 @@ msgstr ""
684
686
685#: qml/Wizard/Pages/password-set.qml:30
687#: qml/Wizard/Pages/password-set.qml:30
686msgid "Lock Screen Password"
688msgid "Lock Screen Password"
687−msgstr ""
689+msgstr "Ger-tremen da brennañ ar skramm"
688
690
689#: qml/Wizard/Pages/password-set.qml:61
691#: qml/Wizard/Pages/password-set.qml:61
690msgid "Enter at least 8 characters"
692msgid "Enter at least 8 characters"
691−msgstr ""
693+msgstr "Skrivit 8 arouezenn da vihanañ"
692
694
693#: qml/Wizard/Pages/password-set.qml:73
695#: qml/Wizard/Pages/password-set.qml:73
694msgid "Choose password"
696msgid "Choose password"
695−msgstr ""
697+msgstr "Choaz ur ger-tremen"
696
698
697#: qml/Wizard/Pages/password-set.qml:103
699#: qml/Wizard/Pages/password-set.qml:103
698msgid "Confirm password"
700msgid "Confirm password"
699−msgstr ""
701+msgstr "Kadarnaat ar ger-tremen"
700
702
701#: qml/Wizard/Pages/sim.qml:27
703#: qml/Wizard/Pages/sim.qml:27
702msgid "No SIM card installed"
704msgid "No SIM card installed"
703−msgstr ""
705+msgstr "N'eus kartenn SIM ebet"
704
706
705#: qml/Wizard/Pages/sim.qml:54
707#: qml/Wizard/Pages/sim.qml:54
706msgid "SIM card added"
708msgid "SIM card added"
707−msgstr ""
709+msgstr "Lakaet ez eus bet ur gartenn SIM"
708
710
709#: qml/Wizard/Pages/sim.qml:55
711#: qml/Wizard/Pages/sim.qml:55
710msgid "You must restart the device to access the mobile network."
712msgid "You must restart the device to access the mobile network."
@@ -724,27 +726,27 @@ msgstr ""
724
726
725#: qml/Wizard/PasswordMeter.qml:87
727#: qml/Wizard/PasswordMeter.qml:87
726msgid "Passwords match"
728msgid "Passwords match"
727−msgstr ""
729+msgstr "Klotañ a ra ar gerioù-tremen an eil gant egile"
728
730
729#: qml/Wizard/PasswordMeter.qml:89
731#: qml/Wizard/PasswordMeter.qml:89
730msgid "Passwords do not match"
732msgid "Passwords do not match"
731−msgstr ""
733+msgstr "Ne glot ket ar gerioù-tremen"
732
734
733#: qml/Wizard/PasswordMeter.qml:93
735#: qml/Wizard/PasswordMeter.qml:93
734msgid "Strong password"
736msgid "Strong password"
735−msgstr ""
737+msgstr "Ger-tremen sur"
736
738
737#: qml/Wizard/PasswordMeter.qml:95
739#: qml/Wizard/PasswordMeter.qml:95
738msgid "Fair password"
740msgid "Fair password"
739−msgstr ""
741+msgstr "Ger-tremen reizh"
740
742
741#: qml/Wizard/PasswordMeter.qml:97
743#: qml/Wizard/PasswordMeter.qml:97
742msgid "Weak password"
744msgid "Weak password"
743−msgstr ""
745+msgstr "Ger-tremen diasur"
744
746
745#: qml/Wizard/PasswordMeter.qml:99
747#: qml/Wizard/PasswordMeter.qml:99
746msgid "Very weak password"
748msgid "Very weak password"
747−msgstr ""
749+msgstr "Ger-tremen diasur-kenañ"
748
750
749#~ msgid "Close"
751#~ msgid "Close"
750#~ msgstr "Serriñ"
752#~ msgstr "Serriñ"
@@ -1064,12 +1066,3 @@ msgstr ""
1064
1066
1065#~ msgid "Call back"
1067#~ msgid "Call back"
1066#~ msgstr "Gervel en-dro"
1068#~ msgstr "Gervel en-dro"
1067−
1068−#~ msgid "Welcome to your Ubuntu device."
1069−#~ msgstr "Donemat en ho penveg Ubuntu"
1070−
1071−#~ msgid "Please select how you’d like to unlock your device."
1072−#~ msgstr "Diuzit penaos e fell deoc'h dibrennañ ho penveg, mar plij."
1073−
1074−#~ msgid "Your device is now ready to use."
1075−#~ msgstr "Prest eo ho penveg da vezañ implijet bremañ."
po/sq.po+29−28
@@ -2,21 +2,22 @@
2# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
2# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
3# This file is distributed under the same license as the unity8 package.
3# This file is distributed under the same license as the unity8 package.
4# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
4# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
5−#
5+# Indrit Bashkimi <indrit.bashkimi@gmail.com>, 2016.
6msgid ""
6msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2016-03-23 10:01+0000\n"
10"POT-Creation-Date: 2016-03-23 10:01+0000\n"
11−"PO-Revision-Date: 2015-11-30 21:05+0000\n"
11+"PO-Revision-Date: 2016-04-21 06:03+0000\n"
12"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
12"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
13−"Language-Team: Albanian <sq@li.org>\n"
13+"Language-Team: sq\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-03-24 06:07+0000\n"
18+"X-Launchpad-Export-Date: 2016-04-22 05:39+0000\n"
19−"X-Generator: Launchpad (build 17958)\n"
19+"X-Generator: Launchpad (build 17995)\n"
20+"Language: sq\n"
20
21
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
23msgid "Password: "
@@ -180,11 +181,11 @@ msgstr "Shto në të preferuarit"
180
181
181#: qml/Dash/FiltersPopover.qml:60
182#: qml/Dash/FiltersPopover.qml:60
182msgid "Refine your results"
183msgid "Refine your results"
183−msgstr ""
184+msgstr "Përmirëso rezultatet"
184
185
185#: qml/Dash/FiltersPopover.qml:69
186#: qml/Dash/FiltersPopover.qml:69
186msgid "Reset"
187msgid "Reset"
187−msgstr ""
188+msgstr "Rivendos"
188
189
189#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
190#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
190msgid "See less"
191msgid "See less"
@@ -201,7 +202,7 @@ msgstr "Kërko"
201
202
202#: qml/Dash/PageHeaderExtraPanel.qml:55
203#: qml/Dash/PageHeaderExtraPanel.qml:55
203msgid "Recent Searches"
204msgid "Recent Searches"
204−msgstr ""
205+msgstr "Kërkimet e fundit"
205
206
206#: qml/Dash/PageHeaderExtraPanel.qml:66
207#: qml/Dash/PageHeaderExtraPanel.qml:66
207msgid "Clear All"
208msgid "Clear All"
@@ -209,11 +210,11 @@ msgstr ""
209
210
210#: qml/Dash/Previews/PreviewActionCombo.qml:35
211#: qml/Dash/Previews/PreviewActionCombo.qml:35
211msgid "More..."
212msgid "More..."
212−msgstr "Më Tepër..."
213+msgstr "Më tepër..."
213
214
214#: qml/Dash/Previews/PreviewActionCombo.qml:35
215#: qml/Dash/Previews/PreviewActionCombo.qml:35
215msgid "Less..."
216msgid "Less..."
216−msgstr "Më Pak..."
217+msgstr "Më pak..."
217
218
218#: qml/Dash/Previews/PreviewCommentInput.qml:68
219#: qml/Dash/Previews/PreviewCommentInput.qml:68
219#: qml/Dash/Previews/PreviewRatingInput.qml:174
220#: qml/Dash/Previews/PreviewRatingInput.qml:174
@@ -378,7 +379,7 @@ msgstr "Koha e mbetur: %1"
378
379
379#: qml/Panel/Indicators/MenuItemFactory.qml:910
380#: qml/Panel/Indicators/MenuItemFactory.qml:910
380msgid "In queue…"
381msgid "In queue…"
381−msgstr "Në pritje..."
382+msgstr "Në pritje…"
382
383
383#: qml/Panel/Indicators/MenuItemFactory.qml:914
384#: qml/Panel/Indicators/MenuItemFactory.qml:914
384msgid "Downloading"
385msgid "Downloading"
@@ -471,7 +472,7 @@ msgstr "Prapa"
471
472
472#: qml/Wizard/Pages/10-welcome.qml:27
473#: qml/Wizard/Pages/10-welcome.qml:27
473msgid "Language"
474msgid "Language"
474−msgstr ""
475+msgstr "Gjuha"
475
476
476#: qml/Wizard/Pages/10-welcome.qml:156 qml/Wizard/Pages/30-wifi.qml:206
477#: qml/Wizard/Pages/10-welcome.qml:156 qml/Wizard/Pages/30-wifi.qml:206
477#: qml/Wizard/Pages/40-location.qml:271 qml/Wizard/Pages/50-timezone.qml:267
478#: qml/Wizard/Pages/40-location.qml:271 qml/Wizard/Pages/50-timezone.qml:267
@@ -525,11 +526,11 @@ msgstr ""
525
526
526#: qml/Wizard/Pages/40-location.qml:160
527#: qml/Wizard/Pages/40-location.qml:160
527msgid "GPS only"
528msgid "GPS only"
528−msgstr ""
529+msgstr "vetëm GPS"
529
530
530#: qml/Wizard/Pages/40-location.qml:214
531#: qml/Wizard/Pages/40-location.qml:214
531msgid "Don't use my location"
532msgid "Don't use my location"
532−msgstr ""
533+msgstr "Mos përdor vendodhjen time"
533
534
534#: qml/Wizard/Pages/40-location.qml:260
535#: qml/Wizard/Pages/40-location.qml:260
535msgid "You can change it later in System Settings."
536msgid "You can change it later in System Settings."
@@ -549,7 +550,7 @@ msgstr ""
549
550
550#: qml/Wizard/Pages/60-account.qml:48
551#: qml/Wizard/Pages/60-account.qml:48
551msgid "Preferred Name"
552msgid "Preferred Name"
552−msgstr ""
553+msgstr "Emri i preferuar"
553
554
554#: qml/Wizard/Pages/70-passwd-type.qml:39
555#: qml/Wizard/Pages/70-passwd-type.qml:39
555msgid "Lock Screen"
556msgid "Lock Screen"
@@ -558,7 +559,7 @@ msgstr ""
558#: qml/Wizard/Pages/70-passwd-type.qml:101
559#: qml/Wizard/Pages/70-passwd-type.qml:101
559msgctxt "Label: Type of security method"
560msgctxt "Label: Type of security method"
560msgid "Create new password"
561msgid "Create new password"
561−msgstr ""
562+msgstr "Krijo fjalëkalim të ri"
562
563
563#: qml/Wizard/Pages/70-passwd-type.qml:103
564#: qml/Wizard/Pages/70-passwd-type.qml:103
564msgctxt "Label: Type of security method"
565msgctxt "Label: Type of security method"
@@ -588,11 +589,11 @@ msgstr ""
588
589
589#: qml/Wizard/Pages/80-finished.qml:89
590#: qml/Wizard/Pages/80-finished.qml:89
590msgid "Welcome to Ubuntu"
591msgid "Welcome to Ubuntu"
591−msgstr ""
592+msgstr "Mirëserdhe në Ubuntu"
592
593
593#: qml/Wizard/Pages/80-finished.qml:104
594#: qml/Wizard/Pages/80-finished.qml:104
594msgid "You are ready to use your device now"
595msgid "You are ready to use your device now"
595−msgstr ""
596+msgstr "Tani je gati për të përdorur pajisjen"
596
597
597#: qml/Wizard/Pages/80-finished.qml:124
598#: qml/Wizard/Pages/80-finished.qml:124
598msgid "Get Started"
599msgid "Get Started"
@@ -681,11 +682,11 @@ msgstr ""
681
682
682#: qml/Wizard/Pages/password-set.qml:73
683#: qml/Wizard/Pages/password-set.qml:73
683msgid "Choose password"
684msgid "Choose password"
684−msgstr ""
685+msgstr "Zgjidh fjalëkalimin"
685
686
686#: qml/Wizard/Pages/password-set.qml:103
687#: qml/Wizard/Pages/password-set.qml:103
687msgid "Confirm password"
688msgid "Confirm password"
688−msgstr ""
689+msgstr "Konfirmo fjalëkalimin"
689
690
690#: qml/Wizard/Pages/sim.qml:27
691#: qml/Wizard/Pages/sim.qml:27
691msgid "No SIM card installed"
692msgid "No SIM card installed"
@@ -693,7 +694,7 @@ msgstr ""
693
694
694#: qml/Wizard/Pages/sim.qml:54
695#: qml/Wizard/Pages/sim.qml:54
695msgid "SIM card added"
696msgid "SIM card added"
696−msgstr ""
697+msgstr "Skeda SIM u shtua"
697
698
698#: qml/Wizard/Pages/sim.qml:55
699#: qml/Wizard/Pages/sim.qml:55
699msgid "You must restart the device to access the mobile network."
700msgid "You must restart the device to access the mobile network."
@@ -705,7 +706,7 @@ msgstr ""
705
706
706#: qml/Wizard/Pages/sim.qml:78
707#: qml/Wizard/Pages/sim.qml:78
707msgid "You won’t be able to make calls or use text messaging without a SIM."
708msgid "You won’t be able to make calls or use text messaging without a SIM."
708−msgstr ""
709+msgstr "Nuk është e mundur të bëhen thirrje apo të përdoren SMS pa një SIM."
709
710
710#: qml/Wizard/Pages/sim.qml:90
711#: qml/Wizard/Pages/sim.qml:90
711msgid "To proceed with no SIM tap Skip."
712msgid "To proceed with no SIM tap Skip."
@@ -713,27 +714,27 @@ msgstr ""
713
714
714#: qml/Wizard/PasswordMeter.qml:87
715#: qml/Wizard/PasswordMeter.qml:87
715msgid "Passwords match"
716msgid "Passwords match"
716−msgstr ""
717+msgstr "Fjalëkalimet përputhen"
717
718
718#: qml/Wizard/PasswordMeter.qml:89
719#: qml/Wizard/PasswordMeter.qml:89
719msgid "Passwords do not match"
720msgid "Passwords do not match"
720−msgstr ""
721+msgstr "Fjalëkalimet nuk përputhen"
721
722
722#: qml/Wizard/PasswordMeter.qml:93
723#: qml/Wizard/PasswordMeter.qml:93
723msgid "Strong password"
724msgid "Strong password"
724−msgstr ""
725+msgstr "Fjalëkalim i fuqishëm"
725
726
726#: qml/Wizard/PasswordMeter.qml:95
727#: qml/Wizard/PasswordMeter.qml:95
727msgid "Fair password"
728msgid "Fair password"
728−msgstr ""
729+msgstr "Fjalëkalim çka"
729
730
730#: qml/Wizard/PasswordMeter.qml:97
731#: qml/Wizard/PasswordMeter.qml:97
731msgid "Weak password"
732msgid "Weak password"
732−msgstr ""
733+msgstr "Fjalëkalim i dobët"
733
734
734#: qml/Wizard/PasswordMeter.qml:99
735#: qml/Wizard/PasswordMeter.qml:99
735msgid "Very weak password"
736msgid "Very weak password"
736−msgstr ""
737+msgstr "Fjalëkalim shumë i dobët"
737
738
738#~ msgid "Top edge"
739#~ msgid "Top edge"
739#~ msgstr "Cepi i sipërm"
740#~ msgstr "Cepi i sipërm"
po/zh_CN.po+79−88
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2016-03-23 10:01+0000\n"
10"POT-Creation-Date: 2016-03-23 10:01+0000\n"
11−"PO-Revision-Date: 2015-07-27 10:26+0000\n"
11+"PO-Revision-Date: 2016-04-13 06:27+0000\n"
12−"Last-Translator: Ian Li <Unknown>\n"
12+"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-03-24 06:08+0000\n"
18+"X-Launchpad-Export-Date: 2016-04-14 06:22+0000\n"
19−"X-Generator: Launchpad (build 17958)\n"
19+"X-Generator: Launchpad (build 17990)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -138,7 +138,7 @@ msgstr "应用中可能有未保存数据:"
138msgctxt ""
138msgctxt ""
139"Re-dock means connect the device again to an external screen/mouse/keyboard"
139"Re-dock means connect the device again to an external screen/mouse/keyboard"
140msgid "Re-dock, save your work and close these apps to continue."
140msgid "Re-dock, save your work and close these apps to continue."
141−msgstr ""
141+msgstr "重新连接,保存你的工作并关闭这些应用并继续。"
142
142
143#: qml/Components/ModeSwitchWarningDialog.qml:63
143#: qml/Components/ModeSwitchWarningDialog.qml:63
144msgid "Or force close now (unsaved data will be lost)."
144msgid "Or force close now (unsaved data will be lost)."
@@ -181,11 +181,11 @@ msgstr "添加到收藏夹"
181
181
182#: qml/Dash/FiltersPopover.qml:60
182#: qml/Dash/FiltersPopover.qml:60
183msgid "Refine your results"
183msgid "Refine your results"
184−msgstr ""
184+msgstr "精进查找结果"
185
185
186#: qml/Dash/FiltersPopover.qml:69
186#: qml/Dash/FiltersPopover.qml:69
187msgid "Reset"
187msgid "Reset"
188−msgstr ""
188+msgstr "重置"
189
189
190#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
190#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191msgid "See less"
191msgid "See less"
@@ -202,11 +202,11 @@ msgstr "搜索"
202
202
203#: qml/Dash/PageHeaderExtraPanel.qml:55
203#: qml/Dash/PageHeaderExtraPanel.qml:55
204msgid "Recent Searches"
204msgid "Recent Searches"
205−msgstr ""
205+msgstr "近期搜索"
206
206
207#: qml/Dash/PageHeaderExtraPanel.qml:66
207#: qml/Dash/PageHeaderExtraPanel.qml:66
208msgid "Clear All"
208msgid "Clear All"
209−msgstr ""
209+msgstr "全部清除"
210
210
211#: qml/Dash/Previews/PreviewActionCombo.qml:35
211#: qml/Dash/Previews/PreviewActionCombo.qml:35
212msgid "More..."
212msgid "More..."
@@ -261,7 +261,7 @@ msgstr "已安装"
261msgid ""
261msgid ""
262"Your device is now connected to an external display. Use this screen as a "
262"Your device is now connected to an external display. Use this screen as a "
263"touch pad to interact with the pointer."
263"touch pad to interact with the pointer."
264−msgstr ""
264+msgstr "你的设备现在已经连接到一个外部显示。将这个屏幕当作一块触控板使用来与指针互动。"
265
265
266#: qml/Greeter/CoverPage.qml:118
266#: qml/Greeter/CoverPage.qml:118
267msgid "Unlock"
267msgid "Unlock"
@@ -416,51 +416,51 @@ msgstr "回电"
416
416
417#: qml/Stages/SideStage.qml:76
417#: qml/Stages/SideStage.qml:76
418msgid "Drag using 3 fingers any application from one window to the other"
418msgid "Drag using 3 fingers any application from one window to the other"
419−msgstr ""
419+msgstr "使用三指将任何应用从一个窗口拖拽至另一个"
420
420
421#: qml/Tutorial/TutorialBottom.qml:78
421#: qml/Tutorial/TutorialBottom.qml:78
422msgid "Swipe up to add a contact"
422msgid "Swipe up to add a contact"
423−msgstr ""
423+msgstr "向上划以添加联系人"
424
424
425#: qml/Tutorial/TutorialBottom.qml:80
425#: qml/Tutorial/TutorialBottom.qml:80
426msgid "Swipe up for favorite calculations"
426msgid "Swipe up for favorite calculations"
427−msgstr ""
427+msgstr "向上划打开常用计算"
428
428
429#: qml/Tutorial/TutorialBottom.qml:82
429#: qml/Tutorial/TutorialBottom.qml:82
430msgid "Swipe up for recent calls"
430msgid "Swipe up for recent calls"
431−msgstr ""
431+msgstr "向上划打开近期通话"
432
432
433#: qml/Tutorial/TutorialBottom.qml:84
433#: qml/Tutorial/TutorialBottom.qml:84
434msgid "Swipe up to create a message"
434msgid "Swipe up to create a message"
435−msgstr ""
435+msgstr "上滑创建一条信息"
436
436
437#: qml/Tutorial/TutorialBottom.qml:85
437#: qml/Tutorial/TutorialBottom.qml:85
438msgid "Swipe up to manage the app"
438msgid "Swipe up to manage the app"
439−msgstr ""
439+msgstr "上滑管理应用"
440
440
441#: qml/Tutorial/TutorialLeft.qml:47
441#: qml/Tutorial/TutorialLeft.qml:47
442msgid "Swipe from the left edge to open the launcher"
442msgid "Swipe from the left edge to open the launcher"
443−msgstr ""
443+msgstr "从左侧边缘滑动打开启动器"
444
444
445#: qml/Tutorial/TutorialLeftLong.qml:47
445#: qml/Tutorial/TutorialLeftLong.qml:47
446msgid "Long swipe from the left edge to open the Today scope"
446msgid "Long swipe from the left edge to open the Today scope"
447−msgstr ""
447+msgstr "从左侧边缘长距离滑动打开“今日”分类"
448
448
449#: qml/Tutorial/TutorialRight.qml:54
449#: qml/Tutorial/TutorialRight.qml:54
450msgid "Hover your mouse on the right edge to view your open apps"
450msgid "Hover your mouse on the right edge to view your open apps"
451−msgstr ""
451+msgstr "将鼠标悬停在右侧边缘查看打开的应用"
452
452
453#: qml/Tutorial/TutorialRight.qml:55
453#: qml/Tutorial/TutorialRight.qml:55
454msgid "Short or long swipe from the right edge to view your open apps"
454msgid "Short or long swipe from the right edge to view your open apps"
455−msgstr ""
455+msgstr "从右侧边缘短距离或长距离滑动查看打开的应用"
456
456
457#: qml/Tutorial/TutorialTop.qml:53
457#: qml/Tutorial/TutorialTop.qml:53
458msgid "Swipe from the top right edge to open the notification bar"
458msgid "Swipe from the top right edge to open the notification bar"
459−msgstr ""
459+msgstr "从顶部右侧边缘滑动打开通知栏"
460
460
461#: qml/Tutorial/TutorialTop.qml:54
461#: qml/Tutorial/TutorialTop.qml:54
462msgid "Swipe from the top edge to open the notification bar"
462msgid "Swipe from the top edge to open the notification bar"
463−msgstr ""
463+msgstr "从顶部滑动打开通知栏"
464
464
465#: qml/Wizard/Page.qml:54
465#: qml/Wizard/Page.qml:54
466msgctxt "Button: Go back one page in the Wizard"
466msgctxt "Button: Go back one page in the Wizard"
@@ -469,7 +469,7 @@ msgstr "上一步"
469
469
470#: qml/Wizard/Pages/10-welcome.qml:27
470#: qml/Wizard/Pages/10-welcome.qml:27
471msgid "Language"
471msgid "Language"
472−msgstr ""
472+msgstr "语言"
473
473
474#: qml/Wizard/Pages/10-welcome.qml:156 qml/Wizard/Pages/30-wifi.qml:206
474#: qml/Wizard/Pages/10-welcome.qml:156 qml/Wizard/Pages/30-wifi.qml:206
475#: qml/Wizard/Pages/40-location.qml:271 qml/Wizard/Pages/50-timezone.qml:267
475#: qml/Wizard/Pages/40-location.qml:271 qml/Wizard/Pages/50-timezone.qml:267
@@ -478,7 +478,7 @@ msgstr ""
478#: qml/Wizard/Pages/passcode-desktop.qml:124
478#: qml/Wizard/Pages/passcode-desktop.qml:124
479#: qml/Wizard/Pages/password-set.qml:141
479#: qml/Wizard/Pages/password-set.qml:141
480msgid "Next"
480msgid "Next"
481−msgstr ""
481+msgstr "下一步"
482
482
483#: qml/Wizard/Pages/30-wifi.qml:29
483#: qml/Wizard/Pages/30-wifi.qml:29
484msgid "Connect to Wi‑Fi"
484msgid "Connect to Wi‑Fi"
@@ -486,15 +486,15 @@ msgstr "连接 Wi-Fi"
486
486
487#: qml/Wizard/Pages/30-wifi.qml:130
487#: qml/Wizard/Pages/30-wifi.qml:130
488msgid "Connected"
488msgid "Connected"
489−msgstr ""
489+msgstr "已连接"
490
490
491#: qml/Wizard/Pages/30-wifi.qml:163
491#: qml/Wizard/Pages/30-wifi.qml:163
492msgid "Available Wi-Fi networks"
492msgid "Available Wi-Fi networks"
493−msgstr ""
493+msgstr "可用的 Wi-Fi 网络"
494
494
495#: qml/Wizard/Pages/30-wifi.qml:164
495#: qml/Wizard/Pages/30-wifi.qml:164
496msgid "No available Wi-Fi networks"
496msgid "No available Wi-Fi networks"
497−msgstr ""
497+msgstr "没有可用的 Wi-Fi 网络"
498
498
499#: qml/Wizard/Pages/30-wifi.qml:206 qml/Wizard/Pages/60-account.qml:65
499#: qml/Wizard/Pages/30-wifi.qml:206 qml/Wizard/Pages/60-account.qml:65
500#: qml/Wizard/Pages/sim.qml:101
500#: qml/Wizard/Pages/sim.qml:101
@@ -503,98 +503,98 @@ msgstr "跳过"
503
503
504#: qml/Wizard/Pages/40-location.qml:27
504#: qml/Wizard/Pages/40-location.qml:27
505msgid "Location Services"
505msgid "Location Services"
506−msgstr ""
506+msgstr "定位服务"
507
507
508#: qml/Wizard/Pages/40-location.qml:83
508#: qml/Wizard/Pages/40-location.qml:83
509msgid ""
509msgid ""
510"Use GPS, Wi-Fi hotspots and mobile network anonymously to detect location "
510"Use GPS, Wi-Fi hotspots and mobile network anonymously to detect location "
511"(recommended)"
511"(recommended)"
512−msgstr ""
512+msgstr "使用 GPS、Wi-Fi 热点和移动网络匿名检测位置(推荐)"
513
513
514#: qml/Wizard/Pages/40-location.qml:105
514#: qml/Wizard/Pages/40-location.qml:105
515#, qt-format
515#, qt-format
516msgid "By selecting this option you agree to the Nokia HERE %1."
516msgid "By selecting this option you agree to the Nokia HERE %1."
517−msgstr ""
517+msgstr "选择该选项同意 Nokia HERE %1。"
518
518
519#: qml/Wizard/Pages/40-location.qml:106
519#: qml/Wizard/Pages/40-location.qml:106
520msgctxt "part of: Nokia HERE terms and conditions"
520msgctxt "part of: Nokia HERE terms and conditions"
521msgid "terms and conditions"
521msgid "terms and conditions"
522−msgstr ""
522+msgstr "术语和条款"
523
523
524#: qml/Wizard/Pages/40-location.qml:160
524#: qml/Wizard/Pages/40-location.qml:160
525msgid "GPS only"
525msgid "GPS only"
526−msgstr ""
526+msgstr "仅 GPS"
527
527
528#: qml/Wizard/Pages/40-location.qml:214
528#: qml/Wizard/Pages/40-location.qml:214
529msgid "Don't use my location"
529msgid "Don't use my location"
530−msgstr ""
530+msgstr "不使用我的位置"
531
531
532#: qml/Wizard/Pages/40-location.qml:260
532#: qml/Wizard/Pages/40-location.qml:260
533msgid "You can change it later in System Settings."
533msgid "You can change it later in System Settings."
534−msgstr ""
534+msgstr "可以稍后在系统设置中更改。"
535
535
536#: qml/Wizard/Pages/50-timezone.qml:29
536#: qml/Wizard/Pages/50-timezone.qml:29
537msgid "Time Zone"
537msgid "Time Zone"
538−msgstr ""
538+msgstr "时区"
539
539
540#: qml/Wizard/Pages/50-timezone.qml:178
540#: qml/Wizard/Pages/50-timezone.qml:178
541msgid "Enter your city"
541msgid "Enter your city"
542−msgstr ""
542+msgstr "输入您的城市"
543
543
544#: qml/Wizard/Pages/60-account.qml:24
544#: qml/Wizard/Pages/60-account.qml:24
545msgid "Personalize Your Device"
545msgid "Personalize Your Device"
546−msgstr ""
546+msgstr "个性化您的设备"
547
547
548#: qml/Wizard/Pages/60-account.qml:48
548#: qml/Wizard/Pages/60-account.qml:48
549msgid "Preferred Name"
549msgid "Preferred Name"
550−msgstr ""
550+msgstr "首选名称"
551
551
552#: qml/Wizard/Pages/70-passwd-type.qml:39
552#: qml/Wizard/Pages/70-passwd-type.qml:39
553msgid "Lock Screen"
553msgid "Lock Screen"
554−msgstr ""
554+msgstr "锁屏"
555
555
556#: qml/Wizard/Pages/70-passwd-type.qml:101
556#: qml/Wizard/Pages/70-passwd-type.qml:101
557msgctxt "Label: Type of security method"
557msgctxt "Label: Type of security method"
558msgid "Create new password"
558msgid "Create new password"
559−msgstr ""
559+msgstr "创建新密码"
560
560
561#: qml/Wizard/Pages/70-passwd-type.qml:103
561#: qml/Wizard/Pages/70-passwd-type.qml:103
562msgctxt "Label: Type of security method"
562msgctxt "Label: Type of security method"
563msgid "Create passcode (numbers only)"
563msgid "Create passcode (numbers only)"
564−msgstr ""
564+msgstr "创建密码 (仅数字)"
565
565
566#: qml/Wizard/Pages/70-passwd-type.qml:105
566#: qml/Wizard/Pages/70-passwd-type.qml:105
567msgctxt "Label: Type of security method"
567msgctxt "Label: Type of security method"
568msgid "No lock code"
568msgid "No lock code"
569−msgstr ""
569+msgstr "无锁码"
570
570
571#: qml/Wizard/Pages/75-report-check.qml:26 qml/Wizard/Pages/here-terms.qml:108
571#: qml/Wizard/Pages/75-report-check.qml:26 qml/Wizard/Pages/here-terms.qml:108
572msgid "Privacy Policy"
572msgid "Privacy Policy"
573−msgstr ""
573+msgstr "隐私政策"
574
574
575#: qml/Wizard/Pages/75-report-check.qml:26
575#: qml/Wizard/Pages/75-report-check.qml:26
576msgid "Help Us Improve"
576msgid "Help Us Improve"
577−msgstr ""
577+msgstr "帮助我们改进"
578
578
579#: qml/Wizard/Pages/75-report-check.qml:59
579#: qml/Wizard/Pages/75-report-check.qml:59
580msgid "Improve system performance by sending us crashes and error reports."
580msgid "Improve system performance by sending us crashes and error reports."
581−msgstr ""
581+msgstr "向我们发送崩溃和错误报告来提高系统性能。"
582
582
583#: qml/Wizard/Pages/75-report-check.qml:60
583#: qml/Wizard/Pages/75-report-check.qml:60
584msgid "Privacy policy"
584msgid "Privacy policy"
585−msgstr ""
585+msgstr "隐私政策"
586
586
587#: qml/Wizard/Pages/80-finished.qml:89
587#: qml/Wizard/Pages/80-finished.qml:89
588msgid "Welcome to Ubuntu"
588msgid "Welcome to Ubuntu"
589−msgstr ""
589+msgstr "欢迎使用 Ubuntu"
590
590
591#: qml/Wizard/Pages/80-finished.qml:104
591#: qml/Wizard/Pages/80-finished.qml:104
592msgid "You are ready to use your device now"
592msgid "You are ready to use your device now"
593−msgstr ""
593+msgstr "现在可以使用您的设备了"
594
594
595#: qml/Wizard/Pages/80-finished.qml:124
595#: qml/Wizard/Pages/80-finished.qml:124
596msgid "Get Started"
596msgid "Get Started"
597−msgstr ""
597+msgstr "入门"
598
598
599#: qml/Wizard/Pages/here-terms.qml:25
599#: qml/Wizard/Pages/here-terms.qml:25
600msgid "Terms & Conditions"
600msgid "Terms & Conditions"
@@ -602,29 +602,29 @@ msgstr "条款与条件"
602
602
603#: qml/Wizard/Pages/here-terms.qml:69
603#: qml/Wizard/Pages/here-terms.qml:69
604msgid "Your device uses positioning technologies provided by HERE."
604msgid "Your device uses positioning technologies provided by HERE."
605−msgstr ""
605+msgstr "你的设备使用的定位技术由 HERE 提供。"
606
606
607#: qml/Wizard/Pages/here-terms.qml:81
607#: qml/Wizard/Pages/here-terms.qml:81
608msgid ""
608msgid ""
609"To provide you with positioning services and to improve their quality, HERE "
609"To provide you with positioning services and to improve their quality, HERE "
610"collects information about nearby cell towers and Wi-Fi hotspots around your "
610"collects information about nearby cell towers and Wi-Fi hotspots around your "
611"current location whenever your position is being found."
611"current location whenever your position is being found."
612−msgstr ""
612+msgstr "为提供定位服务并提高服务质量,每当你的位置被发现时,HERE会收集你周围的有关手机信号塔和 Wi-Fi 热点的信息。"
613
613
614#: qml/Wizard/Pages/here-terms.qml:93
614#: qml/Wizard/Pages/here-terms.qml:93
615msgid ""
615msgid ""
616"The information collected is used to analyze the service and to improve the "
616"The information collected is used to analyze the service and to improve the "
617"use of service, but not to identify you personally."
617"use of service, but not to identify you personally."
618−msgstr ""
618+msgstr "收集的信息用于分析服务和改进服务的使用,并不会识别你的身份。"
619
619
620#: qml/Wizard/Pages/here-terms.qml:106
620#: qml/Wizard/Pages/here-terms.qml:106
621#, qt-format
621#, qt-format
622msgid "By continuing, you agree to the HERE platform %1 and %2."
622msgid "By continuing, you agree to the HERE platform %1 and %2."
623−msgstr ""
623+msgstr "继续,你将同意 HERE 平台 %1 和 %2。"
624
624
625#: qml/Wizard/Pages/here-terms.qml:107
625#: qml/Wizard/Pages/here-terms.qml:107
626msgid "Service Terms"
626msgid "Service Terms"
627−msgstr ""
627+msgstr "服务条款"
628
628
629#: qml/Wizard/Pages/passcode-confirm.qml:43
629#: qml/Wizard/Pages/passcode-confirm.qml:43
630#: qml/Wizard/Pages/passcode-desktop.qml:80
630#: qml/Wizard/Pages/passcode-desktop.qml:80
@@ -633,105 +633,105 @@ msgstr "确认新密码"
633
633
634#: qml/Wizard/Pages/passcode-confirm.qml:45
634#: qml/Wizard/Pages/passcode-confirm.qml:45
635msgid "Incorrect passcode."
635msgid "Incorrect passcode."
636−msgstr ""
636+msgstr "不正确的密码。"
637
637
638#: qml/Wizard/Pages/passcode-confirm.qml:45
638#: qml/Wizard/Pages/passcode-confirm.qml:45
639msgctxt "Enter the passcode again"
639msgctxt "Enter the passcode again"
640msgid "Please re-enter."
640msgid "Please re-enter."
641−msgstr ""
641+msgstr "请重新输入。"
642
642
643#: qml/Wizard/Pages/passcode-desktop.qml:30
643#: qml/Wizard/Pages/passcode-desktop.qml:30
644msgid "Lock Screen Passcode"
644msgid "Lock Screen Passcode"
645−msgstr ""
645+msgstr "锁屏密码"
646
646
647#: qml/Wizard/Pages/passcode-desktop.qml:56
647#: qml/Wizard/Pages/passcode-desktop.qml:56
648msgid "Enter 4 numbers to setup your passcode"
648msgid "Enter 4 numbers to setup your passcode"
649−msgstr ""
649+msgstr "输入 4 个数字来设置你的密码"
650
650
651#: qml/Wizard/Pages/passcode-desktop.qml:65
651#: qml/Wizard/Pages/passcode-desktop.qml:65
652#: qml/Wizard/Pages/passcode-set.qml:54
652#: qml/Wizard/Pages/passcode-set.qml:54
653msgid "Choose passcode"
653msgid "Choose passcode"
654−msgstr ""
654+msgstr "选择密码"
655
655
656#: qml/Wizard/Pages/passcode-desktop.qml:105
656#: qml/Wizard/Pages/passcode-desktop.qml:105
657msgid "Passcode too short"
657msgid "Passcode too short"
658−msgstr ""
658+msgstr "密码太短"
659
659
660#: qml/Wizard/Pages/passcode-desktop.qml:107
660#: qml/Wizard/Pages/passcode-desktop.qml:107
661msgid "Passcodes match"
661msgid "Passcodes match"
662−msgstr ""
662+msgstr "密码匹配"
663
663
664#: qml/Wizard/Pages/passcode-desktop.qml:109
664#: qml/Wizard/Pages/passcode-desktop.qml:109
665msgid "Passcodes do not match"
665msgid "Passcodes do not match"
666−msgstr ""
666+msgstr "密码不匹配"
667
667
668#: qml/Wizard/Pages/passcode-set.qml:62
668#: qml/Wizard/Pages/passcode-set.qml:62
669msgid "Passcode must be 4 characters long"
669msgid "Passcode must be 4 characters long"
670−msgstr ""
670+msgstr "密码必须为 4 个字符长度"
671
671
672#: qml/Wizard/Pages/password-set.qml:30
672#: qml/Wizard/Pages/password-set.qml:30
673msgid "Lock Screen Password"
673msgid "Lock Screen Password"
674−msgstr ""
674+msgstr "锁屏密码"
675
675
676#: qml/Wizard/Pages/password-set.qml:61
676#: qml/Wizard/Pages/password-set.qml:61
677msgid "Enter at least 8 characters"
677msgid "Enter at least 8 characters"
678−msgstr ""
678+msgstr "输入至少8个字符"
679
679
680#: qml/Wizard/Pages/password-set.qml:73
680#: qml/Wizard/Pages/password-set.qml:73
681msgid "Choose password"
681msgid "Choose password"
682−msgstr ""
682+msgstr "设置密码"
683
683
684#: qml/Wizard/Pages/password-set.qml:103
684#: qml/Wizard/Pages/password-set.qml:103
685msgid "Confirm password"
685msgid "Confirm password"
686−msgstr ""
686+msgstr "确认密码"
687
687
688#: qml/Wizard/Pages/sim.qml:27
688#: qml/Wizard/Pages/sim.qml:27
689msgid "No SIM card installed"
689msgid "No SIM card installed"
690−msgstr ""
690+msgstr "没有安装 SIM 卡"
691
691
692#: qml/Wizard/Pages/sim.qml:54
692#: qml/Wizard/Pages/sim.qml:54
693msgid "SIM card added"
693msgid "SIM card added"
694−msgstr ""
694+msgstr "SIM 卡已添加"
695
695
696#: qml/Wizard/Pages/sim.qml:55
696#: qml/Wizard/Pages/sim.qml:55
697msgid "You must restart the device to access the mobile network."
697msgid "You must restart the device to access the mobile network."
698−msgstr ""
698+msgstr "你必须重启设备才能访问移动网络"
699
699
700#: qml/Wizard/Pages/sim.qml:59
700#: qml/Wizard/Pages/sim.qml:59
701msgid "Restart"
701msgid "Restart"
702−msgstr ""
702+msgstr "重启"
703
703
704#: qml/Wizard/Pages/sim.qml:78
704#: qml/Wizard/Pages/sim.qml:78
705msgid "You won’t be able to make calls or use text messaging without a SIM."
705msgid "You won’t be able to make calls or use text messaging without a SIM."
706−msgstr ""
706+msgstr "没有 SIM 卡你将不能拨打电话或使用短信。"
707
707
708#: qml/Wizard/Pages/sim.qml:90
708#: qml/Wizard/Pages/sim.qml:90
709msgid "To proceed with no SIM tap Skip."
709msgid "To proceed with no SIM tap Skip."
710−msgstr ""
710+msgstr "点击跳过继续无 SIM 卡"
711
711
712#: qml/Wizard/PasswordMeter.qml:87
712#: qml/Wizard/PasswordMeter.qml:87
713msgid "Passwords match"
713msgid "Passwords match"
714−msgstr ""
714+msgstr "密码匹配"
715
715
716#: qml/Wizard/PasswordMeter.qml:89
716#: qml/Wizard/PasswordMeter.qml:89
717msgid "Passwords do not match"
717msgid "Passwords do not match"
718−msgstr ""
718+msgstr "密码不匹配"
719
719
720#: qml/Wizard/PasswordMeter.qml:93
720#: qml/Wizard/PasswordMeter.qml:93
721msgid "Strong password"
721msgid "Strong password"
722−msgstr ""
722+msgstr "密码强度:强"
723
723
724#: qml/Wizard/PasswordMeter.qml:95
724#: qml/Wizard/PasswordMeter.qml:95
725msgid "Fair password"
725msgid "Fair password"
726−msgstr ""
726+msgstr "密码强度:合理"
727
727
728#: qml/Wizard/PasswordMeter.qml:97
728#: qml/Wizard/PasswordMeter.qml:97
729msgid "Weak password"
729msgid "Weak password"
730−msgstr ""
730+msgstr "密码强度:较弱"
731
731
732#: qml/Wizard/PasswordMeter.qml:99
732#: qml/Wizard/PasswordMeter.qml:99
733msgid "Very weak password"
733msgid "Very weak password"
734−msgstr ""
734+msgstr "密码强度:非常弱"
735
735
736#~ msgid "Confirm"
736#~ msgid "Confirm"
737#~ msgstr "确认"
737#~ msgstr "确认"
@@ -1018,12 +1018,3 @@ msgstr ""
1018
1018
1019#~ msgid "Call back"
1019#~ msgid "Call back"
1020#~ msgstr "回电"
1020#~ msgstr "回电"
1021−
1022−#~ msgid "Welcome to your Ubuntu device."
1023−#~ msgstr "欢迎使用您的Ubuntu设备。"
1024−
1025−#~ msgid "Please select how you’d like to unlock your device."
1026−#~ msgstr "请选择你偏好的设备解锁方式。"
1027−
1028−#~ msgid "Your device is now ready to use."
1029−#~ msgstr "您的设备已就绪。"
qml/OrientedShell.qml+27−12
@@ -57,9 +57,17 @@ Rectangle {
57 invertedPortrait: deviceConfiguration.invertedPortraitOrientation
57 invertedPortrait: deviceConfiguration.invertedPortraitOrientation
58 }
58 }
59 }
59 }
60− // to be overwritten by tests
60+
61+ GSettings {
62+ id: unity8Settings
61− property var unity8Settings: GSettings { schema.id: "com.canonical.Unity8" }
63+ schema.id: "com.canonical.Unity8"
64+ }
65+
66+ GSettings {
67+ id: oskSettings
68+ objectName: "oskSettings"
62− property var oskSettings: GSettings { schema.id: "com.canonical.keyboard.maliit" }
69+ schema.id: "com.canonical.keyboard.maliit"
70+ }
63
71
64 property int physicalOrientation: Screen.orientation
72 property int physicalOrientation: Screen.orientation
65 property bool orientationLocked: OrientationLock.enabled
73 property bool orientationLocked: OrientationLock.enabled
@@ -90,22 +98,26 @@ Rectangle {
90 }
98 }
91
99
92 readonly property int pointerInputDevices: miceModel.count + touchPadModel.count
100 readonly property int pointerInputDevices: miceModel.count + touchPadModel.count
93− onPointerInputDevicesChanged: {
101+ onPointerInputDevicesChanged: calculateUsageMode()
102+
103+ function calculateUsageMode() {
104+ if (unity8Settings.usageMode === undefined)
105+ return; // gsettings isn't loaded yet, we'll try again in Component.onCompleted
106+
94− console.log("Pointer input devices changed:", pointerInputDevices, "current mode:", root.unity8Settings.usageMode, "old device count", miceModel.oldCount + touchPadModel.oldCount)
107+ console.log("Pointer input devices changed:", pointerInputDevices, "current mode:", unity8Settings.usageMode, "old device count", miceModel.oldCount + touchPadModel.oldCount)
95− if (root.unity8Settings.usageMode === "Windowed") {
108+ if (unity8Settings.usageMode === "Windowed") {
96 if (pointerInputDevices === 0) {
109 if (pointerInputDevices === 0) {
97 // All pointer devices have been unplugged. Move to staged.
110 // All pointer devices have been unplugged. Move to staged.
98− root.unity8Settings.usageMode = "Staged";
111+ unity8Settings.usageMode = "Staged";
99 }
112 }
100 } else {
113 } else {
101− var longEdgeWidth = Math.max(root.width, root.height)
114+ if (Math.min(root.width, root.height) > units.gu(60)) {
102− if (longEdgeWidth > units.gu(90)){
103 if (pointerInputDevices > 0 && pointerInputDevices > miceModel.oldCount + touchPadModel.oldCount) {
115 if (pointerInputDevices > 0 && pointerInputDevices > miceModel.oldCount + touchPadModel.oldCount) {
104− root.unity8Settings.usageMode = "Windowed";
116+ unity8Settings.usageMode = "Windowed";
105 }
117 }
106 } else {
118 } else {
107 // Make sure we initialize to something sane
119 // Make sure we initialize to something sane
108− root.unity8Settings.usageMode = "Staged";
120+ unity8Settings.usageMode = "Staged";
109 }
121 }
110 }
122 }
111 miceModel.oldCount = miceModel.count;
123 miceModel.oldCount = miceModel.count;
@@ -154,6 +166,9 @@ Rectangle {
154 if (orientationLocked) {
166 if (orientationLocked) {
155 orientation = orientationLock.savedOrientation;
167 orientation = orientationLock.savedOrientation;
156 }
168 }
169+
170+ calculateUsageMode();
171+
157 // We need to manually update this on startup as the binding
172 // We need to manually update this on startup as the binding
158 // below doesn't seem to have any effect at that stage
173 // below doesn't seem to have any effect at that stage
159 oskSettings.disableHeight = !shell.oskEnabled || shell.usageScenario == "desktop"
174 oskSettings.disableHeight = !shell.oskEnabled || shell.usageScenario == "desktop"
@@ -248,7 +263,7 @@ Rectangle {
248 forceOSKEnabled
263 forceOSKEnabled
249
264
250 usageScenario: {
265 usageScenario: {
251− if (root.unity8Settings.usageMode === "Windowed") {
266+ if (unity8Settings.usageMode === "Windowed") {
252 return "desktop";
267 return "desktop";
253 } else {
268 } else {
254 if (deviceConfiguration.category === "phone") {
269 if (deviceConfiguration.category === "phone") {
qml/Shell.qml+1−1
@@ -109,7 +109,7 @@ Item {
109 // the greeter or launcher until we know whether the session is locked.
109 // the greeter or launcher until we know whether the session is locked.
110 enabled: greeter && !greeter.waiting
110 enabled: greeter && !greeter.waiting
111
111
112− property real edgeSize: units.gu(2)
112+ property real edgeSize: units.gu(settings.edgeDragWidth)
113
113
114 WallpaperResolver {
114 WallpaperResolver {
115 id: wallpaperResolver
115 id: wallpaperResolver
tests/mocks/GSettings.1.0/fake_gsettings.cpp+126−38
@@ -21,9 +21,11 @@
21GSettingsControllerQml* GSettingsControllerQml::s_controllerInstance = 0;
21GSettingsControllerQml* GSettingsControllerQml::s_controllerInstance = 0;
22
22
23GSettingsControllerQml::GSettingsControllerQml()
23GSettingsControllerQml::GSettingsControllerQml()
24+ : m_disableHeight(false)
24− : m_usageMode("Staged")
25+ , m_usageMode("Staged")
25 , m_autohideLauncher(false)
26 , m_autohideLauncher(false)
26 , m_launcherWidth(8)
27 , m_launcherWidth(8)
28+ , m_edgeDragWidth(2)
27{
29{
28}
30}
29
31
@@ -38,6 +40,19 @@ GSettingsControllerQml* GSettingsControllerQml::instance() {
38 return s_controllerInstance;
40 return s_controllerInstance;
39}
41}
40
42
43+bool GSettingsControllerQml::disableHeight() const
44+{
45+ return m_disableHeight;
46+}
47+
48+void GSettingsControllerQml::setDisableHeight(bool val)
49+{
50+ if (val != m_disableHeight) {
51+ m_disableHeight = val;
52+ Q_EMIT disableHeightChanged();
53+ }
54+}
55+
41QString GSettingsControllerQml::pictureUri() const
56QString GSettingsControllerQml::pictureUri() const
42{
57{
43 return m_pictureUri;
58 return m_pictureUri;
@@ -116,6 +131,19 @@ void GSettingsControllerQml::setLauncherWidth(int launcherWidth)
116 }
131 }
117}
132}
118
133
134+uint GSettingsControllerQml::edgeDragWidth() const
135+{
136+ return m_edgeDragWidth;
137+}
138+
139+void GSettingsControllerQml::setEdgeDragWidth(uint edgeDragWidth)
140+{
141+ if (m_edgeDragWidth != edgeDragWidth) {
142+ m_edgeDragWidth = edgeDragWidth;
143+ Q_EMIT edgeDragWidthChanged(edgeDragWidth);
144+ }
145+}
146+
119GSettingsSchemaQml::GSettingsSchemaQml(QObject *parent): QObject(parent) {
147GSettingsSchemaQml::GSettingsSchemaQml(QObject *parent): QObject(parent) {
120}
148}
121
149
@@ -146,9 +174,26 @@ void GSettingsSchemaQml::setPath(const QByteArray &path) {
146}
174}
147
175
148GSettingsQml::GSettingsQml(QObject *parent)
176GSettingsQml::GSettingsQml(QObject *parent)
149− : QObject(parent)
177+ : QObject(parent),
178+ m_valid(false)
150{
179{
151 m_schema = new GSettingsSchemaQml(this);
180 m_schema = new GSettingsSchemaQml(this);
181+}
182+
183+void GSettingsQml::classBegin()
184+{
185+}
186+
187+void GSettingsQml::componentComplete()
188+{
189+ // Emulate what the real GSettings module does, and only return undefined
190+ // values until we are completed loading.
191+ m_valid = true;
192+
193+ // FIXME: We should make this dynamic, instead of hard-coding all possible
194+ // properties in one object. We should create properties based on the schema.
195+ connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::disableHeightChanged,
196+ this, &GSettingsQml::disableHeightChanged);
152 connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::pictureUriChanged,
197 connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::pictureUriChanged,
153 this, &GSettingsQml::pictureUriChanged);
198 this, &GSettingsQml::pictureUriChanged);
154 connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::usageModeChanged,
199 connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::usageModeChanged,
@@ -161,104 +206,147 @@ GSettingsQml::GSettingsQml(QObject *parent)
161 this, &GSettingsQml::autohideLauncherChanged);
206 this, &GSettingsQml::autohideLauncherChanged);
162 connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::launcherWidthChanged,
207 connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::launcherWidthChanged,
163 this, &GSettingsQml::launcherWidthChanged);
208 this, &GSettingsQml::launcherWidthChanged);
209+ connect(GSettingsControllerQml::instance(), &GSettingsControllerQml::edgeDragWidthChanged,
210+ this, &GSettingsQml::edgeDragWidthChanged);
211+
212+ Q_EMIT disableHeightChanged();
213+ Q_EMIT pictureUriChanged();
214+ Q_EMIT usageModeChanged();
215+ Q_EMIT lockedOutTimeChanged();
216+ Q_EMIT lifecycleExemptAppidsChanged();
217+ Q_EMIT autohideLauncherChanged();
218+ Q_EMIT launcherWidthChanged();
219+ Q_EMIT edgeDragWidthChanged();
164}
220}
165
221
166GSettingsSchemaQml * GSettingsQml::schema() const {
222GSettingsSchemaQml * GSettingsQml::schema() const {
167 return m_schema;
223 return m_schema;
168}
224}
169
225
226+QVariant GSettingsQml::disableHeight() const
227+{
228+ if (m_valid && m_schema->id() == "com.canonical.keyboard.maliit") {
229+ return GSettingsControllerQml::instance()->disableHeight();
230+ } else {
231+ return QVariant();
232+ }
233+}
234+
235+void GSettingsQml::setDisableHeight(const QVariant &val)
236+{
237+ if (m_valid && m_schema->id() == "com.canonical.keyboard.maliit") {
238+ GSettingsControllerQml::instance()->setDisableHeight(val.toBool());
239+ }
240+}
241+
170−QString GSettingsQml::pictureUri() const
242+QVariant GSettingsQml::pictureUri() const
171{
243{
172− if (m_schema->id() == "org.gnome.desktop.background") {
244+ if (m_valid && m_schema->id() == "org.gnome.desktop.background") {
173 return GSettingsControllerQml::instance()->pictureUri();
245 return GSettingsControllerQml::instance()->pictureUri();
174 } else {
246 } else {
175− return "";
247+ return QVariant();
176 }
248 }
177}
249}
178
250
179−void GSettingsQml::setPictureUri(const QString &str)
251+void GSettingsQml::setPictureUri(const QVariant &str)
180{
252{
181− if (m_schema->id() == "org.gnome.desktop.background") {
253+ if (m_valid && m_schema->id() == "org.gnome.desktop.background") {
182− GSettingsControllerQml::instance()->setPictureUri(str);
254+ GSettingsControllerQml::instance()->setPictureUri(str.toString());
183 }
255 }
184}
256}
185
257
186−QString GSettingsQml::usageMode() const
258+QVariant GSettingsQml::usageMode() const
187{
259{
188− if (m_schema->id() == "com.canonical.Unity8") {
260+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
189 return GSettingsControllerQml::instance()->usageMode();
261 return GSettingsControllerQml::instance()->usageMode();
190 } else {
262 } else {
191− return "";
263+ return QVariant();
192 }
264 }
193}
265}
194
266
195−void GSettingsQml::setUsageMode(const QString &usageMode)
267+void GSettingsQml::setUsageMode(const QVariant &usageMode)
196{
268{
197− if (m_schema->id() == "com.canonical.Unity8") {
269+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
198− GSettingsControllerQml::instance()->setUsageMode(usageMode);
270+ GSettingsControllerQml::instance()->setUsageMode(usageMode.toString());
199 }
271 }
200}
272}
201
273
202−qint64 GSettingsQml::lockedOutTime() const
274+QVariant GSettingsQml::lockedOutTime() const
203{
275{
204− if (m_schema->id() == "com.canonical.Unity8.Greeter") {
276+ if (m_valid && m_schema->id() == "com.canonical.Unity8.Greeter") {
205 return GSettingsControllerQml::instance()->lockedOutTime();
277 return GSettingsControllerQml::instance()->lockedOutTime();
206 } else {
278 } else {
207− return 0;
279+ return QVariant();
208 }
280 }
209}
281}
210
282
211−void GSettingsQml::setLockedOutTime(qint64 timestamp)
283+void GSettingsQml::setLockedOutTime(const QVariant &timestamp)
212{
284{
213− if (m_schema->id() == "com.canonical.Unity8.Greeter") {
285+ if (m_valid && m_schema->id() == "com.canonical.Unity8.Greeter") {
214− GSettingsControllerQml::instance()->setLockedOutTime(timestamp);
286+ GSettingsControllerQml::instance()->setLockedOutTime(timestamp.value<qint64>());
215 }
287 }
216}
288}
217
289
218−QStringList GSettingsQml::lifecycleExemptAppids() const
290+QVariant GSettingsQml::lifecycleExemptAppids() const
219{
291{
220− if (m_schema->id() == "com.canonical.qtmir") {
292+ if (m_valid && m_schema->id() == "com.canonical.qtmir") {
221 return GSettingsControllerQml::instance()->lifecycleExemptAppids();
293 return GSettingsControllerQml::instance()->lifecycleExemptAppids();
222 } else {
294 } else {
223− return QStringList();
295+ return QVariant();
224 }
296 }
225}
297}
226
298
227−bool GSettingsQml::autohideLauncher() const
299+QVariant GSettingsQml::autohideLauncher() const
228{
300{
229− if (m_schema->id() == "com.canonical.Unity8") {
301+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
230 return GSettingsControllerQml::instance()->autohideLauncher();
302 return GSettingsControllerQml::instance()->autohideLauncher();
231 } else {
303 } else {
232− return false;
304+ return QVariant();
233 }
305 }
234}
306}
235
307
236−int GSettingsQml::launcherWidth() const
308+QVariant GSettingsQml::launcherWidth() const
237{
309{
238− if (m_schema->id() == "com.canonical.Unity8") {
310+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
239 return GSettingsControllerQml::instance()->launcherWidth();
311 return GSettingsControllerQml::instance()->launcherWidth();
240 } else {
312 } else {
241− return false;
313+ return QVariant();
314+ }
315+}
316+
317+QVariant GSettingsQml::edgeDragWidth() const
318+{
319+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
320+ return GSettingsControllerQml::instance()->edgeDragWidth();
321+ } else {
322+ return QVariant();
323+ }
324+}
325+
326+void GSettingsQml::setLifecycleExemptAppids(const QVariant &appIds)
327+{
328+ if (m_valid && m_schema->id() == "com.canonical.qtmir") {
329+ GSettingsControllerQml::instance()->setLifecycleExemptAppids(appIds.toStringList());
242 }
330 }
243}
331}
244
332
245−void GSettingsQml::setLifecycleExemptAppids(const QStringList &appIds)
333+void GSettingsQml::setAutohideLauncher(const QVariant &autohideLauncher)
246{
334{
247− if (m_schema->id() == "com.canonical.qtmir") {
335+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
248− GSettingsControllerQml::instance()->setLifecycleExemptAppids(appIds);
336+ GSettingsControllerQml::instance()->setAutohideLauncher(autohideLauncher.toBool());
249 }
337 }
250}
338}
251
339
252−void GSettingsQml::setAutohideLauncher(bool autohideLauncher)
340+void GSettingsQml::setLauncherWidth(const QVariant &launcherWidth)
253{
341{
254− if (m_schema->id() == "com.canonical.Unity8") {
342+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
255− GSettingsControllerQml::instance()->setAutohideLauncher(autohideLauncher);
343+ GSettingsControllerQml::instance()->setLauncherWidth(launcherWidth.toInt());
256 }
344 }
257}
345}
258
346
259−void GSettingsQml::setLauncherWidth(int launcherWidth)
347+void GSettingsQml::setEdgeDragWidth(const QVariant &edgeDragWidth)
260{
348{
261− if (m_schema->id() == "com.canonical.Unity8") {
349+ if (m_valid && m_schema->id() == "com.canonical.Unity8") {
262− GSettingsControllerQml::instance()->setLauncherWidth(launcherWidth);
350+ GSettingsControllerQml::instance()->setEdgeDragWidth(edgeDragWidth.toUInt());
263 }
351 }
264}
352}
tests/mocks/GSettings.1.0/fake_gsettings.h+51−26
@@ -19,7 +19,9 @@
19
19
20#include <QList>
20#include <QList>
21#include <QObject>
21#include <QObject>
22+#include <QQmlParserStatus>
22#include <QStringList>
23#include <QStringList>
24+#include <QVariant>
23
25
24class GSettingsSchemaQml: public QObject
26class GSettingsSchemaQml: public QObject
25{
27{
@@ -41,47 +43,60 @@ private:
41 QByteArray m_path;
43 QByteArray m_path;
42};
44};
43
45
44−class GSettingsQml: public QObject
46+class GSettingsQml: public QObject, public QQmlParserStatus
45{
47{
46 Q_OBJECT
48 Q_OBJECT
49+ Q_INTERFACES(QQmlParserStatus)
47
50
48 Q_PROPERTY(GSettingsSchemaQml* schema READ schema NOTIFY schemaChanged)
51 Q_PROPERTY(GSettingsSchemaQml* schema READ schema NOTIFY schemaChanged)
52+ Q_PROPERTY(QVariant disableHeight READ disableHeight WRITE setDisableHeight NOTIFY disableHeightChanged)
49− Q_PROPERTY(QString pictureUri READ pictureUri WRITE setPictureUri NOTIFY pictureUriChanged)
53+ Q_PROPERTY(QVariant pictureUri READ pictureUri WRITE setPictureUri NOTIFY pictureUriChanged)
50− Q_PROPERTY(QString usageMode READ usageMode WRITE setUsageMode NOTIFY usageModeChanged)
54+ Q_PROPERTY(QVariant usageMode READ usageMode WRITE setUsageMode NOTIFY usageModeChanged)
51− Q_PROPERTY(qint64 lockedOutTime READ lockedOutTime WRITE setLockedOutTime NOTIFY lockedOutTimeChanged)
55+ Q_PROPERTY(QVariant lockedOutTime READ lockedOutTime WRITE setLockedOutTime NOTIFY lockedOutTimeChanged)
52− Q_PROPERTY(QStringList lifecycleExemptAppids READ lifecycleExemptAppids WRITE setLifecycleExemptAppids NOTIFY lifecycleExemptAppidsChanged)
56+ Q_PROPERTY(QVariant lifecycleExemptAppids READ lifecycleExemptAppids WRITE setLifecycleExemptAppids NOTIFY lifecycleExemptAppidsChanged)
53− Q_PROPERTY(bool autohideLauncher READ autohideLauncher WRITE setAutohideLauncher NOTIFY autohideLauncherChanged)
57+ Q_PROPERTY(QVariant autohideLauncher READ autohideLauncher WRITE setAutohideLauncher NOTIFY autohideLauncherChanged)
54− Q_PROPERTY(int launcherWidth READ launcherWidth WRITE setLauncherWidth NOTIFY launcherWidthChanged)
58+ Q_PROPERTY(QVariant launcherWidth READ launcherWidth WRITE setLauncherWidth NOTIFY launcherWidthChanged)
59+ Q_PROPERTY(QVariant edgeDragWidth READ edgeDragWidth WRITE setEdgeDragWidth NOTIFY edgeDragWidthChanged)
55
60
56public:
61public:
57 GSettingsQml(QObject *parent = nullptr);
62 GSettingsQml(QObject *parent = nullptr);
58
63
59− GSettingsSchemaQml * schema() const;
64+ void classBegin();
60− QString pictureUri() const;
65+ void componentComplete();
61− QString usageMode() const;
62− qint64 lockedOutTime() const;
63− QStringList lifecycleExemptAppids() const;
64− bool autohideLauncher() const;
65− int launcherWidth() const;
66
66
67+ GSettingsSchemaQml * schema() const;
68+ QVariant disableHeight() const;
69+ QVariant pictureUri() const;
70+ QVariant usageMode() const;
71+ QVariant lockedOutTime() const;
72+ QVariant lifecycleExemptAppids() const;
73+ QVariant autohideLauncher() const;
74+ QVariant launcherWidth() const;
75+ QVariant edgeDragWidth() const;
76+
77+ void setDisableHeight(const QVariant &val);
67− void setPictureUri(const QString &str);
78+ void setPictureUri(const QVariant &str);
68− void setUsageMode(const QString &usageMode);
79+ void setUsageMode(const QVariant &usageMode);
69− void setLockedOutTime(qint64 timestamp);
80+ void setLockedOutTime(const QVariant &timestamp);
70− void setLifecycleExemptAppids(const QStringList &appIds);
81+ void setLifecycleExemptAppids(const QVariant &appIds);
71− void setAutohideLauncher(bool autohideLauncher);
82+ void setAutohideLauncher(const QVariant &autohideLauncher);
72− void setLauncherWidth(int launcherWidth);
83+ void setLauncherWidth(const QVariant &launcherWidth);
84+ void setEdgeDragWidth(const QVariant &edgeDragWidth);
73
85
74Q_SIGNALS:
86Q_SIGNALS:
87+ void disableHeightChanged();
75 void schemaChanged();
88 void schemaChanged();
76− void pictureUriChanged(const QString&);
89+ void pictureUriChanged();
77− void usageModeChanged(const QString&);
90+ void usageModeChanged();
78− void lockedOutTimeChanged(qint64);
91+ void lockedOutTimeChanged();
79− void lifecycleExemptAppidsChanged(const QStringList &);
92+ void lifecycleExemptAppidsChanged();
80− void autohideLauncherChanged(bool);
93+ void autohideLauncherChanged();
81− void launcherWidthChanged(int launcherWidth);
94+ void launcherWidthChanged();
95+ void edgeDragWidthChanged();
82
96
83private:
97private:
84 GSettingsSchemaQml* m_schema;
98 GSettingsSchemaQml* m_schema;
99+ bool m_valid;
85
100
86 friend class GSettingsSchemaQml;
101 friend class GSettingsSchemaQml;
87};
102};
@@ -94,6 +109,9 @@ public:
94 static GSettingsControllerQml* instance();
109 static GSettingsControllerQml* instance();
95 ~GSettingsControllerQml();
110 ~GSettingsControllerQml();
96
111
112+ bool disableHeight() const;
113+ Q_INVOKABLE void setDisableHeight(bool val);
114+
97 QString pictureUri() const;
115 QString pictureUri() const;
98 Q_INVOKABLE void setPictureUri(const QString &str);
116 Q_INVOKABLE void setPictureUri(const QString &str);
99
117
@@ -112,23 +130,30 @@ public:
112 int launcherWidth() const;
130 int launcherWidth() const;
113 Q_INVOKABLE void setLauncherWidth(int launcherWidth);
131 Q_INVOKABLE void setLauncherWidth(int launcherWidth);
114
132
133+ uint edgeDragWidth() const;
134+ Q_INVOKABLE void setEdgeDragWidth(uint edgeDragWidth);
135+
115Q_SIGNALS:
136Q_SIGNALS:
137+ void disableHeightChanged();
116 void pictureUriChanged(const QString&);
138 void pictureUriChanged(const QString&);
117 void usageModeChanged(const QString&);
139 void usageModeChanged(const QString&);
118 void lockedOutTimeChanged(qint64 timestamp);
140 void lockedOutTimeChanged(qint64 timestamp);
119 void lifecycleExemptAppidsChanged(const QStringList&);
141 void lifecycleExemptAppidsChanged(const QStringList&);
120 void autohideLauncherChanged(bool autohideLauncher);
142 void autohideLauncherChanged(bool autohideLauncher);
121 void launcherWidthChanged(int launcherWidth);
143 void launcherWidthChanged(int launcherWidth);
144+ void edgeDragWidthChanged(uint edgeDragWidth);
122
145
123private:
146private:
124 GSettingsControllerQml();
147 GSettingsControllerQml();
125
148
149+ bool m_disableHeight;
126 QString m_pictureUri;
150 QString m_pictureUri;
127 QString m_usageMode;
151 QString m_usageMode;
128 qint64 m_lockedOutTime;
152 qint64 m_lockedOutTime;
129 QStringList m_lifecycleExemptAppids;
153 QStringList m_lifecycleExemptAppids;
130 bool m_autohideLauncher;
154 bool m_autohideLauncher;
131 int m_launcherWidth;
155 int m_launcherWidth;
156+ uint m_edgeDragWidth;
132
157
133 static GSettingsControllerQml* s_controllerInstance;
158 static GSettingsControllerQml* s_controllerInstance;
134 QList<GSettingsQml *> m_registeredGSettings;
159 QList<GSettingsQml *> m_registeredGSettings;
tests/qmltests/tst_OrientedShell.qml+32−22
@@ -17,6 +17,7 @@
17import QtQuick 2.4
17import QtQuick 2.4
18import QtQuick.Layouts 1.1
18import QtQuick.Layouts 1.1
19import QtTest 1.0
19import QtTest 1.0
20+import GSettings 1.0
20import Ubuntu.Components 1.3
21import Ubuntu.Components 1.3
21import Ubuntu.Components.ListItems 1.3 as ListItem
22import Ubuntu.Components.ListItems 1.3 as ListItem
22import Unity.Application 0.1
23import Unity.Application 0.1
@@ -44,18 +45,17 @@ Rectangle {
44 property int savedOrientation
45 property int savedOrientation
45 }
46 }
46
47
47− QtObject {
48+ GSettings {
48− id: mockUnity8Settings
49+ id: unity8Settings
49− property string usageMode: usageModeSelector.model[usageModeSelector.selectedIndex]
50+ schema.id: "com.canonical.Unity8"
50 onUsageModeChanged: {
51 onUsageModeChanged: {
51 usageModeSelector.selectedIndex = usageModeSelector.model.indexOf(usageMode)
52 usageModeSelector.selectedIndex = usageModeSelector.model.indexOf(usageMode)
52 }
53 }
53 }
54 }
54
55
55− QtObject{
56+ GSettings {
56− id: mockOskSettings
57+ id: oskSettings
57− property bool stayHidden: false
58+ schema.id: "com.canonical.keyboard.maliit"
58− property bool disableHeight: false
59 }
59 }
60
60
61 InputDeviceModel {
61 InputDeviceModel {
@@ -100,7 +100,7 @@ Rectangle {
100 PropertyChanges {
100 PropertyChanges {
101 target: orientedShellLoader
101 target: orientedShellLoader
102 width: units.gu(160)
102 width: units.gu(160)
103− height: units.gu(100)
103+ height: units.gu(60)
104 }
104 }
105 PropertyChanges {
105 PropertyChanges {
106 target: root
106 target: root
@@ -115,7 +115,7 @@ Rectangle {
115 name: "flo"
115 name: "flo"
116 PropertyChanges {
116 PropertyChanges {
117 target: orientedShellLoader
117 target: orientedShellLoader
118− width: units.gu(62)
118+ width: units.gu(60)
119 height: units.gu(100)
119 height: units.gu(100)
120 }
120 }
121 PropertyChanges {
121 PropertyChanges {
@@ -132,7 +132,7 @@ Rectangle {
132 PropertyChanges {
132 PropertyChanges {
133 target: orientedShellLoader
133 target: orientedShellLoader
134 width: units.gu(100)
134 width: units.gu(100)
135− height: units.gu(56)
135+ height: units.gu(65)
136 }
136 }
137 PropertyChanges {
137 PropertyChanges {
138 target: root
138 target: root
@@ -157,8 +157,6 @@ Rectangle {
157 sourceComponent: Component {
157 sourceComponent: Component {
158 OrientedShell {
158 OrientedShell {
159 anchors.fill: parent
159 anchors.fill: parent
160− unity8Settings: mockUnity8Settings
161− oskSettings: mockOskSettings
162 physicalOrientation: root.physicalOrientation0
160 physicalOrientation: root.physicalOrientation0
163 orientationLocked: orientationLockedCheckBox.checked
161 orientationLocked: orientationLockedCheckBox.checked
164 orientationLock: mockOrientationLock
162 orientationLock: mockOrientationLock
@@ -311,7 +309,7 @@ Rectangle {
311 function selectWindowed() {selectedIndex = 1;}
309 function selectWindowed() {selectedIndex = 1;}
312 function selectAutomatic() {selectedIndex = 2;}
310 function selectAutomatic() {selectedIndex = 2;}
313 onSelectedIndexChanged: {
311 onSelectedIndexChanged: {
314− mockUnity8Settings.usageMode = usageModeSelector.model[usageModeSelector.selectedIndex]
312+ GSettingsController.setUsageMode(usageModeSelector.model[usageModeSelector.selectedIndex]);
315 }
313 }
316 }
314 }
317 MouseTouchEmulationCheckbox {
315 MouseTouchEmulationCheckbox {
@@ -472,6 +470,13 @@ Rectangle {
472 // kill all (fake) running apps
470 // kill all (fake) running apps
473 killApps();
471 killApps();
474
472
473+ while (miceModel.count > 0)
474+ MockInputDeviceBackend.removeDevice("/mouse" + (miceModel.count - 1));
475+ while (touchpadModel.count > 0)
476+ MockInputDeviceBackend.removeDevice("/touchpad" + (touchpadModel.count - 1));
477+ while (keyboardsModel.count > 0)
478+ MockInputDeviceBackend.removeDevice("/kbd" + (keyboardsModel.count - 1))
479+
475 spreadRepeaterConnections.target = null;
480 spreadRepeaterConnections.target = null;
476 spreadRepeaterConnections.itemAddedCallback = null;
481 spreadRepeaterConnections.itemAddedCallback = null;
477 signalSpy.target = null;
482 signalSpy.target = null;
@@ -1081,7 +1086,7 @@ Rectangle {
1081
1086
1082 tryCompare(shell, "usageScenario", "phone");
1087 tryCompare(shell, "usageScenario", "phone");
1083 tryCompare(inputMethod, "enabled", true);
1088 tryCompare(inputMethod, "enabled", true);
1084− tryCompare(mockOskSettings, "disableHeight", false);
1089+ tryCompare(oskSettings, "disableHeight", false);
1085
1090
1086 if (data.kbd) {
1091 if (data.kbd) {
1087 MockInputDeviceBackend.addMockDevice("/kbd0", InputInfo.Keyboard);
1092 MockInputDeviceBackend.addMockDevice("/kbd0", InputInfo.Keyboard);
@@ -1092,14 +1097,7 @@ Rectangle {
1092
1097
1093 tryCompare(shell, "usageScenario", data.expectedMode);
1098 tryCompare(shell, "usageScenario", data.expectedMode);
1094 tryCompare(inputMethod, "enabled", data.oskExpected);
1099 tryCompare(inputMethod, "enabled", data.oskExpected);
1095− tryCompare(mockOskSettings, "disableHeight", data.expectedMode == "desktop" || data.kbd);
1100+ tryCompare(oskSettings, "disableHeight", data.expectedMode == "desktop" || data.kbd);
1096−
1097− if (data.kbd) {
1098− MockInputDeviceBackend.removeDevice("/kbd0");
1099− }
1100− if (data.mouse) {
1101− MockInputDeviceBackend.removeDevice("/mouse0");
1102− }
1103
1101
1104 // Restore width
1102 // Restore width
1105 orientedShellLoader.width = oldWidth;
1103 orientedShellLoader.width = oldWidth;
@@ -1140,6 +1138,18 @@ Rectangle {
1140 orientedShellLoader.width = oldWidth;
1138 orientedShellLoader.width = oldWidth;
1141 }
1139 }
1142
1140
1141+ function test_setsUsageModeOnStartup() {
1142+ // Prepare inconsistent beginning (mouse & staged mode)
1143+ MockInputDeviceBackend.addMockDevice("/mouse0", InputInfo.Mouse);
1144+ usageModeSelector.selectStaged();
1145+ compare(unity8Settings.usageMode, "Staged");
1146+
1147+ // Load shell, and have it pick desktop
1148+ loadShell("desktop");
1149+ compare(shell.usageScenario, "desktop");
1150+ compare(unity8Settings.usageMode, "Windowed");
1151+ }
1152+
1143 function test_overrideWindowed() {
1153 function test_overrideWindowed() {
1144 loadShell("mako")
1154 loadShell("mako")
1145
1155