feat: folder import creates a folder-named playlist (Library tab) + Imported/<folder>/ subdir
This commit is contained in:
parent
153a132656
commit
e6f88d5740
203 changed files with 205 additions and 73 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -427,24 +427,24 @@ public final class DaggerRadAmpApp_HiltComponents_SingletonC {
|
||||||
private static final class LazyClassKeyProvider {
|
private static final class LazyClassKeyProvider {
|
||||||
static String com_rada_ui_playlists_PlaylistManagerViewModel = "com.rada.ui.playlists.PlaylistManagerViewModel";
|
static String com_rada_ui_playlists_PlaylistManagerViewModel = "com.rada.ui.playlists.PlaylistManagerViewModel";
|
||||||
|
|
||||||
static String com_rada_ui_library_LibraryViewModel = "com.rada.ui.library.LibraryViewModel";
|
|
||||||
|
|
||||||
static String com_rada_ui_streams_StreamsViewModel = "com.rada.ui.streams.StreamsViewModel";
|
static String com_rada_ui_streams_StreamsViewModel = "com.rada.ui.streams.StreamsViewModel";
|
||||||
|
|
||||||
|
static String com_rada_ui_stations_StationBrowserViewModel = "com.rada.ui.stations.StationBrowserViewModel";
|
||||||
|
|
||||||
static String com_rada_ui_player_NowPlayingViewModel = "com.rada.ui.player.NowPlayingViewModel";
|
static String com_rada_ui_player_NowPlayingViewModel = "com.rada.ui.player.NowPlayingViewModel";
|
||||||
|
|
||||||
static String com_rada_ui_player_PlayerViewModel = "com.rada.ui.player.PlayerViewModel";
|
static String com_rada_ui_player_PlayerViewModel = "com.rada.ui.player.PlayerViewModel";
|
||||||
|
|
||||||
static String com_rada_ui_stations_StationBrowserViewModel = "com.rada.ui.stations.StationBrowserViewModel";
|
static String com_rada_ui_library_LibraryViewModel = "com.rada.ui.library.LibraryViewModel";
|
||||||
|
|
||||||
@KeepFieldType
|
@KeepFieldType
|
||||||
PlaylistManagerViewModel com_rada_ui_playlists_PlaylistManagerViewModel2;
|
PlaylistManagerViewModel com_rada_ui_playlists_PlaylistManagerViewModel2;
|
||||||
|
|
||||||
@KeepFieldType
|
@KeepFieldType
|
||||||
LibraryViewModel com_rada_ui_library_LibraryViewModel2;
|
StreamsViewModel com_rada_ui_streams_StreamsViewModel2;
|
||||||
|
|
||||||
@KeepFieldType
|
@KeepFieldType
|
||||||
StreamsViewModel com_rada_ui_streams_StreamsViewModel2;
|
StationBrowserViewModel com_rada_ui_stations_StationBrowserViewModel2;
|
||||||
|
|
||||||
@KeepFieldType
|
@KeepFieldType
|
||||||
NowPlayingViewModel com_rada_ui_player_NowPlayingViewModel2;
|
NowPlayingViewModel com_rada_ui_player_NowPlayingViewModel2;
|
||||||
|
|
@ -453,7 +453,7 @@ public final class DaggerRadAmpApp_HiltComponents_SingletonC {
|
||||||
PlayerViewModel com_rada_ui_player_PlayerViewModel2;
|
PlayerViewModel com_rada_ui_player_PlayerViewModel2;
|
||||||
|
|
||||||
@KeepFieldType
|
@KeepFieldType
|
||||||
StationBrowserViewModel com_rada_ui_stations_StationBrowserViewModel2;
|
LibraryViewModel com_rada_ui_library_LibraryViewModel2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -509,35 +509,35 @@ public final class DaggerRadAmpApp_HiltComponents_SingletonC {
|
||||||
|
|
||||||
@IdentifierNameString
|
@IdentifierNameString
|
||||||
private static final class LazyClassKeyProvider {
|
private static final class LazyClassKeyProvider {
|
||||||
static String com_rada_ui_library_LibraryViewModel = "com.rada.ui.library.LibraryViewModel";
|
static String com_rada_ui_player_PlayerViewModel = "com.rada.ui.player.PlayerViewModel";
|
||||||
|
|
||||||
static String com_rada_ui_stations_StationBrowserViewModel = "com.rada.ui.stations.StationBrowserViewModel";
|
|
||||||
|
|
||||||
static String com_rada_ui_playlists_PlaylistManagerViewModel = "com.rada.ui.playlists.PlaylistManagerViewModel";
|
static String com_rada_ui_playlists_PlaylistManagerViewModel = "com.rada.ui.playlists.PlaylistManagerViewModel";
|
||||||
|
|
||||||
static String com_rada_ui_player_PlayerViewModel = "com.rada.ui.player.PlayerViewModel";
|
static String com_rada_ui_stations_StationBrowserViewModel = "com.rada.ui.stations.StationBrowserViewModel";
|
||||||
|
|
||||||
static String com_rada_ui_player_NowPlayingViewModel = "com.rada.ui.player.NowPlayingViewModel";
|
static String com_rada_ui_library_LibraryViewModel = "com.rada.ui.library.LibraryViewModel";
|
||||||
|
|
||||||
static String com_rada_ui_streams_StreamsViewModel = "com.rada.ui.streams.StreamsViewModel";
|
static String com_rada_ui_streams_StreamsViewModel = "com.rada.ui.streams.StreamsViewModel";
|
||||||
|
|
||||||
@KeepFieldType
|
static String com_rada_ui_player_NowPlayingViewModel = "com.rada.ui.player.NowPlayingViewModel";
|
||||||
LibraryViewModel com_rada_ui_library_LibraryViewModel2;
|
|
||||||
|
|
||||||
@KeepFieldType
|
|
||||||
StationBrowserViewModel com_rada_ui_stations_StationBrowserViewModel2;
|
|
||||||
|
|
||||||
@KeepFieldType
|
|
||||||
PlaylistManagerViewModel com_rada_ui_playlists_PlaylistManagerViewModel2;
|
|
||||||
|
|
||||||
@KeepFieldType
|
@KeepFieldType
|
||||||
PlayerViewModel com_rada_ui_player_PlayerViewModel2;
|
PlayerViewModel com_rada_ui_player_PlayerViewModel2;
|
||||||
|
|
||||||
@KeepFieldType
|
@KeepFieldType
|
||||||
NowPlayingViewModel com_rada_ui_player_NowPlayingViewModel2;
|
PlaylistManagerViewModel com_rada_ui_playlists_PlaylistManagerViewModel2;
|
||||||
|
|
||||||
|
@KeepFieldType
|
||||||
|
StationBrowserViewModel com_rada_ui_stations_StationBrowserViewModel2;
|
||||||
|
|
||||||
|
@KeepFieldType
|
||||||
|
LibraryViewModel com_rada_ui_library_LibraryViewModel2;
|
||||||
|
|
||||||
@KeepFieldType
|
@KeepFieldType
|
||||||
StreamsViewModel com_rada_ui_streams_StreamsViewModel2;
|
StreamsViewModel com_rada_ui_streams_StreamsViewModel2;
|
||||||
|
|
||||||
|
@KeepFieldType
|
||||||
|
NowPlayingViewModel com_rada_ui_player_NowPlayingViewModel2;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class SwitchingProvider<T> implements Provider<T> {
|
private static final class SwitchingProvider<T> implements Provider<T> {
|
||||||
|
|
@ -755,7 +755,7 @@ public final class DaggerRadAmpApp_HiltComponents_SingletonC {
|
||||||
return (T) AppModule_ProvidePlaylistDaoFactory.providePlaylistDao(singletonCImpl.provideDatabaseProvider.get());
|
return (T) AppModule_ProvidePlaylistDaoFactory.providePlaylistDao(singletonCImpl.provideDatabaseProvider.get());
|
||||||
|
|
||||||
case 6: // com.rada.data.repository.SongImporter
|
case 6: // com.rada.data.repository.SongImporter
|
||||||
return (T) new SongImporter(ApplicationContextModule_ProvideContextFactory.provideContext(singletonCImpl.applicationContextModule), singletonCImpl.provideLibraryRepositoryProvider.get());
|
return (T) new SongImporter(ApplicationContextModule_ProvideContextFactory.provideContext(singletonCImpl.applicationContextModule), singletonCImpl.provideLibraryRepositoryProvider.get(), singletonCImpl.providePlaylistRepositoryProvider.get());
|
||||||
|
|
||||||
case 7: // com.rada.data.repository.StationRepository
|
case 7: // com.rada.data.repository.StationRepository
|
||||||
return (T) AppModule_ProvideStationRepositoryFactory.provideStationRepository(ApplicationContextModule_ProvideContextFactory.provideContext(singletonCImpl.applicationContextModule));
|
return (T) AppModule_ProvideStationRepositoryFactory.provideStationRepository(ApplicationContextModule_ProvideContextFactory.provideContext(singletonCImpl.applicationContextModule));
|
||||||
|
|
|
||||||
|
|
@ -28,23 +28,29 @@ public final class SongImporter_Factory implements Factory<SongImporter> {
|
||||||
|
|
||||||
private final Provider<LibraryRepository> libraryRepositoryProvider;
|
private final Provider<LibraryRepository> libraryRepositoryProvider;
|
||||||
|
|
||||||
|
private final Provider<PlaylistRepository> playlistRepositoryProvider;
|
||||||
|
|
||||||
public SongImporter_Factory(Provider<Context> contextProvider,
|
public SongImporter_Factory(Provider<Context> contextProvider,
|
||||||
Provider<LibraryRepository> libraryRepositoryProvider) {
|
Provider<LibraryRepository> libraryRepositoryProvider,
|
||||||
|
Provider<PlaylistRepository> playlistRepositoryProvider) {
|
||||||
this.contextProvider = contextProvider;
|
this.contextProvider = contextProvider;
|
||||||
this.libraryRepositoryProvider = libraryRepositoryProvider;
|
this.libraryRepositoryProvider = libraryRepositoryProvider;
|
||||||
|
this.playlistRepositoryProvider = playlistRepositoryProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SongImporter get() {
|
public SongImporter get() {
|
||||||
return newInstance(contextProvider.get(), libraryRepositoryProvider.get());
|
return newInstance(contextProvider.get(), libraryRepositoryProvider.get(), playlistRepositoryProvider.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SongImporter_Factory create(Provider<Context> contextProvider,
|
public static SongImporter_Factory create(Provider<Context> contextProvider,
|
||||||
Provider<LibraryRepository> libraryRepositoryProvider) {
|
Provider<LibraryRepository> libraryRepositoryProvider,
|
||||||
return new SongImporter_Factory(contextProvider, libraryRepositoryProvider);
|
Provider<PlaylistRepository> playlistRepositoryProvider) {
|
||||||
|
return new SongImporter_Factory(contextProvider, libraryRepositoryProvider, playlistRepositoryProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SongImporter newInstance(Context context, LibraryRepository libraryRepository) {
|
public static SongImporter newInstance(Context context, LibraryRepository libraryRepository,
|
||||||
return new SongImporter(context, libraryRepository);
|
PlaylistRepository playlistRepository) {
|
||||||
|
return new SongImporter(context, libraryRepository, playlistRepository);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,35 @@ public class PlaylistDao_Impl(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override suspend fun getPlaylistByName(name: String): PlaylistEntity? {
|
||||||
|
val _sql: String = "SELECT * FROM playlists WHERE name = ? LIMIT 1"
|
||||||
|
return performSuspending(__db, true, false) { _connection ->
|
||||||
|
val _stmt: SQLiteStatement = _connection.prepare(_sql)
|
||||||
|
try {
|
||||||
|
var _argIndex: Int = 1
|
||||||
|
_stmt.bindText(_argIndex, name)
|
||||||
|
val _columnIndexOfId: Int = getColumnIndexOrThrow(_stmt, "id")
|
||||||
|
val _columnIndexOfName: Int = getColumnIndexOrThrow(_stmt, "name")
|
||||||
|
val _columnIndexOfCreatedAt: Int = getColumnIndexOrThrow(_stmt, "createdAt")
|
||||||
|
val _result: PlaylistEntity?
|
||||||
|
if (_stmt.step()) {
|
||||||
|
val _tmpId: Long
|
||||||
|
_tmpId = _stmt.getLong(_columnIndexOfId)
|
||||||
|
val _tmpName: String
|
||||||
|
_tmpName = _stmt.getText(_columnIndexOfName)
|
||||||
|
val _tmpCreatedAt: Long
|
||||||
|
_tmpCreatedAt = _stmt.getLong(_columnIndexOfCreatedAt)
|
||||||
|
_result = PlaylistEntity(_tmpId,_tmpName,_tmpCreatedAt)
|
||||||
|
} else {
|
||||||
|
_result = null
|
||||||
|
}
|
||||||
|
_result
|
||||||
|
} finally {
|
||||||
|
_stmt.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override fun getSongsInPlaylist(playlistId: Long): Flow<List<SavedSongEntity>> {
|
public override fun getSongsInPlaylist(playlistId: Long): Flow<List<SavedSongEntity>> {
|
||||||
val _sql: String = """
|
val _sql: String = """
|
||||||
|
|
|
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,4 +1,4 @@
|
||||||
#Mon Sep 07 11:26:17 CDT 2026
|
#Mon Sep 07 11:43:56 CDT 2026
|
||||||
path.4=12/classes.dex
|
path.4=12/classes.dex
|
||||||
path.3=11/classes.dex
|
path.3=11/classes.dex
|
||||||
path.2=10/classes.dex
|
path.2=10/classes.dex
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
<EFBFBD>3<EFBFBD>%<EFBFBD>*<EFBFBD>(<EFBFBD>,<EFBFBD>,
|
<EFBFBD>3<EFBFBD>%<EFBFBD>*<EFBFBD>(<EFBFBD>,<EFBFBD>,<EFBFBD>+
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
<EFBFBD><EFBFBD>
<EFBFBD>
<EFBFBD>
|
<EFBFBD><EFBFBD>
<EFBFBD>
<EFBFBD><EFBFBD>
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
ラハ<EFBFBD>ム<EFBFBD>キ孖マセ郞<EFBFBD>
|
вйЪяЧ╥З╕о╬Ш╤Р╢И╗
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue