X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/dc8c32fb3f7033d6fdfa7e1b64eaa77884da678a..2b562903da978575fb3e25aac26abc09fc5871e2:/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 index dadffaf6..aec2f94d 100644 --- a/src/eu/alefzero/owncloud/ui/activity/Preferences.java +++ b/src/eu/alefzero/owncloud/ui/activity/Preferences.java @@ -21,39 +21,45 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.Vector; -import eu.alefzero.owncloud.OwnCloudSession; -import eu.alefzero.owncloud.R; -import eu.alefzero.owncloud.R.id; -import eu.alefzero.owncloud.R.menu; -import eu.alefzero.owncloud.R.xml; -import eu.alefzero.owncloud.db.DbHandler; - +import android.accounts.Account; +import android.accounts.AccountManager; import android.app.Activity; import android.content.Intent; import android.os.Bundle; +import android.preference.ListPreference; import android.preference.Preference; -import android.preference.PreferenceActivity; +import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceScreen; import android.util.Log; import android.view.ContextMenu; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; import android.view.ContextMenu.ContextMenuInfo; +import android.view.View; import android.widget.AdapterView.AdapterContextMenuInfo; +import com.actionbarsherlock.app.SherlockPreferenceActivity; +import com.actionbarsherlock.view.Menu; +import com.actionbarsherlock.view.MenuInflater; +import com.actionbarsherlock.view.MenuItem; + +import eu.alefzero.owncloud.OwnCloudSession; +import eu.alefzero.owncloud.R; +import eu.alefzero.owncloud.authenticator.AccountAuthenticator; +import eu.alefzero.owncloud.authenticator.AuthUtils; +import eu.alefzero.owncloud.db.DbHandler; + /** * An Activity that allows the user to change the application's settings. * @author Bartek Przybylski * */ -public class Preferences extends PreferenceActivity { - private String TAG = "OwnCloudPreferences"; +public class Preferences extends SherlockPreferenceActivity implements OnPreferenceChangeListener { + private static final String TAG = "OwnCloudPreferences"; private final int mNewSession = 47; private final int mEditSession = 48; private DbHandler mDbHandler; private Vector mSessions; + private Account[] mAccounts; + private ListPreference mAccountList; private int mSelectedMenuItem; @Override @@ -63,6 +69,7 @@ public class Preferences extends PreferenceActivity { mSessions = new Vector(); addPreferencesFromResource(R.xml.preferences); registerForContextMenu(getListView()); + populateAccountList(); //populateSessionList(); } @@ -79,18 +86,44 @@ public class Preferences extends PreferenceActivity { try { uri = new URI(mSessions.get(i).getUrl()); } catch (URISyntaxException e) { - e.printStackTrace(); // should never happend + e.printStackTrace(); // should never happen continue; } preference.setSummary(uri.getScheme() + "://" + uri.getHost()+uri.getPath()); ps.addPreference(preference); } } + + /** + * Populates the account selector + */ + private void populateAccountList(){ + AccountManager accMan = AccountManager.get(this); + mAccounts = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE); + mAccountList = (ListPreference) findPreference("select_oc_account"); + mAccountList.setOnPreferenceChangeListener(this); + + // Display the name of the current account if there is any + Account defaultAccount = AuthUtils.getCurrentOwnCloudAccount(this); + if(defaultAccount != null){ + mAccountList.setSummary(defaultAccount.name); + } + + // Transform accounts into array of string for preferences to use + String[] accNames = new String[mAccounts.length]; + for(int i = 0; i < mAccounts.length; i++){ + Account account = mAccounts[i]; + accNames[i] = account.name; + } + + mAccountList.setEntries(accNames); + mAccountList.setEntryValues(accNames); + } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); - MenuInflater inflater = getMenuInflater(); + MenuInflater inflater = getSherlock().getMenuInflater(); inflater.inflate(R.menu.prefs_menu, menu); return true; } @@ -154,8 +187,8 @@ public class Preferences extends PreferenceActivity { mSelectedMenuItem = info.position-1; menu.setHeaderTitle(mSessions.get(mSelectedMenuItem).getName()); - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.session_context_menu, menu); + MenuInflater inflater = getSherlock().getMenuInflater(); + inflater.inflate(R.menu.session_context_menu, (Menu) menu); } @@ -164,5 +197,17 @@ public class Preferences extends PreferenceActivity { mDbHandler.close(); super.onDestroy(); } + +@Override +/** + * Updates the summary of the account selector after a new account has + * been selected + */ +public boolean onPreferenceChange(Preference preference, Object newValue) { + if(preference.equals(mAccountList)) { + mAccountList.setSummary(newValue.toString()); + } + return true; +} }