Refactoring: Added comments to every class, as well as a copyright
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / activity / Preferences.java
diff --git a/src/eu/alefzero/owncloud/ui/activity/Preferences.java b/src/eu/alefzero/owncloud/ui/activity/Preferences.java
new file mode 100644 (file)
index 0000000..dadffaf
--- /dev/null
@@ -0,0 +1,168 @@
+/* ownCloud Android client application\r
+ *   Copyright (C) 2011  Bartek Przybylski\r
+ *\r
+ *   This program is free software: you can redistribute it and/or modify\r
+ *   it under the terms of the GNU General Public License as published by\r
+ *   the Free Software Foundation, either version 3 of the License, or\r
+ *   (at your option) any later version.\r
+ *\r
+ *   This program is distributed in the hope that it will be useful,\r
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ *   GNU General Public License for more details.\r
+ *\r
+ *   You should have received a copy of the GNU General Public License\r
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+ *\r
+ */\r
+package eu.alefzero.owncloud.ui.activity;\r
+\r
+import java.net.URI;\r
+import java.net.URISyntaxException;\r
+import java.util.Vector;\r
+\r
+import eu.alefzero.owncloud.OwnCloudSession;\r
+import eu.alefzero.owncloud.R;\r
+import eu.alefzero.owncloud.R.id;\r
+import eu.alefzero.owncloud.R.menu;\r
+import eu.alefzero.owncloud.R.xml;\r
+import eu.alefzero.owncloud.db.DbHandler;\r
+\r
+import android.app.Activity;\r
+import android.content.Intent;\r
+import android.os.Bundle;\r
+import android.preference.Preference;\r
+import android.preference.PreferenceActivity;\r
+import android.preference.PreferenceScreen;\r
+import android.util.Log;\r
+import android.view.ContextMenu;\r
+import android.view.Menu;\r
+import android.view.MenuInflater;\r
+import android.view.MenuItem;\r
+import android.view.View;\r
+import android.view.ContextMenu.ContextMenuInfo;\r
+import android.widget.AdapterView.AdapterContextMenuInfo;\r
+\r
+/**\r
+ * An Activity that allows the user to change the application's settings.\r
+ * @author Bartek Przybylski\r
+ *\r
+ */\r
+public class Preferences extends PreferenceActivity {\r
+  private String TAG = "OwnCloudPreferences";\r
+  private final int mNewSession = 47;\r
+  private final int mEditSession = 48;\r
+  private DbHandler mDbHandler;\r
+  private Vector<OwnCloudSession> mSessions;\r
+  private int mSelectedMenuItem;\r
+  \r
+  @Override\r
+  public void onCreate(Bundle savedInstanceState){\r
+    super.onCreate(savedInstanceState);\r
+    mDbHandler = new DbHandler(getBaseContext());\r
+    mSessions = new Vector<OwnCloudSession>();\r
+    addPreferencesFromResource(R.xml.preferences);\r
+    registerForContextMenu(getListView());\r
+    //populateSessionList();\r
+  }\r
+  \r
+  private void populateSessionList() {\r
+    mSessions.clear();\r
+    mSessions = mDbHandler.getSessionList();\r
+    PreferenceScreen ps = getPreferenceScreen();\r
+    ps.removeAll();\r
+    addPreferencesFromResource(R.xml.preferences);\r
+    for (int i = 0; i < mSessions.size(); i++) {\r
+      Preference preference = new Preference(getBaseContext());\r
+      preference.setTitle(mSessions.get(i).getName());\r
+      URI uri;\r
+      try {\r
+        uri = new URI(mSessions.get(i).getUrl());\r
+      } catch (URISyntaxException e) {\r
+        e.printStackTrace(); // should never happend\r
+        continue;\r
+      }\r
+      preference.setSummary(uri.getScheme() + "://" + uri.getHost()+uri.getPath());\r
+      ps.addPreference(preference);\r
+    }\r
+  }\r
+\r
+  @Override\r
+  public boolean onCreateOptionsMenu(Menu menu) {\r
+    super.onCreateOptionsMenu(menu);\r
+    MenuInflater inflater = getMenuInflater();\r
+    inflater.inflate(R.menu.prefs_menu, menu);\r
+    return true;\r
+  }\r
+  \r
+  @Override\r
+  public boolean onMenuItemSelected(int featureId, MenuItem item) {\r
+    super.onMenuItemSelected(featureId, item);\r
+    Intent intent;\r
+    \r
+    switch (item.getItemId()) {\r
+      case R.id.addSessionItem:\r
+        intent = new Intent(this, PreferencesNewSession.class);\r
+        startActivityForResult(intent, mNewSession);\r
+        break;\r
+      case R.id.SessionContextEdit:\r
+        intent = new Intent(this, PreferencesNewSession.class);\r
+        intent.putExtra("sessionId", mSessions.get(mSelectedMenuItem).getEntryId());\r
+        intent.putExtra("sessionName", mSessions.get(mSelectedMenuItem).getName());\r
+        intent.putExtra("sessionURL", mSessions.get(mSelectedMenuItem).getUrl());\r
+        startActivityForResult(intent, mEditSession);\r
+        break;\r
+      case R.id.SessionContextRemove:\r
+        OwnCloudSession ocs = mSessions.get(mSelectedMenuItem);\r
+        mDbHandler.removeSessionWithId(ocs.getEntryId());\r
+        mSessions.remove(ocs);\r
+        getPreferenceScreen().removePreference(getPreferenceScreen().getPreference(mSelectedMenuItem+1));\r
+        break;\r
+      default:\r
+        Log.w(TAG, "Unknown menu item triggered");\r
+        return false;\r
+    }\r
+    return true;\r
+  }\r
+\r
+  @Override\r
+  protected void onActivityResult(int requestCode, int resultCode, Intent data) {\r
+    super.onActivityResult(requestCode, resultCode, data);\r
+    if (resultCode == Activity.RESULT_OK) {\r
+      switch (requestCode) {\r
+        case mNewSession:\r
+          mDbHandler.addSession(data.getStringExtra("sessionName"), \r
+                                data.getStringExtra("sessionURL"));\r
+          getPreferenceScreen().removeAll();\r
+          addPreferencesFromResource(R.xml.preferences);\r
+          populateSessionList();\r
+          break;\r
+        case mEditSession:\r
+          mDbHandler.changeSessionFields(data.getIntExtra("sessionId", -1),\r
+                                         data.getStringExtra("sessionName"),\r
+                                         data.getStringExtra("sessionURL"));\r
+          populateSessionList();\r
+          break;\r
+      }\r
+    }\r
+  }\r
+\r
+  @Override\r
+  public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {\r
+    super.onCreateContextMenu(menu, v, menuInfo);\r
+    AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;\r
+    mSelectedMenuItem = info.position-1;\r
+    menu.setHeaderTitle(mSessions.get(mSelectedMenuItem).getName());\r
+    \r
+    MenuInflater inflater = getMenuInflater();\r
+    inflater.inflate(R.menu.session_context_menu, menu);\r
+    \r
+  }\r
+  \r
+  @Override\r
+  protected void onDestroy() {\r
+    mDbHandler.close();\r
+    super.onDestroy();\r
+  }\r
+  \r
+}\r