import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
-import com.owncloud.android.DisplayUtils;
-import com.owncloud.android.Log_OC;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.files.services.FileUploader;
import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
-import com.owncloud.android.oc_framework.network.webdav.OnDatatransferProgressListener;
-import com.owncloud.android.oc_framework.operations.OnRemoteOperationListener;
-import com.owncloud.android.oc_framework.operations.RemoteOperation;
-import com.owncloud.android.oc_framework.operations.RemoteOperationResult;
-import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode;
+import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
+import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;
+import com.owncloud.android.lib.common.operations.RemoteOperation;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
import com.owncloud.android.operations.RemoveFileOperation;
import com.owncloud.android.operations.RenameFileOperation;
import com.owncloud.android.operations.SynchronizeFileOperation;
import com.owncloud.android.ui.activity.ConflictsResolveActivity;
import com.owncloud.android.ui.activity.FileActivity;
import com.owncloud.android.ui.activity.FileDisplayActivity;
+import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
import com.owncloud.android.ui.dialog.EditNameDialog;
import com.owncloud.android.ui.dialog.EditNameDialog.EditNameDialogListener;
import com.owncloud.android.ui.preview.PreviewImageFragment;
+import com.owncloud.android.utils.DisplayUtils;
+import com.owncloud.android.utils.Log_OC;
/**
private int mLayout;
private View mView;
private Account mAccount;
- private FileDataStorageManager mStorageManager;
private UploadFinishReceiver mUploadFinishReceiver;
public ProgressListener mProgressListener;
public FileDetailFragment() {
super();
mAccount = null;
- mStorageManager = null;
mLayout = R.layout.file_details_empty;
mProgressListener = null;
}
public FileDetailFragment(OCFile fileToDetail, Account ocAccount) {
super(fileToDetail);
mAccount = ocAccount;
- mStorageManager = null; // we need a context to init this; the container activity is not available yet at this moment
mLayout = R.layout.file_details_empty;
mProgressListener = null;
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (mAccount != null) {
- mStorageManager = new FileDataStorageManager(mAccount, getActivity().getApplicationContext().getContentResolver());
+ OCFile file = ((FileActivity)getActivity()).getStorageManager().
+ getFileByPath(getFile().getRemotePath());
+ if (file != null) {
+ setFile(file);
+ }
}
}
item.setVisible(false);
item.setEnabled(false);
}
+
+ // Send file
+ item = menu.findItem(R.id.action_send_file);
+ boolean sendEnabled = getString(R.string.send_files_to_other_apps).equalsIgnoreCase("on");
+ if (item != null) {
+ if (sendEnabled) {
+ item.setVisible(true);
+ item.setEnabled(true);
+ } else {
+ item.setVisible(false);
+ item.setEnabled(false);
+
+ }
+ }
}
toHide.add(R.id.action_remove_file);
}
-
+
+ // Options shareLink
+ if (!file.isShareByLink()) {
+ toHide.add(R.id.action_unshare_file);
+ } else {
+ toShow.add(R.id.action_unshare_file);
+ }
+
MenuItem item = null;
for (int i : toHide) {
item = menu.findItem(i);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
+ case R.id.action_share_file: {
+ FileActivity activity = (FileActivity) getSherlockActivity();
+ activity.getFileOperationsHelper().shareFileWithLink(getFile(), activity);
+ return true;
+ }
+ case R.id.action_unshare_file: {
+ FileActivity activity = (FileActivity) getSherlockActivity();
+ activity.getFileOperationsHelper().unshareFileWithLink(getFile(), activity);
+ return true;
+ }
case R.id.action_open_file_with: {
- mContainerActivity.openFile(getFile());
+ FileActivity activity = (FileActivity) getSherlockActivity();
+ activity.getFileOperationsHelper().openFile(getFile(), activity);
return true;
}
case R.id.action_remove_file: {
synchronizeFile();
return true;
}
+ case R.id.action_send_file: {
+ FileDisplayActivity activity = (FileDisplayActivity) getSherlockActivity();
+ // Obtain the file
+ if (!getFile().isDown()) { // Download the file
+ Log_OC.d(TAG, getFile().getRemotePath() + " : File must be downloaded");
+ activity.startDownloadForSending(getFile());
+
+ } else {
+ activity.getFileOperationsHelper().sendDownloadedFile(getFile(), activity);
+ }
+ return true;
+ }
default:
return false;
}
}
-
+
@Override
public void onClick(View v) {
switch (v.getId()) {
CheckBox cb = (CheckBox) getView().findViewById(R.id.fdKeepInSync);
OCFile file = getFile();
file.setKeepInSync(cb.isChecked());
- mStorageManager.saveFile(file);
+ ((FileActivity)getActivity()).getStorageManager().saveFile(file);
/// register the OCFile instance in the observer service to monitor local updates;
/// if necessary, the file is download
}
}
-
private void removeFile() {
OCFile file = getFile();
ConfirmationDialogFragment confDialog = ConfirmationDialogFragment.newInstance(
}
} else {
- mLastRemoteOperation = new SynchronizeFileOperation(file, null, mStorageManager, mAccount, true, getActivity());
+ mLastRemoteOperation = new SynchronizeFileOperation(
+ file,
+ null,
+ ((FileActivity)getActivity()).getStorageManager(),
+ mAccount,
+ true,
+ getActivity());
mLastRemoteOperation.execute(mAccount, getSherlockActivity(), this, mHandler, getSherlockActivity());
// update ui
- ((FileDisplayActivity) getActivity()).showLoadingDialog();
+ ((FileActivity) getActivity()).showLoadingDialog();
}
}
public void onConfirmation(String callerTag) {
OCFile file = getFile();
if (callerTag.equals(FTAG_CONFIRMATION)) {
- if (mStorageManager.getFileById(file.getFileId()) != null) {
+ FileDataStorageManager storageManager =
+ ((FileActivity)getActivity()).getStorageManager();
+ if (storageManager.getFileById(file.getFileId()) != null) {
mLastRemoteOperation = new RemoveFileOperation( file,
true,
- mStorageManager);
+ storageManager);
mLastRemoteOperation.execute(mAccount, getSherlockActivity(), this, mHandler, getSherlockActivity());
- ((FileDisplayActivity) getActivity()).showLoadingDialog();
+ ((FileActivity) getActivity()).showLoadingDialog();
}
}
}
@Override
public void onNeutral(String callerTag) {
- File f = null;
OCFile file = getFile();
- if (file.isDown() && (f = new File(file.getStoragePath())).exists()) {
- f.delete();
+ ((FileActivity)getActivity()).getStorageManager().removeFile(file, false, true); // TODO perform in background task / new thread
+ if (file.getStoragePath() != null) {
file.setStoragePath(null);
- mStorageManager.saveFile(file);
updateFileDetails(file, mAccount);
}
}
*/
public void updateFileDetails(OCFile file, Account ocAccount) {
setFile(file);
+ FileDataStorageManager storageManager = ((FileActivity)getActivity()).getStorageManager();
if (ocAccount != null && (
- mStorageManager == null ||
+ storageManager == null ||
(mAccount != null && !mAccount.equals(ocAccount))
)) {
- mStorageManager = new FileDataStorageManager(ocAccount, getActivity().getApplicationContext().getContentResolver());
+ storageManager = new FileDataStorageManager(ocAccount, getActivity().getApplicationContext().getContentResolver());
}
mAccount = ocAccount;
updateFileDetails(false, false);
public void updateFileDetails(boolean transferring, boolean refresh) {
if (readyToShow()) {
-
- if (refresh && mStorageManager != null) {
- setFile(mStorageManager.getFileByPath(getFile().getRemotePath()));
+ FileDataStorageManager storageManager =
+ ((FileActivity)getActivity()).getStorageManager();
+ if (refresh && storageManager != null) {
+ setFile(storageManager.getFileByPath(getFile().getRemotePath()));
}
OCFile file = getFile();
if (getFile().getRemotePath().equals(uploadRemotePath) ||
renamedInUpload) {
if (uploadWasFine) {
- setFile(mStorageManager.getFileByPath(uploadRemotePath));
+ setFile(((FileActivity)getActivity()).getStorageManager().getFileByPath(uploadRemotePath));
}
if (renamedInUpload) {
String newName = (new File(uploadRemotePath)).getName();
newFilename,
new FileDataStorageManager(mAccount, getActivity().getContentResolver()));
mLastRemoteOperation.execute(mAccount, getSherlockActivity(), this, mHandler, getSherlockActivity());
- ((FileDisplayActivity) getActivity()).showLoadingDialog();
+ ((FileActivity) getActivity()).showLoadingDialog();
}
}
private void onRemoveFileOperationFinish(RemoveFileOperation operation, RemoteOperationResult result) {
- ((FileDisplayActivity) getActivity()).dismissLoadingDialog();
+ ((FileActivity) getActivity()).dismissLoadingDialog();
if (result.isSuccess()) {
Toast msg = Toast.makeText(getActivity().getApplicationContext(), R.string.remove_success_msg, Toast.LENGTH_LONG);
msg.show();
}
private void onRenameFileOperationFinish(RenameFileOperation operation, RemoteOperationResult result) {
- ((FileDisplayActivity) getActivity()).dismissLoadingDialog();
+ ((FileActivity) getActivity()).dismissLoadingDialog();
if (result.isSuccess()) {
updateFileDetails(((RenameFileOperation)operation).getFile(), mAccount);
+ /* TODO WIP COMMENT
mContainerActivity.onFileStateChanged();
+ */
} else {
if (result.getCode().equals(ResultCode.INVALID_LOCAL_FILE_NAME)) {
Toast msg = Toast.makeText(getActivity(), R.string.rename_local_fail_msg, Toast.LENGTH_LONG);
msg.show();
// TODO throw again the new rename dialog
+ } if (result.getCode().equals(ResultCode.INVALID_CHARACTER_IN_NAME)) {
+ Toast msg = Toast.makeText(getActivity(), R.string.filename_forbidden_characters, Toast.LENGTH_LONG);
+ msg.show();
} else {
Toast msg = Toast.makeText(getActivity(), R.string.rename_server_fail_msg, Toast.LENGTH_LONG);
msg.show();
}
private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, RemoteOperationResult result) {
- ((FileDisplayActivity) getActivity()).dismissLoadingDialog();
+ ((FileActivity) getActivity()).dismissLoadingDialog();
OCFile file = getFile();
if (!result.isSuccess()) {
if (result.getCode() == ResultCode.SYNC_CONFLICT) {
} else {
if (operation.transferWasRequested()) {
setButtonsForTransferring();
+ /* TODO WIP COMMENT
mContainerActivity.onFileStateChanged(); // this is not working; FileDownloader won't do NOTHING at all until this method finishes, so
// checking the service to see if the file is downloading results in FALSE
+ */
} else {
Toast msg = Toast.makeText(getActivity(), R.string.sync_file_nothing_to_do_msg, Toast.LENGTH_LONG);
msg.show();
}
@Override
- public void onTransferProgress(long progressRate) {
- // old method, nothing here
- };
-
- @Override
public void onTransferProgress(long progressRate, long totalTransferredSoFar, long totalToTransfer, String filename) {
int percent = (int)(100.0*((double)totalTransferredSoFar)/((double)totalToTransfer));
if (percent != mLastPercent) {