From b7cfd12c06abaf204619aa145b6a6f5c97f84230 Mon Sep 17 00:00:00 2001 From: Catfriend1 Date: Sun, 19 Aug 2018 23:10:02 +0200 Subject: [PATCH] Add welcome slide for secure key generation (#4) * Add welcome slide "key generation" * Improve slide icon * Add key generation via ConfigXml to welcome wizard slide If key and config files are already present in syncthing's data folder they won't be overwritten (as ConfigXml checks for that). It's also no problem to go through the slides again, e.g. if the storage permission got revoked after the first app launch granting it. * Remove test mode * Remove "Enjoy Syncthing." * Improve string "Consider backing up your sync data" * Show welcome slides only if mandatory prerequisites are missing. Show only slides that are necessary because of missing prerequisites. Mandatory prerequisites are a) storage permission b) existance of keys and config Remove key generation UI from StateDialogActivity as this is no longer required in the main UI as we ensure generating keys and config before launching to MainActivity. * Minor review adjustments * Review - Improve explanation string on config corruption --- .../activities/FirstStartActivity.java | 151 +++++++++++++++--- .../activities/MainActivity.java | 1 - .../activities/StateDialogActivity.java | 21 +-- .../activities/SyncthingActivity.java | 2 - .../service/SyncthingService.java | 2 +- .../main/res/drawable-hdpi/ic_secure_key.png | Bin 0 -> 9990 bytes .../main/res/drawable-ldpi/ic_secure_key.png | Bin 0 -> 3994 bytes .../main/res/drawable-mdpi/ic_secure_key.png | Bin 0 -> 5097 bytes .../main/res/drawable-xhdpi/ic_secure_key.png | Bin 0 -> 10184 bytes .../res/drawable-xxhdpi/ic_secure_key.png | Bin 0 -> 24426 bytes .../res/drawable-xxxhdpi/ic_secure_key.png | Bin 0 -> 19775 bytes ...ide1.xml => activity_firststart_intro.xml} | 0 .../activity_firststart_key_generation.xml | 53 ++++++ ...tivity_firststart_location_permission.xml} | 0 ...ctivity_firststart_storage_permission.xml} | 0 app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values/colors.xml | 10 +- app/src/main/res/values/strings.xml | 17 +- syncthing/src/github.com/syncthing/syncthing | 2 +- 19 files changed, 206 insertions(+), 55 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_secure_key.png create mode 100644 app/src/main/res/drawable-ldpi/ic_secure_key.png create mode 100644 app/src/main/res/drawable-mdpi/ic_secure_key.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_secure_key.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_secure_key.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_secure_key.png rename app/src/main/res/layout/{activity_firststart_slide1.xml => activity_firststart_intro.xml} (100%) create mode 100644 app/src/main/res/layout/activity_firststart_key_generation.xml rename app/src/main/res/layout/{activity_firststart_slide3.xml => activity_firststart_location_permission.xml} (100%) rename app/src/main/res/layout/{activity_firststart_slide2.xml => activity_firststart_storage_permission.xml} (100%) diff --git a/app/src/main/java/com/nutomic/syncthingandroid/activities/FirstStartActivity.java b/app/src/main/java/com/nutomic/syncthingandroid/activities/FirstStartActivity.java index 05178b04..21c505fb 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/activities/FirstStartActivity.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/activities/FirstStartActivity.java @@ -8,6 +8,7 @@ import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.Color; import android.Manifest; +import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; @@ -33,7 +34,9 @@ import android.widget.Toast; import com.nutomic.syncthingandroid.R; import com.nutomic.syncthingandroid.SyncthingApp; import com.nutomic.syncthingandroid.service.Constants; +import com.nutomic.syncthingandroid.util.ConfigXml; +import java.lang.ref.WeakReference; import javax.inject.Inject; public class FirstStartActivity extends Activity { @@ -41,20 +44,39 @@ public class FirstStartActivity extends Activity { private static String TAG = "FirstStartActivity"; private static final int REQUEST_COARSE_LOCATION = 141; private static final int REQUEST_WRITE_STORAGE = 142; - private static final int SLIDE_POS_LOCATION_PERMISSION = 1; + + private static class Slide { + public int layout; + public int dotColorActive; + public int dotColorInActive; + + Slide (int layout, int dotColorActive, int dotColorInActive) { + this.layout = layout; + this.dotColorActive = dotColorActive; + this.dotColorInActive = dotColorInActive; + } + } + + private Slide[] mSlides; + /** + * Initialize the slide's ViewPager position to "-1" so it will never + * trigger any action in {@link #onBtnNextClick} if the slide is not + * shown. + */ + private int mSlidePosStoragePermission = -1; + private int mSlidePosKeyGeneration = -1; private ViewPager mViewPager; private ViewPagerAdapter mViewPagerAdapter; private LinearLayout mDotsLayout; private TextView[] mDots; - private int[] mLayouts; private Button mBackButton; private Button mNextButton; @Inject SharedPreferences mPreferences; /** - * Handles activity behaviour depending on {@link #isFirstStart()} and {@link #haveStoragePermission()}. + * Handles activity behaviour depending on prerequisites. */ @SuppressLint("ClickableViewAccessibility") @Override @@ -63,11 +85,18 @@ public class FirstStartActivity extends Activity { ((SyncthingApp) getApplication()).component().inject(this); /** - * Recheck storage permission. If it has been revoked after the user - * completed the welcome slides, displays the slides again. + * Check if prerequisites to run the app are still in place. + * If anything mandatory is missing, the according welcome slide(s) will be shown. */ - if (!mPreferences.getBoolean(Constants.PREF_FIRST_START, true) && - haveStoragePermission()) { + Boolean showSlideStoragePermission = !haveStoragePermission(); + Boolean showSlideLocationPermission = !haveLocationPermission(); + Boolean showSlideKeyGeneration = !Constants.getConfigFile(this).exists(); + + /** + * If we don't have to show slides for mandatory prerequisites, + * start directly into MainActivity. + */ + if (!showSlideStoragePermission && !showSlideKeyGeneration) { startApp(); return; } @@ -94,11 +123,28 @@ public class FirstStartActivity extends Activity { } }); - // Layouts of all welcome slides - mLayouts = new int[]{ - R.layout.activity_firststart_slide1, - R.layout.activity_firststart_slide2, - R.layout.activity_firststart_slide3}; + // Add welcome slides to be shown. + int[] colorsActive = getResources().getIntArray(R.array.array_dot_active); + int[] colorsInactive = getResources().getIntArray(R.array.array_dot_inactive); + int slideIndex = 0; + mSlides = new Slide[ + 1 + + (showSlideStoragePermission ? 1 : 0) + + (showSlideLocationPermission ? 1 : 0) + + (showSlideKeyGeneration ? 1 : 0) + ]; + mSlides[slideIndex++] = new Slide(R.layout.activity_firststart_intro, colorsActive[0], colorsInactive[0]); + if (showSlideStoragePermission) { + mSlidePosStoragePermission = slideIndex; + mSlides[slideIndex++] = new Slide(R.layout.activity_firststart_storage_permission, colorsActive[1], colorsInactive[1]); + } + if (showSlideLocationPermission) { + mSlides[slideIndex++] = new Slide(R.layout.activity_firststart_location_permission, colorsActive[2], colorsInactive[2]); + } + if (showSlideKeyGeneration) { + mSlidePosKeyGeneration = slideIndex; + mSlides[slideIndex++] = new Slide(R.layout.activity_firststart_key_generation, colorsActive[3], colorsInactive[3]); + } // Add bottom dots addBottomDots(0); @@ -138,7 +184,7 @@ public class FirstStartActivity extends Activity { public void onBtnNextClick() { // Check if we are allowed to advance to the next slide. - if (mViewPager.getCurrentItem() == SLIDE_POS_LOCATION_PERMISSION) { + if (mViewPager.getCurrentItem() == mSlidePosStoragePermission) { // As the storage permission is a prerequisite to run syncthing, refuse to continue without it. if (!haveStoragePermission()) { Toast.makeText(this, R.string.toast_write_storage_permission_required, @@ -148,10 +194,13 @@ public class FirstStartActivity extends Activity { } int current = getItem(+1); - if (current < mLayouts.length) { + if (current < mSlides.length) { // Move to next slide. mViewPager.setCurrentItem(current); mBackButton.setVisibility(View.VISIBLE); + if (current == mSlidePosKeyGeneration) { + onKeyGenerationSlideShown(); + } } else { // Start the app after "mNextButton" was hit on the last slide. Log.v(TAG, "User completed first start UI."); @@ -161,22 +210,19 @@ public class FirstStartActivity extends Activity { } private void addBottomDots(int currentPage) { - mDots = new TextView[mLayouts.length]; - - int[] colorsActive = getResources().getIntArray(R.array.array_dot_active); - int[] colorsInactive = getResources().getIntArray(R.array.array_dot_inactive); + mDots = new TextView[mSlides.length]; mDotsLayout.removeAllViews(); for (int i = 0; i < mDots.length; i++) { mDots[i] = new TextView(this); mDots[i].setText(Html.fromHtml("•")); mDots[i].setTextSize(35); - mDots[i].setTextColor(colorsInactive[currentPage]); + mDots[i].setTextColor(mSlides[currentPage].dotColorInActive); mDotsLayout.addView(mDots[i]); } if (mDots.length > 0) - mDots[currentPage].setTextColor(colorsActive[currentPage]); + mDots[currentPage].setTextColor(mSlides[currentPage].dotColorActive); } private int getItem(int i) { @@ -191,7 +237,7 @@ public class FirstStartActivity extends Activity { addBottomDots(position); // Change the next button text from next to finish on last slide. - mNextButton.setText(getString((position == mLayouts.length - 1) ? R.string.finish : R.string.cont)); + mNextButton.setText(getString((position == mSlides.length - 1) ? R.string.finish : R.string.cont)); } @Override @@ -229,7 +275,7 @@ public class FirstStartActivity extends Activity { public Object instantiateItem(ViewGroup container, int position) { layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); - View view = layoutInflater.inflate(mLayouts[position], container, false); + View view = layoutInflater.inflate(mSlides[position].layout, container, false); /* Slide: storage permission */ Button btnGrantStoragePerm = (Button) view.findViewById(R.id.btnGrantStoragePerm); @@ -259,7 +305,7 @@ public class FirstStartActivity extends Activity { @Override public int getCount() { - return mLayouts.length; + return mSlides.length; } @Override @@ -279,9 +325,7 @@ public class FirstStartActivity extends Activity { * Storage permission has been granted. */ private void startApp() { - Boolean doInitialKeyGeneration = !Constants.getConfigFile(this).exists(); Intent mainIntent = new Intent(this, MainActivity.class); - mainIntent.putExtra(MainActivity.EXTRA_KEY_GENERATION_IN_PROGRESS, doInitialKeyGeneration); /** * In case start_into_web_gui option is enabled, start both activities @@ -298,6 +342,12 @@ public class FirstStartActivity extends Activity { /** * Permission check and request functions */ + private boolean haveLocationPermission() { + int permissionState = ContextCompat.checkSelfPermission(this, + Manifest.permission.ACCESS_COARSE_LOCATION); + return permissionState == PackageManager.PERMISSION_GRANTED; + } + private void requestLocationPermission() { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, @@ -343,4 +393,55 @@ public class FirstStartActivity extends Activity { } } + /** + * Perform secure key generation in an AsyncTask. + */ + private void onKeyGenerationSlideShown() { + mNextButton.setVisibility(View.GONE); + KeyGenerationTask keyGenerationTask = new KeyGenerationTask(this); + keyGenerationTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } + + /** + * Sets up the initial configuration and generates secure keys. + */ + private static class KeyGenerationTask extends AsyncTask { + private WeakReference refFirstStartActivity; + ConfigXml configXml; + + KeyGenerationTask(FirstStartActivity context) { + refFirstStartActivity = new WeakReference<>(context); + } + + @Override + protected Void doInBackground(Void... voids) { + FirstStartActivity firstStartActivity = refFirstStartActivity.get(); + if (firstStartActivity == null) { + cancel(true); + return null; + } + try { + configXml = new ConfigXml(firstStartActivity); + } catch (ConfigXml.OpenConfigException e) { + TextView keygenStatus = firstStartActivity.findViewById(R.id.key_generation_status); + keygenStatus.setText(firstStartActivity.getString(R.string.config_create_failed)); + cancel(true); + } + return null; + } + + @Override + protected void onPostExecute(Void aVoid) { + // Get a reference to the activity if it is still there. + FirstStartActivity firstStartActivity = refFirstStartActivity.get(); + if (firstStartActivity == null) { + return; + } + TextView keygenStatus = (TextView) firstStartActivity.findViewById(R.id.key_generation_status); + keygenStatus.setText(firstStartActivity.getString(R.string.key_generation_success)); + Button nextButton = (Button) firstStartActivity.findViewById(R.id.btn_next); + nextButton.setVisibility(View.VISIBLE); + } + } + } diff --git a/app/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java b/app/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java index cf34c232..03376e83 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java @@ -109,7 +109,6 @@ public class MainActivity extends StateDialogActivity case STARTING: break; case ACTIVE: - getIntent().putExtra(this.EXTRA_KEY_GENERATION_IN_PROGRESS, false); showBatteryOptimizationDialogIfNecessary(); mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); mDrawerFragment.requestGuiUpdate(); diff --git a/app/src/main/java/com/nutomic/syncthingandroid/activities/StateDialogActivity.java b/app/src/main/java/com/nutomic/syncthingandroid/activities/StateDialogActivity.java index f91e2c51..a9049b5c 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/activities/StateDialogActivity.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/activities/StateDialogActivity.java @@ -124,26 +124,21 @@ public abstract class StateDialogActivity extends SyncthingActivity { DialogLoadingBinding binding = DataBindingUtil.inflate( getLayoutInflater(), R.layout.dialog_loading, null, false); - boolean isGeneratingKeys = getIntent().getBooleanExtra(EXTRA_KEY_GENERATION_IN_PROGRESS, false); - binding.loadingText.setText((isGeneratingKeys) - ? R.string.web_gui_creating_key - : R.string.api_loading); + binding.loadingText.setText(R.string.api_loading); mLoadingDialog = new AlertDialog.Builder(this) .setCancelable(false) .setView(binding.getRoot()) .show(); - if (!isGeneratingKeys) { - new Handler().postDelayed(() -> { - if (this.isFinishing() || mLoadingDialog == null) - return; + new Handler().postDelayed(() -> { + if (this.isFinishing() || mLoadingDialog == null) + return; - binding.loadingSlowMessage.setVisibility(View.VISIBLE); - binding.viewLogs.setOnClickListener(v -> - startActivity(new Intent(this, LogActivity.class))); - }, SLOW_LOADING_TIME); - } + binding.loadingSlowMessage.setVisibility(View.VISIBLE); + binding.viewLogs.setOnClickListener(v -> + startActivity(new Intent(this, LogActivity.class))); + }, SLOW_LOADING_TIME); } private void dismissLoadingDialog() { diff --git a/app/src/main/java/com/nutomic/syncthingandroid/activities/SyncthingActivity.java b/app/src/main/java/com/nutomic/syncthingandroid/activities/SyncthingActivity.java index 827f2cbb..50867d49 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/activities/SyncthingActivity.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/activities/SyncthingActivity.java @@ -22,8 +22,6 @@ import java.util.LinkedList; */ public abstract class SyncthingActivity extends AppCompatActivity implements ServiceConnection { - public static final String EXTRA_KEY_GENERATION_IN_PROGRESS = "com.nutomic.syncthing-android.SyncthingActivity.KEY_GENERATION_IN_PROGRESS"; - private SyncthingService mSyncthingService; private final LinkedList mServiceConnectedListeners = new LinkedList<>(); diff --git a/app/src/main/java/com/nutomic/syncthingandroid/service/SyncthingService.java b/app/src/main/java/com/nutomic/syncthingandroid/service/SyncthingService.java index 53ea6da4..6432b5ec 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/service/SyncthingService.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/service/SyncthingService.java @@ -337,7 +337,7 @@ public class SyncthingService extends Service { syncthingService.mConfig = new ConfigXml(syncthingService); syncthingService.mConfig.updateIfNeeded(); } catch (ConfigXml.OpenConfigException e) { - syncthingService.mNotificationHandler.showCrashedNotification(R.string.config_create_failed, true); + syncthingService.mNotificationHandler.showCrashedNotification(R.string.config_read_failed, true); synchronized (syncthingService.mStateLock) { syncthingService.onServiceStateChange(State.ERROR); } diff --git a/app/src/main/res/drawable-hdpi/ic_secure_key.png b/app/src/main/res/drawable-hdpi/ic_secure_key.png new file mode 100644 index 0000000000000000000000000000000000000000..ed91fe60ed89ea02185c4fc12a9a2ce0f695545f GIT binary patch literal 9990 zcmV+hC;8ZkP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGibpQYkbpg3!Q8EAkCYwn_K~#8N?VSf$ z6j!u>53mahEWLvQA}ERlqXr8K5=Ar?Vz34k6JruJQDd)IqDG@eqp@IFyC@hmA{G=x zM7n@v-jM&?VNi?4nA>)_U~`*;W5wL zaiSw=>6y}lo(6txVQvnpsw(6eZ>g)}LS9}T%$zm%T0u^t@ZrOUaN_jUTy!j#Jmr(* zlM;ZN+m|Lz08WH14ISL{p_ID9D4nyaIV<+la+t5Q#(}5()(c zdCUeLU+|zHhndW&thy8UERc2Sk`IeK_5Z=~yTR}X3Ji!ZEX?Qe`SsZQg3qhRii-+r zUxo&~ymj@Q2YLJdo18m&bY4ngoKHznKAAlqp5nq>EHx?qitjastC^mjA^B(@ln+`3 z9XjNxtE*+aVbrKm%dPs`sLCsJtV(&`h*5QwoD|Q`&&}Q$9T#zK*RCUP$f)KOhDg=>OK3-2-HNLEr1!fjj?wZ;L6g-|&&Z;fU z%l6ebG=j478e0$xZOzQgKwVRZxW1#HmjcS!rIj&J;pZX_9oxJsBt%F?{Wrm1>&q8T zZ%a>261;us+oz(u3`)FkZD zqsywphYzQc$+SvG1kfBjO+4*vW_k^IS-XhEA}l>MA#>CEU#F4D{5QC9_1w+cn(8)l zUL+J?4b6HyB9Rcg!Z@>sOrl*nD}Y8G`QO=wx~b%qZ!;OccUy3|wGDp0H*S(ie7fAb z?L7!}@i^pjw+P-9WM-s9UB7gOArLgxOt0f(*)wN4bhv%!ssKig9B3F98^t3p#p=0r z*tLtNPGzPg$2IUJhg&2nJhUYE;ay82Aq@>pjhWv$nlVBh``$}+H2c%fQFZuOM4)t`JIq$1Da%wLsFXntGc74J z`01~CEY8!pZZl&C3>s#O$DuzCJGQRhaNzKXKZuh%04@L>gWjt6eg(TYS4ZEZ4-wG; z?*4Oa_S9)^wE6Tf@!!4Ym>O>r7%GvuW8z#*0tifk>&%t(H-bMJ3I1!@fH zrP#-MKdsLI8c^_l0Ln&8449w+c$rCQwXZ@qSKT^wA4Ld=3wr{p)j(UL?Po&zT#v#m z@1>(HqiOp$9W%caR;#mYyVt&bI~O1IbB3DmDvC*7j^WROKNB8@KO_FEs7or5nb`J(QY@gT8Vh6BVYl)sv1JiOSiigJSf3lOFzqE9?hrTY2{gW3>}Yc2 zj-an!8urbL0?aSJ3VVre8u^Bcy(p{0&Sh3$6Q5*b7XPGT23t>O{^rH7Eh{bNH8k+C zpvM8h0|#0WB^}4X!GRVZ8<|7?FXGSp-@WcaMt7L*2mt5oiNh`e0iR3(!xCOa$IYHS zTQV?la2R8I|DInsA5}|l*roN;r#MeD*y@#OaXSrL9aW6ID(7OqApuN#l7o$Vz{KW- z)S0pD5*9FJMC6MddofO)ILKw8kRPc9Ygg&jj8}glG#vD zCjc>ur=S!@>Z-u1fx2)jw-S7FtDr72ka^gKy0xaJPJQ{$>n@_xB>m|_2X?#uyn2J5 zqM{NJPD@INA28T<7!l|M-Kl~aiHUj{H+ax&7$APg8d$adR?)iz{Mg1k`fdwDe-rP<~h zaP)No0CZqOqn|U2NhK{VjrI}e)8neNh0tO z2?z){k46K;zOJ4DIDYZPRwB?0+W1-MKLQNYq(K-e-7OVB1(bxoq5_;9-y8h0D&f1} zd|-10fYH=}{`G1yC0W`O0ByuXz|f72Rj81Ssviv9NNPhFPe&3TrKbXa+xLQ1&kJEG zx-nHw4lt@J&?he@Qvw(^Y?vkL;>{z2P*POD$}MF7MFu|_iOCrkOG}C>$sl|-!fyU| z?rv}U`XutYy@*1lN|gt^)C$Pt@IYIM0vJ$0(NHQm zDcWuWXqrGnjjSOOzyM7p)YX0aiW$-rz)D>a*4yes+Jb@b=U5YPf0PS}Y%Xxn8=$Np z2Vx9eNY^G40@$@<^IkmzBQgXK9TWNN`0?X>GWgN(^749P~qKS0A{dR%b;GwpXNws=zEd&Mx93X=qolP5dT&t_8CPM(0 z{RS-Y^js#&J-O6CCM83g0uUyJGoR;ILq5vT$9YxY?2`_TH`8I(9VUE_O8ne= z=;pUGz)VdM43*LAh6FIzN(-LkR)eU%zLpp4U3ucrZysYtj-G91ZYjA}R73>x6i@_UJJ-bF5gB|L7e2&_~N7+>%D9I^oc#b603T+AiV`V={O3$jB zd@CKy(JQ8kdO{*p3L3jyJk%SAMvc;z=LPV$lNqcYW&Sx ziDZEn>eLva_5kk@G~c3%>cGxO6}F5vg1=%)K~%#5xmf?*pN}559#2PERf9+mM*)?s z&+Y6lK70BoH8S++&NXXRy5C@&GH;xw_z(;oYNmPP#wqj78`ro;hX?Px?|&z6gx%=l zc*ZxPtg24@(v($U$&w|1OwnY`667V<{vK8gH9QgAoY5B?P~(eNJL(j9FhVuJJZo*B zqBgP)y%kJUE%RRmCh;GhzCt9_3U7;LE9~F1_3q~FduJ*yKA1@zG{MrrR2}v>_JU`5 z)ex9d1(oPQOwpS$cc3;nqPRMN2qs)jfxP>S8yklyMQ_`_=LnS?bhU;UNwB863T@Tw zN)DSHpOBJ2#MuP1P;fEV@ejfMw*E%02voNhXFz{W49 z&s=I?)Vs@CrJAa8sIIDp>Y5s;;BbJ;t%r$|CST<9xbCQQ5-LeFqOMg`qWL}veB_~` zq71q^+Mq^P19c4zpsQ;U>2!rRrNyi}e*c^+WWCvicsrt>?MYWs)w&{YVCgESu16dq zauM&1pwXAOvba)|5qZ%#!TZbwuM>Zco8auiID2~i4=Yw3BF=q>76pLoa98d24wW8}fXH|;r#M0w_0JAb{DY_HlDCy9 zA~E5WV9=0ZL^`aJLSAGYK7shRJ^+_W-&qd>;eqwXMS|Kv#sM76DR#`VKvYg zZ~L;C>B1vhwridA@j<1u1KhcF?GJL2kN{UJhJ`*Y`+m{fzIeQ%-P{4x)pu>EyF+cL zOTBEM@5mO1+VkhkbZxF}dKL3Bn2dtuOBdNZ3w$v8%EdDbHmiW~DmF?`!7d@se1DXq zd&ESAW9dn+{H|X*&qz;vHFWjzrIP1=;D0xnJeAOtt@`O(Vw$?6?DE{Sl2^|qQ)uFO z(8G>t`*72dveIH1tyXy0Gj?Yi%HY6z+sVrbUIhEMYYgQw(ZSy9#6gdwxECH7X=$7M z|NSR8DIq4ftT->2TUQ-iR#ujpk)Db*G&E_iaLrnJS}KOe)m2v#=i=Ak%6Jy5Xmx5r zxW~B@hdf-Tx!9ApX_ZI*z8++<1im+~pCzL@1g^x-NPR7(55XxZ$}c%~?B}){M4VH{ zj~*nik$|faPyY4$6!Me~!%Rz*lqOz%9X4jnNQqvct2j6~P~6?!RoSfkIx=ZYEEebD z$M87vv@U}RnJpS9k||?YR%UWII^1Sw)BqzRVx;sf% zG*-WDSz}WEhAnxDsK}SHljq%_xk3gBpwkMOwg?RgCR4_+oNOkxcI{fJS>5(nwrm+S zDIr#(acd;$^(&cLL@HBpb3y9?L!@pdMvYX^7a(a^JA#?jfZporsE?_Uhdmw6*EI$zX@@^70bo=BBU2^R79TR@S=fe_b((3=&8Q;PcU=zkb(T zFgYo)cG=2xSIJ<9F*G!AX;gY6;lr!AgqK9%KR`@uTmt^gI24K^j2JRVGK6vq}ySnwe(k8yHLFu|xpAHy9p9CT3*lE!9<(yr}RnUozM! zaNB-z7ci0d%}u{+MP%@k$Lqq`w0drhWUBnLVYXeGCJ6}e_ph(#ipU^=zELm29G?s} z5%|bIo@gnW5f>AYNJe)G2M0TI)C*`JlR=Gma*sBWIPbF&#zFsGl73B1HOI}(g&g*F zj;DbSi^*gpM20_?DCvnez{zQpNx%L!*2Ix!yo!yyP40GzA3Z$G<>eJ5Bgo$tGK|6+?AlIr90Zq%}p8KCj{W^Jh``_k)hNep^8%u zz09>bY^l~9M@L7%mlQRkOc8{UyZ;%A3o>J0$3;E6_phIKTy)5i!t|mpRiWDI^ozAM zRb=QbroBy7RaL1?^}V0ZwVmYKAt5t8C8r}+$}Mr@`lYjEG6Y*UuGvXO^%(EF3hF8F zet%AOW*PaY5^i2OOXLYrOilY($;{>C=jGRHZwoyw>g%TGV1-V%nP+MJrx=@N2 z$f*Bw;M36IFJH3Bpak0yqltMnf|SHqnbB`tWN?oxV#BSGdt!>LA1W-;6A5Y>nwqw@mU?n~ zJU2RS+`2oMN{(7_YO6Wu1nmw_K+(re-ljGCr#*^&27r=+91PT;ftI2Ia2kY=f}1gl z#K6xaM ziXu%O-3Kr^1@@EZJT|p1H{bVR%+2TbPT#4js%lZ&)f{}PT}!t~FNMZfaQ^h+K@b-n z?AUzH9w#L!p~DkrnsZicHoF>)+4^T^0jDuik(17N>+=O{UyF;jwAhy4|Nkr_JBk=2Z9dpvO|m z4t$0=F7l}jWMyScBacbQ%t(tPuWJ*fL8E@|eIXnhc`p--WY=M5DS?WoaF@AUF>* zy^+%Dwl1<5E9VKZV@YgG`}^G-GKntJ69Ujv(K9@HC5XZ1NK^~mCLz7BcF07JBjhcl zxXSRdEoBvvXJXjCJv$ikhDHWtbQ9H;735y)P>d|>X(K0T+UY10=IS9uH6TKDeM=i| zLu8^t0c|A(nATezR7XwGr1b9Bu6F8uGIi==!?i~lp(__Sdgy9OJO1bnL;9JhM%+8S z=H!(}GJ{z6CClQUhdf=Mk)8@g1qGQ^oXT{$=!oZx5q9IGx|~%NWkR8V->Thac5Z(D zq;t;>s@l(F92{c;jMQ>Sfb2nSC_iJ8K@&`(7~bQ4U}Y4NH9cm73c-P4y%%>2YGC z!=BGu;Ni?ua&I+o@23rGhU&wGFHB*Noe?;h zsKJjx`A}6a1iTyw#iThOx?Y7&Cll*=D$3u$sS|&%Z=U%$3pefEdSuJOHZ#AVv<8k{ zdX($2@$8zZ&MsC?V~5CnIn`OtWs-y37o+;gIZtx^YX9H2&UrtG7V#QdR}?BKQecML zyj5=QKexIDu9Yf?T`Lj^T6I`a%qlIk+j;f;jPF)3u1~cfmMdLPtAJ9j07~ivP*^Jf zRaDjN7-a<2=mDqQ$wV0sFv(0E#u}@_&hQf8hTK?^yk~)?x~6WImMAH!s+lRPs1aio z)QuLRYO|1tAW4Xii*|CJHirxnjGXlC_-p46hFJA(*@uJ(6^^@4Vrx&Fy1Xj*&dV$4 z9cptb#?;i>Xz_}52fv;*!+oe_>$BCzF8nLpyJ@o)o1G#%xV?ABN2V8)o$q3DVaH-w*t%y0MEG7-B{u463Z``+7z4Uqw;JKj_JZ{E z^yu4<-7X|AX^~65L2>$h1`Q!E=`aq{Jl199m$m5+(wP+V4U(6~acbm}A?0`96 zE$2mDTFeXF7`GIa_=N*>2=nyj7Q;eR><>q>U=6CGg68yx8omh9%j-zh0sCFBuVMvQh?YH4XH zV;3Yp*KO`Ka$iD4WnG8nZTJZxn;Xhm*viMbFwH^(R(@tcG_;L^z<*T~0GNo(wh-9U3Sz6_J+my2DcuijIp`(RT%5dPicgEy4L%Vi^~EoLz}A63U3* z*JzM-BASJri7mxU_61?oar2jwmv)QJR6%BDW`<#}i&}I9!R3oE*Ckv0$WyzGw_l)) zRa_%Gj`_)&s^gP!_=@)C)YepXSO7SbA+)YUB&#xMRuanaEn+Sb4vyqI?YZw?9n8&3TwJ7bpf+DfaFuMWdsZAs$#7O>3 zBS|qK-B!p2HrvlASXK`nFuwbw^<+aWnEOtr=@2}1|0YTjG;DtJ8jz6lc=cc zl6xNpo{G6lezpc706vd@2X~s(96dc<^RM^qYf_VSg3m_`y^SgcG6XPVYNx%?^eBq7 zrbU7uf@e|L{mKSWMo2aK`v9WJYUDah~628eE)R@4YVNl+D9UQIqpj@7UW6ST^gF2R2@U3 zZDg=h;2z7#U67ZP*L9!!O{?=T|JzvLC~=9@E>fl^39llr3>o&h)Br3cDM9GyG)ari zW_QX?=-%xcJEzT>CsDRszIcAw;w4KvwcxES@Nqz+S&CRJ%0;~`8MBnJV<+2uK7QhC z=jpC9T}E5BIKOrFX7IC|a=8#P*dq)w#?~)zogky*WoGEB*Kt}Zl%?Dytm2YGQVzw^dkMs|Y z@4A`8dj!=En8%j$nHm}zveojdm`IsX95W+D%A;UMIOw^~ki)5vq!kk#(W&{R_Gm5u zK?7e#0AAit9+1(WB=x)o%-!Rsb&@uqk>teJzoB?C^cGWd3tOkLBWIAo4zXd^Ay!F2 zP97PA!Gnju)JYEAHcup0@vr*99D^p$8XUIlJiM`*=;IDP+JUA-1qg+=8s;Y8{RW$CE(9?5Ey8?J;q4xH>|M(=wMZZjD6=o%KYpaqE zUbv99d6Q?3maZYOzyYVFS4&x~bFS+@3auG`dS7EmxhmjPlw-a(uLP`GwMtWUxPznF z@q2ImB{PB@HD)e$eAhc-Ba7YLT!ezAiNTo2Fo~;z72hp(d>(v%+Q0wYWK@>3y5*{% zv?y1m3VIqEOU8b>>^N|q(V`4I9ULg%oH@y{>OYW-h z6e>za<|XVjWyN{91}5fGy&zlwPWGRXq3%(};ev=?1M>0|P*v9eI<03WcRdeYxY*iD z0H;qJ-ZtZ_IUD_aZj9ZLSh-i-dCoKnO&OdF=`hKN4#vt9;53NfMHv_Ti)x^b-vD)y zPno<&w?|ebgjC}0YV@r8dd`~l^-?2~t~+C@u6zSkm6e3Mn#!tb(9qCg+6)@}qPe@8 z_a%VhaxUDx_xQ#A*Zh^0Q4AqnyEm8*uo*LX!siFSav9U@fh8^ga<^r?FP|Kw^Zm}7 zxF6)1LAiv1?b(cSY|gVh%>DrroBlKh`#rG?OQ@*FevT@_`uL_|2AfZ1f{Kdai)W8h z$v3S{aI3b`k|HcUEh#50IX>9e_vQ`!s~7usZ}FJ!?A+=UM)O|K`>2A7O3Lcjd!B6d z!wpw&KJe+x$0=F@uY$_=J!%r^?p$KD1RXtrEmtltqMx{yN6qar75czTO!a805QX z(fYcsu19+xyo_hEc!d#dI+gYD@e!rQ1Z}9RZ`C7ZhiFv*N;Y+*Ui zsKzs2+U}=u!_7}{@3~@p1qtdC%4-{`7I7+mWiT$CKKu9KC08z9{23K}B3)cTqo%I2 zmk4~K6z1lpJ$(4EU8k~Hd3jH&I2@^I{La#<0O)S30h6PG6KZe+^J`l4mn?_!6n9j* z?{g#2R#X7TJDG$7Z-D>k`g{*q@CrKb*nzvHDlcB zj(zDcIwXK)WTY<{Y<7iK1wb*hMAZclmd&_x(sxTe?xyk4w7&3YdS6I>Qx6-%ilC%M z0Lm13B3@p<$hXmi{-X(a&j{%DrR+hy1qHB z3V_GTh2AKW9Zl%Km}mwE#u$Uw1XH*=$sBIE^npw0*g$O>sGtn@POBiy5EW6UwqEeo zufC8aWh)B@4jtWERM6x@dF)vGQ5|yO^${?!7+~G2SKoG(Nd4_5OwiKN?bd&2RR9f7 zF7x>HJgf@!^#x)KE+oEzHNp9?_(3+z_0Ixl-wfCiS_q|e0`xXei7LrfM;T&ExoBSu zyyrKi*5}8?#WC}8GftC1Ff{6ASXHjt<0c_J!8qGqhMxNl|Jhd0?8jd=5BlkwNoQ1P zU9ww{(5e9H!|p}o#7A@OucZ=Sg(yXJJBKTL>n|B?xLy3|csBeRQ~-ZE^o9XiG*~sv z04^l3L0DD<^&pnfuw|sC9^=*55yq3aJ4d%U^FFGzL~F>SXY-i<<+LAvCcXh9gM-6# z%b%7m3LR`?)$O%StqK4~RFbuhUBiR@;l*%vvN>o{-`4NVw|G_^u{Jn#zBOc2@F1JR z2SG`;Hw0dl=^ZTj;g__hj~_@pr&w6_H@|)J@+UcKNuf|+>Ec;4_x^rDMu}wWH2v<7 z!PY&ZVr^3Z^|ue65u`*!KFz9v)3Ign&sSD3x4$;AG6wgTjQhxU>a7mObSkm9A+fX$ zgn7xe^hd{!-MoJB&5dj4R^fK}WO4*yVd0y3yn13^Nr?u-hL3FDli){0PnRy!7W}d0 zTXL`av?%~oQDEFB7hD=%2Q&Xg4eeLAGQa?3{z>#U_gRJku=!`K9tVZoPfdDF4A5}Q`dHce`CjgnbJULw zrI{<9?$Ulrc?p%gD;ul?@sAI&auKP0IR#vv=D|_4p6}o-HV5?h*;ayF?YNUHpK*cGdgtG~+W? z&aW$GnvNYeVJGfsusKF1rgXPC?t7j`z6kx-_nNDiN`IOV7c2RIgPD0>TVs9A-^k!6 z&0BxhpJ-XRdHJkm=(ERde#}$Qz{i;B$xQDnXHPZ%m}h!QQkOsG`92jgUgs`Klt?&s zb`Iv***Rov_h@%AuCvTt^gVN&qqCO(UGH;MmE}_20vo}7iT3R`uhs_L^4r{Cyz=akJ<;S zB8?2aZ41UbPFxrKz|Y*lVQ7zZ@p^(U#ta(w>(;}w@j+R?;SRc^hV?&XY9j02;gbYc z;vYZq`#NSuYMV|;nVteSCAok1=ANR0+!74y{2!>UEXN&RV=2jraph$NjNHs*MpXq{BGmt~Ql5O= z4+B2==5^}N{h8^>IW1|+x=LAbo{Rt5QpVl+rl+OU*4Ig@_72n1BE1dU{%~WJ zaavw4`U&tXJSov(=3>oO%~C!FxI16mqwLg)PV;cTnp6tK9``P&sHmh#Q>KApvtCnk zIGhS>l_{c6rdNgYI-Bz%A-muQf3IEKPf7qSfxC8G zG;f~%gb5QsfugDY;F15b0oMINT}_QV1OH@`7>=Jf8RmEQf#jo{{|x~C2j7vzGnyO1 Qwg3PC07*qoM6N<$f_e5b^8f$< literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi/ic_secure_key.png b/app/src/main/res/drawable-ldpi/ic_secure_key.png new file mode 100644 index 0000000000000000000000000000000000000000..92b9aead6aad73e45db0e70102ab69681f8db1ab GIT binary patch literal 3994 zcmV;L4`uL)P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGibpQYkbpg3!Q8EAk4=+hXK~!i%#hM9N zQ&$#%Z&(tRgs>y4h^VO5YV~uhqhc9rv9z|fXsvc!T1R9GTBY06u~02ltA(Oi3sq4n zFsRfG1X+Y4pj040*b@i@$jTB3Nk~ZY=HABxi3Cu}eDi zu3fvP!WI5sWM`+oBILK86AJk~T8##KR*-IIhp3C+-g>SmKht~Oym@4z$^Sj@X&W+1 z9`0;wZQ*FOTH=r@-Ie-!3;R)wdDq zD&%rCVLpt2-_E*oGi3vzK6TuSk2hylmL{sz1H`2;OeX7-iUmAAD%VyqeynHw$qas?hZS?a3{=0VL<%q;1KlfGS}#| z6wjMAx$YN#&yAFse&g&seXgOQ5l|`nHTAVsv59dpi_NGsszNU7yY%ZXhX~VWhE>7* zvae6tZ(?FfO-Z`ExTd<|e1E?JgV!L@Ea;AZ&r_aXcpzNp=V{Mb_2FL5^q8DttL>l9 zC(Osj{@>@{UUQ47JyIdWzAEEmUo!;Q-bZcNj8oUsS@pGdE?hY4jr6K2%TJ&u#%pU1 z#|`x`-WxzPvFpN78}NagK<6=MqrB_us_(gd`)kVn;&v>ss0~|uy8(M6i-R3!im=6( z3q=;|KC;G*^KV@TE47_Kt<(UGQVVEsV(_9-fI_7O25$4#A-%0zHh*Mm zYj4uo(UI`#tDAdp<4Le>TR;b|jhkp~V@v(}*3AJ(M)uw9_<}Xf;6bYtsNprKBof%+ zX$>eC0GDgK0LgK-3vNuHI|gjs!BSgOuw#}rcz>oP2w7+cvflIrQKdpq+u0Aa##9g- z987U{pYfSis{uv%xv_-hq$&O5;c1OV4V+x29}Eo*HPAHHYF1A(2j4Ao1Y13Q($hBf#U8jxnCiZP@HO_7vOAn>Aq{3c+Doc?_+@e_7YkTm2e!|%0k6ATfHsK| z6c#+Z9caep;tdfDzX7zu{up_xPSLNtx$yKKM)uBb0gI>GoAMAI3V?$a^z`%sGKC_rw6t^}0g|>`(k)ggmD4QgbYN;u zB{TLh7-wyZ&53j60pNV)0E&ZKh;Y0lV=LpBb z{Oq^c4K<<7O^t~#d`N>&l%wpIae5>Y85}2gs33vmez}YTS8{8X!vITxbl^i`L(!8q zvolg(84Aqm>#EKX;!(hXn}T!-^0HqcMB_5#0C74l4|3DjqP9E5f)qkD3T`ty0_kXA zG@G4%XBCp+gLuJ$7dMmOd<*-dwxOyb0?G72CR0`@mCAvFM+33zQ)xKIzFp`T707#Prsg#sQSnvmyt z0|>E5(5CF~ABc<$wIoENfL*;F-K$t66rpv)z;E3eFME3j3sk94DsJFfdRVz~wX2bl z5otiJswYHK4%`;(&da&?nnVKn2+=51D%Dl=YYpddYbx0b)K*pQLLMRVb2EH#Ej?u1 zzV21cWQ0{$GBy#S33=W(@GNAcruY)Ki#0SWgnsO7ieFAq#b*T%%Of)%R0Tzxj`x98Iy2ah z(UGNUxOO14aQ_XYQb|1WrUOQVxO4=ji&r>##N2NTD;HuYy!`-1rAJ`-ooqH{^U0}C z3AHhKmN($%AK?6ZQArHDng3+BGy-N_vm`C&;bD&@YloxWCRRfZszdh<8rducI+4qI z8ASaswx7p*|HU6X?1k%fm}?>ot%)PMU5f2ZEgOK3ZOl*_F_8nGg`fXhyGVlX>L#M1 zmec(6rMokc-PNnn)K)Hs%_u9$h9jSkJAgLe=z>EB-0F!Oek!_g=utc77{|nqC0FaP zgN1EaNI@I6Czp#IPEOx9(&p&{O?l7(Z0KCb!UNf(&kJ9F{ke|SsQ?xBDB@wRvi8kI7r0z-w$ zrrN_13EMXKtuveD=|S4CWrt04T+u^AC=~AGSedSqX~6aV2M0552KCqDv^E!H{Dg zl}6i4h$aQiR%cHR`UEI4o|qPyC5I?N;M_x+;_=cY_^a((CboO?b{ zKbH`X2^s?w6Em5yF&WQFoIIE4|K>XH&^aDXFW?H0DmK3yBN^#`ydyBe)XsA~9cQ7k zMvH;UT29_~XRn0el?b>rH=+T8wvaFfTV7+M%y4E7AGS zQQyyGlsp>V)Wa^8&TZj{6!JdN(W5b)rsgzbI6dRG2nxky?7ZeAFeXz>M<%vN%^X(k ztzu?ML@#~q(m5W>9L&g|yuCx)!fH6%o*I2Hdcy|yZM$|b%ak-rMOalPgAj z$r%DUpkqLCn(cySX_-QeXNF&-n}EPMHsD8w5Ofb18b)a5Gope&c~`*a3+?QuElRlb z%d$bsKTm(ZOb#dO!4;K&td$834M){51)D2Z|#ap@D1SgW1-_fU+li$((@kOurMTnkKjfIWrpd-hM<%q z)_4j_W9yHE)}T*J0RaK>RxbCfIhAIzdev(og!!Mw#@f@9L$Ztnw=uiTos>5U) zh`VwNci?`0@zgmm#I>X=Z}53-qds&i6mpEiVI9rQ%JAK_YuA_`x}U{?)^<_N^~}d1 zZG7>BVaIbjfEfC#0iV}ikFvy1gLZaekw6OLApEZeBOPeuv=UlV!=xM-N&1~@tI(f4 zP@)y3Q1qeIXoekNH?`d-#8X0kF*9cTIqDffSz?rEUH{fwe?jTKk$<-tP^!Sb1HoIa zU%y@Nw>8k}y*FRoMkZmCn_WiGDedpc%e)!?U*7*lF=odl%K!iX07*qoM6N<$f`0v} AI{*Lx literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_secure_key.png b/app/src/main/res/drawable-mdpi/ic_secure_key.png new file mode 100644 index 0000000000000000000000000000000000000000..cd00d9c0c88c7fc68a3324b32b7909bfe87fcb77 GIT binary patch literal 5097 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 LNkvXXu0mjfM+E(* literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_secure_key.png b/app/src/main/res/drawable-xhdpi/ic_secure_key.png new file mode 100644 index 0000000000000000000000000000000000000000..083db689484fcceb9346c9ddf1efcbf142aafa53 GIT binary patch literal 10184 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
)R%#P1!cN|@s zo%lGaw+(uZraN9u0mMRc-baKm{^Vj(gc|_nbEqM;M`|HhXT9{CjW0?{h$-p6QG5s< z0JTIrq&iYOltlZ#JW0JD%T#--;X=VL!QolOgdzW?AP5~d-Gg=LqIAXRUhMk=@qe`7x^Qt8jhh)eP`cvBz70H zajyZAJE&*08#k0(efNjrTv6%VPUX>|9=9=uy%ND>w!`g^7Av5S@RsZQnvhYD+8gFN zyzplxA!}(`X~x=jR?%}}{hi{RJP9~J25`P3B8FLKR95QcKyKk*Xmrk2uhfKL1o%{| zqnyNi4GGTq+QHQ88>1cKnHf@setyq$qfvl$?I+!dgRLwks(se%eSIUnef(2~O8cIs zHY2|sP{r)^f!|(yJr0o1UR#El?B~H(AJQ!t-{aNTo-0z^j2Ky(fo{V|A~Z)TCG>|VWa?m9Xv%$h&L*N9_Z1dfyL|iD($I%lHG}0 zCK$>{H5XDSKiX#ahqTQ8g>O8JOFZcq-0}f>xnQfvW)sU8+uZ%{2x4-y)tLf&{G#Y8 zF21yTm`^`pd*)d`+N}Vbw6pdCqry2R--$e<0@}(Jp)qh5%!XzjcMT3mZog79?g*Iq z9-(KRRNIKJ7mkytf^fLeh_#sWlKu2=$3NZYsVf%*;)yfS?KX|1fiG9X0i3 zQ2KXm{R9s;=J+9XMy2-_xWecBYYnYx({c!DOd?AOBxy(S@@xn+xD+_6nvkHurH$;Q z(iL_DE=6EVkDPq?bw2PnvGwLXDERBI$JcnFd9OM4D=L*j3A%<~fl6E#-oyiSMa&n{LjoXiC=abJo`W?pytv(4TSuh* zJAHG~ZmIeY3x$cb)kx)OvnM>RDe<;t23ikb036>jIIr*dphn<&m4(L@4xyXc&S>sPAYIMIWM1by0q z`#l3;=Bgej#Ey{>3O2kL^>Sf_Dsng2$#zM?`}J`T3X;ZainJ@N2cP8nKYE=28$K8v zyTMzz*52iR+Sb{jquiA_KFbLn=)mz|xM?iExdB^FI8SyTNLWwUP?pvb$+qLm#iaR# z>QllKH(L*mF-^vc@hPkxIh#bt^m^sdqi+F5SBLRG@-l`oxGtEDB(TB&oJW@~L!A-Q zE1tOM`BVvo9#mFQ2%*f1`QeuLCs|p90lkIp9 z;*&rdn|dYz+%p6KTJ3%U z`KeAN*ZDx=uuU|)^>;*X3zI8vf&yXQLF9(6T6+}D zZ~|qR>ViM~n-}uN)HRg$n}{P4-b7*T*kd!Qs(m`EimzNJiKA&AYmM{Iso9Dk7{e;` zq7mExu(prN-K6y_`q^3}o576oF8RAxC?JZ9SMAY8?zgU#*6-v({ElPq4X+nxq^zjeLKqIsv{LewT5FPNl;MxhLrV}yjTeuN7N2U{8+ lH!4+&r9J)m1cG*@KvqxcX^5MAz|b?0nTfUWb3<49KLG9Yv%>%Y literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_firststart_slide1.xml b/app/src/main/res/layout/activity_firststart_intro.xml similarity index 100% rename from app/src/main/res/layout/activity_firststart_slide1.xml rename to app/src/main/res/layout/activity_firststart_intro.xml diff --git a/app/src/main/res/layout/activity_firststart_key_generation.xml b/app/src/main/res/layout/activity_firststart_key_generation.xml new file mode 100644 index 00000000..0266dc30 --- /dev/null +++ b/app/src/main/res/layout/activity_firststart_key_generation.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_firststart_slide3.xml b/app/src/main/res/layout/activity_firststart_location_permission.xml similarity index 100% rename from app/src/main/res/layout/activity_firststart_slide3.xml rename to app/src/main/res/layout/activity_firststart_location_permission.xml diff --git a/app/src/main/res/layout/activity_firststart_slide2.xml b/app/src/main/res/layout/activity_firststart_storage_permission.xml similarity index 100% rename from app/src/main/res/layout/activity_firststart_slide2.xml rename to app/src/main/res/layout/activity_firststart_storage_permission.xml diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 0bfc2cfd..3b593954 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -44,7 +44,7 @@ Bitte melden Sie auftretende Probleme via GitHub. Ladevorgang… - Geheimschlüssel werden generiert. Dies kann einige Minuten dauern. + Geheimschlüssel werden generiert. Dies kann einige Minuten dauern… Syncthing lädt ungewöhnlich lange. Bitte die Logs auf Fehler überprüfen. Verzeichnisse diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 91367a74..9130d255 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -16,32 +16,32 @@ #3395ff #20d2bb #c873f4 - + #5e7c8b #2278d4 #14a895 #a854d4 - + #3e5c6b #93c6fd #8cf9eb #e4b5fc - + #8eacbb @color/dot_light_screen1 @color/dot_light_screen2 @color/dot_light_screen3 - + @color/dot_light_screen4 @color/dot_dark_screen1 @color/dot_dark_screen2 @color/dot_dark_screen3 - + @color/dot_dark_screen4 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 225334b0..51453a41 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,20 +12,24 @@ Welcome to Syncthing for Android - + Introduction Syncthing is an open-source file synchronization application.\n\ To share data with other devices, you need to add their unique device IDs to the device list. Afterwards you can select which folders to share with which devices.\n\ Please report any problems you encounter via Github. - + Storage Permission Syncthing needs to access your storage to do file synchronization. - + Location Permission Syncthing can be configured to run on selected Wi-Fi networks. Android requires applications to have location permissions to be able look up active Wi-Fi network name, as you can sometimes infer users location from the name of the network they are connected to. If you want to use this feature, press the button above to give the required location permissions to Syncthing. Otherwise you can skip this step. + + Key Generation + Secure keys for private data exchange have been successfully generated. + Back Continue @@ -82,7 +86,7 @@ Please report any problems you encounter via Github. Loading… - Generating secure keys. This may take a few minutes. + Generating secure keys. This may take a few minutes… Syncthing is taking very long to load. Use the logs to check for any errors. @@ -649,8 +653,9 @@ Please report any problems you encounter via Github. Syncthing was terminated - - Failed to create config file + + Failed to create configuration. + Failed to read configuration. Consider backing up data from your sync folders, then clear this app\'s data from Android settings and launch it again. A config file crucial to operation is missing diff --git a/syncthing/src/github.com/syncthing/syncthing b/syncthing/src/github.com/syncthing/syncthing index 7812c2c9..6b82538e 160000 --- a/syncthing/src/github.com/syncthing/syncthing +++ b/syncthing/src/github.com/syncthing/syncthing @@ -1 +1 @@ -Subproject commit 7812c2c937ad98c24cb6e0bd56ce1d9b4ab967a4 +Subproject commit 6b82538e623feb4df2bef9fc4b37d581de96309a