|
@@ -1,138 +0,0 @@
|
|
|
-/*
|
|
|
- * Nextcloud Talk application
|
|
|
- *
|
|
|
- * @author Mario Danic
|
|
|
- * Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
|
|
|
- *
|
|
|
- * This program is free software: you can redistribute it and/or modify
|
|
|
- * it under the terms of the GNU 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 General Public License for more details.
|
|
|
- *
|
|
|
- * You should have received a copy of the GNU General Public License
|
|
|
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
- *
|
|
|
- * Heavily copied from and influenced by
|
|
|
- * https://github.com/davideas/FlexibleAdapter/wiki/5.x-%7C-On-Load-More#automatic-load-more.
|
|
|
- * Author: David Steduto under Apache2 licence
|
|
|
- */
|
|
|
-
|
|
|
-package com.nextcloud.talk.adapters.items;
|
|
|
-
|
|
|
-import android.animation.Animator;
|
|
|
-import android.content.Context;
|
|
|
-import android.view.View;
|
|
|
-
|
|
|
-import com.nextcloud.talk.R;
|
|
|
-import com.nextcloud.talk.databinding.RvItemProgressBinding;
|
|
|
-
|
|
|
-import java.util.List;
|
|
|
-
|
|
|
-import androidx.annotation.NonNull;
|
|
|
-import eu.davidea.flexibleadapter.FlexibleAdapter;
|
|
|
-import eu.davidea.flexibleadapter.Payload;
|
|
|
-import eu.davidea.flexibleadapter.helpers.AnimatorHelper;
|
|
|
-import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
|
|
|
-import eu.davidea.flexibleadapter.items.IFlexible;
|
|
|
-import eu.davidea.viewholders.FlexibleViewHolder;
|
|
|
-
|
|
|
-/**
|
|
|
- * @author Davide Steduto
|
|
|
- * @since 22/04/2016
|
|
|
- */
|
|
|
-public class ProgressItem extends AbstractFlexibleItem<ProgressItem.ProgressViewHolder> {
|
|
|
-
|
|
|
- private StatusEnum status = StatusEnum.MORE_TO_LOAD;
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean equals(Object o) {
|
|
|
- return this == o;//The default implementation
|
|
|
- }
|
|
|
-
|
|
|
- public StatusEnum getStatus() {
|
|
|
- return status;
|
|
|
- }
|
|
|
-
|
|
|
- public void setStatus(StatusEnum status) {
|
|
|
- this.status = status;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public int getLayoutRes() {
|
|
|
- return R.layout.rv_item_progress;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void bindViewHolder(FlexibleAdapter<IFlexible> adapter, ProgressViewHolder holder, int position, List<Object> payloads) {
|
|
|
- Context context = holder.itemView.getContext();
|
|
|
- holder.binding.progressBar.setVisibility(View.GONE);
|
|
|
- holder.binding.progressMessage.setVisibility(View.VISIBLE);
|
|
|
-
|
|
|
- if (!adapter.isEndlessScrollEnabled()) {
|
|
|
- setStatus(StatusEnum.DISABLE_ENDLESS);
|
|
|
- } else if (payloads.contains(Payload.NO_MORE_LOAD)) {
|
|
|
- setStatus(StatusEnum.NO_MORE_LOAD);
|
|
|
- }
|
|
|
-
|
|
|
- switch (this.status) {
|
|
|
- case NO_MORE_LOAD:
|
|
|
- holder.binding.progressMessage.setText(
|
|
|
- context.getString(R.string.nc_no_more_load_retry));
|
|
|
- // Reset to default status for next binding
|
|
|
- setStatus(StatusEnum.MORE_TO_LOAD);
|
|
|
- break;
|
|
|
- case DISABLE_ENDLESS:
|
|
|
- holder.binding.progressMessage.setText(context.getString(R.string.nc_endless_disabled));
|
|
|
- break;
|
|
|
- case ON_CANCEL:
|
|
|
- holder.binding.progressMessage.setText(context.getString(R.string.nc_endless_cancel));
|
|
|
- // Reset to default status for next binding
|
|
|
- setStatus(StatusEnum.MORE_TO_LOAD);
|
|
|
- break;
|
|
|
- case ON_ERROR:
|
|
|
- holder.binding.progressMessage.setText(context.getString(R.string.nc_endless_error));
|
|
|
- // Reset to default status for next binding
|
|
|
- setStatus(StatusEnum.MORE_TO_LOAD);
|
|
|
- break;
|
|
|
- default:
|
|
|
- holder.binding.progressBar.setVisibility(View.VISIBLE);
|
|
|
- holder.binding.progressMessage.setVisibility(View.GONE);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public ProgressViewHolder createViewHolder(View view, FlexibleAdapter adapter) {
|
|
|
- return new ProgressViewHolder(view, adapter);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public enum StatusEnum {
|
|
|
- MORE_TO_LOAD, //Default = should have an empty Payload
|
|
|
- DISABLE_ENDLESS, //Endless is disabled because user has set limits
|
|
|
- NO_MORE_LOAD, //Non-empty Payload = Payload.NO_MORE_LOAD
|
|
|
- ON_CANCEL,
|
|
|
- ON_ERROR
|
|
|
- }
|
|
|
-
|
|
|
- static class ProgressViewHolder extends FlexibleViewHolder {
|
|
|
-
|
|
|
- RvItemProgressBinding binding;
|
|
|
-
|
|
|
- ProgressViewHolder(View view, FlexibleAdapter adapter) {
|
|
|
- super(view, adapter);
|
|
|
- binding = RvItemProgressBinding.bind(view);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void scrollAnimators(@NonNull List<Animator> animators, int position, boolean isForward) {
|
|
|
- AnimatorHelper.scaleAnimator(animators, itemView, 0f);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-}
|