From: Andy Scherzinger Date: Wed, 4 Nov 2015 09:11:39 +0000 (+0100) Subject: Merge branch 'beta' of https://github.com/owncloud/android into beta X-Git-Tag: beta-20151122~45 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/570130ece72b228899ab2e5a708b656dc615e94d?hp=4d33ecf15e9a4fa22e1e49e563793704c7598a3f Merge branch 'beta' of https://github.com/owncloud/android into beta --- diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b069594a..77f8a0db 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -110,7 +110,7 @@ + android:authorities="@string/authorityCache" + android:exported="true"> + Owncloud Beta owncloud.beta org.owncloud.beta.provider + org.owncloud.beta.imageCache.provider owncloud.db ownCloud owncloud-beta diff --git a/res/values/strings.xml b/res/values/strings.xml index 2e35e5ff..c4b93e05 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -387,5 +387,6 @@ Error Log Stream file with external player Do you want to stream this file with an external app?\n\nCAUTION: This may expose your password! + Set picture as diff --git a/src/com/owncloud/android/files/FileOperationsHelper.java b/src/com/owncloud/android/files/FileOperationsHelper.java index e799e176..68c5662e 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -51,6 +51,7 @@ import com.owncloud.android.ui.dialog.ShareLinkToDialog; import org.apache.http.protocol.HTTP; +import java.io.File; import java.util.List; import java.io.ByteArrayOutputStream; @@ -248,6 +249,40 @@ public class FileOperationsHelper { } } + public void setPictureAs(OCFile file) { + if (file != null){ + if (file.isDown()) { + File externalFile = new File(file.getStoragePath()); + Uri sendUri = Uri.fromFile(externalFile); + Intent intent = new Intent(Intent.ACTION_ATTACH_DATA); + intent.setDataAndType(sendUri, file.getMimetype()); + intent.putExtra("mimeType", file.getMimetype()); + mFileActivity.startActivityForResult(Intent.createChooser(intent, "Set As"), 200); + } else { + // TODO re-enable after resized images is available + Uri sendUri = Uri.parse("content://" + DiskLruImageCacheFileProvider.AUTHORITY + file.getRemotePath()); + Intent intent = new Intent(Intent.ACTION_ATTACH_DATA); + intent.setDataAndType(sendUri, file.getMimetype()); + intent.putExtra("mimeType", file.getMimetype()); + mFileActivity.startActivityForResult(Intent.createChooser(intent, "Set As"), 200); + +// Intent sendIntent = new Intent(android.content.Intent.ACTION_SEND); +// // set MimeType +// sendIntent.setType(file.getMimetype()); +//// sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://" + DiskLruImageCacheFileProvider.AUTHORITY + "/#" + file.getRemoteId() + "#" + file.getFileName())); +// sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://" + DiskLruImageCacheFileProvider.AUTHORITY + file.getRemotePath())); +// sendIntent.putExtra(Intent.ACTION_SEND, true); // Send Action +// +// // Show dialog, without the own app +// String[] packagesToExclude = new String[] { mFileActivity.getPackageName() }; +// DialogFragment chooserDialog = ShareLinkToDialog.newInstance(sendIntent, packagesToExclude, file); +// chooserDialog.show(mFileActivity.getSupportFragmentManager(), FTAG_CHOOSER_DIALOG); + } + } else { + Log_OC.wtf(TAG, "Trying to send a NULL OCFile"); + } + } + public void sendCachedImage(OCFile file) { if (file != null) { Intent sendIntent = new Intent(android.content.Intent.ACTION_SEND); diff --git a/src/com/owncloud/android/ui/adapter/DiskLruImageCacheFileProvider.java b/src/com/owncloud/android/ui/adapter/DiskLruImageCacheFileProvider.java index fe3f6ea2..a3c54e8e 100644 --- a/src/com/owncloud/android/ui/adapter/DiskLruImageCacheFileProvider.java +++ b/src/com/owncloud/android/ui/adapter/DiskLruImageCacheFileProvider.java @@ -27,9 +27,11 @@ import android.content.ContentProvider; import android.content.ContentValues; import android.content.UriMatcher; import android.database.Cursor; +import android.database.MatrixCursor; import android.graphics.Bitmap; import android.net.Uri; import android.os.ParcelFileDescriptor; +import android.provider.OpenableColumns; import com.owncloud.android.MainApp; import com.owncloud.android.authentication.AccountUtils; @@ -46,16 +48,27 @@ import java.io.IOException; public class DiskLruImageCacheFileProvider extends ContentProvider { private static String TAG = FileDataStorageManager.class.getSimpleName(); + private FileDataStorageManager mFileDataStorageManager; - public static final String AUTHORITY = "com.owncloud.imageCache.provider"; + public static final String AUTHORITY = "org.owncloud.beta.imageCache.provider"; @Override - public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { + public boolean onCreate() { + return true; + } + + private OCFile getFile(Uri uri){ Account account = AccountUtils.getCurrentOwnCloudAccount(MainApp.getAppContext()); - FileDataStorageManager fileDataStorageManager = new FileDataStorageManager(account, + mFileDataStorageManager = new FileDataStorageManager(account, MainApp.getAppContext().getContentResolver()); - OCFile ocFile = fileDataStorageManager.getFileByPath(uri.getPath()); + OCFile ocFile = mFileDataStorageManager.getFileByPath(uri.getPath()); + return ocFile; + } + + @Override + public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { + OCFile ocFile = getFile(uri); Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache( String.valueOf("r" + ocFile.getRemoteId())); @@ -88,20 +101,26 @@ public class DiskLruImageCacheFileProvider extends ContentProvider { return ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY); } - @Override - public boolean onCreate() { - return true; + public String getType(Uri uri) { + OCFile ocFile = getFile(uri); + return ocFile.getMimetype(); } @Override - public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { - return null; - } + public Cursor query(Uri uri, String[] arg1, String arg2, String[] arg3, String arg4) { + MatrixCursor cursor = null; + + OCFile ocFile = getFile(uri); + File file = new File(MainApp.getAppContext().getCacheDir(), ocFile.getFileName()); + if (file.exists()) { + cursor = new MatrixCursor(new String[] { + OpenableColumns.DISPLAY_NAME, OpenableColumns.SIZE }); + cursor.addRow(new Object[] { uri.getLastPathSegment(), + file.length() }); + } - @Override - public String getType(Uri uri) { - return null; + return cursor; } @Override diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 92177f4a..88b0dd16 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -499,7 +499,7 @@ public class OCFileListFragment extends ExtendedListFragment { ((FileDisplayActivity) mContainerActivity).startMediaPreview(file, 0, true); } else if (file.isDown()) { mContainerActivity.getFileOperationsHelper().openFile(file); - } else { + } else { // automatic download, preview on finish ((FileDisplayActivity) mContainerActivity).startDownloadForPreview(file); } diff --git a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java index dc96b9f2..f01528a2 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java @@ -264,6 +264,9 @@ public class PreviewImageFragment extends FileFragment { public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.file_actions_menu, menu); + +// MenuItem item = menu.findItem(R.id.action_set_as_wallpaper); +// item.setVisible(getFile().isDown()); } /** @@ -367,6 +370,10 @@ public class PreviewImageFragment extends FileFragment { mContainerActivity.getFileOperationsHelper().toggleFavorite(getFile(), false); return true; } + case R.id.action_set_as_wallpaper:{ + mContainerActivity.getFileOperationsHelper().setPictureAs(getFile()); + return true; + } default: return false; }