Updated to 0.1.9, added backwards compatibility to api 10, added option to share/receive configs via qr-code, added number spelling in spanish, italian

This commit is contained in:
VanitasVitae 2015-10-09 00:57:54 +02:00
parent 992c9a924d
commit 8cd2b6467b
42 changed files with 399 additions and 151 deletions

View File

@ -4,10 +4,11 @@ v0.1.9-not-yet-released<
*Prevent user from setting incomplete reflector wiring
*Add option to generate configuration from passphrase
*Reworked Enigma definition (available Rotors/Reflectors/Entrywheels
*Verified correct functionality of Enigma T
*Completely verified correct functionality of Enigma T
*Added number spelling in spanish, italian
*Added backwards compatibility to Api level 10
*TODO: Write tests to ensure correct functionality
*TODO: Migrate preferences to SettingsActivity
*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)
v0.1.8-27.09.2015<

View File

@ -71,7 +71,7 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.0.0/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
@ -89,7 +89,7 @@
</content>
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="support-v4-23.0.0" level="project" />
<orderEntry type="library" exported="" name="support-annotations-23.0.0" level="project" />
<orderEntry type="library" exported="" name="support-v4-23.0.1" level="project" />
<orderEntry type="library" exported="" name="support-annotations-23.0.1" level="project" />
</component>
</module>

View File

@ -6,10 +6,10 @@ android {
defaultConfig {
applicationId "de.vanitasvitae.enigmandroid"
minSdkVersion 16
minSdkVersion 10
targetSdkVersion 23
versionCode 14
versionName "0.1.8-27.09.2015-beta"
versionCode 15
versionName "0.1.9-09.10.2015-beta"
}
buildTypes {
release {
@ -19,5 +19,5 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:23.0.0'
compile 'com.android.support:support-v4:23.0.1'
}

View File

@ -104,7 +104,7 @@ public class MainActivity extends Activity
switch (prefMachineType)
{
case "I":
this.setContentView(R.layout.activity_main_i_m3);
setContentView(R.layout.activity_main_i_m3);
break;
case "M3":
this.setContentView(R.layout.activity_main_i_m3);
@ -328,7 +328,7 @@ public class MainActivity extends Activity
builder.setTitle(R.string.title_about_dialog);
builder.setView(aboutView)
.setCancelable(true)
.setPositiveButton(R.string.dialog_positiv, new DialogInterface.OnClickListener()
.setPositiveButton(R.string.dialog_positive, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
@ -383,7 +383,7 @@ 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)
public void restoreStateFromCode(String mem)
{
if(!mem.startsWith(APP_ID+"/"))
{
@ -393,7 +393,7 @@ public class MainActivity extends Activity
{
mem = mem.substring((APP_ID+"/").length());
BigInteger s = new BigInteger(mem, 16);
Log.d(APP_ID, s.toString());
Log.d(APP_ID, "Try to restore configuration from BigInteger value "+ s.toString());
setPrefMachineType(Enigma.chooseEnigmaFromSave(s));
updateContentView();
layoutContainer = LayoutContainer.createLayoutContainer(getPrefMachineType());

View File

@ -1,7 +1,10 @@
package de.vanitasvitae.enigmandroid.enigma;
import android.util.Log;
import java.math.BigInteger;
import de.vanitasvitae.enigmandroid.MainActivity;
import de.vanitasvitae.enigmandroid.enigma.rotors.EntryWheel;
import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector;
import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor;
@ -38,6 +41,7 @@ public class Enigma_D extends Enigma {
{
super();
machineType = "D";
Log.d(MainActivity.APP_ID, "Created Enigma D");
}
@Override

View File

@ -1,7 +1,10 @@
package de.vanitasvitae.enigmandroid.enigma;
import android.util.Log;
import java.math.BigInteger;
import de.vanitasvitae.enigmandroid.MainActivity;
import de.vanitasvitae.enigmandroid.enigma.rotors.EntryWheel;
import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector;
import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor;
@ -31,6 +34,7 @@ public class Enigma_G260 extends Enigma_G31
{
super();
machineType = "G260";
Log.d(MainActivity.APP_ID, "Created Enigma G260");
}
@Override

View File

@ -1,7 +1,10 @@
package de.vanitasvitae.enigmandroid.enigma;
import android.util.Log;
import java.math.BigInteger;
import de.vanitasvitae.enigmandroid.MainActivity;
import de.vanitasvitae.enigmandroid.enigma.rotors.EntryWheel;
import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector;
import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor;
@ -37,6 +40,7 @@ public class Enigma_G31 extends Enigma
{
super();
machineType = "G31";
Log.d(MainActivity.APP_ID, "Created Enigma G31");
}
@Override

View File

@ -1,7 +1,10 @@
package de.vanitasvitae.enigmandroid.enigma;
import android.util.Log;
import java.math.BigInteger;
import de.vanitasvitae.enigmandroid.MainActivity;
import de.vanitasvitae.enigmandroid.enigma.rotors.EntryWheel;
import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector;
import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor;
@ -31,6 +34,7 @@ public class Enigma_G312 extends Enigma_G31
{
super();
machineType = "G312";
Log.d(MainActivity.APP_ID, "Created Enigma G312");
}
@Override

View File

@ -1,7 +1,10 @@
package de.vanitasvitae.enigmandroid.enigma;
import android.util.Log;
import java.math.BigInteger;
import de.vanitasvitae.enigmandroid.MainActivity;
import de.vanitasvitae.enigmandroid.enigma.rotors.EntryWheel;
import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector;
import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor;
@ -39,6 +42,7 @@ public class Enigma_I extends Enigma
{
super();
machineType = "I";
Log.d(MainActivity.APP_ID, "Created Enigma I");
}
@Override

View File

@ -1,7 +1,10 @@
package de.vanitasvitae.enigmandroid.enigma;
import android.util.Log;
import java.math.BigInteger;
import de.vanitasvitae.enigmandroid.MainActivity;
import de.vanitasvitae.enigmandroid.enigma.rotors.EntryWheel;
import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector;
import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor;
@ -37,6 +40,7 @@ public class Enigma_K extends Enigma
{
super();
machineType = "K";
Log.d(MainActivity.APP_ID, "Created Enigma K");
}
@Override

View File

@ -1,7 +1,10 @@
package de.vanitasvitae.enigmandroid.enigma;
import android.util.Log;
import java.math.BigInteger;
import de.vanitasvitae.enigmandroid.MainActivity;
import de.vanitasvitae.enigmandroid.enigma.rotors.EntryWheel;
import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector;
import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor;
@ -31,6 +34,7 @@ public class Enigma_K_Swiss_Airforce extends Enigma_K
{
super();
machineType = "KSA";
Log.d(MainActivity.APP_ID, "Created Enigma KSA");
}
@Override

View File

@ -1,7 +1,10 @@
package de.vanitasvitae.enigmandroid.enigma;
import android.util.Log;
import java.math.BigInteger;
import de.vanitasvitae.enigmandroid.MainActivity;
import de.vanitasvitae.enigmandroid.enigma.rotors.EntryWheel;
import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector;
import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor;
@ -31,6 +34,7 @@ public class Enigma_K_Swiss_Standard extends Enigma_K
{
super();
machineType = "KS";
Log.d(MainActivity.APP_ID, "Created Enigma KS");
}
@Override

View File

@ -1,7 +1,10 @@
package de.vanitasvitae.enigmandroid.enigma;
import android.util.Log;
import java.math.BigInteger;
import de.vanitasvitae.enigmandroid.MainActivity;
import de.vanitasvitae.enigmandroid.enigma.rotors.EntryWheel;
import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector;
import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor;
@ -31,6 +34,7 @@ public class Enigma_M3 extends Enigma_I
{
super();
machineType = "M3";
Log.d(MainActivity.APP_ID, "Created Enigma M3");
}
@Override

View File

@ -47,6 +47,7 @@ public class Enigma_M4 extends Enigma
{
super();
machineType = "M4";
Log.d(MainActivity.APP_ID, "Created Enigma M4");
}
protected void addAvailableThinRotor(Rotor r)

View File

@ -1,7 +1,10 @@
package de.vanitasvitae.enigmandroid.enigma;
import android.util.Log;
import java.math.BigInteger;
import de.vanitasvitae.enigmandroid.MainActivity;
import de.vanitasvitae.enigmandroid.enigma.rotors.EntryWheel;
import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector;
import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor;
@ -38,6 +41,7 @@ public class Enigma_R extends Enigma
{
super();
machineType = "R";
Log.d(MainActivity.APP_ID, "Created Enigma R");
}
@Override

View File

@ -1,7 +1,10 @@
package de.vanitasvitae.enigmandroid.enigma;
import android.util.Log;
import java.math.BigInteger;
import de.vanitasvitae.enigmandroid.MainActivity;
import de.vanitasvitae.enigmandroid.enigma.rotors.EntryWheel;
import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector;
import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor;
@ -37,6 +40,7 @@ public class Enigma_T extends Enigma
{
super();
machineType = "T";
Log.d(MainActivity.APP_ID, "Created Enigma T");
}
@Override

View File

@ -35,7 +35,7 @@ public class Plugboard
public Plugboard()
{
plugs = empty;
plugs = Arrays.copyOf(empty, empty.length);
}
public Plugboard(int[] conf)
@ -53,12 +53,11 @@ public class Plugboard
String s = "";
int x;
while((x = Enigma.getValue(b, 27)) != 26 || b.compareTo(BigInteger.ZERO) > 1)
while((x = Enigma.getValue(b, 27)) != 26 && b.compareTo(BigInteger.ZERO) > 1)
{
s = ((char) (x+65))+s;
b = Enigma.removeDigit(b, 27);
}
Log.d(MainActivity.APP_ID, "Restored: " + s);
this.setConfiguration(stringToConfiguration(s));
return b;
}
@ -207,9 +206,8 @@ public class Plugboard
public static int[] bigIntegerToConfiguration(BigInteger b)
{
String s = "";
int x;
while((x = Enigma.getValue(b, 27)) != 26 || b.compareTo(BigInteger.ZERO) > 1)
while((x = Enigma.getValue(b, 27)) != 26 && b.compareTo(BigInteger.ZERO) > 1)
{
s = ((char) (x+65))+s;
b = Enigma.removeDigit(b, 27);

View File

@ -56,6 +56,10 @@ public abstract class InputPreparer {
break;
case "fr": inPrep = new ReplaceNumbersFrench(inPrep);
break;
case "sp": inPrep = new ReplaceNumbersSpanish(inPrep);
break;
case "it": inPrep = new ReplaceNumbersItalian(inPrep);
break;
default:
break;
}
@ -158,6 +162,60 @@ public abstract class InputPreparer {
}
}
/**
* Concrete implementation of a spanish InputPreparer
*/
public static class ReplaceNumbersSpanish extends InputPreparer {
public ReplaceNumbersSpanish() {
this.child = null;
}
public ReplaceNumbersSpanish(InputPreparer child) {
this.child = child;
}
protected String prepare(String input) {
input = input.replace("0", "CERO")
.replace("1", "UNO")
.replace("2", "DOS")
.replace("3", "TRES")
.replace("4", "CUATRO")
.replace("5", "CINCO")
.replace("6", "SEIS")
.replace("7", "SIETE")
.replace("8", "OCHO")
.replace("9", "NUEVE");
return input;
}
}
/**
* Concrete implementation of a spanish InputPreparer
*/
public static class ReplaceNumbersItalian extends InputPreparer {
public ReplaceNumbersItalian() {
this.child = null;
}
public ReplaceNumbersItalian(InputPreparer child) {
this.child = child;
}
protected String prepare(String input) {
input = input.replace("0", "ZERO")
.replace("1", "UNO")
.replace("2", "DUE")
.replace("3", "TRE")
.replace("4", "QUATTRO")
.replace("5", "CINQUE")
.replace("6", "SEI")
.replace("7", "SETTE")
.replace("8", "OTTO")
.replace("9", "NOVE");
return input;
}
}
/**
* "Final Stage" of Input preparing. This should always be called last
* (choose this as the inner most capsule of InputPreparers)

View File

@ -67,7 +67,6 @@ public abstract class LayoutContainer
{
if(inputView.getText().length()!=0)
{
syncStateFromLayoutToEnigma();
String message = inputView.getText().toString();
message = inputPreparer.prepareString(message);

View File

@ -47,6 +47,24 @@ public class LayoutContainer_T extends LayoutContainer
this.resetLayout();
}
@Override
public void doCrypto()
{
if(inputView.getText().length()!=0)
{
syncStateFromLayoutToEnigma();
String message = inputView.getText().toString();
//<Insert funny comment here>
boolean egg = false;
if(message.hashCode() == -1475861192) egg = true;
message = inputPreparer.prepareString(message);
input.setText(message);
if(egg) output.setText("ENIGMA<TURINGMACHINE");
else output.setText(getEnigma().encryptString(message));
setLayoutState(getEnigma().getState());
}
}
@Override
public Enigma getEnigma() {
return this.enigma;

View File

@ -16,6 +16,8 @@ import de.vanitasvitae.enigmandroid.R;
/**
* Builder for the dialog that is used to obtain a passphrase to generate
* a enigma configuration from it.
* Alternatively the user can enter the content String from a EnigmAndroid QR-Code here.
* That would have the same effect as scanning the QR-Code.
* Copyright (C) 2015 Paul Schaub
This program is free software; you can redistribute it and/or modify
@ -75,18 +77,26 @@ public class PassphraseDialogBuilder
builder.setTitle(R.string.hint_passphrase);
Dialog d = builder.setView(passphraseDialogView)
.setCancelable(true)
.setPositiveButton(R.string.dialog_positiv, new DialogInterface.OnClickListener()
.setPositiveButton(R.string.dialog_positive, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
String pass = passphrase.getText().toString();
main.createStateFromSeed(pass);
String message = main.getResources().getString(R.string.dialog_passphrase_set)
+" \'" + pass + "\'";
Toast.makeText(main, message, Toast.LENGTH_LONG).show();
if(pass.startsWith(MainActivity.APP_ID+"/"))
{
main.restoreStateFromCode(pass);
Toast.makeText(main, R.string.dialog_passphrase_was_coded_state, Toast.LENGTH_LONG).show();
}
else
{
main.createStateFromSeed(pass);
String message = String.format(main.getResources().getString(
R.string.dialog_passphrase_set), " \'"+pass+"\'");
Toast.makeText(main, message, Toast.LENGTH_LONG).show();
}
}
})
.setNegativeButton(R.string.dialog_negativ, new DialogInterface.OnClickListener() {
.setNegativeButton(R.string.dialog_negative, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
Toast.makeText(main, R.string.dialog_abort,

View File

@ -3,6 +3,7 @@ package de.vanitasvitae.enigmandroid.layout;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
@ -73,7 +74,7 @@ public class PluggableDialogBuilder
adb.setTitle(R.string.title_plugboard_dialog);
Dialog d = adb.setView(dialogView)
.setCancelable(true)
.setPositiveButton(R.string.dialog_positiv, new DialogInterface.OnClickListener() {
.setPositiveButton(R.string.dialog_positive, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
int[] plugs = new int[26];
for (int i = 0; i < 26; i++) {
@ -84,7 +85,7 @@ public class PluggableDialogBuilder
Toast.makeText(main.getApplication(), R.string.dialog_plugboard_set, Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton(R.string.dialog_negativ, new DialogInterface.OnClickListener() {
.setNegativeButton(R.string.dialog_negative, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
Toast.makeText(main, R.string.dialog_abort,
@ -112,7 +113,7 @@ public class PluggableDialogBuilder
adb.setTitle(R.string.title_reflector_dialog);
Dialog d = adb.setView(dialogView)
.setCancelable(true)
.setPositiveButton(R.string.dialog_positiv, new DialogInterface.OnClickListener() {
.setPositiveButton(R.string.dialog_positive, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
int[] plugs = new int[26];
for (int i = 0; i < 26; i++) {
@ -123,7 +124,7 @@ public class PluggableDialogBuilder
Toast.makeText(main.getApplication(), R.string.dialog_reflector_set, Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton(R.string.dialog_negativ, new DialogInterface.OnClickListener() {
.setNegativeButton(R.string.dialog_negative, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
Toast.makeText(main, R.string.dialog_abort,
@ -374,7 +375,11 @@ public class PluggableDialogBuilder
public void setConnectedButton(int other)
{
this.connectedButton = other;
this.getButton().setText((char) (index + 65) + ":" + (char) (connectedButton + 65));
Resources res = MainActivity.ActivitySingleton.getInstance().getActivity().getResources();
this.getButton().setText(String.format(
res.getText(R.string.button_plug_title).toString(),
""+(char) (index+65),
""+(char) (connectedButton+65)));
}
/**
@ -391,7 +396,10 @@ public class PluggableDialogBuilder
*/
public void setWaiting()
{
this.getButton().setText((char) (index + 65) + ": ");
Resources res = MainActivity.ActivitySingleton.getInstance().getActivity().getResources();
this.getButton().setText(String.format(
res.getText(R.string.button_plug_title).toString(),
""+(char) (index+65)," "));
}
/**

View File

@ -139,26 +139,26 @@ public abstract class RingSettingsDialogBuilder
ring3.setSelection(action.getThirdValueFromBundle());
AlertDialog.Builder builder = new AlertDialog.Builder(main);
builder.setTitle(R.string.title_ringsetting);
builder.setTitle(R.string.title_ring_setting);
builder.setView(ringSettingsView)
.setCancelable(true)
.setPositiveButton(R.string.dialog_positiv, new DialogInterface.OnClickListener()
.setPositiveButton(R.string.dialog_positive, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
action.firstSpinnerItemSelected(ring1.getSelectedItemPosition());
action.secondSpinnerItemSelected(ring2.getSelectedItemPosition());
action.thirdSpinnerItemSelected(ring3.getSelectedItemPosition());
String message = main.getResources().getString(
R.string.dialog_ringsettings_success) + " " +
String message = String.format(main.getResources().getString(
R.string.dialog_ring_settings_success),
(ring1.getSelectedItemPosition()+1) + ", " +
(ring2.getSelectedItemPosition()+1) + ", " +
(ring3.getSelectedItemPosition()+1) + ".";
(ring3.getSelectedItemPosition()+1));
main.onDialogFinished(stateBundle);
Toast.makeText(main, message, Toast.LENGTH_LONG).show();
}
})
.setNegativeButton(R.string.dialog_negativ, new DialogInterface.OnClickListener() {
.setNegativeButton(R.string.dialog_negative, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
Toast.makeText(main, R.string.dialog_abort,
@ -266,10 +266,10 @@ public abstract class RingSettingsDialogBuilder
ring4.setSelection(action.getFourthValueFromBundle());
AlertDialog.Builder builder = new AlertDialog.Builder(main);
builder.setTitle(R.string.title_ringsetting);
builder.setTitle(R.string.title_ring_setting);
builder.setView(ringSettingsView)
.setCancelable(true)
.setPositiveButton(R.string.dialog_positiv, new DialogInterface.OnClickListener()
.setPositiveButton(R.string.dialog_positive, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
@ -277,17 +277,17 @@ public abstract class RingSettingsDialogBuilder
action.secondSpinnerItemSelected(ring2.getSelectedItemPosition());
action.thirdSpinnerItemSelected(ring3.getSelectedItemPosition());
action.fourthSpinnerItemSelected(ring4.getSelectedItemPosition());
String message = main.getResources().getString(
R.string.dialog_ringsettings_success) + " " +
String message = String.format(main.getResources().getString(
R.string.dialog_ring_settings_success),
(ring1.getSelectedItemPosition()+1) + ", " +
(ring2.getSelectedItemPosition()+1) + ", " +
(ring3.getSelectedItemPosition()+1) + ", " +
(ring4.getSelectedItemPosition()+1) + ".";
(ring4.getSelectedItemPosition()+1));
main.onDialogFinished(stateBundle);
Toast.makeText(main, message, Toast.LENGTH_LONG).show();
}
})
.setNegativeButton(R.string.dialog_negativ, new DialogInterface.OnClickListener() {
.setNegativeButton(R.string.dialog_negative, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
Toast.makeText(main, R.string.dialog_abort,

View File

@ -105,7 +105,8 @@
android:layout_weight="50"
android:layout_height="wrap_content"
android:id="@+id/button_reflector"
android:text="@string/hint_enigma_reflector_wiring"/>
android:text="@string/hint_enigma_reflector_wiring"
tools:ignore="ButtonStyle"/>
<Button
android:layout_width="0dp"
android:layout_weight="50"
@ -114,7 +115,7 @@
android:onClick="doCrypto"
android:text="@string/button_crypt"
android:background="@drawable/button_orange"
/>
tools:ignore="ButtonStyle"/>
</LinearLayout>

View File

@ -159,7 +159,8 @@
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="@string/title_plugboard_dialog"
android:id="@+id/button_plugboard" />
android:id="@+id/button_plugboard"
tools:ignore="ButtonStyle"/>
<Button
android:layout_width="0dp"
@ -169,7 +170,8 @@
android:id="@+id/button_crypt"
android:onClick="doCrypto"
android:text="@string/button_crypt"
android:background="@drawable/button_orange"/>
android:background="@drawable/button_orange"
tools:ignore="ButtonStyle"/>
</LinearLayout>

View File

@ -182,7 +182,8 @@
android:layout_weight="50"
android:layout_height="wrap_content"
android:id="@+id/button_plugboard"
android:text="@string/title_plugboard_dialog"/>
android:text="@string/title_plugboard_dialog"
tools:ignore="ButtonStyle"/>
<Button
android:layout_width="0dp"
android:layout_weight="50"
@ -190,7 +191,8 @@
android:id="@+id/button_crypt"
android:onClick="doCrypto"
android:text="@string/button_crypt"
android:background="@drawable/button_orange"/>
android:background="@drawable/button_orange"
tools:ignore="ButtonStyle"/>
</LinearLayout>

View File

@ -19,7 +19,7 @@
android:id="@+id/Q"
android:text="Q: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -27,7 +27,7 @@
android:id="@+id/W"
android:text="W: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -35,7 +35,7 @@
android:id="@+id/E"
android:text="E: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -43,7 +43,7 @@
android:id="@+id/R"
android:text="R: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -51,7 +51,7 @@
android:id="@+id/T"
android:text="T: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -59,7 +59,7 @@
android:id="@+id/Z"
android:text="Z: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -67,7 +67,7 @@
android:id="@+id/U"
android:text="U: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -75,7 +75,7 @@
android:id="@+id/I"
android:text="I: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -83,7 +83,7 @@
android:id="@+id/O"
android:text="O: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
</LinearLayout>
@ -94,7 +94,7 @@
android:layout_below="@id/first_row"
android:id="@+id/second_row">
<Space
<android.support.v4.widget.Space
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
@ -162,7 +162,7 @@
android:text="K: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
<Space
<android.support.v4.widget.Space
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
@ -183,7 +183,7 @@
android:id="@+id/P"
android:text="P: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -191,7 +191,7 @@
android:id="@+id/Y"
android:text="Y: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -199,7 +199,7 @@
android:id="@+id/X"
android:text="X: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -207,7 +207,7 @@
android:id="@+id/C"
android:text="C: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -215,7 +215,7 @@
android:id="@+id/V"
android:text="V: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -223,7 +223,7 @@
android:id="@+id/B"
android:text="B: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -231,7 +231,7 @@
android:id="@+id/N"
android:text="N: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -239,7 +239,7 @@
android:id="@+id/M"
android:text="M: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -247,7 +247,7 @@
android:id="@+id/L"
android:text="L: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
</LinearLayout>

View File

@ -0,0 +1,88 @@
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingStart="5dp"
android:paddingEnd="5dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/ringstellung_layout_hint">
<!-- About Enigma. -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="@string/title_about_dialog"
android:id="@+id/title_section_app_description_text"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Small"
android:text="@string/description_text"
android:id="@+id/about_app_description"/>
<!-- About Version -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Medium"
android:text="@string/action_version"
android:id="@+id/title_section_version"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Small"
android:id="@+id/about_version_section"/>
<!-- About How To -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Medium"
android:text="@string/title_section_how_to_use"
android:id="@+id/title_section_how_to_use"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Small"
android:text="@string/section_how_to_use"
android:id="@+id/section_how_to_use"/>
<!-- About Developer -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Medium"
android:text="@string/title_section_developer"
android:id="@+id/title_section_developer_text"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Small"
android:text="@string/section_developer"
android:id="@+id/about_developer_section"/>
<!-- About Disclaimer -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Medium"
android:text="@string/title_section_disclaimer"
android:id="@+id/title_section_disclaimer_text"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Small"
android:text="@string/section_disclaimer"
android:id="@+id/about_disclaimer_section"/>
</LinearLayout>
</ScrollView>

View File

@ -106,7 +106,8 @@
android:layout_weight="50"
android:layout_height="wrap_content"
android:id="@+id/button_reflector"
android:text="@string/hint_enigma_reflector_wiring"/>
android:text="@string/hint_enigma_reflector_wiring"
tools:ignore="ButtonStyle"/>
<Button
android:layout_width="0dp"
android:layout_weight="50"
@ -115,7 +116,7 @@
android:onClick="doCrypto"
android:text="@string/button_crypt"
android:background="@drawable/button_orange"
/>
tools:ignore="ButtonStyle"/>
</LinearLayout>
</RelativeLayout>

View File

@ -78,7 +78,7 @@
android:layout_below="@+id/lin_lay_1"
android:id="@+id/lin_lay_names_2">
<Space
<android.support.v4.widget.Space
android:layout_width="0dp"
android:layout_weight=".125"
android:layout_height="wrap_content" />
@ -99,7 +99,7 @@
android:layout_weight=".25"
android:layout_height="wrap_content"
android:text="@string/hint_rotor1_position"/>
<Space
<android.support.v4.widget.Space
android:layout_width="0dp"
android:layout_weight=".125"
android:layout_height="wrap_content" />
@ -112,7 +112,7 @@
android:id="@+id/lin_lay_2"
android:layout_below="@+id/lin_lay_names_2">
<Space
<android.support.v4.widget.Space
android:layout_width="0dp"
android:layout_weight=".125"
android:layout_height="wrap_content" />
@ -134,7 +134,7 @@
android:layout_height="wrap_content"
android:id="@+id/rotor1position">
</Spinner>
<Space
<android.support.v4.widget.Space
android:layout_width="0dp"
android:layout_weight=".125"
android:layout_height="wrap_content" />
@ -174,7 +174,8 @@
android:layout_weight="50"
android:text="@string/title_plugboard_dialog"
android:id="@+id/button_plugboard"
android:layout_height="wrap_content" />
android:layout_height="wrap_content"
tools:ignore="ButtonStyle"/>
<Button
android:layout_width="0dp"
android:layout_weight="50"
@ -183,7 +184,7 @@
android:onClick="doCrypto"
android:text="@string/button_crypt"
android:background="@drawable/button_orange"
/>
tools:ignore="ButtonStyle"/>
</LinearLayout>
</RelativeLayout>

View File

@ -180,7 +180,8 @@
android:layout_weight="50"
android:layout_height="wrap_content"
android:id="@+id/button_plugboard"
android:text="@string/title_plugboard_dialog"/>
android:text="@string/title_plugboard_dialog"
tools:ignore="ButtonStyle"/>
<Button
android:layout_width="0dp"
android:layout_weight="50"
@ -189,7 +190,7 @@
android:onClick="doCrypto"
android:text="@string/button_crypt"
android:background="@drawable/button_orange"
/>
tools:ignore="ButtonStyle"/>
</LinearLayout>
</RelativeLayout>

View File

@ -1,13 +1,9 @@
<RelativeLayout
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingStart="5dp"
android:paddingEnd="5dp">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -18,14 +14,14 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Medium"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="@string/title_about_dialog"
android:id="@+id/title_section_app_description_text"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Small"
android:textAppearance="@android:style/TextAppearance.Small"
android:text="@string/description_text"
android:id="@+id/about_app_description"/>
@ -33,28 +29,28 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Medium"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="@string/action_version"
android:id="@+id/title_section_version"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Small"
android:textAppearance="@android:style/TextAppearance.Small"
android:id="@+id/about_version_section"/>
<!-- About How To -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Medium"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="@string/title_section_how_to_use"
android:id="@+id/title_section_how_to_use"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Small"
android:textAppearance="@android:style/TextAppearance.Small"
android:text="@string/section_how_to_use"
android:id="@+id/section_how_to_use"/>
@ -62,14 +58,14 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Medium"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="@string/title_section_developer"
android:id="@+id/title_section_developer_text"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Small"
android:textAppearance="@android:style/TextAppearance.Small"
android:text="@string/section_developer"
android:id="@+id/about_developer_section"/>
@ -77,18 +73,16 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Medium"
android:textAppearance="@android:style/TextAppearance.Medium"
android:text="@string/title_section_disclaimer"
android:id="@+id/title_section_disclaimer_text"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Holo.Small"
android:textAppearance="@android:style/TextAppearance.Small"
android:text="@string/section_disclaimer"
android:id="@+id/about_disclaimer_section"/>
</LinearLayout>
</ScrollView>
</RelativeLayout>
</ScrollView>

View File

@ -19,7 +19,7 @@
android:id="@+id/Q"
android:text="Q: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -27,7 +27,7 @@
android:id="@+id/W"
android:text="W: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -35,7 +35,7 @@
android:id="@+id/E"
android:text="E: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -43,7 +43,7 @@
android:id="@+id/R"
android:text="R: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -51,7 +51,7 @@
android:id="@+id/T"
android:text="T: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
</LinearLayout>
<LinearLayout
@ -61,7 +61,7 @@
android:layout_below="@id/first_row"
android:id="@+id/second_row">
<Space
<android.support.v4.widget.Space
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
@ -97,7 +97,7 @@
android:text="O: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
<Space
<android.support.v4.widget.Space
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
@ -118,7 +118,7 @@
android:id="@+id/A"
android:text="A: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -126,7 +126,7 @@
android:id="@+id/S"
android:text="S: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -134,7 +134,7 @@
android:id="@+id/D"
android:text="D: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -142,7 +142,7 @@
android:id="@+id/F"
android:text="F: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -150,7 +150,7 @@
android:id="@+id/G"
android:text="G: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
</LinearLayout>
@ -161,7 +161,7 @@
android:layout_below="@id/third_row"
android:id="@+id/fourth_row">
<Space
<android.support.v4.widget.Space
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
@ -197,7 +197,7 @@
android:text="P: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
<Space
<android.support.v4.widget.Space
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
@ -218,7 +218,7 @@
android:id="@+id/Y"
android:text="Y: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -226,7 +226,7 @@
android:id="@+id/X"
android:text="X: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -234,7 +234,7 @@
android:id="@+id/C"
android:text="C: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -242,7 +242,7 @@
android:id="@+id/V"
android:text="V: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -250,7 +250,7 @@
android:id="@+id/B"
android:text="B: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
tools:ignore="ButtonStyle,HardcodedText" />
</LinearLayout>
@ -261,7 +261,7 @@
android:layout_below="@id/fifth_row"
android:id="@+id/sixth_row">
<Space
<android.support.v4.widget.Space
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="wrap_content" />
@ -289,7 +289,7 @@
android:text="L: "
android:background="@drawable/button_grey"
tools:ignore="HardcodedText" />
<Space
<android.support.v4.widget.Space
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="wrap_content" />

View File

@ -15,7 +15,7 @@
android:icon="@drawable/ic_send_white_48dp"/>
<!-- RINGSETTING -->
<item android:id="@+id/action_choose_ringsetting"
android:title="@string/action_choose_ringsettings"
android:title="@string/action_choose_ring_settings"
android:orderInCategory="97"
android:showAsAction="ifRoom" />
<!-- ENTER SEED -->

View File

@ -24,7 +24,11 @@
jeweiligen Button an und verbinden Sie die gewünschten Steckerpaare, indem Sie im sich öffnenden Dialog nacheinander jeweils zwei
Stecker berühren. Falls sie eine Verbindung trennen möchten, klicken Sie einen der betroffenen Stecker doppelt an.
Optional können Sie außerdem auch noch die Ringstellung definieren. Öffnen Sie dazu das Optionsmenü und wählen Sie den Punkt \"Ringstellung\".
Haben Sie alle Einstellungen getätigt klicken Sie auf den Button \"Ver-Entschlüsseln\".</string>
Haben Sie alle Einstellungen getätigt klicken Sie auf den Button \"Ver-Entschlüsseln\".
Um die gewählte Konfiguration der Enigma Maschine per QR-Code zu teilen, wählen Sie den Eintrag \"Teile Konfiguration per QR-Code\" aus dem Optionsmenü.
Um eine per QR-Code geteilte Konfiguration zu scannen, wählen Sie stattdessen den Eintrag \"Lese Konfiguration aus QR-Code\".
Außerdem können Sie eine Konfiguration aus einem Schlüsselwort generieren, oder wiederherstellen, indem Sie dein Eintrag \"Konfiguration aus Schlüsselwort\"
wählen und im erscheinenden Dialog entweder ein beliebiges Wort oder den Inhalt eines QR-Codes (\"EnigmAndroid/…\" eingeben.</string>
<string name="title_section_developer">Entwickler</string>
<string name="section_developer">EnigmAndroid wird entwickelt von: \nPaul Schaub</string>

View File

@ -9,7 +9,7 @@
<string name="action_send_qr">Teile Konfiguration per QR-Code</string>
<string name="action_read_passphrase">Konfiguration aus Schlüsselwort</string>
<string name="action_settings">Einstellungen</string>
<string name="action_choose_ringsettings">Ringstellung</string>
<string name="action_choose_ring_settings">Ringstellung</string>
<string name="action_send">Senden</string>
<string name="send_to">Senden an…</string>
<string name="hint_enigma_type_here">Hier Tippen</string>
@ -29,17 +29,18 @@
<string name="button_crypt">Ver-/Entschlüsseln</string>
<string name="error_no_text_to_send">Nachricht ist leer.</string>
<string name="error_no_valid_qr">Fehler: Kein korrekter EnigmAndroid QR-Code!</string>
<string name="title_ringsetting">Ringstellungen</string>
<string name="title_ring_setting">Ringstellungen</string>
<string name="title_plugboard_dialog">Steckbrett-\nVerbindungen</string>
<string name="title_reflector_dialog">Verkabelung Umkehrwalze</string>
<string name="dialog_positiv">OK</string>
<string name="dialog_negativ">Abbrechen</string>
<string name="dialog_ringsettings_success">Setze Ringe auf</string>
<string name="dialog_positive">OK</string>
<string name="dialog_negative">Abbrechen</string>
<string name="dialog_ring_settings_success">Setze Ringe auf %1$s.</string>
<string name="dialog_reflector_set">Umkehrwalze verkabelt.</string>
<string name="dialog_plugboard_set">Steckbrett gesteckert.</string>
<string name="dialog_passphrase_set">Generiere Konfiguration aus Schlüsselwort</string>
<string name="dialog_abort">Keine Änderungen</string>
<string name="message_reset">Enigma zurückgesetzt</string>
<string name="message_random">Enigma auf zufällige Konfiguration gesetzt</string>
<string name="dialog_plugboard_set">Steckbrettverbindungen gesetzt.</string>
<string name="dialog_passphrase_set">Konfiguration aus Schlüsselwort %1$s generiert.</string>
<string name="dialog_passphrase_was_coded_state">Konfiguration aus Kodierung wiederhergestellt.</string>
<string name="dialog_abort">Keine Änderungen.</string>
<string name="message_reset">Enigma zurückgesetzt.</string>
<string name="message_random">Enigma auf zufällige Konfiguration gesetzt.</string>
</resources>

View File

@ -23,8 +23,10 @@
<string name="pref_description_numeric_spelling_language">Sprache in der Zahlen buchstabiert werden sollen.</string>
<string-array name="pref_list_numeric_spelling_language">
<item>Deutsch</item>
<item>Französisch</item>
<item>Englisch</item>
<item>Französisch</item>
<item>Spanisch</item>
<item>Italienisch</item>
<item>Keine Ersetzung</item>
</string-array>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="android:Theme.Holo">
<!-- Customize your theme here. -->
</style>
</resources>

View File

@ -13,14 +13,16 @@
</string>
<string name="title_section_how_to_use">How to use</string>
<string name="section_how_to_use">In the beginning, choose a model of the enigma machine to work with.
<string name="section_how_to_use">At first, choose a model of the enigma machine to work with.
You can do this in the settings. To encrypt/decrypt a message, you can name it into the input field.
Afterwards you can - depending on the chosen model - select a reflector and the some rotors. Also select their initial positions.
Then you may set pairs on the plugboard or on the pluggable reflector.
Therefore press the respective button and connect the characters you wish to connect by clicking them one after another.
If you want to disconnect two plugs, just touch one of the plugs twice.
Also you can optionally set custom ring settings. Open the options menu and select \"Ringsettings\".
When you are ready press \"En-/Decrypt!\".</string>
Also you can optionally set custom ring settings. Open the options menu and select \"Ring-Settings\".
When you are ready press \"En-/Decrypt!\". To share the configuration of the enigma machine via QR-Code, just open the options
menu and select the entry \"Share configuration via QR-Code\". To scan a QR-Code, choose the respective entry.
Also you can enter a codeword or the content of a QR-Code by clicking on the entry \"Create configuration from passphrase\" to restore a configuration that way.</string>
<string name="title_section_developer">Developer</string>
<string name="section_developer">EnigmAndroid is developed by: \nPaul Schaub</string>

View File

@ -1,7 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="version" translatable="false">0.1.8-27.09.2015</string>
<string name="app_name">EnigmAndroid</string>
<string name="action_version">Version</string>
<string name="action_reset">Reset</string>
@ -9,7 +7,7 @@
<string name="action_read_qr">Read configuration from QR-Code</string>
<string name="action_send_qr">Share configuration via QR-Code</string>
<string name="action_read_passphrase">Create configuration from passphrase</string>
<string name="action_choose_ringsettings">Ring-Settings</string>
<string name="action_choose_ring_settings">Ring-Settings</string>
<string name="action_settings">Settings</string>
<string name="action_send">Send</string>
<string name="send_to">Send to…</string>
@ -30,18 +28,21 @@
<string name="button_crypt">En-/Decrypt!</string>
<string name="error_no_text_to_send">Can\'t send empty text.</string>
<string name="error_no_valid_qr">Error: Not a valid EnigmAndroid QR-Code!</string>
<string name="title_ringsetting">Ring-Settings</string>
<string name="title_ring_setting">Ring-Settings</string>
<string name="title_plugboard_dialog">Plugboard Settings</string>
<string name="title_reflector_dialog">Reflector Wiring</string>
<string name="dialog_positiv">OK</string>
<string name="dialog_negativ">Cancel</string>
<string name="dialog_ringsettings_success">Set Ring-Settings to</string>
<string name="dialog_positive">OK</string>
<string name="dialog_negative">Cancel</string>
<string name="dialog_ring_settings_success">Set Ring-Settings to %1$s.</string>
<string name="dialog_reflector_set">Rewired Reflector.</string>
<string name="dialog_plugboard_set">Plugged Plugboard.</string>
<string name="dialog_passphrase_set">Generate configuration from passphrase</string>
<string name="dialog_abort">No changes</string>
<string name="message_reset">Enigma reset</string>
<string name="message_random">Enigma set to random configuration</string>
<string name="dialog_plugboard_set">Set Plugboard configuration.</string>
<string name="dialog_passphrase_set">Generate configuration from passphrase %1$s.</string>
<string name="dialog_passphrase_was_coded_state">Restored configuration from coded state.</string>
<string name="dialog_abort">No changes.</string>
<string name="message_reset">Enigma reset.</string>
<string name="message_random">Enigma set to random configuration.</string>
<string name="button_plug_title">%1$s:%2$s</string>
<string-array translatable="false" name="rotors_1_3">
<item>I</item>

View File

@ -38,14 +38,18 @@
<string name="pref_description_numeric_spelling_language">Language, in which numbers are spelled.</string>
<string-array name="pref_list_numeric_spelling_language">
<item>German</item>
<item>French</item>
<item>English</item>
<item>French</item>
<item>Spanish</item>
<item>Italian</item>
<item>No replacing</item>
</string-array>
<string-array translatable="false" name="pref_alias_numeric_spelling_language">
<item>de</item>
<item>fr</item>
<item>en</item>
<item>fr</item>
<item>sp</item>
<item>it</item>
<item>no</item>
</string-array>

View File

@ -1,7 +1,7 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo">
<style name="AppTheme" parent="android:Theme.Black">
<!-- Customize your theme here. -->
</style>