package com.fastaccess.ui.modules.apps.device; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.content.Loader; import android.support.v7.view.ActionMode; import android.view.Menu; import android.view.MenuItem; import android.view.View; import com.fastaccess.App; import com.fastaccess.R; import com.fastaccess.data.dao.AppsModel; import com.fastaccess.data.dao.events.FloatingEventModel; import com.fastaccess.data.dao.events.SelectedAppsEventModel; import com.fastaccess.helper.Logger; import com.fastaccess.provider.loader.DeviceAppsLoader; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; import org.greenrobot.eventbus.EventBus; import java.util.List; /** * Created by Kosh on 10 Oct 2016, 11:45 PM */ public class DeviceAppsPresenter extends BasePresenter<DeviceAppsMvp.View> implements DeviceAppsMvp.Presenter { protected DeviceAppsPresenter(@NonNull DeviceAppsMvp.View view) { super(view); } public static DeviceAppsPresenter with(@NonNull DeviceAppsMvp.View view) { return new DeviceAppsPresenter(view); } @Override public Loader<List<AppsModel>> onCreateLoader(int id, Bundle args) { if (isAttached()) getView().onStartLoading(); return new DeviceAppsLoader(App.getInstance().getApplicationContext()); } @Override public void onLoadFinished(Loader<List<AppsModel>> loader, List<AppsModel> data) { getView().onAppsLoaded(data); } @Override public void onLoaderReset(Loader<List<AppsModel>> loader) { if (isAttached()) getView().onLoaderReset(); } @Override public void onItemClick(int position, View v, AppsModel item) { getView().setSelection(item.getComponentName().toShortString(), position); // if (getView().hasSelection()) { // onItemLongClick(position, v, item); // } else { // getView().onOpenAppDetails(v, item); // } } @Override public void onItemLongClick(int position, View v, AppsModel item) { onItemClick(position, v, item); } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { mode.getMenuInflater().inflate(R.menu.add_menu, menu); return true; } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return true; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { if (item.getItemId() == R.id.add) { getView().onAddSelectedApps(); return true; } else if (item.getItemId() == R.id.selectAll) { getView().onSelectAll(); return true; } return false; } @Override public void onDestroyActionMode(ActionMode mode) { getView().onActionModeDestroyed(); } @Override public void onAddSelectedApps(@Nullable List<AppsModel> selections) { if (selections != null && !selections.isEmpty()) { for (int i = 0; i < selections.size(); i++) { AppsModel model = selections.get(i); if (AppsModel.exists(model.getActivityInfoName(), model.getPackageName())) { continue; } int lastPosition = AppsModel.lastPosition() + 1; Logger.e(lastPosition); model.setIndexPosition(lastPosition); model.save(); } EventBus.getDefault().post(new SelectedAppsEventModel()); EventBus.getDefault().post(new FloatingEventModel()); } } }