diff --git a/AMC.View/AMC.View.csproj b/AMC.View/AMC.View.csproj index 8eb9a2b..87665b3 100644 --- a/AMC.View/AMC.View.csproj +++ b/AMC.View/AMC.View.csproj @@ -49,14 +49,31 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -68,6 +85,9 @@ + + BottomBar.xaml + True True @@ -86,6 +106,18 @@ + + MSBuild:Compile + + + MSBuild:Compile + + + MSBuild:Compile + + + MSBuild:Compile + MSBuild:Compile @@ -97,8 +129,4 @@ - - - - diff --git a/AMC.View/App.xaml b/AMC.View/App.xaml index 00e4332..de825a6 100644 --- a/AMC.View/App.xaml +++ b/AMC.View/App.xaml @@ -8,6 +8,7 @@ + diff --git a/AMC.View/App.xaml.cs b/AMC.View/App.xaml.cs index 4675ecb..4598800 100644 --- a/AMC.View/App.xaml.cs +++ b/AMC.View/App.xaml.cs @@ -8,14 +8,4 @@ public partial class App : Application MainPage = new AppShell(); } - - protected override void OnStart() - { - base.OnStart(); - // Uncomment to set the culture to French - - // CultureInfo.CurrentCulture = new CultureInfo("fr-FR"); - // CultureInfo.CurrentUICulture = new CultureInfo("fr-FR"); - - } } diff --git a/AMC.View/Controls/BottomBar.xaml b/AMC.View/Controls/BottomBar.xaml new file mode 100644 index 0000000..782c049 --- /dev/null +++ b/AMC.View/Controls/BottomBar.xaml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AMC.View/Controls/BottomBar.xaml.cs b/AMC.View/Controls/BottomBar.xaml.cs new file mode 100644 index 0000000..c3fc7a5 --- /dev/null +++ b/AMC.View/Controls/BottomBar.xaml.cs @@ -0,0 +1,10 @@ +namespace AMC.View.Controls +{ + public partial class BottomBar : ContentView + { + public BottomBar() + { + InitializeComponent(); + } + } +} diff --git a/AMC.View/Controls/IconLabelButton.xaml b/AMC.View/Controls/IconLabelButton.xaml new file mode 100644 index 0000000..093c18e --- /dev/null +++ b/AMC.View/Controls/IconLabelButton.xaml @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/AMC.View/Controls/IconLabelButton.xaml.cs b/AMC.View/Controls/IconLabelButton.xaml.cs new file mode 100644 index 0000000..1b7fd98 --- /dev/null +++ b/AMC.View/Controls/IconLabelButton.xaml.cs @@ -0,0 +1,58 @@ +namespace AMC.View.Controls +{ + public partial class IconLabelButton : ContentView + { + public static readonly BindableProperty ButtonSourceProperty = BindableProperty.Create( + nameof(ButtonSource), + typeof(string), + typeof(IconLabelButton), + default(string), + propertyChanged: (bindable, oldValue, newValue) => + { + ((IconLabelButton)bindable).Button.Source = (string)newValue; + }); + + public static readonly BindableProperty ButtonLabelTextProperty = BindableProperty.Create( + nameof(ButtonLabelText), + typeof(string), + typeof(IconLabelButton), + default(string), + propertyChanged: (bindable, oldValue, newValue) => + { + ((IconLabelButton)bindable).ButtonLabel.Text = (string)newValue; + }); + + public static readonly BindableProperty LabelTextColorProperty = BindableProperty.Create( + nameof(LabelTextColor), + typeof(Color), + typeof(IconLabelButton), + default(Color), + propertyChanged: (bindable, oldValue, newValue) => + { + ((IconLabelButton)bindable).ButtonLabel.TextColor = (Color)newValue; + }); + + public IconLabelButton() + { + InitializeComponent(); + } + + public string ButtonSource + { + get => (string)GetValue(ButtonSourceProperty); + set => SetValue(ButtonSourceProperty, value); + } + + public string ButtonLabelText + { + get => (string)GetValue(ButtonLabelTextProperty); + set => SetValue(ButtonLabelTextProperty, value); + } + + public Color LabelTextColor + { + get => (Color)GetValue(LabelTextColorProperty); + set => SetValue(LabelTextColorProperty, value); + } + } +} diff --git a/AMC.View/Controls/IconLabelButtonWide.xaml b/AMC.View/Controls/IconLabelButtonWide.xaml new file mode 100644 index 0000000..0806804 --- /dev/null +++ b/AMC.View/Controls/IconLabelButtonWide.xaml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + diff --git a/AMC.View/Controls/IconLabelButtonWide.xaml.cs b/AMC.View/Controls/IconLabelButtonWide.xaml.cs new file mode 100644 index 0000000..5c3ea2c --- /dev/null +++ b/AMC.View/Controls/IconLabelButtonWide.xaml.cs @@ -0,0 +1,43 @@ +namespace AMC.View.Controls +{ + public partial class IconLabelButtonWide : ContentView + { + public static readonly BindableProperty ButtonSourceProperty = BindableProperty.Create( + nameof(ButtonSource), + typeof(string), + typeof(IconLabelButtonWide), + default(string), + propertyChanged: (bindable, oldValue, newValue) => + { + ((IconLabelButtonWide)bindable).Button.Source = (string)newValue; + }); + + public static readonly BindableProperty ButtonLabelTextProperty = BindableProperty.Create( + nameof(ButtonLabelText), + typeof(string), + typeof(IconLabelButtonWide), + default(string), + propertyChanged: (bindable, oldValue, newValue) => + { + ((IconLabelButtonWide)bindable).ButtonLabel.Text = (string)newValue; + }); + + public IconLabelButtonWide() + { + InitializeComponent(); + } + + public string ButtonSource + { + get => (string)GetValue(ButtonSourceProperty); + set => SetValue(ButtonSourceProperty, value); + } + + public string ButtonLabelText + { + get => (string)GetValue(ButtonLabelTextProperty); + set => SetValue(ButtonLabelTextProperty, value); + } + + } +} diff --git a/AMC.View/Controls/LibraryCategoryItem.xaml b/AMC.View/Controls/LibraryCategoryItem.xaml index 25a7156..99be0aa 100644 --- a/AMC.View/Controls/LibraryCategoryItem.xaml +++ b/AMC.View/Controls/LibraryCategoryItem.xaml @@ -2,24 +2,24 @@ - + - + diff --git a/AMC.View/Controls/LibraryCategoryItem.xaml.cs b/AMC.View/Controls/LibraryCategoryItem.xaml.cs index 16817a7..a339d33 100644 --- a/AMC.View/Controls/LibraryCategoryItem.xaml.cs +++ b/AMC.View/Controls/LibraryCategoryItem.xaml.cs @@ -1,5 +1,4 @@ - -namespace AMC.View.Controls +namespace AMC.View.Controls { public partial class LibraryCategoryItem : ContentView { @@ -8,14 +7,16 @@ namespace AMC.View.Controls returnType: typeof(string), declaringType: typeof(LibraryCategoryItem), defaultValue: "", - propertyChanged: CategoryTextChanged); + propertyChanged: CategoryTextChanged + ); public static readonly BindableProperty IconSourceProperty = BindableProperty.Create( propertyName: nameof(IconSource), returnType: typeof(ImageSource), declaringType: typeof(LibraryCategoryItem), defaultValue: null, - propertyChanged: IconSourceChanged); + propertyChanged: IconSourceChanged + ); public LibraryCategoryItem() { diff --git a/AMC.View/Converters/AlbumDetailsConverter.cs b/AMC.View/Converters/AlbumDetailsConverter.cs deleted file mode 100644 index 5e80d87..0000000 --- a/AMC.View/Converters/AlbumDetailsConverter.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Globalization; - -namespace AMC.View.Converters -{ - public class AlbumDetailsConverter : IValueConverter - { - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - var (genre, year) = (ValueTuple)value; - return string.Format( - "{0} · {1}", - genre, - year - ); - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - throw new NotImplementedException(); - } - } -} diff --git a/AMC.View/Converters/CopyrightInfoConverter.cs b/AMC.View/Converters/CopyrightInfoConverter.cs deleted file mode 100644 index bd7c993..0000000 --- a/AMC.View/Converters/CopyrightInfoConverter.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Globalization; - -namespace AMC.View.Converters -{ - public class CopyrightInfoConverter : IValueConverter - { - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - var (copyrightYear, producerBlurb) = (ValueTuple)value; - return string.Format( - "℗ {0} {1}", - copyrightYear, - producerBlurb - ); - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - throw new NotImplementedException(); - } - } -} diff --git a/AMC.View/Resources/Images/macroblank_1.png b/AMC.View/Resources/Images/album_macroblank_1.png similarity index 100% rename from AMC.View/Resources/Images/macroblank_1.png rename to AMC.View/Resources/Images/album_macroblank_1.png diff --git a/AMC.View/Resources/Images/macroblank_2.png b/AMC.View/Resources/Images/album_macroblank_2.png similarity index 100% rename from AMC.View/Resources/Images/macroblank_2.png rename to AMC.View/Resources/Images/album_macroblank_2.png diff --git a/AMC.View/Resources/Images/macroblank_3.png b/AMC.View/Resources/Images/album_macroblank_3.png similarity index 100% rename from AMC.View/Resources/Images/macroblank_3.png rename to AMC.View/Resources/Images/album_macroblank_3.png diff --git a/AMC.View/Resources/Images/icon_bottom_browse_gray.png b/AMC.View/Resources/Images/icon_bottom_browse_gray.png new file mode 100644 index 0000000..62e0007 Binary files /dev/null and b/AMC.View/Resources/Images/icon_bottom_browse_gray.png differ diff --git a/AMC.View/Resources/Images/icon_bottom_browse_red.png b/AMC.View/Resources/Images/icon_bottom_browse_red.png new file mode 100644 index 0000000..3dd13d8 Binary files /dev/null and b/AMC.View/Resources/Images/icon_bottom_browse_red.png differ diff --git a/AMC.View/Resources/Images/icon_bottom_library_gray.png b/AMC.View/Resources/Images/icon_bottom_library_gray.png new file mode 100644 index 0000000..b4166d3 Binary files /dev/null and b/AMC.View/Resources/Images/icon_bottom_library_gray.png differ diff --git a/AMC.View/Resources/Images/icon_bottom_library_red.png b/AMC.View/Resources/Images/icon_bottom_library_red.png new file mode 100644 index 0000000..ce060ba Binary files /dev/null and b/AMC.View/Resources/Images/icon_bottom_library_red.png differ diff --git a/AMC.View/Resources/Images/icon_bottom_play_gray.png b/AMC.View/Resources/Images/icon_bottom_play_gray.png new file mode 100644 index 0000000..908919f Binary files /dev/null and b/AMC.View/Resources/Images/icon_bottom_play_gray.png differ diff --git a/AMC.View/Resources/Images/icon_bottom_play_red.png b/AMC.View/Resources/Images/icon_bottom_play_red.png new file mode 100644 index 0000000..9884776 Binary files /dev/null and b/AMC.View/Resources/Images/icon_bottom_play_red.png differ diff --git a/AMC.View/Resources/Images/icon_bottom_radio_gray.png b/AMC.View/Resources/Images/icon_bottom_radio_gray.png new file mode 100644 index 0000000..7bb1421 Binary files /dev/null and b/AMC.View/Resources/Images/icon_bottom_radio_gray.png differ diff --git a/AMC.View/Resources/Images/icon_bottom_radio_red.png b/AMC.View/Resources/Images/icon_bottom_radio_red.png new file mode 100644 index 0000000..3fdd6be Binary files /dev/null and b/AMC.View/Resources/Images/icon_bottom_radio_red.png differ diff --git a/AMC.View/Resources/Images/icon_bottom_search_gray.png b/AMC.View/Resources/Images/icon_bottom_search_gray.png new file mode 100644 index 0000000..b8a232e Binary files /dev/null and b/AMC.View/Resources/Images/icon_bottom_search_gray.png differ diff --git a/AMC.View/Resources/Images/icon_bottom_search_red.png b/AMC.View/Resources/Images/icon_bottom_search_red.png new file mode 100644 index 0000000..1ffcba5 Binary files /dev/null and b/AMC.View/Resources/Images/icon_bottom_search_red.png differ diff --git a/AMC.View/Resources/Images/icon_albums.png b/AMC.View/Resources/Images/icon_categories_albums.png similarity index 100% rename from AMC.View/Resources/Images/icon_albums.png rename to AMC.View/Resources/Images/icon_categories_albums.png diff --git a/AMC.View/Resources/Images/icon_artists.png b/AMC.View/Resources/Images/icon_categories_artists.png similarity index 100% rename from AMC.View/Resources/Images/icon_artists.png rename to AMC.View/Resources/Images/icon_categories_artists.png diff --git a/AMC.View/Resources/Images/icon_genres.png b/AMC.View/Resources/Images/icon_categories_genres.png similarity index 100% rename from AMC.View/Resources/Images/icon_genres.png rename to AMC.View/Resources/Images/icon_categories_genres.png diff --git a/AMC.View/Resources/Images/icon_playlists.png b/AMC.View/Resources/Images/icon_categories_playlists.png similarity index 100% rename from AMC.View/Resources/Images/icon_playlists.png rename to AMC.View/Resources/Images/icon_categories_playlists.png diff --git a/AMC.View/Resources/Images/icon_songs.png b/AMC.View/Resources/Images/icon_categories_songs.png similarity index 100% rename from AMC.View/Resources/Images/icon_songs.png rename to AMC.View/Resources/Images/icon_categories_songs.png diff --git a/AMC.View/Resources/Images/icon_default_song.png b/AMC.View/Resources/Images/icon_default_song.png new file mode 100644 index 0000000..0acd79c Binary files /dev/null and b/AMC.View/Resources/Images/icon_default_song.png differ diff --git a/AMC.View/Resources/Images/icon_next.png b/AMC.View/Resources/Images/icon_next.png new file mode 100644 index 0000000..6503057 Binary files /dev/null and b/AMC.View/Resources/Images/icon_next.png differ diff --git a/AMC.View/Resources/Images/icon_next_dark.png b/AMC.View/Resources/Images/icon_next_dark.png new file mode 100644 index 0000000..5a5efee Binary files /dev/null and b/AMC.View/Resources/Images/icon_next_dark.png differ diff --git a/AMC.View/Resources/Images/icon_play.png b/AMC.View/Resources/Images/icon_play.png new file mode 100644 index 0000000..d9d08af Binary files /dev/null and b/AMC.View/Resources/Images/icon_play.png differ diff --git a/AMC.View/Resources/Images/icon_play_dark.png b/AMC.View/Resources/Images/icon_play_dark.png new file mode 100644 index 0000000..3ad0714 Binary files /dev/null and b/AMC.View/Resources/Images/icon_play_dark.png differ diff --git a/AMC.View/Resources/Images/icon_wide_button_play.png b/AMC.View/Resources/Images/icon_wide_button_play.png new file mode 100644 index 0000000..8758af0 Binary files /dev/null and b/AMC.View/Resources/Images/icon_wide_button_play.png differ diff --git a/AMC.View/Resources/Images/icon_wide_button_shuffle.png b/AMC.View/Resources/Images/icon_wide_button_shuffle.png new file mode 100644 index 0000000..b75335c Binary files /dev/null and b/AMC.View/Resources/Images/icon_wide_button_shuffle.png differ diff --git a/AMC.View/Resources/Strings/Strings.Designer.cs b/AMC.View/Resources/Strings/Strings.Designer.cs index 270fee9..021ab8e 100644 --- a/AMC.View/Resources/Strings/Strings.Designer.cs +++ b/AMC.View/Resources/Strings/Strings.Designer.cs @@ -78,6 +78,24 @@ namespace AMC.View.Resources.Strings { } } + /// + /// Looks up a localized string similar to Browse. + /// + public static string BrowseTitle { + get { + return ResourceManager.GetString("BrowseTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Not Playing. + /// + public static string DefaultPlayingSongLabel { + get { + return ResourceManager.GetString("DefaultPlayingSongLabel", resourceCulture); + } + } + /// /// Looks up a localized string similar to Genres. /// @@ -87,6 +105,15 @@ namespace AMC.View.Resources.Strings { } } + /// + /// Looks up a localized string similar to ···. + /// + public static string HThreeDotsMenu { + get { + return ResourceManager.GetString("HThreeDotsMenu", resourceCulture); + } + } + /// /// Looks up a localized string similar to Library. /// @@ -96,6 +123,15 @@ namespace AMC.View.Resources.Strings { } } + /// + /// Looks up a localized string similar to Listen Now. + /// + public static string ListenNowTitle { + get { + return ResourceManager.GetString("ListenNowTitle", resourceCulture); + } + } + /// /// Looks up a localized string similar to minutes. /// @@ -132,6 +168,15 @@ namespace AMC.View.Resources.Strings { } } + /// + /// Looks up a localized string similar to Radio. + /// + public static string RadioTitle { + get { + return ResourceManager.GetString("RadioTitle", resourceCulture); + } + } + /// /// Looks up a localized string similar to Recently Added. /// @@ -141,6 +186,15 @@ namespace AMC.View.Resources.Strings { } } + /// + /// Looks up a localized string similar to Search. + /// + public static string SearchTitle { + get { + return ResourceManager.GetString("SearchTitle", resourceCulture); + } + } + /// /// Looks up a localized string similar to Shuffle. /// diff --git a/AMC.View/Resources/Strings/Strings.fr.resx b/AMC.View/Resources/Strings/Strings.fr.resx index ba3443e..2491297 100644 --- a/AMC.View/Resources/Strings/Strings.fr.resx +++ b/AMC.View/Resources/Strings/Strings.fr.resx @@ -156,4 +156,19 @@ Genres + + Rien en lecture + + + Ecouter + + + Radio + + + Éxplorer + + + Recherche + \ No newline at end of file diff --git a/AMC.View/Resources/Strings/Strings.resx b/AMC.View/Resources/Strings/Strings.resx index 3b063b4..7697577 100644 --- a/AMC.View/Resources/Strings/Strings.resx +++ b/AMC.View/Resources/Strings/Strings.resx @@ -156,4 +156,23 @@ Genres + + ··· + @Invariant + + + Not Playing + + + Listen Now + + + Radio + + + Browse + + + Search + \ No newline at end of file diff --git a/AMC.View/Resources/Styles/Colors.xaml b/AMC.View/Resources/Styles/Colors.xaml index b0edeab..1ae35b0 100644 --- a/AMC.View/Resources/Styles/Colors.xaml +++ b/AMC.View/Resources/Styles/Colors.xaml @@ -27,6 +27,7 @@ #919191 #6E6E6E #404040 + #303030 #212121 #141414 diff --git a/AMC.View/Resources/Styles/Styles.xaml b/AMC.View/Resources/Styles/Styles.xaml index a0904b6..a027b98 100644 --- a/AMC.View/Resources/Styles/Styles.xaml +++ b/AMC.View/Resources/Styles/Styles.xaml @@ -6,9 +6,22 @@ + + + +