From efd1167ce6661a68d8c5927b17d8498d92ed747f Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Wed, 9 Aug 2017 14:14:56 +0200 Subject: [PATCH] make auto upload light working again --- .../owncloud/android/jobs/FilesSyncJob.java | 65 +++++++++++++++---- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/owncloud/android/jobs/FilesSyncJob.java b/src/main/java/com/owncloud/android/jobs/FilesSyncJob.java index 216cf3e7a8..c43fd5d7eb 100644 --- a/src/main/java/com/owncloud/android/jobs/FilesSyncJob.java +++ b/src/main/java/com/owncloud/android/jobs/FilesSyncJob.java @@ -1,4 +1,4 @@ -/** +/* * Nextcloud Android client application * * @author Mario Danic @@ -24,6 +24,7 @@ package com.owncloud.android.jobs; import android.accounts.Account; import android.content.ContentResolver; import android.content.Context; +import android.content.res.Resources; import android.os.PowerManager; import android.support.annotation.NonNull; import android.support.media.ExifInterface; @@ -32,7 +33,9 @@ import android.text.TextUtils; import com.evernote.android.job.Job; import com.evernote.android.job.util.support.PersistableBundleCompat; import com.owncloud.android.MainApp; +import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; +import com.owncloud.android.datamodel.ArbitraryDataProvider; import com.owncloud.android.datamodel.FilesystemDataProvider; import com.owncloud.android.datamodel.MediaFolderType; import com.owncloud.android.datamodel.SyncedFolder; @@ -40,6 +43,7 @@ import com.owncloud.android.datamodel.SyncedFolderProvider; import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.operations.UploadFileOperation; +import com.owncloud.android.ui.activity.Preferences; import com.owncloud.android.utils.FileStorageUtils; import com.owncloud.android.utils.FilesSyncHelper; import com.owncloud.android.utils.MimeTypeUtil; @@ -78,6 +82,9 @@ public class FilesSyncJob extends Job { PersistableBundleCompat bundle = params.getExtras(); final boolean skipCustom = bundle.getBoolean(SKIP_CUSTOM, false); + Resources resources = MainApp.getAppContext().getResources(); + boolean lightVersion = resources.getBoolean(R.bool.syncedFolder_light); + FilesSyncHelper.restartJobsIfNeeded(); FilesSyncHelper.insertAllDBEntries(skipCustom); @@ -95,9 +102,9 @@ public class FilesSyncJob extends Job { final Locale currentLocale = context.getResources().getConfiguration().locale; if (MediaFolderType.IMAGE == syncedFolder.getType()) { - String mimetypeString = FileStorageUtils.getMimeTypeFromName(file.getAbsolutePath()); - if ("image/jpeg".equalsIgnoreCase(mimetypeString) || "image/tiff". - equalsIgnoreCase(mimetypeString)) { + String mimeTypeString = FileStorageUtils.getMimeTypeFromName(file.getAbsolutePath()); + if ("image/jpeg".equalsIgnoreCase(mimeTypeString) || "image/tiff". + equalsIgnoreCase(mimeTypeString)) { try { ExifInterface exifInterface = new ExifInterface(file.getAbsolutePath()); String exifDate = exifInterface.getAttribute(ExifInterface.TAG_DATETIME); @@ -116,23 +123,46 @@ public class FilesSyncJob extends Job { } } - boolean needsCharging = syncedFolder.getChargingOnly(); - boolean needsWifi = syncedFolder.getWifiOnly(); - String mimeType = MimeTypeUtil.getBestMimeTypeByFilename(file.getAbsolutePath()); Account account = AccountUtils.getOwnCloudAccountByName(context, syncedFolder.getAccount()); + String remotePath; + boolean subfolderByDate; + Integer uploadAction; + boolean needsCharging; + boolean needsWifi; + + if (lightVersion) { + ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider( + context.getContentResolver()); + + needsCharging = resources.getBoolean(R.bool.syncedFolder_light_on_charging); + needsWifi = account == null || arbitraryDataProvider.getBooleanValue(account.name, + Preferences.SYNCED_FOLDER_LIGHT_UPLOAD_ON_WIFI); + String uploadActionString = resources.getString(R.string.syncedFolder_light_upload_behaviour); + uploadAction = getUploadAction(uploadActionString); + + subfolderByDate = resources.getBoolean(R.bool.syncedFolder_light_use_subfolders); + + remotePath = resources.getString(R.string.syncedFolder_remote_folder); + } else { + needsCharging = syncedFolder.getChargingOnly(); + needsWifi = syncedFolder.getWifiOnly(); + uploadAction = syncedFolder.getUploadAction(); + subfolderByDate = syncedFolder.getSubfolderByDate(); + remotePath = syncedFolder.getRemotePath(); + } + requester.uploadFileWithOverwrite( context, account, file.getAbsolutePath(), FileStorageUtils.getInstantUploadFilePath( currentLocale, - syncedFolder.getRemotePath(), file.getName(), - lastModificationTime, - syncedFolder.getSubfolderByDate()), - syncedFolder.getUploadAction(), + remotePath, file.getName(), + lastModificationTime, subfolderByDate), + uploadAction, mimeType, true, // create parent folder if not existent UploadFileOperation.CREATED_AS_INSTANT_PICTURE, @@ -150,4 +180,17 @@ public class FilesSyncJob extends Job { wakeLock.release(); return Result.SUCCESS; } + + private Integer getUploadAction(String action) { + switch (action) { + case "LOCAL_BEHAVIOUR_FORGET": + return FileUploader.LOCAL_BEHAVIOUR_FORGET; + case "LOCAL_BEHAVIOUR_MOVE": + return FileUploader.LOCAL_BEHAVIOUR_MOVE; + case "LOCAL_BEHAVIOUR_DELETE": + return FileUploader.LOCAL_BEHAVIOUR_DELETE; + default: + return FileUploader.LOCAL_BEHAVIOUR_FORGET; + } + } }