diff options
author | Tobias Kaminsky <tobias@kaminsky.me> | 2019-08-23 09:34:37 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-23 09:34:37 +0300 |
commit | e441a9126a4cf84e81b4dcd8eb205ab0717feaa3 (patch) | |
tree | 77fdf3fa2c378d55403ee5f2e122aecd3869a192 | |
parent | a90979c85bf96ce6a77388958c6fb799a25c1b82 (diff) | |
parent | 36324fdaab6df06d8d7b8ebdb4b613a78a6c4980 (diff) |
[stable-3.8] moved multiple account dialog to recyclerview (#4390)rc-3.8.0-02
[stable-3.8] moved multiple account dialog to recyclerview
9 files changed, 301 insertions, 101 deletions
diff --git a/src/main/java/com/nextcloud/client/di/ComponentsModule.java b/src/main/java/com/nextcloud/client/di/ComponentsModule.java index 9fc5fcf78c..51dec74ff7 100644 --- a/src/main/java/com/nextcloud/client/di/ComponentsModule.java +++ b/src/main/java/com/nextcloud/client/di/ComponentsModule.java @@ -63,6 +63,7 @@ import com.owncloud.android.ui.activity.UploadListActivity; import com.owncloud.android.ui.activity.UploadPathActivity; import com.owncloud.android.ui.activity.UserInfoActivity; import com.owncloud.android.ui.dialog.ChooseTemplateDialogFragment; +import com.owncloud.android.ui.dialog.MultipleAccountsDialog; import com.owncloud.android.ui.fragment.ExtendedListFragment; import com.owncloud.android.ui.fragment.FileDetailActivitiesFragment; import com.owncloud.android.ui.fragment.FileDetailFragment; @@ -137,10 +138,9 @@ abstract class ComponentsModule { @ContributesAndroidInjector abstract PreviewMediaFragment previewMediaFragment(); @ContributesAndroidInjector abstract PreviewTextFragment previewTextFragment(); - @ContributesAndroidInjector - abstract PhotoFragment photoFragment(); + @ContributesAndroidInjector abstract PhotoFragment photoFragment(); - @ContributesAndroidInjector abstract ReceiveExternalFilesActivity.DialogMultipleAccount dialogMultipleAccount(); + @ContributesAndroidInjector abstract MultipleAccountsDialog multipleAccountsDialog(); @ContributesAndroidInjector abstract ReceiveExternalFilesActivity.DialogInputUploadFilename dialogInputUploadFilename(); @ContributesAndroidInjector abstract FileUploader fileUploader(); diff --git a/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java b/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java index 5cbb903a5a..76263bee1e 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java @@ -47,6 +47,7 @@ import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.files.services.FileDownloader; import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.jobs.AccountRemovalJob; +import com.owncloud.android.lib.common.OwnCloudAccount; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.services.OperationsService; import com.owncloud.android.ui.adapter.AccountListAdapter; @@ -72,11 +73,16 @@ import androidx.core.graphics.drawable.DrawableCompat; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import static com.owncloud.android.ui.adapter.AccountListAdapter.KEY_DISPLAY_NAME; +import static com.owncloud.android.ui.adapter.AccountListAdapter.KEY_USER_INFO_REQUEST_CODE; + /** * An Activity that allows the user to manage accounts. */ -public class ManageAccountsActivity extends FileActivity - implements AccountListAdapter.AccountListAdapterListener, AccountManagerCallback<Boolean>, ComponentsGetter { +public class ManageAccountsActivity extends FileActivity implements AccountListAdapter.AccountListAdapterListener, + AccountManagerCallback<Boolean>, + ComponentsGetter, + AccountListAdapter.ClickListener { private static final String TAG = ManageAccountsActivity.class.getSimpleName(); public static final String KEY_ACCOUNT_LIST_CHANGED = "ACCOUNT_LIST_CHANGED"; @@ -130,7 +136,12 @@ public class ManageAccountsActivity extends FileActivity arbitraryDataProvider = new ArbitraryDataProvider(getContentResolver()); - accountListAdapter = new AccountListAdapter(this, accountManager, getAccountListItems(), tintedCheck); + accountListAdapter = new AccountListAdapter(this, + accountManager, + getAccountListItems(), + tintedCheck, + this, + true); recyclerView.setAdapter(accountListAdapter); recyclerView.setLayoutManager(new LinearLayoutManager(this)); @@ -268,10 +279,12 @@ public class ManageAccountsActivity extends FileActivity String name = result.getString(AccountManager.KEY_ACCOUNT_NAME); accountManager.setCurrentOwnCloudAccount(name); accountListAdapter = new AccountListAdapter( - this, - accountManager, - getAccountListItems(), - tintedCheck + this, + accountManager, + getAccountListItems(), + tintedCheck, + this, + true ); recyclerView.setAdapter(accountListAdapter); runOnUiThread(() -> accountListAdapter.notifyDataSetChanged()); @@ -318,7 +331,12 @@ public class ManageAccountsActivity extends FileActivity List<AccountListItem> accountListItemArray = getAccountListItems(); if (accountListItemArray.size() > SINGLE_ACCOUNT) { - accountListAdapter = new AccountListAdapter(this, accountManager, accountListItemArray, tintedCheck); + accountListAdapter = new AccountListAdapter(this, + accountManager, + accountListItemArray, + tintedCheck, + this, + true); recyclerView.setAdapter(accountListAdapter); } else { onBackPressed(); @@ -432,6 +450,19 @@ public class ManageAccountsActivity extends FileActivity } } + @Override + public void onClick(Account account) { + final Intent intent = new Intent(this, UserInfoActivity.class); + intent.putExtra(UserInfoActivity.KEY_ACCOUNT, Parcels.wrap(account)); + try { + OwnCloudAccount oca = new OwnCloudAccount(account, MainApp.getAppContext()); + intent.putExtra(KEY_DISPLAY_NAME, oca.getDisplayName()); + } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) { + Log_OC.d(TAG, "Failed to find NC account"); + } + startActivityForResult(intent, KEY_USER_INFO_REQUEST_CODE); + } + /** * Defines callbacks for service binding, passed to bindService() */ diff --git a/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index da451492b3..21c16f038c 100755 --- a/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -58,13 +58,11 @@ import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; -import android.widget.ListAdapter; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.Spinner; import android.widget.TextView; -import com.nextcloud.client.account.UserAccountManager; import com.nextcloud.client.di.Injectable; import com.nextcloud.client.preferences.AppPreferences; import com.owncloud.android.MainApp; @@ -79,12 +77,11 @@ import com.owncloud.android.operations.CreateFolderOperation; import com.owncloud.android.operations.RefreshFolderOperation; import com.owncloud.android.operations.UploadFileOperation; import com.owncloud.android.syncadapter.FileSyncAdapter; -import com.owncloud.android.ui.adapter.AccountListAdapter; -import com.owncloud.android.ui.adapter.AccountListItem; import com.owncloud.android.ui.adapter.UploaderAdapter; import com.owncloud.android.ui.asynctasks.CopyAndUploadContentUrisTask; import com.owncloud.android.ui.dialog.ConfirmationDialogFragment; import com.owncloud.android.ui.dialog.CreateFolderDialogFragment; +import com.owncloud.android.ui.dialog.MultipleAccountsDialog; import com.owncloud.android.ui.dialog.SortingOrderDialogFragment; import com.owncloud.android.ui.fragment.TaskRetainerFragment; import com.owncloud.android.ui.helpers.UriUploader; @@ -120,8 +117,6 @@ import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog.Builder; import androidx.appcompat.widget.SearchView; -import androidx.core.content.ContextCompat; -import androidx.core.graphics.drawable.DrawableCompat; import androidx.core.view.MenuItemCompat; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; @@ -226,7 +221,7 @@ public class ReceiveExternalFilesActivity extends FileActivity } private void showAccountChooserDialog() { - DialogMultipleAccount dialog = new DialogMultipleAccount(); + MultipleAccountsDialog dialog = new MultipleAccountsDialog(); dialog.show(getSupportFragmentManager(), null); } @@ -234,6 +229,11 @@ public class ReceiveExternalFilesActivity extends FileActivity return this; } + public void changeAccount(Account account) { + setAccount(account, false); + onAccountSet(mAccountWasRestored); + } + @Override protected void onAccountSet(boolean stateWasRecovered) { super.onAccountSet(mAccountWasRestored); @@ -291,52 +291,6 @@ public class ReceiveExternalFilesActivity extends FileActivity } } - public static class DialogMultipleAccount extends DialogFragment implements Injectable { - private AccountListAdapter mAccountListAdapter; - private Drawable mTintedCheck; - - @Inject UserAccountManager accountManager; - - @NonNull - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - final ReceiveExternalFilesActivity parent = (ReceiveExternalFilesActivity) getActivity(); - AlertDialog.Builder builder = new Builder(parent); - - mTintedCheck = DrawableCompat.wrap(ContextCompat.getDrawable(parent, R.drawable.account_circle_white)); - int tint = ThemeUtils.primaryColor(getContext()); - DrawableCompat.setTint(mTintedCheck, tint); - - mAccountListAdapter = new AccountListAdapter(parent, accountManager, getAccountListItems(parent), mTintedCheck); - - builder.setTitle(R.string.common_choose_account); - builder.setAdapter((ListAdapter) mAccountListAdapter, (dialog, which) -> { - final ReceiveExternalFilesActivity parentActivity = (ReceiveExternalFilesActivity) getActivity(); - parentActivity.setAccount(parentActivity.mAccountManager.getAccountsByType( - MainApp.getAccountType(getActivity()))[which], false); - parentActivity.onAccountSet(parentActivity.mAccountWasRestored); - dialog.dismiss(); - }); - builder.setCancelable(true); - return builder.create(); - } - - /** - * creates the account list items list including the add-account action in case multiaccount_support is enabled. - * - * @return list of account list items - */ - private List<AccountListItem> getAccountListItems(ReceiveExternalFilesActivity activity) { - Account[] accountList = activity.mAccountManager.getAccountsByType(MainApp.getAccountType(getActivity())); - List<AccountListItem> adapterAccountList = new ArrayList<>(accountList.length); - for (Account account : accountList) { - adapterAccountList.add(new AccountListItem(account)); - } - - return adapterAccountList; - } - } - public static class DialogInputUploadFilename extends DialogFragment implements Injectable { private static final String KEY_SUBJECT_TEXT = "SUBJECT_TEXT"; private static final String KEY_EXTRA_TEXT = "EXTRA_TEXT"; @@ -729,11 +683,12 @@ public class ReceiveExternalFilesActivity extends FileActivity } private void setupActionBarSubtitle() { + ActionBar actionBar = getSupportActionBar(); + if (isHaveMultipleAccount()) { - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setSubtitle(getAccount().name); - } + ThemeUtils.setColoredSubtitle(actionBar, getAccount().name, this); + } else if (actionBar != null) { + actionBar.setSubtitle(null); } } diff --git a/src/main/java/com/owncloud/android/ui/adapter/AccountListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/AccountListAdapter.java index 628c66bdf8..25e83d8568 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/AccountListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/AccountListAdapter.java @@ -26,7 +26,6 @@ package com.owncloud.android.ui.adapter; import android.accounts.Account; -import android.content.Intent; import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; @@ -36,17 +35,13 @@ import android.widget.ImageView; import android.widget.TextView; import com.nextcloud.client.account.UserAccountManager; -import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.lib.common.OwnCloudAccount; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.activity.BaseActivity; -import com.owncloud.android.ui.activity.UserInfoActivity; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.ThemeUtils; -import org.parceler.Parcels; - import java.util.ArrayList; import java.util.List; @@ -67,10 +62,17 @@ public class AccountListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo private Drawable tintedCheck; private UserAccountManager accountManager; - private static final String KEY_DISPLAY_NAME = "DISPLAY_NAME"; - private static final int KEY_USER_INFO_REQUEST_CODE = 13; - - public AccountListAdapter(BaseActivity context, UserAccountManager accountManager, List<AccountListItem> values, Drawable tintedCheck) { + public static final String KEY_DISPLAY_NAME = "DISPLAY_NAME"; + public static final int KEY_USER_INFO_REQUEST_CODE = 13; + private ClickListener clickListener; + private boolean showAddAccount; + + public AccountListAdapter(BaseActivity context, + UserAccountManager accountManager, + List<AccountListItem> values, + Drawable tintedCheck, + ClickListener clickListener, + boolean showAddAccount) { this.context = context; this.accountManager = accountManager; this.values = values; @@ -79,11 +81,13 @@ public class AccountListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo } this.accountAvatarRadiusDimension = context.getResources().getDimension(R.dimen.list_item_avatar_icon_radius); this.tintedCheck = tintedCheck; + this.clickListener = clickListener; + this.showAddAccount = showAddAccount; } @Override public int getItemViewType(int position) { - if (position == values.size() - 1) { + if (position == values.size() - 1 && showAddAccount) { return AccountListItem.TYPE_ACTION_ADD; } return AccountListItem.TYPE_ACCOUNT; @@ -113,6 +117,7 @@ public class AccountListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo if (AccountListItem.TYPE_ACCOUNT == accountListItem.getType()) { Account account = accountListItem.getAccount(); AccountViewHolderItem item = (AccountViewHolderItem)holder; + item.setData(account); setAccount(item, account); setUsername(item, account); setAvatar(item, account); @@ -121,21 +126,6 @@ public class AccountListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo TextView usernameView = item.usernameViewItem; TextView accountView = item.accountViewItem; - // OnClickListener for when the user selects an account - holder.itemView.setOnClickListener(view -> { - final Intent intent = new Intent(context, UserInfoActivity.class); - if (accountListItem.isEnabled()) { - intent.putExtra(UserInfoActivity.KEY_ACCOUNT, Parcels.wrap(account)); - try { - OwnCloudAccount oca = new OwnCloudAccount(account, MainApp.getAppContext()); - intent.putExtra(KEY_DISPLAY_NAME, oca.getDisplayName()); - } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) { - Log_OC.d(TAG, "Failed to find NC account"); - } - context.startActivityForResult(intent, KEY_USER_INFO_REQUEST_CODE); - } - }); - if (!accountListItem.isEnabled()) { usernameView.setPaintFlags(usernameView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); accountView.setPaintFlags(accountView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); @@ -300,19 +290,33 @@ public class AccountListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo /** * Account ViewHolderItem to get smooth scrolling. */ - static class AccountViewHolderItem extends RecyclerView.ViewHolder { + class AccountViewHolderItem extends RecyclerView.ViewHolder implements View.OnClickListener { private ImageView imageViewItem; private ImageView checkViewItem; private TextView usernameViewItem; private TextView accountViewItem; + private Account account; + AccountViewHolderItem(@NonNull View view) { super(view); this.imageViewItem = view.findViewById(R.id.user_icon); this.checkViewItem = view.findViewById(R.id.ticker); this.usernameViewItem = view.findViewById(R.id.user_name); this.accountViewItem = view.findViewById(R.id.account); + view.setOnClickListener(this); + } + + public void setData(Account account) { + this.account = account; + } + + @Override + public void onClick(View v) { + if (clickListener != null && v.isEnabled()) { + clickListener.onClick(account); + } } } @@ -326,4 +330,8 @@ public class AccountListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo this.usernameViewItem = view.findViewById(R.id.user_name); } } + + public interface ClickListener { + void onClick(Account account); + } } diff --git a/src/main/java/com/owncloud/android/ui/dialog/MultipleAccountsDialog.java b/src/main/java/com/owncloud/android/ui/dialog/MultipleAccountsDialog.java new file mode 100644 index 0000000000..e560ec9054 --- /dev/null +++ b/src/main/java/com/owncloud/android/ui/dialog/MultipleAccountsDialog.java @@ -0,0 +1,138 @@ +/* + * + * Nextcloud Android client application + * + * @author Tobias Kaminsky + * Copyright (C) 2019 Tobias Kaminsky + * Copyright (C) 2019 Nextcloud GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + */ + +package com.owncloud.android.ui.dialog; + +import android.accounts.Account; +import android.annotation.SuppressLint; +import android.app.Activity; +import android.app.Dialog; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; + +import com.nextcloud.client.account.UserAccountManager; +import com.nextcloud.client.di.Injectable; +import com.owncloud.android.R; +import com.owncloud.android.ui.activity.ReceiveExternalFilesActivity; +import com.owncloud.android.ui.adapter.AccountListAdapter; +import com.owncloud.android.ui.adapter.AccountListItem; +import com.owncloud.android.utils.ThemeUtils; + +import java.util.ArrayList; +import java.util.List; + +import javax.inject.Inject; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.fragment.app.DialogFragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import butterknife.BindView; +import butterknife.ButterKnife; + +public class MultipleAccountsDialog extends DialogFragment implements Injectable, AccountListAdapter.ClickListener { + @BindView(R.id.list) + RecyclerView listView; + + @Inject UserAccountManager accountManager; + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + Activity activity = getActivity(); + if (activity == null) { + throw new IllegalArgumentException("Activity may not be null"); + } + + int accentColor = ThemeUtils.primaryAccentColor(getContext()); + + // Inflate the layout for the dialog + LayoutInflater inflater = activity.getLayoutInflater(); + @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.multiple_accounts, null); + ButterKnife.bind(this, view); + + + final ReceiveExternalFilesActivity parent = (ReceiveExternalFilesActivity) getActivity(); + AlertDialog.Builder builder = new AlertDialog.Builder(parent); + + Drawable tintedCheck = DrawableCompat.wrap(ContextCompat.getDrawable(parent, R.drawable.account_circle_white)); + int tint = ThemeUtils.primaryColor(getContext()); + DrawableCompat.setTint(tintedCheck, tint); + + + AccountListAdapter adapter = new AccountListAdapter(parent, + accountManager, + getAccountListItems(), + tintedCheck, + this, + false); + + listView.setHasFixedSize(true); + listView.setLayoutManager(new LinearLayoutManager(activity)); + listView.setAdapter(adapter); + + builder.setView(view) + .setTitle(ThemeUtils.getColoredTitle(getResources().getString(R.string.common_choose_account), accentColor)); + Dialog dialog = builder.create(); + + Window window = dialog.getWindow(); + + if (window != null) { + window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); + } + + return dialog; + } + + /** + * creates the account list items list including the add-account action in case + * multiaccount_support is enabled. + * + * @return list of account list items + */ + private List<AccountListItem> getAccountListItems() { + Account[] accountList = accountManager.getAccounts(); + List<AccountListItem> adapterAccountList = new ArrayList<>(accountList.length); + for (Account account : accountList) { + adapterAccountList.add(new AccountListItem(account)); + } + + return adapterAccountList; + } + + @Override + public void onClick(Account account) { + final ReceiveExternalFilesActivity parentActivity = (ReceiveExternalFilesActivity) getActivity(); + if (parentActivity != null) { + parentActivity.changeAccount(account); + } + dismiss(); + } +} diff --git a/src/main/java/com/owncloud/android/utils/ThemeUtils.java b/src/main/java/com/owncloud/android/utils/ThemeUtils.java index 9f3fe6a530..2cad7f8c37 100644 --- a/src/main/java/com/owncloud/android/utils/ThemeUtils.java +++ b/src/main/java/com/owncloud/android/utils/ThemeUtils.java @@ -233,6 +233,27 @@ public final class ThemeUtils { } /** + * Set color of subtitle to white/black depending on background color + * + * @param actionBar actionBar to be used + * @param title title to be shown + */ + public static void setColoredSubtitle(@Nullable ActionBar actionBar, String title, Context context) { + if (actionBar != null) { + if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) { + actionBar.setSubtitle(title); + } else { + Spannable text = new SpannableString(title); + text.setSpan(new ForegroundColorSpan(fontColor(context)), + 0, + text.length(), + Spannable.SPAN_INCLUSIVE_INCLUSIVE); + actionBar.setSubtitle(text); + } + } + } + + /** * For activities that do not use drawer, e.g. Settings, this can be used to correctly tint back button based on * theme * diff --git a/src/main/res/layout/choose_template.xml b/src/main/res/layout/choose_template.xml index aa6e84c0b8..a6d185716f 100644 --- a/src/main/res/layout/choose_template.xml +++ b/src/main/res/layout/choose_template.xml @@ -30,7 +30,7 @@ android:id="@+id/list" android:layout_width="match_parent" android:layout_height="0dp" - android:layout_weight="1"></androidx.recyclerview.widget.RecyclerView> + android:layout_weight="1" /> <com.google.android.material.textfield.TextInputEditText android:id="@+id/filename" diff --git a/src/main/res/layout/multiple_accounts.xml b/src/main/res/layout/multiple_accounts.xml new file mode 100644 index 0000000000..f164be8b73 --- /dev/null +++ b/src/main/res/layout/multiple_accounts.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Nextcloud Android client application + + @author Tobias Kaminsky + Copyright (C) 2019 Tobias Kaminsky + Copyright (C) 2019 Nextcloud GmbH + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +--> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="clip_horizontal" + android:orientation="vertical" + android:padding="@dimen/standard_padding"> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/list" + android:layout_width="match_parent" + android:layout_height="match_parent" /> +</LinearLayout> diff --git a/src/test/java/com/owncloud/android/ui/adapter/AccountListAdapterTest.java b/src/test/java/com/owncloud/android/ui/adapter/AccountListAdapterTest.java index 4f8edd2e00..7d91267fab 100644 --- a/src/test/java/com/owncloud/android/ui/adapter/AccountListAdapterTest.java +++ b/src/test/java/com/owncloud/android/ui/adapter/AccountListAdapterTest.java @@ -43,8 +43,8 @@ public class AccountListAdapterTest { private ManageAccountsActivity manageAccountsActivity; /** - * Setting up and mocking the manageAccountsActivity class, and then mocking the method calls in the construction of - * the object + * Setting up and mocking the manageAccountsActivity class, and then mocking the method calls in + * the construction of the object */ @Before public void setup() { @@ -58,8 +58,12 @@ public class AccountListAdapterTest { */ @Test public void test_getItemCountEmptyList() { - accountListAdapter = new AccountListAdapter(manageAccountsActivity, null, - new ArrayList<>(), null); + accountListAdapter = new AccountListAdapter(manageAccountsActivity, + null, + new ArrayList<>(), + null, + null, + true); assertEquals(0, accountListAdapter.getItemCount()); } @@ -72,7 +76,12 @@ public class AccountListAdapterTest { accounts.add(new AccountListItem()); accounts.add(new AccountListItem()); - accountListAdapter = new AccountListAdapter(manageAccountsActivity, null, accounts, null); + accountListAdapter = new AccountListAdapter(manageAccountsActivity, + null, + accounts, + null, + null, + true); assertEquals(2, accountListAdapter.getItemCount()); } @@ -87,7 +96,12 @@ public class AccountListAdapterTest { .thenReturn(new Float(0.1)); List<AccountListItem> accounts = new ArrayList<>(); - accountListAdapter = new AccountListAdapter(manageAccountsActivity, null, accounts, null); + accountListAdapter = new AccountListAdapter(manageAccountsActivity, + null, + accounts, + null, + null, + true); AccountListItem accountListItem1 = new AccountListItem(); AccountListItem accountListItem2 = new AccountListItem(); |