mirror of
https://github.com/nextcloud/android.git
synced 2024-11-23 21:55:48 +03:00
Merge efd1167ce6
into 43b751605b
This commit is contained in:
commit
46e62cfb80
1 changed files with 54 additions and 11 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue