5dc260d5e341cb65500f10a7f79151c54147fffe
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / Preferences.java
1 package eu.alefzero.owncloud.ui;
2
3 import java.net.URI;
4 import java.net.URISyntaxException;
5 import java.util.Vector;
6
7 import eu.alefzero.owncloud.DbHandler;
8 import eu.alefzero.owncloud.OwnCloudSession;
9 import eu.alefzero.owncloud.R;
10 import eu.alefzero.owncloud.R.id;
11 import eu.alefzero.owncloud.R.menu;
12 import eu.alefzero.owncloud.R.xml;
13
14 import android.app.Activity;
15 import android.content.Intent;
16 import android.os.Bundle;
17 import android.preference.Preference;
18 import android.preference.PreferenceActivity;
19 import android.preference.PreferenceScreen;
20 import android.util.Log;
21 import android.view.ContextMenu;
22 import android.view.Menu;
23 import android.view.MenuInflater;
24 import android.view.MenuItem;
25 import android.view.View;
26 import android.view.ContextMenu.ContextMenuInfo;
27 import android.widget.AdapterView.AdapterContextMenuInfo;
28
29 public class Preferences extends PreferenceActivity {
30 private String TAG = "OwnCloudPreferences";
31 private final int mNewSession = 47;
32 private final int mEditSession = 48;
33 private DbHandler mDbHandler;
34 private Vector<OwnCloudSession> mSessions;
35 private int mSelectedMenuItem;
36
37 @Override
38 public void onCreate(Bundle savedInstanceState){
39 super.onCreate(savedInstanceState);
40 mDbHandler = new DbHandler(getBaseContext());
41 mSessions = new Vector<OwnCloudSession>();
42 addPreferencesFromResource(R.xml.preferences);
43 registerForContextMenu(getListView());
44 //populateSessionList();
45 }
46
47 private void populateSessionList() {
48 mSessions.clear();
49 mSessions = mDbHandler.getSessionList();
50 PreferenceScreen ps = getPreferenceScreen();
51 ps.removeAll();
52 addPreferencesFromResource(R.xml.preferences);
53 for (int i = 0; i < mSessions.size(); i++) {
54 Preference preference = new Preference(getBaseContext());
55 preference.setTitle(mSessions.get(i).getName());
56 URI uri;
57 try {
58 uri = new URI(mSessions.get(i).getUrl());
59 } catch (URISyntaxException e) {
60 e.printStackTrace(); // should never happend
61 continue;
62 }
63 preference.setSummary(uri.getScheme() + "://" + uri.getHost()+uri.getPath());
64 ps.addPreference(preference);
65 }
66 }
67
68 @Override
69 public boolean onCreateOptionsMenu(Menu menu) {
70 super.onCreateOptionsMenu(menu);
71 MenuInflater inflater = getMenuInflater();
72 inflater.inflate(R.menu.prefs_menu, menu);
73 return true;
74 }
75
76 @Override
77 public boolean onMenuItemSelected(int featureId, MenuItem item) {
78 super.onMenuItemSelected(featureId, item);
79 Intent intent;
80
81 switch (item.getItemId()) {
82 case R.id.addSessionItem:
83 intent = new Intent(this, PreferencesNewSession.class);
84 startActivityForResult(intent, mNewSession);
85 break;
86 case R.id.SessionContextEdit:
87 intent = new Intent(this, PreferencesNewSession.class);
88 intent.putExtra("sessionId", mSessions.get(mSelectedMenuItem).getEntryId());
89 intent.putExtra("sessionName", mSessions.get(mSelectedMenuItem).getName());
90 intent.putExtra("sessionURL", mSessions.get(mSelectedMenuItem).getUrl());
91 startActivityForResult(intent, mEditSession);
92 break;
93 case R.id.SessionContextRemove:
94 OwnCloudSession ocs = mSessions.get(mSelectedMenuItem);
95 mDbHandler.removeSessionWithId(ocs.getEntryId());
96 mSessions.remove(ocs);
97 getPreferenceScreen().removePreference(getPreferenceScreen().getPreference(mSelectedMenuItem+1));
98 break;
99 default:
100 Log.w(TAG, "Unknown menu item triggered");
101 return false;
102 }
103 return true;
104 }
105
106 @Override
107 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
108 super.onActivityResult(requestCode, resultCode, data);
109 if (resultCode == Activity.RESULT_OK) {
110 switch (requestCode) {
111 case mNewSession:
112 mDbHandler.addSession(data.getStringExtra("sessionName"),
113 data.getStringExtra("sessionURL"));
114 getPreferenceScreen().removeAll();
115 addPreferencesFromResource(R.xml.preferences);
116 populateSessionList();
117 break;
118 case mEditSession:
119 mDbHandler.changeSessionFields(data.getIntExtra("sessionId", -1),
120 data.getStringExtra("sessionName"),
121 data.getStringExtra("sessionURL"));
122 populateSessionList();
123 break;
124 }
125 }
126 }
127
128 @Override
129 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
130 super.onCreateContextMenu(menu, v, menuInfo);
131 AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
132 mSelectedMenuItem = info.position-1;
133 menu.setHeaderTitle(mSessions.get(mSelectedMenuItem).getName());
134
135 MenuInflater inflater = getMenuInflater();
136 inflater.inflate(R.menu.session_context_menu, menu);
137
138 }
139
140 @Override
141 protected void onDestroy() {
142 mDbHandler.close();
143 super.onDestroy();
144 }
145
146 }