android-openrat

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 709a2f5d1df3bf1c58b6d0f7559dd407f2812924
parent b24a0188832dcb1e3efd42a4be0abc0d3b935335
Author: dankert <devnull@localhost>
Date:   Thu, 27 Oct 2011 22:43:10 +0200

Setzen der Sprache.

Diffstat:
res/values/strings.xml | 4++++
src/de/openrat/android/blog/FolderActivity.java | 66++++++++++++++++++++++++++++++++++++++++++++++--------------------
src/de/openrat/android/blog/OpenRatBlog.java | 9+++++++++
src/de/openrat/client/HTTPRequest.java | 4++--
src/de/openrat/client/OpenRatClient.java | 55++++++++++++++++++++++++++++++++++++++++++++++++-------
5 files changed, 109 insertions(+), 29 deletions(-)

diff --git a/res/values/strings.xml b/res/values/strings.xml @@ -34,6 +34,8 @@ <string name="waitingfordelete">Löschen</string> <string name="waitingfornew">Erzeuge</string> <string name="waitingforsave">Speichern</string> + <string name="waitingforlanguageload">Verfügbare Sprachen werden geladen</string> + <string name="waitingforlanguagesave">Ausgewählte Sprache wird aktiviert</string> <string name="language">Sprache</string> <string name="model">Variante</string> <string name="new1">Neu</string> @@ -78,4 +80,6 @@ <string name="databaseid_desc">Datenbank-Id aus der Server-Konfiguration</string> <string name="saved">Gespeichert</string> <string name="release">Freigeben</string> + <string name="noserver">Es ist noch kein Server konfiguriert. Über die Menütaste können Sie einen neuen Server anlegen.</string> + </resources> diff --git a/src/de/openrat/android/blog/FolderActivity.java b/src/de/openrat/android/blog/FolderActivity.java @@ -6,6 +6,7 @@ package de.openrat.android.blog; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Map; import android.app.AlertDialog; import android.app.ListActivity; @@ -16,7 +17,6 @@ import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; -import android.util.Log; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuInflater; @@ -69,8 +69,8 @@ public class FolderActivity extends ListActivity protected void callServer() throws IOException { folderid = getIntent().getStringExtra("folderid"); - if (folderid == null) - folderid = client.getRootFolder(); + if (folderid == null) + folderid = client.getRootFolder(); data = client.getFolderEntries(folderid); } @@ -83,7 +83,7 @@ public class FolderActivity extends ListActivity }; }.execute(); - + ListView list = getListView(); list.setOnItemClickListener(new OnItemClickListener() @@ -267,30 +267,56 @@ public class FolderActivity extends ListActivity switch (item.getItemId()) { case R.id.menu_language: - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setMessage(R.string.language).setCancelable(false) - .setPositiveButton("OK", - new DialogInterface.OnClickListener() - { - public void onClick(DialogInterface dialog, - int id) - { - // Speichern - } - }).setSingleChoiceItems( - new String[] { "a", "b" }, 1, - new OnClickListener() + new OpenRatClientAsyncTask(FolderActivity.this, + R.string.waitingforlanguageload) + { + private Map<String, String> languages; + + @Override + protected void callServer() throws IOException + { + languages = client.getLanguages(); + } + + @Override + protected void doOnSuccess() + { + AlertDialog.Builder builder = new AlertDialog.Builder( + FolderActivity.this); + final String[] languageIds = languages.keySet() + .toArray(new String[0]); + final String[] languageNames = languages.values() + .toArray(new String[0]); + + builder.setTitle(R.string.language).setItems( + languageNames, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - + final String newlanguageid = languageIds[which]; + new OpenRatClientAsyncTask( + FolderActivity.this, + R.string.waitingforlanguagesave) + { + @Override + protected void callServer() + throws IOException + { + client + .setLanguage(newlanguageid); + } + }.execute(); + //alert.cancel(); } }); - AlertDialog alert = builder.create(); - alert.show(); + final AlertDialog alert = builder.create(); + alert.show(); + } + }.execute(); + return true; case R.id.menu_upload: diff --git a/src/de/openrat/android/blog/OpenRatBlog.java b/src/de/openrat/android/blog/OpenRatBlog.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import android.app.AlertDialog; import android.app.ListActivity; import android.content.Intent; import android.content.SharedPreferences; @@ -83,6 +84,14 @@ public class OpenRatBlog extends ListActivity list.add(preferences.getString("name", "?")); } + if (list.size() == 0) + { + // Noch kein Server konfiguriert. Hinweis anzeigen! + final AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setMessage(getResources().getString(R.string.noserver)); + AlertDialog alert = builder.create(); + } + final SimpleNameAdapter adapter = new SimpleNameAdapter(this, list, android.R.drawable.ic_menu_set_as); diff --git a/src/de/openrat/client/HTTPRequest.java b/src/de/openrat/client/HTTPRequest.java @@ -121,12 +121,12 @@ public class HTTPRequest implements Serializable this.language = Locale.getDefault().getLanguage(); } - public String getLanguage() + public String getAcceptLanguage() { return language; } - public void setLanguage(String language) + public void setAcceptLanguage(String language) { this.language = language; } diff --git a/src/de/openrat/client/OpenRatClient.java b/src/de/openrat/client/OpenRatClient.java @@ -204,7 +204,8 @@ public class OpenRatClient extends CMSRequest try { response = super.performRequest(); - Log.d("client", "Server-Response:\n" + response); + Log.d("client", "Server-Response:\n" + + new String(response, "UTF-8")); } catch (SocketTimeoutException e) { @@ -221,13 +222,11 @@ public class OpenRatClient extends CMSRequest JSONObject json; try { - json = new JSONObject( - new String(response,"UTF-8")); + json = new JSONObject(new String(response, "UTF-8")); } catch (UnsupportedEncodingException e1) { - throw new OpenRatClientException( - "UTF-8 not supported?!", e1); + throw new OpenRatClientException("UTF-8 not supported?!", e1); } try @@ -265,8 +264,8 @@ public class OpenRatClient extends CMSRequest catch (JSONException e) { throw new OpenRatClientException( - "JSON Parsing Error. Original response was:\n" + new String(response)+"\n\n", - e); + "JSON Parsing Error. Original response was:\n" + + new String(response) + "\n\n", e); } } @@ -633,4 +632,46 @@ public class OpenRatClient extends CMSRequest final byte[] content = performRequest(); return content; } + + public Map<String, String> getLanguages() throws IOException + { + super.clearParameters(); + super.setMethod("GET"); + super.setAction("language"); + super.setActionMethod("listing"); + + final Map<String, String> languageMap = new LinkedHashMap<String, String>(); + + final JSONObject json = readJSON(); + try + { + JSONObject languageObject = json.getJSONObject("el"); + + for (Iterator ti = languageObject.keys(); ti.hasNext();) + { + String id = (String) ti.next(); + String name = languageObject.getJSONObject(id) + .getString("name"); + languageMap.put(id, name); + } + } + catch (JSONException e) + { + Log.w(this.getClass().getSimpleName(), "\n\n" + json); + throw new OpenRatClientException("a property was not found", e); + } + return languageMap; + + } + + public void setLanguage(String languageid) throws IOException + { + super.clearParameters(); + super.setMethod("GET"); + super.setAction("index"); + super.setActionMethod("language"); + super.setId(languageid); + + readJSON(); + } }