From: Bartek Przybylski Date: Sun, 13 May 2012 20:28:44 +0000 (+0200) Subject: allow account deleting from account picker X-Git-Tag: oc-android-1.4.3~424 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/2c9b84a862a7ed644bf03242449f37ca1065123d?ds=inline;hp=-c allow account deleting from account picker --- 2c9b84a862a7ed644bf03242449f37ca1065123d diff --git a/res/menu/account_picker_long_click.xml b/res/menu/account_picker_long_click.xml new file mode 100644 index 00000000..e7243981 --- /dev/null +++ b/res/menu/account_picker_long_click.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java b/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java index 77575512..ee874d0a 100644 --- a/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java +++ b/src/eu/alefzero/owncloud/datamodel/FileDataStorageManager.java @@ -98,7 +98,11 @@ public class FileDataStorageManager implements DataStorageManager { cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, mAccount.name); if (fileExists(file.getPath())) { - file.setFileId(getFileByPath(file.getPath()).getFileId()); + OCFile tmpfile = getFileByPath(file.getPath()); + file.setStoragePath(tmpfile.getStoragePath()); + cv.put(ProviderTableMeta.FILE_STORAGE_PATH, file.getStoragePath()); + file.setFileId(tmpfile.getFileId()); + overriden = true; if (getContentResolver() != null) { getContentResolver().update(ProviderTableMeta.CONTENT_URI, diff --git a/src/eu/alefzero/owncloud/datamodel/OCFile.java b/src/eu/alefzero/owncloud/datamodel/OCFile.java index 9c40b947..b9be3add 100644 --- a/src/eu/alefzero/owncloud/datamodel/OCFile.java +++ b/src/eu/alefzero/owncloud/datamodel/OCFile.java @@ -86,7 +86,7 @@ public class OCFile { * @return true if it is */ public boolean isDownloaded() { - return localPath != null; + return localPath != null || localPath.equals(""); } /** diff --git a/src/eu/alefzero/owncloud/ui/activity/AccountSelectActivity.java b/src/eu/alefzero/owncloud/ui/activity/AccountSelectActivity.java index f3dd4b3c..fc7ef2ed 100644 --- a/src/eu/alefzero/owncloud/ui/activity/AccountSelectActivity.java +++ b/src/eu/alefzero/owncloud/ui/activity/AccountSelectActivity.java @@ -7,11 +7,20 @@ import java.util.Map; import android.accounts.Account; import android.accounts.AccountManager; +import android.accounts.AccountManagerCallback; +import android.accounts.AccountManagerFuture; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.os.Handler; +import android.util.Log; +import android.view.ContextMenu; import android.view.View; import android.view.ViewGroup; +import android.view.ContextMenu.ContextMenuInfo; +import android.widget.AdapterView; +import android.widget.AdapterView.AdapterContextMenuInfo; +import android.widget.AdapterView.OnItemLongClickListener; import android.widget.CheckedTextView; import android.widget.ListView; import android.widget.SimpleAdapter; @@ -27,8 +36,11 @@ import eu.alefzero.owncloud.authenticator.AccountAuthenticator; import eu.alefzero.owncloud.AccountUtils; import eu.alefzero.owncloud.R; -public class AccountSelectActivity extends SherlockListActivity { +public class AccountSelectActivity extends SherlockListActivity + implements AccountManagerCallback { + private final Handler mHandler = new Handler(); + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -41,22 +53,7 @@ public class AccountSelectActivity extends SherlockListActivity { @Override protected void onResume() { super.onResume(); - - AccountManager am = (AccountManager) getSystemService(ACCOUNT_SERVICE); - Account accounts[] = am.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE); - LinkedList< HashMap> ll = new LinkedList>(); - for (Account a : accounts) { - HashMap h = new HashMap(); - h.put("NAME", a.name); - h.put("VER", "ownCloud version: " + am.getUserData(a, AccountAuthenticator.KEY_OC_VERSION)); - ll.add(h); - } - - setListAdapter(new AccountCheckedSimpleAdepter(this, - ll, - android.R.layout.simple_list_item_single_choice, - new String[]{"NAME"}, - new int[]{android.R.id.text1})); + populateAccountList(); } @Override @@ -67,6 +64,13 @@ public class AccountSelectActivity extends SherlockListActivity { } @Override + public void onCreateContextMenu(ContextMenu menu, View v, + ContextMenuInfo menuInfo) { + getMenuInflater().inflate(R.menu.account_picker_long_click, menu); + super.onCreateContextMenu(menu, v, menuInfo); + } + + @Override protected void onListItemClick(ListView l, View v, int position, long id) { String accountName = ((TextView)v.findViewById(android.R.id.text1)).getText().toString(); AccountUtils.setCurrentOwnCloudAccount(this, accountName); @@ -74,7 +78,7 @@ public class AccountSelectActivity extends SherlockListActivity { startActivity(i); finish(); } - + @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { if (item.getItemId() == R.id.createAccount) { @@ -87,6 +91,51 @@ public class AccountSelectActivity extends SherlockListActivity { return false; } + @Override + public boolean onContextItemSelected(android.view.MenuItem item) { + AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); + int index = info.position; + HashMap map = (HashMap)getListAdapter().getItem(index); + String accountName = map.get("NAME"); + AccountManager am = (AccountManager)getSystemService(ACCOUNT_SERVICE); + Account accounts[] = am.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE); + for (Account a : accounts) { + if (a.name.equals(accountName)) { + am.removeAccount(a, this, mHandler); + } + } + + return false; + } + + + private void populateAccountList() { + AccountManager am = (AccountManager) getSystemService(ACCOUNT_SERVICE); + Account accounts[] = am.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE); + LinkedList< HashMap> ll = new LinkedList>(); + for (Account a : accounts) { + HashMap h = new HashMap(); + h.put("NAME", a.name); + h.put("VER", "ownCloud version: " + am.getUserData(a, AccountAuthenticator.KEY_OC_VERSION)); + ll.add(h); + } + + setListAdapter(new AccountCheckedSimpleAdepter(this, + ll, + android.R.layout.simple_list_item_single_choice, + new String[]{"NAME"}, + new int[]{android.R.id.text1})); + registerForContextMenu(getListView()); + } + + @Override + public void run(AccountManagerFuture future) { + if (future.isDone()) { + AccountUtils.setCurrentOwnCloudAccount(this, AccountUtils.getCurrentOwnCloudAccount(this).name); + populateAccountList(); + } + } + private class AccountCheckedSimpleAdepter extends SimpleAdapter { private Account mCurrentAccount; private List> mPrivateData; @@ -113,5 +162,6 @@ public class AccountSelectActivity extends SherlockListActivity { } + }