diff --git a/CHANGELOG.txt b/CHANGELOG.txt index ee7399d..6d95ca7 100755 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -3,6 +3,7 @@ v0.1.9-not-yet-released< *Added option to share/receive configurations via QR-Code (ZXing Barcode Scanner) *Prevent user from setting incomplete reflector wiring *Add option to generate configuration from passphrase +*TODO: Encode content of QR-Code completely in Base26(A..Z) *TODO: Add Enigma Z (Probably wont happen due to lack of information :/) *TODO: Add multi-Enigma (select any rotor/reflector etc. Probably wont happen too soon) diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/MainActivity.java b/app/src/main/java/de/vanitasvitae/enigmandroid/MainActivity.java index 98db67f..762e9a7 100755 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/MainActivity.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/MainActivity.java @@ -372,16 +372,32 @@ public class MainActivity extends Activity } } + /** + * Set EnigmAndroid into a certain state as described in the QR-Code + * @param mem content of the QR-Code + */ private void restoreStateFromCode(String mem) { - setPrefMachineType(Enigma.chooseEnigmaFromSave(mem)); - updateContentView(); - layoutContainer = LayoutContainer.createLayoutContainer(getPrefMachineType()); - layoutContainer.getEnigma().restoreState(mem); - layoutContainer.setInputPreparer(InputPreparer.createInputPreparer()); - layoutContainer.syncStateFromEnigmaToLayout(); + if(!mem.startsWith(APP_ID+"/")) + { + Toast.makeText(this, R.string.error_no_valid_qr, Toast.LENGTH_LONG).show(); + } + else + { + mem = mem.substring((APP_ID+"/").length()); + setPrefMachineType(Enigma.chooseEnigmaFromSave(mem)); + updateContentView(); + layoutContainer = LayoutContainer.createLayoutContainer(getPrefMachineType()); + layoutContainer.getEnigma().restoreState(mem); + layoutContainer.setInputPreparer(InputPreparer.createInputPreparer()); + layoutContainer.syncStateFromEnigmaToLayout(); + } } + /** + * Set EnigmAndroid into a state calculated from the seed. + * @param seed seed + */ public void createStateFromSeed(String seed) { setPrefMachineType(Enigma.chooseEnigmaFromSeed(seed)); diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_D.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_D.java index e99e557..f553e41 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_D.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_D.java @@ -1,5 +1,6 @@ package de.vanitasvitae.enigmandroid.enigma; +import de.vanitasvitae.enigmandroid.MainActivity; import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector; import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor; @@ -158,7 +159,7 @@ public class Enigma_D extends Enigma { String reflectorConf = mem.substring(mem.lastIndexOf(":r")+2); long s = Long.valueOf(mem.substring(0, mem.indexOf(":r"))); - s = removeDigit(s, 12); //Remove machine type + s = removeDigit(s, 20); //Remove machine type int rot1 = getValue(s, 26); s = removeDigit(s, 26); int ring1 = getValue(s, 26); @@ -186,7 +187,7 @@ public class Enigma_D extends Enigma { @Override public String stateToString() { - String save = ""; + String save = MainActivity.APP_ID+"/"; long s = reflector.getRingSetting(); s = addDigit(s, reflector.getRotation(), 26); s = addDigit(s, rotor3.getRingSetting(), 26); @@ -195,7 +196,7 @@ public class Enigma_D extends Enigma { s = addDigit(s, rotor2.getRotation(), 26); s = addDigit(s, rotor1.getRingSetting(), 26); s = addDigit(s, rotor1.getRotation(), 26); - s = addDigit(s, 6, 12); //Machine #6 + s = addDigit(s, 6, 20); //Machine #6 save = save+s; save = save + ":r" + Plugboard.configurationToString(getState().getConfigurationReflector()); diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G260.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G260.java index c686aab..33a3e0f 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G260.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G260.java @@ -1,5 +1,7 @@ package de.vanitasvitae.enigmandroid.enigma; +import de.vanitasvitae.enigmandroid.MainActivity; + /** * Implementation of the Enigma machine of type G31 (Abwehr) * Copyright (C) 2015 Paul Schaub @@ -31,7 +33,7 @@ public class Enigma_G260 extends Enigma_G31 @Override public String stateToString() { - String save = ""; + String save = MainActivity.APP_ID+"/"; long s = reflector.getRingSetting(); s = addDigit(s, reflector.getRotation(), 26); s = addDigit(s, rotor3.getRingSetting(), 26); @@ -45,7 +47,7 @@ public class Enigma_G260 extends Enigma_G31 s = addDigit(s, rotor2.getNumber(), 10); s = addDigit(s, rotor1.getNumber(), 10); - s = addDigit(s, 5, 12); //Machine #5 + s = addDigit(s, 5, 20); //Machine #5 save = save+s; return save; diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G31.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G31.java index 3004396..bf647a5 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G31.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G31.java @@ -2,6 +2,7 @@ package de.vanitasvitae.enigmandroid.enigma; import android.util.Log; +import de.vanitasvitae.enigmandroid.MainActivity; import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector; import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor; @@ -164,7 +165,7 @@ public class Enigma_G31 extends Enigma public void restoreState(String mem) { long s = Long.valueOf(mem); - s = removeDigit(s, 12); //Remove machine type + s = removeDigit(s, 20); //Remove machine type int r1 = getValue(s, 10); s = removeDigit(s, 10); @@ -201,7 +202,7 @@ public class Enigma_G31 extends Enigma @Override public String stateToString() { - String save = ""; + String save = MainActivity.APP_ID+"/"; long s = reflector.getRingSetting(); s = addDigit(s, reflector.getRotation(), 26); s = addDigit(s, rotor3.getRingSetting(), 26); @@ -215,7 +216,7 @@ public class Enigma_G31 extends Enigma s = addDigit(s, rotor2.getNumber(), 10); s = addDigit(s, rotor1.getNumber(), 10); - s = addDigit(s, 3, 12); //Machine #3 + s = addDigit(s, 3, 20); //Machine #3 save = save+s; return save; diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G312.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G312.java index ddb52cd..5d3e2d3 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G312.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G312.java @@ -1,5 +1,7 @@ package de.vanitasvitae.enigmandroid.enigma; +import de.vanitasvitae.enigmandroid.MainActivity; + /** * Implementation of the Enigma machine of type G31 (Abwehr) * Copyright (C) 2015 Paul Schaub @@ -30,7 +32,7 @@ public class Enigma_G312 extends Enigma_G31 @Override public String stateToString() { - String save = ""; + String save = MainActivity.APP_ID+"/"; long s = reflector.getRingSetting(); s = addDigit(s, reflector.getRotation(), 26); s = addDigit(s, rotor3.getRingSetting(), 26); @@ -44,7 +46,7 @@ public class Enigma_G312 extends Enigma_G31 s = addDigit(s, rotor2.getNumber(), 10); s = addDigit(s, rotor1.getNumber(), 10); - s = addDigit(s, 4, 12); //Machine #4 + s = addDigit(s, 4, 20); //Machine #4 save = save+s; return save; diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_I.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_I.java index 2bd8ae6..f652e40 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_I.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_I.java @@ -1,5 +1,6 @@ package de.vanitasvitae.enigmandroid.enigma; +import de.vanitasvitae.enigmandroid.MainActivity; import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector; import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor; @@ -156,7 +157,7 @@ public class Enigma_I extends Enigma String plugboardConf = mem.substring(mem.lastIndexOf(":p") + 2); long s = Long.valueOf(mem.substring(0, mem.indexOf(":p"))); - s = removeDigit(s, 12); //Remove machine type + s = removeDigit(s, 20); //Remove machine type int r1 = getValue(s, 10); s = removeDigit(s, 10); int r2 = getValue(s, 10); @@ -188,7 +189,7 @@ public class Enigma_I extends Enigma @Override public String stateToString() { - String save = ""; + String save = MainActivity.APP_ID+"/"; long s = rotor3.getRingSetting(); s = addDigit(s, rotor3.getRotation(), 26); s = addDigit(s, rotor2.getRingSetting(), 26); @@ -198,7 +199,7 @@ public class Enigma_I extends Enigma s = addDigit(s, rotor3.getNumber(), 10); s = addDigit(s, rotor2.getNumber(), 10); s = addDigit(s, rotor1.getNumber(), 10); - s = addDigit(s, 0, 12); //Machine #0 + s = addDigit(s, 0, 20); //Machine #0 save = save+s; save = save + ":p" + Plugboard.configurationToString(getState().getConfigurationPlugboard()); diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_K.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_K.java index 8dcb633..ea40bc2 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_K.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_K.java @@ -166,7 +166,7 @@ public class Enigma_K extends Enigma public void restoreState(String mem) { long s = Long.valueOf(mem); - s = removeDigit(s,12); //Remove machine type + s = removeDigit(s,20); //Remove machine type int r1 = getValue(s,10); s = removeDigit(s,10); int r2 = getValue(s,10); @@ -201,7 +201,7 @@ public class Enigma_K extends Enigma @Override public String stateToString() { - String save = ""; + String save = MainActivity.APP_ID+"/"; long t = reflector.getRingSetting(); t = addDigit(t, reflector.getRotation(), 26); t = addDigit(t, rotor3.getRingSetting(),26); @@ -213,7 +213,7 @@ public class Enigma_K extends Enigma t = addDigit(t, rotor3.getNumber(), 10); t = addDigit(t, rotor2.getNumber(), 10); t = addDigit(t, rotor1.getNumber(), 10); - t = addDigit(t, 7, 12); //Machine #7 + t = addDigit(t, 7, 20); //Machine #7 save = save+t; return save; diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_K_Swiss_Airforce.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_K_Swiss_Airforce.java index 6741df1..55a2501 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_K_Swiss_Airforce.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_K_Swiss_Airforce.java @@ -3,6 +3,7 @@ package de.vanitasvitae.enigmandroid.enigma; import java.security.SecureRandom; import java.util.Random; +import de.vanitasvitae.enigmandroid.MainActivity; import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector; import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor; @@ -36,7 +37,7 @@ public class Enigma_K_Swiss_Airforce extends Enigma_K @Override public String stateToString() { - String save = ""; + String save = MainActivity.APP_ID+"/"; long t = reflector.getRingSetting(); t = addDigit(t, reflector.getRotation(), 26); t = addDigit(t, rotor3.getRingSetting(),26); @@ -48,7 +49,7 @@ public class Enigma_K_Swiss_Airforce extends Enigma_K t = addDigit(t, rotor3.getNumber(), 10); t = addDigit(t, rotor2.getNumber(), 10); t = addDigit(t, rotor1.getNumber(), 10); - t = addDigit(t, 9, 12); //Machine #9 + t = addDigit(t, 9, 20); //Machine #9 save = save+t; return save; diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_K_Swiss_Standard.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_K_Swiss_Standard.java index a25a10b..73791ad 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_K_Swiss_Standard.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_K_Swiss_Standard.java @@ -3,6 +3,7 @@ package de.vanitasvitae.enigmandroid.enigma; import java.security.SecureRandom; import java.util.Random; +import de.vanitasvitae.enigmandroid.MainActivity; import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector; import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor; @@ -36,7 +37,7 @@ public class Enigma_K_Swiss_Standard extends Enigma_K @Override public String stateToString() { - String save = ""; + String save = MainActivity.APP_ID+"/"; long t = reflector.getRingSetting(); t = addDigit(t, reflector.getRotation(), 26); t = addDigit(t, rotor3.getRingSetting(),26); @@ -48,7 +49,7 @@ public class Enigma_K_Swiss_Standard extends Enigma_K t = addDigit(t, rotor3.getNumber(), 10); t = addDigit(t, rotor2.getNumber(), 10); t = addDigit(t, rotor1.getNumber(), 10); - t = addDigit(t, 8, 12); //Machine #8 + t = addDigit(t, 8, 20); //Machine #8 save = save+t; return save; diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_M3.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_M3.java index d57f2e8..c4b04ea 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_M3.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_M3.java @@ -4,6 +4,7 @@ import java.security.SecureRandom; import java.sql.Ref; import java.util.Random; +import de.vanitasvitae.enigmandroid.MainActivity; import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector; import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor; @@ -62,7 +63,7 @@ public class Enigma_M3 extends Enigma_I @Override public String stateToString() { - String save = ""; + String save = MainActivity.APP_ID+"/"; long s = rotor3.getRingSetting(); s = addDigit(s, rotor3.getRotation(), 26); s = addDigit(s, rotor2.getRingSetting(), 26); @@ -72,7 +73,7 @@ public class Enigma_M3 extends Enigma_I s = addDigit(s, rotor3.getNumber(), 10); s = addDigit(s, rotor2.getNumber(), 10); s = addDigit(s, rotor1.getNumber(), 10); - s = addDigit(s, 1, 12); //Machine #1 + s = addDigit(s, 1, 20); //Machine #1 save = save+s; save = save + ":p" + Plugboard.configurationToString(getState().getConfigurationPlugboard()); diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_M4.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_M4.java index 63a6337..c5a7c99 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_M4.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_M4.java @@ -201,7 +201,7 @@ public class Enigma_M4 extends Enigma String plugboardConf = mem.substring(mem.lastIndexOf(":p") + 2); long s = Long.valueOf(mem.substring(0, mem.indexOf(":p"))); - s = (s-(s%12))/12; //Remove machine type + s = removeDigit(s, 20); //Remove machine type int r1 = getValue(s, 10); s = removeDigit(s, 10); @@ -248,7 +248,7 @@ public class Enigma_M4 extends Enigma @Override public String stateToString() { - String save = ""; + String save = MainActivity.APP_ID+"/"; long s = reflector.getRingSetting(); s = addDigit(s, reflector.getRotation(), 26); s = addDigit(s, rotor4.getRingSetting(), 26); @@ -266,7 +266,7 @@ public class Enigma_M4 extends Enigma s = addDigit(s, rotor2.getNumber(), 10); s = addDigit(s, rotor1.getNumber(), 10); - s = addDigit(s, 2, 12); + s = addDigit(s, 2, 20); save = save+s; save = save + ":p" + Plugboard.configurationToString(getState().getConfigurationPlugboard()); diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_R.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_R.java index 5c29fcd..c575d04 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_R.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_R.java @@ -3,6 +3,7 @@ package de.vanitasvitae.enigmandroid.enigma; import java.security.SecureRandom; import java.util.Random; +import de.vanitasvitae.enigmandroid.MainActivity; import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector; import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor; @@ -159,7 +160,7 @@ public class Enigma_R extends Enigma public void restoreState(String mem) { long s = Long.valueOf(mem); - s = removeDigit(s,12); //Remove machine type + s = removeDigit(s,20); //Remove machine type int r1 = getValue(s,10); s = removeDigit(s,10); int r2 = getValue(s,10); @@ -194,7 +195,7 @@ public class Enigma_R extends Enigma @Override public String stateToString() { - String save = ""; + String save = MainActivity.APP_ID+"/"; long t = reflector.getRingSetting(); t = addDigit(t, reflector.getRotation(), 26); t = addDigit(t, rotor3.getRingSetting(),26); @@ -206,7 +207,7 @@ public class Enigma_R extends Enigma t = addDigit(t, rotor3.getNumber(), 10); t = addDigit(t, rotor2.getNumber(), 10); t = addDigit(t, rotor1.getNumber(), 10); - t = addDigit(t, 10, 12); //Machine #10 + t = addDigit(t, 10, 20); //Machine #10 save = save+t; return save; diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_T.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_T.java index 26383f0..714c936 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_T.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_T.java @@ -5,6 +5,7 @@ import android.util.Log; import java.security.SecureRandom; import java.util.Random; +import de.vanitasvitae.enigmandroid.MainActivity; import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector; import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor; @@ -158,7 +159,7 @@ public class Enigma_T extends Enigma public void restoreState(String mem) { long s = Long.valueOf(mem); - s = removeDigit(s,12); //Remove machine type + s = removeDigit(s,20); //Remove machine type int r1 = getValue(s,10); s = removeDigit(s,10); int r2 = getValue(s,10); @@ -193,7 +194,7 @@ public class Enigma_T extends Enigma @Override public String stateToString() { - String save = ""; + String save = MainActivity.APP_ID+"/"; long t = reflector.getRingSetting(); t = addDigit(t, reflector.getRotation(), 26); t = addDigit(t, rotor3.getRingSetting(),26); @@ -205,7 +206,7 @@ public class Enigma_T extends Enigma t = addDigit(t, rotor3.getNumber(), 10); t = addDigit(t, rotor2.getNumber(), 10); t = addDigit(t, rotor1.getNumber(), 10); - t = addDigit(t, 11, 12); //Machine #11 + t = addDigit(t, 11, 20); //Machine #11 save = save+t; return save; diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Plugboard.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Plugboard.java index 39f55aa..5eb8015 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Plugboard.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Plugboard.java @@ -168,4 +168,17 @@ public class Plugboard } return out; } + + public static long configurationToLong(int[] a) + { + String s = configurationToString(a); + long l = 0; + for(char c : s.toCharArray()) + { + int i = (int) (c); + i-=65; + Enigma.addDigit(l,i,26); + } + return l; + } } diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/SeedInterpreter.java b/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/SeedInterpreter.java deleted file mode 100644 index c650b02..0000000 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/SeedInterpreter.java +++ /dev/null @@ -1,126 +0,0 @@ -package de.vanitasvitae.enigmandroid.enigma; - -import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector; - -/** - * Created by vanitas on 18.09.15. - */ -public class SeedInterpreter -{ - /* - 12 machineType - 1-8 rotor1 - 1-8 rotor2 - 1-8 rotor3 - 2 rotor4 - 1-3 ukw - 26 pos1 - 26 pos2 - 26 pos3 - 26 pos4/posukw - --plugboard - #plugs 13 - - - */ - - public double prepareSeed(long input) - { - double maxIn = Long.MAX_VALUE; - double maxOut = 100000; //TODO: Temporär! - - return (input / maxIn) * maxOut; - } - - public static EnigmaStateBundle seedToState(long seed) - { - long s = seed/12; - switch ((int) seed % 12) - { - case 0: return prepState_I(s); - case 1: return prepState_M3(s); - case 2: return prepState_M4(s); - case 3: return prepState_G31(s); - case 4: return prepState_G312(s); - case 5: return prepState_G260(s); - case 6: return prepState_D(s); - case 7: return prepState_K(s); - case 8: return prepState_KS(s); - case 9: return prepState_KSA(s); - case 10: return prepState_R(s); - default: return prepState_T(s); - } - } - - public static EnigmaStateBundle prepState_I(long seed) - { - EnigmaStateBundle state = new EnigmaStateBundle(); - state.setMachineType("I"); - - return state; - } - - public static EnigmaStateBundle prepState_M3(long seed) - { - return null; - } - - public static EnigmaStateBundle prepState_M4(long seed) - { - return null; - } - - public static EnigmaStateBundle prepState_G31(long seed) - { - return null; - } - - public static EnigmaStateBundle prepState_G312(long seed) - { - return null; - } - - public static EnigmaStateBundle prepState_G260(long seed) - { - return null; - } - - public static EnigmaStateBundle prepState_D(long seed) - { - return null; - } - - public static EnigmaStateBundle prepState_K(long seed) - { - return null; - } - - public static EnigmaStateBundle prepState_KS(long seed) - { - return null; - } - - public static EnigmaStateBundle prepState_KSA(long seed) - { - return null; - } - - public static EnigmaStateBundle prepState_R(long seed) - { - return null; - } - - public static EnigmaStateBundle prepState_T(long seed) - { - return null; - } - - public static int[] getPermutation(long seed) - { - int[] per = Reflector.ReflectorEnigma_D_KD_G31.defaultWiring_D_KD_G31; - long maxPermutations = Long.valueOf("532985208200576"); - //long result = - return per; - - } -} diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/layout/PassphraseDialogBuilder.java b/app/src/main/java/de/vanitasvitae/enigmandroid/layout/PassphraseDialogBuilder.java index d7de4cc..8d1d002 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/layout/PassphraseDialogBuilder.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/layout/PassphraseDialogBuilder.java @@ -5,21 +5,17 @@ import android.app.Dialog; import android.content.DialogInterface; import android.text.Editable; import android.text.TextWatcher; -import android.util.Log; import android.view.View; -import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; -import android.widget.Spinner; -import android.widget.TextView; import android.widget.Toast; import de.vanitasvitae.enigmandroid.MainActivity; import de.vanitasvitae.enigmandroid.R; -import de.vanitasvitae.enigmandroid.enigma.EnigmaStateBundle; /** - * Builder for the dialog that is used to get settings for the rings + * Builder for the dialog that is used to obtain a passphrase to generate + * a enigma configuration from it. * Copyright (C) 2015 Paul Schaub This program is free software; you can redistribute it and/or modify @@ -51,22 +47,27 @@ public class PassphraseDialogBuilder passphrase.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { - + //Do nothing } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { - + //Do nothing } @Override public void afterTextChanged(Editable s) { + //Count input text and enable positive button if length > 0. + //Disable else if(s.length() > 0) positive.setEnabled(true); else positive.setEnabled(false); } }); } + /** + * create and show the dialog + */ public void showDialog() { diff --git a/app/src/main/java/de/vanitasvitae/enigmandroid/layout/PluggableDialogBuilder.java b/app/src/main/java/de/vanitasvitae/enigmandroid/layout/PluggableDialogBuilder.java index eaf4895..8cfb9a6 100644 --- a/app/src/main/java/de/vanitasvitae/enigmandroid/layout/PluggableDialogBuilder.java +++ b/app/src/main/java/de/vanitasvitae/enigmandroid/layout/PluggableDialogBuilder.java @@ -3,7 +3,6 @@ package de.vanitasvitae.enigmandroid.layout; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; -import android.util.Log; import android.view.View; import android.view.WindowManager; import android.widget.Button; @@ -18,7 +17,8 @@ import de.vanitasvitae.enigmandroid.R; import de.vanitasvitae.enigmandroid.enigma.EnigmaStateBundle; /** - * Builder for the dialog that is used to get settings for the rings + * Builder for the dialog that is used to plug the plugboard/wire the + * rewirable reflector. * Copyright (C) 2015 Paul Schaub This program is free software; you can redistribute it and/or modify @@ -50,6 +50,10 @@ public class PluggableDialogBuilder protected int previouslyPressedButton = -1; + /** + * Constructor that prepares layout and buttons. + * @param state EnigmaStateBundle from which dialog gets restored and which gets manipulated + */ public PluggableDialogBuilder(EnigmaStateBundle state) { this.state = state; @@ -58,6 +62,9 @@ public class PluggableDialogBuilder setButtonListeners(); } + /** + * Show dialog for the plugboard + */ public void showDialogPlugboard() { allowIncompleteConnections = true; @@ -93,6 +100,10 @@ public class PluggableDialogBuilder d.getWindow().setAttributes(lp); } + /** + * Show the dialog for the reflector. This can only be positively closed when all + * connections are made. + */ public void showDialogReflector() { allowIncompleteConnections = false; @@ -132,6 +143,10 @@ public class PluggableDialogBuilder } d.getWindow().setAttributes(lp); } + + /** + * Initialize array of buttons, initialize background-color hashset. + */ public void initializeLayout() { buttons = new ArrayList<>(); @@ -178,9 +193,11 @@ public class PluggableDialogBuilder colors.add(R.drawable.button_pink); colors.add(R.drawable.button_elder); colors.add(R.drawable.button_black); - Log.d("Dialogtest", ""+R.drawable.button_red); } + /** + * Set listeners for all buttons + */ public void setButtonListeners() { for(int i=0; i<26; i++) @@ -196,6 +213,11 @@ public class PluggableDialogBuilder } } + /** + * Check, whether all connections are done. If so, return true. + * return false otherwise + * @return boolean + */ protected boolean allConnectionsDone() { for(int i=0; iPosition\nUmkehr-\nWalze Position\nWalze 4 Verkabelung Umkehrwalze - Passphrase eingeben + Schlüsselwort eingeben Ver-/Entschlüsseln Fehler: Fehlerhafte Steckerbrettkonfiguration. Kann Stecker nicht setzen: Fehler: Einer oder mehrere dieser Stecker sind bereits in Benutzung: Nachricht ist leer. + Fehler: Kein korrekter EnigmAndroid QR-Code! Ringstellungen Steckbrett-\nVerbindungen Verkabelung Umkehrwalze diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ff2b69f..b1b5e8c 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -34,6 +34,7 @@ Unable to plug Error: One or more of these plugs are already in use: Can\'t send empty text. + Error: Not a valid EnigmAndroid QR-Code! Ring-Settings Plugboard Settings Reflector Wiring