From: jabarros Date: Fri, 26 Dec 2014 08:13:58 +0000 (+0100) Subject: Merge pull request #755 from owncloud/OpenWithInContextMenu X-Git-Tag: oc-android-1.7.0_signed~60 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/0b7c37671fe97fafaa177cbea22a1d169d52deb8?ds=inline;hp=-c Merge pull request #755 from owncloud/OpenWithInContextMenu "open with" in ContextMenu of downloaded files --- 0b7c37671fe97fafaa177cbea22a1d169d52deb8 diff --combined src/com/owncloud/android/ui/fragment/OCFileListFragment.java index fd0b1a55,981e30bd..73ae5dc2 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@@ -18,10 -18,8 +18,10 @@@ 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; @@@ -31,8 -29,6 +31,8 @@@ import android.view.MenuItem import android.view.View; 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; @@@ -40,7 -36,7 +40,7 @@@ import com.owncloud.android.datamodel.O import com.owncloud.android.files.FileMenuFilter; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.activity.FileDisplayActivity; -import com.owncloud.android.ui.activity.MoveActivity; +import com.owncloud.android.ui.activity.FolderPickerActivity; import com.owncloud.android.ui.activity.OnEnforceableRefreshListener; import com.owncloud.android.ui.adapter.FileListListAdapter; import com.owncloud.android.ui.dialog.ConfirmationDialogFragment; @@@ -74,7 -70,6 +74,7 @@@ public class OCFileListFragment extend private OCFile mFile = null; private FileListListAdapter mAdapter; + private View mFooterView; private OCFile mTargetFile; @@@ -117,28 -112,24 +117,28 @@@ public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log_OC.e(TAG, "onActivityCreated() start"); - + if (savedInstanceState != null) { mFile = savedInstanceState.getParcelable(KEY_FILE); } - + + mFooterView = ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate( + R.layout.list_footer, null, false); + setFooterView(mFooterView); + Bundle args = getArguments(); boolean justFolders = (args == null) ? false : args.getBoolean(ARG_JUST_FOLDERS, false); mAdapter = new FileListListAdapter( justFolders, getSherlockActivity(), mContainerActivity - ); + ); setListAdapter(mAdapter); - + registerForContextMenu(getListView()); getListView().setOnCreateContextMenuListener(this); - } - + } + /** * Saves the current listed folder. */ @@@ -257,15 -248,9 +257,9 @@@ ); mf.filter(menu); } - - /// additional restrictions for this fragment - // TODO allow in the future 'open with' for previewable files - MenuItem item = menu.findItem(R.id.action_open_file_with); - if (item != null) { - item.setVisible(false); - item.setEnabled(false); - } + /// TODO break this direct dependency on FileDisplayActivity... if possible + MenuItem item = menu.findItem(R.id.action_open_file_with); FileFragment frag = ((FileDisplayActivity)getSherlockActivity()).getSecondFragment(); if (frag != null && frag instanceof FileDetailFragment && frag.getFile().getFileId() == targetFile.getFileId()) { @@@ -290,6 -275,10 +284,10 @@@ case R.id.action_share_file: { mContainerActivity.getFileOperationsHelper().shareFileWithLink(mTargetFile); return true; + } + case R.id.action_open_file_with: { + mContainerActivity.getFileOperationsHelper().openFile(mTargetFile); + return true; } case R.id.action_unshare_file: { mContainerActivity.getFileOperationsHelper().unshareFileWithLink(mTargetFile); @@@ -331,10 -320,10 +329,10 @@@ return true; } case R.id.action_move: { - Intent action = new Intent(getActivity(), MoveActivity.class); + Intent action = new Intent(getActivity(), FolderPickerActivity.class); // Pass mTargetFile that contains info of selected file/folder - action.putExtra(MoveActivity.EXTRA_TARGET_FILE, mTargetFile); + action.putExtra(FolderPickerActivity.EXTRA_FILE, mTargetFile); getActivity().startActivityForResult(action, FileDisplayActivity.ACTION_MOVE_FILES); return true; } @@@ -393,51 -382,9 +391,51 @@@ mList.setSelectionFromTop(0, 0); } mFile = directory; + + // Update Footer + TextView footerText = (TextView) mFooterView.findViewById(R.id.footerText); + Log_OC.d("footer", String.valueOf(System.currentTimeMillis())); + footerText.setText(generateFooterText(directory)); + Log_OC.d("footer", String.valueOf(System.currentTimeMillis())); } } + private String generateFooterText(OCFile directory) { + Integer files = 0; + Integer folders = 0; + + FileDataStorageManager storageManager = mContainerActivity.getStorageManager(); + Vector mFiles = storageManager.getFolderContent(mFile); + + for (OCFile ocFile : mFiles) { + if (ocFile.isFolder()) { + folders++; + } else { + files++; + } + } + + String output = ""; + + if (files > 0){ + if (files == 1) { + output = output + files.toString() + " " + getResources().getString(R.string.file_list_file); + } else { + output = output + files.toString() + " " + getResources().getString(R.string.file_list_files); + } + } + if (folders > 0 && files > 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); + } + + return output; + } + public void sortByName(boolean descending) { mAdapter.setSortOrder(FileListListAdapter.SORT_NAME, descending); }