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