+++ /dev/null
-/* ownCloud Android client application\r
- * Copyright (C) 2011 Bartek Przybylski\r
- *\r
- * This program is free software: you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation, either version 3 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program. If not, see <http://www.gnu.org/licenses/>.\r
- *\r
- */\r
-package eu.alefzero.owncloud.ui.fragment;\r
-\r
-import java.util.Vector;\r
-\r
-import android.app.Activity;\r
-import android.os.Bundle;\r
-import android.util.Log;\r
-import android.view.LayoutInflater;\r
-import android.view.View;\r
-import android.view.ViewGroup;\r
-import android.widget.AdapterView;\r
-import eu.alefzero.owncloud.R;\r
-import eu.alefzero.owncloud.datamodel.DataStorageManager;\r
-import eu.alefzero.owncloud.datamodel.OCFile;\r
-import eu.alefzero.owncloud.ui.FragmentListView;\r
-import eu.alefzero.owncloud.ui.adapter.FileListListAdapter;\r
-\r
-/**\r
- * A Fragment that lists all files and folders in a given path.\r
- * \r
- * @author Bartek Przybylski\r
- * \r
- */\r
-public class FileListFragment extends FragmentListView {\r
- private static final String TAG = "FileListFragment";\r
- \r
- private FileListFragment.ContainerActivity mContainerActivity;\r
- \r
- private OCFile mFile = null;\r
- private FileListListAdapter mAdapter;\r
-\r
- \r
- /**\r
- * {@inheritDoc}\r
- */\r
- @Override\r
- public void onAttach(Activity activity) {\r
- super.onAttach(activity);\r
- try {\r
- mContainerActivity = (ContainerActivity) activity;\r
- } catch (ClassCastException e) {\r
- throw new ClassCastException(activity.toString() + " must implement FileListFragment.ContainerActivity");\r
- }\r
- }\r
- \r
- \r
- @Override\r
- public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
- Bundle savedInstanceState) {\r
- Log.i(getClass().toString(), "onCreateView() start");\r
- super.onCreateView(inflater, container, savedInstanceState);\r
- getListView().setDivider(getResources().getDrawable(R.drawable.uploader_list_separator));\r
- getListView().setDividerHeight(1);\r
- \r
- Log.i(getClass().toString(), "onCreateView() end");\r
- return getListView();\r
- } \r
-\r
-\r
- @Override\r
- public void onActivityCreated(Bundle savedInstanceState) {\r
- Log.i(getClass().toString(), "onActivityCreated() start");\r
- \r
- super.onCreate(savedInstanceState);\r
- //mAdapter = new FileListListAdapter();\r
- \r
- Log.i(getClass().toString(), "onActivityCreated() stop");\r
- }\r
- \r
- \r
- @Override\r
- public void onItemClick(AdapterView<?> l, View v, int position, long id) {\r
- OCFile file = (OCFile) mAdapter.getItem(position);\r
- if (file != null) {\r
- /// Click on a directory\r
- if (file.getMimetype().equals("DIR")) {\r
- // just local updates\r
- mFile = file;\r
- listDirectory(file);\r
- // any other updates are let to the container Activity\r
- mContainerActivity.onDirectoryClick(file);\r
- \r
- } else { /// Click on a file\r
- mContainerActivity.onFileClick(file);\r
- }\r
- \r
- } else {\r
- Log.d(TAG, "Null object in ListAdapter!!");\r
- }\r
- \r
- }\r
-\r
- /**\r
- * Call this, when the user presses the up button\r
- */\r
- public void onNavigateUp() {\r
- OCFile parentDir = null;\r
- \r
- if(mFile != null){\r
- DataStorageManager storageManager = mContainerActivity.getStorageManager();\r
- parentDir = storageManager.getFileById(mFile.getParentId());\r
- mFile = parentDir;\r
- }\r
- listDirectory(parentDir);\r
- }\r
-\r
- /**\r
- * Use this to query the {@link OCFile} that is currently\r
- * being displayed by this fragment\r
- * @return The currently viewed OCFile\r
- */\r
- public OCFile getCurrentFile(){\r
- return mFile;\r
- }\r
- \r
- /**\r
- * Calls {@link FileListFragment#listDirectory(OCFile)} with a null parameter\r
- */\r
- public void listDirectory(){\r
- listDirectory(null);\r
- }\r
- \r
- /**\r
- * Lists the given directory on the view. When the input parameter is null,\r
- * it will either refresh the last known directory, or list the root\r
- * if there never was a directory.\r
- * \r
- * @param directory File to be listed\r
- */\r
- public void listDirectory(OCFile directory) {\r
- \r
- DataStorageManager storageManager = mContainerActivity.getStorageManager();\r
-\r
- // Check input parameters for null\r
- if(directory == null){\r
- if(mFile != null){\r
- directory = mFile;\r
- } else {\r
- directory = storageManager.getFileByPath("/");\r
- if (directory == null) return; // no files, wait for sync\r
- }\r
- }\r
- \r
- \r
- // If that's not a directory -> List its parent\r
- if(!directory.isDirectory()){\r
- Log.w(TAG, "You see, that is not a directory -> " + directory.toString());\r
- directory = storageManager.getFileById(directory.getParentId());\r
- }\r
-\r
- mFile = directory;\r
- \r
- mAdapter = new FileListListAdapter(directory, storageManager, getActivity());\r
- setListAdapter(mAdapter);\r
- }\r
- \r
- \r
- \r
- /**\r
- * Interface to implement by any Activity that includes some instance of FileListFragment\r
- * \r
- * @author David A. Velasco\r
- */\r
- public interface ContainerActivity {\r
-\r
- /**\r
- * Callback method invoked when a directory is clicked by the user on the files list\r
- * \r
- * @param file\r
- */\r
- public void onDirectoryClick(OCFile file);\r
- \r
- /**\r
- * Callback method invoked when a file (non directory) is clicked by the user on the files list\r
- * \r
- * @param file\r
- */\r
- public void onFileClick(OCFile file);\r
-\r
- /**\r
- * Getter for the current DataStorageManager in the container activity\r
- */\r
- public DataStorageManager getStorageManager();\r
- \r
- }\r
-\r
-}\r