package com.openfarmanager.android.fragments; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.openfarmanager.android.R; import com.openfarmanager.android.adapters.FileSystemAdapter; import com.openfarmanager.android.adapters.LauncherAdapter; import com.openfarmanager.android.controllers.FileSystemController; import com.openfarmanager.android.filesystem.FileProxy; import com.openfarmanager.android.model.FileActionEnum; import rx.subscriptions.CompositeSubscription; /** * Created on 11/10/2013. * * @author Sergey O */ public class GenericPanel extends MainPanel { public static final int START_LOADING = 10000; public static final int STOP_LOADING = 10001; private CompositeSubscription mSubscription; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setupHandler(); View view = super.onCreateView(inflater, container, savedInstanceState); mSubscription = new CompositeSubscription(); mFileSystemList.setOnItemClickListener(new FileSystemAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { LauncherAdapter adapter = (LauncherAdapter) mFileSystemList.getAdapter(); if (mIsMultiSelectMode) { updateLongClick(position, adapter, false); } else { adapter.onItemClick(position); } } @Override public void onItemLongClick(View view, int position) { LauncherAdapter adapter = (LauncherAdapter) mFileSystemList.getAdapter(); updateLongClick(position, adapter, true); openFileActionMenu(); } }); mActionBar.updateCurrentPath(getString(R.string.applications)); mFileSystemList.initAdapter(new LauncherAdapter(mAdapterHandler, mSubscription)); return view; } @Override protected void setNavigationButtonsVisibility(final boolean forceHide) { mActionBar.updateNavigationItemsVisibility(true, false, false); } private void updateLongClick(int i, LauncherAdapter adapter, boolean longClick) { FileProxy fileProxy = adapter.getItem(i); if (mSelectedFiles.contains(fileProxy) && !longClick) { mSelectedFiles.remove(fileProxy); } else { if (mSelectedFiles.contains(fileProxy)) { return; } mSelectedFiles.add(0, fileProxy); } adapter.setSelectedFiles(mSelectedFiles); adapter.notifyDataSetChanged(); } public boolean isFileSystemPanel() { return false; } @Override public void onResume() { super.onResume(); LauncherAdapter adapter = (LauncherAdapter) mFileSystemList.getAdapter(); if (adapter != null) { mSelectedFiles.clear(); adapter.refresh(); } } @Override public void onDetach () { super.onDetach(); mSubscription.unsubscribe(); } protected FileActionEnum[] getAvailableActions() { return ((LauncherAdapter)mFileSystemList.getAdapter()).getAvailableActions(); } @Override public void executeAction(FileActionEnum action, MainPanel inactivePanel) { LauncherAdapter adapter = (LauncherAdapter) mFileSystemList.getAdapter(); adapter.setSelectedFiles(mSelectedFiles); adapter.executeAction(action, inactivePanel); } public void navigateParent() { mHandler.sendMessage(mHandler.obtainMessage(FileSystemController.EXIT_FROM_GENERIC_PANEL, getPanelLocation())); } public boolean isRootDirectory() { return true; } protected boolean isCopyFolderSupported() { return false; } public boolean isSearchSupported() { return false; } protected boolean isBookmarksSupported() { return false; } private Handler mAdapterHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case START_LOADING: setIsLoading(true); break; case STOP_LOADING: setIsLoading(false); break; } } }; }