diff options
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java')
-rw-r--r-- | app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java b/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java index 3b61851a..26b1e785 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/manageaccounts/ManageAccountViewHolder.java @@ -1,30 +1,25 @@ package it.niedermann.owncloud.notes.manageaccounts; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; +import static it.niedermann.owncloud.notes.branding.BrandingUtil.applyBrandToLayerDrawable; +import static it.niedermann.owncloud.notes.shared.util.ApiVersionUtil.getPreferredApiVersion; + import android.graphics.drawable.LayerDrawable; import android.net.Uri; -import android.view.Menu; import android.view.View; import androidx.annotation.NonNull; import androidx.appcompat.widget.PopupMenu; -import androidx.core.util.Consumer; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; -import java.util.stream.Stream; - import it.niedermann.nextcloud.sso.glide.SingleSignOnUrl; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.databinding.ItemAccountChooseBinding; import it.niedermann.owncloud.notes.persistence.entity.Account; -import it.niedermann.owncloud.notes.shared.model.ApiVersion; - -import static android.view.View.GONE; -import static android.view.View.VISIBLE; -import static it.niedermann.owncloud.notes.branding.BrandingUtil.applyBrandToLayerDrawable; -import static it.niedermann.owncloud.notes.shared.util.ApiVersionUtil.getPreferredApiVersion; public class ManageAccountViewHolder extends RecyclerView.ViewHolder { @@ -37,10 +32,7 @@ public class ManageAccountViewHolder extends RecyclerView.ViewHolder { public void bind( @NonNull Account localAccount, - @NonNull Consumer<Account> onAccountClick, - @NonNull Consumer<Account> onAccountDelete, - @NonNull Consumer<Account> onChangeNotesPath, - @NonNull Consumer<Account> onChangeFileSuffix, + @NonNull IManageAccountsCallback callback, boolean isCurrentAccount ) { binding.accountName.setText(localAccount.getUserName()); @@ -50,28 +42,31 @@ public class ManageAccountViewHolder extends RecyclerView.ViewHolder { .error(R.drawable.ic_account_circle_grey_24dp) .apply(RequestOptions.circleCropTransform()) .into(binding.accountItemAvatar); - itemView.setOnClickListener((v) -> onAccountClick.accept(localAccount)); + itemView.setOnClickListener((v) -> callback.onSelect(localAccount)); binding.accountContextMenu.setVisibility(VISIBLE); binding.accountContextMenu.setOnClickListener((v) -> { final var popup = new PopupMenu(itemView.getContext(), v); popup.inflate(R.menu.menu_account); + final var preferredApiVersion = getPreferredApiVersion(localAccount.getApiVersion()); - if (preferredApiVersion != null && !preferredApiVersion.supportsSettings()) { - final var menu = popup.getMenu(); - Stream.of( - R.id.notes_path, - R.id.file_suffix - ).forEach((i) -> menu.removeItem(menu.findItem(i).getItemId())); + + if (preferredApiVersion == null || !preferredApiVersion.supportsFileSuffixChange()) { + popup.getMenu().removeItem(popup.getMenu().findItem(R.id.file_suffix).getItemId()); + } + + if (preferredApiVersion == null || !preferredApiVersion.supportsNotesPathChange()) { + popup.getMenu().removeItem(popup.getMenu().findItem(R.id.notes_path).getItemId()); } + popup.setOnMenuItemClickListener(item -> { if (item.getItemId() == R.id.notes_path) { - onChangeNotesPath.accept(localAccount); + callback.onChangeNotesPath(localAccount); return true; } else if (item.getItemId() == R.id.file_suffix) { - onChangeFileSuffix.accept(localAccount); + callback.onChangeFileSuffix(localAccount); return true; } else if (item.getItemId() == R.id.delete) { - onAccountDelete.accept(localAccount); + callback.onDelete(localAccount); return true; } return false; |