From 8ee47a0ef5c5e7329a08d2aac1412074ae8b88b4 Mon Sep 17 00:00:00 2001 From: Nicolas Pomepuy Date: Wed, 8 Jan 2020 10:50:55 +0100 Subject: [PATCH] Move the media DB to a new module --- mediadb/.gitignore | 1 + mediadb/build.gradle | 70 +++++++++++++++++++ mediadb/consumer-rules.pro | 0 mediadb/proguard-rules.pro | 21 ++++++ .../vlc/mediadb/ExampleInstrumentedTest.kt | 48 +++++++++++++ mediadb/src/main/AndroidManifest.xml | 26 +++++++ .../videolan/vlc/mediadb}/BrowserFavDao.kt | 5 +- .../org/videolan/vlc/mediadb/Converters.kt | 67 ++++++++++++++++++ .../vlc/mediadb}/CustomDirectoryDao.kt | 2 +- .../videolan/vlc/mediadb}/ExternalSubDao.kt | 8 ++- .../videolan/vlc/mediadb}/MediaDatabase.kt | 36 ++++++++-- .../org/videolan/vlc/mediadb}/Migrations.kt | 10 +-- .../org/videolan/vlc/mediadb}/SlaveDao.kt | 2 +- .../videolan/vlc/mediadb/models/BrowserFav.kt | 63 +++++++++++++++++ .../vlc/mediadb}/models/CustomDirectory.kt | 2 +- .../vlc/mediadb}/models/ExternalSub.kt | 2 +- .../org/videolan/vlc/mediadb}/models/Slave.kt | 2 +- mediadb/src/main/res/values/strings.xml | 27 +++++++ .../videolan/vlc/mediadb/ExampleUnitTest.kt | 48 +++++++------ resources/build.gradle | 17 +++++ .../org/videolan/resources}/AndroidDevices.kt | 25 ++++--- .../java/org/videolan/resources/Constants.kt | 3 +- .../java/org/videolan/resources}/Strings.kt | 6 +- settings.gradle | 2 +- .../main/java/org/videolan/tools/Workers.kt | 46 ++++++++++++ .../videolan/vlc/database/MigrationTest.kt | 14 ++-- vlc-android/build.gradle | 1 + vlc-android/res/layout/playlist_item.xml | 2 +- .../src/org/videolan/vlc/DebugLogService.kt | 2 +- .../src/org/videolan/vlc/ExternalMonitor.kt | 5 +- .../src/org/videolan/vlc/FileProvider.kt | 2 +- .../org/videolan/vlc/MediaParsingService.kt | 15 ++-- .../org/videolan/vlc/MediaSessionCallback.kt | 2 +- .../src/org/videolan/vlc/PlaybackService.kt | 1 + .../videolan/vlc/RecommendationsService.kt | 5 +- .../src/org/videolan/vlc/RendererDelegate.kt | 2 +- .../src/org/videolan/vlc/StartActivity.kt | 1 + .../src/org/videolan/vlc/StoragesMonitor.kt | 2 +- .../src/org/videolan/vlc/TvReceiver.kt | 2 +- .../src/org/videolan/vlc/VLCApplication.kt | 2 +- .../org/videolan/vlc/gui/ContentActivity.kt | 2 +- .../src/org/videolan/vlc/gui/InfoActivity.kt | 1 + .../src/org/videolan/vlc/gui/MainActivity.kt | 5 +- .../org/videolan/vlc/gui/PlaylistActivity.kt | 1 + .../org/videolan/vlc/gui/SecondaryActivity.kt | 2 +- .../org/videolan/vlc/gui/SendCrashActivity.kt | 6 +- .../vlc/gui/audio/BaseAudioBrowser.kt | 1 + .../vlc/gui/browser/BaseBrowserAdapter.kt | 2 +- .../vlc/gui/browser/BaseBrowserFragment.kt | 4 +- .../vlc/gui/browser/FileBrowserFragment.kt | 6 +- .../vlc/gui/browser/FilePickerFragment.kt | 4 +- .../vlc/gui/browser/MediaBrowserFragment.kt | 4 +- .../videolan/vlc/gui/browser/PathAdapter.kt | 2 +- .../videolan/vlc/gui/dialogs/ContextSheet.kt | 2 +- .../vlc/gui/dialogs/NetworkServerDialog.kt | 2 +- .../vlc/gui/dialogs/PlaybackSpeedDialog.kt | 2 +- .../gui/dialogs/SubtitleDownloadFragment.kt | 3 +- .../vlc/gui/dialogs/VlcLoginDialog.kt | 5 +- .../org/videolan/vlc/gui/helpers/AudioUtil.kt | 4 +- .../videolan/vlc/gui/helpers/BitmapCache.kt | 4 +- .../videolan/vlc/gui/helpers/ImageLoader.kt | 2 +- .../vlc/gui/helpers/MedialibraryUtils.kt | 8 +-- .../vlc/gui/helpers/NotificationHelper.kt | 1 + .../vlc/gui/helpers/PlayerOptionsDelegate.kt | 2 + .../org/videolan/vlc/gui/helpers/UiTools.kt | 4 +- .../helpers/hf/StoragePermissionsDelegate.kt | 4 +- .../gui/helpers/hf/WriteExternalDelegate.kt | 7 +- .../vlc/gui/onboarding/OnboardingActivity.kt | 5 +- .../gui/onboarding/OnboardingThemeFragment.kt | 2 +- .../vlc/gui/onboarding/OnboardingViewModel.kt | 5 +- .../gui/preferences/PreferencesAdvanced.kt | 2 +- .../vlc/gui/preferences/PreferencesAudio.kt | 2 +- .../vlc/gui/preferences/PreferencesUi.kt | 3 +- .../org/videolan/vlc/gui/tv/MainTvFragment.kt | 2 +- .../gui/tv/audioplayer/AudioPlayerActivity.kt | 2 +- .../gui/tv/preferences/PreferencesAdvanced.kt | 2 +- .../gui/tv/preferences/PreferencesFragment.kt | 1 + .../vlc/gui/tv/preferences/PreferencesUi.kt | 3 +- .../gui/tv/preferences/PreferencesVideo.kt | 2 +- .../vlc/gui/video/MediaInfoAdapter.kt | 3 +- .../vlc/gui/video/VideoPlayerActivity.kt | 7 +- .../vlc/gui/video/VideoTouchDelegate.kt | 4 +- .../vlc/gui/video/benchmark/BenchActivity.kt | 2 +- .../src/org/videolan/vlc/media/MediaUtils.kt | 1 + .../org/videolan/vlc/media/PlaylistManager.kt | 6 +- .../videolan/vlc/providers/BrowserProvider.kt | 1 + .../vlc/providers/FileBrowserProvider.kt | 6 +- .../videolan/vlc/providers/StorageProvider.kt | 2 +- .../vlc/repository/BrowserFavRepository.kt | 11 ++- .../vlc/repository/DirectoryRepository.kt | 11 ++- .../vlc/repository/ExternalSubRepository.kt | 8 +-- .../vlc/repository/SlaveRepository.kt | 6 +- .../src/org/videolan/vlc/util/Browserutils.kt | 4 +- .../src/org/videolan/vlc/util/FileUtils.kt | 2 + .../src/org/videolan/vlc/util/Kextensions.kt | 1 + .../src/org/videolan/vlc/util/TvChannels.kt | 1 + vlc-android/src/org/videolan/vlc/util/Util.kt | 3 + .../videolan/vlc/util/VLCAudioFocusHelper.kt | 1 + .../src/org/videolan/vlc/util/Workers.kt | 22 ------ .../videolan/vlc/viewmodels/tv/MainTvModel.kt | 6 +- .../vlc/widget/VLCAppWidgetProvider.kt | 9 ++- .../org/videolan/vlc/util/TestUtil.kt | 40 +++++------ .../repository/BrowserFavRepositoryTest.kt | 8 +-- .../vlc/repository/DirectoryRepositoryTest.kt | 12 ++-- .../repository/ExternalSubRepositoryTest.kt | 14 ++-- .../vlc/repository/SlaveRepositoryTest.kt | 4 +- .../test/org/videolan/vlc/util/StringsTest.kt | 1 + .../vlc/viewmodels/SubtitlesModelTest.kt | 4 +- .../browser/FileBrowserModelTest.kt | 8 +-- .../viewmodels/browser/StorageModelTest.kt | 10 +-- 110 files changed, 664 insertions(+), 272 deletions(-) create mode 100644 mediadb/.gitignore create mode 100644 mediadb/build.gradle create mode 100644 mediadb/consumer-rules.pro create mode 100644 mediadb/proguard-rules.pro create mode 100644 mediadb/src/androidTest/java/org/videolan/vlc/mediadb/ExampleInstrumentedTest.kt create mode 100644 mediadb/src/main/AndroidManifest.xml rename {vlc-android/src/org/videolan/vlc/database => mediadb/src/main/java/org/videolan/vlc/mediadb}/BrowserFavDao.kt (97%) create mode 100644 mediadb/src/main/java/org/videolan/vlc/mediadb/Converters.kt rename {vlc-android/src/org/videolan/vlc/database => mediadb/src/main/java/org/videolan/vlc/mediadb}/CustomDirectoryDao.kt (89%) rename {vlc-android/src/org/videolan/vlc/database => mediadb/src/main/java/org/videolan/vlc/mediadb}/ExternalSubDao.kt (89%) rename {vlc-android/src/org/videolan/vlc/database => mediadb/src/main/java/org/videolan/vlc/mediadb}/MediaDatabase.kt (67%) rename {vlc-android/src/org/videolan/vlc/database => mediadb/src/main/java/org/videolan/vlc/mediadb}/Migrations.kt (96%) rename {vlc-android/src/org/videolan/vlc/database => mediadb/src/main/java/org/videolan/vlc/mediadb}/SlaveDao.kt (96%) create mode 100644 mediadb/src/main/java/org/videolan/vlc/mediadb/models/BrowserFav.kt rename {vlc-android/src/org/videolan/vlc/database => mediadb/src/main/java/org/videolan/vlc/mediadb}/models/CustomDirectory.kt (78%) rename {vlc-android/src/org/videolan/vlc/database => mediadb/src/main/java/org/videolan/vlc/mediadb}/models/ExternalSub.kt (96%) rename {vlc-android/src/org/videolan/vlc/database => mediadb/src/main/java/org/videolan/vlc/mediadb}/models/Slave.kt (97%) create mode 100644 mediadb/src/main/res/values/strings.xml rename vlc-android/src/org/videolan/vlc/database/models/BrowserFav.kt => mediadb/src/test/java/org/videolan/vlc/mediadb/ExampleUnitTest.kt (53%) rename {vlc-android/src/org/videolan/vlc/util => resources/src/main/java/org/videolan/resources}/AndroidDevices.kt (95%) rename {vlc-android/src/org/videolan/vlc/util => resources/src/main/java/org/videolan/resources}/Strings.kt (94%) create mode 100644 tools/src/main/java/org/videolan/tools/Workers.kt delete mode 100644 vlc-android/src/org/videolan/vlc/util/Workers.kt diff --git a/mediadb/.gitignore b/mediadb/.gitignore new file mode 100644 index 000000000..796b96d1c --- /dev/null +++ b/mediadb/.gitignore @@ -0,0 +1 @@ +/build diff --git a/mediadb/build.gradle b/mediadb/build.gradle new file mode 100644 index 000000000..ff77bd2a8 --- /dev/null +++ b/mediadb/build.gradle @@ -0,0 +1,70 @@ +/* + * ************************************************************************ + * build.gradle + * ************************************************************************* + * Copyright © 2020 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * 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 2 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-kapt' +apply plugin: 'kotlin-android-extensions' +android { + compileSdkVersion 29 + buildToolsVersion "29.0.2" + + + defaultConfig { + minSdkVersion 17 + targetSdkVersion 29 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles 'consumer-rules.pro' + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.core:core-ktx:1.1.0' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' + //Room + implementation "androidx.room:room-runtime:$rootProject.ext.roomVersion" + kapt "androidx.room:room-compiler:$rootProject.ext.roomVersion" + implementation project(':tools') + implementation project(':resources') + + + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$rootProject.ext.kotlinx_version" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$rootProject.ext.kotlinx_version" +} diff --git a/mediadb/consumer-rules.pro b/mediadb/consumer-rules.pro new file mode 100644 index 000000000..e69de29bb diff --git a/mediadb/proguard-rules.pro b/mediadb/proguard-rules.pro new file mode 100644 index 000000000..f1b424510 --- /dev/null +++ b/mediadb/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/mediadb/src/androidTest/java/org/videolan/vlc/mediadb/ExampleInstrumentedTest.kt b/mediadb/src/androidTest/java/org/videolan/vlc/mediadb/ExampleInstrumentedTest.kt new file mode 100644 index 000000000..165c9c555 --- /dev/null +++ b/mediadb/src/androidTest/java/org/videolan/vlc/mediadb/ExampleInstrumentedTest.kt @@ -0,0 +1,48 @@ +/* + * ************************************************************************ + * ExampleInstrumentedTest.kt + * ************************************************************************* + * Copyright © 2020 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * 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 2 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +package org.videolan.vlc.mediadb + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("org.videolan.vlc.mediadb.test", appContext.packageName) + } +} diff --git a/mediadb/src/main/AndroidManifest.xml b/mediadb/src/main/AndroidManifest.xml new file mode 100644 index 000000000..789fe0609 --- /dev/null +++ b/mediadb/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + diff --git a/vlc-android/src/org/videolan/vlc/database/BrowserFavDao.kt b/mediadb/src/main/java/org/videolan/vlc/mediadb/BrowserFavDao.kt similarity index 97% rename from vlc-android/src/org/videolan/vlc/database/BrowserFavDao.kt rename to mediadb/src/main/java/org/videolan/vlc/mediadb/BrowserFavDao.kt index c18daecc1..c9e624d22 100644 --- a/vlc-android/src/org/videolan/vlc/database/BrowserFavDao.kt +++ b/mediadb/src/main/java/org/videolan/vlc/mediadb/BrowserFavDao.kt @@ -20,14 +20,13 @@ package org.videolan.vlc.database +import android.net.Uri import androidx.lifecycle.LiveData import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import android.net.Uri -import org.videolan.vlc.database.models.BrowserFav - +import org.videolan.vlc.mediadb.models.BrowserFav @Dao interface BrowserFavDao { diff --git a/mediadb/src/main/java/org/videolan/vlc/mediadb/Converters.kt b/mediadb/src/main/java/org/videolan/vlc/mediadb/Converters.kt new file mode 100644 index 000000000..7188dfb0e --- /dev/null +++ b/mediadb/src/main/java/org/videolan/vlc/mediadb/Converters.kt @@ -0,0 +1,67 @@ +/* + * ************************************************************************ + * Converters.kt + * ************************************************************************* + * Copyright © 2020 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * 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 2 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +/******************************************************************************* + * Converters.kt + * **************************************************************************** + * Copyright © 2018 VLC authors and VideoLAN + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + ******************************************************************************/ + +package org.videolan.vlc.mediadb + +import android.net.Uri +import androidx.room.TypeConverter +import java.util.* + +class Converters { + @TypeConverter + fun uriToString(uri: Uri): String = uri.toString() + + @TypeConverter + fun stringToUri(value: String): Uri = Uri.parse(value) + + @TypeConverter + fun fromTimestamp(value: Long?): Date? { + return value?.let { Date(it) } + } + + @TypeConverter + fun dateToTimestamp(date: Date?): Long? { + return date?.time?.toLong() + } +} \ No newline at end of file diff --git a/vlc-android/src/org/videolan/vlc/database/CustomDirectoryDao.kt b/mediadb/src/main/java/org/videolan/vlc/mediadb/CustomDirectoryDao.kt similarity index 89% rename from vlc-android/src/org/videolan/vlc/database/CustomDirectoryDao.kt rename to mediadb/src/main/java/org/videolan/vlc/mediadb/CustomDirectoryDao.kt index c1548c638..83284072d 100644 --- a/vlc-android/src/org/videolan/vlc/database/CustomDirectoryDao.kt +++ b/mediadb/src/main/java/org/videolan/vlc/mediadb/CustomDirectoryDao.kt @@ -1,7 +1,7 @@ package org.videolan.vlc.database import androidx.room.* -import org.videolan.vlc.database.models.CustomDirectory +import org.videolan.vlc.mediadb.models.CustomDirectory @Dao interface CustomDirectoryDao { diff --git a/vlc-android/src/org/videolan/vlc/database/ExternalSubDao.kt b/mediadb/src/main/java/org/videolan/vlc/mediadb/ExternalSubDao.kt similarity index 89% rename from vlc-android/src/org/videolan/vlc/database/ExternalSubDao.kt rename to mediadb/src/main/java/org/videolan/vlc/mediadb/ExternalSubDao.kt index 6db42fc09..ed70a9375 100644 --- a/vlc-android/src/org/videolan/vlc/database/ExternalSubDao.kt +++ b/mediadb/src/main/java/org/videolan/vlc/mediadb/ExternalSubDao.kt @@ -21,9 +21,11 @@ package org.videolan.vlc.database import androidx.lifecycle.LiveData -import androidx.room.* -import org.videolan.vlc.database.models.ExternalSub - +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import org.videolan.vlc.mediadb.models.ExternalSub @Dao interface ExternalSubDao { diff --git a/vlc-android/src/org/videolan/vlc/database/MediaDatabase.kt b/mediadb/src/main/java/org/videolan/vlc/mediadb/MediaDatabase.kt similarity index 67% rename from vlc-android/src/org/videolan/vlc/database/MediaDatabase.kt rename to mediadb/src/main/java/org/videolan/vlc/mediadb/MediaDatabase.kt index 7b2edaa6b..9ffbad365 100644 --- a/vlc-android/src/org/videolan/vlc/database/MediaDatabase.kt +++ b/mediadb/src/main/java/org/videolan/vlc/mediadb/MediaDatabase.kt @@ -1,3 +1,27 @@ +/* + * ************************************************************************ + * MediaDatabase.kt + * ************************************************************************* + * Copyright © 2020 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * 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 2 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + /******************************************************************************* * MediaDatabase.kt * **************************************************************************** @@ -26,13 +50,13 @@ import androidx.room.Room import androidx.room.RoomDatabase import androidx.room.TypeConverters import androidx.sqlite.db.SupportSQLiteDatabase -import org.videolan.moviepedia.database.Converters +import org.videolan.resources.AndroidDevices import org.videolan.tools.SingletonHolder -import org.videolan.vlc.database.models.BrowserFav -import org.videolan.vlc.database.models.CustomDirectory -import org.videolan.vlc.database.models.ExternalSub -import org.videolan.vlc.database.models.Slave -import org.videolan.vlc.util.AndroidDevices +import org.videolan.vlc.mediadb.Converters +import org.videolan.vlc.mediadb.models.BrowserFav +import org.videolan.vlc.mediadb.models.CustomDirectory +import org.videolan.vlc.mediadb.models.ExternalSub +import org.videolan.vlc.mediadb.models.Slave private const val DB_NAME = "vlc_database" diff --git a/vlc-android/src/org/videolan/vlc/database/Migrations.kt b/mediadb/src/main/java/org/videolan/vlc/mediadb/Migrations.kt similarity index 96% rename from vlc-android/src/org/videolan/vlc/database/Migrations.kt rename to mediadb/src/main/java/org/videolan/vlc/mediadb/Migrations.kt index 89c9ccdaa..eb4432300 100644 --- a/vlc-android/src/org/videolan/vlc/database/Migrations.kt +++ b/mediadb/src/main/java/org/videolan/vlc/mediadb/Migrations.kt @@ -26,10 +26,10 @@ import androidx.sqlite.db.SupportSQLiteDatabase import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import org.videolan.resources.AndroidDevices +import org.videolan.resources.TYPE_LOCAL_FAV import org.videolan.resources.VLCCommonApplication import org.videolan.tools.Settings -import org.videolan.vlc.repository.BrowserFavRepository -import org.videolan.vlc.util.AndroidDevices private const val DIR_TABLE_NAME = "directories_table" private const val MEDIA_TABLE_NAME = "media_table" @@ -203,11 +203,13 @@ val migration_28_29 = object:Migration(28, 29) { } fun populateDB(context: Context) = GlobalScope.launch(Dispatchers.IO) { - val favRepo = BrowserFavRepository.getInstance(context) val uris = listOf(AndroidDevices.MediaFolders.EXTERNAL_PUBLIC_MOVIES_DIRECTORY_URI, AndroidDevices.MediaFolders.EXTERNAL_PUBLIC_MUSIC_DIRECTORY_URI, AndroidDevices.MediaFolders.EXTERNAL_PUBLIC_PODCAST_DIRECTORY_URI, AndroidDevices.MediaFolders.EXTERNAL_PUBLIC_DOWNLOAD_DIRECTORY_URI, AndroidDevices.MediaFolders.WHATSAPP_VIDEOS_FILE_URI) - for (uri in uris) favRepo.addLocalFavItem(uri, uri.lastPathSegment ?: "") + val browserFavDao = MediaDatabase.getInstance(context).browserFavDao() + + for (uri in uris) browserFavDao.insert(org.videolan.vlc.mediadb.models.BrowserFav(uri, TYPE_LOCAL_FAV, uri.lastPathSegment + ?: "", null)) } \ No newline at end of file diff --git a/vlc-android/src/org/videolan/vlc/database/SlaveDao.kt b/mediadb/src/main/java/org/videolan/vlc/mediadb/SlaveDao.kt similarity index 96% rename from vlc-android/src/org/videolan/vlc/database/SlaveDao.kt rename to mediadb/src/main/java/org/videolan/vlc/mediadb/SlaveDao.kt index bb44f9564..7b706b34d 100644 --- a/vlc-android/src/org/videolan/vlc/database/SlaveDao.kt +++ b/mediadb/src/main/java/org/videolan/vlc/mediadb/SlaveDao.kt @@ -24,7 +24,7 @@ import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import org.videolan.vlc.database.models.Slave +import org.videolan.vlc.mediadb.models.Slave @Dao interface SlaveDao { diff --git a/mediadb/src/main/java/org/videolan/vlc/mediadb/models/BrowserFav.kt b/mediadb/src/main/java/org/videolan/vlc/mediadb/models/BrowserFav.kt new file mode 100644 index 000000000..55d8a7f95 --- /dev/null +++ b/mediadb/src/main/java/org/videolan/vlc/mediadb/models/BrowserFav.kt @@ -0,0 +1,63 @@ +/* + * ************************************************************************ + * BrowserFav.kt + * ************************************************************************* + * Copyright © 2020 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * 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 2 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +/******************************************************************************* + * BrowserFav.kt + * **************************************************************************** + * Copyright © 2018 VLC authors and VideoLAN + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + ******************************************************************************/ + +package org.videolan.vlc.mediadb.models + +import android.net.Uri +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "fav_table") +data class BrowserFav( + @PrimaryKey + @ColumnInfo(name = "uri") + val uri: Uri, + @ColumnInfo(name = "type") + val type: Int, + @ColumnInfo(name = "title") + val title: String, + @ColumnInfo(name = "icon_url") + val iconUrl: String? +) diff --git a/vlc-android/src/org/videolan/vlc/database/models/CustomDirectory.kt b/mediadb/src/main/java/org/videolan/vlc/mediadb/models/CustomDirectory.kt similarity index 78% rename from vlc-android/src/org/videolan/vlc/database/models/CustomDirectory.kt rename to mediadb/src/main/java/org/videolan/vlc/mediadb/models/CustomDirectory.kt index 32079c0a3..c628655c3 100644 --- a/vlc-android/src/org/videolan/vlc/database/models/CustomDirectory.kt +++ b/mediadb/src/main/java/org/videolan/vlc/mediadb/models/CustomDirectory.kt @@ -1,4 +1,4 @@ -package org.videolan.vlc.database.models +package org.videolan.vlc.mediadb.models import androidx.room.Entity import androidx.room.PrimaryKey diff --git a/vlc-android/src/org/videolan/vlc/database/models/ExternalSub.kt b/mediadb/src/main/java/org/videolan/vlc/mediadb/models/ExternalSub.kt similarity index 96% rename from vlc-android/src/org/videolan/vlc/database/models/ExternalSub.kt rename to mediadb/src/main/java/org/videolan/vlc/mediadb/models/ExternalSub.kt index 4e621b394..00fbbc8e3 100644 --- a/vlc-android/src/org/videolan/vlc/database/models/ExternalSub.kt +++ b/mediadb/src/main/java/org/videolan/vlc/mediadb/models/ExternalSub.kt @@ -18,7 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. ******************************************************************************/ -package org.videolan.vlc.database.models +package org.videolan.vlc.mediadb.models import androidx.room.Entity diff --git a/vlc-android/src/org/videolan/vlc/database/models/Slave.kt b/mediadb/src/main/java/org/videolan/vlc/mediadb/models/Slave.kt similarity index 97% rename from vlc-android/src/org/videolan/vlc/database/models/Slave.kt rename to mediadb/src/main/java/org/videolan/vlc/mediadb/models/Slave.kt index 9b88a6fa8..8411472fa 100644 --- a/vlc-android/src/org/videolan/vlc/database/models/Slave.kt +++ b/mediadb/src/main/java/org/videolan/vlc/mediadb/models/Slave.kt @@ -18,7 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. ******************************************************************************/ -package org.videolan.vlc.database.models +package org.videolan.vlc.mediadb.models import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/mediadb/src/main/res/values/strings.xml b/mediadb/src/main/res/values/strings.xml new file mode 100644 index 000000000..6ac5c7ccd --- /dev/null +++ b/mediadb/src/main/res/values/strings.xml @@ -0,0 +1,27 @@ + + + + mediadb + diff --git a/vlc-android/src/org/videolan/vlc/database/models/BrowserFav.kt b/mediadb/src/test/java/org/videolan/vlc/mediadb/ExampleUnitTest.kt similarity index 53% rename from vlc-android/src/org/videolan/vlc/database/models/BrowserFav.kt rename to mediadb/src/test/java/org/videolan/vlc/mediadb/ExampleUnitTest.kt index 85a7bc5ad..f3a87a12b 100644 --- a/vlc-android/src/org/videolan/vlc/database/models/BrowserFav.kt +++ b/mediadb/src/test/java/org/videolan/vlc/mediadb/ExampleUnitTest.kt @@ -1,8 +1,9 @@ -/******************************************************************************* - * BrowserFav.kt - * **************************************************************************** - * Copyright © 2018 VLC authors and VideoLAN - * +/* + * ************************************************************************ + * ExampleUnitTest.kt + * ************************************************************************* + * Copyright © 2020 VLC authors and VideoLAN + * Author: Nicolas POMEPUY * 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 2 of the License, or @@ -16,24 +17,25 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. - ******************************************************************************/ + * ************************************************************************** + * + * + */ -package org.videolan.vlc.database.models +package org.videolan.vlc.mediadb -import androidx.room.ColumnInfo -import androidx.room.Entity -import androidx.room.PrimaryKey -import android.net.Uri +import org.junit.Test -@Entity(tableName = "fav_table") -data class BrowserFav ( - @PrimaryKey - @ColumnInfo(name = "uri") - val uri: Uri, - @ColumnInfo(name = "type") - val type: Int, - @ColumnInfo(name = "title") - val title: String, - @ColumnInfo(name = "icon_url") - val iconUrl: String? -) +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} diff --git a/resources/build.gradle b/resources/build.gradle index 8d7e80e2e..1f8e53605 100644 --- a/resources/build.gradle +++ b/resources/build.gradle @@ -22,12 +22,29 @@ android { debug { buildConfigField "String", "APP_ID", "\"${rootProject.ext.appId}.debug\"" } + dev { + initWith debug + matchingFallbacks = ['debug'] + } + } } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.multidex:multidex:2.0.1' + + + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$rootProject.ext.kotlinx_version" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$rootProject.ext.kotlinx_version" + + devImplementation project(':libvlc') + devImplementation project(':medialibrary') + debugImplementation "org.videolan.android:libvlc-all:$rootProject.ext.libvlcVersion" + debugImplementation "org.videolan.android:medialibrary-all:$rootProject.ext.medialibraryVersion" + + api project(':tools') + } repositories { mavenCentral() diff --git a/vlc-android/src/org/videolan/vlc/util/AndroidDevices.kt b/resources/src/main/java/org/videolan/resources/AndroidDevices.kt similarity index 95% rename from vlc-android/src/org/videolan/vlc/util/AndroidDevices.kt rename to resources/src/main/java/org/videolan/resources/AndroidDevices.kt index 6f6f7408f..19c84de82 100644 --- a/vlc-android/src/org/videolan/vlc/util/AndroidDevices.kt +++ b/resources/src/main/java/org/videolan/resources/AndroidDevices.kt @@ -18,7 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. */ -package org.videolan.vlc.util +package org.videolan.resources import android.annotation.TargetApi import android.content.Context @@ -34,11 +34,7 @@ import android.view.MotionEvent import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.util.AndroidUtil -import org.videolan.resources.VLCCommonApplication -import java.io.BufferedReader -import java.io.File -import java.io.FileReader -import java.io.IOException +import java.io.* import java.util.* @ObsoleteCoroutinesApi @@ -92,7 +88,7 @@ object AndroidDevices { continue } if (startsWith(deviceWL, device) && (typeWL.contains(type) || startsWith(mountWL, mountpoint))) { - val position = containsName(list, FileUtils.getFileNameFromPath(mountpoint)) + val position = containsName(list, mountpoint.getFileNameFromPath()) if (position > -1) list.removeAt(position) list.add(mountpoint) } @@ -100,7 +96,7 @@ object AndroidDevices { } } catch (ignored: IOException) { } finally { - Util.close(bufReader) + close(bufReader) } list.remove(EXTERNAL_PUBLIC_DIRECTORY) return list @@ -121,7 +117,7 @@ object AndroidDevices { devicesWithoutNavBar.add("HTC One S") devicesWithoutNavBar.add("HTC One X") devicesWithoutNavBar.add("HTC One XL") - hasNavBar = !devicesWithoutNavBar.contains(android.os.Build.MODEL) + hasNavBar = !devicesWithoutNavBar.contains(Build.MODEL) val ctx = VLCCommonApplication.appContext val pm = ctx.packageManager hasTsp = pm == null || pm.hasSystemFeature("android.hardware.touchscreen") @@ -216,4 +212,15 @@ object AndroidDevices { } } + + fun close(closeable: Closeable?): Boolean { + if (closeable != null) + try { + closeable.close() + return true + } catch (e: IOException) { + } + + return false + } } diff --git a/resources/src/main/java/org/videolan/resources/Constants.kt b/resources/src/main/java/org/videolan/resources/Constants.kt index 43931c94d..e31881205 100644 --- a/resources/src/main/java/org/videolan/resources/Constants.kt +++ b/resources/src/main/java/org/videolan/resources/Constants.kt @@ -189,6 +189,5 @@ const val TYPE_LOCAL_FAV = 1 const val CRASH_ML_CTX = "crash_ml_ctx" const val CRASH_ML_MSG = "crash_ml_msg" - -private fun String.buildPkgString() = "${BuildConfig.APP_ID}.$this" +fun String.buildPkgString() = "${BuildConfig.APP_ID}.$this" diff --git a/vlc-android/src/org/videolan/vlc/util/Strings.kt b/resources/src/main/java/org/videolan/resources/Strings.kt similarity index 94% rename from vlc-android/src/org/videolan/vlc/util/Strings.kt rename to resources/src/main/java/org/videolan/resources/Strings.kt index 20546133e..9073134aa 100644 --- a/vlc-android/src/org/videolan/vlc/util/Strings.kt +++ b/resources/src/main/java/org/videolan/resources/Strings.kt @@ -19,9 +19,9 @@ */ @file:JvmName("Strings") -package org.videolan.vlc.util -import org.videolan.vlc.BuildConfig +package org.videolan.resources + import java.text.DecimalFormat private const val TAG = "VLC/UiTools/Strings" @@ -62,4 +62,4 @@ fun String.removeFileProtocole(): String { this } -fun String.buildPkgString() = "${BuildConfig.APPLICATION_ID}.$this" +fun String.getFileNameFromPath() = substringBeforeLast('/') diff --git a/settings.gradle b/settings.gradle index 3983a053f..0d5c4203e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,3 @@ -include ':libvlc', ':api', ':medialibrary', ':tools', ':resources' +include ':libvlc', ':api', ':medialibrary', ':tools', ':resources', ':mediadb' include ':vlc-android' include ':moviepedia' diff --git a/tools/src/main/java/org/videolan/tools/Workers.kt b/tools/src/main/java/org/videolan/tools/Workers.kt new file mode 100644 index 000000000..2cb220a8c --- /dev/null +++ b/tools/src/main/java/org/videolan/tools/Workers.kt @@ -0,0 +1,46 @@ +/* + * ************************************************************************ + * Workers.kt + * ************************************************************************* + * Copyright © 2020 VLC authors and VideoLAN + * Author: Nicolas POMEPUY + * 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 2 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * ************************************************************************** + * + * + */ + +package org.videolan.tools + +import android.os.Looper +import kotlinx.coroutines.* + +fun runBackground(runnable: Runnable) { + if (Looper.myLooper() != Looper.getMainLooper()) runnable.run() + else AppScope.launch(Dispatchers.Default) { runnable.run() } +} + +fun runOnMainThread(runnable: Runnable) { + AppScope.launch { runnable.run() } +} + +fun runIO(runnable: Runnable) { + AppScope.launch(Dispatchers.IO) { runnable.run() } +} + +object AppScope : CoroutineScope { + @ExperimentalCoroutinesApi + override val coroutineContext = Dispatchers.Main.immediate + SupervisorJob() +} \ No newline at end of file diff --git a/vlc-android/androidTest/org/videolan/vlc/database/MigrationTest.kt b/vlc-android/androidTest/org/videolan/vlc/database/MigrationTest.kt index fb940f8c3..7c47e8f48 100644 --- a/vlc-android/androidTest/org/videolan/vlc/database/MigrationTest.kt +++ b/vlc-android/androidTest/org/videolan/vlc/database/MigrationTest.kt @@ -37,9 +37,9 @@ import org.junit.runner.RunWith import org.videolan.libvlc.interfaces.IMedia import org.videolan.vlc.VLCApplication import org.videolan.vlc.database.helpers.* -import org.videolan.vlc.database.models.BrowserFav -import org.videolan.vlc.database.models.ExternalSub -import org.videolan.vlc.database.models.Slave +import org.videolan.vlc.mediadb.models.BrowserFav +import org.videolan.vlc.mediadb.models.ExternalSub +import org.videolan.vlc.mediadb.models.Slave import org.videolan.tools.Settings import org.videolan.resources.TYPE_NETWORK_FAV import org.videolan.vlc.util.TestUtil @@ -84,9 +84,9 @@ class MigrationTest { val migratedDb = getMigratedRoomDatabase(migration_26_27, migration_27_28, migration_28_29) - val slave: Slave = migratedDb.slaveDao().get(slaveMedia1Path)[0] - val exSub: List = getValue(migratedDb.externalSubDao().get(exSubMedia1Name)) - val fav: BrowserFav = migratedDb.browserFavDao().get(favUri)[0] + val slave: org.videolan.vlc.mediadb.models.Slave = migratedDb.slaveDao().get(slaveMedia1Path)[0] + val exSub: List = getValue(migratedDb.externalSubDao().get(exSubMedia1Name)) + val fav: org.videolan.vlc.mediadb.models.BrowserFav = migratedDb.browserFavDao().get(favUri)[0] assertEquals(slave.mediaPath, slaveMedia1Path) assertEquals(slave.type, IMedia.Slave.Type.Subtitle) @@ -126,7 +126,7 @@ class MigrationTest { .build() // close the database and release any stream resources when the test finishes - migrationTestHelper.closeWhenFinished(database); + migrationTestHelper.closeWhenFinished(database) return database } } \ No newline at end of file diff --git a/vlc-android/build.gradle b/vlc-android/build.gradle index 8966acb96..529c78e4f 100644 --- a/vlc-android/build.gradle +++ b/vlc-android/build.gradle @@ -252,6 +252,7 @@ dependencies { implementation project(':api') implementation project(':tools') implementation project(':resources') + implementation project(':mediadb') // AppCompat implementation "androidx.activity:activity-ktx:$rootProject.ext.androidxActivityVersion" diff --git a/vlc-android/res/layout/playlist_item.xml b/vlc-android/res/layout/playlist_item.xml index 5558db455..fb12d30d9 100644 --- a/vlc-android/res/layout/playlist_item.xml +++ b/vlc-android/res/layout/playlist_item.xml @@ -9,7 +9,7 @@ - + { diff --git a/vlc-android/src/org/videolan/vlc/MediaSessionCallback.kt b/vlc-android/src/org/videolan/vlc/MediaSessionCallback.kt index 35f7ae739..93cf041b9 100644 --- a/vlc-android/src/org/videolan/vlc/MediaSessionCallback.kt +++ b/vlc-android/src/org/videolan/vlc/MediaSessionCallback.kt @@ -12,7 +12,7 @@ import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.resources.MEDIALIBRARY_PAGE_SIZE import org.videolan.vlc.extensions.ExtensionsManager import org.videolan.vlc.media.MediaSessionBrowser -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices import org.videolan.vlc.util.VoiceSearchParams import org.videolan.vlc.util.awaitMedialibraryStarted import org.videolan.vlc.util.getFromMl diff --git a/vlc-android/src/org/videolan/vlc/PlaybackService.kt b/vlc-android/src/org/videolan/vlc/PlaybackService.kt index d8d2e3790..7abdb6bf3 100644 --- a/vlc-android/src/org/videolan/vlc/PlaybackService.kt +++ b/vlc-android/src/org/videolan/vlc/PlaybackService.kt @@ -57,6 +57,7 @@ import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.interfaces.Medialibrary import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.resources.* +import org.videolan.resources.AndroidDevices import org.videolan.tools.Settings import org.videolan.tools.safeOffer import org.videolan.vlc.gui.helpers.AudioUtil diff --git a/vlc-android/src/org/videolan/vlc/RecommendationsService.kt b/vlc-android/src/org/videolan/vlc/RecommendationsService.kt index 52849da2d..f7be841be 100644 --- a/vlc-android/src/org/videolan/vlc/RecommendationsService.kt +++ b/vlc-android/src/org/videolan/vlc/RecommendationsService.kt @@ -34,10 +34,7 @@ import androidx.core.content.ContextCompat import kotlinx.coroutines.* import org.videolan.medialibrary.interfaces.Medialibrary import org.videolan.medialibrary.interfaces.media.MediaWrapper -import org.videolan.resources.PLAY_EXTRA_FROM_START -import org.videolan.resources.PLAY_EXTRA_ITEM_LOCATION -import org.videolan.resources.PLAY_EXTRA_ITEM_TITLE -import org.videolan.resources.PLAY_FROM_VIDEOGRID +import org.videolan.resources.* import org.videolan.vlc.gui.helpers.BitmapUtil import org.videolan.vlc.gui.video.VideoPlayerActivity import org.videolan.vlc.util.* diff --git a/vlc-android/src/org/videolan/vlc/RendererDelegate.kt b/vlc-android/src/org/videolan/vlc/RendererDelegate.kt index 17dc75372..67109d29b 100644 --- a/vlc-android/src/org/videolan/vlc/RendererDelegate.kt +++ b/vlc-android/src/org/videolan/vlc/RendererDelegate.kt @@ -24,7 +24,7 @@ import org.videolan.libvlc.RendererDiscoverer import org.videolan.libvlc.RendererItem import org.videolan.resources.VLCCommonApplication import org.videolan.tools.retry -import org.videolan.vlc.util.AppScope +import org.videolan.tools.AppScope import org.videolan.vlc.util.LiveDataset import org.videolan.vlc.util.VLCInstance import org.videolan.vlc.util.isAppStarted diff --git a/vlc-android/src/org/videolan/vlc/StartActivity.kt b/vlc-android/src/org/videolan/vlc/StartActivity.kt index 196d48956..31b6049bd 100644 --- a/vlc-android/src/org/videolan/vlc/StartActivity.kt +++ b/vlc-android/src/org/videolan/vlc/StartActivity.kt @@ -41,6 +41,7 @@ import kotlinx.coroutines.launch import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.MLServiceLocator import org.videolan.resources.* +import org.videolan.resources.AndroidDevices import org.videolan.tools.BETA_WELCOME import org.videolan.tools.Settings import org.videolan.tools.awaitAppIsForegroung diff --git a/vlc-android/src/org/videolan/vlc/StoragesMonitor.kt b/vlc-android/src/org/videolan/vlc/StoragesMonitor.kt index 449a9d0cc..fe8cc6e61 100644 --- a/vlc-android/src/org/videolan/vlc/StoragesMonitor.kt +++ b/vlc-android/src/org/videolan/vlc/StoragesMonitor.kt @@ -11,8 +11,8 @@ import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.actor import kotlinx.coroutines.delay import org.videolan.medialibrary.interfaces.Medialibrary +import org.videolan.tools.AppScope import org.videolan.vlc.gui.DialogActivity -import org.videolan.vlc.util.AppScope import org.videolan.vlc.util.getFromMl import org.videolan.vlc.util.isAppStarted import org.videolan.vlc.util.scanAllowed diff --git a/vlc-android/src/org/videolan/vlc/TvReceiver.kt b/vlc-android/src/org/videolan/vlc/TvReceiver.kt index 154527c76..bae5937ff 100644 --- a/vlc-android/src/org/videolan/vlc/TvReceiver.kt +++ b/vlc-android/src/org/videolan/vlc/TvReceiver.kt @@ -30,7 +30,7 @@ import android.media.tv.TvContract import android.os.Build import android.util.Log import org.videolan.libvlc.util.AndroidUtil -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices import org.videolan.vlc.util.launchChannelUpdate import org.videolan.vlc.util.setChannel diff --git a/vlc-android/src/org/videolan/vlc/VLCApplication.kt b/vlc-android/src/org/videolan/vlc/VLCApplication.kt index 82bc6d9ee..fbb80b77d 100644 --- a/vlc-android/src/org/videolan/vlc/VLCApplication.kt +++ b/vlc-android/src/org/videolan/vlc/VLCApplication.kt @@ -48,7 +48,7 @@ import org.videolan.vlc.gui.SendCrashActivity import org.videolan.vlc.gui.helpers.AudioUtil import org.videolan.vlc.gui.helpers.BitmapCache import org.videolan.vlc.gui.helpers.NotificationHelper -import org.videolan.vlc.util.AppScope +import org.videolan.tools.AppScope import org.videolan.vlc.util.DialogDelegate import org.videolan.vlc.util.SettingsMigration import org.videolan.vlc.util.VLCInstance diff --git a/vlc-android/src/org/videolan/vlc/gui/ContentActivity.kt b/vlc-android/src/org/videolan/vlc/gui/ContentActivity.kt index f7cec0433..08e6c0050 100644 --- a/vlc-android/src/org/videolan/vlc/gui/ContentActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/ContentActivity.kt @@ -42,7 +42,7 @@ import org.videolan.vlc.gui.browser.ExtensionBrowser import org.videolan.vlc.gui.dialogs.RenderersDialog import org.videolan.vlc.gui.helpers.UiTools import org.videolan.vlc.interfaces.Filterable -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices import org.videolan.tools.Settings import org.videolan.vlc.util.Util diff --git a/vlc-android/src/org/videolan/vlc/gui/InfoActivity.kt b/vlc-android/src/org/videolan/vlc/gui/InfoActivity.kt index f20412983..99fc521db 100644 --- a/vlc-android/src/org/videolan/vlc/gui/InfoActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/InfoActivity.kt @@ -32,6 +32,7 @@ import org.videolan.medialibrary.interfaces.media.Artist import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.resources.TAG_ITEM +import org.videolan.resources.readableFileSize import org.videolan.vlc.R import org.videolan.vlc.databinding.InfoActivityBinding import org.videolan.vlc.gui.browser.PathAdapter diff --git a/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt b/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt index cc2b5a4c9..059a95059 100644 --- a/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt @@ -37,10 +37,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.interfaces.Medialibrary -import org.videolan.resources.ACTIVITY_RESULT_OPEN -import org.videolan.resources.ACTIVITY_RESULT_PREFERENCES -import org.videolan.resources.ACTIVITY_RESULT_SECONDARY -import org.videolan.resources.EXTRA_TARGET +import org.videolan.resources.* import org.videolan.tools.* import org.videolan.vlc.BuildConfig import org.videolan.vlc.R diff --git a/vlc-android/src/org/videolan/vlc/gui/PlaylistActivity.kt b/vlc-android/src/org/videolan/vlc/gui/PlaylistActivity.kt index 622482e8b..7da4f59d6 100644 --- a/vlc-android/src/org/videolan/vlc/gui/PlaylistActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/PlaylistActivity.kt @@ -51,6 +51,7 @@ import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.medialibrary.interfaces.media.Playlist import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.resources.* +import org.videolan.resources.AndroidDevices import org.videolan.tools.isStarted import org.videolan.vlc.BuildConfig import org.videolan.vlc.R diff --git a/vlc-android/src/org/videolan/vlc/gui/SecondaryActivity.kt b/vlc-android/src/org/videolan/vlc/gui/SecondaryActivity.kt index 9e0ba8d5a..46c38fb75 100644 --- a/vlc-android/src/org/videolan/vlc/gui/SecondaryActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/SecondaryActivity.kt @@ -36,6 +36,7 @@ import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.medialibrary.interfaces.Medialibrary import org.videolan.resources.KEY_FOLDER import org.videolan.resources.KEY_GROUP +import org.videolan.resources.AndroidDevices import org.videolan.tools.RESULT_RESCAN import org.videolan.tools.RESULT_RESTART import org.videolan.vlc.R @@ -46,7 +47,6 @@ import org.videolan.vlc.gui.helpers.UiTools import org.videolan.vlc.gui.tv.TvUtil import org.videolan.vlc.gui.video.VideoGridFragment import org.videolan.vlc.reloadLibrary -import org.videolan.vlc.util.* @ExperimentalCoroutinesApi @ObsoleteCoroutinesApi diff --git a/vlc-android/src/org/videolan/vlc/gui/SendCrashActivity.kt b/vlc-android/src/org/videolan/vlc/gui/SendCrashActivity.kt index d4500c6a5..725bdebbe 100644 --- a/vlc-android/src/org/videolan/vlc/gui/SendCrashActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/SendCrashActivity.kt @@ -45,13 +45,15 @@ import org.videolan.medialibrary.interfaces.Medialibrary import org.videolan.resources.CRASH_ML_CTX import org.videolan.resources.CRASH_ML_MSG import org.videolan.resources.VLCCommonApplication +import org.videolan.resources.readableFileSize import org.videolan.vlc.BuildConfig import org.videolan.vlc.DebugLogService import org.videolan.vlc.R -import org.videolan.vlc.VLCApplication import org.videolan.vlc.databinding.SendCrashActivityBinding import org.videolan.vlc.gui.helpers.hf.StoragePermissionsDelegate.Companion.getStoragePermission -import org.videolan.vlc.util.* +import org.videolan.vlc.util.AppUtils +import org.videolan.vlc.util.FileUtils +import org.videolan.vlc.util.Permissions import java.io.File import java.lang.Runnable diff --git a/vlc-android/src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt b/vlc-android/src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt index c37152e4c..d75f6ddf3 100644 --- a/vlc-android/src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt +++ b/vlc-android/src/org/videolan/vlc/gui/audio/BaseAudioBrowser.kt @@ -41,6 +41,7 @@ import kotlinx.coroutines.* import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.resources.* +import org.videolan.resources.AndroidDevices import org.videolan.tools.MultiSelectHelper import org.videolan.tools.isStarted import org.videolan.vlc.BuildConfig diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserAdapter.kt index 61f123a2b..9bb9ec4a0 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserAdapter.kt @@ -51,7 +51,7 @@ import org.videolan.vlc.gui.DiffUtilAdapter import org.videolan.vlc.gui.helpers.MarqueeViewHolder import org.videolan.vlc.gui.helpers.SelectorViewHolder import org.videolan.vlc.gui.helpers.enableMarqueeEffect -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices import org.videolan.tools.Settings import org.videolan.resources.UPDATE_SELECTION import java.util.* diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt b/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt index 60c1c23bd..c549fb704 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt @@ -68,7 +68,9 @@ import org.videolan.vlc.interfaces.IRefreshable import org.videolan.vlc.media.MediaUtils import org.videolan.vlc.media.PlaylistManager import org.videolan.vlc.repository.BrowserFavRepository -import org.videolan.vlc.util.* +import org.videolan.vlc.util.Util +import org.videolan.vlc.util.WeakHandler +import org.videolan.vlc.util.isSchemeSupported import org.videolan.vlc.viewmodels.browser.BrowserModel import java.util.* diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/FileBrowserFragment.kt b/vlc-android/src/org/videolan/vlc/gui/browser/FileBrowserFragment.kt index 854655bf7..f06b0a9bb 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/FileBrowserFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/FileBrowserFragment.kt @@ -40,14 +40,14 @@ import kotlinx.coroutines.withContext import org.videolan.medialibrary.MLServiceLocator import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem +import org.videolan.resources.AndroidDevices +import org.videolan.resources.CTX_FAV_ADD +import org.videolan.resources.removeFileProtocole import org.videolan.vlc.ExternalMonitor import org.videolan.vlc.R import org.videolan.vlc.gui.helpers.MedialibraryUtils import org.videolan.vlc.gui.helpers.hf.OtgAccess -import org.videolan.vlc.util.AndroidDevices -import org.videolan.resources.CTX_FAV_ADD import org.videolan.vlc.util.FileUtils -import org.videolan.vlc.util.removeFileProtocole import org.videolan.vlc.viewmodels.browser.BrowserModel import org.videolan.vlc.viewmodels.browser.TYPE_FILE diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt b/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt index 820a4a0fb..3773996d5 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt @@ -36,11 +36,11 @@ import kotlinx.coroutines.runBlocking import org.videolan.medialibrary.MLServiceLocator import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem +import org.videolan.resources.AndroidDevices +import org.videolan.resources.removeFileProtocole import org.videolan.vlc.R import org.videolan.vlc.repository.DirectoryRepository -import org.videolan.vlc.util.AndroidDevices import org.videolan.vlc.util.FileUtils -import org.videolan.vlc.util.removeFileProtocole import org.videolan.vlc.viewmodels.browser.BrowserModel import org.videolan.vlc.viewmodels.browser.TYPE_PICKER diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/MediaBrowserFragment.kt b/vlc-android/src/org/videolan/vlc/gui/browser/MediaBrowserFragment.kt index d9f77925d..903bbb3c4 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/MediaBrowserFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/MediaBrowserFragment.kt @@ -56,9 +56,9 @@ import org.videolan.vlc.gui.helpers.hf.StoragePermissionsDelegate.Companion.getW import org.videolan.vlc.gui.view.SwipeRefreshLayout import org.videolan.vlc.interfaces.Filterable import org.videolan.vlc.media.MediaUtils -import org.videolan.vlc.util.AndroidDevices -import org.videolan.vlc.util.FileUtils +import org.videolan.resources.AndroidDevices import org.videolan.resources.TAG_ITEM +import org.videolan.vlc.util.FileUtils import org.videolan.vlc.util.Util import org.videolan.vlc.viewmodels.MedialibraryViewModel import org.videolan.vlc.viewmodels.SortableModel diff --git a/vlc-android/src/org/videolan/vlc/gui/browser/PathAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/browser/PathAdapter.kt index c609a98eb..d8c786fee 100644 --- a/vlc-android/src/org/videolan/vlc/gui/browser/PathAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/browser/PathAdapter.kt @@ -11,7 +11,7 @@ import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.BuildConfig import org.videolan.vlc.R -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices import org.videolan.vlc.viewmodels.browser.IPathOperationDelegate import org.videolan.vlc.viewmodels.browser.PathOperationDelegate diff --git a/vlc-android/src/org/videolan/vlc/gui/dialogs/ContextSheet.kt b/vlc-android/src/org/videolan/vlc/gui/dialogs/ContextSheet.kt index 604b0dfab..cfee072f9 100644 --- a/vlc-android/src/org/videolan/vlc/gui/dialogs/ContextSheet.kt +++ b/vlc-android/src/org/videolan/vlc/gui/dialogs/ContextSheet.kt @@ -31,10 +31,10 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED import org.videolan.resources.* +import org.videolan.resources.AndroidDevices import org.videolan.tools.isStarted import org.videolan.vlc.R import org.videolan.vlc.databinding.ContextItemBinding -import org.videolan.vlc.util.* const val CTX_TITLE_KEY = "CTX_TITLE_KEY" const val CTX_POSITION_KEY = "CTX_POSITION_KEY" diff --git a/vlc-android/src/org/videolan/vlc/gui/dialogs/NetworkServerDialog.kt b/vlc-android/src/org/videolan/vlc/gui/dialogs/NetworkServerDialog.kt index d4e80eb91..586287d33 100644 --- a/vlc-android/src/org/videolan/vlc/gui/dialogs/NetworkServerDialog.kt +++ b/vlc-android/src/org/videolan/vlc/gui/dialogs/NetworkServerDialog.kt @@ -21,7 +21,7 @@ import org.videolan.vlc.R import org.videolan.vlc.gui.DialogActivity import org.videolan.vlc.gui.MainActivity import org.videolan.vlc.repository.BrowserFavRepository -import org.videolan.vlc.util.runIO +import org.videolan.tools.runIO class NetworkServerDialog : DialogFragment(), AdapterView.OnItemSelectedListener, TextWatcher, View.OnClickListener { diff --git a/vlc-android/src/org/videolan/vlc/gui/dialogs/PlaybackSpeedDialog.kt b/vlc-android/src/org/videolan/vlc/gui/dialogs/PlaybackSpeedDialog.kt index 86ab3a2c5..c886ddb37 100644 --- a/vlc-android/src/org/videolan/vlc/gui/dialogs/PlaybackSpeedDialog.kt +++ b/vlc-android/src/org/videolan/vlc/gui/dialogs/PlaybackSpeedDialog.kt @@ -33,10 +33,10 @@ import androidx.core.content.ContextCompat import androidx.lifecycle.Observer import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi +import org.videolan.resources.formatRateString import org.videolan.vlc.PlaybackService import org.videolan.vlc.R import org.videolan.vlc.gui.helpers.OnRepeatListener -import org.videolan.vlc.util.formatRateString @ObsoleteCoroutinesApi @ExperimentalCoroutinesApi diff --git a/vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloadFragment.kt b/vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloadFragment.kt index 3537288b9..93b37ce5c 100644 --- a/vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloadFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloadFragment.kt @@ -12,11 +12,10 @@ import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import org.videolan.vlc.R -import org.videolan.vlc.VLCApplication import org.videolan.vlc.databinding.SubtitleDownloadFragmentBinding import org.videolan.vlc.gui.OnItemSelectListener import org.videolan.vlc.gui.helpers.UiTools -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices import org.videolan.tools.Settings import org.videolan.vlc.viewmodels.SubtitlesModel diff --git a/vlc-android/src/org/videolan/vlc/gui/dialogs/VlcLoginDialog.kt b/vlc-android/src/org/videolan/vlc/gui/dialogs/VlcLoginDialog.kt index dee1d8782..c567dce5b 100644 --- a/vlc-android/src/org/videolan/vlc/gui/dialogs/VlcLoginDialog.kt +++ b/vlc-android/src/org/videolan/vlc/gui/dialogs/VlcLoginDialog.kt @@ -25,18 +25,15 @@ package org.videolan.vlc.gui.dialogs import android.content.Context -import android.content.DialogInterface -import android.content.Intent import android.content.SharedPreferences import android.os.Bundle import android.view.View import android.widget.EditText -import androidx.localbroadcastmanager.content.LocalBroadcastManager import org.videolan.libvlc.Dialog import org.videolan.vlc.R import org.videolan.vlc.databinding.VlcLoginDialogBinding import org.videolan.vlc.gui.helpers.UiTools -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices import org.videolan.tools.LOGIN_STORE import org.videolan.tools.Settings diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.kt index 20a22077a..8cb9b0b77 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.kt @@ -38,9 +38,11 @@ import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.resources.VLCCommonApplication +import org.videolan.resources.AndroidDevices +import org.videolan.tools.runIO +import org.videolan.tools.runOnMainThread import org.videolan.vlc.BuildConfig import org.videolan.vlc.R -import org.videolan.vlc.VLCApplication import org.videolan.vlc.media.MediaUtils import org.videolan.vlc.util.* import java.io.* diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapCache.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapCache.kt index bebe851a5..0c469bf52 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapCache.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapCache.kt @@ -20,15 +20,13 @@ package org.videolan.vlc.gui.helpers -import android.annotation.TargetApi import android.content.res.Resources import android.graphics.Bitmap import android.graphics.BitmapFactory -import android.os.Build import android.util.Log import androidx.collection.LruCache +import org.videolan.resources.readableSize import org.videolan.vlc.BuildConfig -import org.videolan.vlc.util.readableSize object BitmapCache { private val mMemCache: LruCache diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/ImageLoader.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/ImageLoader.kt index 66a3c1960..eefb85ef4 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/ImageLoader.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/ImageLoader.kt @@ -39,7 +39,7 @@ import org.videolan.vlc.databinding.AudioBrowserCardItemBinding import org.videolan.vlc.databinding.MediaBrowserTvItemBinding import org.videolan.vlc.databinding.PlaylistItemBinding import org.videolan.vlc.gui.tv.TvUtil -import org.videolan.vlc.util.AppScope +import org.videolan.tools.AppScope import org.videolan.vlc.util.HttpImageLoader import org.videolan.vlc.util.ThumbnailsProvider import org.videolan.vlc.util.ThumbnailsProvider.obtainBitmap diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/MedialibraryUtils.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/MedialibraryUtils.kt index 2a2f19cab..986feee92 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/MedialibraryUtils.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/MedialibraryUtils.kt @@ -6,13 +6,9 @@ import android.content.Intent import android.net.Uri import androidx.core.content.ContextCompat import org.videolan.medialibrary.interfaces.Medialibrary -import org.videolan.resources.ACTION_DISCOVER -import org.videolan.resources.ACTION_DISCOVER_DEVICE -import org.videolan.resources.EXTRA_PATH -import org.videolan.resources.VLCCommonApplication +import org.videolan.resources.* +import org.videolan.tools.runIO import org.videolan.vlc.MediaParsingService -import org.videolan.vlc.util.runIO -import org.videolan.vlc.util.stripTrailingSlash object MedialibraryUtils { diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/NotificationHelper.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/NotificationHelper.kt index 6cf5ad905..4ccb30d00 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/NotificationHelper.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/NotificationHelper.kt @@ -35,6 +35,7 @@ import androidx.core.app.NotificationCompat import androidx.media.session.MediaButtonReceiver import org.videolan.resources.ACTION_PAUSE_SCAN import org.videolan.resources.ACTION_RESUME_SCAN +import org.videolan.resources.AndroidDevices import org.videolan.vlc.R import org.videolan.vlc.StartActivity import org.videolan.vlc.util.* diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt index 7c7db4434..8aef27032 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/PlayerOptionsDelegate.kt @@ -25,6 +25,8 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.* import org.videolan.resources.* +import org.videolan.resources.AndroidDevices +import org.videolan.tools.AppScope import org.videolan.tools.Settings import org.videolan.vlc.PlaybackService import org.videolan.vlc.R diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt index 2e310e0ff..bef583412 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt @@ -77,13 +77,13 @@ import org.videolan.tools.isStarted import org.videolan.vlc.BuildConfig import org.videolan.vlc.MediaParsingService import org.videolan.vlc.R -import org.videolan.vlc.VLCApplication import org.videolan.vlc.gui.BaseActivity import org.videolan.vlc.gui.browser.MediaBrowserFragment import org.videolan.vlc.gui.dialogs.SavePlaylistDialog import org.videolan.vlc.media.MediaUtils import org.videolan.vlc.providers.medialibrary.MedialibraryProvider -import org.videolan.vlc.util.* +import org.videolan.vlc.util.FileUtils +import org.videolan.vlc.util.LocalePair import java.util.* import kotlin.collections.ArrayList import kotlin.collections.component1 diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/hf/StoragePermissionsDelegate.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/hf/StoragePermissionsDelegate.kt index 8864da81d..4a93935a4 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/hf/StoragePermissionsDelegate.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/hf/StoragePermissionsDelegate.kt @@ -38,10 +38,12 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.videolan.libvlc.util.AndroidUtil +import org.videolan.resources.AndroidDevices import org.videolan.resources.EXTRA_FIRST_RUN import org.videolan.resources.EXTRA_UPGRADE import org.videolan.vlc.startMedialibrary -import org.videolan.vlc.util.* +import org.videolan.vlc.util.FileUtils +import org.videolan.vlc.util.Permissions import org.videolan.vlc.util.Permissions.canReadStorage import videolan.org.commontools.LiveEvent diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/hf/WriteExternalDelegate.kt b/vlc-android/src/org/videolan/vlc/gui/helpers/hf/WriteExternalDelegate.kt index 5060b7093..c7e917887 100644 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/hf/WriteExternalDelegate.kt +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/hf/WriteExternalDelegate.kt @@ -14,12 +14,11 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import kotlinx.coroutines.launch import org.videolan.libvlc.util.AndroidUtil +import org.videolan.resources.AndroidDevices +import org.videolan.tools.AppScope +import org.videolan.tools.Settings import org.videolan.vlc.R -import org.videolan.vlc.util.AndroidDevices -import org.videolan.vlc.util.AppScope import org.videolan.vlc.util.FileUtils -import org.videolan.tools.Settings - class WriteExternalDelegate : BaseHeadlessFragment() { private var storage : String? = null diff --git a/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingActivity.kt b/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingActivity.kt index 39fee6b8f..9e1ca9c2f 100644 --- a/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingActivity.kt @@ -17,10 +17,7 @@ import kotlinx.android.synthetic.main.activity_onboarding.* import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.launch -import org.videolan.resources.ACTIVITY_RESULT_PREFERENCES -import org.videolan.resources.EXTRA_FIRST_RUN -import org.videolan.resources.EXTRA_UPGRADE -import org.videolan.resources.PREF_FIRST_RUN +import org.videolan.resources.* import org.videolan.tools.* import org.videolan.vlc.BuildConfig import org.videolan.vlc.MediaParsingService diff --git a/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingThemeFragment.kt b/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingThemeFragment.kt index e030a5e8d..6ecfb80a0 100644 --- a/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingThemeFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingThemeFragment.kt @@ -11,7 +11,7 @@ import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import kotlinx.android.synthetic.main.onboarding_theme.* import org.videolan.vlc.R -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices class OnboardingThemeFragment : Fragment(), CompoundButton.OnCheckedChangeListener, View.OnClickListener { diff --git a/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingViewModel.kt b/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingViewModel.kt index caf12deaf..907726a9a 100644 --- a/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingViewModel.kt +++ b/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingViewModel.kt @@ -5,10 +5,9 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProviders -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices - -class OnboardingViewModel() : ViewModel() { +class OnboardingViewModel : ViewModel() { var scanStorages = true var customizeMediaFolders = false var permissionGranted = false diff --git a/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAdvanced.kt b/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAdvanced.kt index 3c1f8bb8e..e9a67c70f 100644 --- a/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAdvanced.kt +++ b/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAdvanced.kt @@ -35,12 +35,12 @@ import androidx.preference.EditTextPreference import androidx.preference.Preference import kotlinx.coroutines.* import org.videolan.medialibrary.interfaces.Medialibrary +import org.videolan.resources.AndroidDevices import org.videolan.vlc.BuildConfig import org.videolan.vlc.R import org.videolan.vlc.gui.DebugLogActivity import org.videolan.vlc.gui.helpers.UiTools import org.videolan.vlc.gui.helpers.hf.StoragePermissionsDelegate.Companion.getWritePermission -import org.videolan.vlc.util.AndroidDevices import org.videolan.vlc.util.FileUtils import org.videolan.vlc.util.VLCInstance import java.io.File diff --git a/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAudio.kt b/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAudio.kt index f9c4b79ff..db3ec5d91 100644 --- a/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAudio.kt +++ b/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAudio.kt @@ -33,7 +33,7 @@ import org.videolan.libvlc.util.AndroidUtil import org.videolan.libvlc.util.HWDecoderUtil import org.videolan.vlc.R import org.videolan.tools.AUDIO_DUCKING -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices import org.videolan.tools.RESUME_PLAYBACK import org.videolan.vlc.util.VLCInstance diff --git a/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.kt b/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.kt index 455ff5dc3..7e5c6ff82 100644 --- a/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.kt +++ b/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.kt @@ -35,11 +35,10 @@ import androidx.preference.TwoStatePreference import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.medialibrary.interfaces.Medialibrary +import org.videolan.resources.AndroidDevices import org.videolan.tools.* import org.videolan.vlc.R import org.videolan.vlc.gui.helpers.UiTools -import org.videolan.vlc.util.* - @ObsoleteCoroutinesApi @ExperimentalCoroutinesApi diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/MainTvFragment.kt b/vlc-android/src/org/videolan/vlc/gui/tv/MainTvFragment.kt index dfe45aa19..d3107e6a3 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/MainTvFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/MainTvFragment.kt @@ -38,6 +38,7 @@ import org.videolan.medialibrary.interfaces.Medialibrary import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.medialibrary.media.DummyItem import org.videolan.resources.* +import org.videolan.resources.AndroidDevices import org.videolan.vlc.BuildConfig import org.videolan.vlc.R import org.videolan.vlc.RecommendationsService @@ -46,7 +47,6 @@ import org.videolan.vlc.gui.tv.TvUtil.metadataDiffCallback import org.videolan.vlc.gui.tv.audioplayer.AudioPlayerActivity import org.videolan.vlc.gui.tv.browser.VerticalGridActivity import org.videolan.vlc.reloadLibrary -import org.videolan.vlc.util.* import org.videolan.vlc.viewmodels.tv.MainTvModel import org.videolan.vlc.viewmodels.tv.MainTvModel.Companion.getMainTvModel diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/audioplayer/AudioPlayerActivity.kt b/vlc-android/src/org/videolan/vlc/gui/tv/audioplayer/AudioPlayerActivity.kt index 760773676..984874a59 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/audioplayer/AudioPlayerActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/audioplayer/AudioPlayerActivity.kt @@ -48,7 +48,7 @@ import org.videolan.vlc.gui.helpers.MediaComparators import org.videolan.vlc.gui.helpers.UiTools import org.videolan.vlc.gui.tv.browser.BaseTvActivity import org.videolan.vlc.media.MediaUtils -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices import org.videolan.tools.Settings import org.videolan.vlc.util.getScreenWidth import org.videolan.vlc.viewmodels.PlayerState diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesAdvanced.kt b/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesAdvanced.kt index 93f3b95df..7ef09a377 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesAdvanced.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesAdvanced.kt @@ -37,12 +37,12 @@ import androidx.preference.EditTextPreference import androidx.preference.Preference import kotlinx.coroutines.* import org.videolan.medialibrary.interfaces.Medialibrary +import org.videolan.resources.AndroidDevices import org.videolan.vlc.BuildConfig import org.videolan.vlc.R import org.videolan.vlc.gui.DebugLogActivity import org.videolan.vlc.gui.helpers.UiTools import org.videolan.vlc.gui.helpers.hf.StoragePermissionsDelegate.Companion.getWritePermission -import org.videolan.vlc.util.AndroidDevices import org.videolan.vlc.util.FileUtils import org.videolan.vlc.util.VLCInstance import java.io.File diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesFragment.kt b/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesFragment.kt index c2e9c00c2..786af2ea3 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesFragment.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesFragment.kt @@ -33,6 +33,7 @@ import androidx.preference.Preference import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.medialibrary.interfaces.Medialibrary +import org.videolan.resources.AndroidDevices import org.videolan.tools.KEY_VIDEO_APP_SWITCH import org.videolan.tools.RESULT_RESTART import org.videolan.tools.SCREEN_ORIENTATION diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesUi.kt b/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesUi.kt index 3a8f68f8f..5edb39bf0 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesUi.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesUi.kt @@ -32,11 +32,10 @@ import androidx.preference.Preference import androidx.preference.TwoStatePreference import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi +import org.videolan.resources.AndroidDevices import org.videolan.tools.* import org.videolan.vlc.R import org.videolan.vlc.gui.helpers.UiTools -import org.videolan.vlc.util.* - @ExperimentalCoroutinesApi @ObsoleteCoroutinesApi diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesVideo.kt b/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesVideo.kt index f11d6d5d8..f078e137e 100644 --- a/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesVideo.kt +++ b/vlc-android/src/org/videolan/vlc/gui/tv/preferences/PreferencesVideo.kt @@ -28,9 +28,9 @@ import android.os.Bundle import androidx.preference.Preference import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi +import org.videolan.resources.AndroidDevices import org.videolan.tools.* import org.videolan.vlc.R -import org.videolan.vlc.util.* @ExperimentalCoroutinesApi @ObsoleteCoroutinesApi diff --git a/vlc-android/src/org/videolan/vlc/gui/video/MediaInfoAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/video/MediaInfoAdapter.kt index 149a3fee3..849d57996 100644 --- a/vlc-android/src/org/videolan/vlc/gui/video/MediaInfoAdapter.kt +++ b/vlc-android/src/org/videolan/vlc/gui/video/MediaInfoAdapter.kt @@ -27,10 +27,9 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.recyclerview.widget.RecyclerView -import org.videolan.libvlc.Media import org.videolan.libvlc.interfaces.IMedia +import org.videolan.resources.readableSize import org.videolan.vlc.R -import org.videolan.vlc.util.readableSize class MediaInfoAdapter : RecyclerView.Adapter() { private lateinit var inflater: LayoutInflater diff --git a/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt b/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt index 1f600fe27..9dd9748f2 100644 --- a/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt @@ -86,7 +86,6 @@ import org.videolan.tools.* import org.videolan.vlc.* import org.videolan.vlc.BuildConfig import org.videolan.vlc.R -import org.videolan.vlc.database.models.ExternalSub import org.videolan.vlc.databinding.PlayerHudBinding import org.videolan.vlc.databinding.PlayerHudRightBinding import org.videolan.vlc.gui.MainActivity @@ -221,8 +220,8 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle protected var isBenchmark = false - private val addedExternalSubs = ArrayList() - private var downloadedSubtitleLiveData: LiveData>? = null + private val addedExternalSubs = ArrayList() + private var downloadedSubtitleLiveData: LiveData>? = null private var previousMediaPath: String? = null private val isInteractive: Boolean @@ -345,7 +344,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle private var enableSubs = true - private val downloadedSubtitleObserver = Observer> { externalSubs -> + private val downloadedSubtitleObserver = Observer> { externalSubs -> for (externalSub in externalSubs!!) { if (!addedExternalSubs.contains(externalSub)) { service?.addSubtitleTrack(externalSub.subtitlePath, currentSpuTrack == -2) diff --git a/vlc-android/src/org/videolan/vlc/gui/video/VideoTouchDelegate.kt b/vlc-android/src/org/videolan/vlc/gui/video/VideoTouchDelegate.kt index d038e69ab..7e510738b 100644 --- a/vlc-android/src/org/videolan/vlc/gui/video/VideoTouchDelegate.kt +++ b/vlc-android/src/org/videolan/vlc/gui/video/VideoTouchDelegate.kt @@ -27,8 +27,8 @@ import org.videolan.medialibrary.Tools import org.videolan.tools.setVisible import org.videolan.vlc.BuildConfig import org.videolan.vlc.R -import org.videolan.vlc.util.AndroidDevices -import org.videolan.vlc.util.AndroidDevices.isTv +import org.videolan.resources.AndroidDevices +import org.videolan.resources.AndroidDevices.isTv import kotlin.math.abs import kotlin.math.pow import kotlin.math.roundToInt diff --git a/vlc-android/src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt b/vlc-android/src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt index 3c78ff11f..bc3a57568 100644 --- a/vlc-android/src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt +++ b/vlc-android/src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt @@ -47,7 +47,7 @@ import kotlinx.coroutines.ObsoleteCoroutinesApi import kotlinx.coroutines.launch import org.videolan.libvlc.MediaPlayer import org.videolan.vlc.PlaybackService -import org.videolan.vlc.util.AppScope +import org.videolan.tools.AppScope import org.videolan.tools.Settings import org.videolan.vlc.util.VLCInstance import java.io.* diff --git a/vlc-android/src/org/videolan/vlc/media/MediaUtils.kt b/vlc-android/src/org/videolan/vlc/media/MediaUtils.kt index 625d14d4c..db220e976 100644 --- a/vlc-android/src/org/videolan/vlc/media/MediaUtils.kt +++ b/vlc-android/src/org/videolan/vlc/media/MediaUtils.kt @@ -27,6 +27,7 @@ import org.videolan.medialibrary.interfaces.media.* import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.resources.MEDIALIBRARY_PAGE_SIZE import org.videolan.resources.VLCCommonApplication +import org.videolan.tools.AppScope import org.videolan.vlc.PlaybackService import org.videolan.vlc.R import org.videolan.vlc.gui.DialogActivity diff --git a/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt b/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt index 61157a849..2b44e9311 100644 --- a/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt +++ b/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt @@ -21,15 +21,11 @@ import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.MLServiceLocator import org.videolan.medialibrary.interfaces.Medialibrary import org.videolan.medialibrary.interfaces.media.MediaWrapper -import org.videolan.resources.EXIT_PLAYER -import org.videolan.resources.PLAYLIST_TYPE_AUDIO -import org.videolan.resources.PLAY_FROM_SERVICE -import org.videolan.resources.VLCCommonApplication +import org.videolan.resources.* import org.videolan.tools.* import org.videolan.vlc.BuildConfig import org.videolan.vlc.PlaybackService import org.videolan.vlc.R -import org.videolan.vlc.VLCApplication import org.videolan.vlc.gui.video.VideoPlayerActivity import org.videolan.vlc.util.* import org.videolan.vlc.util.FileUtils diff --git a/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt b/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt index 9a7b62d84..69a8d90e3 100644 --- a/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt @@ -40,6 +40,7 @@ import org.videolan.medialibrary.interfaces.Medialibrary import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.medialibrary.media.Storage +import org.videolan.tools.AppScope import org.videolan.tools.Settings import org.videolan.vlc.R import org.videolan.vlc.util.* diff --git a/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt b/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt index 872c61c85..f7c7601c6 100644 --- a/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt @@ -37,12 +37,11 @@ import org.videolan.medialibrary.media.DummyItem import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.ExternalMonitor import org.videolan.vlc.R -import org.videolan.vlc.database.models.BrowserFav import org.videolan.vlc.gui.helpers.hf.StoragePermissionsDelegate import org.videolan.vlc.gui.helpers.hf.getDocumentFiles import org.videolan.vlc.repository.BrowserFavRepository import org.videolan.vlc.repository.DirectoryRepository -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices import org.videolan.vlc.util.FileUtils import org.videolan.vlc.util.LiveDataset import org.videolan.vlc.util.convertFavorites @@ -64,7 +63,8 @@ open class FileBrowserProvider( private val showFavorites = url == null && !filePicker && this !is StorageProvider private val favorites = if (url == null && !filePicker) BrowserFavRepository.getInstance(context).localFavorites else null - private val favoritesObserver by lazy { Observer> { + private val favoritesObserver by lazy { + Observer> { val favs = convertFavorites(it) val data = dataset.value.toMutableList() if (data.size > 1) { diff --git a/vlc-android/src/org/videolan/vlc/providers/StorageProvider.kt b/vlc-android/src/org/videolan/vlc/providers/StorageProvider.kt index da8e12fc2..4e82695ab 100644 --- a/vlc-android/src/org/videolan/vlc/providers/StorageProvider.kt +++ b/vlc-android/src/org/videolan/vlc/providers/StorageProvider.kt @@ -28,7 +28,7 @@ import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.medialibrary.media.Storage import org.videolan.vlc.R import org.videolan.vlc.repository.DirectoryRepository -import org.videolan.vlc.util.AndroidDevices +import org.videolan.resources.AndroidDevices import org.videolan.vlc.util.LiveDataset import java.io.File import java.util.* diff --git a/vlc-android/src/org/videolan/vlc/repository/BrowserFavRepository.kt b/vlc-android/src/org/videolan/vlc/repository/BrowserFavRepository.kt index 63e03197a..04dd23ae8 100644 --- a/vlc-android/src/org/videolan/vlc/repository/BrowserFavRepository.kt +++ b/vlc-android/src/org/videolan/vlc/repository/BrowserFavRepository.kt @@ -20,21 +20,20 @@ package org.videolan.vlc.repository -import androidx.lifecycle.MediatorLiveData import android.content.Context import android.net.Uri import androidx.annotation.WorkerThread +import androidx.lifecycle.MediatorLiveData import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import org.videolan.medialibrary.interfaces.media.MediaWrapper +import org.videolan.resources.TYPE_LOCAL_FAV +import org.videolan.resources.TYPE_NETWORK_FAV import org.videolan.tools.IOScopedObject import org.videolan.tools.SingletonHolder import org.videolan.vlc.ExternalMonitor import org.videolan.vlc.database.BrowserFavDao import org.videolan.vlc.database.MediaDatabase -import org.videolan.vlc.database.models.BrowserFav -import org.videolan.resources.TYPE_LOCAL_FAV -import org.videolan.resources.TYPE_NETWORK_FAV import org.videolan.vlc.util.convertFavorites import java.util.* @@ -48,11 +47,11 @@ class BrowserFavRepository(private val browserFavDao: BrowserFavDao) : IOScopedO val localFavorites by lazy { browserFavDao.getAllLocalFavs() } fun addNetworkFavItem(uri: Uri, title: String, iconUrl: String?) = launch { - browserFavDao.insert(BrowserFav(uri, TYPE_NETWORK_FAV, title, iconUrl)) + browserFavDao.insert(org.videolan.vlc.mediadb.models.BrowserFav(uri, TYPE_NETWORK_FAV, title, iconUrl)) } fun addLocalFavItem(uri: Uri, title: String, iconUrl: String? = null) = launch { - browserFavDao.insert(BrowserFav(uri, TYPE_LOCAL_FAV, title, iconUrl)) + browserFavDao.insert(org.videolan.vlc.mediadb.models.BrowserFav(uri, TYPE_LOCAL_FAV, title, iconUrl)) } val networkFavorites by lazy { diff --git a/vlc-android/src/org/videolan/vlc/repository/DirectoryRepository.kt b/vlc-android/src/org/videolan/vlc/repository/DirectoryRepository.kt index d93b6623a..59c54bc73 100644 --- a/vlc-android/src/org/videolan/vlc/repository/DirectoryRepository.kt +++ b/vlc-android/src/org/videolan/vlc/repository/DirectoryRepository.kt @@ -13,27 +13,26 @@ import org.videolan.tools.SingletonHolder import org.videolan.vlc.R import org.videolan.vlc.database.CustomDirectoryDao import org.videolan.vlc.database.MediaDatabase -import org.videolan.vlc.database.models.CustomDirectory -import org.videolan.vlc.util.AndroidDevices -import org.videolan.vlc.util.AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY +import org.videolan.resources.AndroidDevices +import org.videolan.resources.AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY import org.videolan.vlc.util.FileUtils import java.io.File class DirectoryRepository (private val customDirectoryDao: CustomDirectoryDao) : IOScopedObject() { fun addCustomDirectory(path: String): Job = launch { - customDirectoryDao.insert(CustomDirectory(path)) + customDirectoryDao.insert(org.videolan.vlc.mediadb.models.CustomDirectory(path)) } suspend fun getCustomDirectories() = withContext(coroutineContext) { try { customDirectoryDao.getAll() } catch (e: Exception) { - emptyList() + emptyList() } } - fun deleteCustomDirectory(path: String) = launch { customDirectoryDao.delete(CustomDirectory(path)) } + fun deleteCustomDirectory(path: String) = launch { customDirectoryDao.delete(org.videolan.vlc.mediadb.models.CustomDirectory(path)) } suspend fun customDirectoryExists(path: String) = withContext(coroutineContext) { customDirectoryDao.get(path).isNotEmpty() } diff --git a/vlc-android/src/org/videolan/vlc/repository/ExternalSubRepository.kt b/vlc-android/src/org/videolan/vlc/repository/ExternalSubRepository.kt index 3a219adbf..3d6a2bf08 100644 --- a/vlc-android/src/org/videolan/vlc/repository/ExternalSubRepository.kt +++ b/vlc-android/src/org/videolan/vlc/repository/ExternalSubRepository.kt @@ -31,7 +31,7 @@ import kotlinx.coroutines.launch import org.videolan.tools.SingletonHolder import org.videolan.vlc.database.ExternalSubDao import org.videolan.vlc.database.MediaDatabase -import org.videolan.vlc.database.models.ExternalSub +import org.videolan.vlc.mediadb.models.ExternalSub import org.videolan.vlc.gui.dialogs.State import org.videolan.vlc.gui.dialogs.SubtitleItem import org.videolan.vlc.util.CoroutineContextProvider @@ -46,13 +46,13 @@ class ExternalSubRepository(private val externalSubDao: ExternalSubDao, private get() = _downloadingSubtitles as LiveData> fun saveDownloadedSubtitle(idSubtitle: String, subtitlePath: String, mediaPath: String, language: String, movieReleaseName: String): Job { - return GlobalScope.launch(coroutineContextProvider.IO) { externalSubDao.insert(ExternalSub(idSubtitle, subtitlePath, mediaPath, language, movieReleaseName)) } + return GlobalScope.launch(coroutineContextProvider.IO) { externalSubDao.insert(org.videolan.vlc.mediadb.models.ExternalSub(idSubtitle, subtitlePath, mediaPath, language, movieReleaseName)) } } - fun getDownloadedSubtitles(mediaUri: Uri): LiveData> { + fun getDownloadedSubtitles(mediaUri: Uri): LiveData> { val externalSubs = externalSubDao.get(mediaUri.path!!) return Transformations.map(externalSubs) { list -> - val existExternalSubs: MutableList = mutableListOf() + val existExternalSubs: MutableList = mutableListOf() list.forEach { if (File(Uri.decode(it.subtitlePath)).exists()) existExternalSubs.add(it) diff --git a/vlc-android/src/org/videolan/vlc/repository/SlaveRepository.kt b/vlc-android/src/org/videolan/vlc/repository/SlaveRepository.kt index 9ef0d8489..6f148524a 100644 --- a/vlc-android/src/org/videolan/vlc/repository/SlaveRepository.kt +++ b/vlc-android/src/org/videolan/vlc/repository/SlaveRepository.kt @@ -33,14 +33,14 @@ import org.videolan.tools.IOScopedObject import org.videolan.tools.SingletonHolder import org.videolan.vlc.database.MediaDatabase import org.videolan.vlc.database.SlaveDao -import org.videolan.vlc.database.models.Slave +import org.videolan.vlc.mediadb.models.Slave class SlaveRepository(private val slaveDao:SlaveDao) : IOScopedObject() { fun saveSlave(mediaPath: String, type: Int, priority: Int, uriString: String): Job { return launch { - slaveDao.insert(Slave(mediaPath, type, priority, uriString)) + slaveDao.insert(org.videolan.vlc.mediadb.models.Slave(mediaPath, type, priority, uriString)) } } @@ -55,7 +55,7 @@ class SlaveRepository(private val slaveDao:SlaveDao) : IOScopedObject() { val slaves = try { slaveDao.get(mrl) } catch (e: SQLiteException) { - emptyList() + emptyList() } val mediaSlaves = slaves.map { var uri = it.uri diff --git a/vlc-android/src/org/videolan/vlc/util/Browserutils.kt b/vlc-android/src/org/videolan/vlc/util/Browserutils.kt index 749a996d8..9b1010a14 100644 --- a/vlc-android/src/org/videolan/vlc/util/Browserutils.kt +++ b/vlc-android/src/org/videolan/vlc/util/Browserutils.kt @@ -24,7 +24,7 @@ import android.net.Uri import org.videolan.medialibrary.MLServiceLocator import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem -import org.videolan.vlc.database.models.BrowserFav +import org.videolan.vlc.mediadb.models.BrowserFav fun isSchemeSupported(scheme: String?) = when(scheme) { @@ -32,7 +32,7 @@ fun isSchemeSupported(scheme: String?) = when(scheme) { else -> false } -fun convertFavorites(browserFavs: List?) = browserFavs?.map { (uri, _, title, iconUrl) -> +fun convertFavorites(browserFavs: List?) = browserFavs?.map { (uri, _, title, iconUrl) -> MLServiceLocator.getAbstractMediaWrapper(uri).apply { setDisplayTitle(Uri.decode(title)) type = MediaWrapper.TYPE_DIR diff --git a/vlc-android/src/org/videolan/vlc/util/FileUtils.kt b/vlc-android/src/org/videolan/vlc/util/FileUtils.kt index d3f8e80b9..cbd27bf7e 100644 --- a/vlc-android/src/org/videolan/vlc/util/FileUtils.kt +++ b/vlc-android/src/org/videolan/vlc/util/FileUtils.kt @@ -42,8 +42,10 @@ import kotlinx.coroutines.withContext import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.interfaces.Medialibrary import org.videolan.medialibrary.interfaces.media.MediaWrapper +import org.videolan.resources.AndroidDevices import org.videolan.resources.VLCCommonApplication import org.videolan.tools.Settings +import org.videolan.tools.runIO import org.videolan.vlc.BuildConfig import org.videolan.vlc.R import org.videolan.vlc.media.MediaUtils diff --git a/vlc-android/src/org/videolan/vlc/util/Kextensions.kt b/vlc-android/src/org/videolan/vlc/util/Kextensions.kt index b063da648..cbd8286ce 100644 --- a/vlc-android/src/org/videolan/vlc/util/Kextensions.kt +++ b/vlc-android/src/org/videolan/vlc/util/Kextensions.kt @@ -33,6 +33,7 @@ import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.medialibrary.interfaces.media.MediaWrapper.TYPE_ALL import org.videolan.medialibrary.interfaces.media.MediaWrapper.TYPE_VIDEO import org.videolan.medialibrary.media.MediaLibraryItem +import org.videolan.resources.AndroidDevices import org.videolan.tools.* import org.videolan.tools.Settings.showTvUi import org.videolan.vlc.R diff --git a/vlc-android/src/org/videolan/vlc/util/TvChannels.kt b/vlc-android/src/org/videolan/vlc/util/TvChannels.kt index c2fddf0e9..3e1b7d467 100644 --- a/vlc-android/src/org/videolan/vlc/util/TvChannels.kt +++ b/vlc-android/src/org/videolan/vlc/util/TvChannels.kt @@ -32,6 +32,7 @@ import androidx.tvprovider.media.tv.TvContractCompat import androidx.tvprovider.media.tv.WatchNextProgram import kotlinx.coroutines.* import org.videolan.medialibrary.interfaces.media.MediaWrapper +import org.videolan.tools.AppScope import org.videolan.tools.Settings import org.videolan.vlc.BuildConfig import org.videolan.vlc.PreviewVideoInputService diff --git a/vlc-android/src/org/videolan/vlc/util/Util.kt b/vlc-android/src/org/videolan/vlc/util/Util.kt index 14ea65ae4..15ab3ee07 100644 --- a/vlc-android/src/org/videolan/vlc/util/Util.kt +++ b/vlc-android/src/org/videolan/vlc/util/Util.kt @@ -31,7 +31,10 @@ import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.Dialog import org.videolan.libvlc.util.AndroidUtil import org.videolan.medialibrary.interfaces.media.MediaWrapper +import org.videolan.resources.AndroidDevices import org.videolan.resources.VLCCommonApplication +import org.videolan.tools.runBackground +import org.videolan.tools.runOnMainThread import org.videolan.vlc.R import org.videolan.vlc.VLCApplication import org.videolan.vlc.gui.helpers.hf.WriteExternalDelegate diff --git a/vlc-android/src/org/videolan/vlc/util/VLCAudioFocusHelper.kt b/vlc-android/src/org/videolan/vlc/util/VLCAudioFocusHelper.kt index facd9368f..863120e30 100644 --- a/vlc-android/src/org/videolan/vlc/util/VLCAudioFocusHelper.kt +++ b/vlc-android/src/org/videolan/vlc/util/VLCAudioFocusHelper.kt @@ -34,6 +34,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi import org.videolan.libvlc.util.AndroidUtil import org.videolan.tools.AUDIO_DUCKING +import org.videolan.resources.AndroidDevices import org.videolan.tools.RESUME_PLAYBACK import org.videolan.vlc.BuildConfig import org.videolan.vlc.PlaybackService diff --git a/vlc-android/src/org/videolan/vlc/util/Workers.kt b/vlc-android/src/org/videolan/vlc/util/Workers.kt deleted file mode 100644 index b3212b20a..000000000 --- a/vlc-android/src/org/videolan/vlc/util/Workers.kt +++ /dev/null @@ -1,22 +0,0 @@ -package org.videolan.vlc.util - -import android.os.Looper -import kotlinx.coroutines.* - -fun runBackground(runnable: Runnable) { - if (Looper.myLooper() != Looper.getMainLooper()) runnable.run() - else AppScope.launch(Dispatchers.Default) { runnable.run() } -} - -fun runOnMainThread(runnable: Runnable) { - AppScope.launch { runnable.run() } -} - -fun runIO(runnable: Runnable) { - AppScope.launch(Dispatchers.IO) { runnable.run() } -} - -object AppScope : CoroutineScope { - @ExperimentalCoroutinesApi - override val coroutineContext = Dispatchers.Main.immediate + SupervisorJob() -} \ No newline at end of file diff --git a/vlc-android/src/org/videolan/vlc/viewmodels/tv/MainTvModel.kt b/vlc-android/src/org/videolan/vlc/viewmodels/tv/MainTvModel.kt index cdc540055..92a0ea40b 100644 --- a/vlc-android/src/org/videolan/vlc/viewmodels/tv/MainTvModel.kt +++ b/vlc-android/src/org/videolan/vlc/viewmodels/tv/MainTvModel.kt @@ -37,7 +37,6 @@ import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.vlc.ExternalMonitor import org.videolan.vlc.PlaybackService import org.videolan.vlc.R -import org.videolan.vlc.database.models.BrowserFav import org.videolan.moviepedia.database.models.MediaMetadataWithImages import org.videolan.vlc.gui.DialogActivity import org.videolan.vlc.gui.tv.* @@ -50,6 +49,7 @@ import org.videolan.vlc.repository.BrowserFavRepository import org.videolan.vlc.repository.DirectoryRepository import org.videolan.moviepedia.repository.MediaMetadataRepository import org.videolan.resources.* +import org.videolan.resources.AndroidDevices import org.videolan.tools.PLAYBACK_HISTORY import org.videolan.tools.Settings import org.videolan.vlc.util.* @@ -72,7 +72,7 @@ class MainTvModel(app: Application) : AndroidViewModel(app), Medialibrary.OnMedi var showHistory = false private set // LiveData - private val favorites: LiveData> = browserFavRepository.browserFavorites + private val favorites: LiveData> = browserFavRepository.browserFavorites val nowPlaying: LiveData> = MutableLiveData() val videos: LiveData> = MutableLiveData() val audioCategories: LiveData> = MutableLiveData() @@ -92,7 +92,7 @@ class MainTvModel(app: Application) : AndroidViewModel(app), Medialibrary.OnMedi for (action in channel) setHistory() } - private val favObserver = Observer> { list -> + private val favObserver = Observer> { list -> updatedFavoritList = convertFavorites(list) if (!updateActor.isClosedForSend) updateActor.offer(Unit) } diff --git a/vlc-android/src/org/videolan/vlc/widget/VLCAppWidgetProvider.kt b/vlc-android/src/org/videolan/vlc/widget/VLCAppWidgetProvider.kt index f7d989b84..dd728392e 100644 --- a/vlc-android/src/org/videolan/vlc/widget/VLCAppWidgetProvider.kt +++ b/vlc-android/src/org/videolan/vlc/widget/VLCAppWidgetProvider.kt @@ -34,16 +34,15 @@ import android.view.View import android.widget.RemoteViews import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ObsoleteCoroutinesApi -import org.videolan.resources.ACTION_REMOTE_BACKWARD -import org.videolan.resources.ACTION_REMOTE_FORWARD -import org.videolan.resources.ACTION_REMOTE_PLAYPAUSE -import org.videolan.resources.ACTION_REMOTE_STOP +import org.videolan.resources.* +import org.videolan.tools.runIO +import org.videolan.tools.runOnMainThread import org.videolan.vlc.BuildConfig import org.videolan.vlc.PlaybackService import org.videolan.vlc.R import org.videolan.vlc.StartActivity import org.videolan.vlc.gui.helpers.AudioUtil -import org.videolan.vlc.util.* +import org.videolan.vlc.util.getPendingIntent import java.util.* @ObsoleteCoroutinesApi diff --git a/vlc-android/test-common/org/videolan/vlc/util/TestUtil.kt b/vlc-android/test-common/org/videolan/vlc/util/TestUtil.kt index 5b377a552..a358da14c 100644 --- a/vlc-android/test-common/org/videolan/vlc/util/TestUtil.kt +++ b/vlc-android/test-common/org/videolan/vlc/util/TestUtil.kt @@ -26,10 +26,10 @@ import org.videolan.resources.TYPE_LOCAL_FAV import org.videolan.resources.TYPE_NETWORK_FAV import org.videolan.vlc.api.OpenSubtitle import org.videolan.vlc.api.QueryParameters -import org.videolan.vlc.database.models.BrowserFav -import org.videolan.vlc.database.models.CustomDirectory -import org.videolan.vlc.database.models.ExternalSub -import org.videolan.vlc.database.models.Slave +import org.videolan.vlc.mediadb.models.BrowserFav +import org.videolan.vlc.mediadb.models.CustomDirectory +import org.videolan.vlc.mediadb.models.ExternalSub +import org.videolan.vlc.mediadb.models.Slave import org.videolan.vlc.gui.dialogs.State import org.videolan.vlc.gui.dialogs.SubtitleItem @@ -38,8 +38,8 @@ object TestUtil { private const val fakeSubUri: String = "/storage/emulated/0/Android/data/org.videolan.vlc.debug/files/subs/" private const val fakeMediaUri: String = "/storage/emulated/0/Android/data/org.videolan.vlc.debug/files/media/" - fun createLocalFav(uri: Uri, title: String, iconUrl: String?): BrowserFav { - return BrowserFav(uri, TYPE_LOCAL_FAV, title, iconUrl) + fun createLocalFav(uri: Uri, title: String, iconUrl: String?): org.videolan.vlc.mediadb.models.BrowserFav { + return org.videolan.vlc.mediadb.models.BrowserFav(uri, TYPE_LOCAL_FAV, title, iconUrl) } fun createLocalUris(count: Int): List { @@ -48,21 +48,21 @@ object TestUtil { } } - fun createLocalFavs(count: Int): List { + fun createLocalFavs(count: Int): List { return (0 until count).map { createLocalFav(Uri.parse("${fakeMediaUri}_$it.mp4"), "local$it", null) } } - fun createNetworkFav(uri: Uri, title: String, iconUrl: String?): BrowserFav { - return BrowserFav(uri, TYPE_NETWORK_FAV, title, iconUrl) + fun createNetworkFav(uri: Uri, title: String, iconUrl: String?): org.videolan.vlc.mediadb.models.BrowserFav { + return org.videolan.vlc.mediadb.models.BrowserFav(uri, TYPE_NETWORK_FAV, title, iconUrl) } fun createNetworkUris(count: Int): List { return (0 until count).map { "${fakeUri}_network$it.mp4" } } - fun createNetworkFavs(count: Int): List { + fun createNetworkFavs(count: Int): List { return (0 until count).map { createNetworkFav( Uri.parse(fakeUri + "network" + it), @@ -77,31 +77,31 @@ object TestUtil { subtitlePath: String, mediaPath: String, subLanguageID: String, - movieReleaseName: String): ExternalSub { - return ExternalSub(idSubtitle, subtitlePath, mediaPath, subLanguageID, movieReleaseName) + movieReleaseName: String): org.videolan.vlc.mediadb.models.ExternalSub { + return org.videolan.vlc.mediadb.models.ExternalSub(idSubtitle, subtitlePath, mediaPath, subLanguageID, movieReleaseName) } - fun createExternalSubsForMedia(mediaPath: String, mediaName: String, count: Int): List { + fun createExternalSubsForMedia(mediaPath: String, mediaName: String, count: Int): List { return (0 until count).map { - ExternalSub(it.toString(), "${fakeSubUri}$mediaName$it", mediaPath, "en", mediaName) + org.videolan.vlc.mediadb.models.ExternalSub(it.toString(), "${fakeSubUri}$mediaName$it", mediaPath, "en", mediaName) } } - fun createSubtitleSlave(mediaPath: String, uri: String): Slave { - return Slave(mediaPath, IMedia.Slave.Type.Subtitle, 2, uri) + fun createSubtitleSlave(mediaPath: String, uri: String): org.videolan.vlc.mediadb.models.Slave { + return org.videolan.vlc.mediadb.models.Slave(mediaPath, IMedia.Slave.Type.Subtitle, 2, uri) } - fun createSubtitleSlavesForMedia(mediaName: String, count: Int): List { + fun createSubtitleSlavesForMedia(mediaName: String, count: Int): List { return (0 until count).map { createSubtitleSlave("$fakeMediaUri$mediaName", "$fakeSubUri$mediaName$it.srt") } } - fun createCustomDirectory(path: String): CustomDirectory { - return CustomDirectory(path) + fun createCustomDirectory(path: String): org.videolan.vlc.mediadb.models.CustomDirectory { + return org.videolan.vlc.mediadb.models.CustomDirectory(path) } - fun createCustomDirectories(count: Int): List { + fun createCustomDirectories(count: Int): List { val directory = "/sdcard/foo" return (0 until count).map { createCustomDirectory("$directory$it") diff --git a/vlc-android/test/org/videolan/vlc/repository/BrowserFavRepositoryTest.kt b/vlc-android/test/org/videolan/vlc/repository/BrowserFavRepositoryTest.kt index 2aa2f243f..533eadbd5 100644 --- a/vlc-android/test/org/videolan/vlc/repository/BrowserFavRepositoryTest.kt +++ b/vlc-android/test/org/videolan/vlc/repository/BrowserFavRepositoryTest.kt @@ -93,7 +93,7 @@ class BrowserFavRepositoryTest { TestUtil.createNetworkFav(parsedUri, "network$index", null) } - val inserted = argumentCaptor() + val inserted = argumentCaptor() verify(browserFavDao, times(4)).insert( inserted.capture() ?: /*Just to prevent must not null in kotlin*/uninitialized() ) @@ -103,7 +103,7 @@ class BrowserFavRepositoryTest { assertThat(inserted.allValues[2], `is`(fakeNetworkFavs[0])) assertThat(inserted.allValues[3], `is`(fakeNetworkFavs[1])) - val dbData = MutableLiveData>() + val dbData = MutableLiveData>() dbData.value = fakeLocalFavs + fakeNetworkFavs `when`(browserFavDao.getAll()).thenReturn(dbData) val browserFavorites = getValue(browserFavRepository.browserFavorites) @@ -146,7 +146,7 @@ class BrowserFavRepositoryTest { TestUtil.createNetworkFav(parsedUri, "network$index", null) } - val inserted = argumentCaptor() + val inserted = argumentCaptor() verify(browserFavDao, times(4)).insert( inserted.capture() ?: /*Just to prevent must not null in kotlin*/uninitialized() ) @@ -156,7 +156,7 @@ class BrowserFavRepositoryTest { assertThat(inserted.allValues[2], `is`(fakeNetworkFavs[0])) assertThat(inserted.allValues[3], `is`(fakeNetworkFavs[1])) - val dbData = MutableLiveData>() + val dbData = MutableLiveData>() dbData.value = fakeLocalFavs `when`(browserFavDao.getAllLocalFavs()).thenReturn(dbData) val localFavorites = getValue(browserFavRepository.localFavorites) diff --git a/vlc-android/test/org/videolan/vlc/repository/DirectoryRepositoryTest.kt b/vlc-android/test/org/videolan/vlc/repository/DirectoryRepositoryTest.kt index fe373c278..785eb3d78 100644 --- a/vlc-android/test/org/videolan/vlc/repository/DirectoryRepositoryTest.kt +++ b/vlc-android/test/org/videolan/vlc/repository/DirectoryRepositoryTest.kt @@ -12,7 +12,7 @@ import org.mockito.Mockito.* import org.powermock.modules.junit4.PowerMockRunner import org.videolan.vlc.database.CustomDirectoryDao import org.videolan.vlc.database.MediaDatabase -import org.videolan.vlc.database.models.CustomDirectory +import org.videolan.vlc.mediadb.models.CustomDirectory import org.videolan.vlc.util.TestUtil import org.videolan.vlc.util.argumentCaptor import org.videolan.vlc.util.mock @@ -40,7 +40,7 @@ class DirectoryRepositoryTest { directoryRepository.addCustomDirectory(it.path).join() } - val inserted = argumentCaptor() + val inserted = argumentCaptor() verify(customDirectoryDao, times(2)).insert(inserted.capture() ?: uninitialized()) assertThat(inserted.allValues.size, `is`(2)) assertThat(inserted.allValues[0], `is`(fakeCustomDirectories[0])) @@ -61,7 +61,7 @@ class DirectoryRepositoryTest { directoryRepository.addCustomDirectory(it.path).join() } - val inserted = argumentCaptor() + val inserted = argumentCaptor() verify(customDirectoryDao, times(2)).insert(inserted.capture() ?: uninitialized()) assertThat(inserted.allValues.size, `is`(2)) assertThat(inserted.allValues[0], `is`(fakeCustomDirectories[0])) @@ -69,7 +69,7 @@ class DirectoryRepositoryTest { directoryRepository.deleteCustomDirectory(fakeCustomDirectories[0].path).join() - val deleted = argumentCaptor() + val deleted = argumentCaptor() verify(customDirectoryDao).delete(deleted.capture() ?: uninitialized()) assertThat(deleted.value, `is`(fakeCustomDirectories[0])) } @@ -81,7 +81,7 @@ class DirectoryRepositoryTest { directoryRepository.addCustomDirectory(it.path).join() } - val inserted = argumentCaptor() + val inserted = argumentCaptor() verify(customDirectoryDao).insert(inserted.capture() ?: uninitialized()) assertThat(inserted.allValues.size, `is`(1)) assertThat(inserted.allValues[0], `is`(fakeCustomDirectories[0])) @@ -99,7 +99,7 @@ class DirectoryRepositoryTest { directoryRepository.addCustomDirectory(it.path).join() } - val inserted = argumentCaptor() + val inserted = argumentCaptor() verify(customDirectoryDao).insert(inserted.capture() ?: uninitialized()) assertThat(inserted.allValues.size, `is`(1)) assertThat(inserted.allValues[0], `is`(fakeCustomDirectories[0])) diff --git a/vlc-android/test/org/videolan/vlc/repository/ExternalSubRepositoryTest.kt b/vlc-android/test/org/videolan/vlc/repository/ExternalSubRepositoryTest.kt index ea645d0da..e33b49300 100644 --- a/vlc-android/test/org/videolan/vlc/repository/ExternalSubRepositoryTest.kt +++ b/vlc-android/test/org/videolan/vlc/repository/ExternalSubRepositoryTest.kt @@ -39,7 +39,7 @@ import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.modules.junit4.PowerMockRunner import org.videolan.vlc.database.ExternalSubDao import org.videolan.vlc.database.MediaDatabase -import org.videolan.vlc.database.models.ExternalSub +import org.videolan.vlc.mediadb.models.ExternalSub import org.videolan.vlc.util.* @@ -82,7 +82,7 @@ class ExternalSubRepositoryTest { PowerMockito.mockStatic(Uri::class.java) PowerMockito.`when`(Uri::class.java, "decode", anyString()).thenAnswer { it.arguments[0] as String } - val inserted = argumentCaptor() + val inserted = argumentCaptor() verify(externalSubDao, times(4)).insert(inserted.capture() ?: uninitialized()) assertThat(inserted.allValues.size, `is`(4)) assertThat(inserted.allValues, hasItem(fakeFooSubtitles[0])) @@ -90,8 +90,8 @@ class ExternalSubRepositoryTest { assertThat(inserted.allValues, hasItem(fakeBarSubtitles[0])) assertThat(inserted.allValues, hasItem(fakeBarSubtitles[1])) - val fakeFooLiveDataSubtitles = MutableLiveData>() - val fakeBarLiveDataSubtitles = MutableLiveData>() + val fakeFooLiveDataSubtitles = MutableLiveData>() + val fakeBarLiveDataSubtitles = MutableLiveData>() fakeFooLiveDataSubtitles.value = fakeFooSubtitles fakeBarLiveDataSubtitles.value = fakeBarSubtitles `when`(externalSubDao.get(foo)).thenReturn(fakeFooLiveDataSubtitles) @@ -123,7 +123,7 @@ class ExternalSubRepositoryTest { PowerMockito.mockStatic(Uri::class.java) PowerMockito.`when`(Uri::class.java, "decode", anyString()).thenAnswer { it.arguments[0] as String } - val inserted = argumentCaptor() + val inserted = argumentCaptor() verify(externalSubDao, times(4)).insert(inserted.capture() ?: uninitialized()) assertThat(inserted.allValues.size, `is`(4)) assertThat(inserted.allValues, hasItem(fakeFooSubtitles[0])) @@ -131,8 +131,8 @@ class ExternalSubRepositoryTest { assertThat(inserted.allValues, hasItem(fakeBarSubtitles[0])) assertThat(inserted.allValues, hasItem(fakeBarSubtitles[1])) - val fakeFooLiveDataSubtitles = MutableLiveData>() - val fakeBarLiveDataSubtitles = MutableLiveData>() + val fakeFooLiveDataSubtitles = MutableLiveData>() + val fakeBarLiveDataSubtitles = MutableLiveData>() fakeFooLiveDataSubtitles.value = fakeFooSubtitles fakeBarLiveDataSubtitles.value = fakeBarSubtitles diff --git a/vlc-android/test/org/videolan/vlc/repository/SlaveRepositoryTest.kt b/vlc-android/test/org/videolan/vlc/repository/SlaveRepositoryTest.kt index 125e7b497..41286f105 100644 --- a/vlc-android/test/org/videolan/vlc/repository/SlaveRepositoryTest.kt +++ b/vlc-android/test/org/videolan/vlc/repository/SlaveRepositoryTest.kt @@ -37,7 +37,7 @@ import org.powermock.core.classloader.annotations.PrepareForTest import org.powermock.modules.junit4.PowerMockRunner import org.videolan.vlc.database.MediaDatabase import org.videolan.vlc.database.SlaveDao -import org.videolan.vlc.database.models.Slave +import org.videolan.vlc.mediadb.models.Slave import org.videolan.vlc.util.TestUtil import org.videolan.vlc.util.argumentCaptor import org.videolan.vlc.util.mock @@ -64,7 +64,7 @@ class SlaveRepositoryTest { val fakeSlave = TestUtil.createSubtitleSlavesForMedia("foo.mkv", 1)[0] slaveRepository.saveSlave(fakeSlave.mediaPath, fakeSlave.type, fakeSlave.priority, fakeSlave.uri) - val inserted = argumentCaptor() + val inserted = argumentCaptor() verify(slaveDao).insert(inserted.capture() ?: uninitialized()) assertThat(inserted.value, `is`(fakeSlave)) diff --git a/vlc-android/test/org/videolan/vlc/util/StringsTest.kt b/vlc-android/test/org/videolan/vlc/util/StringsTest.kt index 7e1da15d7..a3f457b46 100644 --- a/vlc-android/test/org/videolan/vlc/util/StringsTest.kt +++ b/vlc-android/test/org/videolan/vlc/util/StringsTest.kt @@ -4,6 +4,7 @@ import org.junit.Assert.* import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.JUnit4 +import org.videolan.resources.* @RunWith(JUnit4::class) class StringsTest { diff --git a/vlc-android/test/org/videolan/vlc/viewmodels/SubtitlesModelTest.kt b/vlc-android/test/org/videolan/vlc/viewmodels/SubtitlesModelTest.kt index a383adc7a..07434a61e 100644 --- a/vlc-android/test/org/videolan/vlc/viewmodels/SubtitlesModelTest.kt +++ b/vlc-android/test/org/videolan/vlc/viewmodels/SubtitlesModelTest.kt @@ -17,7 +17,7 @@ import org.videolan.vlc.BaseTest import org.videolan.vlc.R import org.videolan.vlc.api.NoConnectivityException import org.videolan.vlc.database.ExternalSubDao -import org.videolan.vlc.database.models.ExternalSub +import org.videolan.vlc.mediadb.models.ExternalSub import org.videolan.vlc.gui.dialogs.State import org.videolan.vlc.repository.ExternalSubRepository import org.videolan.vlc.repository.OpenSubtitleRepository @@ -38,7 +38,7 @@ class SubtitlesModelTest : BaseTest() { private val mockedDao: ExternalSubDao = mockk() private lateinit var mediaPath: String - private val downloadedLiveData = MutableLiveData>() + private val downloadedLiveData = MutableLiveData>() private lateinit var subtitlesModel: SubtitlesModel diff --git a/vlc-android/test/org/videolan/vlc/viewmodels/browser/FileBrowserModelTest.kt b/vlc-android/test/org/videolan/vlc/viewmodels/browser/FileBrowserModelTest.kt index 9af70b462..75af6176b 100644 --- a/vlc-android/test/org/videolan/vlc/viewmodels/browser/FileBrowserModelTest.kt +++ b/vlc-android/test/org/videolan/vlc/viewmodels/browser/FileBrowserModelTest.kt @@ -21,7 +21,7 @@ import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.medialibrary.stubs.StubMediaWrapper import org.videolan.vlc.BaseTest import org.videolan.vlc.database.BrowserFavDao -import org.videolan.vlc.database.models.BrowserFav +import org.videolan.vlc.mediadb.models.BrowserFav import org.videolan.vlc.providers.BrowserProvider import org.videolan.vlc.repository.BrowserFavRepository import org.videolan.vlc.util.CoroutineContextProvider @@ -88,9 +88,9 @@ class FileBrowserModelTest : BaseTest() { file.listFiles().sorted().mapIndexed(this::addFileToProvider) } - private fun getFakeBrowserFav(index: Int): BrowserFav { + private fun getFakeBrowserFav(index: Int): org.videolan.vlc.mediadb.models.BrowserFav { val t = temporaryFolder.newFile("fake_media$index") - return BrowserFav(Uri.parse(t.path), 0, "vid_$index", null) + return org.videolan.vlc.mediadb.models.BrowserFav(Uri.parse(t.path), 0, "vid_$index", null) } @Test @@ -146,7 +146,7 @@ class FileBrowserModelTest : BaseTest() { @Test fun whenAtRootAndHasLocalFavorite_checkDataSetContainsIt() { - val liveFavorites: MutableLiveData> = MutableLiveData() + val liveFavorites: MutableLiveData> = MutableLiveData() every { mockedFavoritesRepo.localFavorites } returns liveFavorites initBrowserModel(null, showHiddenFiles = false) diff --git a/vlc-android/test/org/videolan/vlc/viewmodels/browser/StorageModelTest.kt b/vlc-android/test/org/videolan/vlc/viewmodels/browser/StorageModelTest.kt index dd563f077..8da5f18e1 100644 --- a/vlc-android/test/org/videolan/vlc/viewmodels/browser/StorageModelTest.kt +++ b/vlc-android/test/org/videolan/vlc/viewmodels/browser/StorageModelTest.kt @@ -22,7 +22,7 @@ import org.videolan.medialibrary.stubs.StubMediaWrapper import org.videolan.vlc.BaseTest import org.videolan.vlc.R import org.videolan.vlc.database.CustomDirectoryDao -import org.videolan.vlc.database.models.CustomDirectory +import org.videolan.vlc.mediadb.models.CustomDirectory import org.videolan.vlc.providers.BrowserProvider import org.videolan.vlc.repository.DirectoryRepository import org.videolan.vlc.util.CoroutineContextProvider @@ -115,10 +115,10 @@ class StorageModelTest : BaseTest() { @Test fun whenAtRootAndTwoCustomDirectoriesWithOneChildOfInternalStorage_checkTwoResultsAreObtained() { - val customDir = CustomDirectory(temporaryFolder.newFile("custom1").path) + val customDir = org.videolan.vlc.mediadb.models.CustomDirectory(temporaryFolder.newFile("custom1").path) val newDirInsideInternalStorage = File("${Environment.getExternalStorageDirectory().path}/custom2") newDirInsideInternalStorage.mkdir() - val customDirInsideInternalStorage = CustomDirectory(newDirInsideInternalStorage.path) + val customDirInsideInternalStorage = org.videolan.vlc.mediadb.models.CustomDirectory(newDirInsideInternalStorage.path) coEvery { mockedDirectoryRepo.getCustomDirectories() } returns listOf(customDir, customDirInsideInternalStorage) initBrowserModel(false, null) @@ -133,7 +133,7 @@ class StorageModelTest : BaseTest() { @Test fun whenAtCustomDirAndHiddenDirectoryPresentWithHideHiddenFiles_checkResultHasCorrectDirectoriesAndFlagIsNotShowHiddenFiles() { - val customDir = CustomDirectory(temporaryFolder.root.path) + val customDir = org.videolan.vlc.mediadb.models.CustomDirectory(temporaryFolder.root.path) coEvery { mockedDirectoryRepo.getCustomDirectories() } returns listOf(customDir) initBrowserModel(false, customDir.path) @@ -148,7 +148,7 @@ class StorageModelTest : BaseTest() { @Test fun whenAtCustomDirAndHiddenDirectoryPresentWithShowHiddenFiles_checkResultHasHiddenDirectoriesAndFlagIsShowHiddenFiles() { - val customDir = CustomDirectory(temporaryFolder.root.path) + val customDir = org.videolan.vlc.mediadb.models.CustomDirectory(temporaryFolder.root.path) coEvery { mockedDirectoryRepo.getCustomDirectories() } returns listOf(customDir) initBrowserModel(true, customDir.path)