Some bug fixes and grid size adjustable

This commit is contained in:
Karim Abou Zeid 2015-04-12 15:05:37 +02:00
commit c1a4185549
19 changed files with 236 additions and 88 deletions

View file

@ -14,6 +14,7 @@ import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import com.astuetz.PagerSlidingTabStrip;
@ -32,6 +33,10 @@ import com.kabouzeid.gramophone.model.UIPreferenceChangedEvent;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.ui.fragments.NavigationDrawerFragment;
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AbsMainActivityFragment;
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AlbumViewFragment;
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.ArtistViewFragment;
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.PlaylistViewFragment;
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.SongViewFragment;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PreferenceUtils;
@ -226,13 +231,13 @@ public class MainActivity extends AbsFabActivity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
switch (currentPage) {
case 3:
getMenuInflater().inflate(R.menu.menu_playlists, menu);
break;
default:
getMenuInflater().inflate(R.menu.menu_main, menu);
break;
if (isAlbumPage()) {
getMenuInflater().inflate(R.menu.menu_albums, menu);
setUpGridMenu(menu);
} else if (isPlaylistPage()) {
getMenuInflater().inflate(R.menu.menu_playlists, menu);
} else {
getMenuInflater().inflate(R.menu.menu_main, menu);
}
restoreActionBar();
return true;
@ -250,6 +255,9 @@ public class MainActivity extends AbsFabActivity
if (drawerToggle.onOptionsItemSelected(item)) {
return true;
}
if (handleGridSize(item)) return true;
int id = item.getItemId();
switch (id) {
case R.id.action_shuffle_all:
@ -363,4 +371,87 @@ public class MainActivity extends AbsFabActivity
}
return id;
}
private boolean isArtistPage() {
return viewPager.getCurrentItem() == PagerAdapter.MusicFragments.ARTIST.ordinal();
}
public ArtistViewFragment getArtistFragment() {
return (ArtistViewFragment) pagerAdapter.getFragment(PagerAdapter.MusicFragments.ARTIST.ordinal());
}
private boolean isAlbumPage() {
return viewPager.getCurrentItem() == PagerAdapter.MusicFragments.ALBUM.ordinal();
}
public AlbumViewFragment getAlbumFragment() {
return (AlbumViewFragment) pagerAdapter.getFragment(PagerAdapter.MusicFragments.ALBUM.ordinal());
}
private boolean isSongPage() {
return viewPager.getCurrentItem() == PagerAdapter.MusicFragments.SONG.ordinal();
}
public SongViewFragment getSongFragment() {
return (SongViewFragment) pagerAdapter.getFragment(PagerAdapter.MusicFragments.SONG.ordinal());
}
private boolean isPlaylistPage() {
return viewPager.getCurrentItem() == PagerAdapter.MusicFragments.PLAYLIST.ordinal();
}
public PlaylistViewFragment getPlaylistFragment() {
return (PlaylistViewFragment) pagerAdapter.getFragment(PagerAdapter.MusicFragments.PLAYLIST.ordinal());
}
private void setUpGridMenu(Menu menu) {
boolean isPortrait = Util.isInPortraitMode(this);
int columns = isPortrait ? PreferenceUtils.getInstance(this).getAlbumGridColumns() : PreferenceUtils.getInstance(this).getAlbumGridColumnsLand();
String title = isPortrait ? getResources().getString(R.string.action_grid_columns) : getResources().getString(R.string.action_grid_columns_land);
MenuItem gridSizeItem = menu.findItem(R.id.action_grid_columns);
gridSizeItem.setTitle(title);
SubMenu gridSizeMenu = gridSizeItem.getSubMenu();
gridSizeMenu.getItem(columns - 1).setChecked(true);
}
private boolean handleGridSize(MenuItem item) {
int size = -1;
switch (item.getItemId()) {
case R.id.gridSizeOne:
size = 1;
break;
case R.id.gridSizeTwo:
size = 2;
break;
case R.id.gridSizeThree:
size = 3;
break;
case R.id.gridSizeFour:
size = 4;
break;
case R.id.gridSizeFive:
size = 5;
break;
case R.id.gridSizeSix:
size = 6;
break;
}
if (size > 0) {
item.setChecked(true);
if (isAlbumPage()) {
getAlbumFragment().setColumns(size);
if (Util.isInPortraitMode(this)) {
PreferenceUtils.getInstance(this).setAlbumGridColumns(size);
} else {
PreferenceUtils.getInstance(this).setAlbumGridColumnsLand(size);
}
}
return true;
}
return false;
}
}

View file

@ -2,10 +2,7 @@ package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;

View file

@ -2,9 +2,12 @@ package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.AlbumAdapter;
import com.kabouzeid.gramophone.util.PreferenceUtils;
import com.kabouzeid.gramophone.util.Util;
/**
* Created by karim on 22.11.14.
@ -12,6 +15,8 @@ import com.kabouzeid.gramophone.adapter.AlbumAdapter;
public class AlbumViewFragment extends AbsMainActivityRecyclerViewFragment {
public static final String TAG = AlbumViewFragment.class.getSimpleName();
private GridLayoutManager layoutManager;
@Override
protected int getLayoutResId() {
return R.layout.fragment_album_view;
@ -19,11 +24,18 @@ public class AlbumViewFragment extends AbsMainActivityRecyclerViewFragment {
@Override
protected RecyclerView.LayoutManager createLayoutManager() {
return new GridLayoutManager(getActivity(), getResources().getInteger(R.integer.grid_columns));
int columns = Util.isInPortraitMode(getActivity()) ? PreferenceUtils.getInstance(getActivity()).getAlbumGridColumns() : PreferenceUtils.getInstance(getActivity()).getAlbumGridColumnsLand();
layoutManager = new GridLayoutManager(getActivity(), columns);
return layoutManager;
}
@Override
protected RecyclerView.Adapter createAdapter() {
return new AlbumAdapter(getActivity());
}
public void setColumns(int columns) {
layoutManager.setSpanCount(columns);
layoutManager.requestLayout();
}
}