--- /dev/null
+/* 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