mirror of
https://github.com/house-of-abbey/GarminHomeAssistant.git
synced 2025-04-30 12:42:27 +00:00
add PIN transcoding
This commit is contained in:
@ -60,6 +60,7 @@
|
||||
<string id="SettingsPollDelay">Zusätzliche Abfrageverzögerung (in Sekunden). Fügt eine Verzögerung zwischen der Statusaktualisierung aller Menüelemente hinzu.</string>
|
||||
<string id="SettingsConfirmTimeout">Nach dieser Zeit (in Sekunden) wird der Bestätigungsdialog einer Aktion geschlossen und die
|
||||
Aktion abgebrochen. Auf 0 setzen, um den Timeout zu deaktivieren.</string>
|
||||
<string id="SettingsPinMask">Schablone um die PIN aus der Dashboard Config zu transkodieren.</string>
|
||||
<string id="SettingsTextAlign">Menüausrichtung links (aus) oder rechts (ein).</string>
|
||||
<string id="LeftToRight">Links nach rechts</string>
|
||||
<string id="RightToLeft">Rechts nach links</string>
|
||||
|
@ -65,6 +65,14 @@
|
||||
-->
|
||||
<property id="confirm_timeout" type="number">3</property>
|
||||
|
||||
<!--
|
||||
This mask transcodes the plain text PIN from the public dashboard config.
|
||||
Every digit is used to increase the corresponding digit at this position
|
||||
in the PIN by the value given, starting at 1 if a value bigger than 4 has
|
||||
been reached.
|
||||
-->
|
||||
<property id="pin_mask" type="string"></property>
|
||||
|
||||
<!--
|
||||
Left to right or right to left text. Language dependent.
|
||||
-->
|
||||
|
@ -79,6 +79,13 @@
|
||||
<settingConfig type="numeric" min="0" />
|
||||
</setting>
|
||||
|
||||
<setting
|
||||
propertyKey="@Properties.pin_mask"
|
||||
title="@Strings.SettingsPinMask"
|
||||
>
|
||||
<settingConfig type="alphaNumeric" />
|
||||
</setting>
|
||||
|
||||
<setting
|
||||
propertyKey="@Properties.menu_alignment"
|
||||
title="@Strings.SettingsTextAlign"
|
||||
|
@ -53,6 +53,7 @@
|
||||
<string id="SettingsAppTimeout">Timeout in seconds. Exit the application after this period of inactivity to save the device battery.</string>
|
||||
<string id="SettingsPollDelay">Additional poll delay (in seconds). Adds a delay between the status update of all menu items.</string>
|
||||
<string id="SettingsConfirmTimeout">After this time (in seconds), a confirmation dialog for an action is automatically closed and the action is cancelled. Set to 0 to disable the timeout.</string>
|
||||
<string id="SettingsPinMask">Integer Mask to transcode the plain text PIN from the public dashboard config.</string>
|
||||
<string id="SettingsTextAlign">Left (off) or Right (on) Menu Alignment.</string>
|
||||
<string id="LeftToRight">Left to right</string>
|
||||
<string id="RightToLeft">Right to Left</string>
|
||||
|
@ -118,10 +118,17 @@ class HomeAssistantPinConfirmationDelegate extends WatchUi.BehaviorDelegate {
|
||||
return true;
|
||||
}
|
||||
|
||||
function getTranscodedCurrentDigit() as Number {
|
||||
var currentDigit = mPin[mCurrentIndex].toString().toNumber(); // this is ugly, but apparently the only way for char<->number comparisons
|
||||
// TODO: Transcode digit using a pin mask for additional security
|
||||
return currentDigit;
|
||||
function getTranscodedCurrentDigit() as Number or Null {
|
||||
var currentDigit = mPin[mCurrentIndex].toString().toNumber(); // this is ugly, but apparently the only way for char<->number conversions
|
||||
if (currentDigit == null) {
|
||||
return null;
|
||||
}
|
||||
var pinMask = Settings.getPinMask();
|
||||
var maskDigit = pinMask.substring(mCurrentIndex, mCurrentIndex+1).toNumber();
|
||||
if (maskDigit == null) {
|
||||
return currentDigit;
|
||||
}
|
||||
return ((currentDigit + maskDigit - 1) % 4) + 1;
|
||||
}
|
||||
|
||||
function resetTimer() {
|
||||
|
@ -38,6 +38,7 @@ class Settings {
|
||||
private static var mAppTimeout as Lang.Number = 0; // seconds
|
||||
private static var mPollDelay as Lang.Number = 0; // seconds
|
||||
private static var mConfirmTimeout as Lang.Number = 3; // seconds
|
||||
private static var mPinMask as Lang.String = "";
|
||||
private static var mMenuAlignment as Lang.Number = WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_LEFT;
|
||||
private static var mIsSensorsLevelEnabled as Lang.Boolean = false;
|
||||
private static var mBatteryRefreshRate as Lang.Number = 15; // minutes
|
||||
@ -59,6 +60,7 @@ class Settings {
|
||||
mAppTimeout = Properties.getValue("app_timeout");
|
||||
mPollDelay = Properties.getValue("poll_delay_combined");
|
||||
mConfirmTimeout = Properties.getValue("confirm_timeout");
|
||||
mPinMask = Properties.getValue("pin_mask");
|
||||
mMenuAlignment = Properties.getValue("menu_alignment");
|
||||
mIsSensorsLevelEnabled = Properties.getValue("enable_battery_level");
|
||||
mBatteryRefreshRate = Properties.getValue("battery_level_refresh_rate");
|
||||
@ -164,6 +166,10 @@ class Settings {
|
||||
return mConfirmTimeout * 1000; // Convert to milliseconds
|
||||
}
|
||||
|
||||
static function getPinMask() as Lang.String {
|
||||
return mPinMask;
|
||||
}
|
||||
|
||||
static function getMenuAlignment() as Lang.Number {
|
||||
return mMenuAlignment; // Either WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_RIGHT or WatchUi.MenuItem.MENU_ITEM_LABEL_ALIGN_LEFT
|
||||
}
|
||||
|
Reference in New Issue
Block a user