Эх сурвалжийг харах

Show a check mark on the current account in the account manager

# Conflicts:
#	res/layout/account_item.xml
#	src/com/owncloud/android/ui/activity/ManageAccountsActivity.java
#	src/com/owncloud/android/ui/adapter/AccountListAdapter.java
David A. Velasco 8 жил өмнө
parent
commit
c098aca057

BIN
res/drawable/ic_current.png


BIN
res/drawable/ic_current_white.png


+ 17 - 1
res/layout/account_item.xml

@@ -29,7 +29,23 @@
         android:layout_height="@dimen/user_icon_size"
         android:layout_gravity="center_vertical"
         android:layout_marginLeft="@dimen/standard_margin"
-        android:src="@drawable/ic_menu_archive"/>
+        android:src="@drawable/ic_menu_archive"
+        />
+
+    <ImageView
+        android:id="@+id/ticker"
+        android:layout_width="16dp"
+        android:layout_height="16dp"
+        android:layout_alignRight="@id/icon"
+        android:layout_alignEnd="@id/icon"
+        android:layout_alignTop="@id/icon"
+        android:layout_marginRight="-8dp"
+        android:layout_marginEnd="-8dp"
+        android:layout_marginTop="-8dp"
+        android:src="@drawable/ic_current"
+        />
+        <!-- drawable will be replaced by ic_current_white + tint in runtime;
+        ic_current here as a placeholder -->
 
     <TextView
         android:id="@+id/user_name"

+ 15 - 4
src/com/owncloud/android/ui/activity/ManageAccountsActivity.java

@@ -32,11 +32,14 @@ import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.ServiceConnection;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.v4.content.ContextCompat;
+import android.support.v4.graphics.drawable.DrawableCompat;
 import android.view.MenuItem;
 import android.view.View;
 import android.widget.AdapterView;
@@ -77,11 +80,16 @@ public class ManageAccountsActivity extends FileActivity
     private ServiceConnection mDownloadServiceConnection, mUploadServiceConnection = null;
     Set<String> mOriginalAccounts;
     String mOriginalCurrentAccount;
+    private Drawable mTintedCheck;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
+        mTintedCheck = DrawableCompat.wrap(ContextCompat.getDrawable(this, R.drawable.ic_current_white));
+        int tint = ContextCompat.getColor(this, R.color.actionbar_start_color);
+        DrawableCompat.setTint(mTintedCheck, tint);
+
         setContentView(R.layout.accounts_layout);
 
         mListView = (ListView) findViewById(R.id.account_list);
@@ -96,7 +104,7 @@ public class ManageAccountsActivity extends FileActivity
         setAccount(AccountUtils.getCurrentOwnCloudAccount(this));
         onAccountSet(false);
 
-        mAccountListAdapter = new AccountListAdapter(this, getAccountListItems());
+        mAccountListAdapter = new AccountListAdapter(this, getAccountListItems(),mTintedCheck);
 
         mListView.setAdapter(mAccountListAdapter);
 
@@ -261,8 +269,11 @@ public class ManageAccountsActivity extends FileActivity
                                 Bundle result = future.getResult();
                                 String name = result.getString(AccountManager.KEY_ACCOUNT_NAME);
                                 AccountUtils.setCurrentOwnCloudAccount(getApplicationContext(), name);
-                                mAccountListAdapter = new AccountListAdapter(ManageAccountsActivity
-                                        .this, getAccountListItems());
+                                mAccountListAdapter = new AccountListAdapter(
+                                    ManageAccountsActivity.this,
+                                    getAccountListItems(),
+                                    mTintedCheck
+                                );
                                 mListView.setAdapter(mAccountListAdapter);
                                 runOnUiThread(new Runnable() {
                                     @Override
@@ -304,7 +315,7 @@ public class ManageAccountsActivity extends FileActivity
                 AccountUtils.setCurrentOwnCloudAccount(this, accountName);
             }
 
-            mAccountListAdapter = new AccountListAdapter(this, getAccountListItems());
+            mAccountListAdapter = new AccountListAdapter(this, getAccountListItems(), mTintedCheck);
             mListView.setAdapter(mAccountListAdapter);
         }
     }

+ 20 - 7
src/com/owncloud/android/ui/adapter/AccountListAdapter.java

@@ -30,6 +30,7 @@ import android.widget.ImageView;
 import android.widget.TextView;
 
 import com.owncloud.android.R;
+import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.activity.BaseActivity;
 import com.owncloud.android.ui.activity.ManageAccountsActivity;
@@ -46,13 +47,15 @@ public class AccountListAdapter extends ArrayAdapter<AccountListItem> implements
     private final BaseActivity mContext;
     private List<AccountListItem> mValues;
     private AccountListAdapterListener mListener;
+    private Drawable mTintedCheck;
 
-    public AccountListAdapter(BaseActivity context, List<AccountListItem> values) {
+    public AccountListAdapter(BaseActivity context, List<AccountListItem> values, Drawable tintedCheck) {
         super(context, -1, values);
         this.mContext = context;
         this.mValues = values;
         this.mListener = (AccountListAdapterListener) context;
         this.mAccountAvatarRadiusDimension = context.getResources().getDimension(R.dimen.list_item_avatar_icon_radius);
+        this.mTintedCheck = tintedCheck;
     }
 
     @Override
@@ -64,8 +67,10 @@ public class AccountListAdapter extends ArrayAdapter<AccountListItem> implements
             convertView = inflater.inflate(R.layout.account_item, parent, false);
 
             viewHolder = new AccountViewHolderItem();
-            viewHolder.textViewItem = (TextView) convertView.findViewById(R.id.user_name);
             viewHolder.imageViewItem = (ImageView) convertView.findViewById(R.id.user_icon);
+            viewHolder.checkViewItem = (ImageView) convertView.findViewById(R.id.ticker);
+            viewHolder.checkViewItem.setImageDrawable(mTintedCheck);
+            viewHolder.accountViewItem = (TextView) convertView.findViewById(R.id.user_name);
             viewHolder.passwordButtonItem = (ImageButton) convertView.findViewById(R.id.passwordButton);
             viewHolder.removeButtonItem = (ImageButton) convertView.findViewById(R.id.removeButton);
 
@@ -81,8 +86,8 @@ public class AccountListAdapter extends ArrayAdapter<AccountListItem> implements
             // create account item
             if (AccountListItem.TYPE_ACCOUNT == accountListItem.getType()) {
                 Account account = accountListItem.getAccount();
-                viewHolder.textViewItem.setText(account.name);
-                viewHolder.textViewItem.setTag(account.name);
+                viewHolder.accountViewItem.setText(account.name);
+                viewHolder.accountViewItem.setTag(account.name);
 
                 try {
                     DisplayUtils.setAvatar(account, this, mAccountAvatarRadiusDimension,
@@ -93,6 +98,12 @@ public class AccountListAdapter extends ArrayAdapter<AccountListItem> implements
                     viewHolder.imageViewItem.setImageResource(R.drawable.ic_user);
                 }
 
+                if (AccountUtils.getCurrentOwnCloudAccount(getContext()).name.equals(account.name)) {
+                    viewHolder.checkViewItem.setVisibility(View.VISIBLE);
+                } else {
+                    viewHolder.checkViewItem.setVisibility(View.INVISIBLE);
+                }
+
                 /// bind listener to change password
                 viewHolder.passwordButtonItem.setOnClickListener(new View.OnClickListener() {
                     @Override
@@ -110,7 +121,7 @@ public class AccountListAdapter extends ArrayAdapter<AccountListItem> implements
                 });
             } // create add account action item
             else if (AccountListItem.TYPE_ACTION_ADD == accountListItem.getType()) {
-                LayoutInflater inflater = ((ManageAccountsActivity) mContext).getLayoutInflater();
+                LayoutInflater inflater = mContext.getLayoutInflater();
                 View actionView = inflater.inflate(R.layout.account_action, parent, false);
                 ((TextView) actionView.findViewById(R.id.user_name)).setText(R.string.prefs_add_account);
                 ((ImageView) actionView.findViewById(R.id.user_icon)).setImageResource(R.drawable.ic_account_plus);
@@ -154,9 +165,11 @@ public class AccountListAdapter extends ArrayAdapter<AccountListItem> implements
     /**
      * Account ViewHolderItem to get smooth scrolling.
      */
-    static class AccountViewHolderItem {
-        TextView textViewItem;
+    private static class AccountViewHolderItem {
         ImageView imageViewItem;
+        ImageView checkViewItem;
+
+        TextView accountViewItem;
 
         ImageButton passwordButtonItem;
         ImageButton removeButtonItem;