commit 6d0023f368c82eae74a123989bbfe7424ac6ba46
parent 709a2f5d1df3bf1c58b6d0f7559dd407f2812924
Author: dankert <devnull@localhost>
Date: Thu, 27 Oct 2011 22:57:28 +0200
Packagename geändert!
Diffstat:
27 files changed, 1285 insertions(+), 1275 deletions(-)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="de.openrat.android.blog" android:versionCode="1"
+ package="de.openrat.android.client" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/logo" android:label="@string/app_name">
diff --git a/src/de/openrat/android/blog/Configuration.java b/src/de/openrat/android/blog/Configuration.java
@@ -1,15 +0,0 @@
-package de.openrat.android.blog;
-
-import android.os.Bundle;
-import android.preference.PreferenceActivity;
-
-public class Configuration extends PreferenceActivity
-{
-
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.preferences);
- }
-}
diff --git a/src/de/openrat/android/blog/EditorActivity.java b/src/de/openrat/android/blog/EditorActivity.java
@@ -1,94 +0,0 @@
-package de.openrat.android.blog;
-
-import java.io.IOException;
-import java.util.Map;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.text.Editable;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.EditText;
-import android.widget.Toast;
-import de.openrat.android.blog.util.OpenRatClientAsyncTask;
-import de.openrat.client.OpenRatClient;
-
-public class EditorActivity extends Activity
-{
- public final static String ELEMENTID = "elementid";
- public final static String OBJECTID = "objectid";
- // public final static String TYPE = "type";
- public static final String CLIENT = "client";
- private OpenRatClient client;
- private String objectid;
- private String elementid;
- private String type;
- private Map<String, String> properties;
-
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
-
- this.client = (OpenRatClient) getIntent().getSerializableExtra(CLIENT);
- this.objectid = getIntent().getStringExtra(OBJECTID);
- this.elementid = getIntent().getStringExtra(ELEMENTID);
-
- new OpenRatClientAsyncTask(this, R.string.waitingforcontent)
- {
-
- @Override
- protected void callServer() throws IOException
- {
- properties = client.getValue(objectid, elementid);
- type = properties.get("type");
- }
-
- protected void doOnSuccess()
- {
- if (type.equals("longtext"))
- {
- setContentView(R.layout.editor);
- final EditText view = (EditText) findViewById(R.id.text);
- view.setText(properties.get("text"));
-
- Button button = (Button) findViewById(R.id.save);
- button.setOnClickListener(new OnClickListener()
- {
-
- @Override
- public void onClick(View v)
- {
- final String text = view.getEditableText()
- .toString();
- final CheckBox releaseBox = (CheckBox) findViewById(R.id.release);
-
- new OpenRatClientAsyncTask(EditorActivity.this,
- R.string.waitingforsave)
- {
-
- @Override
- protected void callServer() throws IOException
- {
- client.setValue(objectid, elementid,
- "longtext", text, releaseBox.isChecked(), false);
- }
-
- protected void doOnSuccess()
- {
- Toast.makeText(EditorActivity.this,
- R.string.saved, Toast.LENGTH_SHORT);
- EditorActivity.this.finish();
- };
- }.execute();
-
- }
-
- });
- }
- }
- }.execute();
- }
-}
diff --git a/src/de/openrat/android/blog/FileShowActivity.java b/src/de/openrat/android/blog/FileShowActivity.java
@@ -1,57 +0,0 @@
-/**
- *
- */
-package de.openrat.android.blog;
-
-import java.io.IOException;
-
-import android.app.Activity;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.Bundle;
-import android.widget.ImageView;
-import de.openrat.android.blog.util.OpenRatClientAsyncTask;
-import de.openrat.client.OpenRatClient;
-
-/**
- * @author dankert
- *
- */
-public class FileShowActivity extends Activity
-{
- public static final String ID = "id";
- public static final String CLIENT = "client";
- private String objectid;
- private OpenRatClient client;
-
- byte[] data;
-
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
-
- client = (OpenRatClient) getIntent().getSerializableExtra(CLIENT);
-
- new OpenRatClientAsyncTask(this, R.string.waitingforcontent)
- {
-
- @Override
- protected void callServer() throws IOException
- {
- objectid = getIntent().getStringExtra(ID);
- data = client.getFileContent(objectid);
- }
-
- protected void doOnSuccess()
- {
- Bitmap imageBitmap = BitmapFactory.decodeByteArray(data,0,data.length);
- setContentView(R.layout.show_image);
- ImageView image = (ImageView) findViewById(R.id.image);
- image.setImageBitmap(imageBitmap);
- }
-
- }.execute();
- }
-
-}
diff --git a/src/de/openrat/android/blog/FolderActivity.java b/src/de/openrat/android/blog/FolderActivity.java
@@ -1,407 +0,0 @@
-/**
- *
- */
-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;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.DialogInterface.OnClickListener;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.MediaStore;
-import android.view.ContextMenu;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnCreateContextMenuListener;
-import android.widget.AdapterView;
-import android.widget.ListAdapter;
-import android.widget.ListView;
-import android.widget.Toast;
-import android.widget.AdapterView.AdapterContextMenuInfo;
-import android.widget.AdapterView.OnItemClickListener;
-import de.openrat.android.blog.adapter.FolderContentAdapter;
-import de.openrat.android.blog.service.PublishIntentService;
-import de.openrat.android.blog.service.UploadIntentService;
-import de.openrat.android.blog.util.OpenRatClientAsyncTask;
-import de.openrat.client.OpenRatClient;
-
-/**
- * @author dankert
- *
- */
-public class FolderActivity extends ListActivity
-{
-
- private static final String ID2 = "id";
- public static final String CLIENT = "client";
- private static final String NAME = "name";
- private static final String TYP = "type";
- private static final String DESCRIPTION = "description";
- private static final int ACTIVITY_CHOOSE_FILE = 1;
- private static final int ACTIVITY_CHOOSE_IMAGE = 2;
- private OpenRatClient client;
- private List<FolderEntry> data;
- private String folderid;
-
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- setContentView(R.layout.listing);
-
- super.onCreate(savedInstanceState);
-
- data = new ArrayList<FolderEntry>();
- client = (OpenRatClient) getIntent().getSerializableExtra(CLIENT);
-
- new OpenRatClientAsyncTask(this, R.string.waitingforcontent)
- {
- @Override
- protected void callServer() throws IOException
- {
- folderid = getIntent().getStringExtra("folderid");
- if (folderid == null)
- folderid = client.getRootFolder();
-
- data = client.getFolderEntries(folderid);
- }
-
- protected void doOnSuccess()
- {
- final ListAdapter adapter = new FolderContentAdapter(
- FolderActivity.this, data);
- setListAdapter(adapter);
- };
-
- }.execute();
-
- ListView list = getListView();
-
- list.setOnItemClickListener(new OnItemClickListener()
- {
-
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id)
- {
- FolderEntry entry = data.get(position);
-
- final Intent intent;
- switch (entry.type)
- {
- case FOLDER:
-
- intent = new Intent(FolderActivity.this,
- FolderActivity.class);
- intent.putExtra(CLIENT, client);
- intent.putExtra("folderid", entry.id);
- startActivity(intent);
- break;
- case PAGE:
- intent = new Intent(FolderActivity.this,
- PageElementsActivity.class);
- intent.putExtra(CLIENT, client);
- intent.putExtra(PageElementsActivity.ID, entry.id);
- startActivity(intent);
- break;
- case FILE:
- intent = new Intent(FolderActivity.this,
- FileShowActivity.class);
- intent.putExtra(CLIENT, client);
- intent.putExtra(FileShowActivity.ID, entry.id);
- startActivity(intent);
- break;
- default:
- }
- }
- });
-
- list.setOnCreateContextMenuListener(new OnCreateContextMenuListener()
- {
-
- @Override
- public void onCreateContextMenu(ContextMenu menu, View v,
- ContextMenu.ContextMenuInfo menuInfo)
- {
- MenuInflater menuInflater = getMenuInflater();
- menuInflater.inflate(R.menu.context, menu);
- // menu.add(0, 5, 0, "Click Me");
-
- }
-
- });
- /**
- *
- list.setonOnItemLongClickListener(new OnItemLongClickListener() {
- *
- * @Override public boolean onItemLongClick(AdapterView<?> parent, View
- * view, int position, long id) { Map<String, String> entry =
- * data.get(position);
- *
- * final Intent intent; intent = new
- * Intent(FolderActivity.this, PropertiesActivity.class);
- * intent.putExtra(CLIENT, request);
- * intent.putExtra("objectid", entry.get(ID2));
- * startActivity(intent); return true; } });
- */
- }
-
- public boolean onContextItemSelected(MenuItem item)
- {
-
- switch (item.getItemId())
- {
-
- case R.id.menu_properties:
-
- // This is actually where the magic happens.
-
- // As we use an adapter view (which the ListView is)
-
- // We can cast item.getMenuInfo() to AdapterContextMenuInfo
-
- AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item
- .getMenuInfo();
-
- // To get the id of the clicked item in the list use menuInfo.id
-
- // Log.d("t", "list pos:" + menuInfo.position + " id:" +
- // menuInfo.id);
- FolderEntry entry = data.get(menuInfo.position);
- final Intent intent;
- intent = new Intent(FolderActivity.this,
- PropertiesActivity.class);
- intent.putExtra(CLIENT, client);
- intent.putExtra("objectid", entry.id);
- intent.putExtra(TYP, entry.type.name().toLowerCase());
- startActivity(intent);
- return true;
-
- case R.id.menu_delete:
-
- final AdapterContextMenuInfo mInfo = (AdapterView.AdapterContextMenuInfo) item
- .getMenuInfo();
-
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setMessage(
- getResources().getString(R.string.areyousure))
- .setCancelable(false).setPositiveButton(
- getResources().getString(R.string.delete),
- new DialogInterface.OnClickListener()
- {
- public void onClick(DialogInterface dialog,
- int id)
- {
- final FolderEntry en = data
- .get(mInfo.position);
-
- new OpenRatClientAsyncTask(
- FolderActivity.this,
- R.string.waitingfordelete)
- {
- @Override
- protected void callServer()
- throws IOException
- {
- client.delete(folderid, en.id);
- }
- }.execute();
- }
- });
- AlertDialog alert = builder.create();
- alert.show();
-
- return true;
-
- case R.id.menu_publish:
-
- menuInfo = (AdapterView.AdapterContextMenuInfo) item
- .getMenuInfo();
- entry = data.get(menuInfo.position);
-
- final Intent publishIntent = new Intent(this,
- PublishIntentService.class);
-
- publishIntent.putExtra(PublishIntentService.EXTRA_REQUEST,
- client);
- publishIntent.putExtra(PublishIntentService.EXTRA_TYPE,
- entry.type.name().toLowerCase());
- publishIntent.putExtra(PublishIntentService.EXTRA_NAME,
- entry.name);
- publishIntent.putExtra(PublishIntentService.EXTRA_ID, entry.id);
- startService(publishIntent);
-
- Toast.makeText(this, R.string.publish, Toast.LENGTH_SHORT);
-
- return true;
-
- default:
-
- return super.onContextItemSelected(item);
-
- }
-
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu)
- {
- super.onCreateOptionsMenu(menu);
- MenuInflater mi = new MenuInflater(getApplication());
- mi.inflate(R.menu.folder, menu);
-
- return true;
- }
-
- public boolean onOptionsItemSelected(MenuItem item)
- {
- switch (item.getItemId())
- {
- case R.id.menu_language:
- 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();
- }
- });
- final AlertDialog alert = builder.create();
- alert.show();
- }
- }.execute();
-
- return true;
-
- case R.id.menu_upload:
-
- Intent chooseFile;
- Intent intent;
- chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
- chooseFile.setType("file/*");
- intent = Intent.createChooser(chooseFile, getResources()
- .getString(R.string.choosefile));
- startActivityForResult(intent, ACTIVITY_CHOOSE_FILE);
- return true;
- case R.id.menu_upload_image:
-
- chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
- chooseFile.setType("image/*");
- intent = Intent.createChooser(chooseFile, getResources()
- .getString(R.string.chooseimage));
- startActivityForResult(intent, ACTIVITY_CHOOSE_IMAGE);
- return true;
-
- case R.id.menu_newfolder:
- case R.id.menu_newpage:
-
- intent = new Intent(this, NewActivity.class);
- intent.putExtra(NewActivity.EXTRA_CLIENT, client);
- intent.putExtra(NewActivity.EXTRA_MENUID, item.getItemId());
- intent.putExtra(NewActivity.EXTRA_FOLDERID, folderid);
- startActivity(intent);
- return true;
-
- default:
- Toast.makeText(this, "??: " + item.getItemId(),
- Toast.LENGTH_SHORT);
-
- }
- return false;
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data)
- {
- switch (requestCode)
- {
- case ACTIVITY_CHOOSE_FILE:
- case ACTIVITY_CHOOSE_IMAGE:
- {
- if (resultCode == RESULT_OK)
- {
- // Upload durchführen
- Uri uri = data.getData();
-
- String filePath;
- if (requestCode == ACTIVITY_CHOOSE_IMAGE)
- {
-
- filePath = getPath(uri);
- }
- else
- {
- filePath = uri.getPath();
- }
-
- final Intent uploadIntent = new Intent(
- FolderActivity.this, UploadIntentService.class);
- uploadIntent.putExtra(
- UploadIntentService.EXTRA_FILENAME, filePath);
- uploadIntent.putExtra(
- UploadIntentService.EXTRA_REQUEST, client);
- startService(uploadIntent);
-
- Toast.makeText(this, R.string.publish,
- Toast.LENGTH_SHORT);
- }
- }
- }
- }
-
- public String getPath(Uri uri)
- {
- String[] projection = { MediaStore.Images.Media.DATA };
- Cursor cursor = managedQuery(uri, projection, null, null, null);
- int column_index = cursor
- .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
- cursor.moveToFirst();
- return cursor.getString(column_index);
- }
-}
diff --git a/src/de/openrat/android/blog/FolderEntry.java b/src/de/openrat/android/blog/FolderEntry.java
@@ -1,27 +0,0 @@
-package de.openrat.android.blog;
-
-public class FolderEntry
-{
- public FType type;
- public String id;
- public String name;
- public String description;
-
- public enum FType
- {
- FOLDER, PAGE, FILE, LINK, PROJECT;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString()
- {
- return "FolderEntry [id=" + id + ", name=" + name + ", type=" + type
- + "]";
- }
-
-}
diff --git a/src/de/openrat/android/blog/NewActivity.java b/src/de/openrat/android/blog/NewActivity.java
@@ -1,119 +0,0 @@
-package de.openrat.android.blog;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.Spinner;
-import de.openrat.android.blog.util.OpenRatClientAsyncTask;
-import de.openrat.client.OpenRatClient;
-
-public class NewActivity extends Activity
-{
-
- public static final String EXTRA_CLIENT = "request";
- public static final String EXTRA_MENUID = "menuid";
- public static final String EXTRA_FOLDERID = "folderid";
-
- private OpenRatClient request;
- private int menuid;
- private Map<String, String> templates;
- private String folderid;
-
- /**
- * {@inheritDoc}
- *
- * @see android.app.Activity#onCreate(android.os.Bundle)
- */
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- request = (OpenRatClient) getIntent()
- .getSerializableExtra(EXTRA_CLIENT);
- menuid = getIntent().getIntExtra(EXTRA_MENUID, 0);
- folderid = getIntent().getStringExtra(EXTRA_FOLDERID);
-
- setContentView(R.layout.new1);
-
- final EditText editText = (EditText) findViewById(R.id.newname);
- final Spinner spinner = (Spinner) findViewById(R.id.spinner);
- if (menuid == R.id.menu_newpage)
- {
- spinner.setVisibility(View.VISIBLE);
-
- new OpenRatClientAsyncTask(this, R.string.waitingforcontent)
- {
-
- @Override
- protected void callServer() throws IOException
- {
- templates = request.getTemplates();
- }
-
- @Override
- protected void doOnSuccess()
- {
- final List<String> valueList = new ArrayList<String>(
- templates.values());
- ArrayAdapter adapter = new ArrayAdapter(NewActivity.this,
- android.R.layout.simple_spinner_item, valueList);
- adapter
- .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- spinner.setAdapter(adapter);
- }
- }.execute();
- }
- else
- {
- spinner.setVisibility(View.INVISIBLE);
- }
-
- final Button button = (Button) findViewById(R.id.button_save);
- button.setOnClickListener(new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
-
- new OpenRatClientAsyncTask(NewActivity.this,
- R.string.waitingforcontent)
- {
-
- @Override
- protected void callServer() throws IOException
- {
- if (menuid == R.id.menu_newfolder)
- {
- request.createFolder(folderid, editText.getText()
- .toString());
- }
- if (menuid == R.id.menu_newpage)
- {
-
- int pos = spinner.getSelectedItemPosition();
- final String templateid = NewActivity.this.templates
- .keySet().toArray(new String[] {})[pos];
- request.createPage(folderid, editText.getText()
- .toString(), templateid);
- }
- }
-
- @Override
- protected void doOnSuccess()
- {
- NewActivity.this.finish();
- }
- }.execute();
- }
- });
- }
-}
diff --git a/src/de/openrat/android/blog/OpenRatBlog.java b/src/de/openrat/android/blog/OpenRatBlog.java
@@ -1,213 +0,0 @@
-/*
- * Openrat CMS-Client for Android
- *
- * Copyright (C) 2011 Jan Dankert
- *
- * This program is free software: you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later
- * version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package de.openrat.android.blog;
-
-import java.io.IOException;
-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;
-import android.os.Bundle;
-import android.preference.PreferenceManager;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.ImageView;
-import android.widget.ListView;
-import android.widget.TextView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.AdapterView.OnItemLongClickListener;
-import de.openrat.android.blog.adapter.SimpleNameAdapter;
-import de.openrat.android.blog.util.OpenRatClientAsyncTask;
-import de.openrat.android.blog.util.ServerList;
-import de.openrat.client.OpenRatClient;
-
-/**
- * @author Jan Dankert
- */
-public class OpenRatBlog extends ListActivity
-{
- private static final String PREFS_NAME = "OR_BLOG_PREFS";
- private OpenRatClient client;
- private List<String> serverList;
-
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.listing);
-
- ImageView image = (ImageView) findViewById(R.id.listimage);
- image.setImageResource(R.drawable.openrat);
- image.setVisibility(View.VISIBLE);
-
- TextView title = (TextView) findViewById(R.id.listtitle);
- title.setText(getResources().getString(R.string.connect));
- title.setVisibility(View.VISIBLE);
-
- SharedPreferences globalPrefs = PreferenceManager
- .getDefaultSharedPreferences(this);
- serverList = Arrays.asList(TextUtils.split(globalPrefs.getString(
- "server", ""), ","));
-
- ArrayList<String> list = new ArrayList<String>();
- for (String server : serverList)
- {
- SharedPreferences preferences = getSharedPreferences(server,
- MODE_PRIVATE);
-
- 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);
-
- ListView lv = getListView();
- lv.setAdapter(adapter);
-
- lv.setOnItemClickListener(new OnItemClickListener()
- {
-
- @Override
- public void onItemClick(AdapterView<?> arg0, View arg1,
- final int pos, long rowId)
- {
- new OpenRatClientAsyncTask(OpenRatBlog.this,
- R.string.waitingforlogin)
- {
- @Override
- protected void callServer() throws IOException
- {
- SharedPreferences prefs = getSharedPreferences(
- serverList.get(pos), MODE_PRIVATE);
-
- int port = Integer.parseInt(prefs.getString("port",
- "80"));
- String path = prefs.getString("path", "/");
- String host = prefs.getString("hostname", "");
- String dbid = prefs.getString("database", "");
-
- client = new OpenRatClient(host, path, port);
-
- final String username = prefs.getString("username", "");
- client.login(username, prefs.getString("password", ""),
- dbid);
- Log.d(OpenRatBlog.this.getClass().getSimpleName(),
- "User login: " + username);
-
- }
-
- protected void doOnSuccess()
- {
- // Verbindung und Login waren erfolgreich.
- // Jetzt zur Projekt-Liste wechseln.
- final Intent intent = new Intent(OpenRatBlog.this,
- ProjectActivity.class);
- intent.putExtra(ProjectActivity.CLIENT, client);
- startActivity(intent);
- };
-
- }.execute();
-
- }
-
- });
-
- lv.setOnItemLongClickListener(new OnItemLongClickListener()
- {
- @Override
- public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
- final int pos, long rowId)
- {
- Intent intent = new Intent(OpenRatBlog.this, Server.class);
- intent.putExtra(Server.NAME, serverList.get(pos));
- startActivity(intent);
- return true;
- }
- });
-
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu)
- {
- super.onCreateOptionsMenu(menu);
- MenuInflater mi = new MenuInflater(getApplication());
- mi.inflate(R.menu.main, menu);
-
- return true;
- }
-
- public boolean onOptionsItemSelected(MenuItem item)
- {
- switch (item.getItemId())
- {
- case R.id.menu_preferences:
- startActivity(new Intent(this, Configuration.class));
- return true;
- case R.id.menu_newserver:
-
- SharedPreferences globalPrefs = PreferenceManager
- .getDefaultSharedPreferences(this);
- String newServername = "" + System.currentTimeMillis();
-
- ServerList list = new ServerList(globalPrefs.getString(
- "server", "")).addServer(newServername);
- globalPrefs.edit().putString("server", list.toPlain()).commit();
-
- Intent intent = new Intent(this, Server.class);
- intent.putExtra(Server.NAME, newServername);
- startActivity(intent);
- return true;
- }
- return false;
- }
-
- @Override
- protected void onStop()
- {
- super.onStop();
-
- // Save user preferences. We need an Editor object to
- // make changes. All objects are from android.context.Context
- SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
- SharedPreferences.Editor editor = settings.edit();
- // editor.putBoolean("silentMode", mSilentMode);
-
- // Don't forget to commit your edits!!!
- editor.commit();
- }
-}-
\ No newline at end of file
diff --git a/src/de/openrat/android/blog/PageElementsActivity.java b/src/de/openrat/android/blog/PageElementsActivity.java
@@ -1,87 +0,0 @@
-/**
- *
- */
-package de.openrat.android.blog;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Map;
-
-import android.app.ListActivity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.ListView;
-import android.widget.Toast;
-import android.widget.AdapterView.OnItemClickListener;
-import de.openrat.android.blog.adapter.SimpleNameAdapter;
-import de.openrat.android.blog.util.OpenRatClientAsyncTask;
-import de.openrat.client.OpenRatClient;
-
-/**
- * @author dankert
- *
- */
-public class PageElementsActivity extends ListActivity
-{
- public static final String ID = "id";
- public static final String CLIENT = "client";
- private String objectid;
- private OpenRatClient client;
-
- Map<String, String> data;
-
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
-
- setContentView(R.layout.listing);
-
- client = (OpenRatClient) getIntent().getSerializableExtra(CLIENT);
-
- new OpenRatClientAsyncTask(this, R.string.waitingforcontent)
- {
-
- @Override
- protected void callServer() throws IOException
- {
- objectid = getIntent().getStringExtra(ID);
- data = client.getPageElements(objectid);
- }
-
- protected void doOnSuccess()
- {
- SimpleNameAdapter adapter = new SimpleNameAdapter(
- PageElementsActivity.this, new ArrayList<String>(data
- .values()), android.R.drawable.ic_menu_edit);
- setListAdapter(adapter);
- }
-
- }.execute();
-
- ListView list = getListView();
- list.setOnItemClickListener(new OnItemClickListener()
- {
-
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id)
- {
- String elementid = Arrays.asList(
- data.keySet().toArray(new String[] {})).get(position);
-
- Intent intent = new Intent(PageElementsActivity.this,
- EditorActivity.class);
- intent.putExtra(EditorActivity.ELEMENTID, elementid);
- intent.putExtra(EditorActivity.OBJECTID, objectid);
- intent.putExtra(EditorActivity.CLIENT, client);
- startActivity(intent);
- }
- });
-
- }
-
-}
diff --git a/src/de/openrat/android/blog/ProjectActivity.java b/src/de/openrat/android/blog/ProjectActivity.java
@@ -1,107 +0,0 @@
-/**
- *
- */
-package de.openrat.android.blog;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import android.app.ListActivity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.ListAdapter;
-import android.widget.ListView;
-import android.widget.AdapterView.OnItemClickListener;
-import de.openrat.android.blog.adapter.FolderContentAdapter;
-import de.openrat.android.blog.util.OpenRatClientAsyncTask;
-import de.openrat.client.OpenRatClient;
-
-/**
- * @author dankert
- *
- */
-public class ProjectActivity extends ListActivity
-{
- public static final String CLIENT = "client";
- private OpenRatClient client;
- private List<FolderEntry> data = new ArrayList<FolderEntry>();
-
- /**
- * {@inheritDoc}
- *
- * @see android.app.Activity#onCreate(android.os.Bundle)
- */
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- setContentView(R.layout.listing);
-
- super.onCreate(savedInstanceState);
-
- client = (OpenRatClient) getIntent().getSerializableExtra(CLIENT);
-
- new OpenRatClientAsyncTask(this, R.string.waitingforprojects)
- {
-
- protected void doOnSuccess()
- {
- final ListAdapter adapter = new FolderContentAdapter(
- ProjectActivity.this, data);
- setListAdapter(adapter);
- }
-
- protected void callServer() throws IOException
- {
-
- data = client.loadProjects();
- Log.d(ProjectActivity.this.getClass().getSimpleName(), "Lade Projekte: "+data.toString() );
- }
- }.execute();
-
- ListView list = getListView();
-
- list.setOnItemClickListener(new OnItemClickListener()
- {
-
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id)
- {
- // Projekt auswählen
- final String projectid = data.get(position).id;
-
- new OpenRatClientAsyncTask(ProjectActivity.this,
- R.string.waitingforselectproject)
- {
-
- @Override
- protected void callServer() throws IOException
- {
- client.selectProject(projectid);
- Log.d(ProjectActivity.this.getClass().getSimpleName(), "Waehle Projekt: "+projectid );
- }
-
- @Override
- protected void doOnSuccess()
- {
- final Intent i = new Intent(ProjectActivity.this,
- FolderActivity.class);
- i.putExtra(CLIENT, client);
-
- startActivity(i);
-
- }
- protected void doOnError(IOException error) {
- super.doOnError(error);
- };
- }.execute();
-
- }
- });
-
- }
-}
diff --git a/src/de/openrat/android/blog/PropertiesActivity.java b/src/de/openrat/android/blog/PropertiesActivity.java
@@ -1,80 +0,0 @@
-package de.openrat.android.blog;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.EditText;
-import android.widget.Toast;
-import de.openrat.client.OpenRatClient;
-
-public class PropertiesActivity extends Activity
-{
-
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
-
- setContentView(R.layout.properties);
-
- final OpenRatClient client = (OpenRatClient) getIntent()
- .getSerializableExtra("client");
- final String id = getIntent().getStringExtra("objectid");
- final String type = getIntent().getStringExtra("type");
-
- try
- {
- final Map<String, String> properties = client.getProperties(type,
- id);
-
- final EditText editTextName = (EditText) findViewById(R.id.name);
- editTextName.setText(properties.get("name"));
-
- final EditText editTextFilename = (EditText) findViewById(R.id.filename);
- editTextFilename.setText(properties.get("filename"));
-
- final EditText editTextDesc = (EditText) findViewById(R.id.description);
- editTextDesc.setText(properties.get("description"));
-
- findViewById(R.id.button_save).setOnClickListener(
- new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- Map<String, String> properties = new HashMap<String, String>();
- properties.put("name", editTextName.getText()
- .toString());
- properties.put("filename", editTextFilename
- .getText().toString());
- properties.put("description", editTextDesc
- .getText().toString());
- try
- {
- client.setProperties(type, id, properties);
- }
- catch (IOException e)
- {
- Log.e(this.getClass().getSimpleName(), e
- .getMessage(), e);
- Toast.makeText(PropertiesActivity.this, e
- .getMessage(), Toast.LENGTH_SHORT);
- }
- PropertiesActivity.this.finish();
- }
- });
- }
- catch (IOException e)
- {
- Log.e(this.getClass().getSimpleName(), e.getMessage(), e);
- Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT);
- }
-
- }
-}
diff --git a/src/de/openrat/android/blog/Server.java b/src/de/openrat/android/blog/Server.java
@@ -1,62 +0,0 @@
-package de.openrat.android.blog;
-
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.preference.PreferenceActivity;
-import android.preference.PreferenceManager;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import de.openrat.android.blog.util.ServerList;
-
-public class Server extends PreferenceActivity
-{
-
- public static final String NAME = "name";
- private String serverName;
-
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
-
- this.serverName = getIntent().getStringExtra(NAME);
- getPreferenceManager().setSharedPreferencesName(serverName);
-
- addPreferencesFromResource(R.xml.server);
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu)
- {
- super.onCreateOptionsMenu(menu);
- MenuInflater mi = new MenuInflater(getApplication());
- mi.inflate(R.menu.server, menu);
-
- return true;
- }
-
- public boolean onOptionsItemSelected(MenuItem item)
- {
- switch (item.getItemId())
- {
- case R.id.menu_delete:
-
- SharedPreferences globalPrefs = PreferenceManager
- .getDefaultSharedPreferences(this);
- ServerList serverList= new ServerList(
- globalPrefs.getString("server", ""));
-
- // Server entfernen und alles löschen.
- serverList.removeServer(serverName);
- getPreferenceManager().getSharedPreferences().edit().clear().commit();
-
- globalPrefs.edit().putString("server",
- serverList.toPlain()).commit();
- finish();
- return true;
- }
- return false;
- }
-
-}
diff --git a/src/de/openrat/android/blog/adapter/FolderContentAdapter.java b/src/de/openrat/android/blog/adapter/FolderContentAdapter.java
@@ -13,8 +13,8 @@ import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
-import de.openrat.android.blog.FolderEntry;
import de.openrat.android.blog.R;
+import de.openrat.android.client.FolderEntry;
/**
* @author dankert
diff --git a/src/de/openrat/android/blog/service/PublishIntentService.java b/src/de/openrat/android/blog/service/PublishIntentService.java
@@ -12,8 +12,8 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
-import de.openrat.android.blog.FolderActivity;
import de.openrat.android.blog.R;
+import de.openrat.android.client.FolderActivity;
import de.openrat.client.OpenRatClient;
/**
diff --git a/src/de/openrat/android/blog/service/UploadIntentService.java b/src/de/openrat/android/blog/service/UploadIntentService.java
@@ -13,8 +13,8 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
-import de.openrat.android.blog.FolderActivity;
import de.openrat.android.blog.R;
+import de.openrat.android.client.FolderActivity;
import de.openrat.client.OpenRatClient;
/**
diff --git a/src/de/openrat/android/client/Configuration.java b/src/de/openrat/android/client/Configuration.java
@@ -0,0 +1,16 @@
+package de.openrat.android.client;
+
+import de.openrat.android.blog.R;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+
+public class Configuration extends PreferenceActivity
+{
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.preferences);
+ }
+}
diff --git a/src/de/openrat/android/client/EditorActivity.java b/src/de/openrat/android/client/EditorActivity.java
@@ -0,0 +1,95 @@
+package de.openrat.android.client;
+
+import java.io.IOException;
+import java.util.Map;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.text.Editable;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.EditText;
+import android.widget.Toast;
+import de.openrat.android.blog.R;
+import de.openrat.android.blog.util.OpenRatClientAsyncTask;
+import de.openrat.client.OpenRatClient;
+
+public class EditorActivity extends Activity
+{
+ public final static String ELEMENTID = "elementid";
+ public final static String OBJECTID = "objectid";
+ // public final static String TYPE = "type";
+ public static final String CLIENT = "client";
+ private OpenRatClient client;
+ private String objectid;
+ private String elementid;
+ private String type;
+ private Map<String, String> properties;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ this.client = (OpenRatClient) getIntent().getSerializableExtra(CLIENT);
+ this.objectid = getIntent().getStringExtra(OBJECTID);
+ this.elementid = getIntent().getStringExtra(ELEMENTID);
+
+ new OpenRatClientAsyncTask(this, R.string.waitingforcontent)
+ {
+
+ @Override
+ protected void callServer() throws IOException
+ {
+ properties = client.getValue(objectid, elementid);
+ type = properties.get("type");
+ }
+
+ protected void doOnSuccess()
+ {
+ if (type.equals("longtext"))
+ {
+ setContentView(R.layout.editor);
+ final EditText view = (EditText) findViewById(R.id.text);
+ view.setText(properties.get("text"));
+
+ Button button = (Button) findViewById(R.id.save);
+ button.setOnClickListener(new OnClickListener()
+ {
+
+ @Override
+ public void onClick(View v)
+ {
+ final String text = view.getEditableText()
+ .toString();
+ final CheckBox releaseBox = (CheckBox) findViewById(R.id.release);
+
+ new OpenRatClientAsyncTask(EditorActivity.this,
+ R.string.waitingforsave)
+ {
+
+ @Override
+ protected void callServer() throws IOException
+ {
+ client.setValue(objectid, elementid,
+ "longtext", text, releaseBox.isChecked(), false);
+ }
+
+ protected void doOnSuccess()
+ {
+ Toast.makeText(EditorActivity.this,
+ R.string.saved, Toast.LENGTH_SHORT);
+ EditorActivity.this.finish();
+ };
+ }.execute();
+
+ }
+
+ });
+ }
+ }
+ }.execute();
+ }
+}
diff --git a/src/de/openrat/android/client/FileShowActivity.java b/src/de/openrat/android/client/FileShowActivity.java
@@ -0,0 +1,58 @@
+/**
+ *
+ */
+package de.openrat.android.client;
+
+import java.io.IOException;
+
+import android.app.Activity;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.os.Bundle;
+import android.widget.ImageView;
+import de.openrat.android.blog.R;
+import de.openrat.android.blog.util.OpenRatClientAsyncTask;
+import de.openrat.client.OpenRatClient;
+
+/**
+ * @author dankert
+ *
+ */
+public class FileShowActivity extends Activity
+{
+ public static final String ID = "id";
+ public static final String CLIENT = "client";
+ private String objectid;
+ private OpenRatClient client;
+
+ byte[] data;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ client = (OpenRatClient) getIntent().getSerializableExtra(CLIENT);
+
+ new OpenRatClientAsyncTask(this, R.string.waitingforcontent)
+ {
+
+ @Override
+ protected void callServer() throws IOException
+ {
+ objectid = getIntent().getStringExtra(ID);
+ data = client.getFileContent(objectid);
+ }
+
+ protected void doOnSuccess()
+ {
+ Bitmap imageBitmap = BitmapFactory.decodeByteArray(data,0,data.length);
+ setContentView(R.layout.show_image);
+ ImageView image = (ImageView) findViewById(R.id.image);
+ image.setImageBitmap(imageBitmap);
+ }
+
+ }.execute();
+ }
+
+}
diff --git a/src/de/openrat/android/client/FolderActivity.java b/src/de/openrat/android/client/FolderActivity.java
@@ -0,0 +1,408 @@
+/**
+ *
+ */
+package de.openrat.android.client;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import android.app.AlertDialog;
+import android.app.ListActivity;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.DialogInterface.OnClickListener;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.MediaStore;
+import android.view.ContextMenu;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnCreateContextMenuListener;
+import android.widget.AdapterView;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+import android.widget.Toast;
+import android.widget.AdapterView.AdapterContextMenuInfo;
+import android.widget.AdapterView.OnItemClickListener;
+import de.openrat.android.blog.R;
+import de.openrat.android.blog.adapter.FolderContentAdapter;
+import de.openrat.android.blog.service.PublishIntentService;
+import de.openrat.android.blog.service.UploadIntentService;
+import de.openrat.android.blog.util.OpenRatClientAsyncTask;
+import de.openrat.client.OpenRatClient;
+
+/**
+ * @author dankert
+ *
+ */
+public class FolderActivity extends ListActivity
+{
+
+ private static final String ID2 = "id";
+ public static final String CLIENT = "client";
+ private static final String NAME = "name";
+ private static final String TYP = "type";
+ private static final String DESCRIPTION = "description";
+ private static final int ACTIVITY_CHOOSE_FILE = 1;
+ private static final int ACTIVITY_CHOOSE_IMAGE = 2;
+ private OpenRatClient client;
+ private List<FolderEntry> data;
+ private String folderid;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ setContentView(R.layout.listing);
+
+ super.onCreate(savedInstanceState);
+
+ data = new ArrayList<FolderEntry>();
+ client = (OpenRatClient) getIntent().getSerializableExtra(CLIENT);
+
+ new OpenRatClientAsyncTask(this, R.string.waitingforcontent)
+ {
+ @Override
+ protected void callServer() throws IOException
+ {
+ folderid = getIntent().getStringExtra("folderid");
+ if (folderid == null)
+ folderid = client.getRootFolder();
+
+ data = client.getFolderEntries(folderid);
+ }
+
+ protected void doOnSuccess()
+ {
+ final ListAdapter adapter = new FolderContentAdapter(
+ FolderActivity.this, data);
+ setListAdapter(adapter);
+ };
+
+ }.execute();
+
+ ListView list = getListView();
+
+ list.setOnItemClickListener(new OnItemClickListener()
+ {
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view,
+ int position, long id)
+ {
+ FolderEntry entry = data.get(position);
+
+ final Intent intent;
+ switch (entry.type)
+ {
+ case FOLDER:
+
+ intent = new Intent(FolderActivity.this,
+ FolderActivity.class);
+ intent.putExtra(CLIENT, client);
+ intent.putExtra("folderid", entry.id);
+ startActivity(intent);
+ break;
+ case PAGE:
+ intent = new Intent(FolderActivity.this,
+ PageElementsActivity.class);
+ intent.putExtra(CLIENT, client);
+ intent.putExtra(PageElementsActivity.ID, entry.id);
+ startActivity(intent);
+ break;
+ case FILE:
+ intent = new Intent(FolderActivity.this,
+ FileShowActivity.class);
+ intent.putExtra(CLIENT, client);
+ intent.putExtra(FileShowActivity.ID, entry.id);
+ startActivity(intent);
+ break;
+ default:
+ }
+ }
+ });
+
+ list.setOnCreateContextMenuListener(new OnCreateContextMenuListener()
+ {
+
+ @Override
+ public void onCreateContextMenu(ContextMenu menu, View v,
+ ContextMenu.ContextMenuInfo menuInfo)
+ {
+ MenuInflater menuInflater = getMenuInflater();
+ menuInflater.inflate(R.menu.context, menu);
+ // menu.add(0, 5, 0, "Click Me");
+
+ }
+
+ });
+ /**
+ *
+ list.setonOnItemLongClickListener(new OnItemLongClickListener() {
+ *
+ * @Override public boolean onItemLongClick(AdapterView<?> parent, View
+ * view, int position, long id) { Map<String, String> entry =
+ * data.get(position);
+ *
+ * final Intent intent; intent = new
+ * Intent(FolderActivity.this, PropertiesActivity.class);
+ * intent.putExtra(CLIENT, request);
+ * intent.putExtra("objectid", entry.get(ID2));
+ * startActivity(intent); return true; } });
+ */
+ }
+
+ public boolean onContextItemSelected(MenuItem item)
+ {
+
+ switch (item.getItemId())
+ {
+
+ case R.id.menu_properties:
+
+ // This is actually where the magic happens.
+
+ // As we use an adapter view (which the ListView is)
+
+ // We can cast item.getMenuInfo() to AdapterContextMenuInfo
+
+ AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item
+ .getMenuInfo();
+
+ // To get the id of the clicked item in the list use menuInfo.id
+
+ // Log.d("t", "list pos:" + menuInfo.position + " id:" +
+ // menuInfo.id);
+ FolderEntry entry = data.get(menuInfo.position);
+ final Intent intent;
+ intent = new Intent(FolderActivity.this,
+ PropertiesActivity.class);
+ intent.putExtra(CLIENT, client);
+ intent.putExtra("objectid", entry.id);
+ intent.putExtra(TYP, entry.type.name().toLowerCase());
+ startActivity(intent);
+ return true;
+
+ case R.id.menu_delete:
+
+ final AdapterContextMenuInfo mInfo = (AdapterView.AdapterContextMenuInfo) item
+ .getMenuInfo();
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setMessage(
+ getResources().getString(R.string.areyousure))
+ .setCancelable(false).setPositiveButton(
+ getResources().getString(R.string.delete),
+ new DialogInterface.OnClickListener()
+ {
+ public void onClick(DialogInterface dialog,
+ int id)
+ {
+ final FolderEntry en = data
+ .get(mInfo.position);
+
+ new OpenRatClientAsyncTask(
+ FolderActivity.this,
+ R.string.waitingfordelete)
+ {
+ @Override
+ protected void callServer()
+ throws IOException
+ {
+ client.delete(folderid, en.id);
+ }
+ }.execute();
+ }
+ });
+ AlertDialog alert = builder.create();
+ alert.show();
+
+ return true;
+
+ case R.id.menu_publish:
+
+ menuInfo = (AdapterView.AdapterContextMenuInfo) item
+ .getMenuInfo();
+ entry = data.get(menuInfo.position);
+
+ final Intent publishIntent = new Intent(this,
+ PublishIntentService.class);
+
+ publishIntent.putExtra(PublishIntentService.EXTRA_REQUEST,
+ client);
+ publishIntent.putExtra(PublishIntentService.EXTRA_TYPE,
+ entry.type.name().toLowerCase());
+ publishIntent.putExtra(PublishIntentService.EXTRA_NAME,
+ entry.name);
+ publishIntent.putExtra(PublishIntentService.EXTRA_ID, entry.id);
+ startService(publishIntent);
+
+ Toast.makeText(this, R.string.publish, Toast.LENGTH_SHORT);
+
+ return true;
+
+ default:
+
+ return super.onContextItemSelected(item);
+
+ }
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu)
+ {
+ super.onCreateOptionsMenu(menu);
+ MenuInflater mi = new MenuInflater(getApplication());
+ mi.inflate(R.menu.folder, menu);
+
+ return true;
+ }
+
+ public boolean onOptionsItemSelected(MenuItem item)
+ {
+ switch (item.getItemId())
+ {
+ case R.id.menu_language:
+ 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();
+ }
+ });
+ final AlertDialog alert = builder.create();
+ alert.show();
+ }
+ }.execute();
+
+ return true;
+
+ case R.id.menu_upload:
+
+ Intent chooseFile;
+ Intent intent;
+ chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
+ chooseFile.setType("file/*");
+ intent = Intent.createChooser(chooseFile, getResources()
+ .getString(R.string.choosefile));
+ startActivityForResult(intent, ACTIVITY_CHOOSE_FILE);
+ return true;
+ case R.id.menu_upload_image:
+
+ chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
+ chooseFile.setType("image/*");
+ intent = Intent.createChooser(chooseFile, getResources()
+ .getString(R.string.chooseimage));
+ startActivityForResult(intent, ACTIVITY_CHOOSE_IMAGE);
+ return true;
+
+ case R.id.menu_newfolder:
+ case R.id.menu_newpage:
+
+ intent = new Intent(this, NewActivity.class);
+ intent.putExtra(NewActivity.EXTRA_CLIENT, client);
+ intent.putExtra(NewActivity.EXTRA_MENUID, item.getItemId());
+ intent.putExtra(NewActivity.EXTRA_FOLDERID, folderid);
+ startActivity(intent);
+ return true;
+
+ default:
+ Toast.makeText(this, "??: " + item.getItemId(),
+ Toast.LENGTH_SHORT);
+
+ }
+ return false;
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data)
+ {
+ switch (requestCode)
+ {
+ case ACTIVITY_CHOOSE_FILE:
+ case ACTIVITY_CHOOSE_IMAGE:
+ {
+ if (resultCode == RESULT_OK)
+ {
+ // Upload durchführen
+ Uri uri = data.getData();
+
+ String filePath;
+ if (requestCode == ACTIVITY_CHOOSE_IMAGE)
+ {
+
+ filePath = getPath(uri);
+ }
+ else
+ {
+ filePath = uri.getPath();
+ }
+
+ final Intent uploadIntent = new Intent(
+ FolderActivity.this, UploadIntentService.class);
+ uploadIntent.putExtra(
+ UploadIntentService.EXTRA_FILENAME, filePath);
+ uploadIntent.putExtra(
+ UploadIntentService.EXTRA_REQUEST, client);
+ startService(uploadIntent);
+
+ Toast.makeText(this, R.string.publish,
+ Toast.LENGTH_SHORT);
+ }
+ }
+ }
+ }
+
+ public String getPath(Uri uri)
+ {
+ String[] projection = { MediaStore.Images.Media.DATA };
+ Cursor cursor = managedQuery(uri, projection, null, null, null);
+ int column_index = cursor
+ .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
+ cursor.moveToFirst();
+ return cursor.getString(column_index);
+ }
+}
diff --git a/src/de/openrat/android/client/FolderEntry.java b/src/de/openrat/android/client/FolderEntry.java
@@ -0,0 +1,27 @@
+package de.openrat.android.client;
+
+public class FolderEntry
+{
+ public FType type;
+ public String id;
+ public String name;
+ public String description;
+
+ public enum FType
+ {
+ FOLDER, PAGE, FILE, LINK, PROJECT;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString()
+ {
+ return "FolderEntry [id=" + id + ", name=" + name + ", type=" + type
+ + "]";
+ }
+
+}
diff --git a/src/de/openrat/android/client/NewActivity.java b/src/de/openrat/android/client/NewActivity.java
@@ -0,0 +1,120 @@
+package de.openrat.android.client;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Spinner;
+import de.openrat.android.blog.R;
+import de.openrat.android.blog.util.OpenRatClientAsyncTask;
+import de.openrat.client.OpenRatClient;
+
+public class NewActivity extends Activity
+{
+
+ public static final String EXTRA_CLIENT = "request";
+ public static final String EXTRA_MENUID = "menuid";
+ public static final String EXTRA_FOLDERID = "folderid";
+
+ private OpenRatClient request;
+ private int menuid;
+ private Map<String, String> templates;
+ private String folderid;
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see android.app.Activity#onCreate(android.os.Bundle)
+ */
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ request = (OpenRatClient) getIntent()
+ .getSerializableExtra(EXTRA_CLIENT);
+ menuid = getIntent().getIntExtra(EXTRA_MENUID, 0);
+ folderid = getIntent().getStringExtra(EXTRA_FOLDERID);
+
+ setContentView(R.layout.new1);
+
+ final EditText editText = (EditText) findViewById(R.id.newname);
+ final Spinner spinner = (Spinner) findViewById(R.id.spinner);
+ if (menuid == R.id.menu_newpage)
+ {
+ spinner.setVisibility(View.VISIBLE);
+
+ new OpenRatClientAsyncTask(this, R.string.waitingforcontent)
+ {
+
+ @Override
+ protected void callServer() throws IOException
+ {
+ templates = request.getTemplates();
+ }
+
+ @Override
+ protected void doOnSuccess()
+ {
+ final List<String> valueList = new ArrayList<String>(
+ templates.values());
+ ArrayAdapter adapter = new ArrayAdapter(NewActivity.this,
+ android.R.layout.simple_spinner_item, valueList);
+ adapter
+ .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ spinner.setAdapter(adapter);
+ }
+ }.execute();
+ }
+ else
+ {
+ spinner.setVisibility(View.INVISIBLE);
+ }
+
+ final Button button = (Button) findViewById(R.id.button_save);
+ button.setOnClickListener(new OnClickListener()
+ {
+ @Override
+ public void onClick(View v)
+ {
+
+ new OpenRatClientAsyncTask(NewActivity.this,
+ R.string.waitingforcontent)
+ {
+
+ @Override
+ protected void callServer() throws IOException
+ {
+ if (menuid == R.id.menu_newfolder)
+ {
+ request.createFolder(folderid, editText.getText()
+ .toString());
+ }
+ if (menuid == R.id.menu_newpage)
+ {
+
+ int pos = spinner.getSelectedItemPosition();
+ final String templateid = NewActivity.this.templates
+ .keySet().toArray(new String[] {})[pos];
+ request.createPage(folderid, editText.getText()
+ .toString(), templateid);
+ }
+ }
+
+ @Override
+ protected void doOnSuccess()
+ {
+ NewActivity.this.finish();
+ }
+ }.execute();
+ }
+ });
+ }
+}
diff --git a/src/de/openrat/android/client/OpenRatBlog.java b/src/de/openrat/android/client/OpenRatBlog.java
@@ -0,0 +1,214 @@
+/*
+ * Openrat CMS-Client for Android
+ *
+ * Copyright (C) 2011 Jan Dankert
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package de.openrat.android.client;
+
+import java.io.IOException;
+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;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.AdapterView.OnItemLongClickListener;
+import de.openrat.android.blog.R;
+import de.openrat.android.blog.adapter.SimpleNameAdapter;
+import de.openrat.android.blog.util.OpenRatClientAsyncTask;
+import de.openrat.android.blog.util.ServerList;
+import de.openrat.client.OpenRatClient;
+
+/**
+ * @author Jan Dankert
+ */
+public class OpenRatBlog extends ListActivity
+{
+ private static final String PREFS_NAME = "OR_BLOG_PREFS";
+ private OpenRatClient client;
+ private List<String> serverList;
+
+ /** Called when the activity is first created. */
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.listing);
+
+ ImageView image = (ImageView) findViewById(R.id.listimage);
+ image.setImageResource(R.drawable.openrat);
+ image.setVisibility(View.VISIBLE);
+
+ TextView title = (TextView) findViewById(R.id.listtitle);
+ title.setText(getResources().getString(R.string.connect));
+ title.setVisibility(View.VISIBLE);
+
+ SharedPreferences globalPrefs = PreferenceManager
+ .getDefaultSharedPreferences(this);
+ serverList = Arrays.asList(TextUtils.split(globalPrefs.getString(
+ "server", ""), ","));
+
+ ArrayList<String> list = new ArrayList<String>();
+ for (String server : serverList)
+ {
+ SharedPreferences preferences = getSharedPreferences(server,
+ MODE_PRIVATE);
+
+ 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);
+
+ ListView lv = getListView();
+ lv.setAdapter(adapter);
+
+ lv.setOnItemClickListener(new OnItemClickListener()
+ {
+
+ @Override
+ public void onItemClick(AdapterView<?> arg0, View arg1,
+ final int pos, long rowId)
+ {
+ new OpenRatClientAsyncTask(OpenRatBlog.this,
+ R.string.waitingforlogin)
+ {
+ @Override
+ protected void callServer() throws IOException
+ {
+ SharedPreferences prefs = getSharedPreferences(
+ serverList.get(pos), MODE_PRIVATE);
+
+ int port = Integer.parseInt(prefs.getString("port",
+ "80"));
+ String path = prefs.getString("path", "/");
+ String host = prefs.getString("hostname", "");
+ String dbid = prefs.getString("database", "");
+
+ client = new OpenRatClient(host, path, port);
+
+ final String username = prefs.getString("username", "");
+ client.login(username, prefs.getString("password", ""),
+ dbid);
+ Log.d(OpenRatBlog.this.getClass().getSimpleName(),
+ "User login: " + username);
+
+ }
+
+ protected void doOnSuccess()
+ {
+ // Verbindung und Login waren erfolgreich.
+ // Jetzt zur Projekt-Liste wechseln.
+ final Intent intent = new Intent(OpenRatBlog.this,
+ ProjectActivity.class);
+ intent.putExtra(ProjectActivity.CLIENT, client);
+ startActivity(intent);
+ };
+
+ }.execute();
+
+ }
+
+ });
+
+ lv.setOnItemLongClickListener(new OnItemLongClickListener()
+ {
+ @Override
+ public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
+ final int pos, long rowId)
+ {
+ Intent intent = new Intent(OpenRatBlog.this, Server.class);
+ intent.putExtra(Server.NAME, serverList.get(pos));
+ startActivity(intent);
+ return true;
+ }
+ });
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu)
+ {
+ super.onCreateOptionsMenu(menu);
+ MenuInflater mi = new MenuInflater(getApplication());
+ mi.inflate(R.menu.main, menu);
+
+ return true;
+ }
+
+ public boolean onOptionsItemSelected(MenuItem item)
+ {
+ switch (item.getItemId())
+ {
+ case R.id.menu_preferences:
+ startActivity(new Intent(this, Configuration.class));
+ return true;
+ case R.id.menu_newserver:
+
+ SharedPreferences globalPrefs = PreferenceManager
+ .getDefaultSharedPreferences(this);
+ String newServername = "" + System.currentTimeMillis();
+
+ ServerList list = new ServerList(globalPrefs.getString(
+ "server", "")).addServer(newServername);
+ globalPrefs.edit().putString("server", list.toPlain()).commit();
+
+ Intent intent = new Intent(this, Server.class);
+ intent.putExtra(Server.NAME, newServername);
+ startActivity(intent);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected void onStop()
+ {
+ super.onStop();
+
+ // Save user preferences. We need an Editor object to
+ // make changes. All objects are from android.context.Context
+ SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
+ SharedPreferences.Editor editor = settings.edit();
+ // editor.putBoolean("silentMode", mSilentMode);
+
+ // Don't forget to commit your edits!!!
+ editor.commit();
+ }
+}+
\ No newline at end of file
diff --git a/src/de/openrat/android/client/PageElementsActivity.java b/src/de/openrat/android/client/PageElementsActivity.java
@@ -0,0 +1,88 @@
+/**
+ *
+ */
+package de.openrat.android.client;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Map;
+
+import android.app.ListActivity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ListView;
+import android.widget.Toast;
+import android.widget.AdapterView.OnItemClickListener;
+import de.openrat.android.blog.R;
+import de.openrat.android.blog.adapter.SimpleNameAdapter;
+import de.openrat.android.blog.util.OpenRatClientAsyncTask;
+import de.openrat.client.OpenRatClient;
+
+/**
+ * @author dankert
+ *
+ */
+public class PageElementsActivity extends ListActivity
+{
+ public static final String ID = "id";
+ public static final String CLIENT = "client";
+ private String objectid;
+ private OpenRatClient client;
+
+ Map<String, String> data;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.listing);
+
+ client = (OpenRatClient) getIntent().getSerializableExtra(CLIENT);
+
+ new OpenRatClientAsyncTask(this, R.string.waitingforcontent)
+ {
+
+ @Override
+ protected void callServer() throws IOException
+ {
+ objectid = getIntent().getStringExtra(ID);
+ data = client.getPageElements(objectid);
+ }
+
+ protected void doOnSuccess()
+ {
+ SimpleNameAdapter adapter = new SimpleNameAdapter(
+ PageElementsActivity.this, new ArrayList<String>(data
+ .values()), android.R.drawable.ic_menu_edit);
+ setListAdapter(adapter);
+ }
+
+ }.execute();
+
+ ListView list = getListView();
+ list.setOnItemClickListener(new OnItemClickListener()
+ {
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view,
+ int position, long id)
+ {
+ String elementid = Arrays.asList(
+ data.keySet().toArray(new String[] {})).get(position);
+
+ Intent intent = new Intent(PageElementsActivity.this,
+ EditorActivity.class);
+ intent.putExtra(EditorActivity.ELEMENTID, elementid);
+ intent.putExtra(EditorActivity.OBJECTID, objectid);
+ intent.putExtra(EditorActivity.CLIENT, client);
+ startActivity(intent);
+ }
+ });
+
+ }
+
+}
diff --git a/src/de/openrat/android/client/ProjectActivity.java b/src/de/openrat/android/client/ProjectActivity.java
@@ -0,0 +1,108 @@
+/**
+ *
+ */
+package de.openrat.android.client;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import android.app.ListActivity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+import android.widget.AdapterView.OnItemClickListener;
+import de.openrat.android.blog.R;
+import de.openrat.android.blog.adapter.FolderContentAdapter;
+import de.openrat.android.blog.util.OpenRatClientAsyncTask;
+import de.openrat.client.OpenRatClient;
+
+/**
+ * @author dankert
+ *
+ */
+public class ProjectActivity extends ListActivity
+{
+ public static final String CLIENT = "client";
+ private OpenRatClient client;
+ private List<FolderEntry> data = new ArrayList<FolderEntry>();
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see android.app.Activity#onCreate(android.os.Bundle)
+ */
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ setContentView(R.layout.listing);
+
+ super.onCreate(savedInstanceState);
+
+ client = (OpenRatClient) getIntent().getSerializableExtra(CLIENT);
+
+ new OpenRatClientAsyncTask(this, R.string.waitingforprojects)
+ {
+
+ protected void doOnSuccess()
+ {
+ final ListAdapter adapter = new FolderContentAdapter(
+ ProjectActivity.this, data);
+ setListAdapter(adapter);
+ }
+
+ protected void callServer() throws IOException
+ {
+
+ data = client.loadProjects();
+ Log.d(ProjectActivity.this.getClass().getSimpleName(), "Lade Projekte: "+data.toString() );
+ }
+ }.execute();
+
+ ListView list = getListView();
+
+ list.setOnItemClickListener(new OnItemClickListener()
+ {
+
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view,
+ int position, long id)
+ {
+ // Projekt auswählen
+ final String projectid = data.get(position).id;
+
+ new OpenRatClientAsyncTask(ProjectActivity.this,
+ R.string.waitingforselectproject)
+ {
+
+ @Override
+ protected void callServer() throws IOException
+ {
+ client.selectProject(projectid);
+ Log.d(ProjectActivity.this.getClass().getSimpleName(), "Waehle Projekt: "+projectid );
+ }
+
+ @Override
+ protected void doOnSuccess()
+ {
+ final Intent i = new Intent(ProjectActivity.this,
+ FolderActivity.class);
+ i.putExtra(CLIENT, client);
+
+ startActivity(i);
+
+ }
+ protected void doOnError(IOException error) {
+ super.doOnError(error);
+ };
+ }.execute();
+
+ }
+ });
+
+ }
+}
diff --git a/src/de/openrat/android/client/PropertiesActivity.java b/src/de/openrat/android/client/PropertiesActivity.java
@@ -0,0 +1,81 @@
+package de.openrat.android.client;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.EditText;
+import android.widget.Toast;
+import de.openrat.android.blog.R;
+import de.openrat.client.OpenRatClient;
+
+public class PropertiesActivity extends Activity
+{
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.properties);
+
+ final OpenRatClient client = (OpenRatClient) getIntent()
+ .getSerializableExtra("client");
+ final String id = getIntent().getStringExtra("objectid");
+ final String type = getIntent().getStringExtra("type");
+
+ try
+ {
+ final Map<String, String> properties = client.getProperties(type,
+ id);
+
+ final EditText editTextName = (EditText) findViewById(R.id.name);
+ editTextName.setText(properties.get("name"));
+
+ final EditText editTextFilename = (EditText) findViewById(R.id.filename);
+ editTextFilename.setText(properties.get("filename"));
+
+ final EditText editTextDesc = (EditText) findViewById(R.id.description);
+ editTextDesc.setText(properties.get("description"));
+
+ findViewById(R.id.button_save).setOnClickListener(
+ new OnClickListener()
+ {
+ @Override
+ public void onClick(View v)
+ {
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("name", editTextName.getText()
+ .toString());
+ properties.put("filename", editTextFilename
+ .getText().toString());
+ properties.put("description", editTextDesc
+ .getText().toString());
+ try
+ {
+ client.setProperties(type, id, properties);
+ }
+ catch (IOException e)
+ {
+ Log.e(this.getClass().getSimpleName(), e
+ .getMessage(), e);
+ Toast.makeText(PropertiesActivity.this, e
+ .getMessage(), Toast.LENGTH_SHORT);
+ }
+ PropertiesActivity.this.finish();
+ }
+ });
+ }
+ catch (IOException e)
+ {
+ Log.e(this.getClass().getSimpleName(), e.getMessage(), e);
+ Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT);
+ }
+
+ }
+}
diff --git a/src/de/openrat/android/client/Server.java b/src/de/openrat/android/client/Server.java
@@ -0,0 +1,63 @@
+package de.openrat.android.client;
+
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceManager;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import de.openrat.android.blog.R;
+import de.openrat.android.blog.util.ServerList;
+
+public class Server extends PreferenceActivity
+{
+
+ public static final String NAME = "name";
+ private String serverName;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ this.serverName = getIntent().getStringExtra(NAME);
+ getPreferenceManager().setSharedPreferencesName(serverName);
+
+ addPreferencesFromResource(R.xml.server);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu)
+ {
+ super.onCreateOptionsMenu(menu);
+ MenuInflater mi = new MenuInflater(getApplication());
+ mi.inflate(R.menu.server, menu);
+
+ return true;
+ }
+
+ public boolean onOptionsItemSelected(MenuItem item)
+ {
+ switch (item.getItemId())
+ {
+ case R.id.menu_delete:
+
+ SharedPreferences globalPrefs = PreferenceManager
+ .getDefaultSharedPreferences(this);
+ ServerList serverList= new ServerList(
+ globalPrefs.getString("server", ""));
+
+ // Server entfernen und alles löschen.
+ serverList.removeServer(serverName);
+ getPreferenceManager().getSharedPreferences().edit().clear().commit();
+
+ globalPrefs.edit().putString("server",
+ serverList.toPlain()).commit();
+ finish();
+ return true;
+ }
+ return false;
+ }
+
+}
diff --git a/src/de/openrat/client/OpenRatClient.java b/src/de/openrat/client/OpenRatClient.java
@@ -16,9 +16,9 @@ import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
-import de.openrat.android.blog.FolderEntry;
-import de.openrat.android.blog.FolderEntry.FType;
import de.openrat.android.blog.util.FileUtils;
+import de.openrat.android.client.FolderEntry;
+import de.openrat.android.client.FolderEntry.FType;
/**
* Komfortabler Zugriff auf das OpenRat-CMS.