diff --git a/.idea/misc.xml b/.idea/misc.xml
index dc6cacb8..b80af249 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -7,6 +7,7 @@
+
@@ -16,10 +17,16 @@
+
+
+
+
+
+
@@ -31,7 +38,7 @@
-
+
@@ -61,6 +68,7 @@
+
diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java
index 21d304ba..769e1f61 100644
--- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java
+++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java
@@ -1,7 +1,11 @@
package com.cappielloantonio.play.ui.fragment;
+import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@@ -31,10 +35,14 @@ import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.ui.activity.MainActivity;
+import com.cappielloantonio.play.util.DownloadUtil;
import com.cappielloantonio.play.util.MappingUtil;
+import com.cappielloantonio.play.util.MusicUtil;
import com.cappielloantonio.play.util.UIUtil;
import com.cappielloantonio.play.viewmodel.HomeViewModel;
+import java.util.Objects;
+
public class HomeFragment extends Fragment {
private static final String TAG = "CategoriesFragment";
@@ -53,6 +61,18 @@ public class HomeFragment extends Fragment {
private TrackAdapter dowanloadedMusicAdapter;
private SimilarTrackAdapter similarMusicAdapter;
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setHasOptionsMenu(true);
+ }
+
+ @Override
+ public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
+ super.onCreateOptionsMenu(menu, inflater);
+ inflater.inflate(R.menu.main_page_menu, menu);
+ }
+
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@@ -71,6 +91,7 @@ public class HomeFragment extends Fragment {
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
+ initAppBar();
initDiscoverSongSlideView();
initSimilarSongView();
initMostPlayedAlbumView();
@@ -96,6 +117,22 @@ public class HomeFragment extends Fragment {
bind = null;
}
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.action_search:
+ activity.navController.navigate(R.id.action_homeFragment_to_searchFragment);
+ return true;
+ case R.id.action_settings:
+ activity.navController.navigate(R.id.action_homeFragment_to_settingsFragment);
+ return true;
+ default:
+ break;
+ }
+
+ return false;
+ }
+
private void init() {
bind.recentlyAddedAlbumsTextViewClickable.setOnClickListener(v -> {
Bundle bundle = new Bundle();
@@ -139,8 +176,6 @@ public class HomeFragment extends Fragment {
activity.navController.navigate(R.id.action_homeFragment_to_songListPageFragment, bundle);
});
- bind.homeSettingsImageView.setOnClickListener(v -> activity.navController.navigate(R.id.action_homeFragment_to_settingsFragment));
-
bind.musicDiscoveryTextViewRefreshable.setOnLongClickListener(v -> {
homeViewModel.refreshDiscoverySongSample(requireActivity());
return true;
@@ -182,6 +217,11 @@ public class HomeFragment extends Fragment {
});
}
+ private void initAppBar() {
+ activity.setSupportActionBar(bind.toolbar);
+ Objects.requireNonNull(bind.toolbar.getOverflowIcon()).setTint(requireContext().getResources().getColor(R.color.titleTextColor, null));
+ }
+
private void initDiscoverSongSlideView() {
bind.discoverSongViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);
diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java
index 84a7ebf0..8f99299a 100644
--- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java
+++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LibraryFragment.java
@@ -2,6 +2,9 @@ package com.cappielloantonio.play.ui.fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@@ -25,6 +28,8 @@ import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.ui.activity.MainActivity;
import com.cappielloantonio.play.viewmodel.LibraryViewModel;
+import java.util.Objects;
+
public class LibraryFragment extends Fragment {
private static final String TAG = "LibraryFragment";
@@ -37,6 +42,18 @@ public class LibraryFragment extends Fragment {
private GenreAdapter genreAdapter;
private PlaylistAdapter playlistAdapter;
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setHasOptionsMenu(true);
+ }
+
+ @Override
+ public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
+ super.onCreateOptionsMenu(menu, inflater);
+ inflater.inflate(R.menu.main_page_menu, menu);
+ }
+
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@@ -55,6 +72,7 @@ public class LibraryFragment extends Fragment {
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
+ initAppBar();
initAlbumView();
initArtistView();
initGenreView();
@@ -73,6 +91,22 @@ public class LibraryFragment extends Fragment {
bind = null;
}
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.action_search:
+ activity.navController.navigate(R.id.action_libraryFragment_to_searchFragment);
+ return true;
+ case R.id.action_settings:
+ activity.navController.navigate(R.id.action_libraryFragment_to_settingsFragment);
+ return true;
+ default:
+ break;
+ }
+
+ return false;
+ }
+
private void init() {
bind.albumCatalogueTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_libraryFragment_to_albumCatalogueFragment));
bind.artistCatalogueTextViewClickable.setOnClickListener(v -> activity.navController.navigate(R.id.action_libraryFragment_to_artistCatalogueFragment));
@@ -97,6 +131,11 @@ public class LibraryFragment extends Fragment {
});
}
+ private void initAppBar() {
+ activity.setSupportActionBar(bind.toolbar);
+ Objects.requireNonNull(bind.toolbar.getOverflowIcon()).setTint(requireContext().getResources().getColor(R.color.titleTextColor, null));
+ }
+
private void initAlbumView() {
bind.albumRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false));
bind.albumRecyclerView.setHasFixedSize(true);
diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml
index a46bda2f..8ee9978a 100644
--- a/app/src/main/res/drawable/ic_search.xml
+++ b/app/src/main/res/drawable/ic_search.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml
index e50f6fe3..24d32614 100644
--- a/app/src/main/res/drawable/ic_settings.xml
+++ b/app/src/main/res/drawable/ic_settings.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index fbc2bee9..a429a281 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -1,553 +1,570 @@
-
+ android:layout_height="match_parent">
-
+ android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
+ app:elevation="0dp">
-
-
+ android:background="@color/colorPrimary"
+ app:layout_scrollFlags="scroll|enterAlways|snap"
+ app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light">
-
+ android:orientation="horizontal">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
-
+ android:clipToPadding="false"
+ android:paddingStart="16dp"
+ android:paddingTop="8dp"
+ android:paddingEnd="8dp"
+ android:paddingBottom="8dp" />
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ android:orientation="vertical"
+ android:visibility="gone">
-
+
+ android:paddingTop="8dp"
+ android:paddingEnd="8dp">
+
+
-
+
+
+
+
-
+ android:paddingBottom="8dp" />
-
-
+
-
-
-
-
-
-
+
+ android:orientation="vertical">
-
+
+ android:paddingTop="8dp"
+ android:paddingEnd="8dp">
+
+
-
+
+
+
+
-
+ android:paddingBottom="8dp" />
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:orientation="vertical">
+
+ android:paddingStart="16dp"
+ android:paddingTop="20dp"
+ android:paddingEnd="16dp"
+ android:text="Flashback" />
-
-
+ android:paddingBottom="8dp" />
-
-
+
-
-
-
-
-
-
+
+ android:orientation="vertical">
-
+
+ android:paddingTop="8dp"
+ android:paddingEnd="8dp">
+
+
-
+
+
+
+
-
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="8dp"
+ android:clipToPadding="false"
+ android:paddingTop="8dp"
+ android:paddingBottom="8dp" />
-
+
+
+ android:orientation="vertical">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
diff --git a/app/src/main/res/layout/fragment_library.xml b/app/src/main/res/layout/fragment_library.xml
index 4a49edc1..27736394 100644
--- a/app/src/main/res/layout/fragment_library.xml
+++ b/app/src/main/res/layout/fragment_library.xml
@@ -1,246 +1,290 @@
-
+ android:layout_height="match_parent">
-
+ android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
+ app:elevation="0dp">
-
+ android:background="@color/colorPrimary"
+ app:layout_scrollFlags="scroll|enterAlways|snap"
+ app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light">
-
-
+ android:orientation="horizontal">
+
+
-
-
-
-
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:text="Play" />
+
+
-
-
-
-
+
+ android:paddingBottom="@dimen/global_padding_bottom">
-
-
+ android:orientation="vertical"
+ android:paddingBottom="8dp">
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+ android:paddingBottom="8dp" />
-
-
+
-
-
-
-
-
-
+ android:orientation="vertical"
+ android:paddingBottom="8dp">
-
+
+
+ android:paddingTop="8dp"
+ android:paddingEnd="8dp">
+
+
-
+
+
+
+
+ android:paddingBottom="8dp" />
-
-
+
-
-
-
-
-
-
+ android:orientation="vertical"
+ android:paddingBottom="8dp">
-
+
+
+ android:paddingTop="8dp"
+ android:paddingEnd="8dp">
+
+
-
+
+
+
-
-
-
+
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/main_page_menu.xml b/app/src/main/res/menu/main_page_menu.xml
new file mode 100644
index 00000000..63726b18
--- /dev/null
+++ b/app/src/main/res/menu/main_page_menu.xml
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
index 56f8d59d..8aca78fe 100644
--- a/app/src/main/res/navigation/nav_graph.xml
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -57,6 +57,9 @@
+
+
+