From: masensio Date: Fri, 14 Feb 2014 13:59:24 +0000 (+0100) Subject: Merge pull request #311 from tobiasKaminsky/develop X-Git-Tag: oc-android-1.5.5~47 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/7ead9a0fe4752494436b19cfdd6b62e8410c87ea?hp=-c Merge pull request #311 from tobiasKaminsky/develop Added support for sharing files: --- 7ead9a0fe4752494436b19cfdd6b62e8410c87ea diff --combined res/menu/file_actions_menu.xml index 1e78a367,c292dff7..05722063 --- a/res/menu/file_actions_menu.xml +++ b/res/menu/file_actions_menu.xml @@@ -19,9 -19,7 +19,9 @@@ --> - + + + @@@ -29,5 -27,6 +29,6 @@@ + diff --combined res/values-de-rCH/strings.xml index d995da1c,619fca82..c5d7ce4f --- a/res/values-de-rCH/strings.xml +++ b/res/values-de-rCH/strings.xml @@@ -10,6 -10,7 +10,7 @@@ Ordner anlegen Einstellungen Details + Teile Datei Allgemein Mehr Konten @@@ -27,6 -28,7 +28,6 @@@ Rückmeldungen Impressum Server überprüfen - Adresse des Servers Benutzername Passwort Ist %1$s neu für Sie? diff --combined res/values-de-rDE/strings.xml index ca43de3d,22cd02f7..97a67e93 --- a/res/values-de-rDE/strings.xml +++ b/res/values-de-rDE/strings.xml @@@ -10,6 -10,7 +10,7 @@@ Ordner anlegen Einstellungen Details + Teile Datei Allgemein Mehr Konten @@@ -30,7 -31,7 +31,7 @@@ Probieren Sie %1$s auf Ihrem Smartphone! Ich möchte Sie zum Benutzen von %1$s auf Ihrem Smartphone einladen!\nLaden Sie es hier herunter: %2$s Server überprüfen - Adresse des Servers + Server-Adresse https://… Benutzername Passwort Ist %1$s neu für Sie? @@@ -55,8 -56,6 +56,8 @@@ Herunterladen Datei aktualisieren Datei wurde wärend des Uploads zu %1$s umbenannt + Link teilen + Link nicht mehr freigeben Ja Nein OK @@@ -177,11 -176,9 +178,11 @@@ Die entfernte Datei konnte nicht überprüft werden Dateiinhalte bereits synchronisiert Das Verzeichnis konnte nicht erstellt werden. + Verbotene Zeichen: / \\ < > : \" | ? * Bitte warten Sie einen Moment. Ein unerwartetes Problem ist aufgetreten. Bitte versuchen Sie, die Datei in einer anderen App zu öffnen. Es wurde keine Datei ausgewählt. + Link senden an ... Anmelden mit oAuth2 Verbinde mit dem oAuth2-Server… Die Identität der Website konnte nicht überprüft werden @@@ -222,7 -219,6 +223,7 @@@ Bildvorschau Dieses Bild kann nicht angezeigt werden %1$s konnte nicht in den lokalen %2$s Ordner kopiert werden + Sofort-Upload fehlgeschlagen Sofortige Uploads fehlgeschlagen Zusammenfassung aller fehlgeschlagenen Uploads Alle auswählen @@@ -233,8 -229,4 +234,8 @@@ Nicht durchgeführt - Nicht online für sofortigen Upload Fehlermeldung: Bitte überprüfen Sie Ihre Serverkonfiguration. Vielleicht ist Ihr Nutzungslimit überschritten. + Entschuldigung, Freigaben sind auf Ihrem Server nicht aktiviert. Bitte kontaktieren Sie Ihren Administrator. + Die Freigabe der Datei oder des Ordners ist nicht möglich. Bitte stellen Sie sicher, dass diese existiert. + Es ist ein Fehler beim Freigeben der Datei oder des Ordners aufgetreten. + Es ist ein Fehler beim Entfernen der Freigabe für diese Datei oder den Ordner aufgetreten. diff --combined res/values-de/strings.xml index 17b92e99,5fbc4429..06f49d41 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@@ -10,6 -10,7 +10,7 @@@ Ordner anlegen Einstellungen Details + Teile Datei Allgemein Mehr Konten @@@ -28,9 -29,9 +29,9 @@@ Rückmeldungen Impressum Probiere %1$s auf Deinem Smartphone! - Ich möchte Dich zum Benutzen von %1$s auf Deinem Smartphone einladen!\nLade es hier herunter: %2$s + Ich möchte Dich zu %1$s für Dein Smartphone einladen!\nLade es hier herunter: %2$s Überprüfe den Server - Adresse des Servers + Server-Adresse https://… Benutzername Passwort Ist %1$s neu für dich? @@@ -55,8 -56,6 +56,8 @@@ Herunterladen Datei aktualisieren Datei wurde wärend des Uploads zu %1$s umbenannt + Link Teilen + Link nicht mehr freigeben Ja Nein OK @@@ -96,7 -95,7 +97,7 @@@ Inhalte von %1$d konnte nicht synchronisiert werden (%2$d Konflikte) Einige lokale Dateien wurden vergessen %1$d Dateien aus dem Verzeichnis %2$s konnten nicht kopiert werden nach - \"Mit Version 1.3.16 werden Dateien die von diesem Gerät aus hochgeladen werden in den lokalen Ordner %1$s kopiert um Datenverlust zu vermeiden, wenn eine einzelne Datei mit mehreren Accounts synchronisiert wird.\n\nInfolge dieser Änderung wurden alle Dateien, die mit vorherigen Versionen dieser App hochgeladen wurden, in den Ordner %2$s verschoben. Jedoch ist während der Account-Synchronisation ein Fehler aufgetreten, der das Abschließen dieses Vorgangs verhindert. Du kannst die Datei(en) entweder wie sie sind belassen und den Link zu %3$s entfernen oder die Datei(en) in den %1$s Ordner verschieben und den Link zu %4$s beibehalten.\n\nUnten befindet sich eine Liste der lokalen Datei(en) und der mit ihnen verbundenen Remote-Datei(en) in %5$s. + \"Mit Version 1.3.16 werden Dateien die von diesem Gerät aus hochgeladen werden in den lokalen Ordner %1$s kopiert, um Datenverlust zu vermeiden, wenn eine einzelne Datei mit mehreren Accounts synchronisiert wird.\n\nInfolge dieser Änderung wurden alle Dateien, die mit vorherigen Versionen dieser App hochgeladen wurden, in den Ordner %2$s verschoben. Jedoch ist während der Account-Synchronisation ein Fehler aufgetreten, der das Abschließen dieses Vorgangs verhindert. Du kannst die Datei(en) entweder wie sie sind belassen und den Link zu %3$s entfernen, oder die Datei(en) in den %1$s Ordner verschieben, und den Link zu %4$s beibehalten.\n\nUnten befindet sich eine Liste der lokalen Datei(en) und der mit ihnen verbundenen Remote-Datei(en) in %5$s. Das Verzeichnis %1$s existiert nicht mehr Verschiebe alle Alle Dateien wurden verschoben @@@ -154,9 -153,9 +155,9 @@@ Autorisierung nicht erfolgreich Zugriff durch den Autorisierungsserver abgelehnt Unerwarteter Zustand; bitte gib die URL des Servers nochmals ein - Ihre Autorisierung ist abgelaufen. Bitte Autorisierung nochmals durchführen + Deine Autorisierung ist abgelaufen. Bitte Autorisierung nochmals durchführen Bitte gib dein aktuelles Passwort ein - Ihre Sitzung ist abgelaufen. Bitte Anmeldung nochmals durchführen + Deine Sitzung ist abgelaufen. Bitte Anmeldung nochmals durchführen Verbinde mit dem Authentifizierung-Server… Der Server unterstützt diese Authentifizierung-Methode nicht %1$s unterstützt nicht mehrere Benutzerkonten @@@ -177,11 -176,9 +178,11 @@@ Die entfernte Datei konnte nicht überprüft werden Dateiinhalte bereits synchronisiert Das Verzeichnis konnte nicht erstellt werden. + Verbotene Zeichen: / \\ < > : \" | ? * Bitte warte einen Moment. Ein unerwartetes Problem ist aufgetreten. Bitte versuche, die Datei in einer anderen App zu öffnen Es wurde keine Datei ausgewählt. + Link senden an ... Anmelden mit oAuth2 Verbinde mit dem oAuth2-Server. Die Identität der Website konnte nicht überprüft werden @@@ -222,7 -219,6 +223,7 @@@ Bildvorschau Dieses Bild kann nicht angezeigt werden %1$s konnte nicht in den lokalen %2$s Ordner kopiert werden + Sofort-Upload fehlgeschlagen SofortUpload fehlgeschlagen Übersicht aller fehlgeschlagenen SofortUploads Alles auswählen @@@ -233,8 -229,4 +234,8 @@@ Nicht durchgeführt - Nicht online für sofortigen Upload Fehlermeldung: Bitte überprüfe Deine Servereinstellungen. Eventuell ist Dein Nutzungslimit überschritten. + Entschuldigung, Freigaben sind auf Deinem Server nicht aktiviert. Bitte kontaktiere Deinen Administrator. + Die Freigabe der Datei oder des Ordners ist nicht möglich. Bitte stelle sicher, dass diese existiert. + Es ist ein Fehler beim Freigeben der Datei oder des Ordners aufgetreten. + Es ist ein Fehler beim Entfernen der Freigabe für diese Datei oder den Ordner aufgetreten. diff --combined res/values-en-rGB/strings.xml index e4b215ae,e47efd95..4ec67dda --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@@ -10,6 -10,7 +10,7 @@@ Create directory Settings Details + Share General More Accounts @@@ -30,7 -31,7 +31,7 @@@ Try %1$s on your smartphone! I want to invite you to use %1$s on your smartphone!\nDownload here: %2$s Check Server - Server address + Server address https://… Username Password New to %1$s? @@@ -55,8 -56,6 +56,8 @@@ Download Refresh file File was renamed to %1$s during upload + Share link + Unshare link Yes No OK @@@ -181,7 -180,6 +182,7 @@@ Wait a moment Unexpected problem; please select the file from a different app No file was selected + Send link to … Log in with oAuth2 Connecting to oAuth2 server… The identity of the site could not be verified @@@ -233,8 -231,4 +234,8 @@@ do nothing you are not online for instant upload Failure Message: Please check your server configuration, perhaps your quota is exceeded. + Sorry, sharing is not enabled on your server. Please contact your administrator. + Unable to share this file or folder. Please, make sure it exists + An error occurred while trying to share this file or folder + An error occurred while trying to unshare this file or folder diff --combined res/values/strings.xml index f6871a6a,61d04480..6c392b24 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@@ -11,7 -11,7 +11,7 @@@ Create directory Settings Details - + Share General More Accounts @@@ -34,7 -34,7 +34,7 @@@ "I want to invite you to use %1$s on your smartphone!\nDownload here: %2$s" Check Server - Server address + Server address https://… Username Password New to %1$s? @@@ -59,8 -59,6 +59,8 @@@ Download Refresh file File was renamed to %1$s during upload + Share link + Unshare link Yes No OK @@@ -188,7 -186,6 +188,7 @@@ Wait a moment "Unexpected problem ; please select the file from a different app" No file was selected + Send link to … Login with oAuth2 Connecting to oAuth2 server… @@@ -246,10 -243,4 +246,10 @@@ do nothing you are not online for instant upload Failure Message: Please check your server configuration,maybe your quota is exceeded. + + Sorry, sharing is not enabled on your server. Please contact your administrator. + Unable to share this file or folder. Please, make sure it exists + An error occurred while trying to share this file or folder + Unable to unshare this file or folder. It does not exist. + An error occurred while trying to unshare this file or folder diff --combined src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 66530645,6da24cd2..5780e58a --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@@ -25,10 -25,11 +25,10 @@@ import com.owncloud.android.R import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.files.FileHandler; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; -import com.owncloud.android.oc_framework.operations.OnRemoteOperationListener; -import com.owncloud.android.oc_framework.operations.RemoteOperation; +import com.owncloud.android.lib.operations.common.OnRemoteOperationListener; +import com.owncloud.android.lib.operations.common.RemoteOperation; import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.RenameFileOperation; import com.owncloud.android.operations.SynchronizeFileOperation; @@@ -42,9 -43,10 +42,10 @@@ import com.owncloud.android.ui.preview. import com.owncloud.android.ui.preview.PreviewMediaFragment; import com.owncloud.android.utils.Log_OC; - import android.accounts.Account; import android.app.Activity; + import android.content.Intent; + import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.view.ContextMenu; @@@ -182,8 -184,8 +183,8 @@@ public class OCFileListFragment extend // media preview mContainerActivity.startMediaPreview(file, 0, true); } else { - // open with - mContainerActivity.openFile(file); + FileDisplayActivity activity = (FileDisplayActivity) getSherlockActivity(); + activity.getFileOperationsHelper().openFile(file, activity); } } else { @@@ -221,6 -223,7 +222,7 @@@ toHide.add(R.id.action_cancel_upload); toHide.add(R.id.action_sync_file); toHide.add(R.id.action_see_details); + toHide.add(R.id.action_share_file); if ( mContainerActivity.getFileDownloaderBinder().isDownloading(AccountUtils.getCurrentOwnCloudAccount(getActivity()), targetFile) || mContainerActivity.getFileUploaderBinder().isUploading(AccountUtils.getCurrentOwnCloudAccount(getActivity()), targetFile) ) { toDisable.add(R.id.action_rename_file); @@@ -257,11 -260,6 +259,11 @@@ toHide.add(R.id.action_cancel_upload); } } + + // Options shareLink + if (!targetFile.isShareByLink()) { + toHide.add(R.id.action_unshare_file); + } for (int i : toHide) { item = menu.findItem(i); @@@ -287,17 -285,7 +289,17 @@@ public boolean onContextItemSelected (MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); mTargetFile = (OCFile) mAdapter.getItem(info.position); - switch (item.getItemId()) { + switch (item.getItemId()) { + case R.id.action_share_file: { + FileDisplayActivity activity = (FileDisplayActivity) getSherlockActivity(); + activity.getFileOperationsHelper().shareFileWithLink(mTargetFile, activity); + return true; + } + case R.id.action_unshare_file: { + FileDisplayActivity activity = (FileDisplayActivity) getSherlockActivity(); + activity.getFileOperationsHelper().unshareFileWithLink(mTargetFile, activity); + return true; + } case R.id.action_rename_file: { String fileName = mTargetFile.getFileName(); int extensionStart = mTargetFile.isFolder() ? -1 : fileName.lastIndexOf("."); @@@ -359,11 -347,19 +361,19 @@@ ((FileFragment.ContainerActivity)getActivity()).showDetails(mTargetFile); return true; } + case R.id.action_share_file: { + Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); + // set MimeType + sharingIntent.setType(mTargetFile.getMimetype()); + sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+mTargetFile.getStoragePath())); + startActivity(Intent.createChooser(sharingIntent, "Share via")); + return true; + } default: return super.onContextItemSelected(item); } } - + /** * Use this to query the {@link OCFile} that is currently @@@ -424,7 -420,7 +434,7 @@@ * * @author David A. Velasco */ - public interface ContainerActivity extends TransferServiceGetter, OnRemoteOperationListener, FileHandler { + public interface ContainerActivity extends TransferServiceGetter, OnRemoteOperationListener { /** * Callback method invoked when a the user browsed into a different folder through the list of files @@@ -432,7 -428,7 +442,7 @@@ * @param file */ public void onBrowsedDownTo(OCFile folder); - + public void startDownloadForPreview(OCFile file); public void startMediaPreview(OCFile file, int i, boolean b); diff --combined src/com/owncloud/android/ui/preview/PreviewImageFragment.java index 4785a134,022120be..88f40b82 --- a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java @@@ -16,6 -16,7 +16,6 @@@ */ package com.owncloud.android.ui.preview; -import java.io.File; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@@ -52,12 -53,11 +52,12 @@@ import com.actionbarsherlock.view.MenuI import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.oc_framework.network.webdav.WebdavUtils; -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.lib.network.webdav.WebdavUtils; +import com.owncloud.android.lib.operations.common.OnRemoteOperationListener; +import com.owncloud.android.lib.operations.common.RemoteOperation; +import com.owncloud.android.lib.operations.common.RemoteOperationResult; import com.owncloud.android.operations.RemoveFileOperation; +import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.fragment.ConfirmationDialogFragment; import com.owncloud.android.ui.fragment.FileFragment; import com.owncloud.android.utils.Log_OC; @@@ -176,22 -176,8 +176,22 @@@ public class PreviewImageFragment exten mStorageManager = new FileDataStorageManager(mAccount, getActivity().getApplicationContext().getContentResolver()); if (savedInstanceState != null) { if (!mIgnoreFirstSavedState) { - setFile((OCFile)savedInstanceState.getParcelable(PreviewImageFragment.EXTRA_FILE)); + OCFile file = (OCFile)savedInstanceState.getParcelable(PreviewImageFragment.EXTRA_FILE); mAccount = savedInstanceState.getParcelable(PreviewImageFragment.EXTRA_ACCOUNT); + + // Update the file + if (mAccount!= null) { + mStorageManager = new FileDataStorageManager(mAccount, getActivity().getApplicationContext().getContentResolver()); + OCFile updatedFile = mStorageManager.getFileByPath(file.getRemotePath()); + if (updatedFile != null) { + setFile(updatedFile); + } else { + setFile(file); + } + } else { + setFile(file); + } + } else { mIgnoreFirstSavedState = false; } @@@ -244,11 -230,6 +244,11 @@@ toHide.add(R.id.action_cancel_upload); toHide.add(R.id.action_download_file); toHide.add(R.id.action_rename_file); // by now + + // Options shareLink + if (!getFile().isShareByLink()) { + toHide.add(R.id.action_unshare_file); + } for (int i : toHide) { item = menu.findItem(i); @@@ -260,27 -241,6 +260,27 @@@ } + /** + * {@inheritDoc} + */ + @Override + public void onPrepareOptionsMenu(Menu menu) { + super.onPrepareOptionsMenu(menu); + + MenuItem item = menu.findItem(R.id.action_unshare_file); + // Options shareLink + OCFile file = ((FileActivity) getSherlockActivity()).getFile(); + if (!file.isShareByLink()) { + item.setVisible(false); + item.setEnabled(false); + } else { + item.setVisible(true); + item.setEnabled(true); + } + + } + + /** * {@inheritDoc} @@@ -288,16 -248,6 +288,16 @@@ @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { + case R.id.action_share_file: { + FileActivity act = (FileActivity)getSherlockActivity(); + act.getFileOperationsHelper().shareFileWithLink(getFile(), act); + return true; + } + case R.id.action_unshare_file: { + FileActivity act = (FileActivity)getSherlockActivity(); + act.getFileOperationsHelper().unshareFileWithLink(getFile(), act); + return true; + } case R.id.action_open_file_with: { openFile(); return true; @@@ -310,14 -260,25 +310,26 @@@ seeDetails(); return true; } + case R.id.action_share_file: { + shareFile(); + return true; + } default: return false; } } + + private void shareFile(){ + Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); + // set MimeType + sharingIntent.setType(getFile().getMimetype()); + sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+getFile().getStoragePath())); + startActivity(Intent.createChooser(sharingIntent, "Share via")); + } + private void seeDetails() { ((FileFragment.ContainerActivity)getActivity()).showDetails(getFile()); } @@@ -439,9 -400,15 +451,9 @@@ */ @Override public void onNeutral(String callerTag) { - // TODO this code should be made in a secondary thread, OCFile file = getFile(); - if (file.isDown()) { // checks it is still there - File f = new File(file.getStoragePath()); - f.delete(); - file.setStoragePath(null); - mStorageManager.saveFile(file); - finish(); - } + mStorageManager.removeFile(file, false, true); // TODO perform in background task / new thread + finish(); } /**