diff options
| -rw-r--r-- | res/values-de/expirationtimes.xml | 8 | ||||
| -rw-r--r-- | res/values-de/strings.xml | 3 | ||||
| -rw-r--r-- | res/values/expirationtimes.xml | 8 | ||||
| -rw-r--r-- | res/values/strings.xml | 3 | ||||
| -rw-r--r-- | src/eu/deki/paste/DekiEuPaste.java | 29 | ||||
| -rw-r--r-- | src/eu/deki/paste/MainActivity.java | 18 | ||||
| -rw-r--r-- | src/eu/deki/paste/PasteTask.java | 14 |
7 files changed, 60 insertions, 23 deletions
diff --git a/res/values-de/expirationtimes.xml b/res/values-de/expirationtimes.xml deleted file mode 100644 index 97f0597..0000000 --- a/res/values-de/expirationtimes.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string-array name="expiration_array"> - <item>Eine Stunde</item> - <item>Ein Tag</item> - <item>Eine Woche</item> - </string-array> -</resources> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 5601d0b..bea43bb 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -12,4 +12,7 @@ <string name="clear_text">Text löschen</string> <string name="noPermissionTitle">Keine Berechtigung</string> <string name="noPermissionContent">Die Anwendung hat keine Zugriffsrechte auf die gesendeten Daten.\n\n%1$s</string> + <string name="expiration_hour">Eine Stunde</string> + <string name="expiration_day">Ein Tag</string> + <string name="expiration_week">Eine Woche</string> </resources> diff --git a/res/values/expirationtimes.xml b/res/values/expirationtimes.xml deleted file mode 100644 index 93f233c..0000000 --- a/res/values/expirationtimes.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string-array name="expiration_array"> - <item>One Hour</item> - <item>One Day</item> - <item>One Week</item> - </string-array> -</resources> diff --git a/res/values/strings.xml b/res/values/strings.xml index c3e3acd..6885932 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -12,4 +12,7 @@ <string name="clear_text">Clear text</string> <string name="noPermissionTitle">Permission denied</string> <string name="noPermissionContent">App has no permission to access sent data.\n\n%1$s</string> + <string name="expiration_hour">One hour</string> + <string name="expiration_day">One day</string> + <string name="expiration_week">One week</string> </resources> diff --git a/src/eu/deki/paste/DekiEuPaste.java b/src/eu/deki/paste/DekiEuPaste.java index 234abcb..563fefe 100644 --- a/src/eu/deki/paste/DekiEuPaste.java +++ b/src/eu/deki/paste/DekiEuPaste.java @@ -19,17 +19,36 @@ public class DekiEuPaste extends PasteTask { private static final String pasteUrl = "https://deki.eu/paste/new"; + private static int[] expiration_ids = { + R.string.expiration_hour, + R.string.expiration_day, + R.string.expiration_week + }; + private static String[] expiration_values = { "1hour", "1day", "1week" }; + public DekiEuPaste(Context parent) { super(parent); } + // map user visible expiration text from UI to expiration values for paste service + private String expirationValue(String expirationText) + { + for(int i=0; i<expiration_values.length; i++) + if(expirationText.equals(parentActivity.getText(expiration_ids[i]))) + return expiration_values[i]; + + // no match found? + return ""; + } + + @Override - protected String paste(String title, String content, String delay) throws IOException + protected String paste(String title, String content, String expiration) throws IOException { System.setProperty("http.keepAlive", "false"); - String request = "title=" + URLEncoder.encode(title) + "&content=" + URLEncoder.encode(content) + "&expiration=" + URLEncoder.encode(delay); + String request = "title=" + URLEncoder.encode(title) + "&content=" + URLEncoder.encode(content) + "&expiration=" + URLEncoder.encode(expirationValue(expiration)); URL url; try { @@ -77,5 +96,11 @@ public class DekiEuPaste extends PasteTask return redirectUrl; } + + @Override + protected int[] getExpirationIds() + { + return expiration_ids; + } } diff --git a/src/eu/deki/paste/MainActivity.java b/src/eu/deki/paste/MainActivity.java index bc2ffa8..688c305 100644 --- a/src/eu/deki/paste/MainActivity.java +++ b/src/eu/deki/paste/MainActivity.java @@ -18,12 +18,13 @@ import java.io.InputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.FileNotFoundException; +import eu.deki.paste.PasteTask; import eu.deki.paste.DekiEuPaste; /* * TODO: - * - change supported expiration dates based on selected paste service * - menu: open browser with url? + * - more paste services */ public class MainActivity extends Activity @@ -31,6 +32,7 @@ public class MainActivity extends Activity private EditText titleText; private EditText contentText; private Spinner expirationSpinner; + private PasteTask pasteTask; @Override public void onCreate(Bundle savedInstanceState) @@ -42,8 +44,9 @@ public class MainActivity extends Activity contentText = (EditText) findViewById(R.id.paste_content); expirationSpinner = (Spinner) findViewById(R.id.expiration); - ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.expiration_array, android.R.layout.simple_spinner_item); - //adapter.setDropDownViewResource(android.R.layout.simple_spinner_item); + pasteTask = new DekiEuPaste(this); + + ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, pasteTask.getExpirationTimes()); expirationSpinner.setAdapter(adapter); Intent intent = getIntent(); @@ -110,7 +113,14 @@ public class MainActivity extends Activity { // TODO: check network status? - new DekiEuPaste(this).execute(titleText.getText().toString(), contentText.getText().toString(), "1hour"); + String title = titleText.getText().toString(); + String content = contentText.getText().toString(); + String expiration = expirationSpinner.getSelectedItem().toString(); + + pasteTask.execute(title, content, expiration); + + // new instance, because task must only be executed once + pasteTask = new DekiEuPaste(this); } } diff --git a/src/eu/deki/paste/PasteTask.java b/src/eu/deki/paste/PasteTask.java index 9e285a5..863a4f4 100644 --- a/src/eu/deki/paste/PasteTask.java +++ b/src/eu/deki/paste/PasteTask.java @@ -85,6 +85,18 @@ public abstract class PasteTask extends AsyncTask<String, Void, String> builder.create().show(); } - protected abstract String paste(String title, String content, String delay) throws IOException; + public String[] getExpirationTimes() + { + int[] expiration_ids = getExpirationIds(); + String[] exp = new String[expiration_ids.length]; + for(int i=0; i<expiration_ids.length; i++) + exp[i] = parentActivity.getString(expiration_ids[i]); + + return exp; + } + + protected abstract int[] getExpirationIds(); + + protected abstract String paste(String title, String content, String expiration) throws IOException; } |
