on xenial help sign in
Merge latest trunk
commita96fa777da69548af7d2ebb24428d4156b047c6c authorDaniel van Vugt <daniel.van.vugt@canonical.com> dateThu 31 Mar 2016, 11:15 (11 years ago) parent0da682d58a5a1f
19 files changed+285−129
debian/changelog+20 plugins/AccountsService/AccountsServiceDBusAdaptor.cpp+12−2 po/nb.po+84−81 po/pl.po+3−11 qml/Components/Lockscreen.qml+2−2 qml/Greeter/Greeter.qml+1−1 qml/Stages/DesktopStage.qml+3 qml/Tutorial/TutorialRight.qml+2−1 tests/plugins/AccountsService/CMakeLists.txt+2−1 tests/plugins/AccountsService/PropertiesServer.cpp+36−7 tests/plugins/AccountsService/PropertiesServer.h+7 tests/plugins/AccountsService/client.cpp+46−12 tests/plugins/AccountsService/interfaces.xml+13 tests/plugins/AccountsService/types.h+25 tests/plugins/IntegratedLightDM/integrated.cpp+5−8 tests/qmltests/Greeter/tst_Greeter.qml+1 tests/qmltests/Greeter/tst_NarrowView.qml+3−1 tests/qmltests/Tutorial/tst_Tutorial.qml+17−1 tests/qmltests/tst_Shell.qml+3−1
debian/changelog+20
@@ -1,3 +1,23 @@
1+unity8 (8.12+16.04.20160330-0ubuntu1) xenial; urgency=medium
2+
3+ [ Albert Astals Cid ]
4+ * Use tutorialLeftLoader instead of tutorialLeft
5+
6+ [ CI Train Bot ]
7+ * Update translation template
8+
9+ [ Lukáš Tinkl ]
10+ * Fix the last chance popup colors/theme
11+
12+ [ Michael Terry ]
13+ * Adjust text for desktop right edge tutorial to be accurate. (LP:
14+ #1563103)
15+ * Fix OOBE wizard not setting your name. (LP: #1562872)
16+ * Fix showing "Retry" in password prompt when turning on screen in
17+ tablet mode.
18+
19+ -- Michał Sawicz <michal.sawicz@canonical.com> Wed, 30 Mar 2016 07:46:51 +0000
20+
121unity8 (8.12+16.04.20160323.2-0ubuntu1) xenial; urgency=medium
222
323 [ Michael Terry ]
plugins/AccountsService/AccountsServiceDBusAdaptor.cpp+12−2
@@ -57,8 +57,18 @@ QDBusPendingCall AccountsServiceDBusAdaptor::setUserPropertyAsync(const QString
5757{
5858 QDBusInterface *iface = getUserInterface(user);
5959 if (iface != nullptr && iface->isValid()) {
60− // The value needs to be carefully wrapped
61− return iface->asyncCall(QStringLiteral("Set"), interface, property, QVariant::fromValue(QDBusVariant(value)));
60+ if (interface == QStringLiteral("org.freedesktop.Accounts.User")) {
61+ // Standard AccountsService properties use special set methods.
62+ // It will not let you use the usual DBus property setters.
63+ QDBusInterface accountsIface(iface->service(),
64+ iface->path(),
65+ interface,
66+ iface->connection());
67+ return accountsIface.asyncCall(QStringLiteral("Set") + property, value);
68+ } else {
69+ // The value needs to be carefully wrapped
70+ return iface->asyncCall(QStringLiteral("Set"), interface, property, QVariant::fromValue(QDBusVariant(value)));
71+ }
6272 }
6373 return QDBusPendingCall::fromCompletedCall(QDBusMessage::createError(QDBusError::Other, QStringLiteral("Invalid Interface")));
6474}
po/nb.po+84−81
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2016-03-23 10:01+0000\n"
11−"PO-Revision-Date: 2015-07-05 19:44+0000\n"
12−"Last-Translator: Mathias Bynke <Unknown>\n"
11+"PO-Revision-Date: 2016-03-29 08:56+0000\n"
12+"Last-Translator: Åka Sikrom <Unknown>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-03-24 06:08+0000\n"
19−"X-Generator: Launchpad (build 17958)\n"
18+"X-Launchpad-Export-Date: 2016-03-30 06:25+0000\n"
19+"X-Generator: Launchpad (build 17967)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -142,6 +142,8 @@ msgctxt ""
142142"Re-dock means connect the device again to an external screen/mouse/keyboard"
143143msgid "Re-dock, save your work and close these apps to continue."
144144msgstr ""
145+"Koble enheten til strøm, lagre arbeidet ditt og lukk disse programmene for å "
146+"fortsette."
145147
146148#: qml/Components/ModeSwitchWarningDialog.qml:63
147149msgid "Or force close now (unsaved data will be lost)."
@@ -184,11 +186,11 @@ msgstr "Legg til i favoritter"
184186
185187#: qml/Dash/FiltersPopover.qml:60
186188msgid "Refine your results"
187−msgstr ""
189+msgstr "Filtrer søketreff"
188190
189191#: qml/Dash/FiltersPopover.qml:69
190192msgid "Reset"
191−msgstr ""
193+msgstr "Tilbakestill"
192194
193195#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
194196msgid "See less"
@@ -205,11 +207,11 @@ msgstr "Søk"
205207
206208#: qml/Dash/PageHeaderExtraPanel.qml:55
207209msgid "Recent Searches"
208−msgstr ""
210+msgstr "Nylige søk"
209211
210212#: qml/Dash/PageHeaderExtraPanel.qml:66
211213msgid "Clear All"
212−msgstr ""
214+msgstr "Tøm alt"
213215
214216#: qml/Dash/Previews/PreviewActionCombo.qml:35
215217msgid "More..."
@@ -265,6 +267,8 @@ msgid ""
265267"Your device is now connected to an external display. Use this screen as a "
266268"touch pad to interact with the pointer."
267269msgstr ""
270+"Enheten er nå koblet til en ekstern skjerm. Bruk denne skjermen som en "
271+"pekeplate for å styre pekeren."
268272
269273#: qml/Greeter/CoverPage.qml:118
270274msgid "Unlock"
@@ -426,51 +430,51 @@ msgstr "Ring tilbake"
426430
427431#: qml/Stages/SideStage.qml:76
428432msgid "Drag using 3 fingers any application from one window to the other"
429−msgstr ""
433+msgstr "Dra et program fra et vindu til et annet med 3 fingre"
430434
431435#: qml/Tutorial/TutorialBottom.qml:78
432436msgid "Swipe up to add a contact"
433−msgstr ""
437+msgstr "Dra opp for å legge til en kontakt"
434438
435439#: qml/Tutorial/TutorialBottom.qml:80
436440msgid "Swipe up for favorite calculations"
437−msgstr ""
441+msgstr "Dra opp for å se favoritt-utregninger"
438442
439443#: qml/Tutorial/TutorialBottom.qml:82
440444msgid "Swipe up for recent calls"
441−msgstr ""
445+msgstr "Dra opp for å se nylige anrop"
442446
443447#: qml/Tutorial/TutorialBottom.qml:84
444448msgid "Swipe up to create a message"
445−msgstr ""
449+msgstr "Dra opp for å lage en melding"
446450
447451#: qml/Tutorial/TutorialBottom.qml:85
448452msgid "Swipe up to manage the app"
449−msgstr ""
453+msgstr "Dra opp for å håndtere programmet"
450454
451455#: qml/Tutorial/TutorialLeft.qml:47
452456msgid "Swipe from the left edge to open the launcher"
453−msgstr ""
457+msgstr "Dra fra venstre kant for å åpne oppstarteren"
454458
455459#: qml/Tutorial/TutorialLeftLong.qml:47
456460msgid "Long swipe from the left edge to open the Today scope"
457−msgstr ""
461+msgstr "Dra langt fra venstre kant for å åpne virkefeltet «I dag»"
458462
459463#: qml/Tutorial/TutorialRight.qml:54
460464msgid "Hover your mouse on the right edge to view your open apps"
461−msgstr ""
465+msgstr "Hold musepekeren over høyre kant for å vise åpne programmer"
462466
463467#: qml/Tutorial/TutorialRight.qml:55
464468msgid "Short or long swipe from the right edge to view your open apps"
465−msgstr ""
469+msgstr "Dra fra høyre kant for å vise åpne programmer"
466470
467471#: qml/Tutorial/TutorialTop.qml:53
468472msgid "Swipe from the top right edge to open the notification bar"
469−msgstr ""
473+msgstr "Dra fra øvre høyre hjørne for å åpne varslingslinja"
470474
471475#: qml/Tutorial/TutorialTop.qml:54
472476msgid "Swipe from the top edge to open the notification bar"
473−msgstr ""
477+msgstr "Dra fra øvre kant for å åpne varslingslinja"
474478
475479#: qml/Wizard/Page.qml:54
476480msgctxt "Button: Go back one page in the Wizard"
@@ -479,7 +483,7 @@ msgstr "Tilbake"
479483
480484#: qml/Wizard/Pages/10-welcome.qml:27
481485msgid "Language"
482−msgstr ""
486+msgstr "Språk"
483487
484488#: qml/Wizard/Pages/10-welcome.qml:156 qml/Wizard/Pages/30-wifi.qml:206
485489#: qml/Wizard/Pages/40-location.qml:271 qml/Wizard/Pages/50-timezone.qml:267
@@ -488,7 +492,7 @@ msgstr ""
488492#: qml/Wizard/Pages/passcode-desktop.qml:124
489493#: qml/Wizard/Pages/password-set.qml:141
490494msgid "Next"
491−msgstr ""
495+msgstr "Neste"
492496
493497#: qml/Wizard/Pages/30-wifi.qml:29
494498msgid "Connect to Wi‑Fi"
@@ -496,15 +500,15 @@ msgstr "Koble til trådløst nettverk"
496500
497501#: qml/Wizard/Pages/30-wifi.qml:130
498502msgid "Connected"
499−msgstr ""
503+msgstr "Koblet til"
500504
501505#: qml/Wizard/Pages/30-wifi.qml:163
502506msgid "Available Wi-Fi networks"
503−msgstr ""
507+msgstr "Tilgjengelige trådløse nettverk"
504508
505509#: qml/Wizard/Pages/30-wifi.qml:164
506510msgid "No available Wi-Fi networks"
507−msgstr ""
511+msgstr "Intet trådløst nettverk tilgjengelig"
508512
509513#: qml/Wizard/Pages/30-wifi.qml:206 qml/Wizard/Pages/60-account.qml:65
510514#: qml/Wizard/Pages/sim.qml:101
@@ -513,98 +517,101 @@ msgstr "Hopp over"
513517
514518#: qml/Wizard/Pages/40-location.qml:27
515519msgid "Location Services"
516−msgstr ""
520+msgstr "Posisjonstjenester"
517521
518522#: qml/Wizard/Pages/40-location.qml:83
519523msgid ""
520524"Use GPS, Wi-Fi hotspots and mobile network anonymously to detect location "
521525"(recommended)"
522526msgstr ""
527+"Bruk GPS, åpne trådløse nettverk og mobilnett for å regne ut posisjon "
528+"anonymt (anbefales)"
523529
524530#: qml/Wizard/Pages/40-location.qml:105
525531#, qt-format
526532msgid "By selecting this option you agree to the Nokia HERE %1."
527−msgstr ""
533+msgstr "Ved å velge dette godtar du %1 for Nokia HERE."
528534
529535#: qml/Wizard/Pages/40-location.qml:106
530536msgctxt "part of: Nokia HERE terms and conditions"
531537msgid "terms and conditions"
532−msgstr ""
538+msgstr "bruksvilkår"
533539
534540#: qml/Wizard/Pages/40-location.qml:160
535541msgid "GPS only"
536−msgstr ""
542+msgstr "Bare GPS"
537543
538544#: qml/Wizard/Pages/40-location.qml:214
539545msgid "Don't use my location"
540−msgstr ""
546+msgstr "Ikke bruk posisjon"
541547
542548#: qml/Wizard/Pages/40-location.qml:260
543549msgid "You can change it later in System Settings."
544−msgstr ""
550+msgstr "Du kan endre dette senere i systemoppsettet."
545551
546552#: qml/Wizard/Pages/50-timezone.qml:29
547553msgid "Time Zone"
548−msgstr ""
554+msgstr "Tidssone"
549555
550556#: qml/Wizard/Pages/50-timezone.qml:178
551557msgid "Enter your city"
552−msgstr ""
558+msgstr "Skriv inn by"
553559
554560#: qml/Wizard/Pages/60-account.qml:24
555561msgid "Personalize Your Device"
556−msgstr ""
562+msgstr "Tilpass enhet"
557563
558564#: qml/Wizard/Pages/60-account.qml:48
559565msgid "Preferred Name"
560−msgstr ""
566+msgstr "Foretrukket navn"
561567
562568#: qml/Wizard/Pages/70-passwd-type.qml:39
563569msgid "Lock Screen"
564−msgstr ""
570+msgstr "Låseskjerm"
565571
566572#: qml/Wizard/Pages/70-passwd-type.qml:101
567573msgctxt "Label: Type of security method"
568574msgid "Create new password"
569−msgstr ""
575+msgstr "Lag nytt passord"
570576
571577#: qml/Wizard/Pages/70-passwd-type.qml:103
572578msgctxt "Label: Type of security method"
573579msgid "Create passcode (numbers only)"
574−msgstr ""
580+msgstr "Lag kode (kun tall)"
575581
576582#: qml/Wizard/Pages/70-passwd-type.qml:105
577583msgctxt "Label: Type of security method"
578584msgid "No lock code"
579−msgstr ""
585+msgstr "Ingen låsekode"
580586
581587#: qml/Wizard/Pages/75-report-check.qml:26 qml/Wizard/Pages/here-terms.qml:108
582588msgid "Privacy Policy"
583−msgstr ""
589+msgstr "Personvernregler"
584590
585591#: qml/Wizard/Pages/75-report-check.qml:26
586592msgid "Help Us Improve"
587−msgstr ""
593+msgstr "Hjelp oss med å bli bedre"
588594
589595#: qml/Wizard/Pages/75-report-check.qml:59
590596msgid "Improve system performance by sending us crashes and error reports."
591597msgstr ""
598+"Send oss kræsj- og feilrapporter og hjelp oss med å gjøre systemet bedre."
592599
593600#: qml/Wizard/Pages/75-report-check.qml:60
594601msgid "Privacy policy"
595−msgstr ""
602+msgstr "Personvernregler"
596603
597604#: qml/Wizard/Pages/80-finished.qml:89
598605msgid "Welcome to Ubuntu"
599−msgstr ""
606+msgstr "Velkommen til Ubuntu"
600607
601608#: qml/Wizard/Pages/80-finished.qml:104
602609msgid "You are ready to use your device now"
603−msgstr ""
610+msgstr "Enheten er nå klar til bruk"
604611
605612#: qml/Wizard/Pages/80-finished.qml:124
606613msgid "Get Started"
607−msgstr ""
614+msgstr "Kom i gang"
608615
609616#: qml/Wizard/Pages/here-terms.qml:25
610617msgid "Terms & Conditions"
@@ -612,7 +619,7 @@ msgstr "Brukervilkår"
612619
613620#: qml/Wizard/Pages/here-terms.qml:69
614621msgid "Your device uses positioning technologies provided by HERE."
615−msgstr ""
622+msgstr "Enheten bruker posisjonsteknologi via tjenesten HERE."
616623
617624#: qml/Wizard/Pages/here-terms.qml:81
618625msgid ""
@@ -620,21 +627,26 @@ msgid ""
620627"collects information about nearby cell towers and Wi-Fi hotspots around your "
621628"current location whenever your position is being found."
622629msgstr ""
630+"Tjenesten HERE samler inn informasjon om mobiltårn og åpne trådløse nettverk "
631+"i nærheten av enheten når du bruker posisjonsbasere tjenester."
623632
624633#: qml/Wizard/Pages/here-terms.qml:93
625634msgid ""
626635"The information collected is used to analyze the service and to improve the "
627636"use of service, but not to identify you personally."
628637msgstr ""
638+"Informasjonen som samles inn blir brukt til å analysere tjenesten og "
639+"forbedre brukskvaliteten. Den blir ikke brukt til å identifisere deg "
640+"personlig."
629641
630642#: qml/Wizard/Pages/here-terms.qml:106
631643#, qt-format
632644msgid "By continuing, you agree to the HERE platform %1 and %2."
633−msgstr ""
645+msgstr "Hvis du fortsetter, samtykker du til %1 og %2 for tjenesten HERE."
634646
635647#: qml/Wizard/Pages/here-terms.qml:107
636648msgid "Service Terms"
637−msgstr ""
649+msgstr "tjenestevilkår"
638650
639651#: qml/Wizard/Pages/passcode-confirm.qml:43
640652#: qml/Wizard/Pages/passcode-desktop.qml:80
@@ -643,69 +655,69 @@ msgstr "Bekreft kode"
643655
644656#: qml/Wizard/Pages/passcode-confirm.qml:45
645657msgid "Incorrect passcode."
646−msgstr ""
658+msgstr "Feil kode."
647659
648660#: qml/Wizard/Pages/passcode-confirm.qml:45
649661msgctxt "Enter the passcode again"
650662msgid "Please re-enter."
651−msgstr ""
663+msgstr "Tast koden på nytt"
652664
653665#: qml/Wizard/Pages/passcode-desktop.qml:30
654666msgid "Lock Screen Passcode"
655−msgstr ""
667+msgstr "Låseskjerm-kode"
656668
657669#: qml/Wizard/Pages/passcode-desktop.qml:56
658670msgid "Enter 4 numbers to setup your passcode"
659−msgstr ""
671+msgstr "Skriv inn 4 sifre som skal brukes som kode"
660672
661673#: qml/Wizard/Pages/passcode-desktop.qml:65
662674#: qml/Wizard/Pages/passcode-set.qml:54
663675msgid "Choose passcode"
664−msgstr ""
676+msgstr "Velg kode"
665677
666678#: qml/Wizard/Pages/passcode-desktop.qml:105
667679msgid "Passcode too short"
668−msgstr ""
680+msgstr "Koden er for kort"
669681
670682#: qml/Wizard/Pages/passcode-desktop.qml:107
671683msgid "Passcodes match"
672−msgstr ""
684+msgstr "Kodene stemmer"
673685
674686#: qml/Wizard/Pages/passcode-desktop.qml:109
675687msgid "Passcodes do not match"
676−msgstr ""
688+msgstr "Kodene er ulike"
677689
678690#: qml/Wizard/Pages/passcode-set.qml:62
679691msgid "Passcode must be 4 characters long"
680−msgstr ""
692+msgstr "Koden må bestå av 4 sifre"
681693
682694#: qml/Wizard/Pages/password-set.qml:30
683695msgid "Lock Screen Password"
684−msgstr ""
696+msgstr "Låseskjerm-passord"
685697
686698#: qml/Wizard/Pages/password-set.qml:61
687699msgid "Enter at least 8 characters"
688−msgstr ""
700+msgstr "Skriv inn minst 8 tegn"
689701
690702#: qml/Wizard/Pages/password-set.qml:73
691703msgid "Choose password"
692−msgstr ""
704+msgstr "Velg passord"
693705
694706#: qml/Wizard/Pages/password-set.qml:103
695707msgid "Confirm password"
696−msgstr ""
708+msgstr "Bekreft passord"
697709
698710#: qml/Wizard/Pages/sim.qml:27
699711msgid "No SIM card installed"
700−msgstr ""
712+msgstr "Ingen SIM-kort installert"
701713
702714#: qml/Wizard/Pages/sim.qml:54
703715msgid "SIM card added"
704−msgstr ""
716+msgstr "SIM-kort satt inn"
705717
706718#: qml/Wizard/Pages/sim.qml:55
707719msgid "You must restart the device to access the mobile network."
708−msgstr ""
720+msgstr "Du må starte enheten på nytt for å få tilgang til mobilnett."
709721
710722#: qml/Wizard/Pages/sim.qml:59
711723msgid "Restart"
@@ -713,35 +725,35 @@ msgstr "Start på nytt"
713725
714726#: qml/Wizard/Pages/sim.qml:78
715727msgid "You won’t be able to make calls or use text messaging without a SIM."
716−msgstr ""
728+msgstr "Du kan ikke ringe eller bruke tekstmeldinger uten et SIM-kort."
717729
718730#: qml/Wizard/Pages/sim.qml:90
719731msgid "To proceed with no SIM tap Skip."
720−msgstr ""
732+msgstr "Trykk «Hopp over» for å fortsette uten SIM-kort"
721733
722734#: qml/Wizard/PasswordMeter.qml:87
723735msgid "Passwords match"
724−msgstr ""
736+msgstr "Passordene stemmer"
725737
726738#: qml/Wizard/PasswordMeter.qml:89
727739msgid "Passwords do not match"
728−msgstr ""
740+msgstr "Passordene er ulike"
729741
730742#: qml/Wizard/PasswordMeter.qml:93
731743msgid "Strong password"
732−msgstr ""
744+msgstr "Sterkt passord"
733745
734746#: qml/Wizard/PasswordMeter.qml:95
735747msgid "Fair password"
736−msgstr ""
748+msgstr "Middels sterkt passord"
737749
738750#: qml/Wizard/PasswordMeter.qml:97
739751msgid "Weak password"
740−msgstr ""
752+msgstr "Svakt passord"
741753
742754#: qml/Wizard/PasswordMeter.qml:99
743755msgid "Very weak password"
744−msgstr ""
756+msgstr "Veldig svakt passord"
745757
746758#~ msgid "Confirm"
747759#~ msgstr "Bekreft"
@@ -1051,12 +1063,3 @@ msgstr ""
10511063
10521064#~ msgid "Tomorrow %H:%M"
10531065#~ msgstr "I morgen %H:%M"
1054−
1055−#~ msgid "Welcome to your Ubuntu device."
1056−#~ msgstr "Velkommen til Ubuntu-enheten din."
1057−
1058−#~ msgid "Please select how you’d like to unlock your device."
1059−#~ msgstr "Velg hvordan du vil låse opp enheten."
1060−
1061−#~ msgid "Your device is now ready to use."
1062−#~ msgstr "Enheten er nå klar til bruk."
po/pl.po+3−11
@@ -8,7 +8,7 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2016-03-23 10:01+0000\n"
11−"PO-Revision-Date: 2016-03-24 22:47+0000\n"
11+"PO-Revision-Date: 2016-03-28 20:45+0000\n"
1212"Last-Translator: Krzysztof Tataradziński <Unknown>\n"
1313"Language-Team: Polish <pl@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -16,7 +16,7 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
1818"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-03-25 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-29 05:41+0000\n"
2020"X-Generator: Launchpad (build 17967)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -430,6 +430,7 @@ msgstr "Oddzwoń"
430430#: qml/Stages/SideStage.qml:76
431431msgid "Drag using 3 fingers any application from one window to the other"
432432msgstr ""
433+"Przeciągnij 3 palcami jakąkolwiek aplikację z jednego okna do drugiego"
433434
434435#: qml/Tutorial/TutorialBottom.qml:78
435436msgid "Swipe up to add a contact"
@@ -1048,12 +1049,3 @@ msgstr ""
10481049
10491050#~ msgid "Call back"
10501051#~ msgstr "Oddzwoń"
1051−
1052−#~ msgid "Welcome to your Ubuntu device."
1053−#~ msgstr "Witaj w swoim urządzeniu Ubuntu."
1054−
1055−#~ msgid "Please select how you’d like to unlock your device."
1056−#~ msgstr "Prosimy wybrać sposób, w jaki chcesz odblokować swoje urządzenie."
1057−
1058−#~ msgid "Your device is now ready to use."
1059−#~ msgstr "Twoje urządzenie jest już gotowe do użytku."
qml/Components/Lockscreen.qml+2−2
@@ -253,10 +253,10 @@ Showable {
253253
254254 Component {
255255 id: infoPopupComponent
256− Dialog {
256+ ShellDialog {
257257 id: dialog
258258 objectName: "infoPopup"
259− modal: true
259+ property var dialogLoader // dummy to satisfy ShellDialog's context dependent prop
260260
261261 Button {
262262 objectName: "infoPopupOkButton"
qml/Greeter/Greeter.qml+1−1
@@ -61,7 +61,7 @@ Showable {
6161
6262 function forceShow() {
6363 showNow();
64− loader.item.reset();
64+ d.selectUser(d.currentIndex, true);
6565 }
6666
6767 function notifyAppFocused(appId) {
qml/Stages/DesktopStage.qml+3
@@ -36,6 +36,9 @@ AbstractStage {
3636 }
3737 }
3838
39+ // Used by TutorialRight
40+ property bool spreadShown: spread.state == "altTab"
41+
3942 mainApp: ApplicationManager.focusedApplicationId
4043 ? ApplicationManager.findApplication(ApplicationManager.focusedApplicationId)
4144 : null
qml/Tutorial/TutorialRight.qml+2−1
@@ -47,11 +47,12 @@ TutorialPage {
4747 anchors.right: root.right
4848 anchors.rightMargin: units.gu(2)
4949 anchors.verticalCenter: root.verticalCenter
50+ rotation: usageScenario === "desktop" ? 180 : 0
5051 }
5152
5253 label {
5354 text: root.usageScenario === "desktop" ?
54− i18n.tr("Hover your mouse on the right edge to view your open apps") :
55+ i18n.tr("Push your mouse against the right edge to view your open apps") :
5556 i18n.tr("Short or long swipe from the right edge to view your open apps")
5657 anchors.right: arrow.left
5758 anchors.rightMargin: units.gu(2) - (label.width - label.contentWidth)
tests/plugins/AccountsService/CMakeLists.txt+2−1
@@ -5,7 +5,7 @@ else()
55endif()
66macro(make_dbus_class NAME INTERFACE)
77 if(${CMAKE_CURRENT_SOURCE_DIR}/interfaces.xml IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/${NAME}Adaptor.h)
8− execute_process(COMMAND ${QDBUSXML2CPP_EXECUTABLE} -c ${NAME}Adaptor -a ${CMAKE_CURRENT_BINARY_DIR}/${NAME}Adaptor ${CMAKE_CURRENT_SOURCE_DIR}/interfaces.xml ${INTERFACE})
8+ execute_process(COMMAND ${QDBUSXML2CPP_EXECUTABLE} -c ${NAME}Adaptor -i types.h -a ${CMAKE_CURRENT_BINARY_DIR}/${NAME}Adaptor ${CMAKE_CURRENT_SOURCE_DIR}/interfaces.xml ${INTERFACE})
99 endif()
1010endmacro(make_dbus_class)
1111
@@ -20,6 +20,7 @@ make_dbus_class(UscInput com.canonical.Unity.Input)
2020
2121include_directories(
2222 ${CMAKE_CURRENT_BINARY_DIR}
23+ ${CMAKE_CURRENT_SOURCE_DIR}
2324 ${CMAKE_SOURCE_DIR}/plugins/AccountsService
2425 )
2526
tests/plugins/AccountsService/PropertiesServer.cpp+36−7
@@ -25,9 +25,7 @@
2525#include <QDBusMessage>
2626#include <QDBusMetaType>
2727
28−using StringMap = QMap<QString,QString>;
29−using StringMapList = QList<StringMap>;
30−Q_DECLARE_METATYPE(StringMapList)
28+#define IFACE_ACCOUNTS_USER QStringLiteral("org.freedesktop.Accounts.User")
3129
3230PropertiesServer::PropertiesServer(QObject *parent)
3331 : QObject(parent)
@@ -62,6 +60,38 @@ void PropertiesServer::Set(const QString &interface, const QString &property, co
6260{
6361 QVariant newValue = variant.variant();
6462
63+ if (interface == IFACE_ACCOUNTS_USER) {
64+ sendErrorReply(QDBusError::InvalidArgs, QStringLiteral("Property is not writable"));
65+ return;
66+ }
67+
68+ internalSet(interface, property, newValue);
69+}
70+
71+void PropertiesServer::SetBackgroundFile(const QString &backgroundFile)
72+{
73+ internalSet(IFACE_ACCOUNTS_USER, QStringLiteral("BackgroundFile"), backgroundFile);
74+}
75+
76+void PropertiesServer::SetEmail(const QString &email)
77+{
78+ internalSet(IFACE_ACCOUNTS_USER, QStringLiteral("Email"), email);
79+}
80+
81+void PropertiesServer::SetInputSources(const StringMapList &inputSources)
82+{
83+ internalSet(IFACE_ACCOUNTS_USER, QStringLiteral("InputSources"), QVariant::fromValue(inputSources));
84+}
85+
86+void PropertiesServer::SetRealName(const QString &realName)
87+{
88+ internalSet(IFACE_ACCOUNTS_USER, QStringLiteral("RealName"), realName);
89+}
90+
91+void PropertiesServer::internalSet(const QString &interface, const QString &property, const QVariant &variant)
92+{
93+ QVariant newValue = variant;
94+
6595 if (m_properties[interface].contains(property)) {
6696 QVariant& oldValue = m_properties[interface][property];
6797 if (oldValue != newValue) {
@@ -69,14 +99,12 @@ void PropertiesServer::Set(const QString &interface, const QString &property, co
6999 if (interface == QStringLiteral("com.canonical.unity.AccountsService") &&
70100 property == QStringLiteral("LauncherItems")) {
71101 newValue = QVariant::fromValue(qdbus_cast<QList<QVariantMap>>(newValue.value<QDBusArgument>()));
72− } else if (interface == "org.freedesktop.Accounts.User" && property == "InputSources") {
73− newValue = QVariant::fromValue(qdbus_cast<StringMapList>(newValue.value<QDBusArgument>()));
74102 }
75103
76104 oldValue = newValue;
77105
78106 // Special case for user properties.
79− if (interface == "org.freedesktop.Accounts.User") {
107+ if (interface == IFACE_ACCOUNTS_USER) {
80108 Q_EMIT Changed();
81109 } else {
82110 QVariantMap propertyChanges;
@@ -108,6 +136,7 @@ void PropertiesServer::Reset()
108136 m_properties["com.ubuntu.location.providers.here.AccountsService"]["LicenseAccepted"] = false;
109137 m_properties["com.ubuntu.location.providers.here.AccountsService"]["LicenseBasePath"] = "";
110138 m_properties["org.freedesktop.Accounts.User"]["BackgroundFile"] = "";
111− m_properties["org.freedesktop.Accounts.User"]["RealName"] = "";
139+ m_properties["org.freedesktop.Accounts.User"]["Email"] = "";
112140 m_properties["org.freedesktop.Accounts.User"]["InputSources"] = QVariant::fromValue(StringMapList());
141+ m_properties["org.freedesktop.Accounts.User"]["RealName"] = "";
113142}
tests/plugins/AccountsService/PropertiesServer.h+7
@@ -24,6 +24,7 @@
2424#include <QDBusVariant>
2525#include <QObject>
2626#include <QString>
27+#include "types.h"
2728
2829class PropertiesServer: public QObject, protected QDBusContext
2930{
@@ -36,6 +37,10 @@ public Q_SLOTS:
3637 QDBusVariant Get(const QString &interface, const QString &property) const;
3738 QVariantMap GetAll(const QString &interface) const;
3839 void Set(const QString &interface, const QString &property, const QDBusVariant &variant);
40+ void SetBackgroundFile(const QString &backgroundFile);
41+ void SetEmail(const QString &email);
42+ void SetInputSources(const StringMapList &inputSources);
43+ void SetRealName(const QString &realName);
3944
4045 // mock only.
4146 void Reset();
@@ -45,6 +50,8 @@ Q_SIGNALS:
4550 void Changed();
4651
4752private:
53+ void internalSet(const QString &interface, const QString &property, const QVariant &variant);
54+
4855 QHash<QString, QVariantMap> m_properties;
4956};
5057
tests/plugins/AccountsService/client.cpp+46−12
@@ -19,16 +19,13 @@
1919
2020#include "AccountsService.h"
2121#include "AccountsServiceDBusAdaptor.h"
22+#include "types.h"
2223#include <QSignalSpy>
2324#include <QTest>
2425#include <QDebug>
2526#include <QDBusReply>
2627#include <QDBusMetaType>
2728
28−using StringMap = QMap<QString,QString>;
29−using StringMapList = QList<StringMap>;
30−Q_DECLARE_METATYPE(StringMapList)
31−
3229template <class T>
3330QVariant dbusVariant(const T& value) { return QVariant::fromValue(QDBusVariant(value)); }
3431
@@ -263,10 +260,13 @@ private Q_SLOTS:
263260 AccountsService session(this, QTest::currentTestFunction());
264261
265262 QCOMPARE(session.backgroundFile(), QString());
266− ASSERT_DBUS_CALL(m_userInterface->asyncCall("Set",
267− "org.freedesktop.Accounts.User",
268− "BackgroundFile",
269− dbusVariant("/test/BackgroundFile")));
263+
264+ QDBusInterface accountsIface(m_userInterface->service(),
265+ m_userInterface->path(),
266+ "org.freedesktop.Accounts.User");
267+ ASSERT_DBUS_CALL(accountsIface.asyncCall("SetBackgroundFile",
268+ "/test/BackgroundFile"));
269+
270270 QTRY_COMPARE(session.backgroundFile(), QString("/test/BackgroundFile"));
271271 }
272272
@@ -311,6 +311,39 @@ private Q_SLOTS:
311311 QCOMPARE(arguments.at(0).toInt(), 0);
312312 }
313313
314+ void testSetRealName()
315+ {
316+ AccountsService session(this, QTest::currentTestFunction());
317+
318+ // Just confirm that we can't set normal way
319+ auto message = m_userInterface->call("Set",
320+ "org.freedesktop.Accounts.User",
321+ "RealName",
322+ dbusVariant("Stallman"));
323+ QCOMPARE(message.type(), QDBusMessage::ErrorMessage);
324+ QCOMPARE(message.errorName(), QStringLiteral("org.freedesktop.DBus.Error.InvalidArgs"));
325+
326+ message = m_userInterface->call("Get",
327+ "org.freedesktop.Accounts.User",
328+ "RealName");
329+ QCOMPARE(message.type(), QDBusMessage::ReplyMessage);
330+ auto response = message.arguments().first().value<QDBusVariant>().variant().toString();
331+ QCOMPARE(response, QStringLiteral(""));
332+
333+ // Now try it via our AS wrapper and confirm it did get through, unlike above
334+ session.setRealName("Stallman");
335+
336+ QCOMPARE(session.realName(), QStringLiteral("Stallman"));
337+
338+ message = m_userInterface->call("Get",
339+ "org.freedesktop.Accounts.User",
340+ "RealName");
341+ QCOMPARE(message.type(), QDBusMessage::ReplyMessage);
342+ response = message.arguments().first().value<QDBusVariant>().variant().toString();
343+ QCOMPARE(response, QStringLiteral("Stallman"));
344+
345+ }
346+
314347 void testAsynchronousChangeForKeymaps()
315348 {
316349 AccountsService session(this, QTest::currentTestFunction());
@@ -325,10 +358,11 @@ private Q_SLOTS:
325358 map2.insert("xkb", "fr");
326359 inputSources.append(map2);
327360
328− ASSERT_DBUS_CALL(m_userInterface->asyncCall("Set",
329− "org.freedesktop.Accounts.User",
330− "InputSources",
331− QVariant::fromValue(QDBusVariant(QVariant::fromValue(inputSources)))));
361+ QDBusInterface accountsIface(m_userInterface->service(),
362+ m_userInterface->path(),
363+ "org.freedesktop.Accounts.User");
364+ ASSERT_DBUS_CALL(accountsIface.asyncCall("SetInputSources",
365+ QVariant::fromValue(inputSources)));
332366 QStringList result = {"cz+qwerty", "fr"};
333367 QTRY_COMPARE(session.keymaps(), result);
334368 }
tests/plugins/AccountsService/interfaces.xml+13
@@ -42,6 +42,19 @@
4242 <interface name="com.ubuntu.location.providers.here.AccountsService" />
4343 <interface name="org.freedesktop.Accounts.User">
4444 <signal name="Changed" />
45+ <method name="SetBackgroundFile">
46+ <arg name="backgroundFile" type="s" direction="in" />
47+ </method>
48+ <method name="SetEmail">
49+ <arg name="email" type="s" direction="in" />
50+ </method>
51+ <method name="SetInputSources">
52+ <annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="StringMapList"/>
53+ <arg name="inputSources" type="aa{ss}" direction="in" />
54+ </method>
55+ <method name="SetRealName">
56+ <arg name="realName" type="s" direction="in" />
57+ </method>
4558 </interface>
4659 <interface name="com.canonical.unity.AccountsService.Private" />
4760
tests/plugins/AccountsService/types.hnew file+25
@@ -0,0 +1,25 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ */
17+
18+#ifndef UNITY_ASMOCKTYPES_H
19+#define UNITY_ASMOCKTYPES_H
20+
21+using StringMap = QMap<QString,QString>;
22+using StringMapList = QList<StringMap>;
23+Q_DECLARE_METATYPE(StringMapList)
24+
25+#endif
tests/plugins/IntegratedLightDM/integrated.cpp+5−8
@@ -66,14 +66,11 @@ private Q_SLOTS:
6666 QCOMPARE(m_model->data(index, QLightDM::UsersModel::RealNameRole).toString(),
6767 QStringLiteral(""));
6868
69− // The real AccountsService doesn't let you set via dbus properties. You
70− // have to call SetRealName instead (so that they can protect the call
71− // via policykit). But our test server does let us.
72− QVariant wrapped = QVariant::fromValue(QDBusVariant(QStringLiteral("Test User")));
73− QDBusReply<void> reply = m_user->call(QStringLiteral("Set"),
74− QStringLiteral("org.freedesktop.Accounts.User"),
75− QStringLiteral("RealName"),
76− wrapped);
69+ QDBusInterface accountsIface(m_user->service(),
70+ m_user->path(),
71+ "org.freedesktop.Accounts.User");
72+ QDBusReply<void> reply = accountsIface.call(QStringLiteral("SetRealName"),
73+ QStringLiteral("Test User"));
7774 QVERIFY(reply.isValid());
7875
7976 QTRY_COMPARE(m_model->data(index, QLightDM::UsersModel::RealNameRole).toString(),
tests/qmltests/Greeter/tst_Greeter.qml+1
@@ -551,6 +551,7 @@ Item {
551551
552552 LightDM.Greeter.showGreeter();
553553 compare(viewResetSpy.count, 1);
554+ tryCompare(viewShowPromptSpy, "count", 1);
554555 }
555556 }
556557}
tests/qmltests/Greeter/tst_NarrowView.qml+3−1
@@ -27,6 +27,8 @@ Item {
2727 width: units.gu(90)
2828 height: units.gu(80)
2929
30+ Component.onCompleted: theme.name = "Ubuntu.Components.Themes.SuruDark" // use the same theme as the real shell
31+
3032 Row {
3133 anchors.fill: parent
3234 Loader {
@@ -61,7 +63,7 @@ Item {
6163
6264 Rectangle {
6365 id: controls
64− color: "white"
66+ color: theme.palette.normal.background
6567 width: units.gu(40)
6668 height: parent.height
6769
tests/qmltests/Tutorial/tst_Tutorial.qml+17−1
@@ -408,7 +408,7 @@ Rectangle {
408408 ApplicationManager.startApplication("gallery-app");
409409
410410 var launcher = findChild(shell, "launcher");
411− var tutorialLeft = findChild(shell, "tutorialLeft");
411+ var tutorialLeft = findChild(shell, "tutorialLeftLoader");
412412 touchFlick(shell, 0, halfHeight, shell.width, halfHeight);
413413
414414 tryCompare(tutorialLeft, "shown", false);
@@ -764,6 +764,22 @@ Rectangle {
764764 tryCompare(tutorialRightLoader, "shown", true);
765765 }
766766
767+ function test_desktopTutorialRightFinish() {
768+ loadShell("desktop");
769+
770+ var tutorialRight = findChild(shell, "tutorialRight");
771+ ApplicationManager.startApplication("dialer-app");
772+ ApplicationManager.startApplication("camera-app");
773+ tryCompare(tutorialRight, "shown", true);
774+
775+ var stage = findChild(shell, "stage");
776+ mouseMove(shell, shell.width, shell.height / 2);
777+ stage.pushRightEdge(units.gu(8));
778+ tryCompare(tutorialRight, "shown", false);
779+
780+ tryCompare(AccountsService, "demoEdges", false);
781+ }
782+
767783 function test_oskDoesNotHideTutorial() {
768784 var tutorialLeft = findChild(shell, "tutorialLeft");
769785 verify(tutorialLeft.shown);
tests/qmltests/tst_Shell.qml+3−1
@@ -1140,7 +1140,9 @@ Rectangle {
11401140
11411141 showGreeter();
11421142
1143− tryCompare(sessionSpy, "count", 1);
1143+ var greeter = findChild(shell, "greeter");
1144+ verify(!greeter.locked);
1145+ verify(sessionSpy.count > 0);
11441146 }
11451147
11461148 function test_fullscreen() {