package com.owncloud.android.ui.fragment;
import java.io.File;
-import java.util.Vector;
import android.app.Activity;
-import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
-import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
-import android.widget.TextView;
-import android.view.LayoutInflater;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.ui.dialog.RenameFileDialogFragment;
import com.owncloud.android.ui.preview.PreviewImageFragment;
import com.owncloud.android.ui.preview.PreviewMediaFragment;
-import com.owncloud.android.utils.DisplayUtils;
import com.owncloud.android.utils.FileStorageUtils;
/**
private static final String KEY_FILE = MY_PACKAGE + ".extra.FILE";
+ private final static Double THUMBNAIL_THRESHOLD = 0.5;
+
private FileFragment.ContainerActivity mContainerActivity;
private OCFile mFile = null;
private FileListListAdapter mAdapter;
- private View mFooterView;
private boolean mJustFolders;
private OCFile mTargetFile;
mFile = savedInstanceState.getParcelable(KEY_FILE);
}
- mFooterView = ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
- R.layout.list_footer, null, false);
if (mJustFolders) {
- removeFooterView(mFooterView);
+ setFooterEnabled(false);
} else {
- setFooterView(mFooterView);
+ setFooterEnabled(true);
}
Bundle args = getArguments();
mContainerActivity
);
setListAdapter(mAdapter);
-
- registerForContextMenu(getGridView());
- getGridView().setOnCreateContextMenuListener(this);
+
+ registerForContextMenu();
}
-
+
/**
* Saves the current listed folder.
*/
mAdapter.swapDirectory(directory, storageManager);
if (mFile == null || !mFile.equals(directory)) {
- imageView.setSelection(0);
+ mCurrentListView.setSelection(0);
}
mFile = directory;
- Vector<OCFile> files = storageManager.getFolderContent(directory);
- // Update Footer
- TextView footerText = (TextView) mFooterView.findViewById(R.id.footerText);
- footerText.setText(generateFooterText(directory));
- if (DisplayUtils.decideViewLayout(files) && !mJustFolders){
- switchImageView();
- } else {
- switchFileView();
- }
+ updateLayout();
+
}
}
-
- private String generateFooterText(OCFile directory) {
- Integer files = 0;
- Integer folders = 0;
- FileDataStorageManager storageManager = mContainerActivity.getStorageManager();
- Vector<OCFile> mFiles = storageManager.getFolderContent(mFile);
+ private void updateLayout() {
+ if (!mJustFolders) {
+ int filesCount = 0, foldersCount = 0, imagesCount = 0;
+ int count = mAdapter.getCount();
+ OCFile file;
+ for (int i=0; i < count ; i++) {
+ file = (OCFile) mAdapter.getItem(i);
+ if (file.isFolder()) {
+ foldersCount++;
+ } else {
+ filesCount++;
+ if (file.isImage()){
+ imagesCount++;
+ }
+ }
+ }
+ // set footer text
+ setFooterText(generateFooterText(filesCount, foldersCount));
- for (OCFile ocFile : mFiles) {
- if (ocFile.isFolder()) {
- folders++;
+ // decide grid vs list view
+ if (((double)imagesCount / (double)filesCount) >= THUMBNAIL_THRESHOLD) {
+ switchToGridView();
} else {
- files++;
+ switchToListView();
}
}
+ }
+ private String generateFooterText(int filesCount, int foldersCount) {
String output = "";
-
- if (files > 0){
- if (files == 1) {
- output = output + files.toString() + " " + getResources().getString(R.string.file_list_file);
+ if (filesCount > 0){
+ if (filesCount == 1) {
+ output = output + filesCount + " " + getResources().getString(R.string.file_list_file);
} else {
- output = output + files.toString() + " " + getResources().getString(R.string.file_list_files);
+ output = output + filesCount + " " + getResources().getString(R.string.file_list_files);
}
}
- if (folders > 0 && files > 0){
+ if (foldersCount > 0 && filesCount > 0){
output = output + ", ";
}
- if (folders == 1) {
- output = output + folders.toString() + " " + getResources().getString(R.string.file_list_folder);
- } else if (folders > 1) {
- output = output + folders.toString() + " " + getResources().getString(R.string.file_list_folders);
+ if (foldersCount == 1) {
+ output = output + foldersCount + " " + getResources().getString(R.string.file_list_folder);
+ } else if (foldersCount > 1) {
+ output = output + foldersCount + " " + getResources().getString(R.string.file_list_folders);
}
- // Fix for showing or not to show the footerView
- if (mJustFolders || (folders == 0 && files == 0)) {
- // If fragment to choose target folder for a MOVE or
- // no files or folders,
- // remove footerView for allowing to show the emptyList message
- removeFooterView(mFooterView);
- } else { // set a new footerView if there is not one for showing the number or files/folders
- if (getFooterViewCount()== 0) {
- ((ViewGroup)mFooterView.getParent()).removeView(mFooterView);
- setFooterView(mFooterView);
- }
- }
-
return output;
}
-
+
+
public void sortByName(boolean descending) {
mAdapter.setSortOrder(FileStorageUtils.SORT_NAME, descending);
}