Files
SpotiFLAC-Mobile/lib/theme/mornye_icons.dart
T
zarzet 146b2acd4d refactor(ui): unify theme styling and enlarge profile button
Centralize existing Material and Mornye layout metrics in AppTokens and share adaptive icon selection. Enlarge the Home profile avatar to 44 dp with a 56 dp touch target.
2026-09-23 21:53:15 +07:00

205 lines
9.0 KiB
Dart

import 'package:flutter/cupertino.dart' show CupertinoIcons;
import 'package:flutter/material.dart';
import 'package:spotiflac_android/theme/mornye_theme.dart';
/// Cupertino counterparts for the shared Settings and extension UI symbols.
IconData mornyeIconFor(IconData icon) {
if (icon.fontFamily == CupertinoIcons.iconFont) return icon;
return switch (icon) {
Icons.extension ||
Icons.extension_outlined ||
Icons.extension_rounded ||
Icons.apps ||
Icons.grid_view ||
Icons.grid_view_outlined ||
Icons.grid_view_rounded => CupertinoIcons.square_grid_2x2,
Icons.palette_outlined ||
Icons.color_lens_outlined => CupertinoIcons.paintbrush,
Icons.library_music ||
Icons.library_music_outlined ||
Icons.playlist_play_outlined ||
Icons.queue_music_outlined => CupertinoIcons.music_note_list,
Icons.sell_outlined ||
Icons.label_outline ||
Icons.tag => CupertinoIcons.tag,
Icons.lyrics ||
Icons.lyrics_outlined ||
Icons.subtitles_outlined ||
Icons.forum_outlined => CupertinoIcons.quote_bubble,
Icons.download ||
Icons.download_outlined ||
Icons.file_download_outlined ||
Icons.downloading_outlined => CupertinoIcons.arrow_down_circle,
Icons.folder_outlined ||
Icons.folder_open ||
Icons.folder_special ||
Icons.folder_special_outlined => CupertinoIcons.folder,
Icons.create_new_folder_outlined => CupertinoIcons.folder_badge_plus,
Icons.storage_outlined ||
Icons.sd_storage_outlined ||
Icons.memory_outlined ||
Icons.usb_rounded => CupertinoIcons.tray,
Icons.settings_backup_restore ||
Icons.history ||
Icons.history_toggle_off_outlined => CupertinoIcons.clock,
Icons.article_outlined ||
Icons.source_outlined ||
Icons.insert_drive_file_outlined => CupertinoIcons.doc_text,
Icons.favorite_outline || Icons.favorite_border => CupertinoIcons.heart,
Icons.favorite => CupertinoIcons.heart_fill,
Icons.arrow_back || Icons.chevron_left => CupertinoIcons.chevron_back,
Icons.close || Icons.close_rounded => CupertinoIcons.xmark,
Icons.play_arrow || Icons.play_arrow_rounded => CupertinoIcons.play_fill,
Icons.shuffle => CupertinoIcons.shuffle,
Icons.playlist_add || Icons.queue_music => CupertinoIcons.text_badge_plus,
Icons.edit_outlined => CupertinoIcons.pencil,
Icons.edit_note => CupertinoIcons.pencil_ellipsis_rectangle,
Icons.fingerprint => CupertinoIcons.number,
Icons.playlist_add_check ||
Icons.playlist_add_check_circle => CupertinoIcons.text_badge_checkmark,
Icons.add_circle_outline => CupertinoIcons.add_circled,
Icons.format_list_numbered => CupertinoIcons.list_number,
Icons.checklist || Icons.view_list => CupertinoIcons.list_bullet,
Icons.calendar_today_outlined ||
Icons.date_range ||
Icons.today ||
Icons.event_outlined => CupertinoIcons.calendar,
Icons.preview_outlined => CupertinoIcons.doc_text_search,
Icons.check || Icons.check_rounded => CupertinoIcons.checkmark,
Icons.download_for_offline_outlined => CupertinoIcons.arrow_down_circle,
Icons.call_split => CupertinoIcons.arrow_branch,
Icons.download_rounded => CupertinoIcons.arrow_down,
Icons.info_outline => CupertinoIcons.info,
Icons.settings || Icons.settings_outlined => CupertinoIcons.gear_alt,
Icons.tune ||
Icons.tune_outlined ||
Icons.tune_rounded ||
Icons.table_chart_outlined => CupertinoIcons.slider_horizontal_3,
Icons.build || Icons.build_outlined => CupertinoIcons.wrench,
Icons.people_alt_outlined ||
Icons.people_outline => CupertinoIcons.person_2,
Icons.person ||
Icons.person_outline ||
Icons.person_outline_rounded ||
Icons.person_search_outlined => CupertinoIcons.person,
Icons.group_remove_outlined =>
CupertinoIcons.person_crop_circle_badge_xmark,
Icons.photo_size_select_large_outlined ||
Icons.image_outlined ||
Icons.wallpaper => CupertinoIcons.photo,
Icons.photo_library_outlined => CupertinoIcons.photo_on_rectangle,
Icons.compress_outlined => CupertinoIcons.arrow_down_right_arrow_up_left,
Icons.segment_outlined => CupertinoIcons.text_alignleft,
Icons.graphic_eq ||
Icons.graphic_eq_outlined ||
Icons.graphic_eq_rounded => CupertinoIcons.waveform,
Icons.filter_alt_outlined ||
Icons.filter_list ||
Icons.filter_list_outlined => CupertinoIcons.line_horizontal_3_decrease,
Icons.travel_explore ||
Icons.language ||
Icons.language_outlined ||
Icons.public ||
Icons.translate ||
Icons.translate_outlined => CupertinoIcons.globe,
Icons.text_fields ||
Icons.text_fields_outlined => CupertinoIcons.textformat,
Icons.record_voice_over_outlined => CupertinoIcons.mic,
Icons.music_note ||
Icons.audio_file_outlined ||
Icons.audiotrack ||
Icons.music_note_outlined => CupertinoIcons.music_note,
Icons.speed ||
Icons.speed_outlined ||
Icons.speed_rounded => CupertinoIcons.gauge,
Icons.auto_fix_high ||
Icons.auto_fix_high_outlined ||
Icons.auto_awesome ||
Icons.auto_awesome_outlined => CupertinoIcons.wand_stars,
Icons.wifi => CupertinoIcons.wifi,
Icons.signal_cellular_alt => CupertinoIcons.antenna_radiowaves_left_right,
Icons.cloud || Icons.cloud_outlined => CupertinoIcons.cloud,
Icons.high_quality => CupertinoIcons.hifispeaker,
Icons.four_k => CupertinoIcons.waveform,
Icons.dynamic_feed_outlined ||
Icons.tab_outlined => CupertinoIcons.square_on_square,
Icons.security || Icons.security_outlined => CupertinoIcons.lock_shield,
Icons.lan_outlined || Icons.link => CupertinoIcons.link,
Icons.sync ||
Icons.sync_rounded ||
Icons.autorenew_rounded => CupertinoIcons.arrow_2_circlepath,
Icons.refresh ||
Icons.refresh_rounded ||
Icons.update ||
Icons.system_update => CupertinoIcons.arrow_clockwise,
Icons.content_copy_outlined ||
Icons.content_copy_rounded ||
Icons.copy_all_rounded ||
Icons.copy_outlined ||
Icons.copy_rounded ||
Icons.copy => CupertinoIcons.doc_on_doc,
Icons.swap_horiz ||
Icons.swap_horiz_rounded ||
Icons.compare_arrows ||
Icons.difference_outlined ||
Icons.alt_route => CupertinoIcons.arrow_right_arrow_left,
Icons.cleaning_services_outlined => CupertinoIcons.sparkles,
Icons.delete_outline ||
Icons.delete_forever ||
Icons.delete_sweep_outlined => CupertinoIcons.trash,
Icons.open_in_new ||
Icons.open_in_new_rounded ||
Icons.open_in_browser => CupertinoIcons.arrow_up_right_square,
Icons.play_circle_outline => CupertinoIcons.play_circle,
Icons.share ||
Icons.share_outlined ||
Icons.ios_share => CupertinoIcons.share,
Icons.brightness_2 || Icons.dark_mode => CupertinoIcons.moon,
Icons.light_mode => CupertinoIcons.sun_max,
Icons.contrast ||
Icons.brightness_auto => CupertinoIcons.circle_lefthalf_fill,
Icons.animation => CupertinoIcons.play_rectangle,
Icons.blur_on => CupertinoIcons.drop,
Icons.new_releases => CupertinoIcons.star_circle,
Icons.bug_report || Icons.bug_report_outlined => CupertinoIcons.ant,
Icons.timer_outlined => CupertinoIcons.timer,
Icons.timer_off_outlined => CupertinoIcons.timer,
Icons.bedtime_outlined => CupertinoIcons.moon_zzz,
Icons.explore_outlined => CupertinoIcons.compass,
Icons.vpn_key_outlined => CupertinoIcons.lock,
Icons.bookmark_outline => CupertinoIcons.bookmark,
Icons.low_priority => CupertinoIcons.sort_down,
Icons.search || Icons.manage_search => CupertinoIcons.search,
Icons.add => CupertinoIcons.add,
Icons.code => CupertinoIcons.chevron_left_slash_chevron_right,
Icons.lightbulb_outline => CupertinoIcons.lightbulb,
Icons.telegram => CupertinoIcons.paperplane,
Icons.album || Icons.album_outlined => CupertinoIcons.square_stack,
Icons.playlist_play => CupertinoIcons.music_note_list,
Icons.video_library ||
Icons.video_library_outlined ||
Icons.smart_display_outlined => CupertinoIcons.play_rectangle,
Icons.podcasts => CupertinoIcons.mic,
Icons.monitor_heart_outlined => CupertinoIcons.waveform_path_ecg,
Icons.warning_amber_rounded ||
Icons.warning_amber_outlined => CupertinoIcons.exclamationmark_triangle,
Icons.error_outline => CupertinoIcons.exclamationmark_circle,
Icons.cancel_outlined => CupertinoIcons.xmark_circle,
Icons.check_circle ||
Icons.check_circle_outline => CupertinoIcons.checkmark_circle,
Icons.help_outline => CupertinoIcons.question_circle,
Icons.phone_android => CupertinoIcons.device_phone_portrait,
Icons.computer => CupertinoIcons.desktopcomputer,
Icons.hub_outlined => CupertinoIcons.link,
Icons.campaign_outlined => CupertinoIcons.speaker_2,
// Preserve meaning for symbols without a Cupertino counterpart, such as
// numbered download limits. An unrelated gear hides the action's purpose.
_ => icon,
};
}
extension MornyeIconContext on BuildContext {
/// [icon] as-is, or its Cupertino counterpart when the Mornye theme is on.
IconData adaptiveIcon(IconData icon) => isMornye ? mornyeIconFor(icon) : icon;
}