mirror of
https://github.com/nextcloud/android.git
synced 2024-12-17 22:41:54 +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
|
* Nextcloud Android client application
|
||||||
*
|
*
|
||||||
* @author Mario Danic
|
* @author Mario Danic
|
||||||
|
@ -24,6 +24,7 @@ package com.owncloud.android.jobs;
|
||||||
import android.accounts.Account;
|
import android.accounts.Account;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.media.ExifInterface;
|
import android.support.media.ExifInterface;
|
||||||
|
@ -32,7 +33,9 @@ import android.text.TextUtils;
|
||||||
import com.evernote.android.job.Job;
|
import com.evernote.android.job.Job;
|
||||||
import com.evernote.android.job.util.support.PersistableBundleCompat;
|
import com.evernote.android.job.util.support.PersistableBundleCompat;
|
||||||
import com.owncloud.android.MainApp;
|
import com.owncloud.android.MainApp;
|
||||||
|
import com.owncloud.android.R;
|
||||||
import com.owncloud.android.authentication.AccountUtils;
|
import com.owncloud.android.authentication.AccountUtils;
|
||||||
|
import com.owncloud.android.datamodel.ArbitraryDataProvider;
|
||||||
import com.owncloud.android.datamodel.FilesystemDataProvider;
|
import com.owncloud.android.datamodel.FilesystemDataProvider;
|
||||||
import com.owncloud.android.datamodel.MediaFolderType;
|
import com.owncloud.android.datamodel.MediaFolderType;
|
||||||
import com.owncloud.android.datamodel.SyncedFolder;
|
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.files.services.FileUploader;
|
||||||
import com.owncloud.android.lib.common.utils.Log_OC;
|
import com.owncloud.android.lib.common.utils.Log_OC;
|
||||||
import com.owncloud.android.operations.UploadFileOperation;
|
import com.owncloud.android.operations.UploadFileOperation;
|
||||||
|
import com.owncloud.android.ui.activity.Preferences;
|
||||||
import com.owncloud.android.utils.FileStorageUtils;
|
import com.owncloud.android.utils.FileStorageUtils;
|
||||||
import com.owncloud.android.utils.FilesSyncHelper;
|
import com.owncloud.android.utils.FilesSyncHelper;
|
||||||
import com.owncloud.android.utils.MimeTypeUtil;
|
import com.owncloud.android.utils.MimeTypeUtil;
|
||||||
|
@ -78,6 +82,9 @@ public class FilesSyncJob extends Job {
|
||||||
PersistableBundleCompat bundle = params.getExtras();
|
PersistableBundleCompat bundle = params.getExtras();
|
||||||
final boolean skipCustom = bundle.getBoolean(SKIP_CUSTOM, false);
|
final boolean skipCustom = bundle.getBoolean(SKIP_CUSTOM, false);
|
||||||
|
|
||||||
|
Resources resources = MainApp.getAppContext().getResources();
|
||||||
|
boolean lightVersion = resources.getBoolean(R.bool.syncedFolder_light);
|
||||||
|
|
||||||
FilesSyncHelper.restartJobsIfNeeded();
|
FilesSyncHelper.restartJobsIfNeeded();
|
||||||
FilesSyncHelper.insertAllDBEntries(skipCustom);
|
FilesSyncHelper.insertAllDBEntries(skipCustom);
|
||||||
|
|
||||||
|
@ -95,9 +102,9 @@ public class FilesSyncJob extends Job {
|
||||||
final Locale currentLocale = context.getResources().getConfiguration().locale;
|
final Locale currentLocale = context.getResources().getConfiguration().locale;
|
||||||
|
|
||||||
if (MediaFolderType.IMAGE == syncedFolder.getType()) {
|
if (MediaFolderType.IMAGE == syncedFolder.getType()) {
|
||||||
String mimetypeString = FileStorageUtils.getMimeTypeFromName(file.getAbsolutePath());
|
String mimeTypeString = FileStorageUtils.getMimeTypeFromName(file.getAbsolutePath());
|
||||||
if ("image/jpeg".equalsIgnoreCase(mimetypeString) || "image/tiff".
|
if ("image/jpeg".equalsIgnoreCase(mimeTypeString) || "image/tiff".
|
||||||
equalsIgnoreCase(mimetypeString)) {
|
equalsIgnoreCase(mimeTypeString)) {
|
||||||
try {
|
try {
|
||||||
ExifInterface exifInterface = new ExifInterface(file.getAbsolutePath());
|
ExifInterface exifInterface = new ExifInterface(file.getAbsolutePath());
|
||||||
String exifDate = exifInterface.getAttribute(ExifInterface.TAG_DATETIME);
|
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());
|
String mimeType = MimeTypeUtil.getBestMimeTypeByFilename(file.getAbsolutePath());
|
||||||
|
|
||||||
Account account = AccountUtils.getOwnCloudAccountByName(context, syncedFolder.getAccount());
|
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(
|
requester.uploadFileWithOverwrite(
|
||||||
context,
|
context,
|
||||||
account,
|
account,
|
||||||
file.getAbsolutePath(),
|
file.getAbsolutePath(),
|
||||||
FileStorageUtils.getInstantUploadFilePath(
|
FileStorageUtils.getInstantUploadFilePath(
|
||||||
currentLocale,
|
currentLocale,
|
||||||
syncedFolder.getRemotePath(), file.getName(),
|
remotePath, file.getName(),
|
||||||
lastModificationTime,
|
lastModificationTime, subfolderByDate),
|
||||||
syncedFolder.getSubfolderByDate()),
|
uploadAction,
|
||||||
syncedFolder.getUploadAction(),
|
|
||||||
mimeType,
|
mimeType,
|
||||||
true, // create parent folder if not existent
|
true, // create parent folder if not existent
|
||||||
UploadFileOperation.CREATED_AS_INSTANT_PICTURE,
|
UploadFileOperation.CREATED_AS_INSTANT_PICTURE,
|
||||||
|
@ -150,4 +180,17 @@ public class FilesSyncJob extends Job {
|
||||||
wakeLock.release();
|
wakeLock.release();
|
||||||
return Result.SUCCESS;
|
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