diff --git a/build.gradle b/build.gradle index 3e127b947455..9370af38c0e7 100644 --- a/build.gradle +++ b/build.gradle @@ -33,7 +33,6 @@ configurations.all { } ext { - supportLibraryVersion = '28.0.0' jacocoVersion = "0.8.2" travisBuild = System.getenv("TRAVIS") == "true" @@ -82,7 +81,7 @@ android { minSdkVersion 14 targetSdkVersion 28 - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // arguments to be passed to functional tests testInstrumentationRunnerArgument "TEST_USER", "\"$System.env.OCTEST_APP_USERNAME\"" @@ -207,24 +206,24 @@ android { dependencies { // dependencies for app building - implementation 'com.android.support:multidex:1.0.3' + implementation 'androidx.multidex:multidex:2.0.0' // implementation project('nextcloud-android-library') genericImplementation 'com.github.nextcloud:android-library:master-SNAPSHOT' gplayImplementation 'com.github.nextcloud:android-library:master-SNAPSHOT' versionDevImplementation 'com.github.nextcloud:android-library:master-SNAPSHOT' - implementation 'com.android.support.constraint:constraint-layout:1.1.3' - implementation "com.android.support:support-v4:${supportLibraryVersion}" - implementation "com.android.support:design:${supportLibraryVersion}" + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'com.google.android.material:material:1.0.0' implementation 'com.jakewharton:disklrucache:2.0.2' - implementation "com.android.support:appcompat-v7:${supportLibraryVersion}" - implementation "com.android.support:cardview-v7:${supportLibraryVersion}" - implementation "com.android.support:exifinterface:${supportLibraryVersion}" + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.cardview:cardview:1.0.0' + implementation 'androidx.exifinterface:exifinterface:1.0.0' implementation 'com.github.albfernandez:juniversalchardet:2.0.0' // need this version for Android <7 implementation 'com.google.code.findbugs:annotations:2.0.1' implementation 'commons-io:commons-io:2.6' implementation 'com.github.evernote:android-job:v1.2.5' - implementation 'com.jakewharton:butterknife:8.8.1' - annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' + implementation 'com.jakewharton:butterknife:9.0.0-rc2' + annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-rc2' implementation 'org.greenrobot:eventbus:3.1.1' implementation 'com.googlecode.ez-vcard:ez-vcard:0.10.4' implementation 'org.lukhnos:nnio:0.2' @@ -235,12 +234,12 @@ dependencies { implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.15' implementation 'org.parceler:parceler-api:1.1.12' - annotationProcessor 'org.parceler:parceler:1.1.11' + annotationProcessor 'org.parceler:parceler:1.1.12' implementation('com.github.bumptech.glide:glide:3.7.0') { exclude group: "com.android.support" } implementation 'com.caverock:androidsvg:1.3' - implementation "com.android.support:support-annotations:${supportLibraryVersion}" + implementation 'androidx.annotation:annotation:1.0.1' implementation 'com.google.code.gson:gson:2.8.5' // dependencies for local unit tests @@ -248,15 +247,15 @@ dependencies { testImplementation 'org.mockito:mockito-core:2.23.4' // dependencies for instrumented tests // JUnit4 Rules - androidTestImplementation 'com.android.support.test:rules:1.0.2' + androidTestImplementation 'androidx.test:rules:1.1.0' // Android JUnit Runner - androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'androidx.test:runner:1.1.0' // Espresso core - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.1.0' // UIAutomator - for cross-app UI tests, and to grant screen is turned on in Espresso tests - androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3' + // androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0' // fix conflict in dependencies; see http://g.co/androidstudio/app-test-app-conflict for details //androidTestImplementation "com.android.support:support-annotations:${supportLibraryVersion}" implementation 'org.jetbrains:annotations:16.0.3' diff --git a/gradle.properties b/gradle.properties index 034d91da3847..753f5842be81 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,5 @@ # workaround since lombok and desugering have an issue # to be fixed with gradle Android plugin 3.3.0 android.enableD8.desugaring=false +android.enableJetifier=true +android.useAndroidX=true diff --git a/scripts/analysis/lint-results.txt b/scripts/analysis/lint-results.txt index bf24c5db3fdc..4bc2fbc3bd18 100644 --- a/scripts/analysis/lint-results.txt +++ b/scripts/analysis/lint-results.txt @@ -1,2 +1,2 @@ DO NOT TOUCH; GENERATED BY DRONE - Lint Report: 85 warnings + Lint Report: 84 warnings diff --git a/src/androidTest/AndroidManifest.xml b/src/androidTest/AndroidManifest.xml index 93c2f505ff67..2c4b207ad804 100644 --- a/src/androidTest/AndroidManifest.xml +++ b/src/androidTest/AndroidManifest.xml @@ -25,8 +25,8 @@ the normal release/debug builds. --> - - - \ No newline at end of file + + + + diff --git a/src/androidTest/disabledTests/screenshots/ScreenshotsIT.java b/src/androidTest/disabledTests/screenshots/ScreenshotsIT.java index d819c9dea36f..f1414844e826 100644 --- a/src/androidTest/disabledTests/screenshots/ScreenshotsIT.java +++ b/src/androidTest/disabledTests/screenshots/ScreenshotsIT.java @@ -1,11 +1,6 @@ package com.owncloud.android.screenshots; import android.content.Intent; -import android.support.test.espresso.Espresso; -import android.support.test.espresso.action.ViewActions; -import android.support.test.espresso.contrib.DrawerActions; -import android.support.test.espresso.matcher.PreferenceMatchers; -import android.support.test.rule.ActivityTestRule; import com.owncloud.android.R; import com.owncloud.android.ui.activity.FileDisplayActivity; @@ -20,15 +15,20 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import androidx.test.espresso.Espresso; +import androidx.test.espresso.action.ViewActions; +import androidx.test.espresso.contrib.DrawerActions; +import androidx.test.espresso.matcher.PreferenceMatchers; +import androidx.test.rule.ActivityTestRule; import tools.fastlane.screengrab.Screengrab; import tools.fastlane.screengrab.UiAutomatorScreenshotStrategy; import tools.fastlane.screengrab.locale.LocaleTestRule; -import static android.support.test.espresso.Espresso.onData; -import static android.support.test.espresso.Espresso.onView; -import static android.support.test.espresso.action.ViewActions.click; -import static android.support.test.espresso.matcher.ViewMatchers.withId; -import static android.support.test.espresso.matcher.ViewMatchers.withText; +import static androidx.test.espresso.Espresso.onData; +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.matcher.ViewMatchers.withId; +import static androidx.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.Matchers.anything; import static org.hamcrest.core.AnyOf.anyOf; diff --git a/src/androidTest/disabledTests/uiautomator/InitialTest.java b/src/androidTest/disabledTests/uiautomator/InitialTest.java index adb83e4e5c97..0a1cba99340b 100644 --- a/src/androidTest/disabledTests/uiautomator/InitialTest.java +++ b/src/androidTest/disabledTests/uiautomator/InitialTest.java @@ -21,18 +21,19 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; -import android.support.test.InstrumentationRegistry; -import android.support.test.filters.SdkSuppress; -import android.support.test.runner.AndroidJUnit4; -import android.support.test.uiautomator.UiDevice; -import android.support.test.uiautomator.UiObject; -import android.support.test.uiautomator.UiObjectNotFoundException; -import android.support.test.uiautomator.UiSelector; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SdkSuppress; +import androidx.test.runner.AndroidJUnit4; +import androidx.test.uiautomator.UiDevice; +import androidx.test.uiautomator.UiObject; +import androidx.test.uiautomator.UiObjectNotFoundException; +import androidx.test.uiautomator.UiSelector; + import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.assertThat; diff --git a/src/androidTest/java/com/owncloud/android/AbstractIT.java b/src/androidTest/java/com/owncloud/android/AbstractIT.java index 5db50cc951e5..7d6ac6d313a2 100644 --- a/src/androidTest/java/com/owncloud/android/AbstractIT.java +++ b/src/androidTest/java/com/owncloud/android/AbstractIT.java @@ -6,8 +6,6 @@ import android.accounts.OperationCanceledException; import android.content.ActivityNotFoundException; import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; @@ -22,6 +20,9 @@ import java.io.FileWriter; import java.io.IOException; +import androidx.test.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; + /** * Common base for all integration tests */ diff --git a/src/androidTest/java/com/owncloud/android/FileIT.java b/src/androidTest/java/com/owncloud/android/FileIT.java index 6901c3dc3bc4..67d87723e749 100644 --- a/src/androidTest/java/com/owncloud/android/FileIT.java +++ b/src/androidTest/java/com/owncloud/android/FileIT.java @@ -1,7 +1,5 @@ package com.owncloud.android; -import android.support.test.runner.AndroidJUnit4; - import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.operations.CreateFolderOperation; import com.owncloud.android.operations.common.SyncOperation; @@ -9,6 +7,8 @@ import org.junit.Test; import org.junit.runner.RunWith; +import androidx.test.runner.AndroidJUnit4; + import static junit.framework.TestCase.assertTrue; import static org.junit.Assert.assertNull; @@ -21,7 +21,7 @@ public class FileIT extends AbstractIT { @Test public void testCreateFolder() { String path = "/testFolder/"; - + // folder does not exist yet assertNull(getStorageManager().getFileByPath(path)); diff --git a/src/androidTest/java/com/owncloud/android/UploadIT.java b/src/androidTest/java/com/owncloud/android/UploadIT.java index 589878183a4d..9c6604311e7e 100644 --- a/src/androidTest/java/com/owncloud/android/UploadIT.java +++ b/src/androidTest/java/com/owncloud/android/UploadIT.java @@ -1,7 +1,5 @@ package com.owncloud.android; -import android.support.test.runner.AndroidJUnit4; - import com.owncloud.android.db.OCUpload; import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.lib.common.operations.RemoteOperationResult; @@ -11,6 +9,8 @@ import org.junit.Test; import org.junit.runner.RunWith; +import androidx.test.runner.AndroidJUnit4; + import static junit.framework.TestCase.assertTrue; /** diff --git a/src/androidTest/java/com/owncloud/android/datamodel/OCFileUnitTest.java b/src/androidTest/java/com/owncloud/android/datamodel/OCFileUnitTest.java index 3582e8991f66..9bd159fe7fa2 100644 --- a/src/androidTest/java/com/owncloud/android/datamodel/OCFileUnitTest.java +++ b/src/androidTest/java/com/owncloud/android/datamodel/OCFileUnitTest.java @@ -21,13 +21,14 @@ package com.owncloud.android.datamodel; import android.os.Parcel; -import android.support.test.filters.SmallTest; -import android.support.test.runner.AndroidJUnit4; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/src/androidTest/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java b/src/androidTest/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java index 823bedb45d52..b1c0edbc4181 100644 --- a/src/androidTest/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java +++ b/src/androidTest/java/com/owncloud/android/datamodel/UploadStorageManagerTest.java @@ -3,9 +3,6 @@ import android.accounts.Account; import android.content.ContentResolver; import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.filters.SmallTest; -import android.support.test.runner.AndroidJUnit4; import com.owncloud.android.db.OCUpload; @@ -17,6 +14,10 @@ import java.io.File; +import androidx.test.InstrumentationRegistry; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + /** * Created by JARP on 6/7/17. */ diff --git a/src/androidTest/java/com/owncloud/android/util/EncryptionTestIT.java b/src/androidTest/java/com/owncloud/android/util/EncryptionTestIT.java index 7cea75c02cbe..4524c35c0b8c 100644 --- a/src/androidTest/java/com/owncloud/android/util/EncryptionTestIT.java +++ b/src/androidTest/java/com/owncloud/android/util/EncryptionTestIT.java @@ -22,8 +22,6 @@ package com.owncloud.android.util; import android.os.Build; -import android.support.annotation.RequiresApi; -import android.support.test.runner.AndroidJUnit4; import com.google.gson.JsonElement; import com.google.gson.JsonParser; @@ -50,7 +48,10 @@ import java.util.HashSet; import java.util.Set; -import static android.support.test.InstrumentationRegistry.getInstrumentation; +import androidx.annotation.RequiresApi; +import androidx.test.runner.AndroidJUnit4; + +import static androidx.test.InstrumentationRegistry.getInstrumentation; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; import static org.junit.Assert.assertEquals; diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 942e64e1774e..18b1892ae220 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -200,7 +200,7 @@ diff --git a/src/main/java/com/owncloud/android/MainApp.java b/src/main/java/com/owncloud/android/MainApp.java index 35e1e7c29caa..72e650542e5c 100644 --- a/src/main/java/com/owncloud/android/MainApp.java +++ b/src/main/java/com/owncloud/android/MainApp.java @@ -35,11 +35,6 @@ import android.os.Bundle; import android.os.Environment; import android.os.StrictMode; -import android.support.annotation.RequiresApi; -import android.support.annotation.StringRes; -import android.support.multidex.MultiDexApplication; -import android.support.v4.util.Pair; -import android.support.v7.app.AlertDialog; import android.text.TextUtils; import android.view.WindowManager; @@ -81,6 +76,11 @@ import java.util.Map; import java.util.concurrent.TimeUnit; +import androidx.annotation.RequiresApi; +import androidx.annotation.StringRes; +import androidx.appcompat.app.AlertDialog; +import androidx.core.util.Pair; +import androidx.multidex.MultiDexApplication; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import static com.owncloud.android.ui.activity.ContactsPreferenceActivity.PREFERENCE_CONTACTS_AUTOMATIC_BACKUP; diff --git a/src/main/java/com/owncloud/android/authentication/AccountAuthenticatorActivity.java b/src/main/java/com/owncloud/android/authentication/AccountAuthenticatorActivity.java index e972682d6b5d..01373e4ffd09 100644 --- a/src/main/java/com/owncloud/android/authentication/AccountAuthenticatorActivity.java +++ b/src/main/java/com/owncloud/android/authentication/AccountAuthenticatorActivity.java @@ -19,16 +19,17 @@ import android.accounts.AccountAuthenticatorResponse; import android.accounts.AccountManager; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; + +import androidx.appcompat.app.AppCompatActivity; /* - * Base class for implementing an Activity that is used to help implement an AbstractAccountAuthenticator. - * If the AbstractAccountAuthenticator needs to use an activity to handle the request then it can have the activity extend + * Base class for implementing an Activity that is used to help implement an AbstractAccountAuthenticator. + * If the AbstractAccountAuthenticator needs to use an activity to handle the request then it can have the activity extend * AccountAuthenticatorActivity. The AbstractAccountAuthenticator passes in the response to the intent using the following: * intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); - * - * The activity then sets the result that is to be handed to the response via setAccountAuthenticatorResult(android.os.Bundle). - * This result will be sent as the result of the request when the activity finishes. If this is never set or if it is set to null + * + * The activity then sets the result that is to be handed to the response via setAccountAuthenticatorResult(android.os.Bundle). + * This result will be sent as the result of the request when the activity finishes. If this is never set or if it is set to null * then error AccountManager.ERROR_CODE_CANCELED will be called on the response. */ @@ -41,7 +42,7 @@ public class AccountAuthenticatorActivity extends AppCompatActivity { /** * Set the result that is to be sent as the result of the request that caused this Activity to be launched. * If result is null or this method is never called then the request will be canceled. - * + * * @param result this is returned as the result of the AbstractAccountAuthenticator request */ public final void setAccountAuthenticatorResult(Bundle result) { @@ -64,7 +65,7 @@ protected void onCreate(Bundle savedInstanceState) { mAccountAuthenticatorResponse.onRequestContinued(); } } - + /** * Sends the result or a Constants.ERROR_CODE_CANCELED error if a result isn't present. */ diff --git a/src/main/java/com/owncloud/android/authentication/AccountUtils.java b/src/main/java/com/owncloud/android/authentication/AccountUtils.java index 6e0186c4cfcb..12ba62f5e81a 100644 --- a/src/main/java/com/owncloud/android/authentication/AccountUtils.java +++ b/src/main/java/com/owncloud/android/authentication/AccountUtils.java @@ -24,8 +24,6 @@ import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import com.owncloud.android.MainApp; import com.owncloud.android.datamodel.ArbitraryDataProvider; @@ -33,6 +31,9 @@ import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.ui.activity.ManageAccountsActivity; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + /** * Helper class for dealing with accounts. */ diff --git a/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java b/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java index 53c2341657b7..2c05c8e6b9c8 100644 --- a/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -59,13 +59,6 @@ import android.os.Handler; import android.os.IBinder; import android.preference.PreferenceManager; -import android.support.annotation.Nullable; -import android.support.design.widget.Snackbar; -import android.support.design.widget.TextInputLayout; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; import android.text.Editable; import android.text.InputType; import android.text.TextUtils; @@ -90,6 +83,8 @@ import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; +import com.google.android.material.snackbar.Snackbar; +import com.google.android.material.textfield.TextInputLayout; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.SsoWebViewClient.SsoWebViewClientListener; @@ -132,6 +127,11 @@ import java.util.Locale; import java.util.Map; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; /** diff --git a/src/main/java/com/owncloud/android/datamodel/ExternalLinksProvider.java b/src/main/java/com/owncloud/android/datamodel/ExternalLinksProvider.java index 9884c7dbc2c1..b1b236c6c467 100644 --- a/src/main/java/com/owncloud/android/datamodel/ExternalLinksProvider.java +++ b/src/main/java/com/owncloud/android/datamodel/ExternalLinksProvider.java @@ -1,19 +1,19 @@ /* * Nextcloud Android client application - * + * * Copyright (C) 2017 Tobias Kaminsky * Copyright (C) 2017 Nextcloud. - * + * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * + * * You should have received a copy of the GNU Affero General Public * License along with this program. If not, see . */ @@ -23,7 +23,6 @@ import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; -import android.support.annotation.NonNull; import com.owncloud.android.db.ProviderMeta; import com.owncloud.android.lib.common.ExternalLink; @@ -33,6 +32,8 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.NonNull; + /** * Database provider for handling the persistence aspects of {@link com.owncloud.android.lib.common.ExternalLink}s. */ diff --git a/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java index 92dfdbfe47cc..a140fe04ced4 100644 --- a/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -33,7 +33,6 @@ import android.net.Uri; import android.os.RemoteException; import android.provider.MediaStore; -import android.support.annotation.Nullable; import android.text.TextUtils; import com.owncloud.android.MainApp; @@ -63,6 +62,7 @@ import java.util.Locale; import java.util.Set; +import androidx.annotation.Nullable; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/owncloud/android/datamodel/FileSystemDataSet.java b/src/main/java/com/owncloud/android/datamodel/FileSystemDataSet.java index b1aa000f3230..2bec65d0bd1a 100644 --- a/src/main/java/com/owncloud/android/datamodel/FileSystemDataSet.java +++ b/src/main/java/com/owncloud/android/datamodel/FileSystemDataSet.java @@ -22,8 +22,7 @@ */ package com.owncloud.android.datamodel; -import android.support.annotation.Nullable; - +import androidx.annotation.Nullable; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/src/main/java/com/owncloud/android/datamodel/MediaProvider.java b/src/main/java/com/owncloud/android/datamodel/MediaProvider.java index 7f4f82ac5399..8f8134fadde8 100644 --- a/src/main/java/com/owncloud/android/datamodel/MediaProvider.java +++ b/src/main/java/com/owncloud/android/datamodel/MediaProvider.java @@ -27,9 +27,9 @@ import android.database.Cursor; import android.net.Uri; import android.provider.MediaStore; -import android.support.design.widget.Snackbar; import android.util.Log; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.utils.PermissionUtil; @@ -185,8 +185,8 @@ public static List getVideoFolders(ContentResolver contentResolver, Manifest.permission.WRITE_EXTERNAL_STORAGE)) || getWithoutActivity) { cursorFolders = contentResolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, VIDEOS_FOLDER_PROJECTION, null, null, null); - } - + } + List mediaFolders = new ArrayList<>(); String dataPath = MainApp.getStoragePath() + File.separator + MainApp.getDataFolder(); diff --git a/src/main/java/com/owncloud/android/datamodel/OCFile.java b/src/main/java/com/owncloud/android/datamodel/OCFile.java index db36d7c5782f..db47a1eeeb8b 100644 --- a/src/main/java/com/owncloud/android/datamodel/OCFile.java +++ b/src/main/java/com/owncloud/android/datamodel/OCFile.java @@ -28,8 +28,6 @@ import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; -import android.support.annotation.NonNull; -import android.support.v4.content.FileProvider; import com.owncloud.android.R; import com.owncloud.android.lib.common.network.WebdavEntry; @@ -40,6 +38,8 @@ import java.io.File; +import androidx.annotation.NonNull; +import androidx.core.content.FileProvider; import lombok.Getter; import lombok.Setter; import third_parties.daveKoeller.AlphanumComparator; diff --git a/src/main/java/com/owncloud/android/datamodel/SyncedFolderProvider.java b/src/main/java/com/owncloud/android/datamodel/SyncedFolderProvider.java index cb00b4534b64..8c9f5a897708 100644 --- a/src/main/java/com/owncloud/android/datamodel/SyncedFolderProvider.java +++ b/src/main/java/com/owncloud/android/datamodel/SyncedFolderProvider.java @@ -26,7 +26,6 @@ import android.content.Context; import android.database.Cursor; import android.net.Uri; -import android.support.annotation.NonNull; import com.owncloud.android.db.PreferenceManager; import com.owncloud.android.db.ProviderMeta; @@ -37,6 +36,8 @@ import java.util.List; import java.util.Observable; +import androidx.annotation.NonNull; + /** * Database provider for handling the persistence aspects of {@link SyncedFolder}s. */ diff --git a/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java index 972b3d7ce750..8982715053c5 100644 --- a/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java +++ b/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java @@ -37,7 +37,6 @@ import android.net.Uri; import android.os.AsyncTask; import android.provider.MediaStore; -import android.support.annotation.Nullable; import android.text.TextUtils; import android.view.Display; import android.view.MenuItem; @@ -73,6 +72,7 @@ import java.net.URLEncoder; import java.util.List; +import androidx.annotation.Nullable; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; /** diff --git a/src/main/java/com/owncloud/android/datamodel/UploadsStorageManager.java b/src/main/java/com/owncloud/android/datamodel/UploadsStorageManager.java index e998f07f6b4e..55632dced999 100644 --- a/src/main/java/com/owncloud/android/datamodel/UploadsStorageManager.java +++ b/src/main/java/com/owncloud/android/datamodel/UploadsStorageManager.java @@ -26,7 +26,6 @@ import android.content.Context; import android.database.Cursor; import android.net.Uri; -import android.support.annotation.Nullable; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.db.OCUpload; @@ -40,6 +39,8 @@ import java.util.Calendar; import java.util.Observable; +import androidx.annotation.Nullable; + /** * Database helper for storing list of files to be uploaded, including status * information for each file. @@ -343,7 +344,7 @@ public OCUpload[] getCurrentAndPendingUploadsForCurrentAccount() { if (account != null) { return getUploads( - ProviderTableMeta.UPLOADS_STATUS + "==" + UploadStatus.UPLOAD_IN_PROGRESS.value + + ProviderTableMeta.UPLOADS_STATUS + "==" + UploadStatus.UPLOAD_IN_PROGRESS.value + " OR " + ProviderTableMeta.UPLOADS_LAST_RESULT + "==" + UploadResult.DELAYED_FOR_WIFI.getValue() + " OR " + ProviderTableMeta.UPLOADS_LAST_RESULT + @@ -353,8 +354,7 @@ public OCUpload[] getCurrentAndPendingUploadsForCurrentAccount() { " OR " + ProviderTableMeta.UPLOADS_LAST_RESULT + "==" + UploadResult.DELAYED_IN_POWER_SAVE_MODE.getValue() + " AND " + ProviderTableMeta.UPLOADS_ACCOUNT_NAME + "== ?", - new String[]{account.name} - ); + account.name); } else { return new OCUpload[0]; } @@ -375,7 +375,7 @@ public OCUpload[] getFailedUploads() { "==" + UploadResult.DELAYED_IN_POWER_SAVE_MODE.getValue() + " ) AND " + ProviderTableMeta.UPLOADS_LAST_RESULT + "!= " + UploadResult.VIRUS_DETECTED.getValue() - , new String[]{String.valueOf(UploadStatus.UPLOAD_FAILED.value)}); + , String.valueOf(UploadStatus.UPLOAD_FAILED.value)); } public OCUpload[] getFinishedUploadsForCurrentAccount() { @@ -383,7 +383,7 @@ public OCUpload[] getFinishedUploadsForCurrentAccount() { if (account != null) { return getUploads(ProviderTableMeta.UPLOADS_STATUS + "==" + UploadStatus.UPLOAD_SUCCEEDED.value + AND + - ProviderTableMeta.UPLOADS_ACCOUNT_NAME + "== ?", new String[]{account.name}); + ProviderTableMeta.UPLOADS_ACCOUNT_NAME + "== ?", account.name); } else { return new OCUpload[0]; } @@ -411,8 +411,7 @@ public OCUpload[] getFailedButNotDelayedUploadsForCurrentAccount() { AND + ProviderTableMeta.UPLOADS_LAST_RESULT + "<>" + UploadResult.DELAYED_IN_POWER_SAVE_MODE.getValue() + AND + ProviderTableMeta.UPLOADS_ACCOUNT_NAME + "== ?", - new String[]{account.name} - ); + account.name); } else { return new OCUpload[0]; } diff --git a/src/main/java/com/owncloud/android/files/services/FileDownloader.java b/src/main/java/com/owncloud/android/files/services/FileDownloader.java index c37a99e84006..406c454ddd78 100644 --- a/src/main/java/com/owncloud/android/files/services/FileDownloader.java +++ b/src/main/java/com/owncloud/android/files/services/FileDownloader.java @@ -36,7 +36,6 @@ import android.os.Looper; import android.os.Message; import android.os.Process; -import android.support.v4.app.NotificationCompat; import android.util.Pair; import com.owncloud.android.R; @@ -70,6 +69,8 @@ import java.util.Map; import java.util.Vector; +import androidx.core.app.NotificationCompat; + public class FileDownloader extends Service implements OnDatatransferProgressListener, OnAccountsUpdateListener { diff --git a/src/main/java/com/owncloud/android/files/services/FileUploader.java b/src/main/java/com/owncloud/android/files/services/FileUploader.java index 4a9409eca71a..2de3107a014f 100644 --- a/src/main/java/com/owncloud/android/files/services/FileUploader.java +++ b/src/main/java/com/owncloud/android/files/services/FileUploader.java @@ -42,7 +42,6 @@ import android.os.Message; import android.os.Parcelable; import android.os.Process; -import android.support.v4.app.NotificationCompat; import android.util.Pair; import com.evernote.android.job.JobRequest; @@ -84,6 +83,8 @@ import javax.annotation.Nullable; +import androidx.core.app.NotificationCompat; + /** * Service for uploading files. Invoke using context.startService(...). * @@ -525,7 +526,7 @@ public int onStartCommand(Intent intent, int flags, int startId) { Log_OC.d(TAG, "Starting command with id " + startId); startForeground(FOREGROUND_SERVICE_ID, mNotification); - + if (intent == null) { Log_OC.e(TAG, "Intent is null"); return Service.START_NOT_STICKY; @@ -1166,7 +1167,7 @@ private void notifyUploadStart(UploadFileOperation upload) { if (mNotificationManager == null) { mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); } - + mNotificationManager.notify(R.string.uploader_upload_in_progress_ticker, mNotificationBuilder.build()); } // else wait until the upload really start (onTransferProgress is called), so that if it's discarded // due to lack of Wifi, no notification is shown diff --git a/src/main/java/com/owncloud/android/jobs/AccountRemovalJob.java b/src/main/java/com/owncloud/android/jobs/AccountRemovalJob.java index f68ba2e11a01..37cef45aa0ba 100644 --- a/src/main/java/com/owncloud/android/jobs/AccountRemovalJob.java +++ b/src/main/java/com/owncloud/android/jobs/AccountRemovalJob.java @@ -26,7 +26,6 @@ import android.accounts.AccountManagerCallback; import android.accounts.AccountManagerFuture; import android.content.Context; -import android.support.annotation.NonNull; import com.evernote.android.job.Job; import com.evernote.android.job.util.support.PersistableBundleCompat; @@ -50,6 +49,8 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.NonNull; + import static android.content.Context.ACCOUNT_SERVICE; import static com.owncloud.android.ui.activity.ManageAccountsActivity.PENDING_FOR_REMOVAL; @@ -119,7 +120,7 @@ protected Result onRunJob(Params params) { filesystemDataProvider.deleteAllEntriesForSyncedFolder(Long.toString(syncedFolderId)); } - // delete stored E2E keys + // delete stored E2E keys arbitraryDataProvider.deleteKeyForAccount(account.name, EncryptionUtils.PRIVATE_KEY); arbitraryDataProvider.deleteKeyForAccount(account.name, EncryptionUtils.PUBLIC_KEY); diff --git a/src/main/java/com/owncloud/android/jobs/ContactsBackupJob.java b/src/main/java/com/owncloud/android/jobs/ContactsBackupJob.java index 08e4f116d9aa..7ad7db83e672 100644 --- a/src/main/java/com/owncloud/android/jobs/ContactsBackupJob.java +++ b/src/main/java/com/owncloud/android/jobs/ContactsBackupJob.java @@ -30,7 +30,6 @@ import android.net.Uri; import android.os.IBinder; import android.provider.ContactsContract; -import android.support.annotation.NonNull; import android.text.format.DateFormat; import com.evernote.android.job.Job; @@ -56,6 +55,8 @@ import java.util.Calendar; import java.util.List; +import androidx.annotation.NonNull; + /** * Job that backup contacts to /Contacts-Backup and deletes files older than x days */ diff --git a/src/main/java/com/owncloud/android/jobs/ContactsImportJob.java b/src/main/java/com/owncloud/android/jobs/ContactsImportJob.java index e82554d64703..43c285abc7c0 100644 --- a/src/main/java/com/owncloud/android/jobs/ContactsImportJob.java +++ b/src/main/java/com/owncloud/android/jobs/ContactsImportJob.java @@ -4,17 +4,17 @@ * @author Tobias Kaminsky * Copyright (C) 2017 Tobias Kaminsky * Copyright (C) 2017 Nextcloud GmbH. - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ @@ -24,7 +24,6 @@ import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract; -import android.support.annotation.NonNull; import com.evernote.android.job.Job; import com.evernote.android.job.util.support.PersistableBundleCompat; @@ -38,6 +37,7 @@ import java.util.Collections; import java.util.TreeMap; +import androidx.annotation.NonNull; import ezvcard.Ezvcard; import ezvcard.VCard; import third_parties.ezvcard_android.ContactOperations; diff --git a/src/main/java/com/owncloud/android/jobs/FilesSyncJob.java b/src/main/java/com/owncloud/android/jobs/FilesSyncJob.java index eec48a754f97..7c48fd97ab8a 100644 --- a/src/main/java/com/owncloud/android/jobs/FilesSyncJob.java +++ b/src/main/java/com/owncloud/android/jobs/FilesSyncJob.java @@ -27,8 +27,6 @@ import android.content.res.Resources; import android.os.Build; import android.os.PowerManager; -import android.support.annotation.NonNull; -import android.support.media.ExifInterface; import android.text.TextUtils; import com.evernote.android.job.Job; @@ -58,6 +56,9 @@ import java.util.Locale; import java.util.TimeZone; +import androidx.annotation.NonNull; +import androidx.exifinterface.media.ExifInterface; + /* Job that: - restarts existing jobs if required diff --git a/src/main/java/com/owncloud/android/jobs/MediaFoldersDetectionJob.java b/src/main/java/com/owncloud/android/jobs/MediaFoldersDetectionJob.java index 6282ddc53b2f..ae0add5fdc72 100644 --- a/src/main/java/com/owncloud/android/jobs/MediaFoldersDetectionJob.java +++ b/src/main/java/com/owncloud/android/jobs/MediaFoldersDetectionJob.java @@ -30,8 +30,6 @@ import android.content.Intent; import android.graphics.BitmapFactory; import android.media.RingtoneManager; -import android.support.annotation.NonNull; -import android.support.v4.app.NotificationCompat; import android.text.TextUtils; import com.evernote.android.job.Job; @@ -51,6 +49,9 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.NonNull; +import androidx.core.app.NotificationCompat; + public class MediaFoldersDetectionJob extends Job { public static final String TAG = "MediaFoldersDetectionJob"; @@ -110,9 +111,9 @@ protected Result onRunJob(@NonNull Params params) { if (syncedFolderProvider.findByLocalPathAndAccount(imageMediaFolder, account) == null) { sendNotification(String.format(context.getString(R.string.new_media_folder_detected), context.getString(R.string.new_media_folder_photos)), - imageMediaFolder.substring(imageMediaFolder.lastIndexOf('/') + 1, - imageMediaFolder.length()), - account, imageMediaFolder, 1); + imageMediaFolder.substring(imageMediaFolder.lastIndexOf('/') + 1 + ), + account, imageMediaFolder, 1); } } @@ -120,9 +121,9 @@ protected Result onRunJob(@NonNull Params params) { if (syncedFolderProvider.findByLocalPathAndAccount(videoMediaFolder, account) == null) { sendNotification(String.format(context.getString(R.string.new_media_folder_detected), context.getString(R.string.new_media_folder_videos)), - videoMediaFolder.substring(videoMediaFolder.lastIndexOf('/') + 1, - videoMediaFolder.length()), - account, videoMediaFolder, 2); + videoMediaFolder.substring(videoMediaFolder.lastIndexOf('/') + 1 + ), + account, videoMediaFolder, 2); } } } diff --git a/src/main/java/com/owncloud/android/jobs/NContentObserverJob.java b/src/main/java/com/owncloud/android/jobs/NContentObserverJob.java index 978d4aca28ea..1f2583c02ee8 100644 --- a/src/main/java/com/owncloud/android/jobs/NContentObserverJob.java +++ b/src/main/java/com/owncloud/android/jobs/NContentObserverJob.java @@ -24,7 +24,6 @@ import android.app.job.JobParameters; import android.app.job.JobService; import android.os.Build; -import android.support.annotation.RequiresApi; import com.evernote.android.job.JobRequest; import com.evernote.android.job.util.support.PersistableBundleCompat; @@ -32,6 +31,8 @@ import com.owncloud.android.utils.FilesSyncHelper; import com.owncloud.android.utils.PowerUtils; +import androidx.annotation.RequiresApi; + /* Job that triggers new FilesSyncJob in case new photo or video were detected and starts a job to find new media folders diff --git a/src/main/java/com/owncloud/android/jobs/NotificationJob.java b/src/main/java/com/owncloud/android/jobs/NotificationJob.java index 16d314b0bf1a..6b33aaccd0a4 100644 --- a/src/main/java/com/owncloud/android/jobs/NotificationJob.java +++ b/src/main/java/com/owncloud/android/jobs/NotificationJob.java @@ -27,8 +27,6 @@ import android.content.Intent; import android.graphics.BitmapFactory; import android.media.RingtoneManager; -import android.support.annotation.NonNull; -import android.support.v4.app.NotificationCompat; import android.text.TextUtils; import android.util.Base64; import android.util.Log; @@ -51,6 +49,9 @@ import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; +import androidx.annotation.NonNull; +import androidx.core.app.NotificationCompat; + public class NotificationJob extends Job { public static final String TAG = "NotificationJob"; diff --git a/src/main/java/com/owncloud/android/jobs/OfflineSyncJob.java b/src/main/java/com/owncloud/android/jobs/OfflineSyncJob.java index e7be487588c6..13bf770042be 100644 --- a/src/main/java/com/owncloud/android/jobs/OfflineSyncJob.java +++ b/src/main/java/com/owncloud/android/jobs/OfflineSyncJob.java @@ -25,7 +25,6 @@ import android.database.Cursor; import android.os.Build; import android.os.PowerManager; -import android.support.annotation.NonNull; import com.evernote.android.job.Job; import com.evernote.android.job.JobManager; @@ -46,6 +45,8 @@ import java.util.List; import java.util.Set; +import androidx.annotation.NonNull; + public class OfflineSyncJob extends Job { public static final String TAG = "OfflineSyncJob"; diff --git a/src/main/java/com/owncloud/android/media/MediaService.java b/src/main/java/com/owncloud/android/media/MediaService.java index a77202abed5e..9fc75e2d96d1 100644 --- a/src/main/java/com/owncloud/android/media/MediaService.java +++ b/src/main/java/com/owncloud/android/media/MediaService.java @@ -41,7 +41,6 @@ import android.os.AsyncTask; import android.os.IBinder; import android.os.PowerManager; -import android.support.v4.app.NotificationCompat; import android.widget.Toast; import com.owncloud.android.R; @@ -61,9 +60,11 @@ import java.io.IOException; import java.lang.ref.WeakReference; +import androidx.core.app.NotificationCompat; + /** - * Service that handles media playback, both audio and video. + * Service that handles media playback, both audio and video. * * Waits for Intents which signal the service to perform specific operations: Play, Pause, * Rewind, etc. @@ -181,14 +182,14 @@ public static String getMessageForMediaError(Context context, int what, int extr } else if (extra == MediaPlayer.MEDIA_ERROR_IO) { /* Added in API level 17 File or network related operation errors. - Constant Value: -1004 (0xfffffc14) + Constant Value: -1004 (0xfffffc14) */ messageId = R.string.media_err_io; } else if (extra == MediaPlayer.MEDIA_ERROR_MALFORMED) { /* Added in API level 17 Bitstream is not conforming to the related coding standard or file spec. - Constant Value: -1007 (0xfffffc11) + Constant Value: -1007 (0xfffffc11) */ messageId = R.string.media_err_malformed; @@ -217,7 +218,7 @@ public static String getMessageForMediaError(Context context, int what, int extr Added in API level 1 Media server died. In this case, the application must release the MediaPlayer object and instantiate a new one. - Constant Value: 100 (0x00000064) + Constant Value: 100 (0x00000064) */ messageId = R.string.media_err_unknown; } @@ -268,9 +269,9 @@ public int onStartCommand(Intent intent, int flags, int startId) { /** * Processes a request to play a media file received as a parameter * - * TODO If a new request is received when a file is being prepared, it is ignored. Is this what we want? + * TODO If a new request is received when a file is being prepared, it is ignored. Is this what we want? * - * @param intent Intent received in the request with the data to identify the file to play. + * @param intent Intent received in the request with the data to identify the file to play. */ private void processPlayFileRequest(Intent intent) { if (mState != State.PREPARING) { @@ -327,7 +328,7 @@ protected void createMediaPlayerIfNeeded() { } /** - * Processes a request to pause the current playback + * Processes a request to pause the current playback */ protected void processPauseRequest() { if (mState == State.PLAYING) { @@ -393,7 +394,7 @@ private void giveUpAudioFocus() { /** - * Reconfigures MediaPlayer according to audio focus settings and starts/restarts it. + * Reconfigures MediaPlayer according to audio focus settings and starts/restarts it. */ protected void configAndStartMediaPlayer() { if (mPlayer == null) { @@ -421,7 +422,7 @@ protected void configAndStartMediaPlayer() { /** - * Requests the audio focus to the Audio Manager + * Requests the audio focus to the Audio Manager */ private void tryToGetAudioFocus() { if (mAudioFocus != AudioFocus.FOCUS @@ -436,7 +437,7 @@ private void tryToGetAudioFocus() { /** - * Starts playing the current media file. + * Starts playing the current media file. */ protected void playMedia() { mState = State.STOPPED; @@ -501,7 +502,7 @@ public void onCompletion(MediaPlayer player) { /** - * Called when media player is done preparing. + * Called when media player is done preparing. * * Time to start. */ @@ -589,7 +590,7 @@ private void setUpAsForeground(String content) { } /** - * Called when there's an error playing media. + * Called when there's an error playing media. * * Warns the user about the error and resets the media player. */ @@ -646,7 +647,7 @@ public void onDestroy() { /** - * Provides a binder object that clients can use to perform operations on the MediaPlayer managed by the MediaService. + * Provides a binder object that clients can use to perform operations on the MediaPlayer managed by the MediaService. */ @Override public IBinder onBind(Intent arg) { @@ -671,7 +672,7 @@ public boolean onUnbind(Intent intent) { /** * Accesses the current MediaPlayer instance in the service. * - * To be handled carefully. Visibility is protected to be accessed only + * To be handled carefully. Visibility is protected to be accessed only * * @return Current MediaPlayer instance handled by MediaService. */ diff --git a/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java b/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java index f1b61b84d506..a71b9f32fa32 100644 --- a/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java +++ b/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java @@ -22,8 +22,6 @@ import android.accounts.Account; import android.content.Context; import android.content.Intent; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.util.Log; import com.owncloud.android.datamodel.DecryptedFolderMetadata; @@ -52,6 +50,9 @@ import java.util.Map; import java.util.Vector; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + /** * Remote operation performing the synchronization of the list of files contained diff --git a/src/main/java/com/owncloud/android/operations/RemoveRemoteEncryptedFileOperation.java b/src/main/java/com/owncloud/android/operations/RemoveRemoteEncryptedFileOperation.java index 605a6986bac1..deef4753304f 100644 --- a/src/main/java/com/owncloud/android/operations/RemoveRemoteEncryptedFileOperation.java +++ b/src/main/java/com/owncloud/android/operations/RemoveRemoteEncryptedFileOperation.java @@ -24,7 +24,6 @@ import android.accounts.Account; import android.content.Context; import android.os.Build; -import android.support.annotation.RequiresApi; import com.google.gson.reflect.TypeToken; import com.owncloud.android.datamodel.ArbitraryDataProvider; @@ -44,6 +43,8 @@ import org.apache.commons.httpclient.HttpStatus; import org.apache.jackrabbit.webdav.client.methods.DeleteMethod; +import androidx.annotation.RequiresApi; + /** * Remote operation performing the removal of a remote encrypted file or folder */ diff --git a/src/main/java/com/owncloud/android/operations/UploadFileOperation.java b/src/main/java/com/owncloud/android/operations/UploadFileOperation.java index 1aa507f9faeb..3bc642ff2047 100644 --- a/src/main/java/com/owncloud/android/operations/UploadFileOperation.java +++ b/src/main/java/com/owncloud/android/operations/UploadFileOperation.java @@ -24,7 +24,6 @@ import android.content.Context; import android.net.Uri; import android.os.Build; -import android.support.annotation.RequiresApi; import android.util.Log; import com.evernote.android.job.JobRequest; @@ -89,6 +88,8 @@ import java.util.UUID; import java.util.concurrent.atomic.AtomicBoolean; +import androidx.annotation.RequiresApi; + /** * Operation performing the update in the ownCloud server diff --git a/src/main/java/com/owncloud/android/providers/DiskLruImageCacheFileProvider.java b/src/main/java/com/owncloud/android/providers/DiskLruImageCacheFileProvider.java index 3759086b789d..8baabda7a392 100644 --- a/src/main/java/com/owncloud/android/providers/DiskLruImageCacheFileProvider.java +++ b/src/main/java/com/owncloud/android/providers/DiskLruImageCacheFileProvider.java @@ -30,7 +30,6 @@ import android.net.Uri; import android.os.ParcelFileDescriptor; import android.provider.OpenableColumns; -import android.support.annotation.NonNull; import com.owncloud.android.MainApp; import com.owncloud.android.authentication.AccountUtils; @@ -44,6 +43,8 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; +import androidx.annotation.NonNull; + public class DiskLruImageCacheFileProvider extends ContentProvider { public static final String TAG = DiskLruImageCacheFileProvider.class.getSimpleName(); diff --git a/src/main/java/com/owncloud/android/providers/FileContentProvider.java b/src/main/java/com/owncloud/android/providers/FileContentProvider.java index 0222ccfb574c..9b37f5098e7a 100644 --- a/src/main/java/com/owncloud/android/providers/FileContentProvider.java +++ b/src/main/java/com/owncloud/android/providers/FileContentProvider.java @@ -40,7 +40,6 @@ import android.database.sqlite.SQLiteQueryBuilder; import android.net.Uri; import android.os.Binder; -import android.support.annotation.NonNull; import android.text.TextUtils; import com.owncloud.android.MainApp; @@ -59,6 +58,8 @@ import java.util.HashMap; import java.util.Locale; +import androidx.annotation.NonNull; + /** * The ContentProvider for the ownCloud App. */ diff --git a/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java b/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java index 376e5b8dd92c..67d133f91e30 100644 --- a/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java +++ b/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java @@ -31,8 +31,6 @@ import android.os.Handler; import android.os.Looper; import android.provider.BaseColumns; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.widget.Toast; import com.owncloud.android.R; @@ -54,6 +52,9 @@ import java.util.Locale; import java.util.Map; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + /** * Content provider for search suggestions, to search for users and groups existing in an ownCloud server. @@ -104,7 +105,7 @@ public boolean onCreate() { if (getContext() == null) { return false; } - + AUTHORITY = getContext().getResources().getString(R.string.users_and_groups_search_authority); ACTION_SHARE_WITH = getContext().getResources().getString(R.string.users_and_groups_share_with); DATA_USER = AUTHORITY + ".data.user"; @@ -124,7 +125,7 @@ public boolean onCreate() { /** * returns sharee from server - * + * * Reference: http://developer.android.com/guide/topics/search/adding-custom-suggestions.html#CustomContentProvider * * @param uri Content {@link Uri}, formatted as diff --git a/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java b/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java index ef59b7ff3eb8..f52c22b2ce82 100644 --- a/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java +++ b/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java @@ -33,8 +33,6 @@ import android.content.Intent; import android.content.SyncResult; import android.os.Bundle; -import android.support.annotation.PluralsRes; -import android.support.v4.app.NotificationCompat; import com.owncloud.android.R; import com.owncloud.android.authentication.AuthenticatorActivity; @@ -59,10 +57,13 @@ import java.util.List; import java.util.Map; +import androidx.annotation.PluralsRes; +import androidx.core.app.NotificationCompat; + /** - * Implementation of {@link AbstractThreadedSyncAdapter} responsible for synchronizing + * Implementation of {@link AbstractThreadedSyncAdapter} responsible for synchronizing * ownCloud files. - * + * * Performs a full synchronization of the account received in {@link #onPerformSync(Account, Bundle, * String, ContentProviderClient, SyncResult)}. */ @@ -72,9 +73,9 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { /** Maximum number of failed folder synchronizations that are supported before finishing * the synchronization operation */ - private static final int MAX_FAILED_RESULTS = 3; - - + private static final int MAX_FAILED_RESULTS = 3; + + public static final String EVENT_FULL_SYNC_START = FileSyncAdapter.class.getName() + ".EVENT_FULL_SYNC_START"; public static final String EVENT_FULL_SYNC_END = FileSyncAdapter.class.getName() + @@ -90,22 +91,22 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { /** Time stamp for the current synchronization process, used to distinguish fresh data */ private long mCurrentSyncTime; - + /** Flag made 'true' when a request to cancel the synchronization is received */ private boolean mCancellation; /** Counter for failed operations in the synchronization process */ private int mFailedResultsCounter; - + /** Result of the last failed operation */ private RemoteOperationResult mLastFailedResult; - + /** Counter of conflicts found between local and remote files */ private int mConflictsFound; - + /** Counter of failed operations in synchronization of kept-in-sync files */ private int mFailsInFavouritesFound; - + /** Map of remote and local paths to files that where locally stored in a location out * of the ownCloud folder and couldn't be copied automatically into it */ private Map mForgottenLocalFiles; @@ -122,7 +123,7 @@ public FileSyncAdapter(Context context, boolean autoInitialize) { super(context, autoInitialize); } - + /** * Creates a {@link FileSyncAdapter} * @@ -132,7 +133,7 @@ public FileSyncAdapter(Context context, boolean autoInitialize, boolean allowPar super(context, autoInitialize, allowParallelSyncs); } - + /** * {@inheritDoc} */ @@ -154,7 +155,7 @@ public synchronized void onPerformSync(Account account, Bundle extras, this.setAccount(account); this.setContentProviderClient(providerClient); this.setStorageManager(new FileDataStorageManager(account, providerClient)); - + try { this.initClientForCurrentAccount(); } catch (IOException | AccountsException e) { @@ -177,22 +178,22 @@ public synchronized void onPerformSync(Account account, Bundle extras, mCurrentSyncTime = System.currentTimeMillis(); if (!mCancellation) { synchronizeFolder(getStorageManager().getFileByPath(OCFile.ROOT_PATH)); - + } else { Log_OC.d(TAG, "Leaving synchronization before synchronizing the root folder " + "because cancellation request"); } - + } finally { // it's important making this although very unexpected errors occur; // that's the reason for the finally - + if (mFailedResultsCounter > 0 && mIsManualSync) { /// don't let the system synchronization manager retries MANUAL synchronizations // (be careful: "MANUAL" currently includes the synchronization requested when // a new account is created and when the user changes the current account) mSyncResult.tooManyRetries = true; - + /// notify the user about the failure of MANUAL synchronization notifyFailedSynchronization(); } @@ -205,16 +206,16 @@ public synchronized void onPerformSync(Account account, Bundle extras, sendLocalBroadcast(EVENT_FULL_SYNC_END, null, mLastFailedResult); // message to signal // the end to the UI } - + } - + /** * Called by system SyncManager when a synchronization is required to be cancelled. - * - * Sets the mCancellation flag to 'true'. THe synchronization will be stopped later, - * before a new folder is fetched. Data of the last folder synchronized will be still - * locally saved. - * + * + * Sets the mCancellation flag to 'true'. THe synchronization will be stopped later, + * before a new folder is fetched. Data of the last folder synchronized will be still + * locally saved. + * * See {@link #onPerformSync(Account, Bundle, String, ContentProviderClient, SyncResult)} * and {@link #synchronizeFolder(OCFile)}. */ @@ -224,8 +225,8 @@ public void onSyncCanceled() { mCancellation = true; super.onSyncCanceled(); } - - + + /** * Updates the locally stored version value of the ownCloud server */ @@ -233,28 +234,28 @@ private void updateOCVersion() { UpdateOCVersionOperation update = new UpdateOCVersionOperation(getAccount(), getContext()); RemoteOperationResult result = update.execute(getClient()); if (!result.isSuccess()) { - mLastFailedResult = result; + mLastFailedResult = result; } } - - + + /** * Synchronizes the list of files contained in a folder identified with its remote path. - * - * Fetches the list and properties of the files contained in the given folder, including their + * + * Fetches the list and properties of the files contained in the given folder, including their * properties, and updates the local database with them. - * + * * Enters in the child folders to synchronize their contents also, following a recursive - * depth first strategy. - * + * depth first strategy. + * * @param folder Folder to synchronize. */ private void synchronizeFolder(OCFile folder) { - + if (mFailedResultsCounter > MAX_FAILED_RESULTS || isFinisher(mLastFailedResult)) { return; } - + // folder synchronization RefreshFolderOperation synchFolderOp = new RefreshFolderOperation( folder, mCurrentSyncTime, @@ -265,14 +266,14 @@ private void synchronizeFolder(OCFile folder) { getContext() ); RemoteOperationResult result = synchFolderOp.execute(getClient()); - - + + // synchronized folder -> notice to UI - ALWAYS, although !result.isSuccess sendLocalBroadcast(EVENT_FULL_SYNC_FOLDER_CONTENTS_SYNCED, folder.getRemotePath(), result); - + // check the result of synchronizing the folder if (result.isSuccess() || result.getCode() == ResultCode.SYNC_CONFLICT) { - + if (result.getCode() == ResultCode.SYNC_CONFLICT) { mConflictsFound += synchFolderOp.getConflictsFound(); mFailsInFavouritesFound += synchFolderOp.getFailsInKeptInSyncFound(); @@ -281,21 +282,21 @@ private void synchronizeFolder(OCFile folder) { mForgottenLocalFiles.putAll(synchFolderOp.getForgottenLocalFiles()); } if (result.isSuccess()) { - // synchronize children folders + // synchronize children folders List children = synchFolderOp.getChildren(); // beware of the 'hidden' recursion here! syncChildren(children); } - + } else if (result.getCode() != ResultCode.FILE_NOT_FOUND) { // in failures, the statistics for the global result are updated if (RemoteOperationResult.ResultCode.UNAUTHORIZED.equals(result.getCode())) { mSyncResult.stats.numAuthExceptions++; - + } else if (result.getException() instanceof DavException) { mSyncResult.stats.numParseExceptions++; - - } else if (result.getException() instanceof IOException) { + + } else if (result.getException() instanceof IOException) { mSyncResult.stats.numIoExceptions++; } mFailedResultsCounter++; @@ -304,13 +305,13 @@ private void synchronizeFolder(OCFile folder) { } // else, ResultCode.FILE_NOT_FOUND is ignored, remote folder was // removed from other thread or other client during the synchronization, // before this thread fetched its contents - + } /** * Checks if a failed result should terminate the synchronization process immediately, * according to OUR OWN POLICY - * + * * @param failedResult Remote operation result to check. * @return 'True' if the result should immediately finish the * synchronization @@ -331,7 +332,7 @@ private boolean isFinisher(RemoteOperationResult failedResult) { * * No consideration of etag here because it MUST walk down anyway, in case that kept-in-sync files * have local changes. - * + * * @param files Files to recursively synchronize. */ private void syncChildren(List files) { @@ -343,7 +344,7 @@ private void syncChildren(List files) { synchronizeFolder(newFile); } } - + if (mCancellation && i files) { } } - + /** * Sends a message to any application component interested in the progress of the * synchronization. - * - * @param event Event in the process of synchronization to be notified. + * + * @param event Event in the process of synchronization to be notified. * @param dirRemotePath Remote path of the folder target of the event occurred. * @param result Result of an individual {@link SynchronizeFolderOperation}, * if completed; may be null. @@ -382,10 +383,9 @@ private void sendLocalBroadcast(String event, String dirRemotePath, //LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent); } - - + /** - * Notifies the user about a failed synchronization through the status notification bar + * Notifies the user about a failed synchronization through the status notification bar */ private void notifyFailedSynchronization() { NotificationCompat.Builder notificationBuilder = createNotificationBuilder(); @@ -414,7 +414,7 @@ private void notifyFailedSynchronization() { .setContentTitle(i18n(R.string.sync_fail_ticker)) .setContentText(i18n(R.string.sync_fail_content, getAccount().name)); } - + showNotification(R.string.sync_fail_ticker, notificationBuilder); } @@ -422,14 +422,14 @@ private void notifyFailedSynchronization() { /** * Notifies the user about conflicts and strange fails when trying to synchronize the contents * of kept-in-sync files. - * + * * By now, we won't consider a failed synchronization. */ private void notifyFailsInFavourites() { if (mFailedResultsCounter > 0) { NotificationCompat.Builder notificationBuilder = createNotificationBuilder(); notificationBuilder.setTicker(i18n(R.string.sync_fail_in_favourites_ticker)); - + // TODO put something smart in the contentIntent below notificationBuilder .setContentIntent(PendingIntent.getActivity( @@ -442,12 +442,12 @@ private void notifyFailsInFavourites() { mFailedResultsCounter + mConflictsFound, mConflictsFound ) ); - + showNotification(R.string.sync_fail_in_favourites_ticker, notificationBuilder); } else { NotificationCompat.Builder notificationBuilder = createNotificationBuilder(); notificationBuilder.setTicker(i18n(R.string.sync_conflicts_in_favourites_ticker)); - + // TODO put something smart in the contentIntent below notificationBuilder .setContentIntent(PendingIntent.getActivity( @@ -455,26 +455,26 @@ private void notifyFailsInFavourites() { )) .setContentTitle(i18n(R.string.sync_conflicts_in_favourites_ticker)) .setContentText(i18n(R.string.sync_conflicts_in_favourites_ticker, mConflictsFound)); - + showNotification(R.string.sync_conflicts_in_favourites_ticker, notificationBuilder); - } + } } - + /** * Notifies the user about local copies of files out of the ownCloud local directory that * were 'forgotten' because copying them inside the ownCloud local directory was not possible. - * + * * We don't want links to files out of the ownCloud local directory (foreign files) anymore. * It's easy to have synchronization problems if a local file is linked to more than one * remote file. - * + * * We won't consider a synchronization as failed when foreign files can not be copied to * the ownCloud local directory. */ private void notifyForgottenLocalFiles() { NotificationCompat.Builder notificationBuilder = createNotificationBuilder(); notificationBuilder.setTicker(i18n(R.string.sync_foreign_files_forgotten_ticker)); - + /// includes a pending intent in the notification showing a more detailed explanation Intent explanationIntent = new Intent(getContext(), ErrorsWhileCopyingHandlerActivity.class); explanationIntent.putExtra(ErrorsWhileCopyingHandlerActivity.EXTRA_ACCOUNT, getAccount()); @@ -483,9 +483,9 @@ private void notifyForgottenLocalFiles() { remotePaths.addAll(mForgottenLocalFiles.keySet()); localPaths.addAll(mForgottenLocalFiles.values()); explanationIntent.putExtra(ErrorsWhileCopyingHandlerActivity.EXTRA_LOCAL_PATHS, localPaths); - explanationIntent.putExtra(ErrorsWhileCopyingHandlerActivity.EXTRA_REMOTE_PATHS, remotePaths); + explanationIntent.putExtra(ErrorsWhileCopyingHandlerActivity.EXTRA_REMOTE_PATHS, remotePaths); explanationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - + notificationBuilder .setContentIntent(PendingIntent.getActivity( getContext(), (int) System.currentTimeMillis(), explanationIntent, 0 @@ -497,13 +497,13 @@ private void notifyForgottenLocalFiles() { mForgottenLocalFiles.size(), i18n(R.string.app_name)) ); - + showNotification(R.string.sync_foreign_files_forgotten_ticker, notificationBuilder); } - + /** * Creates a notification builder with some commonly used settings - * + * * @return notification builder */ private NotificationCompat.Builder createNotificationBuilder() { @@ -512,10 +512,10 @@ private NotificationCompat.Builder createNotificationBuilder() { notificationBuilder.setColor(ThemeUtils.primaryColor(getContext(), true)); return notificationBuilder; } - + /** * Builds and shows the notification - * + * * @param id * @param builder */ @@ -531,7 +531,7 @@ private void showNotification(int id, NotificationCompat.Builder builder) { } /** * Shorthand translation - * + * * @param key * @param args * @return diff --git a/src/main/java/com/owncloud/android/ui/EmptyRecyclerView.java b/src/main/java/com/owncloud/android/ui/EmptyRecyclerView.java index b0a47206d172..34b4897d2bfe 100644 --- a/src/main/java/com/owncloud/android/ui/EmptyRecyclerView.java +++ b/src/main/java/com/owncloud/android/ui/EmptyRecyclerView.java @@ -22,11 +22,12 @@ package com.owncloud.android.ui; import android.content.Context; -import android.support.annotation.Nullable; -import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; import android.view.View; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; + /** * Extends RecyclerView to show a custom view if no data is available * Inspired by http://alexzh.com/tutorials/how-to-setemptyview-to-recyclerview diff --git a/src/main/java/com/owncloud/android/ui/SquareImageView.java b/src/main/java/com/owncloud/android/ui/SquareImageView.java index e0e1714edac1..997c276861c1 100644 --- a/src/main/java/com/owncloud/android/ui/SquareImageView.java +++ b/src/main/java/com/owncloud/android/ui/SquareImageView.java @@ -19,9 +19,10 @@ package com.owncloud.android.ui; import android.content.Context; -import android.support.v7.widget.AppCompatImageView; import android.util.AttributeSet; +import androidx.appcompat.widget.AppCompatImageView; + public class SquareImageView extends AppCompatImageView { public SquareImageView(Context context) { diff --git a/src/main/java/com/owncloud/android/ui/TextDrawable.java b/src/main/java/com/owncloud/android/ui/TextDrawable.java index f66a088ef55f..1a59cb046a0e 100644 --- a/src/main/java/com/owncloud/android/ui/TextDrawable.java +++ b/src/main/java/com/owncloud/android/ui/TextDrawable.java @@ -27,7 +27,6 @@ import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; -import android.support.annotation.NonNull; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.utils.BitmapUtils; @@ -37,6 +36,8 @@ import java.security.NoSuchAlgorithmException; import java.util.Locale; +import androidx.annotation.NonNull; + /** * A Drawable object that draws text (1 character) on top of a circular/filled background. */ diff --git a/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.java b/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.java index 5208568713fd..afdaf7ec901e 100644 --- a/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.java +++ b/src/main/java/com/owncloud/android/ui/ThemeableSwitchPreference.java @@ -25,8 +25,6 @@ import android.graphics.Color; import android.os.Build; import android.preference.SwitchPreference; -import android.support.annotation.RequiresApi; -import android.support.v4.graphics.drawable.DrawableCompat; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; @@ -34,6 +32,9 @@ import com.owncloud.android.utils.ThemeUtils; +import androidx.annotation.RequiresApi; +import androidx.core.graphics.drawable.DrawableCompat; + /** * Themeable switch preference diff --git a/src/main/java/com/owncloud/android/ui/activities/ActivitiesActivity.java b/src/main/java/com/owncloud/android/ui/activities/ActivitiesActivity.java index 50edf2ba90f8..cecb696336e4 100644 --- a/src/main/java/com/owncloud/android/ui/activities/ActivitiesActivity.java +++ b/src/main/java/com/owncloud/android/ui/activities/ActivitiesActivity.java @@ -21,12 +21,6 @@ import android.content.Intent; import android.graphics.PorterDuff; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.design.widget.BottomNavigationView; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; @@ -35,6 +29,7 @@ import android.widget.TextView; import android.widget.Toast; +import com.google.android.material.bottomnavigation.BottomNavigationView; import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; @@ -54,6 +49,11 @@ import java.util.List; +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import butterknife.BindString; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/src/main/java/com/owncloud/android/ui/activities/ActivitiesPresenter.java b/src/main/java/com/owncloud/android/ui/activities/ActivitiesPresenter.java index a7f288464fd1..ccd749837938 100644 --- a/src/main/java/com/owncloud/android/ui/activities/ActivitiesPresenter.java +++ b/src/main/java/com/owncloud/android/ui/activities/ActivitiesPresenter.java @@ -19,9 +19,6 @@ package com.owncloud.android.ui.activities; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; - import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.ui.activities.data.activities.ActivitiesRepository; @@ -30,6 +27,9 @@ import java.util.List; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + public class ActivitiesPresenter implements ActivitiesContract.ActionListener { private final ActivitiesContract.View activitiesView; diff --git a/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesRepository.java b/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesRepository.java index a144a4185e15..efa19ac61f99 100644 --- a/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesRepository.java +++ b/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesRepository.java @@ -18,12 +18,12 @@ */ package com.owncloud.android.ui.activities.data.activities; -import android.support.annotation.NonNull; - import com.owncloud.android.lib.common.OwnCloudClient; import java.util.List; +import androidx.annotation.NonNull; + /** * Main entry point for accessing activities data. */ diff --git a/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivityRepositories.java b/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivityRepositories.java index cad7c0ec8712..8949b17196b2 100644 --- a/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivityRepositories.java +++ b/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivityRepositories.java @@ -18,7 +18,7 @@ */ package com.owncloud.android.ui.activities.data.activities; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; public class ActivityRepositories { diff --git a/src/main/java/com/owncloud/android/ui/activities/data/activities/RemoteActivitiesRepository.java b/src/main/java/com/owncloud/android/ui/activities/data/activities/RemoteActivitiesRepository.java index 6e616d11489e..71f058c840be 100644 --- a/src/main/java/com/owncloud/android/ui/activities/data/activities/RemoteActivitiesRepository.java +++ b/src/main/java/com/owncloud/android/ui/activities/data/activities/RemoteActivitiesRepository.java @@ -18,12 +18,12 @@ */ package com.owncloud.android.ui.activities.data.activities; -import android.support.annotation.NonNull; - import com.owncloud.android.lib.common.OwnCloudClient; import java.util.List; +import androidx.annotation.NonNull; + public class RemoteActivitiesRepository implements ActivitiesRepository { private final ActivitiesServiceApi activitiesServiceApi; diff --git a/src/main/java/com/owncloud/android/ui/activities/data/files/FileRepositories.java b/src/main/java/com/owncloud/android/ui/activities/data/files/FileRepositories.java index f08a45680076..5c6d51ca877d 100644 --- a/src/main/java/com/owncloud/android/ui/activities/data/files/FileRepositories.java +++ b/src/main/java/com/owncloud/android/ui/activities/data/files/FileRepositories.java @@ -18,7 +18,7 @@ */ package com.owncloud.android.ui.activities.data.files; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; public class FileRepositories { diff --git a/src/main/java/com/owncloud/android/ui/activities/data/files/FilesRepository.java b/src/main/java/com/owncloud/android/ui/activities/data/files/FilesRepository.java index 612c81133f62..951e59ec851c 100644 --- a/src/main/java/com/owncloud/android/ui/activities/data/files/FilesRepository.java +++ b/src/main/java/com/owncloud/android/ui/activities/data/files/FilesRepository.java @@ -18,12 +18,12 @@ */ package com.owncloud.android.ui.activities.data.files; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; - import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.ui.activity.BaseActivity; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + /** * Main entry point for accessing remote files */ diff --git a/src/main/java/com/owncloud/android/ui/activities/data/files/RemoteFilesRepository.java b/src/main/java/com/owncloud/android/ui/activities/data/files/RemoteFilesRepository.java index 11bb170e61c9..992a69dd846f 100644 --- a/src/main/java/com/owncloud/android/ui/activities/data/files/RemoteFilesRepository.java +++ b/src/main/java/com/owncloud/android/ui/activities/data/files/RemoteFilesRepository.java @@ -18,11 +18,11 @@ */ package com.owncloud.android.ui.activities.data.files; -import android.support.annotation.NonNull; - import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.ui.activity.BaseActivity; +import androidx.annotation.NonNull; + class RemoteFilesRepository implements FilesRepository { private final FilesServiceApi filesServiceApi; diff --git a/src/main/java/com/owncloud/android/ui/activity/BaseActivity.java b/src/main/java/com/owncloud/android/ui/activity/BaseActivity.java index 6375ca6f22c6..fc242b2170fd 100644 --- a/src/main/java/com/owncloud/android/ui/activity/BaseActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/BaseActivity.java @@ -8,7 +8,6 @@ import android.content.Intent; import android.os.Bundle; import android.os.Handler; -import android.support.v7.app.AppCompatActivity; import com.owncloud.android.MainApp; import com.owncloud.android.authentication.AccountUtils; @@ -17,6 +16,8 @@ import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.status.OCCapability; +import androidx.appcompat.app.AppCompatActivity; + /** * Base activity with common behaviour for activities dealing with ownCloud {@link Account}s . */ diff --git a/src/main/java/com/owncloud/android/ui/activity/ContactsPreferenceActivity.java b/src/main/java/com/owncloud/android/ui/activity/ContactsPreferenceActivity.java index 0959ad828735..6d527ac5b82c 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ContactsPreferenceActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ContactsPreferenceActivity.java @@ -4,17 +4,17 @@ * @author Tobias Kaminsky * Copyright (C) 2017 Tobias Kaminsky * Copyright (C) 2017 Nextcloud GmbH. - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. - * + * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ @@ -25,15 +25,12 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.design.widget.BottomNavigationView; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.widget.DrawerLayout; import android.view.View; import com.evernote.android.job.JobManager; import com.evernote.android.job.JobRequest; import com.evernote.android.job.util.support.PersistableBundleCompat; +import com.google.android.material.bottomnavigation.BottomNavigationView; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; @@ -48,6 +45,10 @@ import java.util.Set; +import androidx.drawerlayout.widget.DrawerLayout; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + /** * This activity shows all settings for contact backup/restore */ @@ -79,7 +80,7 @@ protected void onCreate(Bundle savedInstanceState) { if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } - + if (mDrawerToggle != null) { mDrawerToggle.setDrawerIndicatorEnabled(false); } @@ -193,4 +194,4 @@ public void onBackPressed() { finish(); } } -} \ No newline at end of file +} diff --git a/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java b/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java index f50c4abb40db..dfcd17073517 100644 --- a/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java @@ -38,12 +38,6 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; -import android.support.annotation.NonNull; -import android.support.design.widget.NavigationView; -import android.support.v4.view.GravityCompat; -import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.ActionBarDrawerToggle; -import android.support.v7.graphics.drawable.DrawerArrowDrawable; import android.text.Html; import android.text.TextUtils; import android.view.Menu; @@ -59,6 +53,7 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; +import com.google.android.material.navigation.NavigationView; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -106,6 +101,12 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBarDrawerToggle; +import androidx.appcompat.graphics.drawable.DrawerArrowDrawable; +import androidx.core.view.GravityCompat; +import androidx.drawerlayout.widget.DrawerLayout; + /** * Base class to handle setup of the drawer implementation including user switching and avatar fetching and fallback * generation. diff --git a/src/main/java/com/owncloud/android/ui/activity/ErrorsWhileCopyingHandlerActivity.java b/src/main/java/com/owncloud/android/ui/activity/ErrorsWhileCopyingHandlerActivity.java index 06fe9d21588b..286214fb829b 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ErrorsWhileCopyingHandlerActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ErrorsWhileCopyingHandlerActivity.java @@ -26,9 +26,6 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; -import android.support.annotation.NonNull; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AppCompatActivity; import android.text.method.ScrollingMovementMethod; import android.view.LayoutInflater; import android.view.View; @@ -50,14 +47,18 @@ import java.io.File; import java.util.List; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.DialogFragment; + /** * Activity reporting errors occurred when local files uploaded to an ownCloud account with an app * in version under 1.3.16 where being copied to the ownCloud local folder. - * + * * Allows the user move the files to the ownCloud local folder. let them unlinked to the remote * files. - * + * * Shown when the error notification summarizing the list of errors is clicked by the user. */ public class ErrorsWhileCopyingHandlerActivity extends AppCompatActivity implements OnClickListener { @@ -72,7 +73,7 @@ public class ErrorsWhileCopyingHandlerActivity extends AppCompatActivity implem ErrorsWhileCopyingHandlerActivity.class.getCanonicalName() + ".EXTRA_REMOTE_PATHS"; private static final String WAIT_DIALOG_TAG = "WAIT_DIALOG"; - + protected Account mAccount; protected FileDataStorageManager mStorageManager; protected List mLocalPaths; @@ -80,7 +81,7 @@ public class ErrorsWhileCopyingHandlerActivity extends AppCompatActivity implem protected ArrayAdapter mAdapter; protected Handler mHandler; private DialogFragment mCurrentDialog; - + /** * {@link} */ @@ -99,20 +100,20 @@ protected void onCreate(Bundle savedInstanceState) { mCurrentDialog.dismiss(); mCurrentDialog = null; } - + /// load generic layout setContentView(R.layout.generic_explanation); - + /// customize text message - TextView textView = (TextView) findViewById(R.id.message); + TextView textView = findViewById(R.id.message); String appName = getString(R.string.app_name); String message = String.format(getString(R.string.sync_foreign_files_forgotten_explanation), appName, appName, appName, appName, mAccount.name); textView.setText(message); textView.setMovementMethod(new ScrollingMovementMethod()); - + /// load the list of local and remote files that failed - ListView listView = (ListView) findViewById(R.id.list); + ListView listView = findViewById(R.id.list); if (mLocalPaths != null && mLocalPaths.size() > 0) { mAdapter = new ErrorsWhileCopyingListAdapter(); listView.setAdapter(mAdapter); @@ -120,11 +121,11 @@ protected void onCreate(Bundle savedInstanceState) { listView.setVisibility(View.GONE); mAdapter = null; } - + /// customize buttons - Button cancelBtn = (Button) findViewById(R.id.cancel); - Button okBtn = (Button) findViewById(R.id.ok); - + Button cancelBtn = findViewById(R.id.cancel); + Button okBtn = findViewById(R.id.ok); + okBtn.setText(R.string.foreign_files_move); cancelBtn.setOnClickListener(this); okBtn.setOnClickListener(this); @@ -135,7 +136,7 @@ protected void onCreate(Bundle savedInstanceState) { * remote files as the secondary text. */ public class ErrorsWhileCopyingListAdapter extends ArrayAdapter { - + ErrorsWhileCopyingListAdapter() { super(ErrorsWhileCopyingHandlerActivity.this, android.R.layout.two_line_list_item, android.R.id.text1, mLocalPaths); @@ -145,8 +146,8 @@ public class ErrorsWhileCopyingListAdapter extends ArrayAdapter { public boolean isEnabled(int position) { return false; } - - /** + + /** * {@inheritDoc} */ @Override @@ -160,14 +161,14 @@ public View getView (int position, View convertView, @NonNull ViewGroup parent) if (view != null) { String localPath = getItem(position); if (localPath != null) { - TextView text1 = (TextView) view.findViewById(android.R.id.text1); + TextView text1 = view.findViewById(android.R.id.text1); if (text1 != null) { text1.setText(String.format(getString(R.string.foreign_files_local_text), localPath)); } } if (mRemotePaths != null && mRemotePaths.size() > 0 && position >= 0 && position < mRemotePaths.size()) { - TextView text2 = (TextView) view.findViewById(android.R.id.text2); + TextView text2 = view.findViewById(android.R.id.text2); String remotePath = mRemotePaths.get(position); if (text2 != null && remotePath != null) { text2.setText(String.format(getString(R.string.foreign_files_remote_text), remotePath)); @@ -181,7 +182,7 @@ public View getView (int position, View convertView, @NonNull ViewGroup parent) /** * Listener method to perform the MOVE / CANCEL action available in this activity. - * + * * @param v Clicked view (button MOVE or CANCEL) */ @Override @@ -189,19 +190,19 @@ public void onClick(View v) { if (v.getId() == R.id.ok) { /// perform movement operation in background thread Log_OC.d(TAG, "Clicked MOVE, start movement"); - new MoveFilesTask().execute(); - + new MoveFilesTask().execute(); + } else if (v.getId() == R.id.cancel) { /// just finish Log_OC.d(TAG, "Clicked CANCEL, bye"); finish(); - + } else { Log_OC.e(TAG, "Clicked phantom button, id: " + v.getId()); } } - + /** * Asynchronous task performing the move of all the local files to the ownCloud folder. */ @@ -217,11 +218,11 @@ protected void onPreExecute () { mCurrentDialog.show(getSupportFragmentManager(), WAIT_DIALOG_TAG); findViewById(R.id.ok).setEnabled(false); } - - + + /** * Performs the movement - * + * * @return 'False' when the movement of any file fails. */ @Override @@ -239,10 +240,10 @@ protected Boolean doInBackground(Void... params) { mStorageManager.saveFile(file); mRemotePaths.remove(0); mLocalPaths.remove(0); - + } else { // FAIL - return false; + return false; } } return true; @@ -263,7 +264,7 @@ protected void onPostExecute(Boolean result) { mCurrentDialog.dismiss(); mCurrentDialog = null; findViewById(R.id.ok).setEnabled(true); - + if (result) { // nothing else to do in this activity DisplayUtils.showSnackMessage(findViewById(android.R.id.content), R.string.foreign_files_success); diff --git a/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java b/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java index 45b0635eefc3..a111caf98b2c 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java +++ b/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java @@ -24,8 +24,6 @@ import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; -import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.ActionBar; import android.view.MenuItem; import android.view.Window; import android.webkit.WebChromeClient; @@ -42,6 +40,9 @@ import java.io.InputStream; +import androidx.appcompat.app.ActionBar; +import androidx.drawerlayout.widget.DrawerLayout; + /** * This activity shows an URL as a web view */ diff --git a/src/main/java/com/owncloud/android/ui/activity/FileActivity.java b/src/main/java/com/owncloud/android/ui/activity/FileActivity.java index 3640be4d172b..dd292ed011d2 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FileActivity.java @@ -34,12 +34,9 @@ import android.os.Bundle; import android.os.Handler; import android.os.IBinder; -import android.support.design.widget.Snackbar; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; import android.view.View; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AuthenticatorActivity; @@ -78,6 +75,10 @@ import com.owncloud.android.utils.FilesSyncHelper; import com.owncloud.android.utils.ThemeUtils; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + /** * Activity with common behaviour for activities handling {@link OCFile}s in ownCloud {@link Account}s . diff --git a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java index 60902be4c68b..7f855fe7ed84 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -46,18 +46,6 @@ import android.os.Bundle; import android.os.IBinder; import android.os.Parcelable; -import android.support.annotation.NonNull; -import android.support.annotation.StringRes; -import android.support.design.widget.BottomNavigationView; -import android.support.design.widget.Snackbar; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.content.ContextCompat; -import android.support.v4.view.MenuItemCompat; -import android.support.v7.app.AlertDialog; -import android.support.v7.widget.SearchView; import android.text.TextUtils; import android.view.Menu; import android.view.MenuInflater; @@ -67,6 +55,8 @@ import android.widget.EditText; import android.widget.ImageView; +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.datamodel.ArbitraryDataProvider; @@ -144,6 +134,17 @@ import java.util.Collection; import java.util.List; +import androidx.annotation.NonNull; +import androidx.annotation.StringRes; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.widget.SearchView; +import androidx.core.content.ContextCompat; +import androidx.core.view.MenuItemCompat; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + /** * Displays, what files the user has available in his ownCloud. This is the main view. */ @@ -783,10 +784,10 @@ public boolean onCreateOptionsMenu(Menu menu) { // hacky as no default way is provided int fontColor = ThemeUtils.fontColor(this); - EditText editText = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); + EditText editText = searchView.findViewById(androidx.appcompat.R.id.search_src_text); editText.setHintTextColor(fontColor); editText.setTextColor(fontColor); - ImageView searchClose = searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn); + ImageView searchClose = searchView.findViewById(androidx.appcompat.R.id.search_close_btn); searchClose.setColorFilter(ThemeUtils.fontColor(this)); // populate list of menu items to show/hide when drawer is opened/closed @@ -809,7 +810,7 @@ public void run() { } final View mSearchEditFrame = searchView - .findViewById(android.support.v7.appcompat.R.id.search_edit_frame); + .findViewById(androidx.appcompat.R.id.search_edit_frame); searchView.setOnCloseListener(new SearchView.OnCloseListener() { @Override @@ -1119,7 +1120,7 @@ private boolean isSearchOpen() { if (searchView == null) { return false; } else { - View mSearchEditFrame = searchView.findViewById(android.support.v7.appcompat.R.id.search_edit_frame); + View mSearchEditFrame = searchView.findViewById(androidx.appcompat.R.id.search_edit_frame); return mSearchEditFrame != null && mSearchEditFrame.getVisibility() == View.VISIBLE; } } diff --git a/src/main/java/com/owncloud/android/ui/activity/FilePickerActivity.java b/src/main/java/com/owncloud/android/ui/activity/FilePickerActivity.java index 80e8d4acbe5c..01d708f16608 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FilePickerActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FilePickerActivity.java @@ -22,7 +22,6 @@ package com.owncloud.android.ui.activity; import android.os.Bundle; -import android.support.v4.app.FragmentTransaction; import android.view.View; import com.owncloud.android.R; @@ -30,6 +29,8 @@ import com.owncloud.android.ui.fragment.OCFileListFragment; import com.owncloud.android.utils.FileSortOrder; +import androidx.fragment.app.FragmentTransaction; + /** * File picker of remote files */ diff --git a/src/main/java/com/owncloud/android/ui/activity/FirstRunActivity.java b/src/main/java/com/owncloud/android/ui/activity/FirstRunActivity.java index 94b0d727a81c..a9a593caaa46 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FirstRunActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FirstRunActivity.java @@ -30,7 +30,6 @@ import android.graphics.Color; import android.net.Uri; import android.os.Bundle; -import android.support.v4.view.ViewPager; import android.view.View; import android.view.ViewGroup; import android.widget.Button; @@ -47,6 +46,8 @@ import com.owncloud.android.ui.whatsnew.ProgressIndicator; import com.owncloud.android.utils.DisplayUtils; +import androidx.viewpager.widget.ViewPager; + /** * Activity displaying general feature after a fresh install. */ diff --git a/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java b/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java index ec1b6d259668..3662590a9ef7 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java @@ -31,10 +31,6 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Parcelable; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; -import android.support.v7.app.ActionBar; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; @@ -63,6 +59,11 @@ import java.util.ArrayList; +import androidx.appcompat.app.ActionBar; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + import static com.owncloud.android.db.PreferenceManager.getSortOrderByFolder; public class FolderPickerActivity extends FileActivity implements FileFragment.ContainerActivity, diff --git a/src/main/java/com/owncloud/android/ui/activity/LogHistoryActivity.java b/src/main/java/com/owncloud/android/ui/activity/LogHistoryActivity.java index dc7de07b60e8..9674e0d68cb4 100644 --- a/src/main/java/com/owncloud/android/ui/activity/LogHistoryActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/LogHistoryActivity.java @@ -26,17 +26,13 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; -import android.support.design.widget.Snackbar; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.content.FileProvider; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.R; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.dialog.LoadingDialog; @@ -48,8 +44,14 @@ import java.io.IOException; import java.io.InputStreamReader; import java.lang.ref.WeakReference; +import java.nio.charset.Charset; import java.util.ArrayList; +import androidx.core.content.FileProvider; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + public class LogHistoryActivity extends ToolbarActivity { @@ -83,7 +85,7 @@ protected void onCreate(Bundle savedInstanceState) { TextView logTV = findViewById(R.id.logTV); deleteHistoryButton.setOnClickListener(new OnClickListener() { - + @Override public void onClick(View v) { @@ -215,7 +217,8 @@ private String readLogFile() { File file = new File(mLogPath,logFileName[i]); if (file.exists()) { // Check if FileReader is ready - final InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file), "UTF8"); + final InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file), + Charset.forName("UTF-8")); if (inputStreamReader.ready()) { br = new BufferedReader(inputStreamReader); while ((line = br.readLine()) != null) { @@ -229,7 +232,7 @@ private String readLogFile() { } catch (IOException e) { Log_OC.d(TAG, e.getMessage()); - + } finally { if (br != null) { try { @@ -276,4 +279,4 @@ protected void onSaveInstanceState(Bundle outState) { outState.putString(KEY_LOG_TEXT, mLogText); } } -} \ No newline at end of file +} diff --git a/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java b/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java index 3304157fac5f..43fc33783659 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java @@ -32,8 +32,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.IBinder; -import android.support.v4.content.ContextCompat; -import android.support.v4.graphics.drawable.DrawableCompat; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; @@ -68,6 +66,9 @@ import java.util.List; import java.util.Set; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.drawable.DrawableCompat; + /** * An Activity that allows the user to manage accounts. */ @@ -181,7 +182,7 @@ public void onBackPressed() { resultIntent.putExtra(KEY_ACCOUNT_LIST_CHANGED, hasAccountListChanged()); resultIntent.putExtra(KEY_CURRENT_ACCOUNT_CHANGED, hasCurrentAccountChanged()); setResult(RESULT_OK, resultIntent); - + super.onBackPressed(); } @@ -338,7 +339,7 @@ public void run(AccountManagerFuture future) { mDownloaderBinder.cancel(account); } } - + if (AccountUtils.getCurrentOwnCloudAccount(this) == null) { String accountName = ""; Account[] accounts = AccountManager.get(this).getAccountsByType(MainApp.getAccountType(this)); diff --git a/src/main/java/com/owncloud/android/ui/activity/ManageSpaceActivity.java b/src/main/java/com/owncloud/android/ui/activity/ManageSpaceActivity.java index 56247affd1fd..f61c49cfcb85 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ManageSpaceActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ManageSpaceActivity.java @@ -24,19 +24,20 @@ import android.os.AsyncTask; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.design.widget.Snackbar; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.R; import com.owncloud.android.lib.common.utils.Log_OC; import java.io.File; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; + public class ManageSpaceActivity extends AppCompatActivity { private static final String TAG = ManageSpaceActivity.class.getSimpleName(); diff --git a/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java b/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java index 0a5a3f434efe..4925f46ace1f 100644 --- a/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java @@ -28,11 +28,6 @@ import android.content.Intent; import android.graphics.PorterDuff; import android.os.Bundle; -import android.support.design.widget.BottomNavigationView; -import android.support.design.widget.Snackbar; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; @@ -40,6 +35,8 @@ import android.widget.ProgressBar; import android.widget.TextView; +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.datamodel.ArbitraryDataProvider; @@ -60,6 +57,9 @@ import java.io.IOException; import java.util.List; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import butterknife.BindString; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/src/main/java/com/owncloud/android/ui/activity/OnEnforceableRefreshListener.java b/src/main/java/com/owncloud/android/ui/activity/OnEnforceableRefreshListener.java index d82f33b89e42..613f773c34d6 100644 --- a/src/main/java/com/owncloud/android/ui/activity/OnEnforceableRefreshListener.java +++ b/src/main/java/com/owncloud/android/ui/activity/OnEnforceableRefreshListener.java @@ -21,11 +21,11 @@ package com.owncloud.android.ui.activity; -import android.support.v4.widget.SwipeRefreshLayout; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; public interface OnEnforceableRefreshListener extends SwipeRefreshLayout.OnRefreshListener { - public void onRefresh(boolean enforced); + void onRefresh(boolean enforced); } diff --git a/src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java b/src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java index a3de954445da..8463ff1624b7 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java @@ -24,7 +24,6 @@ import android.content.Intent; import android.graphics.PorterDuff; import android.os.Bundle; -import android.support.v7.widget.AppCompatButton; import android.text.Html; import android.text.method.LinkMovementMethod; import android.view.MenuItem; @@ -35,6 +34,8 @@ import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.ThemeUtils; +import androidx.appcompat.widget.AppCompatButton; + /** * Activity providing information about ways to participate in the app's development. */ diff --git a/src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.java b/src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.java index 638a11f8af73..c6204b2e886d 100644 --- a/src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.java @@ -27,8 +27,6 @@ import android.graphics.PorterDuff; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.design.widget.Snackbar; -import android.support.v7.app.AppCompatActivity; import android.text.Editable; import android.text.TextWatcher; import android.view.KeyEvent; @@ -40,12 +38,15 @@ import android.widget.EditText; import android.widget.TextView; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.R; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.utils.ThemeUtils; import java.util.Arrays; +import androidx.appcompat.app.AppCompatActivity; + public class PassCodeActivity extends AppCompatActivity { private static final String TAG = PassCodeActivity.class.getSimpleName(); @@ -99,7 +100,7 @@ protected void onCreate(Bundle savedInstanceState) { mPassCodeEditTexts[0] = findViewById(R.id.txt0); ThemeUtils.colorEditText(mPassCodeEditTexts[0], elementColor); mPassCodeEditTexts[0].requestFocus(); - + mPassCodeEditTexts[1] = findViewById(R.id.txt1); ThemeUtils.colorEditText(mPassCodeEditTexts[1], elementColor); @@ -113,7 +114,7 @@ protected void onCreate(Bundle savedInstanceState) { if (window != null) { window.setSoftInputMode(android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); } - + if (ACTION_CHECK.equals(getIntent().getAction())) { /// this is a pass code request; the user has to input the right value mPassCodeHdr.setText(R.string.pass_code_enter_pass_code); diff --git a/src/main/java/com/owncloud/android/ui/activity/Preferences.java b/src/main/java/com/owncloud/android/ui/activity/Preferences.java index deef75f2c0c5..c6aacae5aa95 100644 --- a/src/main/java/com/owncloud/android/ui/activity/Preferences.java +++ b/src/main/java/com/owncloud/android/ui/activity/Preferences.java @@ -41,12 +41,6 @@ import android.preference.PreferenceManager; import android.preference.PreferenceScreen; import android.preference.SwitchPreference; -import android.support.annotation.LayoutRes; -import android.support.annotation.NonNull; -import android.support.v4.content.res.ResourcesCompat; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AlertDialog; -import android.support.v7.app.AppCompatDelegate; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -78,10 +72,17 @@ import java.util.ArrayList; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatDelegate; +import androidx.core.content.res.ResourcesCompat; + /** * An Activity that allows the user to change the application's settings. * - * It proxies the necessary calls via {@link android.support.v7.app.AppCompatDelegate} to be used with AppCompat. + * It proxies the necessary calls via {@link androidx.appcompat.app.AppCompatDelegate} to be used with AppCompat. */ public class Preferences extends PreferenceActivity implements StorageMigration.StorageMigrationProgressListener, LoadingVersionNumberTask.VersionDevInterface { diff --git a/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index 306f139c33c2..9a15175aedb3 100755 --- a/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -40,19 +40,6 @@ import android.os.Handler; import android.os.Looper; import android.os.Parcelable; -import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.StringRes; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.content.ContextCompat; -import android.support.v4.graphics.drawable.DrawableCompat; -import android.support.v4.view.MenuItemCompat; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AlertDialog; -import android.support.v7.app.AlertDialog.Builder; -import android.support.v7.widget.SearchView; import android.text.format.DateFormat; import android.view.LayoutInflater; import android.view.Menu; @@ -115,6 +102,20 @@ import java.util.Stack; import java.util.Vector; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AlertDialog.Builder; +import androidx.appcompat.widget.SearchView; +import androidx.core.content.ContextCompat; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.core.view.MenuItemCompat; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.FragmentManager; + /** * This can be used to upload things to an ownCloud instance. */ @@ -1047,12 +1048,12 @@ public boolean onCreateOptionsMenu(Menu menu) { // hacky as no default way is provided int fontColor = ThemeUtils.fontColor(this); - EditText editText = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); + EditText editText = searchView.findViewById(androidx.appcompat.R.id.search_src_text); editText.setHintTextColor(fontColor); editText.setTextColor(fontColor); - ImageView searchClose = searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn); + ImageView searchClose = searchView.findViewById(androidx.appcompat.R.id.search_close_btn); searchClose.setColorFilter(ThemeUtils.fontColor(this)); - ImageView searchButton = searchView.findViewById(android.support.v7.appcompat.R.id.search_button); + ImageView searchButton = searchView.findViewById(androidx.appcompat.R.id.search_button); searchButton.setColorFilter(ThemeUtils.fontColor(this)); return true; diff --git a/src/main/java/com/owncloud/android/ui/activity/RequestCredentialsActivity.java b/src/main/java/com/owncloud/android/ui/activity/RequestCredentialsActivity.java index cbb20878dc6b..7735d7b8b308 100644 --- a/src/main/java/com/owncloud/android/ui/activity/RequestCredentialsActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/RequestCredentialsActivity.java @@ -25,7 +25,6 @@ import android.content.Context; import android.content.Intent; import android.os.Build; -import android.support.annotation.RequiresApi; import android.widget.Toast; import com.owncloud.android.R; @@ -33,6 +32,8 @@ import com.owncloud.android.utils.DeviceCredentialUtils; import com.owncloud.android.utils.DisplayUtils; +import androidx.annotation.RequiresApi; + /** * Dummy activity that is used to handle the device's default authentication workflow. */ diff --git a/src/main/java/com/owncloud/android/ui/activity/RichDocumentsWebView.java b/src/main/java/com/owncloud/android/ui/activity/RichDocumentsWebView.java index 3568e3dece4a..146604624d66 100644 --- a/src/main/java/com/owncloud/android/ui/activity/RichDocumentsWebView.java +++ b/src/main/java/com/owncloud/android/ui/activity/RichDocumentsWebView.java @@ -30,7 +30,6 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; -import android.support.annotation.RequiresApi; import android.text.TextUtils; import android.view.View; import android.webkit.JavascriptInterface; @@ -61,6 +60,7 @@ import java.lang.ref.WeakReference; +import androidx.annotation.RequiresApi; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; diff --git a/src/main/java/com/owncloud/android/ui/activity/ShareActivity.java b/src/main/java/com/owncloud/android/ui/activity/ShareActivity.java index 1b48c677657a..1fc4f8d34cc2 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ShareActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ShareActivity.java @@ -5,16 +5,16 @@ * @author David A. Velasco * @author Juan Carlos González Cabrero * Copyright (C) 2015 ownCloud Inc. - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, * as published by the Free Software Foundation. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ @@ -25,11 +25,8 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import android.support.design.widget.Snackbar; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentTransaction; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.OwnCloudAccount; @@ -54,6 +51,10 @@ import java.util.ArrayList; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; + /** * Activity for sharing files. */ 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 af7a5bc929b8..3aa3bc1e9c0b 100644 --- a/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.java @@ -27,16 +27,6 @@ import android.content.pm.PackageManager; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.annotation.NonNull; -import android.support.design.widget.AppBarLayout; -import android.support.design.widget.BottomNavigationView; -import android.support.design.widget.CollapsingToolbarLayout; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.util.Log; import android.view.MenuItem; @@ -45,6 +35,9 @@ import android.widget.RelativeLayout; import android.widget.TextView; +import com.google.android.material.appbar.AppBarLayout; +import com.google.android.material.appbar.CollapsingToolbarLayout; +import com.google.android.material.bottomnavigation.BottomNavigationView; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -77,7 +70,15 @@ import java.util.Locale; import java.util.Map; -import static android.support.design.widget.AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS; +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; +import androidx.drawerlayout.widget.DrawerLayout; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import static com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS; import static com.owncloud.android.datamodel.SyncedFolderDisplayItem.UNPERSISTED_ID; /** diff --git a/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java b/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java index 5b191efeedf8..f0b270bb1f5f 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java @@ -26,11 +26,6 @@ import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.os.Bundle; -import android.support.annotation.ColorInt; -import android.support.annotation.StringRes; -import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; @@ -42,6 +37,12 @@ import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.utils.ThemeUtils; +import androidx.annotation.ColorInt; +import androidx.annotation.StringRes; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.Toolbar; +import androidx.core.content.ContextCompat; + /** * Base class providing toolbar registration functionality, see {@link #setupToolbar()}. */ diff --git a/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java b/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java index f150df402fc1..045da70850c4 100644 --- a/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java @@ -30,17 +30,6 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.view.MenuItemCompat; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.AppCompatButton; -import android.support.v7.widget.AppCompatSpinner; -import android.support.v7.widget.SearchView; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -70,6 +59,18 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.AppCompatButton; +import androidx.appcompat.widget.AppCompatSpinner; +import androidx.appcompat.widget.SearchView; +import androidx.core.view.MenuItemCompat; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + /** * Displays local files and let the user choose what of them wants to upload * to the current ownCloud account. @@ -247,10 +248,10 @@ public boolean onCreateOptionsMenu(Menu menu) { int fontColor = ThemeUtils.fontColor(this); final MenuItem item = menu.findItem(R.id.action_search); mSearchView = (SearchView) MenuItemCompat.getActionView(item); - EditText editText = mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); + EditText editText = mSearchView.findViewById(androidx.appcompat.R.id.search_src_text); editText.setHintTextColor(fontColor); editText.setTextColor(fontColor); - ImageView searchClose = mSearchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn); + ImageView searchClose = mSearchView.findViewById(androidx.appcompat.R.id.search_close_btn); searchClose.setColorFilter(fontColor); @@ -328,7 +329,7 @@ private boolean isSearchOpen() { if (mSearchView == null) { return false; } else { - View mSearchEditFrame = mSearchView.findViewById(android.support.v7.appcompat.R.id.search_edit_frame); + View mSearchEditFrame = mSearchView.findViewById(androidx.appcompat.R.id.search_edit_frame); return mSearchEditFrame != null && mSearchEditFrame.getVisibility() == View.VISIBLE; } } diff --git a/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java b/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java index 1c64fde7ffe9..464dd418ecf8 100755 --- a/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java @@ -32,9 +32,6 @@ import android.os.Bundle; import android.os.IBinder; import android.preference.PreferenceManager; -import android.support.design.widget.BottomNavigationView; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.GridLayoutManager; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -44,6 +41,7 @@ import com.evernote.android.job.JobRequest; import com.evernote.android.job.util.support.PersistableBundleCompat; +import com.google.android.material.bottomnavigation.BottomNavigationView; import com.owncloud.android.R; import com.owncloud.android.datamodel.UploadsStorageManager; import com.owncloud.android.files.services.FileUploader; @@ -60,6 +58,8 @@ import com.owncloud.android.utils.FilesSyncHelper; import com.owncloud.android.utils.ThemeUtils; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import butterknife.BindString; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java b/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java index 2a3abdeb43cc..1c95b8a88436 100644 --- a/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java @@ -36,13 +36,6 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.os.Bundle; -import android.support.annotation.ColorInt; -import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.StringRes; -import android.support.v4.graphics.drawable.DrawableCompat; -import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.Menu; @@ -82,6 +75,13 @@ import java.util.LinkedList; import java.util.List; +import androidx.annotation.ColorInt; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindString; import butterknife.BindView; import butterknife.ButterKnife; @@ -109,7 +109,7 @@ public class UserInfoActivity extends FileActivity { @BindView(R.id.userinfo_username_full) protected TextView fullName; @BindView(R.id.user_info_list) protected RecyclerView mUserInfoList; @BindView(R.id.empty_list_progress) protected ProgressBar multiListProgressBar; - + @BindString(R.string.user_information_retrieval_error) protected String sorryMessage; private float mCurrentAccountAvatarRadiusDimension; @@ -267,7 +267,7 @@ private void populateUserInfoUi(UserInfo userInfo) { if (!TextUtils.isEmpty(userInfo.getDisplayName())) { fullName.setText(userInfo.getDisplayName()); } - + if (userInfo.getPhone() == null && userInfo.getEmail() == null && userInfo.getAddress() == null && userInfo.getTwitter() == null && userInfo.getWebsite() == null) { diff --git a/src/main/java/com/owncloud/android/ui/activity/WhatsNewActivity.java b/src/main/java/com/owncloud/android/ui/activity/WhatsNewActivity.java index e29e90606ebf..5c6925ea6f59 100644 --- a/src/main/java/com/owncloud/android/ui/activity/WhatsNewActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/WhatsNewActivity.java @@ -5,17 +5,17 @@ * Copyright (C) 2015 Bartosz Przybylski * Copyright (C) 2015 ownCloud Inc. * Copyright (C) 2016 Nextcloud. - * + * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * + * * You should have received a copy of the GNU Affero General Public * License along with this program. If not, see . */ @@ -26,8 +26,6 @@ import android.content.Intent; import android.os.Build; import android.os.Bundle; -import android.support.v4.app.FragmentActivity; -import android.support.v4.view.ViewPager; import android.view.View; import android.widget.Button; import android.widget.ImageButton; @@ -43,6 +41,9 @@ import com.owncloud.android.ui.whatsnew.ProgressIndicator; import com.owncloud.android.utils.ThemeUtils; +import androidx.fragment.app.FragmentActivity; +import androidx.viewpager.widget.ViewPager; + /** * Activity displaying new features after an update. */ diff --git a/src/main/java/com/owncloud/android/ui/adapter/AccountListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/AccountListAdapter.java index 34b1159adafc..ad69d283ebbf 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/AccountListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/AccountListAdapter.java @@ -22,7 +22,6 @@ import android.accounts.Account; import android.graphics.Paint; import android.graphics.drawable.Drawable; -import android.support.annotation.NonNull; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -40,6 +39,8 @@ import java.util.List; +import androidx.annotation.NonNull; + /** * This Adapter populates a ListView with all accounts within the app. */ @@ -135,7 +136,7 @@ private View setupAddAccountListItem(ViewGroup parent) { } else { actionView.setOnClickListener(v -> mListener.createAccount()); } - + return actionView; } diff --git a/src/main/java/com/owncloud/android/ui/adapter/ActivityAndVersionListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/ActivityAndVersionListAdapter.java index 13a189f9e864..af5b3ed8c62d 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/ActivityAndVersionListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/ActivityAndVersionListAdapter.java @@ -1,8 +1,6 @@ package com.owncloud.android.ui.adapter; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; import android.text.format.DateFormat; import android.view.LayoutInflater; import android.view.View; @@ -23,6 +21,8 @@ import java.util.Date; import java.util.List; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java index d8d21206ba1c..d0251ac83d88 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java @@ -24,8 +24,6 @@ import android.graphics.Color; import android.graphics.drawable.PictureDrawable; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.TextPaint; @@ -72,6 +70,9 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + /** * Adapter for the activity view */ diff --git a/src/main/java/com/owncloud/android/ui/adapter/FeaturesViewAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/FeaturesViewAdapter.java index 69d9a5351598..b106a14dca88 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/FeaturesViewAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/FeaturesViewAdapter.java @@ -1,12 +1,12 @@ package com.owncloud.android.ui.adapter; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentPagerAdapter; - import com.owncloud.android.features.FeatureItem; import com.owncloud.android.ui.fragment.FeatureFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentPagerAdapter; + public class FeaturesViewAdapter extends FragmentPagerAdapter { private FeatureItem[] mFeatures; diff --git a/src/main/java/com/owncloud/android/ui/adapter/FeaturesWebViewAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/FeaturesWebViewAdapter.java index 6e94c01d4c56..46b7a7ca7933 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/FeaturesWebViewAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/FeaturesWebViewAdapter.java @@ -1,11 +1,11 @@ package com.owncloud.android.ui.adapter; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentPagerAdapter; - import com.owncloud.android.ui.fragment.FeatureWebFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentPagerAdapter; + public class FeaturesWebViewAdapter extends FragmentPagerAdapter { private String[] mWebUrls; diff --git a/src/main/java/com/owncloud/android/ui/adapter/FileDetailTabAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/FileDetailTabAdapter.java index 74dd5b2d10cc..2e86fede2d27 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/FileDetailTabAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/FileDetailTabAdapter.java @@ -21,14 +21,15 @@ package com.owncloud.android.ui.adapter; import android.accounts.Account; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentStatePagerAdapter; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.ui.fragment.FileDetailActivitiesFragment; import com.owncloud.android.ui.fragment.FileDetailSharingFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentStatePagerAdapter; + /** * File details pager adapter. */ diff --git a/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java index b56409652077..76db94ef61f2 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/LocalFileListAdapter.java @@ -24,8 +24,6 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Color; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -51,6 +49,9 @@ import java.util.Locale; import java.util.Set; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + /** * This Adapter populates a {@link RecyclerView} with all files and directories contained in a local directory */ diff --git a/src/main/java/com/owncloud/android/ui/adapter/NotificationListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/NotificationListAdapter.java index fc83763f275c..a17420bbfe9e 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/NotificationListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/NotificationListAdapter.java @@ -26,8 +26,6 @@ import android.graphics.drawable.PictureDrawable; import android.net.Uri; import android.os.AsyncTask; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.TextUtils; @@ -72,6 +70,8 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java index 66a8307082ab..3dbacb48e164 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java @@ -30,8 +30,6 @@ import android.graphics.Color; import android.os.Handler; import android.os.Looper; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; @@ -78,6 +76,9 @@ import java.util.Set; import java.util.Vector; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + /** * This Adapter populates a RecyclerView with all files and folders in a Nextcloud instance. */ diff --git a/src/main/java/com/owncloud/android/ui/adapter/SendButtonAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/SendButtonAdapter.java index 944b428275a5..cd730d7b86da 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/SendButtonAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/SendButtonAdapter.java @@ -21,7 +21,6 @@ * along with this program. If not, see . */ -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -33,6 +32,8 @@ import java.util.List; +import androidx.recyclerview.widget.RecyclerView; + public class SendButtonAdapter extends RecyclerView.Adapter { private List sendButtonDataList; diff --git a/src/main/java/com/owncloud/android/ui/adapter/ShareUserListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/ShareUserListAdapter.java index e25d7631ea8a..cd0b956c4265 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/ShareUserListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/ShareUserListAdapter.java @@ -21,8 +21,6 @@ package com.owncloud.android.ui.adapter; import android.content.Context; -import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -37,6 +35,9 @@ import java.security.NoSuchAlgorithmException; import java.util.List; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; + /** * Adapter to show a user/group in Share With List */ diff --git a/src/main/java/com/owncloud/android/ui/adapter/SyncedFolderAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/SyncedFolderAdapter.java index f8dd3ec99b22..8a8176e54ef4 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/SyncedFolderAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/SyncedFolderAdapter.java @@ -22,7 +22,6 @@ package com.owncloud.android.ui.adapter; import android.content.Context; -import android.support.annotation.NonNull; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -45,6 +44,7 @@ import java.util.List; import java.util.Locale; +import androidx.annotation.NonNull; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/src/main/java/com/owncloud/android/ui/adapter/TemplateAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/TemplateAdapter.java index 62aa78ec6ee3..29a1994d9228 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/TemplateAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/TemplateAdapter.java @@ -22,8 +22,6 @@ package com.owncloud.android.ui.adapter; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -39,6 +37,8 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/src/main/java/com/owncloud/android/ui/adapter/TrashbinListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/TrashbinListAdapter.java index f34b9e0c989a..d7f0a9238769 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/TrashbinListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/TrashbinListAdapter.java @@ -24,8 +24,6 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -48,6 +46,8 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java index 2dc08df789c9..f408035f7e93 100755 --- a/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java @@ -26,7 +26,6 @@ import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; -import android.support.annotation.NonNull; import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; @@ -58,6 +57,7 @@ import java.util.Arrays; import java.util.Comparator; +import androidx.annotation.NonNull; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; /** diff --git a/src/main/java/com/owncloud/android/ui/adapter/UserListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/UserListAdapter.java index 28dc8b14b129..0c9765d5ae0a 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/UserListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/UserListAdapter.java @@ -24,11 +24,6 @@ import android.accounts.Account; import android.content.Context; import android.graphics.drawable.Drawable; -import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; -import android.support.v4.app.FragmentManager; -import android.support.v7.widget.AppCompatCheckBox; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -55,6 +50,11 @@ import java.security.NoSuchAlgorithmException; import java.util.List; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.appcompat.widget.AppCompatCheckBox; +import androidx.fragment.app.FragmentManager; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/src/main/java/com/owncloud/android/ui/adapter/X509CertificateViewAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/X509CertificateViewAdapter.java index 1b20382b729b..6980016c106f 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/X509CertificateViewAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/X509CertificateViewAdapter.java @@ -20,7 +20,6 @@ package com.owncloud.android.ui.adapter; import android.content.Context; -import android.support.annotation.NonNull; import android.util.Log; import android.view.View; import android.widget.TextView; @@ -39,11 +38,13 @@ import javax.security.auth.x500.X500Principal; +import androidx.annotation.NonNull; + /** * Show certificate information. */ public class X509CertificateViewAdapter implements SslUntrustedCertDialog.CertificateViewAdapter { - + private X509Certificate mCertificate; private static final String TAG = X509CertificateViewAdapter.class.getSimpleName(); @@ -51,18 +52,18 @@ public class X509CertificateViewAdapter implements SslUntrustedCertDialog.Certif public X509CertificateViewAdapter(X509Certificate certificate) { mCertificate = certificate; } - + @Override public void updateCertificateView(View dialogView) { TextView nullCerView = dialogView.findViewById(R.id.null_cert); - + if (mCertificate != null) { nullCerView.setVisibility(View.GONE); showSubject(mCertificate.getSubjectX500Principal(), dialogView); showIssuer(mCertificate.getIssuerX500Principal(), dialogView); showValidity(mCertificate.getNotBefore(), mCertificate.getNotAfter(), dialogView); showSignature(dialogView); - + } else { nullCerView.setVisibility(View.VISIBLE); } @@ -127,7 +128,7 @@ private String getDigestHexBytesWithColonsAndNewLines(Context context, final Str hex.append(':'); } return digestType + ":" + newLine + hex.toString().replaceFirst("\\:$","") + newLine + newLine; - } + } private void showValidity(Date notBefore, Date notAfter, View dialogView) { TextView fromView = dialogView.findViewById(R.id.value_validity_from); @@ -145,7 +146,7 @@ private void showSubject(X500Principal subject, View dialogView) { TextView cView = dialogView.findViewById(R.id.value_subject_C); TextView stView = dialogView.findViewById(R.id.value_subject_ST); TextView lView = dialogView.findViewById(R.id.value_subject_L); - + if (s.get("CN") != null) { cnView.setText(s.get("CN")); cnView.setVisibility(View.VISIBLE); @@ -183,7 +184,7 @@ private void showSubject(X500Principal subject, View dialogView) { lView.setVisibility(View.GONE); } } - + private void showIssuer(X500Principal issuer, View dialogView) { Map s = parsePrincipal(issuer); TextView cnView = dialogView.findViewById(R.id.value_issuer_CN); @@ -192,7 +193,7 @@ private void showIssuer(X500Principal issuer, View dialogView) { TextView cView = dialogView.findViewById(R.id.value_issuer_C); TextView stView = dialogView.findViewById(R.id.value_issuer_ST); TextView lView = dialogView.findViewById(R.id.value_issuer_L); - + if (s.get("CN") != null) { cnView.setText(s.get("CN")); cnView.setVisibility(View.VISIBLE); @@ -230,7 +231,7 @@ private void showIssuer(X500Principal issuer, View dialogView) { lView.setVisibility(View.GONE); } } - + private Map parsePrincipal(X500Principal principal) { Map result = new HashMap<>(); diff --git a/src/main/java/com/owncloud/android/ui/components/CustomEditText.java b/src/main/java/com/owncloud/android/ui/components/CustomEditText.java index fe5159b60ad4..5ab3a1d06372 100644 --- a/src/main/java/com/owncloud/android/ui/components/CustomEditText.java +++ b/src/main/java/com/owncloud/android/ui/components/CustomEditText.java @@ -32,7 +32,7 @@ /** * Custom edit text to support fixed suffix or prefix */ -public class CustomEditText extends android.support.v7.widget.AppCompatEditText { +public class CustomEditText extends androidx.appcompat.widget.AppCompatEditText { private Rect fixedRect = new Rect(); private String fixedText = ""; private boolean isPrefixFixed; diff --git a/src/main/java/com/owncloud/android/ui/components/CustomViewPager.java b/src/main/java/com/owncloud/android/ui/components/CustomViewPager.java index 696b2095cdaf..3119385274f2 100644 --- a/src/main/java/com/owncloud/android/ui/components/CustomViewPager.java +++ b/src/main/java/com/owncloud/android/ui/components/CustomViewPager.java @@ -2,12 +2,13 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.viewpager.widget.ViewPager; + public class CustomViewPager extends ViewPager { public CustomViewPager(@NonNull Context context) { super(context); diff --git a/src/main/java/com/owncloud/android/ui/decoration/MediaGridItemDecoration.java b/src/main/java/com/owncloud/android/ui/decoration/MediaGridItemDecoration.java index de8bca3a1c19..27ff1829574a 100644 --- a/src/main/java/com/owncloud/android/ui/decoration/MediaGridItemDecoration.java +++ b/src/main/java/com/owncloud/android/ui/decoration/MediaGridItemDecoration.java @@ -20,10 +20,11 @@ package com.owncloud.android.ui.decoration; import android.graphics.Rect; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.RecyclerView.ItemDecoration; import android.view.View; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView.ItemDecoration; + /** * Decoration for media grid items. */ @@ -41,4 +42,4 @@ public void getItemOffsets(Rect outRect, View view, RecyclerView parent, Recycle outRect.left = space; outRect.top = space; } -} \ No newline at end of file +} diff --git a/src/main/java/com/owncloud/android/ui/decoration/SimpleListItemDividerDecoration.java b/src/main/java/com/owncloud/android/ui/decoration/SimpleListItemDividerDecoration.java index 1d5d0306f280..ecb58318eb03 100644 --- a/src/main/java/com/owncloud/android/ui/decoration/SimpleListItemDividerDecoration.java +++ b/src/main/java/com/owncloud/android/ui/decoration/SimpleListItemDividerDecoration.java @@ -25,11 +25,12 @@ import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; -import android.support.v7.widget.DividerItemDecoration; -import android.support.v7.widget.RecyclerView; import android.util.DisplayMetrics; import android.view.View; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.RecyclerView; + /** * DividerItemDecoration based on {@link DividerItemDecoration} adding a 72dp left padding. */ diff --git a/src/main/java/com/owncloud/android/ui/dialog/ChangelogDialog.java b/src/main/java/com/owncloud/android/ui/dialog/ChangelogDialog.java index 54108735d185..f81ffe79440c 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/ChangelogDialog.java +++ b/src/main/java/com/owncloud/android/ui/dialog/ChangelogDialog.java @@ -22,12 +22,13 @@ import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AlertDialog; import android.webkit.WebView; import com.owncloud.android.R; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; + /** * Dialog to show the contents of res/raw/CHANGELOG.txt @@ -40,7 +41,7 @@ public class ChangelogDialog extends DialogFragment { /** * Public factory method to get dialog instances. - * + * * @param cancelable If 'true', the dialog can be cancelled by the user input * (BACK button, touch outside...) * @return New dialog instance, ready to show. @@ -53,20 +54,20 @@ public static ChangelogDialog newInstance(boolean cancelable) { return fragment; } - + /** * {@inheritDoc} */ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - /// load the custom view to insert in the dialog, between title and + /// load the custom view to insert in the dialog, between title and WebView webview = new WebView(getActivity()); webview.loadUrl("file:///android_res/raw/" + getResources().getResourceEntryName(R.raw.changelog) + ".html"); - + /// build the dialog AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - + Dialog dialog = builder.setView(webview) .setIcon(R.mipmap.ic_launcher) //.setTitle(R.string.whats_new) @@ -77,11 +78,11 @@ public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create(); - + dialog.setCancelable(getArguments().getBoolean(ARG_CANCELABLE)); return dialog; - } - + } + /** * {@inheritDoc} *-/ @@ -92,13 +93,13 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, View view = inflater.inflate(R.layout.fragment_changelog, container); mEditText = (EditText) view.findViewById(R.id.txt_your_name); getDialog().setTitle(R.string.whats_new); - - /// read full contents of the change log file (don't make it too big) + + /// read full contents of the change log file (don't make it too big) InputStream changeLogStream = getResources().openRawResource(R.raw.changelog); Scanner scanner = new java.util.Scanner(changeLogStream).useDelimiter("\\A"); String text = scanner.hasNext() ? scanner.next() : ""; - - /// make clickable the links in the change log file + + /// make clickable the links in the change log file SpannableString sText = new SpannableString(text); Linkify.addLinks(sText, Linkify.ALL); diff --git a/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.java index b6a47e8b2bbd..8219b47810ae 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.java @@ -30,11 +30,6 @@ import android.graphics.PorterDuff; import android.os.AsyncTask; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AlertDialog; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.Window; @@ -65,6 +60,11 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/src/main/java/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.java index f36c6ce60385..bd2989e695f7 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.java @@ -23,11 +23,12 @@ import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AlertDialog; import com.owncloud.android.R; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; + public class ConfirmationDialogFragment extends DialogFragment { @@ -38,14 +39,14 @@ public class ConfirmationDialogFragment extends DialogFragment { public final static String ARG_POSITIVE_BTN_RES = "positive_btn_res"; public final static String ARG_NEUTRAL_BTN_RES = "neutral_btn_res"; public final static String ARG_NEGATIVE_BTN_RES = "negative_btn_res"; - + public static final String FTAG_CONFIRMATION = "CONFIRMATION_FRAGMENT"; private ConfirmationDialogFragmentListener mListener; - + /** * Public factory method to create new ConfirmationDialogFragment instances. - * + * * @param messageResId Resource id for a message to show in the dialog. * @param messageArguments Arguments to complete the message, if it's a format string. May be null. * @param titleResId Resource id for a text to show in the title. @@ -79,7 +80,7 @@ public static ConfirmationDialogFragment newInstance( frag.setArguments(args); return frag; } - + public void setOnConfirmationListener(ConfirmationDialogFragmentListener listener) { mListener = listener; } @@ -144,13 +145,15 @@ public void onClick(DialogInterface dialog, int which) { } return builder.create(); } - - + + public interface ConfirmationDialogFragmentListener { - public void onConfirmation(String callerTag); - public void onNeutral(String callerTag); - public void onCancel(String callerTag); + void onConfirmation(String callerTag); + + void onNeutral(String callerTag); + + void onCancel(String callerTag); } - + } diff --git a/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java b/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java index c5560e9d34f2..7c139e307af6 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java +++ b/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java @@ -24,15 +24,16 @@ import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentTransaction; -import android.support.v7.app.AlertDialog; -import android.support.v7.app.AppCompatActivity; import com.owncloud.android.R; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; + /** * Dialog which will be displayed to user upon keep-in-sync file conflict. @@ -45,7 +46,7 @@ public enum Decision { OVERWRITE, SERVER } - + OnConflictDecisionMadeListener mListener; public static ConflictsResolveDialog newInstance(OnConflictDecisionMadeListener listener) { @@ -81,7 +82,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { }) .create(); } - + public void showDialog(AppCompatActivity activity) { Fragment prev = activity.getSupportFragmentManager().findFragmentByTag("dialog"); FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction(); @@ -99,7 +100,7 @@ public void onCancel(DialogInterface dialog) { mListener.conflictDecisionMade(Decision.CANCEL); } } - + public interface OnConflictDecisionMadeListener { void conflictDecisionMade(Decision decision); } diff --git a/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java index 1b450613db98..8963fedcfdc6 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java @@ -24,9 +24,6 @@ import android.content.DialogInterface; import android.graphics.PorterDuff; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.Window; @@ -41,16 +38,20 @@ import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.ThemeUtils; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; + /** - * Dialog to input the name for a new folder to create. - * + * Dialog to input the name for a new folder to create. + * * Triggers the folder creation when name is confirmed. */ public class CreateFolderDialogFragment extends DialogFragment implements DialogInterface.OnClickListener { private static final String ARG_PARENT_FOLDER = "PARENT_FOLDER"; - + public static final String CREATE_FOLDER_FRAGMENT = "CREATE_FOLDER_FRAGMENT"; private OCFile mParentFolder; @@ -67,7 +68,7 @@ public static CreateFolderDialogFragment newInstance(OCFile parentFolder) { args.putParcelable(ARG_PARENT_FOLDER, parentFolder); frag.setArguments(args); return frag; - + } @Override @@ -92,13 +93,13 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { LayoutInflater inflater = getActivity().getLayoutInflater(); View v = inflater.inflate(R.layout.edit_box_dialog, null); - // Setup layout + // Setup layout EditText inputText = v.findViewById(R.id.user_input); inputText.setText(""); inputText.requestFocus(); inputText.getBackground().setColorFilter(accentColor, PorterDuff.Mode.SRC_ATOP); - // Build the dialog + // Build the dialog AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setView(v) .setPositiveButton(R.string.folder_confirm_create, this) @@ -111,18 +112,18 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { if (window != null) { window.setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE); } - + return d; - } - - + } + + @Override public void onClick(DialogInterface dialog, int which) { if (which == AlertDialog.BUTTON_POSITIVE) { - String newFolderName = + String newFolderName = ((TextView)(getDialog().findViewById(R.id.user_input))) .getText().toString().trim(); - + if (newFolderName.length() <= 0) { DisplayUtils.showSnackMessage(getActivity(), R.string.filename_empty); return; diff --git a/src/main/java/com/owncloud/android/ui/dialog/CredentialsDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/CredentialsDialogFragment.java index da820eb91450..19bb9c97b3bd 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/CredentialsDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/CredentialsDialogFragment.java @@ -22,9 +22,6 @@ import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AlertDialog; -import android.support.v7.app.AlertDialog.Builder; import android.text.InputType; import android.view.Window; import android.view.WindowManager.LayoutParams; @@ -36,11 +33,15 @@ import com.owncloud.android.R; import com.owncloud.android.authentication.AuthenticatorActivity; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.app.AlertDialog.Builder; +import androidx.fragment.app.DialogFragment; + /** * Dialog to input authentication credentials - * + * */ public class CredentialsDialogFragment extends DialogFragment implements DialogInterface.OnClickListener { @@ -50,7 +51,7 @@ public class CredentialsDialogFragment extends DialogFragment private EditText mUsernameET; private EditText mPasswordET; - + private String mUsernameStr; private String mPasswordStr; @@ -91,9 +92,9 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { ll.setOrientation(LinearLayout.VERTICAL); ll.addView(mUsernameET); ll.addView(mPasswordET); - + ll.requestFocus(); - + setRetainInstance(true); Builder authDialog = new AlertDialog @@ -110,7 +111,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { if (window != null) { window.setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE); } - + return d; } @@ -135,7 +136,7 @@ public void onResume() { @Override public void onClick(DialogInterface dialog, int which) { - if (which == AlertDialog.BUTTON_POSITIVE) { + if (which == AlertDialog.BUTTON_POSITIVE) { String username = mUsernameET.getText().toString(); String password = mPasswordET.getText().toString(); @@ -150,8 +151,8 @@ public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } - - + + @Override public void onDestroyView() { if (getDialog() != null && getRetainInstance()) { diff --git a/src/main/java/com/owncloud/android/ui/dialog/ExpirationDatePickerDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/ExpirationDatePickerDialogFragment.java index 0244ebcd2064..28b9982f8f9a 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/ExpirationDatePickerDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/ExpirationDatePickerDialogFragment.java @@ -25,8 +25,6 @@ import android.app.DatePickerDialog; import android.app.Dialog; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.DialogFragment; import android.text.format.DateUtils; import android.widget.DatePicker; @@ -37,6 +35,9 @@ import java.util.Calendar; +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; + /** * Dialog requesting a date after today. */ diff --git a/src/main/java/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.java b/src/main/java/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.java index e758a7f3cdec..5083a6a90494 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.java +++ b/src/main/java/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.java @@ -24,14 +24,15 @@ import android.content.DialogInterface; import android.content.DialogInterface.OnKeyListener; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.DialogFragment; import android.view.KeyEvent; import android.widget.ProgressBar; import com.owncloud.android.R; import com.owncloud.android.utils.ThemeUtils; +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; + public class IndeterminateProgressDialog extends DialogFragment { @@ -41,7 +42,7 @@ public class IndeterminateProgressDialog extends DialogFragment { /** * Public factory method to get dialog instances. - * + * * @param messageId Resource id for a message to show in the dialog. * @param cancelable If 'true', the dialog can be cancelled by the user input (BACK button, touch outside...) * @return New dialog instance, ready to show. @@ -56,7 +57,7 @@ public static IndeterminateProgressDialog newInstance(int messageId, boolean can return fragment; } - + /** * {@inheritDoc} */ @@ -75,7 +76,7 @@ public void onShow(DialogInterface dialog) { } }); - + /// set message int messageId = getArguments().getInt(ARG_MESSAGE_ID, R.string.placeholder_sentence); progressDialog.setMessage(getString(messageId)); @@ -96,10 +97,10 @@ public boolean onKey(DialogInterface dialog, int keyCode, }; progressDialog.setOnKeyListener(keyListener); } - + return progressDialog; - } - + } + } diff --git a/src/main/java/com/owncloud/android/ui/dialog/LoadingDialog.java b/src/main/java/com/owncloud/android/ui/dialog/LoadingDialog.java index bf8df600ba5a..ed90556865e8 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/LoadingDialog.java +++ b/src/main/java/com/owncloud/android/ui/dialog/LoadingDialog.java @@ -21,8 +21,6 @@ import android.app.Dialog; import android.graphics.PorterDuff; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -33,10 +31,13 @@ import com.owncloud.android.R; import com.owncloud.android.utils.ThemeUtils; +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; + public class LoadingDialog extends DialogFragment { private String mMessage; - + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -54,7 +55,7 @@ public static LoadingDialog newInstance(String message) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Create a view by inflating desired layout View v = inflater.inflate(R.layout.loading_dialog, container, false); - + // set value TextView tv = v.findViewById(R.id.loadingText); tv.setText(mMessage); @@ -63,7 +64,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa ProgressBar progressBar = v.findViewById(R.id.loadingBar); progressBar.getIndeterminateDrawable().setColorFilter(ThemeUtils.primaryAccentColor(getContext()), PorterDuff.Mode.SRC_IN); - + return v; } diff --git a/src/main/java/com/owncloud/android/ui/dialog/NoteDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/NoteDialogFragment.java index fafe1317c1d3..af70fe712798 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/NoteDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/NoteDialogFragment.java @@ -26,10 +26,6 @@ import android.content.DialogInterface; import android.graphics.PorterDuff; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.Window; @@ -42,6 +38,10 @@ import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.ThemeUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; diff --git a/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java index 443d07375fdd..d36f569ceb40 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java @@ -22,7 +22,6 @@ import android.app.AlertDialog; import android.app.Dialog; import android.os.Bundle; -import android.support.annotation.NonNull; import android.view.ActionMode; import com.owncloud.android.R; @@ -34,6 +33,8 @@ import java.util.ArrayList; import java.util.Collection; +import androidx.annotation.NonNull; + /** * Dialog requiring confirmation before removing a collection of given OCFiles. * @@ -63,7 +64,7 @@ public static RemoveFilesDialogFragment newInstance(ArrayList files, Act /** * Public factory method to create new RemoveFilesDialogFragment instances. - * + * * @param files Files to remove. * @return Dialog ready to show. */ @@ -109,7 +110,7 @@ public static RemoveFilesDialogFragment newInstance(ArrayList files) { args.putInt(ARG_NEGATIVE_BTN_RES, localRemoveButton); args.putParcelableArrayList(ARG_TARGET_FILES, files); frag.setArguments(args); - + return frag; } @@ -132,7 +133,7 @@ public void onStart() { int color = ThemeUtils.primaryAccentColor(getActivity()); - android.support.v7.app.AlertDialog alertDialog = (android.support.v7.app.AlertDialog) getDialog(); + androidx.appcompat.app.AlertDialog alertDialog = (androidx.appcompat.app.AlertDialog) getDialog(); alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(color); alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(color); @@ -144,11 +145,11 @@ public void onStart() { public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); mTargetFiles = getArguments().getParcelableArrayList(ARG_TARGET_FILES); - + setOnConfirmationListener(this); - + return dialog; - } + } /** * Performs the removal of the target file, both locally and in the server and @@ -160,7 +161,7 @@ public void onConfirmation(String callerTag) { cg.getFileOperationsHelper().removeFiles(mTargetFiles, false, false); finishActionMode(); } - + /** * Performs the removal of the local copy of the target file */ diff --git a/src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java index dc3901e8eaa6..9769d95bd050 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java @@ -21,18 +21,15 @@ package com.owncloud.android.ui.dialog; /** - * Dialog to input a new name for an {@link OCFile} being renamed. - * - * Triggers the rename operation. + * Dialog to input a new name for an {@link OCFile} being renamed. + * + * Triggers the rename operation. */ import android.app.Dialog; import android.content.DialogInterface; import android.graphics.PorterDuff; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.Window; @@ -47,10 +44,14 @@ import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.ThemeUtils; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; + /** - * Dialog to input a new name for a file or folder to rename. - * + * Dialog to input a new name for a file or folder to rename. + * * Triggers the rename operation when name is confirmed. */ public class RenameFileDialogFragment @@ -62,7 +63,7 @@ public class RenameFileDialogFragment /** * Public factory method to create new RenameFileDialogFragment instances. - * + * * @param file File to rename. * @return Dialog ready to show. */ @@ -72,7 +73,7 @@ public static RenameFileDialogFragment newInstance(OCFile file) { args.putParcelable(ARG_TARGET_FILE, file); frag.setArguments(args); return frag; - + } @Override @@ -97,7 +98,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { LayoutInflater inflater = getActivity().getLayoutInflater(); View v = inflater.inflate(R.layout.edit_box_dialog, null); - // Setup layout + // Setup layout String currentName = mTargetFile.getFileName(); EditText inputText = v.findViewById(R.id.user_input); inputText.setText(currentName); @@ -112,7 +113,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { inputText.requestFocus(); inputText.getBackground().setColorFilter(accentColor, PorterDuff.Mode.SRC_ATOP); - // Build the dialog + // Build the dialog AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setView(v) .setPositiveButton(R.string.file_rename, this) @@ -125,18 +126,18 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { if (window != null) { window.setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE); } - + return d; - } + } + - @Override public void onClick(DialogInterface dialog, int which) { if (which == AlertDialog.BUTTON_POSITIVE) { - String newFileName = + String newFileName = ((TextView)(getDialog().findViewById(R.id.user_input))) .getText().toString().trim(); - + if (newFileName.length() <= 0) { DisplayUtils.showSnackMessage(getActivity(), R.string.filename_empty); return; @@ -144,7 +145,7 @@ public void onClick(DialogInterface dialog, int which) { if (!FileUtils.isValidName(newFileName)) { DisplayUtils.showSnackMessage(getActivity(), R.string.filename_forbidden_charaters_from_server); - + return; } diff --git a/src/main/java/com/owncloud/android/ui/dialog/SamlWebViewDialog.java b/src/main/java/com/owncloud/android/ui/dialog/SamlWebViewDialog.java index 39d98ce67eb7..831eef1f8ee4 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/SamlWebViewDialog.java +++ b/src/main/java/com/owncloud/android/ui/dialog/SamlWebViewDialog.java @@ -27,9 +27,6 @@ import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; -import android.support.v4.app.DialogFragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -45,6 +42,10 @@ import com.owncloud.android.authentication.SsoWebViewClient.SsoWebViewClientListener; import com.owncloud.android.lib.common.utils.Log_OC; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + /** * Dialog to show the WebView for SAML Authentication @@ -55,10 +56,10 @@ public class SamlWebViewDialog extends DialogFragment { private static final String ARG_INITIAL_URL = "INITIAL_URL"; private static final String ARG_TARGET_URL = "TARGET_URL"; - + private WebView mSsoWebView; private SsoWebViewClient mWebViewClient; - + private String mInitialUrl; private String mTargetUrl; @@ -80,7 +81,7 @@ public static SamlWebViewDialog newInstance(String url, String targetUrl) { fragment.setArguments(args); return fragment; } - + @Override public void onAttach(Activity activity) { Log_OC.v(TAG, "onAttach"); @@ -89,22 +90,22 @@ public void onAttach(Activity activity) { mSsoWebViewClientListener = (SsoWebViewClientListener) activity; Handler mHandler = new Handler(); mWebViewClient = new SsoWebViewClient(activity, mHandler, mSsoWebViewClientListener); - - } catch (ClassCastException e) { + + } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement " + SsoWebViewClientListener.class.getSimpleName()); } } - + @SuppressLint("SetJavaScriptEnabled") @Override public void onCreate(Bundle savedInstanceState) { Log_OC.v(TAG, "onCreate, savedInstanceState is " + savedInstanceState); super.onCreate(savedInstanceState); - + setRetainInstance(true); - + CookieSyncManager.createInstance(getActivity().getApplicationContext()); if (savedInstanceState == null) { @@ -114,28 +115,28 @@ public void onCreate(Bundle savedInstanceState) { mInitialUrl = savedInstanceState.getString(ARG_INITIAL_URL); mTargetUrl = savedInstanceState.getString(ARG_TARGET_URL); } - + setStyle(DialogFragment.STYLE_NO_TITLE, R.style.Theme_ownCloud_Dialog); } - + @SuppressWarnings("deprecation") @SuppressLint("SetJavaScriptEnabled") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log_OC.v(TAG, "onCreateView, savedInsanceState is " + savedInstanceState); - - // Inflate layout of the dialog + + // Inflate layout of the dialog RelativeLayout ssoRootView = (RelativeLayout) inflater.inflate(R.layout.sso_dialog, container, false); // null parent view because it will go in the dialog layout - + if (mSsoWebView == null) { // initialize the WebView mSsoWebView = new SsoWebView(getActivity().getApplicationContext()); mSsoWebView.setFocusable(true); mSsoWebView.setFocusableInTouchMode(true); mSsoWebView.setClickable(true); - + WebSettings webSettings = mSsoWebView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setDomStorageEnabled(true); @@ -154,13 +155,13 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); cookieManager.removeAllCookie(); - + mSsoWebView.loadUrl(mInitialUrl); } - + mWebViewClient.setTargetUrl(mTargetUrl); mSsoWebView.setWebViewClient(mWebViewClient); - + // add the webview into the layout RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, @@ -168,7 +169,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, ); ssoRootView.addView(mSsoWebView, layoutParams); ssoRootView.requestLayout(); - + return ssoRootView; } @@ -176,7 +177,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, public void onSaveInstanceState(Bundle outState) { Log_OC.v(TAG, "onSaveInstanceState being CALLED"); super.onSaveInstanceState(outState); - + // save URLs outState.putString(ARG_INITIAL_URL, mInitialUrl); outState.putString(ARG_TARGET_URL, mTargetUrl); @@ -189,18 +190,18 @@ public void onDestroyView() { if (mSsoWebView.getParent() != null) { ((ViewGroup)mSsoWebView.getParent()).removeView(mSsoWebView); } - + mSsoWebView.setWebViewClient(null); - + // Work around bug: http://code.google.com/p/android/issues/detail?id=17423 Dialog dialog = getDialog(); if (dialog != null) { dialog.setOnDismissListener(null); } - + super.onDestroyView(); } - + @Override public void onDestroy() { Log_OC.v(TAG, "onDestroy"); @@ -214,19 +215,19 @@ public void onDetach() { mWebViewClient = null; super.onDetach(); } - + @Override public void onCancel (DialogInterface dialog) { Log_OC.d(TAG, "onCancel"); super.onCancel(dialog); } - + @Override public void onDismiss (DialogInterface dialog) { Log_OC.d(TAG, "onDismiss"); super.onDismiss(dialog); } - + @Override public void onStart() { Log_OC.v(TAG, "onStart"); @@ -252,7 +253,7 @@ public void onPause() { mSsoWebView.onPause(); super.onPause(); } - + @Override public int show (FragmentTransaction transaction, String tag) { Log_OC.v(TAG, "show (transaction)"); @@ -264,5 +265,5 @@ public void show (FragmentManager manager, String tag) { Log_OC.v(TAG, "show (manager)"); super.show(manager, tag); } - + } diff --git a/src/main/java/com/owncloud/android/ui/dialog/SendShareDialog.java b/src/main/java/com/owncloud/android/ui/dialog/SendShareDialog.java index 5efd7b0d28ec..d7b7c99bc607 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/SendShareDialog.java +++ b/src/main/java/com/owncloud/android/ui/dialog/SendShareDialog.java @@ -6,12 +6,6 @@ import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.BottomSheetDialogFragment; -import android.support.design.widget.Snackbar; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -19,6 +13,8 @@ import android.widget.LinearLayout; import android.widget.TextView; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.utils.Log_OC; @@ -33,6 +29,11 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + /* * Nextcloud Android client application * diff --git a/src/main/java/com/owncloud/android/ui/dialog/SetupEncryptionDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/SetupEncryptionDialogFragment.java index deb4f6b5b980..f1048b362294 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/SetupEncryptionDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/SetupEncryptionDialogFragment.java @@ -28,10 +28,6 @@ import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.DialogFragment; -import android.support.v4.graphics.drawable.DrawableCompat; -import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; @@ -58,6 +54,11 @@ import java.util.List; import java.util.Locale; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.fragment.app.DialogFragment; + /* * Dialog to setup encryption */ diff --git a/src/main/java/com/owncloud/android/ui/dialog/ShareLinkToDialog.java b/src/main/java/com/owncloud/android/ui/dialog/ShareLinkToDialog.java index f1e0ba44bb1d..77679f891aa4 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/ShareLinkToDialog.java +++ b/src/main/java/com/owncloud/android/ui/dialog/ShareLinkToDialog.java @@ -29,10 +29,6 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -50,12 +46,17 @@ import java.util.List; import java.util.Locale; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; + /** - * Dialog showing a list activities able to resolve a given Intent, + * Dialog showing a list activities able to resolve a given Intent, * filtering out the activities matching give package names. */ public class ShareLinkToDialog extends DialogFragment { - + private final static String TAG = ShareLinkToDialog.class.getSimpleName(); private final static String ARG_INTENT = ShareLinkToDialog.class.getSimpleName() + ".ARG_INTENT"; @@ -64,7 +65,7 @@ public class ShareLinkToDialog extends DialogFragment { private ActivityAdapter mAdapter; private Intent mIntent; - + public static ShareLinkToDialog newInstance(Intent intent, String... packagesToExclude) { ShareLinkToDialog f = new ShareLinkToDialog(); Bundle args = new Bundle(); @@ -73,12 +74,12 @@ public static ShareLinkToDialog newInstance(Intent intent, String... packagesToE f.setArguments(args); return f; } - + public ShareLinkToDialog() { super(); Log_OC.d(TAG, "constructor"); } - + @Override @NonNull public Dialog onCreateDialog(Bundle savedInstanceState) { @@ -97,9 +98,9 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { it.remove(); } } - + boolean sendAction = mIntent.getBooleanExtra(Intent.ACTION_SEND, false); - + if (!sendAction) { // add activity for copy to clipboard Intent copyToClipboardIntent = new Intent(getActivity(), CopyToClipboardActivity.class); @@ -108,33 +109,33 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { activities.add(copyToClipboard.get(0)); } } - - Collections.sort(activities, new ResolveInfo.DisplayNameComparator(pm)); + + Collections.sort(activities, new ResolveInfo.DisplayNameComparator(pm)); mAdapter = new ActivityAdapter(getActivity(), pm, activities); - + return createSelector(sendAction); } private AlertDialog createSelector(final boolean sendAction) { - + int titleId; if (sendAction) { titleId = R.string.activity_chooser_send_file_title; } else { titleId = R.string.activity_chooser_title; } - + return new AlertDialog.Builder(getActivity()) .setTitle(titleId) .setAdapter(mAdapter, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - // Add the information of the chosen activity to the intent to send + // Add the information of the chosen activity to the intent to send ResolveInfo chosen = mAdapter.getItem(which); ActivityInfo actInfo = chosen.activityInfo; ComponentName name=new ComponentName( - actInfo.applicationInfo.packageName, - actInfo.name); + actInfo.applicationInfo.packageName, + actInfo.name); mIntent.setComponent(name); // Send the file @@ -143,16 +144,16 @@ public void onClick(DialogInterface dialog, int which) { }) .create(); } - + class ActivityAdapter extends ArrayAdapter { - + private PackageManager mPackageManager; - + ActivityAdapter(Context context, PackageManager pm, List apps) { super(context, R.layout.activity_row, apps); this.mPackageManager = pm; } - + @Override public @NonNull View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { View view = convertView; @@ -163,12 +164,12 @@ class ActivityAdapter extends ArrayAdapter { bindView(position, view); return view; } - + private View newView(ViewGroup parent) { return((LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)). inflate(R.layout.activity_row, parent, false); } - + private void bindView(int position, View row) { TextView label = row.findViewById(R.id.title); label.setText(getItem(position).loadLabel(mPackageManager)); diff --git a/src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java index c5740eb73229..535a70f2bf40 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java @@ -24,10 +24,6 @@ import android.content.DialogInterface; import android.graphics.PorterDuff; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -43,6 +39,11 @@ import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.ThemeUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.DialogFragment; + /** * Dialog to input the password for sharing a file/folder. * @@ -142,7 +143,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { if (window != null) { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); } - + return d; } diff --git a/src/main/java/com/owncloud/android/ui/dialog/SortingOrderDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/SortingOrderDialogFragment.java index 53d904c6971a..d5c64ea2e254 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/SortingOrderDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/SortingOrderDialogFragment.java @@ -24,9 +24,6 @@ import android.app.Dialog; import android.graphics.Typeface; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.DialogFragment; -import android.support.v7.widget.AppCompatButton; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -38,6 +35,10 @@ import com.owncloud.android.utils.FileSortOrder; import com.owncloud.android.utils.ThemeUtils; +import androidx.annotation.NonNull; +import androidx.appcompat.widget.AppCompatButton; +import androidx.fragment.app.DialogFragment; + /** * Dialog to show and choose the sorting order for the file listing. */ diff --git a/src/main/java/com/owncloud/android/ui/dialog/SslUntrustedCertDialog.java b/src/main/java/com/owncloud/android/ui/dialog/SslUntrustedCertDialog.java index 04dfa40f5e81..84bd88f1950f 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/SslUntrustedCertDialog.java +++ b/src/main/java/com/owncloud/android/ui/dialog/SslUntrustedCertDialog.java @@ -24,7 +24,6 @@ import android.app.Dialog; import android.net.http.SslError; import android.os.Bundle; -import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; @@ -46,24 +45,26 @@ import java.security.GeneralSecurityException; import java.security.cert.X509Certificate; +import androidx.fragment.app.DialogFragment; + /** * Dialog to show information about an untrusted certificate and allow the user * to decide trust on it or not. - * + * * Abstract implementation of common functionality for different dialogs that * get the information about the error and the certificate from different classes. */ public class SslUntrustedCertDialog extends DialogFragment { - + private final static String TAG = SslUntrustedCertDialog.class.getSimpleName(); - + protected View mView; protected SslErrorHandler mHandler; protected X509Certificate m509Certificate; private ErrorViewAdapter mErrorViewAdapter; private CertificateViewAdapter mCertificateViewAdapter; - + public static SslUntrustedCertDialog newInstanceForEmptySslError(SslError error, SslErrorHandler handler) { if (error == null) { throw new IllegalArgumentException("Trying to create instance with parameter error == null"); @@ -77,7 +78,7 @@ public static SslUntrustedCertDialog newInstanceForEmptySslError(SslError error, dialog.mCertificateViewAdapter = new SslCertificateViewAdapter(error.getCertificate()); return dialog; } - + public static SslUntrustedCertDialog newInstanceForFullSslError(CertificateCombinedException sslException) { if (sslException == null) { throw new IllegalArgumentException("Trying to create instance with parameter sslException == null"); @@ -88,7 +89,7 @@ public static SslUntrustedCertDialog newInstanceForFullSslError(CertificateCombi dialog.mCertificateViewAdapter = new X509CertificateViewAdapter(sslException.getServerCertificate()); return dialog; } - + public static SslUntrustedCertDialog newInstanceForFullSslError(X509Certificate cert, SslError error, SslErrorHandler handler) { if (cert == null) { throw new IllegalArgumentException("Trying to create instance with parameter cert == null"); @@ -106,8 +107,8 @@ public static SslUntrustedCertDialog newInstanceForFullSslError(X509Certificate dialog.mCertificateViewAdapter = new X509CertificateViewAdapter(cert); return dialog; } - - + + @Override public void onAttach(Activity activity) { Log_OC.d(TAG, "onAttach"); @@ -117,7 +118,7 @@ public void onAttach(Activity activity) { } } - + @Override public void onCreate(Bundle savedInstanceState) { Log_OC.d(TAG, "onCreate, savedInstanceState is " + savedInstanceState); @@ -126,7 +127,7 @@ public void onCreate(Bundle savedInstanceState) { setCancelable(false); mView = null; } - + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log_OC.d(TAG, "onCreateView, savedInsanceState is " + savedInstanceState); @@ -138,14 +139,14 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa } else { ((ViewGroup)mView.getParent()).removeView(mView); } - - Button ok = (Button) mView.findViewById(R.id.ok); + + Button ok = mView.findViewById(R.id.ok); ok.setOnClickListener(new OnCertificateTrusted()); - - Button cancel = (Button) mView.findViewById(R.id.cancel); + + Button cancel = mView.findViewById(R.id.cancel); cancel.setOnClickListener(new OnCertificateNotTrusted()); - - Button details = (Button) mView.findViewById(R.id.details_btn); + + Button details = mView.findViewById(R.id.details_btn); details.setOnClickListener(new OnClickListener() { @Override @@ -163,10 +164,10 @@ public void onClick(View v) { } }); - + return mView; } - + @Override public Dialog onCreateDialog(Bundle savedInstanceState) { @@ -184,9 +185,9 @@ public void onDestroyView() { } super.onDestroyView(); } - + private class OnCertificateNotTrusted implements OnClickListener { - + @Override public void onClick(View v) { getDialog().cancel(); @@ -196,8 +197,8 @@ public void onClick(View v) { ((OnSslUntrustedCertListener)getActivity()).onCancelCertificate(); } } - - + + private class OnCertificateTrusted implements OnClickListener { @Override @@ -217,20 +218,22 @@ public void onClick(View v) { } } } - + } - - + + public interface OnSslUntrustedCertListener { - public void onSavedCertificate(); - public void onFailedSavingCertificate(); - public void onCancelCertificate(); + void onSavedCertificate(); + + void onFailedSavingCertificate(); + + void onCancelCertificate(); } - + public interface ErrorViewAdapter { void updateErrorView(View mView); } - + public interface CertificateViewAdapter { void updateCertificateView(View mView); } 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 79bb80c9c062..1d24176989f8 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.java @@ -27,13 +27,6 @@ import android.graphics.Typeface; import android.os.Build; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v7.app.AlertDialog; -import android.support.v7.widget.AppCompatButton; -import android.support.v7.widget.AppCompatCheckBox; -import android.support.v7.widget.SwitchCompat; import android.text.style.StyleSpan; import android.view.LayoutInflater; import android.view.View; @@ -53,6 +46,14 @@ import java.io.File; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.widget.AppCompatButton; +import androidx.appcompat.widget.AppCompatCheckBox; +import androidx.appcompat.widget.SwitchCompat; +import androidx.fragment.app.DialogFragment; + import static com.owncloud.android.datamodel.SyncedFolderDisplayItem.UNPERSISTED_ID; /** diff --git a/src/main/java/com/owncloud/android/ui/fragment/EditShareFragment.java b/src/main/java/com/owncloud/android/ui/fragment/EditShareFragment.java index 1f382f9813bf..432eb3e09de4 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/EditShareFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/EditShareFragment.java @@ -23,10 +23,6 @@ import android.accounts.Account; import android.graphics.PorterDuff; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.Fragment; -import android.support.v7.widget.AppCompatCheckBox; -import android.support.v7.widget.SwitchCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -46,6 +42,11 @@ import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.utils.ThemeUtils; +import androidx.annotation.NonNull; +import androidx.appcompat.widget.AppCompatCheckBox; +import androidx.appcompat.widget.SwitchCompat; +import androidx.fragment.app.Fragment; + public class EditShareFragment extends Fragment { private static final String TAG = EditShareFragment.class.getSimpleName(); diff --git a/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java index 1640b26a9d0f..54eb76e4484f 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java @@ -29,18 +29,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; -import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; -import android.support.annotation.StringRes; -import android.support.design.widget.BottomNavigationView; -import android.support.design.widget.FloatingActionButton; -import android.support.v4.app.Fragment; -import android.support.v4.view.MenuItemCompat; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.SearchView; import android.text.TextUtils; import android.util.DisplayMetrics; import android.view.LayoutInflater; @@ -61,6 +49,8 @@ import android.widget.RelativeLayout; import android.widget.TextView; +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -82,6 +72,17 @@ import java.util.ArrayList; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.annotation.StringRes; +import androidx.appcompat.widget.SearchView; +import androidx.core.view.MenuItemCompat; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + public class ExtendedListFragment extends Fragment implements OnItemClickListener, OnEnforceableRefreshListener, SearchView.OnQueryTextListener, SearchView.OnCloseListener { @@ -232,7 +233,7 @@ public void run() { }); final View mSearchEditFrame = searchView - .findViewById(android.support.v7.appcompat.R.id.search_edit_frame); + .findViewById(androidx.appcompat.R.id.search_edit_frame); ViewTreeObserver vto = mSearchEditFrame.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { diff --git a/src/main/java/com/owncloud/android/ui/fragment/FeatureFragment.java b/src/main/java/com/owncloud/android/ui/fragment/FeatureFragment.java index e4d4e3f791e0..e0a6b0c37861 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/FeatureFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/FeatureFragment.java @@ -2,9 +2,6 @@ import android.content.Context; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; import android.text.SpannableString; import android.text.Spanned; import android.text.style.BulletSpan; @@ -20,6 +17,10 @@ import com.owncloud.android.features.FeatureItem; import com.owncloud.android.utils.ThemeUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + public class FeatureFragment extends Fragment { private FeatureItem item; diff --git a/src/main/java/com/owncloud/android/ui/fragment/FeatureWebFragment.java b/src/main/java/com/owncloud/android/ui/fragment/FeatureWebFragment.java index 5e059eaf7e96..954a1e3e8680 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/FeatureWebFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/FeatureWebFragment.java @@ -3,9 +3,6 @@ import android.annotation.SuppressLint; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -14,6 +11,10 @@ import com.owncloud.android.R; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + public class FeatureWebFragment extends Fragment { private String mWebUrl; diff --git a/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java b/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java index b43673346324..6e6cdb3cae9f 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java @@ -28,14 +28,6 @@ import android.graphics.PorterDuff; import android.os.AsyncTask; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.design.widget.Snackbar; -import android.support.design.widget.TextInputEditText; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentActivity; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -44,6 +36,8 @@ import android.widget.ProgressBar; import android.widget.TextView; +import com.google.android.material.snackbar.Snackbar; +import com.google.android.material.textfield.TextInputEditText; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -75,6 +69,12 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import butterknife.BindString; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java b/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java index 34eaa103f289..fa3a8a29a1d9 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java @@ -26,10 +26,6 @@ import android.content.Context; import android.graphics.Bitmap; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.TabLayout; -import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -42,6 +38,7 @@ import android.widget.ProgressBar; import android.widget.TextView; +import com.google.android.material.tabs.TabLayout; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; @@ -64,6 +61,9 @@ import java.lang.ref.WeakReference; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.viewpager.widget.ViewPager; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; diff --git a/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java b/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java index 77d1b001f56a..1ac665634772 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java @@ -25,14 +25,6 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.Snackbar; -import android.support.v4.app.Fragment; -import android.support.v7.widget.AppCompatCheckBox; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.SearchView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.Menu; @@ -44,6 +36,7 @@ import android.widget.PopupMenu; import android.widget.TextView; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; @@ -68,6 +61,13 @@ import java.util.List; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatCheckBox; +import androidx.appcompat.widget.SearchView; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; diff --git a/src/main/java/com/owncloud/android/ui/fragment/FileFragment.java b/src/main/java/com/owncloud/android/ui/fragment/FileFragment.java index f0d00ea4606d..0b2656808cb9 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/FileFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/FileFragment.java @@ -24,14 +24,15 @@ import android.accounts.Account; import android.app.Activity; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.ui.activity.ComponentsGetter; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + import static com.owncloud.android.ui.activity.FileActivity.EXTRA_FILE; @@ -39,15 +40,15 @@ * Common methods for {@link Fragment}s containing {@link OCFile}s */ public class FileFragment extends Fragment { - + private OCFile mFile; - + protected ContainerActivity mContainerActivity; /** * Creates an empty fragment. - * + * * It's necessary to keep a public constructor without parameters; the system uses it when * tries to reinstantiate a fragment automatically. */ @@ -65,7 +66,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) { /** * Creates an instance for a given {@OCFile}. - * + * * @param file */ public static FileFragment newInstance(OCFile file) { @@ -80,19 +81,19 @@ public static FileFragment newInstance(OCFile file) { /** * Getter for the hold {@link OCFile} - * + * * @return The {@link OCFile} hold */ public OCFile getFile() { return mFile; } - - + + protected void setFile(OCFile file) { mFile = file; } - - + + /** * {@inheritDoc} */ @@ -101,14 +102,14 @@ public void onAttach(Activity activity) { super.onAttach(activity); try { mContainerActivity = (ContainerActivity) activity; - + } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement " + ContainerActivity.class.getSimpleName()); } } - - + + /** * {@inheritDoc} */ @@ -116,9 +117,9 @@ public void onAttach(Activity activity) { public void onDetach() { mContainerActivity = null; super.onDetach(); - } - - + } + + /** * Interface to implement by any Activity that includes some instance of FileListFragment * Interface to implement by any Activity that includes some instance of FileFragment @@ -127,7 +128,7 @@ public interface ContainerActivity extends ComponentsGetter { /** * Request the parent activity to show the details of an {@link OCFile}. - * + * * @param file File to show details */ void showDetails(OCFile file); @@ -140,30 +141,30 @@ public interface ContainerActivity extends ComponentsGetter { */ void showDetails(OCFile file, int activeTab); - + ///// TO UNIFY IN A SINGLE CALLBACK METHOD - EVENT NOTIFICATIONs -> something happened // inside the fragment, MAYBE activity is interested --> unify in notification method /** * Callback method invoked when a the user browsed into a different folder through the * list of files - * + * * @param folder */ void onBrowsedDownTo(OCFile folder); /** * Callback method invoked when a the 'transfer state' of a file changes. - * + * * This happens when a download or upload is started or ended for a file. - * + * * This method is necessary by now to update the user interface of the double-pane layout * in tablets because methods {@link FileDownloaderBinder#isDownloading(Account, OCFile)} * and {@link FileUploaderBinder#isUploading(Account, OCFile)} - * won't provide the needed response before the method where this is called finishes. - * + * won't provide the needed response before the method where this is called finishes. + * * TODO Remove this when the transfer state of a file is kept in the database * (other thing TODO) - * + * * @param file OCFile which state changed. * @param downloading Flag signaling if the file is now downloading. * @param uploading Flag signaling if the file is now uploading. diff --git a/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java index 8095547994c8..188f9b82c494 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java @@ -23,9 +23,6 @@ import android.app.Activity; import android.os.Bundle; import android.os.Environment; -import android.support.annotation.NonNull; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -40,6 +37,10 @@ import java.io.File; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + /** * A Fragment that lists all files and folders in a given LOCAL path. diff --git a/src/main/java/com/owncloud/android/ui/fragment/OCFileListBottomSheetDialog.java b/src/main/java/com/owncloud/android/ui/fragment/OCFileListBottomSheetDialog.java index 9f5e0298b396..6e4860f2ec60 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/OCFileListBottomSheetDialog.java +++ b/src/main/java/com/owncloud/android/ui/fragment/OCFileListBottomSheetDialog.java @@ -22,18 +22,18 @@ import android.content.Context; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.design.widget.BottomSheetBehavior; -import android.support.design.widget.BottomSheetDialog; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import com.google.android.material.bottomsheet.BottomSheetBehavior; +import com.google.android.material.bottomsheet.BottomSheetDialog; import com.owncloud.android.R; import com.owncloud.android.lib.resources.status.OCCapability; import com.owncloud.android.utils.ThemeUtils; +import androidx.annotation.NonNull; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; diff --git a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index 5353b0c971f2..f1aaf069cfd3 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -35,18 +35,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.StringRes; -import android.support.design.widget.BottomNavigationView; -import android.support.design.widget.Snackbar; -import android.support.v4.app.FragmentActivity; -import android.support.v4.widget.DrawerLayout; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.ActionMode; import android.view.LayoutInflater; @@ -59,6 +47,8 @@ import android.widget.PopupMenu; import android.widget.RelativeLayout; +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -122,6 +112,17 @@ import java.util.List; import java.util.Set; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import androidx.appcompat.app.ActionBar; +import androidx.drawerlayout.widget.DrawerLayout; +import androidx.fragment.app.FragmentActivity; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + /** * A Fragment that lists all files and folders in a given path. * TODO refactor to get rid of direct dependency on FileDisplayActivity diff --git a/src/main/java/com/owncloud/android/ui/fragment/SearchShareesFragment.java b/src/main/java/com/owncloud/android/ui/fragment/SearchShareesFragment.java index c1426d81f97b..c127ddfbd26e 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/SearchShareesFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/SearchShareesFragment.java @@ -26,9 +26,6 @@ import android.app.SearchManager; import android.content.Context; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.Fragment; -import android.support.v7.widget.SearchView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -45,6 +42,10 @@ import java.util.List; +import androidx.annotation.NonNull; +import androidx.appcompat.widget.SearchView; +import androidx.fragment.app.Fragment; + /** * Fragment for Searching sharees (users and groups) * @@ -111,7 +112,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, View view = inflater.inflate(R.layout.search_users_groups_layout, container, false); // Get the SearchView and set the searchable configuration - SearchView searchView = (SearchView) view.findViewById(R.id.searchView); + SearchView searchView = view.findViewById(R.id.searchView); SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE); searchView.setSearchableInfo(searchManager.getSearchableInfo( getActivity().getComponentName()) // assumes parent activity is the searchable activity @@ -177,7 +178,7 @@ private void updateListOfUserGroups() { ); // Show data - ListView usersList = (ListView) getView().findViewById(R.id.searchUsersListView); + ListView usersList = getView().findViewById(R.id.searchUsersListView); if (mShares.size() > 0) { usersList.setVisibility(View.VISIBLE); diff --git a/src/main/java/com/owncloud/android/ui/fragment/ShareFileFragment.java b/src/main/java/com/owncloud/android/ui/fragment/ShareFileFragment.java index 1a21f5446ac6..a6e283df400c 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/ShareFileFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/ShareFileFragment.java @@ -28,11 +28,6 @@ import android.graphics.Bitmap; import android.graphics.PorterDuff; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.design.widget.Snackbar; -import android.support.v4.app.Fragment; -import android.support.v7.widget.AppCompatButton; -import android.support.v7.widget.SwitchCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -44,6 +39,7 @@ import android.widget.ScrollView; import android.widget.TextView; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.datamodel.ThumbnailsCacheManager; @@ -63,6 +59,11 @@ import java.util.Date; import java.util.List; +import androidx.annotation.NonNull; +import androidx.appcompat.widget.AppCompatButton; +import androidx.appcompat.widget.SwitchCompat; +import androidx.fragment.app.Fragment; + /** * Fragment for Sharing a file with sharees (users or groups) or creating * a public link. diff --git a/src/main/java/com/owncloud/android/ui/fragment/TaskRetainerFragment.java b/src/main/java/com/owncloud/android/ui/fragment/TaskRetainerFragment.java index 819da09b242c..5a0ee90358fe 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/TaskRetainerFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/TaskRetainerFragment.java @@ -20,11 +20,12 @@ import android.content.Context; import android.os.Bundle; -import android.support.v4.app.Fragment; import com.owncloud.android.ui.activity.ReceiveExternalFilesActivity; import com.owncloud.android.ui.asynctasks.CopyAndUploadContentUrisTask; +import androidx.fragment.app.Fragment; + /** * Fragment retaining a background task across configuration changes. */ diff --git a/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java index f50945bd9065..64a2a0daff14 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java @@ -38,13 +38,6 @@ import android.os.Bundle; import android.os.Handler; import android.provider.ContactsContract; -import android.support.annotation.NonNull; -import android.support.design.widget.Snackbar; -import android.support.v4.graphics.drawable.RoundedBitmapDrawable; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AlertDialog; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -65,6 +58,7 @@ import com.bumptech.glide.request.target.SimpleTarget; import com.evernote.android.job.JobRequest; import com.evernote.android.job.util.support.PersistableBundleCompat; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; @@ -93,6 +87,12 @@ import java.util.List; import java.util.Set; +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AlertDialog; +import androidx.core.graphics.drawable.RoundedBitmapDrawable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; import butterknife.ButterKnife; import ezvcard.Ezvcard; @@ -706,9 +706,7 @@ private void toggleVCard(ContactListFragment.ContactItemViewHolder holder, int v .setColorFilter(ThemeUtils.primaryAccentColor(context), PorterDuff.Mode.SRC_ATOP); } - if (!checkedVCards.contains(verifiedPosition)) { - checkedVCards.add(verifiedPosition); - } + checkedVCards.add(verifiedPosition); if (checkedVCards.size() == SINGLE_SELECTION) { EventBus.getDefault().post(new VCardToggleEvent(true)); } @@ -717,9 +715,7 @@ private void toggleVCard(ContactListFragment.ContactItemViewHolder holder, int v holder.getName().getCheckMarkDrawable().clearColorFilter(); } - if (checkedVCards.contains(verifiedPosition)) { - checkedVCards.remove(verifiedPosition); - } + checkedVCards.remove(verifiedPosition); if (checkedVCards.isEmpty()) { EventBus.getDefault().post(new VCardToggleEvent(false)); diff --git a/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactsBackupFragment.java b/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactsBackupFragment.java index b23370e50c84..aeb5a138fe71 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactsBackupFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactsBackupFragment.java @@ -29,13 +29,6 @@ import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.Snackbar; -import android.support.v4.app.Fragment; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.AppCompatButton; -import android.support.v7.widget.SwitchCompat; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -46,6 +39,7 @@ import com.evernote.android.job.JobRequest; import com.evernote.android.job.util.support.PersistableBundleCompat; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.R; import com.owncloud.android.datamodel.ArbitraryDataProvider; import com.owncloud.android.datamodel.FileDataStorageManager; @@ -66,6 +60,12 @@ import java.util.Date; import java.util.List; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.AppCompatButton; +import androidx.appcompat.widget.SwitchCompat; +import androidx.fragment.app.Fragment; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; diff --git a/src/main/java/com/owncloud/android/ui/fragment/util/FileDetailSharingFragmentHelper.java b/src/main/java/com/owncloud/android/ui/fragment/util/FileDetailSharingFragmentHelper.java index 733927c22f6b..097aa14a5a72 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/util/FileDetailSharingFragmentHelper.java +++ b/src/main/java/com/owncloud/android/ui/fragment/util/FileDetailSharingFragmentHelper.java @@ -22,13 +22,14 @@ import android.app.SearchManager; import android.content.ComponentName; -import android.support.annotation.Nullable; -import android.support.v7.widget.SearchView; import android.view.View; import android.view.inputmethod.EditorInfo; import com.owncloud.android.lib.resources.status.OCCapability; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.SearchView; + /** * Helper calls for visibility logic of the sharing fragment. */ diff --git a/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java b/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java index 605b78a5a92d..2a5a8d1d8039 100755 --- a/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java +++ b/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java @@ -32,11 +32,6 @@ import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Build; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.content.FileProvider; import android.util.Log; import android.view.View; import android.webkit.MimeTypeMap; @@ -81,7 +76,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -89,6 +84,12 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.FileProvider; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + /** * Helper implementation for file operations locally and remote. */ @@ -115,7 +116,7 @@ private String getUrlFromFile(String storagePath, Pattern pattern) { InputStreamReader fr = null; BufferedReader br = null; try { - fr = new InputStreamReader(new FileInputStream(storagePath), "UTF8"); + fr = new InputStreamReader(new FileInputStream(storagePath), Charset.forName("UTF-8")); br = new BufferedReader(fr); String line; diff --git a/src/main/java/com/owncloud/android/ui/helpers/UriUploader.java b/src/main/java/com/owncloud/android/ui/helpers/UriUploader.java index 399be1b74a34..5e26fc335834 100644 --- a/src/main/java/com/owncloud/android/ui/helpers/UriUploader.java +++ b/src/main/java/com/owncloud/android/ui/helpers/UriUploader.java @@ -22,7 +22,6 @@ import android.content.ContentResolver; import android.net.Uri; import android.os.Parcelable; -import android.support.v4.app.FragmentManager; import com.owncloud.android.R; import com.owncloud.android.files.services.FileUploader; @@ -37,6 +36,8 @@ import java.util.ArrayList; import java.util.List; +import androidx.fragment.app.FragmentManager; + /** * This class examines URIs pointing to files to upload and then requests {@link FileUploader} to upload them. * diff --git a/src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java b/src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java index 09aa65f41714..01568906750c 100644 --- a/src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java +++ b/src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java @@ -24,12 +24,12 @@ import android.os.Handler; import android.os.HandlerThread; import android.os.Process; -import android.support.v4.app.NotificationCompat; import com.owncloud.android.utils.ThemeUtils; import java.util.Random; +import androidx.core.app.NotificationCompat; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; public final class NotificationUtils { @@ -47,12 +47,12 @@ private NotificationUtils() { } /** - * Factory method for {@link android.support.v4.app.NotificationCompat.Builder} instances. + * Factory method for {@link androidx.core.app.NotificationCompat.Builder} instances. * * Not strictly needed from the moment when the minimum API level supported by the app * was raised to 14 (Android 4.0). * - * Formerly, returned a customized implementation of {@link android.support.v4.app.NotificationCompat.Builder} + * Formerly, returned a customized implementation of {@link androidx.core.app.NotificationCompat.Builder} * for Android API levels >= 8 and < 14. * * Kept in place for the extra abstraction level; notifications in the app need a review, and they @@ -68,18 +68,18 @@ public static NotificationCompat.Builder newNotificationBuilder(Context context) @SuppressFBWarnings("DMI") public static void cancelWithDelay(final NotificationManager notificationManager, final int notificationId, long delayInMillis) { - + HandlerThread thread = new HandlerThread( "NotificationDelayerThread_" + (new Random(System.currentTimeMillis())).nextInt(), Process.THREAD_PRIORITY_BACKGROUND); thread.start(); - - Handler handler = new Handler(thread.getLooper()); - handler.postDelayed(new Runnable() { - public void run() { + + Handler handler = new Handler(thread.getLooper()); + handler.postDelayed(new Runnable() { + public void run() { notificationManager.cancel(notificationId); ((HandlerThread)Thread.currentThread()).getLooper().quit(); - } + } }, delayInMillis); } } diff --git a/src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java b/src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java index 2467832935e8..4a683392d5e0 100644 --- a/src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java +++ b/src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java @@ -21,8 +21,6 @@ import android.accounts.Account; import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentStatePagerAdapter; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; @@ -39,6 +37,9 @@ import java.lang.ref.WeakReference; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentStatePagerAdapter; + /** * This Fragment is used to monitor the progress of a file downloading. @@ -48,7 +49,7 @@ public class FileDownloadFragment extends FileFragment implements OnClickListene public static final String EXTRA_FILE = "FILE"; public static final String EXTRA_ACCOUNT = "ACCOUNT"; private static final String EXTRA_ERROR = "ERROR"; - + private static final String ARG_FILE = "FILE"; private static final String ARG_IGNORE_FIRST = "IGNORE_FIRST"; private static final String ARG_ACCOUNT = "ACCOUNT" ; @@ -93,7 +94,7 @@ public static Fragment newInstance(OCFile file, Account account, boolean ignoreF /** * Creates an empty details fragment. - * + * * It's necessary to keep a public constructor without parameters; the system uses it when tries to * reinstantiate a fragment automatically. */ @@ -142,7 +143,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, mProgressListener = new ProgressListener(progressBar); (mView.findViewById(R.id.cancelBtn)).setOnClickListener(this); - + (mView.findViewById(R.id.fileDownloadLL)).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java b/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java index bf58458b005b..287b335bbb56 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java @@ -28,9 +28,6 @@ import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; -import android.support.v4.view.ViewPager; -import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.ActionBar; import android.view.MenuItem; import android.view.View; @@ -55,6 +52,9 @@ import com.owncloud.android.ui.fragment.FileFragment; import com.owncloud.android.utils.MimeTypeUtil; +import androidx.appcompat.app.ActionBar; +import androidx.drawerlayout.widget.DrawerLayout; +import androidx.viewpager.widget.ViewPager; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -113,13 +113,13 @@ protected void onCreate(Bundle savedInstanceState) { setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); } }); - + if (savedInstanceState != null) { mRequestWaitingForBinder = savedInstanceState.getBoolean(KEY_WAITING_FOR_BINDER); } else { mRequestWaitingForBinder = false; } - + } private void initViewPager() { @@ -162,7 +162,7 @@ private void initViewPager() { public void onStart() { super.onStart(); } - + @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); @@ -173,7 +173,7 @@ protected void onSaveInstanceState(Bundle outState) { @Override public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationResult result) { super.onRemoteOperationFinish(operation, result); - + if (operation instanceof RemoveFileOperation) { finish(); } else if (operation instanceof SynchronizeFileOperation) { @@ -181,7 +181,7 @@ public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationRe } } - + private void onSynchronizeFileOperationFinish(RemoteOperationResult result) { if (result.isSuccess()) { supportInvalidateOptionsMenu(); @@ -198,7 +198,7 @@ private class PreviewImageServiceConnection implements ServiceConnection { @Override public void onServiceConnected(ComponentName component, IBinder service) { - + if (component.equals(new ComponentName(PreviewImageActivity.this, FileDownloader.class))) { mDownloaderBinder = (FileDownloaderBinder) service; @@ -214,7 +214,7 @@ public void onServiceConnected(ComponentName component, IBinder service) { Log_OC.d(TAG, "Upload service connected"); mUploaderBinder = (FileUploaderBinder) service; } - + } @Override @@ -236,17 +236,17 @@ public void onServiceDisconnected(ComponentName component) { public void onStop() { super.onStop(); } - - + + @Override public void onDestroy() { super.onDestroy(); } - + @Override public boolean onOptionsItemSelected(MenuItem item) { boolean returnValue = false; - + switch(item.getItemId()){ case android.R.id.home: if (isDrawerOpen()) { @@ -260,7 +260,7 @@ public boolean onOptionsItemSelected(MenuItem item) { returnValue = super.onOptionsItemSelected(item); break; } - + return returnValue; } @@ -270,7 +270,7 @@ protected void onResume() { super.onResume(); mDownloadFinishReceiver = new DownloadFinishReceiver(); - + IntentFilter filter = new IntentFilter(FileDownloader.getDownloadFinishMessage()); filter.addAction(FileDownloader.getDownloadAddedMessage()); registerReceiver(mDownloadFinishReceiver, filter); @@ -280,17 +280,17 @@ protected void onResume() { protected void onPostResume() { super.onPostResume(); } - + @Override public void onPause() { if (mDownloadFinishReceiver != null){ unregisterReceiver(mDownloadFinishReceiver); mDownloadFinishReceiver = null; } - + super.onPause(); } - + private void backToDisplayActivity() { finish(); @@ -317,7 +317,7 @@ public void showDetails(OCFile file, int activeTab) { public void requestForDownload(OCFile file) { if (mDownloaderBinder == null) { Log_OC.d(TAG, "requestForDownload called without binder to download service"); - + } else if (!mDownloaderBinder.isDownloading(getAccount(), file)) { Intent i = new Intent(this, FileDownloader.class); i.putExtra(FileDownloader.EXTRA_ACCOUNT, getAccount()); @@ -329,7 +329,7 @@ public void requestForDownload(OCFile file) { /** * This method will be invoked when a new page becomes selected. Animation is not necessarily * complete. - * + * * @param position Position index of the new selected page */ @Override @@ -358,11 +358,11 @@ public void onPageSelected(int position) { } } - + /** - * Called when the scroll state changes. Useful for discovering when the user begins dragging, + * Called when the scroll state changes. Useful for discovering when the user begins dragging, * when the pager is automatically settling to the current page. when it is fully stopped/idle. - * + * * @param state The new scroll state (SCROLL_STATE_IDLE, _DRAGGING, _SETTLING */ @Override @@ -373,13 +373,13 @@ public void onPageScrollStateChanged(int state) { /** * This method will be invoked when the current page is scrolled, either as part of a * programmatically initiated smooth scroll or a user initiated touch scroll. - * - * @param position Position index of the first page currently being displayed. + * + * @param position Position index of the first page currently being displayed. * Page position+1 will be visible if positionOffset is * nonzero. * @param positionOffset Value from [0, 1) indicating the offset from the page * at position. - * @param positionOffsetPixels Value in pixels indicating the offset from position. + * @param positionOffsetPixels Value in pixels indicating the offset from position. */ @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { @@ -388,7 +388,7 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse /** * Class waiting for broadcast events from the {@link FileDownloader} service. - * + * * Updates the UI when a download is started or finished, provided that it is relevant for the * folder displayed in the gallery. */ @@ -397,7 +397,7 @@ private class DownloadFinishReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { String accountName = intent.getStringExtra(FileDownloader.ACCOUNT_NAME); String downloadedRemotePath = intent.getStringExtra(FileDownloader.EXTRA_REMOTE_PATH); - if (getAccount().name.equals(accountName) && + if (getAccount().name.equals(accountName) && downloadedRemotePath != null) { OCFile file = getStorageManager().getFileByPath(downloadedRemotePath); @@ -406,18 +406,18 @@ public void onReceive(Context context, Intent intent) { FileDownloader.EXTRA_DOWNLOAD_RESULT, false); //boolean isOffscreen = Math.abs((mViewPager.getCurrentItem() - position)) // <= mViewPager.getOffscreenPageLimit(); - + if (position >= 0 && intent.getAction().equals(FileDownloader.getDownloadFinishMessage())) { if (downloadWasFine) { - mPreviewImagePagerAdapter.updateFile(position, file); - + mPreviewImagePagerAdapter.updateFile(position, file); + } else { mPreviewImagePagerAdapter.updateWithDownloadError(position); } mPreviewImagePagerAdapter.notifyDataSetChanged(); // will trigger the creation // of new fragments - + } else { Log_OC.d(TAG, "Download finished, but the fragment is offscreen"); } @@ -461,12 +461,12 @@ protected void onAccountSet(boolean stateWasRecovered) { if (!MimeTypeUtil.isImage(file)) { throw new IllegalArgumentException("Non-image file passed as argument"); } - + // Update file according to DB file, if it is possible if (file.getFileId() > FileDataStorageManager.ROOT_PARENT_ID) { file = getStorageManager().getFileById(file.getFileId()); } - + if (file != null) { /// Refresh the activity according to the Account and OCFile set setFile(file); // reset after getting it fresh from storageManager @@ -485,16 +485,16 @@ protected void onAccountSet(boolean stateWasRecovered) { @Override public void onBrowsedDownTo(OCFile folder) { // TODO Auto-generated method stub - + } @Override public void onTransferStateChanged(OCFile file, boolean downloading, boolean uploading) { // TODO Auto-generated method stub - + } - - + + @SuppressLint("InlinedApi") private void hideSystemUI(View anchorView) { anchorView.setSystemUiVisibility( @@ -506,7 +506,7 @@ private void hideSystemUI(View anchorView) { | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION // draw full window; Android >= 4.1 ); } - + @SuppressLint("InlinedApi") private void showSystemUI(View anchorView) { anchorView.setSystemUiVisibility( diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewImageErrorFragment.java b/src/main/java/com/owncloud/android/ui/preview/PreviewImageErrorFragment.java index fd1ea8cbceb2..7b0cce38c645 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewImageErrorFragment.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewImageErrorFragment.java @@ -1,7 +1,6 @@ package com.owncloud.android.ui.preview; import android.os.Bundle; -import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -9,6 +8,8 @@ import com.owncloud.android.R; import com.owncloud.android.ui.fragment.FileFragment; +import androidx.annotation.Nullable; + import static com.owncloud.android.ui.activity.FileActivity.EXTRA_FILE; /** diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java b/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java index 4db2a6ebeb88..689c54207ed1 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java @@ -33,11 +33,6 @@ import android.os.Build; import android.os.Bundle; import android.os.Process; -import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; -import android.support.annotation.StringRes; -import android.support.design.widget.Snackbar; -import android.support.v4.app.FragmentStatePagerAdapter; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.Menu; @@ -54,6 +49,7 @@ import com.caverock.androidsvg.SVG; import com.caverock.androidsvg.SVGParseException; import com.github.chrisbanes.photoview.PhotoView; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; @@ -73,6 +69,10 @@ import java.io.IOException; import java.lang.ref.WeakReference; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.annotation.StringRes; +import androidx.fragment.app.FragmentStatePagerAdapter; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import pl.droidsonroids.gif.GifDrawable; diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java b/src/main/java/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java index 7e8b5452cfa2..786d37c8db58 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.java @@ -22,10 +22,6 @@ import android.accounts.Account; import android.content.Context; import android.graphics.Matrix; -import android.support.annotation.NonNull; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentStatePagerAdapter; import android.util.SparseArray; import android.view.ViewGroup; @@ -43,6 +39,11 @@ import javax.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentStatePagerAdapter; + /** * Adapter class that provides Fragment instances */ diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java b/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java index 9114a7d75908..d761a8709dc7 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java @@ -38,9 +38,6 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.IBinder; -import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; -import android.support.annotation.StringRes; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -78,6 +75,10 @@ import java.lang.ref.WeakReference; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.annotation.StringRes; + /** * This fragment shows a preview of a downloaded media file (audio or video). @@ -382,7 +383,7 @@ public void onPrepareOptionsMenu(Menu menu) { mf.filter(menu, true); } - // additional restriction for this fragment + // additional restriction for this fragment // TODO allow renaming in PreviewImageFragment MenuItem item = menu.findItem(R.id.action_rename_file); if (item != null) { @@ -501,7 +502,7 @@ private void playVideo() { // create and prepare control panel for the user mMediaController.setMediaPlayer(mVideoPreview); - // load the video file in the video player + // load the video file in the video player // when done, VideoHelper#onPrepared() will be called if (getFile().isDown()) { mVideoPreview.setVideoURI(getFile().getStorageUri()); diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.java b/src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.java index 82d64e62dc19..5c2bd707671c 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.java @@ -23,9 +23,6 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; -import android.support.annotation.NonNull; -import android.support.v4.view.MenuItemCompat; -import android.support.v7.widget.SearchView; import android.text.Html; import android.view.LayoutInflater; import android.view.Menu; @@ -63,6 +60,10 @@ import java.util.List; import java.util.Scanner; +import androidx.annotation.NonNull; +import androidx.appcompat.widget.SearchView; +import androidx.core.view.MenuItemCompat; + public class PreviewTextFragment extends FileFragment implements SearchView.OnQueryTextListener { private static final String EXTRA_FILE = "FILE"; private static final String EXTRA_ACCOUNT = "ACCOUNT"; diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewVideoActivity.java b/src/main/java/com/owncloud/android/ui/preview/PreviewVideoActivity.java index 15bba16e4741..d8a17a706009 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewVideoActivity.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewVideoActivity.java @@ -29,7 +29,6 @@ import android.media.MediaPlayer.OnPreparedListener; import android.net.Uri; import android.os.Bundle; -import android.support.v7.app.AlertDialog; import android.widget.MediaController; import android.widget.VideoView; @@ -40,6 +39,8 @@ import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.utils.MimeTypeUtil; +import androidx.appcompat.app.AlertDialog; + /** * Activity implementing a basic video player. * diff --git a/src/main/java/com/owncloud/android/ui/trashbin/RemoteTrashbinRepository.java b/src/main/java/com/owncloud/android/ui/trashbin/RemoteTrashbinRepository.java index 425a3029c643..0ac72a240de6 100644 --- a/src/main/java/com/owncloud/android/ui/trashbin/RemoteTrashbinRepository.java +++ b/src/main/java/com/owncloud/android/ui/trashbin/RemoteTrashbinRepository.java @@ -24,7 +24,6 @@ import android.accounts.AccountManager; import android.content.Context; import android.os.AsyncTask; -import android.support.annotation.NonNull; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -41,6 +40,8 @@ import java.util.List; +import androidx.annotation.NonNull; + public class RemoteTrashbinRepository implements TrashbinRepository { private static final String TAG = RemoteTrashbinRepository.class.getSimpleName(); diff --git a/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java b/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java index ac9783774a65..4f8c1c3dc252 100644 --- a/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java +++ b/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java @@ -22,12 +22,6 @@ import android.content.Intent; import android.os.Bundle; -import android.support.design.widget.Snackbar; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -35,6 +29,7 @@ import android.widget.PopupMenu; import android.widget.TextView; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.R; import com.owncloud.android.db.PreferenceManager; import com.owncloud.android.lib.resources.trashbin.model.TrashbinFile; @@ -49,6 +44,11 @@ import java.util.List; +import androidx.appcompat.widget.Toolbar; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import butterknife.BindString; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/src/main/java/com/owncloud/android/utils/BitmapUtils.java b/src/main/java/com/owncloud/android/utils/BitmapUtils.java index b9f475850ba9..21afff150845 100644 --- a/src/main/java/com/owncloud/android/utils/BitmapUtils.java +++ b/src/main/java/com/owncloud/android/utils/BitmapUtils.java @@ -26,9 +26,6 @@ import android.graphics.Matrix; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; -import android.support.media.ExifInterface; -import android.support.v4.graphics.drawable.RoundedBitmapDrawable; -import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory; import com.owncloud.android.lib.common.utils.Log_OC; @@ -38,6 +35,10 @@ import java.security.NoSuchAlgorithmException; import java.util.Locale; +import androidx.core.graphics.drawable.RoundedBitmapDrawable; +import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory; +import androidx.exifinterface.media.ExifInterface; + /** * Utility class with methods for decoding Bitmaps. */ @@ -81,12 +82,12 @@ public static Bitmap decodeSampledBitmapFromFile(String srcPath, int reqWidth, i /** - * Calculates a proper value for options.inSampleSize in order to decode a Bitmap minimizing + * Calculates a proper value for options.inSampleSize in order to decode a Bitmap minimizing * the memory overload and covering a target surface of reqWidth x reqHeight if the original - * image is big enough. + * image is big enough. * * @param options Bitmap decoding options; options.outHeight and options.inHeight should - * be set. + * be set. * @param reqWidth Width of the surface where the Bitmap will be drawn on, in pixels. * @param reqHeight Height of the surface where the Bitmap will be drawn on, in pixels. * @return The largest inSampleSize value that is a power of 2 and keeps both @@ -128,12 +129,12 @@ public static Bitmap scaleBitmap(Bitmap bitmap, float px, int width, int height, int h = Math.round(scale * height); return Bitmap.createScaledBitmap(bitmap, w, h, true); } - + /** - * Rotate bitmap according to EXIF orientation. - * Cf. http://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto/ + * Rotate bitmap according to EXIF orientation. + * Cf. http://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto/ * @param bitmap Bitmap to be rotated - * @param storagePath Path to source file of bitmap. Needed for EXIF information. + * @param storagePath Path to source file of bitmap. Needed for EXIF information. * @return correctly EXIF-rotated bitmap */ public static Bitmap rotateImage(Bitmap bitmap, String storagePath) { @@ -371,7 +372,7 @@ public static RoundedBitmapDrawable bitmapToCircularBitmapDrawable(Resources res if (bitmap == null) { return null; } - + RoundedBitmapDrawable roundedBitmap = RoundedBitmapDrawableFactory.create(resources, bitmap); roundedBitmap.setCircular(true); return roundedBitmap; diff --git a/src/main/java/com/owncloud/android/utils/DeviceCredentialUtils.java b/src/main/java/com/owncloud/android/utils/DeviceCredentialUtils.java index ea996136cae5..a9952b2e6281 100644 --- a/src/main/java/com/owncloud/android/utils/DeviceCredentialUtils.java +++ b/src/main/java/com/owncloud/android/utils/DeviceCredentialUtils.java @@ -23,10 +23,11 @@ import android.app.KeyguardManager; import android.content.Context; import android.os.Build; -import android.support.annotation.RequiresApi; import com.owncloud.android.lib.common.utils.Log_OC; +import androidx.annotation.RequiresApi; + /** * Utility class with methods for handling device credentials. */ diff --git a/src/main/java/com/owncloud/android/utils/DisplayUtils.java b/src/main/java/com/owncloud/android/utils/DisplayUtils.java index a18302b0ff67..fb33809265e2 100644 --- a/src/main/java/com/owncloud/android/utils/DisplayUtils.java +++ b/src/main/java/com/owncloud/android/utils/DisplayUtils.java @@ -36,12 +36,6 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.PictureDrawable; import android.net.Uri; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.StringRes; -import android.support.design.widget.BottomNavigationView; -import android.support.design.widget.Snackbar; -import android.support.v7.widget.AppCompatDrawableManager; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.TextUtils; @@ -61,6 +55,8 @@ import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.Target; import com.caverock.androidsvg.SVG; +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -98,6 +94,11 @@ import java.util.Map; import java.util.Set; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import androidx.appcompat.widget.AppCompatDrawableManager; + /** * A helper class for UI/display related operations. */ diff --git a/src/main/java/com/owncloud/android/utils/DrawerMenuUtil.java b/src/main/java/com/owncloud/android/utils/DrawerMenuUtil.java index f5a4952e1126..9c1758c8961c 100644 --- a/src/main/java/com/owncloud/android/utils/DrawerMenuUtil.java +++ b/src/main/java/com/owncloud/android/utils/DrawerMenuUtil.java @@ -22,7 +22,6 @@ import android.accounts.Account; import android.content.res.Resources; -import android.support.annotation.Nullable; import android.view.Menu; import com.owncloud.android.R; @@ -30,6 +29,8 @@ import com.owncloud.android.lib.resources.status.OCCapability; import com.owncloud.android.lib.resources.status.OwnCloudVersion; +import androidx.annotation.Nullable; + /** * A helper class for drawer menu related operations. */ diff --git a/src/main/java/com/owncloud/android/utils/EncryptionUtils.java b/src/main/java/com/owncloud/android/utils/EncryptionUtils.java index e87c092861a1..0d09d73fc040 100644 --- a/src/main/java/com/owncloud/android/utils/EncryptionUtils.java +++ b/src/main/java/com/owncloud/android/utils/EncryptionUtils.java @@ -24,8 +24,6 @@ import android.accounts.Account; import android.content.Context; import android.os.Build; -import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; import android.util.Base64; import com.google.gson.Gson; @@ -85,6 +83,9 @@ import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; +import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; + /** * Utils for encryption */ diff --git a/src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java b/src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java index c0da4b6b78c9..fc4125345ff1 100644 --- a/src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java +++ b/src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java @@ -22,8 +22,6 @@ package com.owncloud.android.utils; import android.content.res.Resources; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import com.owncloud.android.R; import com.owncloud.android.lib.common.operations.RemoteOperation; @@ -49,6 +47,9 @@ import java.io.File; import java.net.SocketTimeoutException; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + /** * Class to choose proper error messages to show to the user depending on the results of operations, * always following the same policy diff --git a/src/main/java/com/owncloud/android/utils/FilesSyncHelper.java b/src/main/java/com/owncloud/android/utils/FilesSyncHelper.java index db53ad2008e0..93e94ffb5931 100644 --- a/src/main/java/com/owncloud/android/utils/FilesSyncHelper.java +++ b/src/main/java/com/owncloud/android/utils/FilesSyncHelper.java @@ -30,7 +30,6 @@ import android.net.Uri; import android.os.Build; import android.provider.MediaStore; -import android.support.annotation.RequiresApi; import android.text.TextUtils; import android.util.Log; @@ -63,6 +62,8 @@ import java.util.Set; import java.util.concurrent.TimeUnit; +import androidx.annotation.RequiresApi; + /** * Various utilities that make auto upload tick */ diff --git a/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java b/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java index 6dd1e89d8e30..818ea12d2fc4 100644 --- a/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java +++ b/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java @@ -22,7 +22,6 @@ import android.content.Context; import android.graphics.drawable.Drawable; import android.net.Uri; -import android.support.v4.content.ContextCompat; import android.webkit.MimeTypeMap; import com.owncloud.android.R; @@ -41,6 +40,8 @@ import javax.annotation.Nullable; +import androidx.core.content.ContextCompat; + /** *

Helper class for detecting the right icon for a file or folder, * based on its mime type and file extension.

diff --git a/src/main/java/com/owncloud/android/utils/PermissionUtil.java b/src/main/java/com/owncloud/android/utils/PermissionUtil.java index 3167ac19e629..edac63522682 100644 --- a/src/main/java/com/owncloud/android/utils/PermissionUtil.java +++ b/src/main/java/com/owncloud/android/utils/PermissionUtil.java @@ -3,8 +3,9 @@ import android.Manifest; import android.app.Activity; import android.content.Context; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; + +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; /** * Created by scherzia on 29.12.2015. diff --git a/src/main/java/com/owncloud/android/utils/StringUtils.java b/src/main/java/com/owncloud/android/utils/StringUtils.java index 50888df0eff1..f6c860e84b93 100644 --- a/src/main/java/com/owncloud/android/utils/StringUtils.java +++ b/src/main/java/com/owncloud/android/utils/StringUtils.java @@ -20,12 +20,13 @@ package com.owncloud.android.utils; -import android.support.annotation.ColorInt; import android.text.TextUtils; import java.util.regex.Matcher; import java.util.regex.Pattern; +import androidx.annotation.ColorInt; + /** * Helper class for handling and manipulating strings. */ diff --git a/src/main/java/com/owncloud/android/utils/ThemeUtils.java b/src/main/java/com/owncloud/android/utils/ThemeUtils.java index 8fe9f43ee834..b0dae44e3c44 100644 --- a/src/main/java/com/owncloud/android/utils/ThemeUtils.java +++ b/src/main/java/com/owncloud/android/utils/ThemeUtils.java @@ -30,20 +30,6 @@ import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.os.Build; -import android.support.annotation.ColorInt; -import android.support.annotation.DrawableRes; -import android.support.annotation.Nullable; -import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.Snackbar; -import android.support.v4.app.FragmentActivity; -import android.support.v4.content.ContextCompat; -import android.support.v4.content.res.ResourcesCompat; -import android.support.v4.graphics.ColorUtils; -import android.support.v4.graphics.drawable.DrawableCompat; -import android.support.v4.widget.CompoundButtonCompat; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.AppCompatCheckBox; -import android.support.v7.widget.SwitchCompat; import android.text.Html; import android.text.Spanned; import android.view.Window; @@ -52,6 +38,8 @@ import android.widget.ProgressBar; import android.widget.SeekBar; +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.snackbar.Snackbar; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -59,6 +47,19 @@ import com.owncloud.android.lib.resources.status.OCCapability; import com.owncloud.android.ui.activity.ToolbarActivity; +import androidx.annotation.ColorInt; +import androidx.annotation.DrawableRes; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.AppCompatCheckBox; +import androidx.appcompat.widget.SwitchCompat; +import androidx.core.content.ContextCompat; +import androidx.core.content.res.ResourcesCompat; +import androidx.core.graphics.ColorUtils; +import androidx.core.graphics.drawable.DrawableCompat; +import androidx.core.widget.CompoundButtonCompat; +import androidx.fragment.app.FragmentActivity; + /** * Utility class with methods for client side theming. */ diff --git a/src/main/res/layout-land/account_setup.xml b/src/main/res/layout-land/account_setup.xml index 5b81e33b7ade..770459261621 100644 --- a/src/main/res/layout-land/account_setup.xml +++ b/src/main/res/layout-land/account_setup.xml @@ -58,7 +58,7 @@ android:orientation="vertical" android:padding="@dimen/standard_half_padding" > - - @@ -110,7 +110,7 @@ - + - @@ -190,9 +190,9 @@ android:importantForAutofill="no" android:visibility="gone" /> - + - @@ -212,9 +212,9 @@ android:importantForAutofill="no" android:visibility="gone" /> - + - - + - - + - - - - + - @@ -183,9 +183,9 @@ android:visibility="gone" android:importantForAutofill="no"/> - + - @@ -205,9 +205,9 @@ android:importantForAutofill="no" android:visibility="gone" /> - + - - + - - + - . --> - - - - + - - \ No newline at end of file + diff --git a/src/main/res/layout/activity_manage_space.xml b/src/main/res/layout/activity_manage_space.xml index 459fed9e95d5..97f2181e3a8c 100644 --- a/src/main/res/layout/activity_manage_space.xml +++ b/src/main/res/layout/activity_manage_space.xml @@ -31,7 +31,7 @@ android:text="@string/manage_space_description" /> - - \ No newline at end of file + diff --git a/src/main/res/layout/activity_sso_grant_permission.xml b/src/main/res/layout/activity_sso_grant_permission.xml index aa137f81578a..0fd8a89abe5e 100644 --- a/src/main/res/layout/activity_sso_grant_permission.xml +++ b/src/main/res/layout/activity_sso_grant_permission.xml @@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - - - - + diff --git a/src/main/res/layout/choose_template.xml b/src/main/res/layout/choose_template.xml index eaba5ad6aef1..3fde7ef4f057 100644 --- a/src/main/res/layout/choose_template.xml +++ b/src/main/res/layout/choose_template.xml @@ -26,12 +26,11 @@ android:orientation="vertical" android:padding="@dimen/standard_padding"> - - + android:layout_weight="1"> - - - \ No newline at end of file + diff --git a/src/main/res/layout/contacts_backup_fragment.xml b/src/main/res/layout/contacts_backup_fragment.xml index 6a315048567f..d149c37a6fde 100644 --- a/src/main/res/layout/contacts_backup_fragment.xml +++ b/src/main/res/layout/contacts_backup_fragment.xml @@ -28,7 +28,7 @@ android:layout_height="wrap_content" android:orientation="vertical"> - - - - \ No newline at end of file + diff --git a/src/main/res/layout/contacts_preference.xml b/src/main/res/layout/contacts_preference.xml index 1430e60b8049..548fa56ed5a0 100644 --- a/src/main/res/layout/contacts_preference.xml +++ b/src/main/res/layout/contacts_preference.xml @@ -18,7 +18,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - - - \ No newline at end of file + diff --git a/src/main/res/layout/drawer.xml b/src/main/res/layout/drawer.xml index d165e901eae5..a48326a11ae4 100644 --- a/src/main/res/layout/drawer.xml +++ b/src/main/res/layout/drawer.xml @@ -21,7 +21,7 @@ - - + diff --git a/src/main/res/layout/edit_share_layout.xml b/src/main/res/layout/edit_share_layout.xml index 91c74fcf2381..9f4fcd79fc90 100644 --- a/src/main/res/layout/edit_share_layout.xml +++ b/src/main/res/layout/edit_share_layout.xml @@ -52,7 +52,7 @@ android:layout_marginRight="@dimen/standard_margin" android:layout_marginBottom="@dimen/standard_margin"> - - - - - - \ No newline at end of file + diff --git a/src/main/res/layout/externalsite_webview.xml b/src/main/res/layout/externalsite_webview.xml index ad54e3db50f6..289712e5ff0d 100644 --- a/src/main/res/layout/externalsite_webview.xml +++ b/src/main/res/layout/externalsite_webview.xml @@ -18,7 +18,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - - + diff --git a/src/main/res/layout/file_details_activities_fragment.xml b/src/main/res/layout/file_details_activities_fragment.xml index fbc965769e5e..48949e34ae1e 100644 --- a/src/main/res/layout/file_details_activities_fragment.xml +++ b/src/main/res/layout/file_details_activities_fragment.xml @@ -32,7 +32,7 @@ android:layout_marginStart="@dimen/standard_padding" android:orientation="horizontal"> - - - - + - - + diff --git a/src/main/res/layout/file_details_fragment.xml b/src/main/res/layout/file_details_fragment.xml index 4ed63cb02b51..b1cfba468bb6 100644 --- a/src/main/res/layout/file_details_fragment.xml +++ b/src/main/res/layout/file_details_fragment.xml @@ -181,7 +181,7 @@ android:layout_height="1dp" android:background="@color/list_divider_background" /> - - diff --git a/src/main/res/layout/file_details_share_user_item.xml b/src/main/res/layout/file_details_share_user_item.xml index 94ed069f2439..e5eb5d5343dd 100644 --- a/src/main/res/layout/file_details_share_user_item.xml +++ b/src/main/res/layout/file_details_share_user_item.xml @@ -53,7 +53,7 @@ android:textColor="@color/black" android:textSize="@dimen/file_details_username_text_size" /> - - - - - . --> - - + diff --git a/src/main/res/layout/files_folder_picker.xml b/src/main/res/layout/files_folder_picker.xml index 03f9586f53c9..e9d3835f17bf 100644 --- a/src/main/res/layout/files_folder_picker.xml +++ b/src/main/res/layout/files_folder_picker.xml @@ -24,7 +24,7 @@ - - + - - - \ No newline at end of file + diff --git a/src/main/res/layout/files_picker.xml b/src/main/res/layout/files_picker.xml index d124458eb680..899e081664f8 100644 --- a/src/main/res/layout/files_picker.xml +++ b/src/main/res/layout/files_picker.xml @@ -53,7 +53,7 @@ android:orientation="horizontal" android:padding="@dimen/standard_padding"> - - - - - - - + - - + - - \ No newline at end of file + diff --git a/src/main/res/layout/participate_layout.xml b/src/main/res/layout/participate_layout.xml index f0042612a04c..eb7b9b0a2890 100755 --- a/src/main/res/layout/participate_layout.xml +++ b/src/main/res/layout/participate_layout.xml @@ -18,7 +18,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - - - + diff --git a/src/main/res/layout/passcodelock.xml b/src/main/res/layout/passcodelock.xml index 62948d625890..4250acbcdf1e 100644 --- a/src/main/res/layout/passcodelock.xml +++ b/src/main/res/layout/passcodelock.xml @@ -89,7 +89,7 @@ android:textCursorDrawable="@null" /> - - @@ -39,6 +39,6 @@ android:autofillHints="password"> - + diff --git a/src/main/res/layout/preview_image_activity.xml b/src/main/res/layout/preview_image_activity.xml index 5d5601f8f667..111192d2f448 100644 --- a/src/main/res/layout/preview_image_activity.xml +++ b/src/main/res/layout/preview_image_activity.xml @@ -3,7 +3,7 @@ ownCloud Android client application Copyright (C) 2015 ownCloud Inc. - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 2, as published by the Free Software Foundation. @@ -17,7 +17,7 @@ along with this program. If not, see . --> - - + - + diff --git a/src/main/res/layout/richdocuments_webview.xml b/src/main/res/layout/richdocuments_webview.xml index 7fee9b0ce024..85259ed30970 100644 --- a/src/main/res/layout/richdocuments_webview.xml +++ b/src/main/res/layout/richdocuments_webview.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . --> - - + diff --git a/src/main/res/layout/search_users_groups_layout.xml b/src/main/res/layout/search_users_groups_layout.xml index 3c24adee83e6..4340ef3fa481 100644 --- a/src/main/res/layout/search_users_groups_layout.xml +++ b/src/main/res/layout/search_users_groups_layout.xml @@ -34,7 +34,7 @@ android:textAppearance="@style/TextAppearance.AppCompat.Title" android:padding="@dimen/standard_padding"/> - . --> - @@ -111,10 +111,10 @@ android:alpha="0.3" android:background="@color/black"/> - - + diff --git a/src/main/res/layout/share_file_layout.xml b/src/main/res/layout/share_file_layout.xml index 8576770b4256..afeb66145b12 100644 --- a/src/main/res/layout/share_file_layout.xml +++ b/src/main/res/layout/share_file_layout.xml @@ -122,7 +122,7 @@ android:text="@string/share_no_users" android:textSize="@dimen/share_file_layout_text_size"/> - - - - - - - - \ No newline at end of file + diff --git a/src/main/res/layout/sorting_order_fragment.xml b/src/main/res/layout/sorting_order_fragment.xml index 380df82de3c7..32fc92a69547 100644 --- a/src/main/res/layout/sorting_order_fragment.xml +++ b/src/main/res/layout/sorting_order_fragment.xml @@ -290,7 +290,7 @@ android:layout_height="wrap_content" android:gravity="end"> - - - - - - - - - + + - - - + - \ No newline at end of file + diff --git a/src/main/res/layout/synced_folders_settings_layout.xml b/src/main/res/layout/synced_folders_settings_layout.xml index af8c9abec0c9..00058f73ce14 100644 --- a/src/main/res/layout/synced_folders_settings_layout.xml +++ b/src/main/res/layout/synced_folders_settings_layout.xml @@ -68,7 +68,7 @@ android:paddingEnd="@dimen/zero" android:paddingTop="@dimen/standard_padding"> - - - - - - - . --> - - - + diff --git a/src/main/res/layout/toolbar_user_information.xml b/src/main/res/layout/toolbar_user_information.xml index f6c02468da0e..50b8a1974c71 100644 --- a/src/main/res/layout/toolbar_user_information.xml +++ b/src/main/res/layout/toolbar_user_information.xml @@ -18,7 +18,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - - - + diff --git a/src/main/res/layout/trashbin_activity.xml b/src/main/res/layout/trashbin_activity.xml index e7d80022e5e5..cf403e5a9b63 100644 --- a/src/main/res/layout/trashbin_activity.xml +++ b/src/main/res/layout/trashbin_activity.xml @@ -5,21 +5,21 @@ @author Tobias Kaminsky Copyright (C) 2018 Tobias Kaminsky Copyright (C) 2018 Nextcloud GmbH. - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . --> - - - + - - \ No newline at end of file + diff --git a/src/main/res/layout/upload_files_layout.xml b/src/main/res/layout/upload_files_layout.xml index 3d975403eb7c..51298e93afea 100644 --- a/src/main/res/layout/upload_files_layout.xml +++ b/src/main/res/layout/upload_files_layout.xml @@ -1,5 +1,4 @@ - - - - - + - - \ No newline at end of file + diff --git a/src/main/res/layout/uploader_layout.xml b/src/main/res/layout/uploader_layout.xml index aebfc30dda42..c310b9d059b0 100644 --- a/src/main/res/layout/uploader_layout.xml +++ b/src/main/res/layout/uploader_layout.xml @@ -1,5 +1,4 @@ - - - - - - - + card_view:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"> - + - + - + diff --git a/src/main/res/layout/whats_new_activity.xml b/src/main/res/layout/whats_new_activity.xml index 7a512d42feca..620e198362ea 100644 --- a/src/main/res/layout/whats_new_activity.xml +++ b/src/main/res/layout/whats_new_activity.xml @@ -37,12 +37,11 @@ android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="@color/primary_button_text_color"/> - - + android:layout_weight="82"> - --> - \ No newline at end of file + diff --git a/src/main/res/menu/receive_file_menu.xml b/src/main/res/menu/receive_file_menu.xml index 65b8352d7b55..7af002de4ef5 100644 --- a/src/main/res/menu/receive_file_menu.xml +++ b/src/main/res/menu/receive_file_menu.xml @@ -25,7 +25,7 @@ android:contentDescription="@string/actionbar_search" android:icon="@drawable/ic_search" android:title="@string/actionbar_search" - app:actionViewClass="android.support.v7.widget.SearchView" + app:actionViewClass="androidx.appcompat.widget.SearchView" app:showAsAction="ifRoom"/> - \ No newline at end of file +