commit 709a2f5d1df3bf1c58b6d0f7559dd407f2812924
parent b24a0188832dcb1e3efd42a4be0abc0d3b935335
Author: dankert <devnull@localhost>
Date: Thu, 27 Oct 2011 22:43:10 +0200
Setzen der Sprache.
Diffstat:
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();
+ }
}