Fixed: Rotating screen after viewing a file would return you to the
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / activity / Preferences.java
index a374b24..0c17d7c 100644 (file)
@@ -43,10 +43,10 @@ import com.actionbarsherlock.view.Menu;
 import com.actionbarsherlock.view.MenuInflater;\r
 import com.actionbarsherlock.view.MenuItem;\r
 \r
+import eu.alefzero.owncloud.AccountUtils;\r
 import eu.alefzero.owncloud.OwnCloudSession;\r
 import eu.alefzero.owncloud.R;\r
 import eu.alefzero.owncloud.authenticator.AccountAuthenticator;\r
-import eu.alefzero.owncloud.authenticator.AuthUtils;\r
 import eu.alefzero.owncloud.db.DbHandler;\r
 \r
 /**\r
@@ -56,210 +56,213 @@ import eu.alefzero.owncloud.db.DbHandler;
  * \r
  */\r
 public class Preferences extends SherlockPreferenceActivity implements\r
-               OnPreferenceChangeListener {\r
-       private static final 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 Account[] mAccounts;\r
-       private ListPreference mAccountList;\r
-       private ListPreference mTrackingUpdateInterval;\r
-       private CheckBoxPreference mDeviceTracking;\r
-       private int mSelectedMenuItem;\r
+        OnPreferenceChangeListener {\r
+    private static final 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 Account[] mAccounts;\r
+    private ListPreference mAccountList;\r
+    private ListPreference mTrackingUpdateInterval;\r
+    private CheckBoxPreference mDeviceTracking;\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
-               populateAccountList();\r
-               ActionBar actionBar = getSherlock().getActionBar();\r
-               actionBar.setDisplayHomeAsUpEnabled(true);\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
+        populateAccountList();\r
+        ActionBar actionBar = getSherlock().getActionBar();\r
+        actionBar.setDisplayHomeAsUpEnabled(true);\r
 \r
-               // Update summary for device tracking preference\r
-               mTrackingUpdateInterval = (ListPreference) findPreference("devicetracking_update_intervall");\r
-               String trackingSummary = getResources().getString(\r
-                               R.string.prefs_trackmydevice_interval_summary);\r
-               trackingSummary = String.format(trackingSummary,\r
-                               mTrackingUpdateInterval.getValue());\r
-               mTrackingUpdateInterval.setSummary(trackingSummary);\r
-               mTrackingUpdateInterval.setOnPreferenceChangeListener(this);\r
+        // Update summary for device tracking preference\r
+        mTrackingUpdateInterval = (ListPreference) findPreference("devicetracking_update_intervall");\r
+        String trackingSummary = getResources().getString(\r
+                R.string.prefs_trackmydevice_interval_summary);\r
+        trackingSummary = String.format(trackingSummary,\r
+                mTrackingUpdateInterval.getValue());\r
+        mTrackingUpdateInterval.setSummary(trackingSummary);\r
+        mTrackingUpdateInterval.setOnPreferenceChangeListener(this);\r
 \r
-               // Enable or disable device tracking service. Listen on events\r
-               mDeviceTracking = (CheckBoxPreference) findPreference("enable_devicetracking");\r
-               mDeviceTracking.setOnPreferenceChangeListener(this);\r
-               \r
-               // populateSessionList();\r
-       }\r
+        // Enable or disable device tracking service. Listen on events\r
+        mDeviceTracking = (CheckBoxPreference) findPreference("enable_devicetracking");\r
+        mDeviceTracking.setOnPreferenceChangeListener(this);\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 happen\r
-                               continue;\r
-                       }\r
-                       preference.setSummary(uri.getScheme() + "://" + uri.getHost()\r
-                                       + uri.getPath());\r
-                       ps.addPreference(preference);\r
-               }\r
-       }\r
+        // populateSessionList();\r
+    }\r
 \r
-       /**\r
-        * Populates the account selector\r
-        */\r
-       private void populateAccountList() {\r
-               AccountManager accMan = AccountManager.get(this);\r
-               mAccounts = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE);\r
-               mAccountList = (ListPreference) findPreference("select_oc_account");\r
-               mAccountList.setOnPreferenceChangeListener(this);\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 happen\r
+                continue;\r
+            }\r
+            preference.setSummary(uri.getScheme() + "://" + uri.getHost()\r
+                    + uri.getPath());\r
+            ps.addPreference(preference);\r
+        }\r
+    }\r
 \r
-               // Display the name of the current account if there is any\r
-               Account defaultAccount = AuthUtils.getCurrentOwnCloudAccount(this);\r
-               if (defaultAccount != null) {\r
-                       mAccountList.setSummary(defaultAccount.name);\r
-               }\r
+    /**\r
+     * Populates the account selector\r
+     */\r
+    private void populateAccountList() {\r
+        AccountManager accMan = AccountManager.get(this);\r
+        mAccounts = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE);\r
+        mAccountList = (ListPreference) findPreference("select_oc_account");\r
+        mAccountList.setOnPreferenceChangeListener(this);\r
 \r
-               // Transform accounts into array of string for preferences to use\r
-               String[] accNames = new String[mAccounts.length];\r
-               for (int i = 0; i < mAccounts.length; i++) {\r
-                       Account account = mAccounts[i];\r
-                       accNames[i] = account.name;\r
-               }\r
+        // Display the name of the current account if there is any\r
+        Account defaultAccount = AccountUtils.getCurrentOwnCloudAccount(this);\r
+        if (defaultAccount != null) {\r
+            mAccountList.setSummary(defaultAccount.name);\r
+        }\r
 \r
-               mAccountList.setEntries(accNames);\r
-               mAccountList.setEntryValues(accNames);\r
-       }\r
+        // Transform accounts into array of string for preferences to use\r
+        String[] accNames = new String[mAccounts.length];\r
+        for (int i = 0; i < mAccounts.length; i++) {\r
+            Account account = mAccounts[i];\r
+            accNames[i] = account.name;\r
+        }\r
 \r
-       @Override\r
-       public boolean onCreateOptionsMenu(Menu menu) {\r
-               super.onCreateOptionsMenu(menu);\r
-               MenuInflater inflater = getSherlock().getMenuInflater();\r
-               inflater.inflate(R.menu.prefs_menu, menu);\r
-               return true;\r
-       }\r
+        mAccountList.setEntries(accNames);\r
+        mAccountList.setEntryValues(accNames);\r
+    }\r
 \r
-       @Override\r
-       public boolean onMenuItemSelected(int featureId, MenuItem item) {\r
-               super.onMenuItemSelected(featureId, item);\r
-               Intent intent;\r
+    @Override\r
+    public boolean onCreateOptionsMenu(Menu menu) {\r
+        super.onCreateOptionsMenu(menu);\r
+        //MenuInflater inflater = getSherlock().getMenuInflater();\r
+        //inflater.inflate(R.menu.prefs_menu, menu);\r
+        return true;\r
+    }\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)\r
-                                       .getEntryId());\r
-                       intent.putExtra("sessionName", mSessions.get(mSelectedMenuItem)\r
-                                       .getName());\r
-                       intent.putExtra("sessionURL", mSessions.get(mSelectedMenuItem)\r
-                                       .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(\r
-                                       getPreferenceScreen().getPreference(mSelectedMenuItem + 1));\r
-                       break;\r
-               case android.R.id.home:\r
-                       intent = new Intent(getBaseContext(), LandingActivity.class);\r
-                       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);\r
-                       startActivity(intent);\r
-                       break;\r
-               default:\r
-                       Log.w(TAG, "Unknown menu item triggered");\r
-                       return false;\r
-               }\r
-               return true;\r
-       }\r
+    @Override\r
+    public boolean onMenuItemSelected(int featureId, MenuItem item) {\r
+        super.onMenuItemSelected(featureId, item);\r
+        Intent intent;\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(\r
-                                               data.getIntExtra("sessionId", -1),\r
-                                               data.getStringExtra("sessionName"),\r
-                                               data.getStringExtra("sessionURL"));\r
-                               populateSessionList();\r
-                               break;\r
-                       }\r
-               }\r
-       }\r
+        switch (item.getItemId()) {\r
+        //case R.id.addSessionItem:\r
+        case 1:\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)\r
+                    .getEntryId());\r
+            intent.putExtra("sessionName", mSessions.get(mSelectedMenuItem)\r
+                    .getName());\r
+            intent.putExtra("sessionURL", mSessions.get(mSelectedMenuItem)\r
+                    .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(\r
+                    getPreferenceScreen().getPreference(mSelectedMenuItem + 1));\r
+            break;\r
+        case android.R.id.home:\r
+            intent = new Intent(getBaseContext(), LandingActivity.class);\r
+            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);\r
+            startActivity(intent);\r
+            break;\r
+        default:\r
+            Log.w(TAG, "Unknown menu item triggered");\r
+            return false;\r
+        }\r
+        return true;\r
+    }\r
 \r
-       @Override\r
-       public void onCreateContextMenu(ContextMenu menu, View v,\r
-                       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
+    @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(\r
+                        data.getIntExtra("sessionId", -1),\r
+                        data.getStringExtra("sessionName"),\r
+                        data.getStringExtra("sessionURL"));\r
+                populateSessionList();\r
+                break;\r
+            }\r
+        }\r
+    }\r
 \r
-               MenuInflater inflater = getSherlock().getMenuInflater();\r
-               inflater.inflate(R.menu.session_context_menu, (Menu) menu);\r
+    @Override\r
+    public void onCreateContextMenu(ContextMenu menu, View v,\r
+            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
-       }\r
+        MenuInflater inflater = getSherlock().getMenuInflater();\r
+        inflater.inflate(R.menu.session_context_menu, (Menu) menu);\r
 \r
-       @Override\r
-       protected void onDestroy() {\r
-               mDbHandler.close();\r
-               super.onDestroy();\r
-       }\r
+    }\r
 \r
-       @Override\r
-       /**\r
-        * Updates various summaries after updates. Also starts and stops \r
-        * the\r
-        */\r
-       public boolean onPreferenceChange(Preference preference, Object newValue) {\r
-               // Update current account summary\r
-               if (preference.equals(mAccountList)) {\r
-                       mAccountList.setSummary(newValue.toString());\r
-               } \r
-               \r
-               // Update tracking interval summary\r
-               else if (preference.equals(mTrackingUpdateInterval)) {\r
-                       String trackingSummary = getResources().getString(\r
-                                       R.string.prefs_trackmydevice_interval_summary);\r
-                       trackingSummary = String.format(trackingSummary,\r
-                                       newValue.toString());\r
-                       mTrackingUpdateInterval.setSummary(trackingSummary);\r
-               } \r
-               \r
-               // Start or stop tracking service\r
-               else if (preference.equals(mDeviceTracking)) {\r
-                       Intent locationServiceIntent = new Intent();\r
-                       locationServiceIntent.setAction("eu.alefzero.owncloud.location.LocationLauncher");\r
-                       locationServiceIntent.putExtra("TRACKING_SETTING", (Boolean) newValue);\r
-                       sendBroadcast(locationServiceIntent);\r
-               }\r
-               return true;\r
-       }\r
+    @Override\r
+    protected void onDestroy() {\r
+        mDbHandler.close();\r
+        super.onDestroy();\r
+    }\r
+\r
+    @Override\r
+    /**\r
+     * Updates various summaries after updates. Also starts and stops \r
+     * the\r
+     */\r
+    public boolean onPreferenceChange(Preference preference, Object newValue) {\r
+        // Update current account summary\r
+        if (preference.equals(mAccountList)) {\r
+            mAccountList.setSummary(newValue.toString());\r
+        }\r
+\r
+        // Update tracking interval summary\r
+        else if (preference.equals(mTrackingUpdateInterval)) {\r
+            String trackingSummary = getResources().getString(\r
+                    R.string.prefs_trackmydevice_interval_summary);\r
+            trackingSummary = String.format(trackingSummary,\r
+                    newValue.toString());\r
+            mTrackingUpdateInterval.setSummary(trackingSummary);\r
+        }\r
+\r
+        // Start or stop tracking service\r
+        else if (preference.equals(mDeviceTracking)) {\r
+            Intent locationServiceIntent = new Intent();\r
+            locationServiceIntent\r
+                    .setAction("eu.alefzero.owncloud.location.LocationLauncher");\r
+            locationServiceIntent.putExtra("TRACKING_SETTING",\r
+                    (Boolean) newValue);\r
+            sendBroadcast(locationServiceIntent);\r
+        }\r
+        return true;\r
+    }\r
 \r
 }\r