Merge PR #271: Update password entry fields

This commit is contained in:
Jenkins nymea 2019-11-25 13:31:15 +01:00
commit abc33a4f52
8 changed files with 450 additions and 146 deletions

View File

@ -2227,7 +2227,7 @@ Bitte versuche es erneut.</translation>
</message>
<message>
<source>nymea is a registered trademark of guh GmbH.</source>
<translation>nymea ist ein eingetragener Markenname der guh GmbH.</translation>
<translation type="vanished">nymea ist ein eingetragener Markenname der guh GmbH.</translation>
</message>
<message>
<source>Licensed under the terms of the GNU general public license, version 2. Please visit the GitHub page for source code and build instructions.</source>
@ -2261,6 +2261,10 @@ Bitte versuche es erneut.</translation>
<source>License text</source>
<translation>Lizenztext</translation>
</message>
<message>
<source>nymea is a registered trademark of nymea GmbH.</source>
<translation>nymea ist ein eingetragenes Markenzeichen der nymea GmbH</translation>
</message>
</context>
<context>
<name>InputTriggerDevicePage</name>
@ -3396,6 +3400,13 @@ Möchtest Du fortfahren?</translation>
<translation>Neue Magie</translation>
</message>
</context>
<context>
<name>NewScenePage</name>
<message>
<source>New scene</source>
<translation>Neue Szene</translation>
</message>
</context>
<context>
<name>NewThingMagicPage</name>
<message>
@ -3568,10 +3579,12 @@ Möchtest Du fortfahren?</translation>
</message>
<message>
<source>light</source>
<extracomment>Select ...</extracomment>
<translation>Beleuchtung</translation>
</message>
<message>
<source>sensor</source>
<extracomment>Select ...</extracomment>
<translation>Sensor</translation>
</message>
<message>
@ -3584,10 +3597,12 @@ Möchtest Du fortfahren?</translation>
</message>
<message>
<source>battery powered thing</source>
<extracomment>Select ...</extracomment>
<translation>batteriebetriebenes Gerät</translation>
</message>
<message>
<source>connectable thing</source>
<extracomment>Select ...</extracomment>
<translation>verbindbares Gerät</translation>
</message>
<message>
@ -3616,14 +3631,17 @@ Möchtest Du fortfahren?</translation>
</message>
<message>
<source>switchable thing</source>
<extracomment>Select ...</extracomment>
<translation>einschalbare Geräte</translation>
</message>
<message>
<source>daylight sensor</source>
<extracomment>Select ...</extracomment>
<translation>Tageslichtsensor</translation>
</message>
<message>
<source>presence sensor</source>
<extracomment>Select ...</extracomment>
<translation>Anwesenheitssensor</translation>
</message>
<message>
@ -3632,28 +3650,48 @@ Möchtest Du fortfahren?</translation>
</message>
<message>
<source>doorbell</source>
<extracomment>Select ...</extracomment>
<translation>Türklingel</translation>
</message>
<message>
<source>alert</source>
<extracomment>Select ...</extracomment>
<translation>Alarm</translation>
</message>
<message>
<source>button</source>
<extracomment>Select ...</extracomment>
<translation>Taster</translation>
</message>
<message>
<source>access control</source>
<extracomment>Select ...</extracomment>
<translation>Zugangskontrolle</translation>
</message>
<message>
<source>smart meter</source>
<extracomment>Select ...</extracomment>
<translation>Smart Meter</translation>
</message>
<message>
<source>media player</source>
<extracomment>Select ...</extracomment>
<translation>Medienabspielgerät</translation>
</message>
<message>
<source>Fingerprint reader</source>
<translation>Fingerabdruck Lesegerät</translation>
</message>
<message>
<source>moisture sensor</source>
<extracomment>Select ...</extracomment>
<translation>Feuchtigkeitssensor</translation>
</message>
<message>
<source>thing to notify</source>
<extracomment>Select ...</extracomment>
<translation>&quot;Thing&quot; zum Benachrichtigen</translation>
</message>
</context>
<context>
<name>NymeaConnection</name>
@ -3711,6 +3749,30 @@ Möchtest Du fortfahren?</translation>
<source>Pick a password</source>
<translation>Wähle ein Passwort</translation>
</message>
<message>
<source>Minimum %1 characters</source>
<translation>Minimum %1 Zeichen</translation>
</message>
<message>
<source>Lowercase letters</source>
<translation>Kleinbuchstaben</translation>
</message>
<message>
<source>Uppercase letters</source>
<translation>Großbuchstaben</translation>
</message>
<message>
<source>Numbers</source>
<translation>Zahlen</translation>
</message>
<message>
<source>Special characters</source>
<translation>Sonderzeichen</translation>
</message>
<message>
<source>Confirm password</source>
<translation>Passwort bestätigen</translation>
</message>
</context>
<context>
<name>PluginParamsPage</name>
@ -3846,15 +3908,15 @@ Möchtest Du fortfahren?</translation>
</message>
<message>
<source>Confirm password</source>
<translation>Passwort bestätigen</translation>
<translation type="vanished">Passwort bestätigen</translation>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The passwords match.&lt;/font&gt;</source>
<translation>&lt;font color=&quot;%1&quot;&gt;Die Passwörter stimmen überein.&lt;/font&gt;</translation>
<translation type="vanished">&lt;font color=&quot;%1&quot;&gt;Die Passwörter stimmen überein.&lt;/font&gt;</translation>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The passwords &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;do not&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; match.&lt;/font&gt;</source>
<translation>&lt;font color=&quot;%1&quot;&gt;Die Passwörter stimmen &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;nicht&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; überein.&lt;/font&gt;</translation>
<translation type="vanished">&lt;font color=&quot;%1&quot;&gt;Die Passwörter stimmen &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;nicht&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; überein.&lt;/font&gt;</translation>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The password needs to be &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;at least 12 characters long&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;, contain &lt;/font&gt;&lt;font color=&quot;%3&quot;&gt;lowercase&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;, &lt;/font&gt;&lt;font color=&quot;%4&quot;&gt;uppercase&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; letters as well as &lt;/font&gt;&lt;font color=&quot;%5&quot;&gt;numbers&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; and &lt;/font&gt;&lt;font color=&quot;%6&quot;&gt;special characters&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;.&lt;/font&gt;</source>
@ -3862,7 +3924,7 @@ Möchtest Du fortfahren?</translation>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The password needs to be &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;at least %3 characters long&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;, contain &lt;/font&gt;&lt;font color=&quot;%4&quot;&gt;lowercase&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;, &lt;/font&gt;&lt;font color=&quot;%5&quot;&gt;uppercase&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; letters as well as &lt;/font&gt;&lt;font color=&quot;%6&quot;&gt;numbers&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; and &lt;/font&gt;&lt;font color=&quot;%7&quot;&gt;special characters&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;.&lt;/font&gt;</source>
<translation>&lt;font color=&quot;%1&quot;&gt;Das Passwort muss &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;mindestens %3 Zeichen lang&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; sein, &lt;/font&gt;&lt;font color=&quot;%4&quot;&gt;Kleinbuchstaben&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;, &lt;/font&gt;&lt;font color=&quot;%5&quot;&gt;Großbuchstaben&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; sowie &lt;/font&gt;&lt;font color=&quot;%6&quot;&gt;Zahlen&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; und &lt;/font&gt;&lt;font color=&quot;%7&quot;&gt;Sonderzeichen&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; beinhalten.&lt;/font&gt;</translation>
<translation type="vanished">&lt;font color=&quot;%1&quot;&gt;Das Passwort muss &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;mindestens %3 Zeichen lang&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; sein, &lt;/font&gt;&lt;font color=&quot;%4&quot;&gt;Kleinbuchstaben&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;, &lt;/font&gt;&lt;font color=&quot;%5&quot;&gt;Großbuchstaben&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; sowie &lt;/font&gt;&lt;font color=&quot;%6&quot;&gt;Zahlen&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; und &lt;/font&gt;&lt;font color=&quot;%7&quot;&gt;Sonderzeichen&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; beinhalten.&lt;/font&gt;</translation>
</message>
</context>
<context>
@ -4009,7 +4071,7 @@ Möchtest Du fortfahren?</translation>
<name>SelectThingPage</name>
<message>
<source>Select a thing</source>
<translation>&quot;Thing&quot; auswählen</translation>
<translation type="vanished">&quot;Thing&quot; auswählen</translation>
</message>
<message>
<source>A specific thing</source>
@ -4021,16 +4083,32 @@ Möchtest Du fortfahren?</translation>
</message>
<message>
<source>Select a kind of things</source>
<translation>Typ von &quot;Things&quot; auswählen</translation>
<translation type="vanished">Typ von &quot;Things&quot; auswählen</translation>
</message>
<message>
<source>Select a %1</source>
<translation>%1 auswählen</translation>
<translation type="vanished">%1 auswählen</translation>
</message>
<message>
<source>Any %1</source>
<translation>Jede(s) %1</translation>
</message>
<message>
<source>Select kind of things</source>
<translation>&quot;Thing&quot; Kategorie</translation>
</message>
<message>
<source>Select %1</source>
<translation>%1 auswählen</translation>
</message>
<message>
<source>Select thing</source>
<translation>&quot;Thing&quot; auswählen</translation>
</message>
<message>
<source>OK</source>
<translation>OK</translation>
</message>
</context>
<context>
<name>SensorDevicePagePost110</name>
@ -4397,6 +4475,14 @@ Möchtest Du fortfahren?</translation>
<source>Next</source>
<translation>Weiter</translation>
</message>
<message>
<source>OAuth is not supported on this platform. Please use this app on a different device to set up this thing.</source>
<translation>OAuth wird auf diesem System nicht unterstützt. Bitte benutze diese App auf einem anderen Gerät um dieses &quot;Thing&quot; einzurichten.</translation>
</message>
<message>
<source>In order to use OAuth on this platform, make sure qml-module-qtwebview is installed.</source>
<translation>Um OAuth auf diesem System zu benutzen, stelle sicher, dass qml-module-qtwebview installiert ist.</translation>
</message>
</context>
<context>
<name>ShutterDeviceListPage</name>
@ -4637,6 +4723,10 @@ Do you want to proceed?</source>
<translation>
Möchtest Du fortfahren?</translation>
</message>
<message>
<source>Failure adding repository.</source>
<translation>Fehler beim Hinzufügen der Paketquelle.</translation>
</message>
</context>
<context>
<name>TimeEventDelegate</name>

View File

@ -1669,10 +1669,6 @@ Please try again.</source>
<source>Howdy cowboy!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>nymea is a registered trademark of guh GmbH.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Licensed under the terms of the GNU general public license, version 2. Please visit the GitHub page for source code and build instructions.</source>
<translation type="unfinished"></translation>
@ -1705,6 +1701,10 @@ Please try again.</source>
<source>License text</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>nymea is a registered trademark of nymea GmbH.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Interfaces</name>
@ -2598,6 +2598,13 @@ Please try again.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>NewScenePage</name>
<message>
<source>New scene</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>NewThingMagicPage</name>
<message>
@ -2786,30 +2793,37 @@ Please try again.</source>
</message>
<message>
<source>light</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>sensor</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>battery powered thing</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>connectable thing</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>switchable thing</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>daylight sensor</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>presence sensor</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
@ -2818,26 +2832,46 @@ Please try again.</source>
</message>
<message>
<source>doorbell</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>alert</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>button</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>access control</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>smart meter</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>media player</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fingerprint reader</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>moisture sensor</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>thing to notify</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
@ -2897,6 +2931,30 @@ Please try again.</source>
<source>Pick a password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Minimum %1 characters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lowercase letters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Uppercase letters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Numbers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm password</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PluginParamsPage</name>
@ -3006,18 +3064,6 @@ Please try again.</source>
<comment>example: &quot;and temperature &gt; 5&quot;</comment>
<translation></translation>
</message>
<message>
<source>Confirm password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The passwords match.&lt;/font&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The passwords &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;do not&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; match.&lt;/font&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>only if %1 %2 %3</source>
<translation type="unfinished"></translation>
@ -3026,10 +3072,6 @@ Please try again.</source>
<source>and %1 %2 %3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The password needs to be &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;at least %3 characters long&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;, contain &lt;/font&gt;&lt;font color=&quot;%4&quot;&gt;lowercase&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;, &lt;/font&gt;&lt;font color=&quot;%5&quot;&gt;uppercase&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; letters as well as &lt;/font&gt;&lt;font color=&quot;%6&quot;&gt;numbers&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; and &lt;/font&gt;&lt;font color=&quot;%7&quot;&gt;special characters&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;.&lt;/font&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SelectActionPage</name>
@ -3154,22 +3196,26 @@ Please try again.</source>
</context>
<context>
<name>SelectThingPage</name>
<message>
<source>Select a kind of things</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select a %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select a thing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Any %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select kind of things</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select thing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SensorDevicePagePost110</name>
@ -3428,6 +3474,14 @@ Please try again.</source>
<source>Next</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OAuth is not supported on this platform. Please use this app on a different device to set up this thing.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>In order to use OAuth on this platform, make sure qml-module-qtwebview is installed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShutterDeviceListPage</name>
@ -3605,6 +3659,10 @@ Please only use this if you are sure you want this and consider reporting the is
Do you want to proceed?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failure adding repository.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TimeEventDelegate</name>

View File

@ -1669,10 +1669,6 @@ Please try again.</source>
<source>Howdy cowboy!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>nymea is a registered trademark of guh GmbH.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Licensed under the terms of the GNU general public license, version 2. Please visit the GitHub page for source code and build instructions.</source>
<translation type="unfinished"></translation>
@ -1705,6 +1701,10 @@ Please try again.</source>
<source>License text</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>nymea is a registered trademark of nymea GmbH.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Interfaces</name>
@ -2598,6 +2598,13 @@ Please try again.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>NewScenePage</name>
<message>
<source>New scene</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>NewThingMagicPage</name>
<message>
@ -2786,30 +2793,37 @@ Please try again.</source>
</message>
<message>
<source>light</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>sensor</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>battery powered thing</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>connectable thing</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>switchable thing</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>daylight sensor</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>presence sensor</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
@ -2818,26 +2832,46 @@ Please try again.</source>
</message>
<message>
<source>doorbell</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>alert</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>button</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>access control</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>smart meter</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>media player</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fingerprint reader</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>moisture sensor</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>thing to notify</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
@ -2897,6 +2931,30 @@ Please try again.</source>
<source>Pick a password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Minimum %1 characters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lowercase letters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Uppercase letters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Numbers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm password</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PluginParamsPage</name>
@ -3006,18 +3064,6 @@ Please try again.</source>
<comment>example: &quot;and temperature &gt; 5&quot;</comment>
<translation></translation>
</message>
<message>
<source>Confirm password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The passwords match.&lt;/font&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The passwords &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;do not&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; match.&lt;/font&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>only if %1 %2 %3</source>
<translation type="unfinished"></translation>
@ -3026,10 +3072,6 @@ Please try again.</source>
<source>and %1 %2 %3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The password needs to be &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;at least %3 characters long&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;, contain &lt;/font&gt;&lt;font color=&quot;%4&quot;&gt;lowercase&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;, &lt;/font&gt;&lt;font color=&quot;%5&quot;&gt;uppercase&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; letters as well as &lt;/font&gt;&lt;font color=&quot;%6&quot;&gt;numbers&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; and &lt;/font&gt;&lt;font color=&quot;%7&quot;&gt;special characters&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;.&lt;/font&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SelectActionPage</name>
@ -3154,22 +3196,26 @@ Please try again.</source>
</context>
<context>
<name>SelectThingPage</name>
<message>
<source>Select a kind of things</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select a %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select a thing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Any %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select kind of things</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select thing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SensorDevicePagePost110</name>
@ -3428,6 +3474,14 @@ Please try again.</source>
<source>Next</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OAuth is not supported on this platform. Please use this app on a different device to set up this thing.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>In order to use OAuth on this platform, make sure qml-module-qtwebview is installed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShutterDeviceListPage</name>
@ -3605,6 +3659,10 @@ Please only use this if you are sure you want this and consider reporting the is
Do you want to proceed?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failure adding repository.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TimeEventDelegate</name>

View File

@ -1707,7 +1707,7 @@ Please try again.</source>
</message>
<message>
<source>nymea is a registered trademark of guh GmbH.</source>
<translation>nymea는 guh GmbH의 .</translation>
<translation type="vanished">nymea는 guh GmbH의 .</translation>
</message>
<message>
<source>Licensed under the terms of the GNU general public license, version 2. Please visit the GitHub page for source code and build instructions.</source>
@ -1741,6 +1741,10 @@ Please try again.</source>
<source>License text</source>
<translation></translation>
</message>
<message>
<source>nymea is a registered trademark of nymea GmbH.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Interfaces</name>
@ -2633,6 +2637,13 @@ Please try again.</source>
<translation> </translation>
</message>
</context>
<context>
<name>NewScenePage</name>
<message>
<source>New scene</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>NewThingMagicPage</name>
<message>
@ -2821,30 +2832,37 @@ Please try again.</source>
</message>
<message>
<source>light</source>
<extracomment>Select ...</extracomment>
<translation></translation>
</message>
<message>
<source>sensor</source>
<extracomment>Select ...</extracomment>
<translation></translation>
</message>
<message>
<source>battery powered thing</source>
<extracomment>Select ...</extracomment>
<translation> </translation>
</message>
<message>
<source>connectable thing</source>
<extracomment>Select ...</extracomment>
<translation> </translation>
</message>
<message>
<source>switchable thing</source>
<extracomment>Select ...</extracomment>
<translation> </translation>
</message>
<message>
<source>daylight sensor</source>
<extracomment>Select ...</extracomment>
<translation> </translation>
</message>
<message>
<source>presence sensor</source>
<extracomment>Select ...</extracomment>
<translation> </translation>
</message>
<message>
@ -2853,28 +2871,48 @@ Please try again.</source>
</message>
<message>
<source>doorbell</source>
<extracomment>Select ...</extracomment>
<translation></translation>
</message>
<message>
<source>alert</source>
<extracomment>Select ...</extracomment>
<translation></translation>
</message>
<message>
<source>button</source>
<extracomment>Select ...</extracomment>
<translation></translation>
</message>
<message>
<source>access control</source>
<extracomment>Select ...</extracomment>
<translation> </translation>
</message>
<message>
<source>smart meter</source>
<extracomment>Select ...</extracomment>
<translation> </translation>
</message>
<message>
<source>media player</source>
<extracomment>Select ...</extracomment>
<translation> </translation>
</message>
<message>
<source>Fingerprint reader</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>moisture sensor</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>thing to notify</source>
<extracomment>Select ...</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>NymeaConnection</name>
@ -2932,6 +2970,30 @@ Please try again.</source>
<source>Pick a password</source>
<translation> </translation>
</message>
<message>
<source>Minimum %1 characters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lowercase letters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Uppercase letters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Numbers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm password</source>
<translation type="unfinished"> </translation>
</message>
</context>
<context>
<name>PluginParamsPage</name>
@ -3043,15 +3105,15 @@ Please try again.</source>
</message>
<message>
<source>Confirm password</source>
<translation> </translation>
<translation type="vanished"> </translation>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The passwords match.&lt;/font&gt;</source>
<translation>&lt;font color=&quot;%1&quot; &gt; .&lt;/font&gt;</translation>
<translation type="vanished">&lt;font color=&quot;%1&quot; &gt; .&lt;/font&gt;</translation>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The passwords &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;do not&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; match.&lt;/font&gt;</source>
<translation>&lt;font color=&quot;%1&quot;&gt; &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;.&lt;/font&gt;</translation>
<translation type="vanished">&lt;font color=&quot;%1&quot;&gt; &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;.&lt;/font&gt;</translation>
</message>
<message>
<source>only if %1 %2 %3</source>
@ -3063,7 +3125,7 @@ Please try again.</source>
</message>
<message>
<source>&lt;font color=&quot;%1&quot;&gt;The password needs to be &lt;/font&gt;&lt;font color=&quot;%2&quot;&gt;at least %3 characters long&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;, contain &lt;/font&gt;&lt;font color=&quot;%4&quot;&gt;lowercase&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;, &lt;/font&gt;&lt;font color=&quot;%5&quot;&gt;uppercase&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; letters as well as &lt;/font&gt;&lt;font color=&quot;%6&quot;&gt;numbers&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt; and &lt;/font&gt;&lt;font color=&quot;%7&quot;&gt;special characters&lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;.&lt;/font&gt;</source>
<translation>&lt;font color=&quot;%1&quot;&gt; &lt;/font&gt;&lt;font color=&quot;%4&quot;&gt; &lt;/font&gt;&lt;font color = &quot;% 1&quot;&gt;, &lt;/ font&gt; &lt;font color = &quot;% 5&quot;&gt; &lt;/ font&gt; &lt;font color=&quot;%1&quot;&gt;, &lt;/font&gt;&lt;font color = &quot;% 1 &quot;&gt; &lt;/ font&gt; &lt;font color =&quot;% 6 &quot;&gt; &lt;/ font&gt;&lt;font color=&quot;%1&quot;&gt;, &lt;/font&gt; &lt;font color =&quot;% 7 &quot;&gt; &lt;/ font&gt; &lt;font color=&quot;%1&quot;&gt; &lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;,&lt;/font&gt; &lt;font color=&quot;%2&quot;&gt; % 3 &lt;font color=&quot;%1&quot;&gt;. &lt;/ font&gt;</translation>
<translation type="vanished">&lt;font color=&quot;%1&quot;&gt; &lt;/font&gt;&lt;font color=&quot;%4&quot;&gt; &lt;/font&gt;&lt;font color = &quot;% 1&quot;&gt;, &lt;/ font&gt; &lt;font color = &quot;% 5&quot;&gt; &lt;/ font&gt; &lt;font color=&quot;%1&quot;&gt;, &lt;/font&gt;&lt;font color = &quot;% 1 &quot;&gt; &lt;/ font&gt; &lt;font color =&quot;% 6 &quot;&gt; &lt;/ font&gt;&lt;font color=&quot;%1&quot;&gt;, &lt;/font&gt; &lt;font color =&quot;% 7 &quot;&gt; &lt;/ font&gt; &lt;font color=&quot;%1&quot;&gt; &lt;/font&gt;&lt;font color=&quot;%1&quot;&gt;,&lt;/font&gt; &lt;font color=&quot;%2&quot;&gt; % 3 &lt;font color=&quot;%1&quot;&gt;. &lt;/ font&gt;</translation>
</message>
</context>
<context>
@ -3191,20 +3253,36 @@ Please try again.</source>
<name>SelectThingPage</name>
<message>
<source>Select a kind of things</source>
<translation> </translation>
<translation type="vanished"> </translation>
</message>
<message>
<source>Select a %1</source>
<translation>%1 </translation>
<translation type="vanished">%1 </translation>
</message>
<message>
<source>Select a thing</source>
<translation>() </translation>
<translation type="vanished">() </translation>
</message>
<message>
<source>Any %1</source>
<translation> %1</translation>
</message>
<message>
<source>Select kind of things</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select thing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SensorDevicePagePost110</name>
@ -3463,6 +3541,14 @@ Please try again.</source>
<source>Next</source>
<translation></translation>
</message>
<message>
<source>OAuth is not supported on this platform. Please use this app on a different device to set up this thing.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>In order to use OAuth on this platform, make sure qml-module-qtwebview is installed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShutterDeviceListPage</name>
@ -3640,6 +3726,10 @@ Do you want to proceed?</source>
<translation>
?</translation>
</message>
<message>
<source>Failure adding repository.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TimeEventDelegate</name>

View File

@ -180,23 +180,10 @@ Page {
}
RowLayout {
Layout.leftMargin: app.margins; Layout.rightMargin: app.margins
TextField {
PasswordTextField {
id: passwordTextField
Layout.fillWidth: true
echoMode: hiddenPassword ? TextInput.Password : TextInput.Normal
property bool hiddenPassword: true
}
ColorIcon {
Layout.preferredHeight: app.iconSize
Layout.preferredWidth: app.iconSize
name: "../images/eye.svg"
color: passwordTextField.hiddenPassword ? keyColor : app.accentColor
MouseArea {
anchors.fill: parent
onClicked: {
passwordTextField.hiddenPassword = !passwordTextField.hiddenPassword
}
}
signup: false
}
}
@ -208,7 +195,7 @@ Page {
enabled: usernameTextField.acceptableInput
onClicked: {
busyOverlay.shown = true
AWSClient.login(usernameTextField.text, passwordTextField.text);
AWSClient.login(usernameTextField.text, passwordTextField.password);
}
}
@ -338,13 +325,18 @@ Page {
id: passwordTextField
Layout.leftMargin: app.margins; Layout.rightMargin: app.margins
Layout.fillWidth: true
minPasswordLength: 8
requireLowerCaseLetter: true
requireUpperCaseLetter: true
requireNumber: true
requireSpecialChar: false
}
Button {
Layout.fillWidth: true
Layout.leftMargin: app.margins; Layout.rightMargin: app.margins; Layout.topMargin: app.margins
text: qsTr("Sign up")
enabled: usernameTextField.acceptableInput && passwordTextField.isValidPassword
enabled: usernameTextField.acceptableInput && passwordTextField.isValid
onClicked: {
busyOverlay.shown = true;
AWSClient.signup(usernameTextField.text, passwordTextField.password)
@ -576,13 +568,18 @@ Page {
PasswordTextField {
id: passwordTextField
minPasswordLength: 8
requireLowerCaseLetter: true
requireUpperCaseLetter: true
requireNumber: true
requireSpecialChar: false
Layout.fillWidth: true; Layout.leftMargin: app.margins; Layout.rightMargin: app.margins
}
Button {
Layout.fillWidth: true; Layout.leftMargin: app.margins; Layout.rightMargin: app.margins
text: qsTr("Reset password")
enabled: passwordTextField.isValidPassword && codeTextField.text.length > 0
enabled: passwordTextField.isValid && codeTextField.text.length > 0
onClicked: {
busyOverlay.shown = true
AWSClient.confirmForgotPassword(confirmResetPasswordPage.email, codeTextField.text, passwordTextField.password)

View File

@ -5,18 +5,31 @@ import QtQuick.Layouts 1.2
ColumnLayout {
id: root
property int minPasswordLength: 12
property bool signup: true
// Only used when signup is true
property int minPasswordLength: 12
property bool requireSpecialChar: true
property bool requireNumber: true
property bool requireUpperCaseLetter: true
property bool requireLowerCaseLetter: true
readonly property alias password: passwordTextField.text
readonly property bool isValidPassword: isLongEnough && hasLower && hasUpper && hasNumbers && hasSpecialChar && (confirmationMatches || !signup)
readonly property bool isValidPassword:
isLongEnough &&
(hasLower || !requireLowerCaseLetter) &&
(hasUpper || !requireUpperCaseLetter) &&
(hasNumbers || !requireNumber) &&
(hasSpecialChar || !requireSpecialChar)
readonly property bool isValid: !signup || (isValidPassword && confirmationMatches)
readonly property bool isLongEnough: passwordTextField.text.length >= minPasswordLength
readonly property bool hasLower: passwordTextField.text.search(/[a-z]/) >= 0
readonly property bool hasUpper: passwordTextField.text.search(/[A-Z/]/) >= 0
readonly property bool hasNumbers: passwordTextField.text.search(/[0-9]/) >= 0
readonly property bool hasSpecialChar: passwordTextField.text.search(/[\.,\*!"$%&/()=?`'+#'¡^°²³¼\[\]|{}\\@]/) >= 0
readonly property bool hasNumbers: passwordTextField.text.search(/[0-9]/) >= 0
readonly property bool hasSpecialChar: passwordTextField.text.search(/(?=.*?[$*.\[\]{}()?\-'"!@#%&/\\,><':;|_~`^])/) >= 0
readonly property bool confirmationMatches: passwordTextField.text === confirmationPasswordTextField.text
property bool hiddenPassword: true
@ -29,6 +42,41 @@ ColumnLayout {
Layout.fillWidth: true
echoMode: root.hiddenPassword ? TextInput.Password : TextInput.Normal
placeholderText: root.signup ? qsTr("Pick a password") : ""
ToolTip.visible: root.signup && focus && !root.isValidPassword
ToolTip.delay: 1000
ToolTip.onVisibleChanged: print("Tooltip visible changed:", ToolTip.visible, focus, root.isValidPassword)
ToolTip.text: {
var texts = []
var checks = []
texts.push(qsTr("Minimum %1 characters").arg(root.minPasswordLength))
checks.push(root.isLongEnough)
if (root.requireLowerCaseLetter) {
texts.push(qsTr("Lowercase letters"))
checks.push(root.hasLower)
}
if (root.requireUpperCaseLetter) {
texts.push(qsTr("Uppercase letters"))
checks.push(root.hasUpper)
}
if (root.requireNumber) {
texts.push(qsTr("Numbers"))
checks.push(root.hasNumbers)
}
if (root.requireSpecialChar) {
texts.push(qsTr("Special characters"))
checks.push(root.hasSpecialChar)
}
var ret = []
for (var i = 0; i < texts.length; i++) {
var entry = "<font color=\"%1\">• ".arg(checks[i] ? app.foregroundColor : app.accentColor)
entry += texts[i]
entry += "</font>"
ret.push(entry)
}
return ret.join("<br>")
}
}
ColorIcon {
Layout.preferredHeight: app.iconSize
@ -44,24 +92,6 @@ ColumnLayout {
}
}
Label {
Layout.fillWidth: true
wrapMode: Text.WordWrap
visible: root.signup
// TRANSLATORS: %1 will be replaced with the normal text color, %2 the color for the length check
text: qsTr("<font color=\"%1\">The password needs to be </font><font color=\"%2\">at least %3 characters long</font><font color=\"%1\">, contain </font><font color=\"%4\">lowercase</font><font color=\"%1\">, </font><font color=\"%5\">uppercase</font><font color=\"%1\"> letters as well as </font><font color=\"%6\">numbers</font><font color=\"%1\"> and </font><font color=\"%7\">special characters</font><font color=\"%1\">.</font>")
.arg(app.accentColor)
.arg(!root.isLongEnough ? "red" : app.accentColor)
.arg(root.minPasswordLength)
.arg(!root.hasLower ? "red" : app.accentColor)
.arg(!root.hasUpper ? "red" : app.accentColor)
.arg(!root.hasNumbers ? "red" : app.accentColor)
.arg(!root.hasSpecialChar ? "red" : app.accentColor)
font.pixelSize: app.smallFont
}
RowLayout {
visible: root.signup
@ -71,28 +101,5 @@ ColumnLayout {
echoMode: root.hiddenPassword ? TextInput.Password : TextInput.Normal
placeholderText: qsTr("Confirm password")
}
ColorIcon {
Layout.preferredHeight: app.iconSize
Layout.preferredWidth: app.iconSize
name: "../images/eye.svg"
color: root.hiddenPassword ? keyColor : app.accentColor
MouseArea {
anchors.fill: parent
onClicked: {
root.hiddenPassword = !root.hiddenPassword
}
}
}
}
Label {
Layout.fillWidth: true
wrapMode: Text.WordWrap
visible: root.signup
text: root.confirmationMatches ? qsTr("<font color=\"%1\">The passwords match.</font>").arg(app.accentColor) : qsTr("<font color=\"%1\">The passwords </font><font color=\"%2\">do not</font><font color=\"%1\"> match.</font>").arg(app.accentColor).arg("red")
font.pixelSize: app.smallFont
}
}

View File

@ -104,6 +104,10 @@ Page {
id: passwordTextField
Layout.fillWidth: true
minPasswordLength: 8
requireLowerCaseLetter: true
requireUpperCaseLetter: true
requireNumber: true
requireSpecialChar: false
signup: engine.jsonRpcClient.initialSetupRequired
}
}
@ -112,7 +116,7 @@ Page {
Layout.fillWidth: true
Layout.leftMargin: app.margins; Layout.rightMargin: app.margins; Layout.bottomMargin: app.margins
text: qsTr("OK")
enabled: passwordTextField.isValidPassword
enabled: passwordTextField.isValid
onClicked: {
if (engine.jsonRpcClient.initialSetupRequired) {
print("create user")

View File

@ -440,11 +440,11 @@ Page {
visible: pairingPage.setupMethod === "SetupMethodUserAndPassword"
}
TextField {
PasswordTextField {
id: pinTextField
Layout.fillWidth: true
visible: pairingPage.setupMethod === "SetupMethodDisplayPin" || pairingPage.setupMethod === "SetupMethodUserAndPassword"
echoMode: TextField.Password
signup: false
}