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 @@
+
+
+
+