|
|
|
@ -39,10 +39,19 @@ import android.os.Build |
|
|
|
import android.os.Bundle |
|
|
|
import android.os.Handler |
|
|
|
import android.os.Looper |
|
|
|
import android.renderscript.* |
|
|
|
import android.renderscript.Allocation |
|
|
|
import android.renderscript.Element |
|
|
|
import android.renderscript.RSInvalidStateException |
|
|
|
import android.renderscript.RenderScript |
|
|
|
import android.renderscript.ScriptIntrinsicBlur |
|
|
|
import android.text.TextUtils |
|
|
|
import android.view.* |
|
|
|
import android.view.animation.* |
|
|
|
import android.view.DragEvent |
|
|
|
import android.view.Menu |
|
|
|
import android.view.MenuItem |
|
|
|
import android.view.View |
|
|
|
import android.view.WindowManager |
|
|
|
import android.view.animation.AccelerateDecelerateInterpolator |
|
|
|
import android.view.animation.OvershootInterpolator |
|
|
|
import android.view.inputmethod.InputMethodManager |
|
|
|
import android.widget.ImageView |
|
|
|
import android.widget.TextView |
|
|
|
@ -71,7 +80,10 @@ import androidx.lifecycle.lifecycleScope |
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager |
|
|
|
import androidx.recyclerview.widget.RecyclerView |
|
|
|
import com.google.android.material.snackbar.Snackbar |
|
|
|
import kotlinx.coroutines.* |
|
|
|
import kotlinx.coroutines.CoroutineScope |
|
|
|
import kotlinx.coroutines.Dispatchers |
|
|
|
import kotlinx.coroutines.launch |
|
|
|
import kotlinx.coroutines.withContext |
|
|
|
import nl.dionsegijn.konfetti.core.Party |
|
|
|
import nl.dionsegijn.konfetti.core.Position |
|
|
|
import nl.dionsegijn.konfetti.core.Rotation |
|
|
|
@ -83,19 +95,64 @@ import org.videolan.libvlc.util.AndroidUtil |
|
|
|
import org.videolan.medialibrary.MLServiceLocator |
|
|
|
import org.videolan.medialibrary.Tools |
|
|
|
import org.videolan.medialibrary.interfaces.Medialibrary |
|
|
|
import org.videolan.medialibrary.interfaces.media.* |
|
|
|
import org.videolan.medialibrary.interfaces.media.Album |
|
|
|
import org.videolan.medialibrary.interfaces.media.Artist |
|
|
|
import org.videolan.medialibrary.interfaces.media.Folder |
|
|
|
import org.videolan.medialibrary.interfaces.media.Genre |
|
|
|
import org.videolan.medialibrary.interfaces.media.MediaWrapper |
|
|
|
import org.videolan.medialibrary.interfaces.media.Playlist |
|
|
|
import org.videolan.medialibrary.interfaces.media.VideoGroup |
|
|
|
import org.videolan.medialibrary.media.MediaLibraryItem |
|
|
|
import org.videolan.resources.* |
|
|
|
import org.videolan.resources.ACTION_DISCOVER_DEVICE |
|
|
|
import org.videolan.resources.AppContextProvider |
|
|
|
import org.videolan.resources.CATEGORY_ALBUMS |
|
|
|
import org.videolan.resources.CATEGORY_ARTISTS |
|
|
|
import org.videolan.resources.CATEGORY_GENRES |
|
|
|
import org.videolan.resources.CATEGORY_NOW_PLAYING |
|
|
|
import org.videolan.resources.CATEGORY_NOW_PLAYING_PIP |
|
|
|
import org.videolan.resources.CATEGORY_SONGS |
|
|
|
import org.videolan.resources.EXTRA_PATH |
|
|
|
import org.videolan.resources.HEADER_DIRECTORIES |
|
|
|
import org.videolan.resources.HEADER_MOVIES |
|
|
|
import org.videolan.resources.HEADER_NETWORK |
|
|
|
import org.videolan.resources.HEADER_PERMISSION |
|
|
|
import org.videolan.resources.HEADER_PLAYLISTS |
|
|
|
import org.videolan.resources.HEADER_SERVER |
|
|
|
import org.videolan.resources.HEADER_STREAM |
|
|
|
import org.videolan.resources.HEADER_TV_SHOW |
|
|
|
import org.videolan.resources.HEADER_VIDEO |
|
|
|
import org.videolan.resources.ID_ABOUT_TV |
|
|
|
import org.videolan.resources.ID_REMOTE_ACCESS |
|
|
|
import org.videolan.resources.ID_SETTINGS |
|
|
|
import org.videolan.resources.ID_SPONSOR |
|
|
|
import org.videolan.resources.TAG_ITEM |
|
|
|
import org.videolan.resources.TV_CONFIRMATION_ACTIVITY |
|
|
|
import org.videolan.resources.util.launchForeground |
|
|
|
import org.videolan.tools.* |
|
|
|
import org.videolan.tools.BitmapCache |
|
|
|
import org.videolan.tools.KEY_APP_THEME |
|
|
|
import org.videolan.tools.KEY_INCOGNITO |
|
|
|
import org.videolan.tools.MultiSelectHelper |
|
|
|
import org.videolan.tools.Settings |
|
|
|
import org.videolan.tools.dp |
|
|
|
import org.videolan.tools.isStarted |
|
|
|
import org.videolan.tools.putSingle |
|
|
|
import org.videolan.tools.setGone |
|
|
|
import org.videolan.vlc.BuildConfig.VLC_VERSION_NAME |
|
|
|
import org.videolan.vlc.MediaParsingService |
|
|
|
import org.videolan.vlc.R |
|
|
|
import org.videolan.vlc.StartActivity |
|
|
|
import org.videolan.vlc.VlcMigrationHelper |
|
|
|
import org.videolan.vlc.gui.* |
|
|
|
import org.videolan.vlc.gui.AuthorsActivity |
|
|
|
import org.videolan.vlc.gui.BaseActivity |
|
|
|
import org.videolan.vlc.gui.InfoActivity |
|
|
|
import org.videolan.vlc.gui.LibrariesActivity |
|
|
|
import org.videolan.vlc.gui.LibraryWithLicense |
|
|
|
import org.videolan.vlc.gui.browser.MediaBrowserFragment |
|
|
|
import org.videolan.vlc.gui.dialogs.* |
|
|
|
import org.videolan.vlc.gui.dialogs.AboutVersionDialog |
|
|
|
import org.videolan.vlc.gui.dialogs.AddToGroupDialog |
|
|
|
import org.videolan.vlc.gui.dialogs.LicenseDialog |
|
|
|
import org.videolan.vlc.gui.dialogs.SavePlaylistDialog |
|
|
|
import org.videolan.vlc.gui.dialogs.VideoTracksDialog |
|
|
|
import org.videolan.vlc.gui.helpers.BitmapUtil.vectorToBitmap |
|
|
|
import org.videolan.vlc.gui.helpers.hf.PinCodeDelegate |
|
|
|
import org.videolan.vlc.gui.helpers.hf.checkPIN |
|
|
|
@ -491,6 +548,21 @@ object UiTools { |
|
|
|
// if (VLCBilling.getInstance(activity.application).status == BillingStatus.FAILURE || VLCBilling.getInstance(activity.application).skuDetails.isEmpty()) donationsButton.setGone() else donationsButton.setVisible() |
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* Update the incognito mode setting |
|
|
|
* |
|
|
|
* @param activity the activity that launched the change |
|
|
|
* @param item the menu item that was clicked |
|
|
|
* @return true if the change has been applied, false otherwise |
|
|
|
*/ |
|
|
|
fun updateIncognitoMode(activity: FragmentActivity, item: MenuItem): Boolean { |
|
|
|
if (activity.showPinIfNeeded()) return false |
|
|
|
Settings.getInstance(activity).putSingle(KEY_INCOGNITO, !Settings.getInstance(activity).getBoolean(KEY_INCOGNITO, false)) |
|
|
|
item.isChecked = !item.isChecked |
|
|
|
return true |
|
|
|
} |
|
|
|
|
|
|
|
fun setKeyboardVisibility(v: View?, show: Boolean) { |
|
|
|
if (v == null) return |
|
|
|
val inputMethodManager = v.context.applicationContext.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager |
|
|
|
|