From 451a7bc1022e7f8dba9b4363943dcc09715fea97 Mon Sep 17 00:00:00 2001 From: Chris Koying Browet Date: Fri, 10 Aug 2018 13:51:19 +0200 Subject: [PATCH 1/4] ADD: [instantupload] setting to also upload existing files Chris Koying Browet Signed-off-by: Andy Scherzinger --- .../android/datamodel/SyncedFolder.java | 6 ++- .../datamodel/SyncedFolderDisplayItem.java | 13 ++--- .../datamodel/SyncedFolderProvider.java | 7 ++- .../com/owncloud/android/db/ProviderMeta.java | 3 +- .../providers/FileContentProvider.java | 18 +++++++ .../ui/activity/SyncedFoldersActivity.java | 51 +++++++++++++------ ...SyncedFolderPreferencesDialogFragment.java | 17 +++++++ .../dialog/parcel/SyncedFolderParcelable.java | 12 +++++ .../android/utils/FilesSyncHelper.java | 10 ++-- .../layout/synced_folders_settings_layout.xml | 50 ++++++++++++++++++ src/main/res/values/strings.xml | 1 + 11 files changed, 158 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/owncloud/android/datamodel/SyncedFolder.java b/src/main/java/com/owncloud/android/datamodel/SyncedFolder.java index 24aaa1f3f785..8ae03dc40e7c 100644 --- a/src/main/java/com/owncloud/android/datamodel/SyncedFolder.java +++ b/src/main/java/com/owncloud/android/datamodel/SyncedFolder.java @@ -42,6 +42,7 @@ public class SyncedFolder implements Serializable, Cloneable { private String remotePath; private Boolean wifiOnly; private Boolean chargingOnly; + private Boolean existing; private Boolean subfolderByDate; private String account; private Integer uploadAction; @@ -62,12 +63,13 @@ public class SyncedFolder implements Serializable, Cloneable { * @param type the type of the folder */ public SyncedFolder(String localPath, String remotePath, Boolean wifiOnly, Boolean chargingOnly, - Boolean subfolderByDate, String account, Integer uploadAction, Boolean enabled, - MediaFolderType type) { + Boolean existing, Boolean subfolderByDate, String account, Integer uploadAction, + Boolean enabled,MediaFolderType type) { this.localPath = localPath; this.remotePath = remotePath; this.wifiOnly = wifiOnly; this.chargingOnly = chargingOnly; + this.existing = existing; this.subfolderByDate = subfolderByDate; this.account = account; this.uploadAction = uploadAction; diff --git a/src/main/java/com/owncloud/android/datamodel/SyncedFolderDisplayItem.java b/src/main/java/com/owncloud/android/datamodel/SyncedFolderDisplayItem.java index cac3df7a143b..6c03ddc7fe8d 100644 --- a/src/main/java/com/owncloud/android/datamodel/SyncedFolderDisplayItem.java +++ b/src/main/java/com/owncloud/android/datamodel/SyncedFolderDisplayItem.java @@ -45,6 +45,7 @@ public class SyncedFolderDisplayItem extends SyncedFolder { * @param remotePath remote path * @param wifiOnly upload on wifi only flag * @param chargingOnly upload on charging only + * @param existing also upload existing * @param subfolderByDate create sub-folders by date (month) * @param account the account owning the synced folder * @param uploadAction the action to be done after the upload @@ -55,19 +56,19 @@ public class SyncedFolderDisplayItem extends SyncedFolder { * @param type the type of the folder */ public SyncedFolderDisplayItem(long id, String localPath, String remotePath, Boolean wifiOnly, Boolean chargingOnly, - Boolean subfolderByDate, String account, Integer uploadAction, Boolean enabled, - List filePaths, String folderName, long numberOfFiles, MediaFolderType type) + Boolean existing, Boolean subfolderByDate, String account, Integer uploadAction, + Boolean enabled, List filePaths, String folderName, long numberOfFiles, MediaFolderType type) { - super(id, localPath, remotePath, wifiOnly, chargingOnly, subfolderByDate, account, uploadAction, enabled, type); + super(id, localPath, remotePath, wifiOnly, chargingOnly, existing, subfolderByDate, account, uploadAction, enabled, type); this.filePaths = filePaths; this.folderName = folderName; this.numberOfFiles = numberOfFiles; } public SyncedFolderDisplayItem(long id, String localPath, String remotePath, Boolean wifiOnly, Boolean chargingOnly, - Boolean subfolderByDate, String account, Integer uploadAction, Boolean enabled, - String folderName, MediaFolderType type) { - super(id, localPath, remotePath, wifiOnly, chargingOnly, subfolderByDate, account, uploadAction, enabled, type); + Boolean existing, Boolean subfolderByDate, String account, Integer uploadAction, + Boolean enabled, String folderName, MediaFolderType type) { + super(id, localPath, remotePath, wifiOnly, chargingOnly, existing, subfolderByDate, account, uploadAction, enabled, type); this.folderName = folderName; } } diff --git a/src/main/java/com/owncloud/android/datamodel/SyncedFolderProvider.java b/src/main/java/com/owncloud/android/datamodel/SyncedFolderProvider.java index 07712a9e3493..e9478ec0fbe9 100644 --- a/src/main/java/com/owncloud/android/datamodel/SyncedFolderProvider.java +++ b/src/main/java/com/owncloud/android/datamodel/SyncedFolderProvider.java @@ -339,6 +339,8 @@ private SyncedFolder createSyncedFolderFromCursor(Cursor cursor) { ProviderMeta.ProviderTableMeta.SYNCED_FOLDER_WIFI_ONLY)) == 1; Boolean chargingOnly = cursor.getInt(cursor.getColumnIndex( ProviderMeta.ProviderTableMeta.SYNCED_FOLDER_CHARGING_ONLY)) == 1; + Boolean existing = cursor.getInt(cursor.getColumnIndex( + ProviderMeta.ProviderTableMeta.SYNCED_FOLDER_EXISTING)) == 1; Boolean subfolderByDate = cursor.getInt(cursor.getColumnIndex( ProviderMeta.ProviderTableMeta.SYNCED_FOLDER_SUBFOLDER_BY_DATE)) == 1; String accountName = cursor.getString(cursor.getColumnIndex( @@ -350,8 +352,8 @@ private SyncedFolder createSyncedFolderFromCursor(Cursor cursor) { MediaFolderType type = MediaFolderType.getById(cursor.getInt(cursor.getColumnIndex( ProviderMeta.ProviderTableMeta.SYNCED_FOLDER_TYPE))); - syncedFolder = new SyncedFolder(id, localPath, remotePath, wifiOnly, chargingOnly, subfolderByDate, - accountName, uploadAction, enabled, type); + syncedFolder = new SyncedFolder(id, localPath, remotePath, wifiOnly, chargingOnly, existing, + subfolderByDate,accountName, uploadAction, enabled, type); } return syncedFolder; } @@ -369,6 +371,7 @@ private ContentValues createContentValuesFromSyncedFolder(SyncedFolder syncedFol cv.put(ProviderMeta.ProviderTableMeta.SYNCED_FOLDER_REMOTE_PATH, syncedFolder.getRemotePath()); cv.put(ProviderMeta.ProviderTableMeta.SYNCED_FOLDER_WIFI_ONLY, syncedFolder.getWifiOnly()); cv.put(ProviderMeta.ProviderTableMeta.SYNCED_FOLDER_CHARGING_ONLY, syncedFolder.getChargingOnly()); + cv.put(ProviderMeta.ProviderTableMeta.SYNCED_FOLDER_EXISTING, syncedFolder.getExisting()); cv.put(ProviderMeta.ProviderTableMeta.SYNCED_FOLDER_ENABLED, syncedFolder.isEnabled()); cv.put(ProviderMeta.ProviderTableMeta.SYNCED_FOLDER_SUBFOLDER_BY_DATE, syncedFolder.getSubfolderByDate()); cv.put(ProviderMeta.ProviderTableMeta.SYNCED_FOLDER_ACCOUNT, syncedFolder.getAccount()); diff --git a/src/main/java/com/owncloud/android/db/ProviderMeta.java b/src/main/java/com/owncloud/android/db/ProviderMeta.java index 093d36b9f2d8..d37c742c80cb 100644 --- a/src/main/java/com/owncloud/android/db/ProviderMeta.java +++ b/src/main/java/com/owncloud/android/db/ProviderMeta.java @@ -31,7 +31,7 @@ */ public class ProviderMeta { public static final String DB_NAME = "filelist"; - public static final int DB_VERSION = 49; + public static final int DB_VERSION = 50; private ProviderMeta() { // No instance @@ -219,6 +219,7 @@ static public class ProviderTableMeta implements BaseColumns { public static final String SYNCED_FOLDER_REMOTE_PATH = "remote_path"; public static final String SYNCED_FOLDER_WIFI_ONLY = "wifi_only"; public static final String SYNCED_FOLDER_CHARGING_ONLY = "charging_only"; + public static final String SYNCED_FOLDER_EXISTING = "existing"; public static final String SYNCED_FOLDER_ENABLED = "enabled"; public static final String SYNCED_FOLDER_TYPE = "type"; public static final String SYNCED_FOLDER_SUBFOLDER_BY_DATE = "subfolder_by_date"; diff --git a/src/main/java/com/owncloud/android/providers/FileContentProvider.java b/src/main/java/com/owncloud/android/providers/FileContentProvider.java index bcfe381e53ec..f1d3707435fb 100644 --- a/src/main/java/com/owncloud/android/providers/FileContentProvider.java +++ b/src/main/java/com/owncloud/android/providers/FileContentProvider.java @@ -2013,6 +2013,24 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (!upgraded) { Log_OC.i(SQL, String.format(Locale.ENGLISH, UPGRADE_VERSION_MSG, oldVersion, newVersion)); } + + if (oldVersion < 50 && newVersion >= 50) { + Log_OC.i(SQL, "Entering in the #50 add syned.existing"); + db.beginTransaction(); + try { + db.execSQL(ALTER_TABLE + ProviderTableMeta.SYNCED_FOLDERS_TABLE_NAME + + ADD_COLUMN + ProviderTableMeta.SYNCED_FOLDER_EXISTING + " INTEGER "); // boolean + + upgraded = true; + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + } + + if (!upgraded) { + Log_OC.i(SQL, String.format(Locale.ENGLISH, UPGRADE_VERSION_MSG, oldVersion, newVersion)); + } } @Override diff --git a/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.java b/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.java index 78ae76286888..262c84fc9b0c 100644 --- a/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.java @@ -41,6 +41,7 @@ import android.widget.LinearLayout; import android.widget.TextView; +import com.evernote.android.job.JobRequest; import com.nextcloud.client.device.PowerManagementService; import com.nextcloud.client.di.Injectable; import com.nextcloud.client.preferences.AppPreferences; @@ -56,6 +57,7 @@ import com.owncloud.android.datamodel.SyncedFolderDisplayItem; import com.owncloud.android.datamodel.SyncedFolderProvider; import com.owncloud.android.files.services.FileUploader; +import com.owncloud.android.jobs.FilesSyncJob; import com.owncloud.android.jobs.MediaFoldersDetectionJob; import com.owncloud.android.jobs.NotificationJob; import com.owncloud.android.ui.adapter.SyncedFolderAdapter; @@ -382,6 +384,7 @@ private SyncedFolderDisplayItem createSyncedFolderWithoutMediaFolder(@NonNull Sy syncedFolder.getRemotePath(), syncedFolder.getWifiOnly(), syncedFolder.getChargingOnly(), + syncedFolder.getExisting(), syncedFolder.getSubfolderByDate(), syncedFolder.getAccount(), syncedFolder.getUploadAction(), @@ -407,6 +410,7 @@ private SyncedFolderDisplayItem createSyncedFolder(@NonNull SyncedFolder syncedF syncedFolder.getRemotePath(), syncedFolder.getWifiOnly(), syncedFolder.getChargingOnly(), + syncedFolder.getExisting(), syncedFolder.getSubfolderByDate(), syncedFolder.getAccount(), syncedFolder.getUploadAction(), @@ -432,7 +436,8 @@ private SyncedFolderDisplayItem createSyncedFolderFromMediaFolder(@NonNull Media true, false, false, - getAccount().name, + false, + getAccount().name, FileUploader.LOCAL_BEHAVIOUR_FORGET, false, mediaFolder.filePaths, @@ -518,7 +523,7 @@ public boolean onOptionsItemSelected(MenuItem item) { Log.d(TAG, "Show custom folder dialog"); SyncedFolderDisplayItem emptyCustomFolder = new SyncedFolderDisplayItem( SyncedFolder.UNPERSISTED_ID, null, null, true, false, - false, getAccount().name, + false,false, getAccount().name, FileUploader.LOCAL_BEHAVIOUR_FORGET, false, null, MediaFolderType.CUSTOM); onSyncFolderSettingsClick(0, emptyCustomFolder); } @@ -608,51 +613,61 @@ public void onSaveSyncedFolderPreference(SyncedFolderParcelable syncedFolder) { if (MediaFolderType.CUSTOM == syncedFolder.getType() && syncedFolder.getId() == UNPERSISTED_ID) { SyncedFolderDisplayItem newCustomFolder = new SyncedFolderDisplayItem( SyncedFolder.UNPERSISTED_ID, syncedFolder.getLocalPath(), syncedFolder.getRemotePath(), - syncedFolder.getWifiOnly(), syncedFolder.getChargingOnly(), syncedFolder.getSubfolderByDate(), - syncedFolder.getAccount(), syncedFolder.getUploadAction(), syncedFolder.getEnabled(), - new File(syncedFolder.getLocalPath()).getName(), syncedFolder.getType()); + syncedFolder.getWifiOnly(), syncedFolder.getChargingOnly(), syncedFolder.getExisting(), + syncedFolder.getSubfolderByDate(), syncedFolder.getAccount(), syncedFolder.getUploadAction(), + syncedFolder.getEnabled(), new File(syncedFolder.getLocalPath()).getName(), syncedFolder.getType()); long storedId = mSyncedFolderProvider.storeSyncedFolder(newCustomFolder); if (storedId != -1) { newCustomFolder.setId(storedId); - if (newCustomFolder.isEnabled()) { - FilesSyncHelper.insertAllDBEntriesForSyncedFolder(newCustomFolder); - } else { + if (!newCustomFolder.isEnabled() || newCustomFolder.getExisting()) { String syncedFolderInitiatedKey = "syncedFolderIntitiated_" + newCustomFolder.getId(); arbitraryDataProvider.deleteKeyForAccount("global", syncedFolderInitiatedKey); } + if (newCustomFolder.isEnabled()) { + FilesSyncHelper.insertAllDBEntriesForSyncedFolder(newCustomFolder); + } } mAdapter.addSyncFolderItem(newCustomFolder); } else { SyncedFolderDisplayItem item = mAdapter.get(syncedFolder.getSection()); item = updateSyncedFolderItem(item, syncedFolder.getLocalPath(), syncedFolder.getRemotePath(), syncedFolder - .getWifiOnly(), syncedFolder.getChargingOnly(), syncedFolder.getSubfolderByDate(), syncedFolder - .getUploadAction(), syncedFolder.getEnabled()); + .getWifiOnly(), syncedFolder.getChargingOnly(), syncedFolder.getExisting(), syncedFolder.getSubfolderByDate(), + syncedFolder.getUploadAction(), syncedFolder.getEnabled()); if (syncedFolder.getId() == UNPERSISTED_ID) { // newly set up folder sync config long storedId = mSyncedFolderProvider.storeSyncedFolder(item); if (storedId != -1) { item.setId(storedId); - if (item.isEnabled()) { - FilesSyncHelper.insertAllDBEntriesForSyncedFolder(item); - } else { + if (!item.isEnabled() || item.getExisting()) { String syncedFolderInitiatedKey = "syncedFolderIntitiated_" + item.getId(); arbitraryDataProvider.deleteKeyForAccount("global", syncedFolderInitiatedKey); } + if (item.isEnabled()) { + FilesSyncHelper.insertAllDBEntriesForSyncedFolder(item); + } } } else { // existing synced folder setup to be updated mSyncedFolderProvider.updateSyncFolder(item); - if (item.isEnabled()) { - FilesSyncHelper.insertAllDBEntriesForSyncedFolder(item); - } else { + if (!item.isEnabled() || item.getExisting()) { String syncedFolderInitiatedKey = "syncedFolderIntitiated_" + item.getId(); arbitraryDataProvider.deleteKeyForAccount("global", syncedFolderInitiatedKey); } + if (item.isEnabled()) { + FilesSyncHelper.insertAllDBEntriesForSyncedFolder(item); + } } mAdapter.setSyncFolderItem(syncedFolder.getSection(), item); } + if (syncedFolder.getEnabled() && syncedFolder.getExisting()) { + new JobRequest.Builder(FilesSyncJob.TAG) + .setExact(1_000L) + .setUpdateCurrent(false) + .build() + .schedule(); + } mSyncedFolderPreferencesDialogFragment = null; @@ -680,6 +695,7 @@ public void onDeleteSyncedFolderPreference(SyncedFolderParcelable syncedFolder) * @param remotePath the remote path * @param wifiOnly upload on wifi only * @param chargingOnly upload on charging only + * @param existing also upload existing * @param subfolderByDate created sub folders * @param uploadAction upload action * @param enabled is sync enabled @@ -690,6 +706,7 @@ private SyncedFolderDisplayItem updateSyncedFolderItem(SyncedFolderDisplayItem i String remotePath, Boolean wifiOnly, Boolean chargingOnly, + Boolean existing, Boolean subfolderByDate, Integer uploadAction, Boolean enabled) { @@ -697,6 +714,7 @@ private SyncedFolderDisplayItem updateSyncedFolderItem(SyncedFolderDisplayItem i item.setRemotePath(remotePath); item.setWifiOnly(wifiOnly); item.setChargingOnly(chargingOnly); + item.setExisting(existing); item.setSubfolderByDate(subfolderByDate); item.setUploadAction(uploadAction); item.setEnabled(enabled); @@ -724,6 +742,7 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String permissi } } + @Override protected void onResume() { super.onResume(); diff --git a/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.java index b590d60e8214..d1ee84ddd7bb 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.java @@ -77,6 +77,7 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment { private SwitchCompat mEnabledSwitch; private AppCompatCheckBox mUploadOnWifiCheckbox; private AppCompatCheckBox mUploadOnChargingCheckbox; + private AppCompatCheckBox mUploadExistingCheckbox; private AppCompatCheckBox mUploadUseSubfoldersCheckbox; private TextView mUploadBehaviorSummary; private TextView mLocalFolderPath; @@ -189,6 +190,9 @@ private void setupDialogElements(View view) { ThemeUtils.tintCheckbox(mUploadOnChargingCheckbox, accentColor); } + mUploadExistingCheckbox = view.findViewById(R.id.setting_instant_upload_existing_checkbox); + ThemeUtils.tintCheckbox(mUploadExistingCheckbox, accentColor); + mUploadUseSubfoldersCheckbox = view.findViewById( R.id.setting_instant_upload_path_use_subfolders_checkbox); ThemeUtils.tintCheckbox(mUploadUseSubfoldersCheckbox, accentColor); @@ -227,6 +231,7 @@ private void setupDialogElements(View view) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { mUploadOnChargingCheckbox.setChecked(mSyncedFolder.getChargingOnly()); } + mUploadExistingCheckbox.setChecked(mSyncedFolder.getExisting()); mUploadUseSubfoldersCheckbox.setChecked(mSyncedFolder.getSubfolderByDate()); mUploadBehaviorSummary.setText(mUploadBehaviorItemStrings[mSyncedFolder.getUploadActionInteger()]); @@ -318,6 +323,9 @@ private void setupViews(View view, boolean enable) { view.findViewById(R.id.setting_instant_upload_on_charging_container).setAlpha(alpha); } + view.findViewById(R.id.setting_instant_upload_existing_container).setEnabled(enable); + view.findViewById(R.id.setting_instant_upload_existing_container).setAlpha(alpha); + view.findViewById(R.id.setting_instant_upload_path_use_subfolders_container).setEnabled(enable); view.findViewById(R.id.setting_instant_upload_path_use_subfolders_container).setAlpha(alpha); @@ -361,6 +369,15 @@ public void onClick(View v) { }); } + view.findViewById(R.id.setting_instant_upload_existing_container).setOnClickListener( + new OnClickListener() { + @Override + public void onClick(View v) { + mSyncedFolder.setExisting(!mSyncedFolder.getExisting()); + mUploadExistingCheckbox.toggle(); + } + }); + view.findViewById(R.id.setting_instant_upload_path_use_subfolders_container).setOnClickListener( new OnClickListener() { @Override diff --git a/src/main/java/com/owncloud/android/ui/dialog/parcel/SyncedFolderParcelable.java b/src/main/java/com/owncloud/android/ui/dialog/parcel/SyncedFolderParcelable.java index c435857cc961..374d8a6a780d 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/parcel/SyncedFolderParcelable.java +++ b/src/main/java/com/owncloud/android/ui/dialog/parcel/SyncedFolderParcelable.java @@ -39,6 +39,7 @@ public class SyncedFolderParcelable implements Parcelable { private String mRemotePath; private Boolean mWifiOnly = false; private Boolean mChargingOnly = false; + private Boolean mExisting = false; private Boolean mEnabled = false; private Boolean mSubfolderByDate = false; private Integer mUploadAction; @@ -54,6 +55,7 @@ public SyncedFolderParcelable(SyncedFolderDisplayItem syncedFolderDisplayItem, i mRemotePath = syncedFolderDisplayItem.getRemotePath(); mWifiOnly = syncedFolderDisplayItem.getWifiOnly(); mChargingOnly = syncedFolderDisplayItem.getChargingOnly(); + mExisting = syncedFolderDisplayItem.getExisting(); mEnabled = syncedFolderDisplayItem.isEnabled(); mSubfolderByDate = syncedFolderDisplayItem.getSubfolderByDate(); mType = syncedFolderDisplayItem.getType(); @@ -69,6 +71,7 @@ private SyncedFolderParcelable(Parcel read) { mRemotePath = read.readString(); mWifiOnly = read.readInt()!= 0; mChargingOnly = read.readInt() != 0; + mExisting = read.readInt() != 0; mEnabled = read.readInt() != 0; mSubfolderByDate = read.readInt() != 0; mType = MediaFolderType.getById(read.readInt()); @@ -85,6 +88,7 @@ public void writeToParcel(Parcel dest, int flags) { dest.writeString(mRemotePath); dest.writeInt(mWifiOnly ? 1 : 0); dest.writeInt(mChargingOnly ? 1 : 0); + dest.writeInt(mExisting ? 1 : 0); dest.writeInt(mEnabled ? 1 : 0); dest.writeInt(mSubfolderByDate ? 1 : 0); dest.writeInt(mType.getId()); @@ -152,6 +156,14 @@ public void setChargingOnly(Boolean mChargingOnly) { this.mChargingOnly = mChargingOnly; } + public Boolean getExisting() { + return mExisting; + } + + public void setExisting(Boolean mExisting) { + this.mExisting = mExisting; + } + public Boolean getEnabled() { return mEnabled; } diff --git a/src/main/java/com/owncloud/android/utils/FilesSyncHelper.java b/src/main/java/com/owncloud/android/utils/FilesSyncHelper.java index 9116a3d57067..057345059c13 100644 --- a/src/main/java/com/owncloud/android/utils/FilesSyncHelper.java +++ b/src/main/java/com/owncloud/android/utils/FilesSyncHelper.java @@ -86,9 +86,13 @@ public static void insertAllDBEntriesForSyncedFolder(SyncedFolder syncedFolder) final ContentResolver contentResolver = context.getContentResolver(); ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(contentResolver); - Long currentTime = System.currentTimeMillis(); - double currentTimeInSeconds = currentTime / 1000.0; - String currentTimeString = Long.toString((long) currentTimeInSeconds); + String currentTimeString = Long.toString(0); + if (!syncedFolder.getExisting()) + { + Long currentTime = System.currentTimeMillis(); + double currentTimeInSeconds = currentTime / 1000.0; + currentTimeString = Long.toString((long) currentTimeInSeconds); + } String syncedFolderInitiatedKey = SYNCEDFOLDERINITIATED + syncedFolder.getId(); boolean dryRun = TextUtils.isEmpty(arbitraryDataProvider.getValue diff --git a/src/main/res/layout/synced_folders_settings_layout.xml b/src/main/res/layout/synced_folders_settings_layout.xml index ec3f63993f23..0728f8129499 100644 --- a/src/main/res/layout/synced_folders_settings_layout.xml +++ b/src/main/res/layout/synced_folders_settings_layout.xml @@ -317,6 +317,56 @@ + + + + + + + + + + + + + + + + Only upload on unmetered Wi-Fi Only upload when charging + Also upload existing files /InstantUpload /AutoUpload File conflict From a5fed99e13b400f227617e4e48b4d3f16d3ee330 Mon Sep 17 00:00:00 2001 From: Alice Gaudon Date: Sat, 2 Nov 2019 21:49:42 +0100 Subject: [PATCH 2/4] Fix synced_folders_settings_layout.xml using the wrong switch widget class --- src/main/res/layout/synced_folders_settings_layout.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/res/layout/synced_folders_settings_layout.xml b/src/main/res/layout/synced_folders_settings_layout.xml index 0728f8129499..bc6b1f90721e 100644 --- a/src/main/res/layout/synced_folders_settings_layout.xml +++ b/src/main/res/layout/synced_folders_settings_layout.xml @@ -355,7 +355,7 @@ android:paddingRight="@dimen/zero" android:paddingEnd="@dimen/zero"> - Date: Sat, 2 Nov 2019 21:50:13 +0100 Subject: [PATCH 3/4] Fix a typo in SQL db upgrade version 50 logs --- .../com/owncloud/android/providers/FileContentProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/owncloud/android/providers/FileContentProvider.java b/src/main/java/com/owncloud/android/providers/FileContentProvider.java index f1d3707435fb..570ed64752b8 100644 --- a/src/main/java/com/owncloud/android/providers/FileContentProvider.java +++ b/src/main/java/com/owncloud/android/providers/FileContentProvider.java @@ -2015,7 +2015,7 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } if (oldVersion < 50 && newVersion >= 50) { - Log_OC.i(SQL, "Entering in the #50 add syned.existing"); + Log_OC.i(SQL, "Entering in the #50 add synced.existing"); db.beginTransaction(); try { db.execSQL(ALTER_TABLE + ProviderTableMeta.SYNCED_FOLDERS_TABLE_NAME + From dc31c931ada1da83879566a241bb8001ac358606 Mon Sep 17 00:00:00 2001 From: Alice Gaudon Date: Sat, 2 Nov 2019 21:51:17 +0100 Subject: [PATCH 4/4] Add `existing` field to db table synced folders creation --- .../java/com/owncloud/android/providers/FileContentProvider.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/owncloud/android/providers/FileContentProvider.java b/src/main/java/com/owncloud/android/providers/FileContentProvider.java index 570ed64752b8..5ea43f1320f8 100644 --- a/src/main/java/com/owncloud/android/providers/FileContentProvider.java +++ b/src/main/java/com/owncloud/android/providers/FileContentProvider.java @@ -821,6 +821,7 @@ private void createSyncedFoldersTable(SQLiteDatabase db) { + ProviderTableMeta.SYNCED_FOLDER_REMOTE_PATH + " TEXT, " // remote path + ProviderTableMeta.SYNCED_FOLDER_WIFI_ONLY + " INTEGER, " // wifi_only + ProviderTableMeta.SYNCED_FOLDER_CHARGING_ONLY + " INTEGER, " // charging only + + ProviderTableMeta.SYNCED_FOLDER_EXISTING + " INTEGER, " // existing + ProviderTableMeta.SYNCED_FOLDER_ENABLED + " INTEGER, " // enabled + ProviderTableMeta.SYNCED_FOLDER_SUBFOLDER_BY_DATE + " INTEGER, " // subfolder by date + ProviderTableMeta.SYNCED_FOLDER_ACCOUNT + " TEXT, " // account