package com.fastaccess.ui.modules.floating.folders;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.Loader;
import android.view.View;
import android.widget.Toast;
import com.fastaccess.R;
import com.fastaccess.data.dao.FolderModel;
import com.fastaccess.data.dao.events.FolderEventModel;
import com.fastaccess.provider.loader.FoldersLoader;
import com.fastaccess.ui.adapter.FloatingFoldersAdapter;
import com.fastaccess.ui.modules.floating.BaseFloatingMvp;
import com.fastaccess.ui.modules.floating.BaseFloatingPresenter;
import com.fastaccess.ui.modules.floating.BaseFloatingView;
import com.fastaccess.ui.modules.floating.folders.drawer.FloatingDrawerView;
import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter;
import org.greenrobot.eventbus.Subscribe;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Kosh on 14 Oct 2016, 9:12 PM
*/
public class FloatingFoldersView extends BaseFloatingView<FolderModel> implements FloatingFoldersMvp.View {
private FloatingFoldersPresenter presenter;
private FoldersLoader foldersLoader;
private FloatingFoldersAdapter adapter;
private FloatingFoldersView(@NonNull Context context, boolean isHorizontal) {
super(context, isHorizontal);
}
public static FloatingFoldersView with(@NonNull Context context, boolean isHorizontal) {
return new FloatingFoldersView(context, isHorizontal);
}
@SuppressWarnings("unused") @Subscribe public void onEvent(FolderEventModel model) {
if (foldersLoader != null) foldersLoader.onContentChanged();
}
@Override public void onOpenFolder(@NonNull View v, @NonNull FolderModel item) {
FloatingDrawerView.with(this).onShow(windowManager, floatingView, item);
}
@Override public Loader getLoader() {
if (foldersLoader == null) {
foldersLoader = new FoldersLoader(context);
foldersLoader.registerListener(10, getPresenter());
foldersLoader.startLoading();
}
return foldersLoader;
}
@Override public void onLoaderLoaded(@Nullable List<FolderModel> data) {
if (data == null || data.isEmpty()) {
Toast.makeText(context, R.string.no_folders_floating, Toast.LENGTH_LONG).show();
} else {
setFolderCallback(this);
}
super.onLoaderLoaded(data);
}
@Override public BaseRecyclerAdapter getAdapter() {
if (adapter == null) {
adapter = new FloatingFoldersAdapter(new ArrayList<FolderModel>(), getPresenter(), isHorizontal);
}
return adapter;
}
@Override public BaseFloatingPresenter<FolderModel, ? extends BaseFloatingMvp.BaseView<FolderModel>> getPresenter() {
if (presenter == null) {
presenter = FloatingFoldersPresenter.with(this);
}
return presenter;
}
}