From dd2ef092445444f166bd524202162b67e1f15900 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sun, 18 Jun 2023 23:23:19 +0800 Subject: [PATCH] Support adaptive track --- .../{23.json => 24.json} | 14 ++++++++++---- .../java/com/fongmi/android/tv/bean/History.java | 1 + .../java/com/fongmi/android/tv/bean/Track.java | 9 +++++++++ .../java/com/fongmi/android/tv/db/AppDatabase.java | 10 +++++++++- .../com/fongmi/android/tv/db/dao/TrackDao.java | 3 +++ .../fongmi/android/tv/ui/adapter/TrackAdapter.java | 4 +++- .../android/tv/ui/custom/dialog/TrackDialog.java | 2 ++ 7 files changed, 37 insertions(+), 6 deletions(-) rename app/schemas/com.fongmi.android.tv.db.AppDatabase/{23.json => 24.json} (97%) diff --git a/app/schemas/com.fongmi.android.tv.db.AppDatabase/23.json b/app/schemas/com.fongmi.android.tv.db.AppDatabase/24.json similarity index 97% rename from app/schemas/com.fongmi.android.tv.db.AppDatabase/23.json rename to app/schemas/com.fongmi.android.tv.db.AppDatabase/24.json index 8c315b625..c5b99361b 100644 --- a/app/schemas/com.fongmi.android.tv.db.AppDatabase/23.json +++ b/app/schemas/com.fongmi.android.tv.db.AppDatabase/24.json @@ -1,8 +1,8 @@ { "formatVersion": 1, "database": { - "version": 23, - "identityHash": "0d186de42a589253f12a86254e20636e", + "version": 24, + "identityHash": "d6fa99526559c6a3a44f3911535b3639", "entities": [ { "tableName": "Keep", @@ -112,7 +112,7 @@ }, { "tableName": "Track", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `type` INTEGER NOT NULL, `group` INTEGER NOT NULL, `track` INTEGER NOT NULL, `player` INTEGER NOT NULL, `key` TEXT, `name` TEXT, `selected` INTEGER NOT NULL)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `type` INTEGER NOT NULL, `group` INTEGER NOT NULL, `track` INTEGER NOT NULL, `player` INTEGER NOT NULL, `key` TEXT, `name` TEXT, `selected` INTEGER NOT NULL, `adaptive` INTEGER NOT NULL)", "fields": [ { "fieldPath": "id", @@ -161,6 +161,12 @@ "columnName": "selected", "affinity": "INTEGER", "notNull": true + }, + { + "fieldPath": "adaptive", + "columnName": "adaptive", + "affinity": "INTEGER", + "notNull": true } ], "primaryKey": { @@ -432,7 +438,7 @@ "views": [], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '0d186de42a589253f12a86254e20636e')" + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'd6fa99526559c6a3a44f3911535b3639')" ] } } \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/android/tv/bean/History.java b/app/src/main/java/com/fongmi/android/tv/bean/History.java index 02d3ffaec..20737bf83 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/History.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/History.java @@ -299,6 +299,7 @@ public class History { public History delete() { AppDatabase.get().getHistoryDao().delete(ApiConfig.getCid(), getKey()); + AppDatabase.get().getTrackDao().delete(getKey()); return this; } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Track.java b/app/src/main/java/com/fongmi/android/tv/bean/Track.java index 38d20797c..53c7065a0 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Track.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Track.java @@ -22,6 +22,7 @@ public class Track { private String key; private String name; private boolean selected; + private boolean adaptive; public Track(int type, String name) { this.type = type; @@ -92,6 +93,14 @@ public class Track { this.selected = selected; } + public boolean isAdaptive() { + return adaptive; + } + + public void setAdaptive(boolean adaptive) { + this.adaptive = adaptive; + } + public boolean isExo(int player) { return getPlayer() == player && player == Players.EXO; } diff --git a/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java b/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java index cb856aaa6..141875d13 100644 --- a/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java +++ b/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java @@ -27,7 +27,7 @@ import com.fongmi.android.tv.utils.Prefers; @Database(entities = {Keep.class, Site.class, Track.class, Config.class, Device.class, History.class}, version = AppDatabase.VERSION) public abstract class AppDatabase extends RoomDatabase { - public static final int VERSION = 23; + public static final int VERSION = 24; public static final String SYMBOL = "@@@"; private static volatile AppDatabase instance; @@ -51,6 +51,7 @@ public abstract class AppDatabase extends RoomDatabase { .addMigrations(MIGRATION_20_21) .addMigrations(MIGRATION_21_22) .addMigrations(MIGRATION_22_23) + .addMigrations(MIGRATION_23_24) .allowMainThreadQueries() .fallbackToDestructiveMigration() .build(); @@ -158,4 +159,11 @@ public abstract class AppDatabase extends RoomDatabase { if (Prefers.getPlayer() == 0) Prefers.putPlayer(2); } }; + + static final Migration MIGRATION_23_24 = new Migration(23, 24) { + @Override + public void migrate(@NonNull SupportSQLiteDatabase database) { + database.execSQL("ALTER TABLE Track ADD COLUMN `adaptive` INTEGER NOT NULL DEFAULT 0"); + } + }; } diff --git a/app/src/main/java/com/fongmi/android/tv/db/dao/TrackDao.java b/app/src/main/java/com/fongmi/android/tv/db/dao/TrackDao.java index d37e77731..d2ec7ff70 100644 --- a/app/src/main/java/com/fongmi/android/tv/db/dao/TrackDao.java +++ b/app/src/main/java/com/fongmi/android/tv/db/dao/TrackDao.java @@ -17,4 +17,7 @@ public abstract class TrackDao extends BaseDao { @Insert(onConflict = OnConflictStrategy.REPLACE) public abstract Long insert(Track item); + + @Query("DELETE FROM Track WHERE `key` = :key") + public abstract void delete(String key); } diff --git a/app/src/main/java/com/fongmi/android/tv/ui/adapter/TrackAdapter.java b/app/src/main/java/com/fongmi/android/tv/ui/adapter/TrackAdapter.java index 28fcc32a1..fb8877439 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/adapter/TrackAdapter.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/adapter/TrackAdapter.java @@ -69,7 +69,9 @@ public class TrackAdapter extends RecyclerView.Adapter @Override public void onClick(View view) { - mListener.onItemClick(mItems.get(getLayoutPosition()).toggle()); + Track item = mItems.get(getLayoutPosition()).toggle(); + notifyItemChanged(getLayoutPosition()); + mListener.onItemClick(item); } } } diff --git a/app/src/main/java/com/fongmi/android/tv/ui/custom/dialog/TrackDialog.java b/app/src/main/java/com/fongmi/android/tv/ui/custom/dialog/TrackDialog.java index f8e887c34..13ac96750 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/custom/dialog/TrackDialog.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/custom/dialog/TrackDialog.java @@ -84,6 +84,7 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic if (trackGroup.getType() != type) continue; for (int j = 0; j < trackGroup.length; j++) { Track item = new Track(type, provider.getTrackName(trackGroup.getTrackFormat(j))); + item.setAdaptive(trackGroup.isAdaptiveSupported()); item.setSelected(trackGroup.isTrackSelected(j)); item.setPlayer(player.getPlayer()); item.setGroup(i); @@ -111,6 +112,7 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic public void onItemClick(Track item) { if (listener != null) listener.onTrackClick(item); player.setTrack(List.of(item)); + if (item.isAdaptive()) return; dismiss(); }