Skip to content

Commit

Permalink
feat: color palette for albums
Browse files Browse the repository at this point in the history
when groupArtworksByAlbum enabled
  • Loading branch information
MSOB7YY committed Dec 24, 2023
1 parent 8acfc81 commit 1528947
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 8 deletions.
25 changes: 18 additions & 7 deletions lib/controller/current_color.dart
Original file line number Diff line number Diff line change
Expand Up @@ -200,18 +200,21 @@ class CurrentColor {
}
}

final valInMap = colorsMap[track.path.getFilename];
final filename = settings.groupArtworksByAlbum.value ? track.albumIdentifier : track.filename;

final valInMap = colorsMap[filename];
if (!forceReCheck && valInMap != null) {
return maybeDelightned(valInMap);
}

NamidaColor? nc = await extractPaletteFromImage(
track.pathToImage,
track: track,
useIsolate: useIsolate,
);

final finalnc = maybeDelightned(nc);
_updateInColorMap(track.filename, finalnc);
_updateInColorMap(filename, finalnc);
return finalnc;
}

Expand Down Expand Up @@ -247,6 +250,7 @@ class CurrentColor {

Future<NamidaColor?> extractPaletteFromImage(
String imagePath, {
Track? track,
bool forceReExtract = false,
bool useIsolate = _defaultUseIsolate,
Directory? paletteSaveDirectory,
Expand All @@ -255,7 +259,13 @@ class CurrentColor {

paletteSaveDirectory ??= Directory(AppDirs.PALETTES);

final paletteFile = File("${paletteSaveDirectory.path}${imagePath.getFilenameWOExt}.palette");
final filename = track != null
? settings.groupArtworksByAlbum.value
? track.albumIdentifier
: track.filename
: imagePath.getFilenameWOExt;

final paletteFile = File("${paletteSaveDirectory.path}$filename.palette");

// -- try reading the cached file
if (!forceReExtract) {
Expand Down Expand Up @@ -286,13 +296,14 @@ class CurrentColor {
Future<void> reExtractTrackColorPalette({required Track track, required NamidaColor? newNC, required String? imagePath, bool useIsolate = true}) async {
assert(newNC != null || imagePath != null, 'a color or imagePath must be provided');

final paletteFile = File("${AppDirs.PALETTES}${track.filename}.palette");
final filename = settings.groupArtworksByAlbum.value ? track.albumIdentifier : track.filename;
final paletteFile = File("${AppDirs.PALETTES}$filename.palette");
if (newNC != null) {
await paletteFile.writeAsJson(newNC.toJson());
_updateInColorMap(track.filename, newNC);
_updateInColorMap(filename, newNC);
} else if (imagePath != null) {
final nc = await extractPaletteFromImage(imagePath, forceReExtract: true, useIsolate: useIsolate);
_updateInColorMap(imagePath.getFilenameWOExt, nc);
final nc = await extractPaletteFromImage(imagePath, track: track, forceReExtract: true, useIsolate: useIsolate);
_updateInColorMap(filename, nc);
}
if (Player.inst.nowPlayingTrack == track) {
updatePlayerColorFromTrack(track, null);
Expand Down
1 change: 1 addition & 0 deletions lib/ui/dialogs/general_popup_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,7 @@ Future<void> showGeneralPopupDialog(
tracks: tracksWithDates.isNotEmpty ? tracksWithDates : tracks,
colorScheme: colorDelightened,
source: source,
albumsUniqued: availableAlbums,
);
},
);
Expand Down
4 changes: 3 additions & 1 deletion lib/ui/dialogs/track_advanced_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:namida/controller/edit_delete_controller.dart';
import 'package:namida/controller/history_controller.dart';
import 'package:namida/controller/indexer_controller.dart';
import 'package:namida/controller/navigator_controller.dart';
import 'package:namida/controller/settings_controller.dart';
import 'package:namida/core/constants.dart';
import 'package:namida/core/enums.dart';
import 'package:namida/core/extensions.dart';
Expand All @@ -24,6 +25,7 @@ void showTrackAdvancedDialog({
required List<Selectable> tracks,
required Color colorScheme,
required QueueSource source,
required List<(String, String)> albumsUniqued,
}) async {
final isSingle = tracks.length == 1;
final canShowClearDialog = tracks.hasAnythingCached;
Expand Down Expand Up @@ -166,7 +168,7 @@ void showTrackAdvancedDialog({
);
},
),
if (isSingle)
if (isSingle || (albumsUniqued.length == 1 && settings.groupArtworksByAlbum.value))
CustomListTile(
passedColor: colorScheme,
title: lang.COLOR_PALETTE,
Expand Down

0 comments on commit 1528947

Please sign in to comment.