From 3ffd0e063fe1eb6a22df217243d1480988de08a5 Mon Sep 17 00:00:00 2001 From: Mondei1 Date: Mon, 13 Jul 2020 19:17:43 +0200 Subject: [PATCH] Password generator implemented - Passwords also get's checked if it's compromised --- app/build.gradle | 3 + .../github/mondei1/offpass/CreateActivity.kt | 217 ++++++++++++++---- .../mondei1/offpass/GeneratorActivity.kt | 17 ++ app/src/main/res/drawable-hdpi/ic_add.png | Bin 0 -> 1011 bytes .../res/drawable-hdpi/ic_content_copy.png | Bin 0 -> 1320 bytes app/src/main/res/drawable-hdpi/ic_refresh.png | Bin 0 -> 1925 bytes app/src/main/res/drawable-hdpi/ic_remove.png | Bin 0 -> 526 bytes app/src/main/res/drawable-mdpi/ic_add.png | Bin 0 -> 395 bytes .../res/drawable-mdpi/ic_content_copy.png | Bin 0 -> 914 bytes app/src/main/res/drawable-mdpi/ic_refresh.png | Bin 0 -> 1279 bytes app/src/main/res/drawable-mdpi/ic_remove.png | Bin 0 -> 233 bytes app/src/main/res/drawable-xhdpi/ic_add.png | Bin 0 -> 1252 bytes .../res/drawable-xhdpi/ic_content_copy.png | Bin 0 -> 2162 bytes .../main/res/drawable-xhdpi/ic_refresh.png | Bin 0 -> 3062 bytes app/src/main/res/drawable-xhdpi/ic_remove.png | Bin 0 -> 664 bytes app/src/main/res/drawable-xxhdpi/ic_add.png | Bin 0 -> 2597 bytes .../res/drawable-xxhdpi/ic_content_copy.png | Bin 0 -> 3562 bytes .../main/res/drawable-xxhdpi/ic_refresh.png | Bin 0 -> 4926 bytes .../main/res/drawable-xxhdpi/ic_remove.png | Bin 0 -> 1285 bytes app/src/main/res/drawable-xxxhdpi/ic_add.png | Bin 0 -> 3700 bytes .../res/drawable-xxxhdpi/ic_content_copy.png | Bin 0 -> 5883 bytes .../main/res/drawable-xxxhdpi/ic_refresh.png | Bin 0 -> 8452 bytes .../main/res/drawable-xxxhdpi/ic_remove.png | Bin 0 -> 1846 bytes .../main/res/layout/activity_generator.xml | 170 +++++++++++++- app/src/main/res/layout/activity_view.xml | 4 +- app/src/main/res/values/styles.xml | 7 + 26 files changed, 372 insertions(+), 46 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_add.png create mode 100644 app/src/main/res/drawable-hdpi/ic_content_copy.png create mode 100644 app/src/main/res/drawable-hdpi/ic_refresh.png create mode 100644 app/src/main/res/drawable-hdpi/ic_remove.png create mode 100644 app/src/main/res/drawable-mdpi/ic_add.png create mode 100644 app/src/main/res/drawable-mdpi/ic_content_copy.png create mode 100644 app/src/main/res/drawable-mdpi/ic_refresh.png create mode 100644 app/src/main/res/drawable-mdpi/ic_remove.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_add.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_content_copy.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_refresh.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_remove.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_add.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_content_copy.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_refresh.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_remove.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_add.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_content_copy.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_refresh.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_remove.png diff --git a/app/build.gradle b/app/build.gradle index c68f3e9..796d5e4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -41,6 +41,9 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'androidx.core:core-ktx:1.3.0' + /* Password strengh library */ + compile 'com.nulab-inc:zxcvbn:1.3.0' + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.7" diff --git a/app/src/main/java/com/github/mondei1/offpass/CreateActivity.kt b/app/src/main/java/com/github/mondei1/offpass/CreateActivity.kt index dacd5bc..4faead8 100644 --- a/app/src/main/java/com/github/mondei1/offpass/CreateActivity.kt +++ b/app/src/main/java/com/github/mondei1/offpass/CreateActivity.kt @@ -27,12 +27,16 @@ import com.google.zxing.BarcodeFormat import com.google.zxing.integration.android.IntentIntegrator import com.google.zxing.integration.android.IntentResult import com.journeyapps.barcodescanner.BarcodeEncoder +import com.nulabinc.zxcvbn.Zxcvbn import dev.turingcomplete.kotlinonetimepassword.GoogleAuthenticator import kotlinx.android.synthetic.main.activity_create.* +import kotlinx.android.synthetic.main.activity_generator.* +import kotlinx.android.synthetic.main.activity_generator.view.* import kotlinx.android.synthetic.main.dialogpassphrase.view.* import kotlinx.coroutines.* import java.io.ByteArrayOutputStream import java.lang.IllegalArgumentException +import java.lang.StringBuilder import java.util.* import kotlin.collections.ArrayList @@ -168,54 +172,70 @@ class CreateActivity : AppCompatActivity() { finish() } print_button.setOnClickListener { - // Ask user for passhprase and hint - val builder = AlertDialog.Builder(ContextThemeWrapper(this, R.style.PassphraseDialog)) + fun continueAfterCheck() { + // Ask user for passhprase and hint + val builder = AlertDialog.Builder(ContextThemeWrapper(this, R.style.PassphraseDialog)) - with(builder) { - val editTextLayout = layoutInflater.inflate(R.layout.dialogpassphrase, null) - setView(editTextLayout) - setTitle("Set Passphrase") - setMessage("Final step is it to set your passphrase. Minimum are 8 characters.") - setPositiveButton("Print", DialogInterface.OnClickListener { dialogInterface, i -> - val passphrase = editTextLayout.passphrase_input.text.toString(); - if (passphrase == "") { - // Make a new alert, telling the user that passphrase must not be null. - dialogInterface.cancel() - showError("Empty passphrase", "Passphrase must not be null.") - return@OnClickListener - } - if (passphrase.length < 8) { - // Make a new alert, telling the user that his passphrase doesn't meet the minimum. - dialogInterface.cancel() - showError("Weak passphrase", "Passphrase has to be at least 8 characters long.") - return@OnClickListener - } - if (passphrase != editTextLayout.passphrase2_input.text.toString()) { - // Make a new alert, telling the user that his passphrase doesn't match the repeat field. - dialogInterface.cancel() - showError("Passphrase mismatch", "Both passphrases do not match.") - return@OnClickListener - } + with(builder) { + val editTextLayout = layoutInflater.inflate(R.layout.dialogpassphrase, null) + setView(editTextLayout) + setTitle("Set Passphrase") + setMessage("Final step is it to set your passphrase. Minimum are 8 characters.") + setPositiveButton("Print", DialogInterface.OnClickListener { dialogInterface, i -> + val passphrase = editTextLayout.passphrase_input.text.toString(); + if (passphrase == "") { + // Make a new alert, telling the user that passphrase must not be null. + dialogInterface.cancel() + showError("Empty passphrase", "Passphrase must not be null.") + return@OnClickListener + } + if (passphrase.length < 8) { + // Make a new alert, telling the user that his passphrase doesn't meet the minimum. + dialogInterface.cancel() + showError("Weak passphrase", "Passphrase has to be at least 8 characters long.") + return@OnClickListener + } + if (passphrase != editTextLayout.passphrase2_input.text.toString()) { + // Make a new alert, telling the user that his passphrase doesn't match the repeat field. + dialogInterface.cancel() + showError("Passphrase mismatch", "Both passphrases do not match.") + return@OnClickListener + } - // Check if password is found in our offline password list - if(passwordKnown(passphrase)) { - // Make a new alert, telling the user that his passphrase was found in our local wordlist. - dialogInterface.cancel() - showError("Passphrase is compromised!", "Passphrase got found in a wordlist of bad passwords. " + - "If you already used it somewhere, change it immediately!") - return@OnClickListener - } + // Check if password is found in our offline password list + if(passwordKnown(passphrase)) { + // Make a new alert, telling the user that his passphrase was found in our local wordlist. + dialogInterface.cancel() + showError("Passphrase is compromised!", "Passphrase got found in a wordlist of bad passwords. " + + "If you already used it somewhere, change it immediately!") + return@OnClickListener + } - doPrint(editTextLayout.passphrase_input.text.toString(), + doPrint(editTextLayout.passphrase_input.text.toString(), editTextLayout.hint_input.text.toString()) - }) - setNegativeButton("Go back", DialogInterface.OnClickListener { dialogInterface, i -> - dialogInterface.dismiss() - }) - show() + }) + setNegativeButton("Go back", DialogInterface.OnClickListener { dialogInterface, i -> + dialogInterface.dismiss() + }) + show() + } } + // First check if entered password is compromised + if (passwordKnown(password_input.text.toString())) { + val builder = AlertDialog.Builder(ContextThemeWrapper(this, R.style.ErrorDialog)) + with(builder) { + setTitle("Password compromised!") + setMessage("Your password is weak and should be changed as it got found in a list of weak passwords.") + setPositiveButton("I'll change it", DialogInterface.OnClickListener { dialogInterface, i -> + }) + setNegativeButton("I don't care", DialogInterface.OnClickListener { dialogInterface, i -> + continueAfterCheck() + }) + show() + } + } } password_hide.setOnClickListener { if (password_input.transformationMethod == HideReturnsTransformationMethod.getInstance()) { @@ -227,6 +247,121 @@ class CreateActivity : AppCompatActivity() { } } + password_random.setOnClickListener { + val builder = AlertDialog.Builder(ContextThemeWrapper(this, R.style.PassphraseGenerator)) + + with (builder) { + val layout = layoutInflater.inflate(R.layout.activity_generator, null) + val zxcvbn = Zxcvbn() + var length: Int = 8 + setTitle("Generate password") + setView(layout) + + fun newPassword() { + var combined = "" + val upper_case = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + val lower_case = "abcdefghijklmnopqrstuvwxyz" + val speicals = "!\";#$%&'()*+,-./:;<=>?@[/]^_`" + val digits = "1234567890" + val emojis = arrayOf(0x1F600, 0x1F603, 0x1F601, 0x1F911, 0x1F910, 0x1F637, 0x1F47D, 0x1F480, 0x1F916) + val rand: Random = Random() + + if (layout.AZ.isChecked) combined += upper_case + if (layout.az.isChecked) combined += lower_case + if (layout.zero_nine.isChecked) combined += digits + if (layout.emojis.isChecked) { + emojis.forEach { + combined += String(Character.toChars(it)) + } + } + if (layout.special.isChecked) combined += speicals + + val sb: StringBuilder = StringBuilder(length) + for (x in 1..length) { + sb.append(combined[rand.nextInt(combined.length)]) + } + + // Adapt text size + if (sb.length > 10) { + layout.random_string.textSize = 24.0f + } else if (sb.length > 16) { + layout.random_string.textSize = 18.0f + } + + // Measure strengh + layout.progressBar.progress = zxcvbn.measure(sb.toString()) + .score + + if (layout.progressBar.progress == 1) { + layout.progressBar.progressTintList = ColorStateList.valueOf(Color.RED) + } else if (layout.progressBar.progress == 2) { + layout.progressBar.progressTintList = ColorStateList.valueOf(Color.YELLOW) + } else if (layout.progressBar.progress == 3) { + layout.progressBar.progressTintList = ColorStateList.valueOf(Color.GREEN) + } else { + layout.progressBar.progressTintList = ColorStateList.valueOf(Color.GREEN) + } + + layout.random_string.setText(sb.toString()) + } + + // Initial set + layout.length_label.setText(length.toString()) + newPassword() + + // Add length + layout.add_button.setOnClickListener { + length++ + layout.length_label.setText(length.toString()) + newPassword() + } + layout.add_button.setOnLongClickListener { + length += 10 + layout.length_label.setText(length.toString()) + newPassword() + + true + } + + // Subtract length + layout.subtract_button.setOnClickListener { + length-- + layout.length_label.setText(length.toString()) + newPassword() + } + layout.subtract_button.setOnLongClickListener { + length -= 10 + layout.length_label.setText(length.toString()) + newPassword() + + true + } + + // Refresh + layout.refresh_button.setOnClickListener { + newPassword() + } + + // Copy password + layout.copy_button.setOnClickListener { + // Copy code if already scanend + val clip: ClipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + clip.setPrimaryClip(ClipData.newPlainText("Random password", layout.random_string.text.toString())) + Toast.makeText(applicationContext, "Copied!", Toast.LENGTH_SHORT).show() + } + + setPositiveButton("Use this", + DialogInterface.OnClickListener { dialog, id -> + password_input.setText(layout.random_string.text) + }) + setNegativeButton("Go back", + DialogInterface.OnClickListener { dialog, id -> + dialog.dismiss() + }) + show() + } + + } fa_input.isFocusable = false diff --git a/app/src/main/java/com/github/mondei1/offpass/GeneratorActivity.kt b/app/src/main/java/com/github/mondei1/offpass/GeneratorActivity.kt index 777b106..f67fcfb 100644 --- a/app/src/main/java/com/github/mondei1/offpass/GeneratorActivity.kt +++ b/app/src/main/java/com/github/mondei1/offpass/GeneratorActivity.kt @@ -2,10 +2,27 @@ package com.github.mondei1.offpass import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.util.Log +import kotlinx.android.synthetic.main.activity_generator.* class GeneratorActivity : AppCompatActivity() { + var length: Int = 12 + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_generator) + + length_label.setText(length.toString()) + Log.i("Generator", "Length: $length") + add_button.setOnClickListener { + Log.i("Generator", "Length: $length") + length++ + length_label.setText(length.toString()) + } + subtract_button.setOnClickListener { + Log.i("Generator", "Length: $length") + length-- + length_label.setText(length.toString()) + } } } \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/ic_add.png b/app/src/main/res/drawable-hdpi/ic_add.png new file mode 100644 index 0000000000000000000000000000000000000000..4969fca7608c4272adcdb9fd9691f039e7668980 GIT binary patch literal 1011 zcmVRN18qX<6N*bR4X*S5w0K$4D zjYx{*&&wKa{=5tm9H(hIP7}uoA57En3GDXtZv4E1k4Rr7&Y-iTv(Q=So5Azn=I{59 zF#`**`Oqe5le98$`pew?{xM?)Er?BM12#z;(1!qEv!q3-0cn#9vkt@X{};fp8L=R3 zC~jYDh;^U`0W35iZK5$FSce`=$e?O~xcwA>P6UuxL});AEp&rII10J>Gy|;HW;4L^fB0$YXGYS_t?IV?drXENEB9-U@Mr$0%Y?MGD{)`E| z@G`)=kH8EzW6T({VY8Xd7ITKhx;1Oe7Vr5SGw@mHs!|KM44dXu)sVKjnKtSI{e&2bIc9ufUZ!Cmj9F zyUByoh{DL%qy^P=N#7Z{a{;8Y+S^L|t;Cz+q}X&tm`oc2GL`#x6jMC{NHRXud zQO;Bu)f5XTT!4F+rlZ7pcVO9=hweI{$Xw#ZdBN&Ya-fFrPyqMvy%(T_2pLby#Qv-YxtddrQ541`#&?>RY z6Egplk1`i~k*-LudFxF{`6~3Y?8Rxx;niv2w383t*X(b2Li#a|+`-e6VfH)>oIFwv zCk9RfoCb!N^Y5OF4ZF1=_U4|$fiIwI1%#rNpK$nRhj{ZY6ACx&T^sJ+znso z<5x-|60_?nbk&)obmj^YC5-l<0WQ;;E}#q2MdAlN{Ikd7VGAR^yQw9J4002ovPDHLkV1fh(*g60J literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_content_copy.png b/app/src/main/res/drawable-hdpi/ic_content_copy.png new file mode 100644 index 0000000000000000000000000000000000000000..5692b30d953fc6718d3ae9371d92ba01b10c5cf8 GIT binary patch literal 1320 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 Qf&c&j07*qoM6N<$f=wXwUH||9 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_add.png b/app/src/main/res/drawable-mdpi/ic_add.png new file mode 100644 index 0000000000000000000000000000000000000000..2eab1382117d957329c7c7601dd56181085a441e GIT binary patch literal 395 zcmV;60d)R}P)4XMU5r_y7T2Mv6 z!k+*-I;E%zHi01V1%bwmbfrga)5X|_+I8}5;{x*nW<}TCjx8i$vp4SEn(VNwoRPv<~5ahT|8-x$0?@(g~PbO_1S;t`~2YE$!B$> zQXZ$KA7FA_Pk>t-!cd1e3~kR>W63@<-oId7=1U!Z zKZ_(~5XOH`Rrj(kax@DD!X;*x$+2HR4JI{O7)?Y>ZfN`tGGE~W9dlC?Co%Lh7!0P1 zFp(z1fy|w>K~?{mwOe<#?}eiKt$wHbnX0FrdS4ifCvXkE1Y4Wg8nZPJSF<(7+UV~g z=Mc|wy}`OH%jcXmzQKfklsJMKK_i`Bfd=JVYJf&)V1u>pU!L{-g5ndkFO*&jjuJ;n zN2ItI=cH8X8|zdMSi?7vzP9^bbN`Y;Y%QV(D~hc=}!3YrNa_ud3kyH z!C3$>TS0^s`24&dzm;LD$g3L1{|(^j(|4$<3aBcoii)a&iYi9T<8C-7t%B<2=BAwf zyxEE*&=9~aw{B1ieg$@d9SRf5xpq=KleCkx1LgCy@cmLUSsk`gmx3OEVPaffslK4MO5;YZ{%{YhKO z_@`qb$Ox#xha}WC|G~bb{BSad|2K>p(I7RBe>JvZB?Uqs01zYq_GQVV0hm#%O@)sD zu(k}P#8em_RkB>kA2qncCiGZ=9U(iQDY$Gz-Gb06t)h$^^BY@ee)q8gz0MIrV zJrh8tKw^ReHV~pA0O(V|JPvea$yf?t1szLIIS~GtB($3D4~_sZBT^upQ~|J!_B;~+ zR<|wNMhqz=sC0MxD2Po!X+gtRG;X6XP>lYL}V z2Mku^HtR%+)sk?o5Lw-GY(k1Vmcoe+ghDc_7nt=zGz!3IyCEYf2qm1u0kG782`R3i zy12M_b^*_>udko9ei2GImjjW4ZpSq$M59BnP4@1Yp#zZJF!lqF03hv|69K5nbHivE zP6EhosM+0+PKd_4;UoZU)sb*!75ry6oCLs6iTn@4UK9ljU{Mrd{e7`0iedo_tXNRw z6<*S&03Lp9GvoW*sQfMT3UL4(fPdEk8m{M>*Z{{7oqFU#_|#S#2FGd7TB{nfAy*ECejhX1N>3I*ey=JOezMBX?VOcX#tbUe*FPUG<^<{{9>U%glH|a8S~OkeB2U zUf=;Q;gLoRK6SVUTcE34E@x(Y=W57e_MDjw%?Vto;DUe>*h`X5fIP?}C1BAN-&cAc zj|dS59PV*wy15KBB0V$#8<8$z?3f+Br>BWb=02fs5fK3CibJ6)XdLMR(gmS$NmWD` z5sES*2!VYWSOc_l(bWRBNpKMq!Yl+zlmdsV0K-XokwVZUFbX<^^re}747LaO0PGW? zuYex}rx8`5FwGboca9B)ZI(C}y$^5LWd!>Ba}L%@IvK4RFElN28u;4GHj~TUK3mc} zCXw4%Y^=j%PW*LhOxCm#Wez6EK)QW5E=nOQQt4( z3?OgG78tgbn&PXHz9|&wY-s6AmMp^9hV*9yp7f7o?~@GFRe_`*V_}4#3(mPpL*Oh~ zWY{1uiWDjZt`SJ@As;oO=H_n1M7%Gd(C?&~9ubL)hTNt#Y3q8WQi zC1&a@2v{cgDIJ~CBMaE=Nv04*hkK}$Dn!XtbZ<- zGm)0;6~TVc`NaLkHtcWA1}IYeU-lgx9j#{eyx=71SwNxCxL_FAXJ#LQ?KHF3z_x(B zZN_JU0}`Y086iF!$RnKs1}M;ppO>&ZTAg#1#HiFc+K|XGDNz9O0{XU*76HhUM)v=HE03=LW2 zZn+0zH!uvEPAyexvq+5Ql%!#d-DEQN7NIyaG<2of8(?C6edK9v?EqHd+uFF#-4{{Tc3h9)sg7j6Im002ovPDHLkV1i4DNAmyx literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_remove.png b/app/src/main/res/drawable-mdpi/ic_remove.png new file mode 100644 index 0000000000000000000000000000000000000000..2ecdd65234848ff3ea5e8752d0b64c3fe0fb01b8 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ4W2HJArY-_CpqRhEAp_WKbUlq z_12yG-?|rD8z-g6hpuw3V#=|<&AmXQYmvr3+r8gsS7}bKGJJoa^@()fk2R@Ym))z5 z#8-Z^$a*%1FTP|4Gqc1ChqnCmtml;{KToPE hQLhcOzsvq4zy8{)re#`{20*tnc)I$ztaD0e0swh+VIKeh literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_add.png b/app/src/main/res/drawable-xhdpi/ic_add.png new file mode 100644 index 0000000000000000000000000000000000000000..61c63eb5b9a9f719fb01065cd54dda878b4c04a4 GIT binary patch literal 1252 zcmV>u4KhkmcGoav&}hG?--f|L7+juER#0{kE&FXEsF%3K;uIi`2YB;$2Wo( ziECYXfxG}-1TGL427Y|Ckbmqj*aUe4esZ6<3El*63_QPD&OdnAWDFhx0B-;{fg5NJ z0Dzn1%@{au`rt|41EVhh2AgC8Kq3IhYhwTa%x(Y66tF;Gnni03fZ5!G-?JYi$PGYi z4#31#e+6NY-}*cnYk&cBvHw#01%TVXyTaBcV6e&o0>mc5)&Rh4CgY3kyZV#3M`sg& zc!4BC*MJ=xbOykH89~pUb!;to2LQ}9K#353k2sqHz;t^X0Pb*@>>UTJY;Z?^D0u)J zh~6gPZg2y@NQE;XYV8HgoCLKdAb>3MXbb?t3nUTlq$s$dvj)I0vlfspaOVafdz-+D z1SRrAYQYYMT5CXZz)=XH!~&fG2n`@2``bAHJti2Pi=t*82PpAv@^h_d4Zx}jBceZb zg;_3dYyxIBmGQ~c1cnBD0RRSkgJHrj%`nYu0+?RLp61VB7WeTRvuRkL;~D(kpRaao z;_>(=S$~tCREEg=fyYn4ysyCDzNS;_c4 z1&QK8vM7lqdr^fGAbw9bxWvRQ01D0bngxR~uKsnZO8wFNmuuXU8dgSr!xFAwcLP zu$T*Fpr@US>`XvY%MPtt8eIX1S@<1s$aA&*q7_t>MQwHU=dgEZn=$KpFLIUH6w)nT zCEF|HDn#w?egZ%~l*X$%QU(c`olw_WYzb#0*`s!2z3q~w<5xJ^sF$_ZxG4&8@v_Cs}p1Nh+~=o7$m zjPV=;&w=qAV>~hN^ca1eV?0Ov7VCMuKc1e^#r**M_m7|I!z9BejF%zG;)=OiCRT07wsi_O?4S=V^g^@J~T7dKg z0Orf%8boPG&F1w0^P*^m(T8hd`yC>6Wk|t@prx}0pe&CcNsF6Aa}vbF5&xISj=Wo! z#9+Qp5QqN{GHkvuvNlQ{X)fN$1mGr6DmgWOZw&yDYlE5r9+_Zg0Icj2ETuI!gVu3? zVQ-T|$p^F?*4qTkj;*p%8r!+SI|M>n@2k5*-eQZ4F#l0?UWrm;03sJCbwDX*qIo*J z1EHwm9<{qS*e<{SG9z{Vqom!O1k(iS=7{8l)&&u`2E430NLt)m11$eFhL<#WU0X+j zhd(_2Jv<4sop$vX>Z4cc!z+m5fW5UO}@`Lnyzm75b{(1Vpc>D_^2jXyzZ(a=m O0000% zzl$tO6~{l{>fXM??lpUl#!0-&Gg?8xKyVSRp_;!yST`{;+sMGAG0@!5Kv0}SaKV?z z3&g<0e_%AaU?3Tj7qusUN3$XLhHTo!bxYfueh=Pt|sP`_!rLIaLb}$dcvp zVzGG9(VfzDryZOEr(M_OYX|nMbM>U>_RJTni~Yp@lCJd^b>I{_)9t#`uIo-0i^XRj zdgrH;w*9)qZv=l4{8#82bd9(Mt`$qE)3wmG@_p11xee%AGCh#>BWq)QMP0>bxzD7d z-@T#HH{S$q5F1Gw!A7t_+5j8m@9ipzZu!jyd>bo5u~-{qZHV=z6ZNWR{Ndn3Un~}% zk+e>Ovq8xQl744klwXcq&mF*g9~l(IHk3X|_toH)K@>VX03n1QA-!hn3t91BwXzV( zeFh_b;bI+eU=Dy{83`O5pn33b1^~pXGLZD8s0N8M*Q`SUrwqCbBnMKjOVL;)i+>zpAd0__73iC0$?;}ZCQKE0B|1tt+N0q-q?BVw+DbkK+2T|8Q9C0 zFWV!Iz6g8|!cRe05?7!r;0mRpQqYwot4CMD>JWCX*cPq?MOWpS{JrV^8p1CE;RkKY z%NM*@JO+XhNzq1n&~ zaQx}12#lA&`=>y|cknTQRJ~;8`tnY-^j~N;6<|3osFjp>YW29A3yk5q^9N(oZn9vzdU-oncxP6 z5Pn_&^U+;&T+z{)gG$cIJ3;a@B}bUsx_T8SsO%V{qg8UCTp>OX`ltfKtnMF^EWppL zT~XKo0a%Sq-vC=4vs@l8M2`ET{j}1<31VHZG;EOmwSO<;IkuAs4IuQJ9w8@4YZt>LtDH6k z{1=T5Wvc}cSAkl8J_{gPK%wKAiB6jWJ__6A17HY&u)+hy{7w*9`~8P#nG=10BQ=rf z?eqa;Cs;O8o^D7JW#j})$UJEobYW{ILfe^O2&_uH;3CNR#4$ln&!<>`4^2y4u+<5Y zR)IUA?_AQ40LcFA5dhT7+KyEqL?-Cg-5CL}WstR}<&%9ty`kTpGEpU zP60>bBN$UGz;9XWejkulfwFlyI}Z@7eO3tjIMV@z}MMHBz!#Boi191wt1d3x`GfAI=q0wH&q+n=IDLKK>f#z9> zkZ?)S$MAr?CFTRF{rcGxB7LO7j>k-%0((l{8%*A|-ba{4dMqPU(sMbkIRpSH7AU7Y zJ_+HlQdZa{Mh`LthLjKRTWK?=#rqTvmrPLlCKmafdc1X${NODPtStJAC za{<#6BKygJON#p7Y3__rB0_}*Pfd#MD? zGEqLH#kZ;Qm8yU*#HZS(+r-_XLrC+!&}$!l`hEHAg#7t|Y%x@T)F7z>bk~tvzx4XO z%mR`&!0SNx@nObqbMC{t|3vBY^6urUFHk}rKR+p1r&Y`&^Y}u8ruHMqnpW)f( z4+8)I?>$5MBh`5Vzb#eF-JjphfXEHPWtOXhSI&Ao$khg}*U3&$uW9(!hK&vg0KnpN zf$%elR}%jL-6C$0Zo!JgE#g*Szu^|R)u>Lf4oW>v7pz~?i+?Bn4Wy3+*GPW@KBR5G zcHn_~`SKAwd+&&&ue5D@Mk;XD!WnIQ*0$*$t8Y1j_N;B&Gbn9ReJX8y*3zD}kbjf< oBi>uxSLwPh@XkA*dgzV+52mwkMm3T?+yDRo07*qoM6N<$f(T#{qW}N^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_refresh.png b/app/src/main/res/drawable-xhdpi/ic_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..d9375053c13a409c599a67c3d16513c7410fd5a3 GIT binary patch literal 3062 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 Ef-lp=OaK4? literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_remove.png b/app/src/main/res/drawable-xhdpi/ic_remove.png new file mode 100644 index 0000000000000000000000000000000000000000..c2838b4e334f2a5cb9b6463e0c0d623dc6dee0c0 GIT binary patch literal 664 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 kybGWF)QS1}NUuu&2aCYitfjoIP) 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 S4Oz(m0000uP)*`$Nh26 zy%8tki!b8b1n$~hJ5c+~YK4dH_)UlZ7Tg~>@Cd;0?*7Q(?Ylqn_I=pa_JKcgZ`
  • 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 RQMCX7002ovPDHLkV1mv?yGsB7 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_refresh.png b/app/src/main/res/drawable-xxxhdpi/ic_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..ee85a4da935ab6196b828e43b9bfca6f8edf57d7 GIT binary patch literal 8452 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 M=;zULA@b&b0iko4*#H0l literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_generator.xml b/app/src/main/res/layout/activity_generator.xml index 2fb6fd1..3b05d41 100644 --- a/app/src/main/res/layout/activity_generator.xml +++ b/app/src/main/res/layout/activity_generator.xml @@ -1,9 +1,171 @@ - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_view.xml b/app/src/main/res/layout/activity_view.xml index 33dce6d..7381b1f 100644 --- a/app/src/main/res/layout/activity_view.xml +++ b/app/src/main/res/layout/activity_view.xml @@ -22,7 +22,9 @@ + android:orientation="horizontal" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> bold @android:color/holo_red_light + \ No newline at end of file