First snapshot (beta 0.9)

- playlists working (not all features added yet)
- minor fixes and improvements
This commit is contained in:
Karim Abou Zeid 2015-03-18 15:32:35 +01:00
commit 11ee05ce64
30 changed files with 1055 additions and 126 deletions

View file

@ -15,6 +15,7 @@ import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView;
import com.kabouzeid.gramophone.App;
@ -264,6 +265,7 @@ public class AlbumDetailActivity extends AbsFabActivity {
NavigationUtil.openPlayingQueueDialog(this);
return true;
case R.id.action_settings:
Toast.makeText(this, "This feature is not available yet", Toast.LENGTH_SHORT).show();
return true;
case R.id.action_current_playing:
NavigationUtil.openCurrentPlayingIfPossible(this, getSharedViewsWithFab(null));

View file

@ -326,6 +326,7 @@ public class ArtistDetailActivity extends AbsFabActivity {
Toast.makeText(ArtistDetailActivity.this, getResources().getString(R.string.updating), Toast.LENGTH_SHORT).show();
setUpArtistImageAndApplyPalette(true);
case R.id.action_settings:
Toast.makeText(this, "This feature is not available yet", Toast.LENGTH_SHORT).show();
return true;
case R.id.action_current_playing:
NavigationUtil.openCurrentPlayingIfPossible(this, getSharedViewsWithFab(null));

View file

@ -26,6 +26,7 @@ import com.afollestad.materialdialogs.MaterialDialog;
import com.google.samples.apps.iosched.ui.widget.SlidingTabLayout;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.AboutDeveloperDialogHelper;
import com.kabouzeid.gramophone.helper.CreatePlaylistDialogHelper;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.PlayingQueueDialogHelper;
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
@ -58,6 +59,7 @@ public class MainActivity extends AbsFabActivity
private MainActivityViewPagerAdapter viewPagerAdapter;
private ViewPager viewPager;
private SlidingTabLayout slidingTabLayout;
private int currentPage = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -78,6 +80,7 @@ public class MainActivity extends AbsFabActivity
viewPagerAdapter = new MainActivityViewPagerAdapter(this);
viewPager.setAdapter(viewPagerAdapter);
int startPosition = PreferenceUtils.getInstace(this).getStartPage();
currentPage = startPosition;
viewPager.setCurrentItem(startPosition);
navigationDrawerFragment.setItemChecked(startPosition);
@ -93,6 +96,8 @@ public class MainActivity extends AbsFabActivity
public void onPageSelected(final int position) {
PreferenceUtils.getInstace(MainActivity.this).setStartPage(position);
navigationDrawerFragment.setItemChecked(position);
currentPage = position;
invalidateOptionsMenu();
}
@Override
@ -210,7 +215,14 @@ public class MainActivity extends AbsFabActivity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.drawer, menu);
switch (currentPage){
case 3:
getMenuInflater().inflate(R.menu.menu_playlists, menu);
break;
default:
getMenuInflater().inflate(R.menu.drawer, menu);
break;
}
restoreActionBar();
return true;
}
@ -229,10 +241,17 @@ public class MainActivity extends AbsFabActivity
}
int id = item.getItemId();
switch (id) {
case R.id.action_licenses:
Toast.makeText(this, "This feature is not available yet", Toast.LENGTH_SHORT).show();
return true;
case R.id.action_new_playlist:
CreatePlaylistDialogHelper.getDialog(this).show();
return true;
case R.id.action_search:
startActivity(new Intent(MainActivity.this, SearchActivity.class));
return true;
case R.id.action_settings:
Toast.makeText(this, "This feature is not available yet", Toast.LENGTH_SHORT).show();
return true;
case R.id.action_about:
AboutDeveloperDialogHelper.getDialog(this).show();
@ -277,7 +296,7 @@ public class MainActivity extends AbsFabActivity
context.getResources().getString(R.string.songs),
context.getResources().getString(R.string.albums),
context.getResources().getString(R.string.artists),
context.getResources().getString(R.string.playlists)
context.getResources().getString(R.string.playlists) + " BETA"
};
}

View file

@ -18,10 +18,9 @@ import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.AddToPlaylistDialogHelper;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.PlayingQueueDialogHelper;
import com.kabouzeid.gramophone.helper.SongDetailDialogHelper;
import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistImageUrlLoader;
import com.kabouzeid.gramophone.loader.SongFilePathLoader;
@ -388,6 +387,12 @@ public class MusicControllerActivity extends AbsFabActivity {
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
Toast.makeText(this, "This feature is not available yet", Toast.LENGTH_SHORT).show();
return true;
case R.id.action_add_to_playlist:
AddToPlaylistDialogHelper.getDialog(this, song).show();
return true;
case android.R.id.home:
super.onBackPressed();
return true;

View file

@ -12,10 +12,12 @@ import com.kabouzeid.gramophone.adapter.songadapter.PlaylistSongAdapter;
import com.kabouzeid.gramophone.loader.PlaylistLoader;
import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.misc.DragSortRecycler;
import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.PlaylistSong;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PlaylistsUtil;
import java.util.List;
@ -34,10 +36,27 @@ public class PlaylistDetailActivity extends AbsFabActivity {
setUpToolBar();
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
List<PlaylistSong> songs = PlaylistSongLoader.getPlaylistSongList(this, playlist.id);
PlaylistSongAdapter adapter = new PlaylistSongAdapter(this, songs);
final List<PlaylistSong> songs = PlaylistSongLoader.getPlaylistSongList(this, playlist.id);
final PlaylistSongAdapter adapter = new PlaylistSongAdapter(this, songs);
recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
recyclerView.setAdapter(adapter);
DragSortRecycler dragSortRecycler = new DragSortRecycler();
dragSortRecycler.setViewHandleId(R.id.album_art);
dragSortRecycler.setOnItemMovedListener(new DragSortRecycler.OnItemMovedListener() {
@Override
public void onItemMoved(int from, int to) {
PlaylistSong song = songs.remove(from);
songs.add(to, song);
adapter.notifyDataSetChanged();
PlaylistsUtil.moveItem(PlaylistDetailActivity.this, playlist.id, from, to);
}
});
recyclerView.addItemDecoration(dragSortRecycler);
recyclerView.addOnItemTouchListener(dragSortRecycler);
recyclerView.setOnScrollListener(dragSortRecycler.getScrollListener());
}
private void getIntentExtras() {
@ -51,7 +70,7 @@ public class PlaylistDetailActivity extends AbsFabActivity {
private void setUpToolBar() {
setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
getSupportActionBar().setTitle(playlist.playlistName);
getSupportActionBar().setTitle(playlist.name);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

View file

@ -2,20 +2,19 @@ package com.kabouzeid.gramophone.ui.fragments.mainactivityfragments;
import android.os.Bundle;
import android.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.PlaylistAdapter;
import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter;
import com.kabouzeid.gramophone.loader.PlaylistLoader;
import com.kabouzeid.gramophone.loader.SongLoader;
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.Song;
import com.squareup.otto.Subscribe;
import java.util.List;
@ -37,12 +36,27 @@ public class PlaylistViewFragment extends AbsMainActivityFragment {
}
private void setUpRecyclerView() {
List<Playlist> playlists = PlaylistLoader.getAllPlaylists(getActivity());
PlaylistAdapter adapter = new PlaylistAdapter(getActivity(), playlists);
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 1));
recyclerView.setAdapter(adapter);
recyclerView.setPadding(0, getTopPadding(), 0, getBottomPadding());
setUpAdapter();
}
private void setUpAdapter(){
if(recyclerView != null) {
List<Playlist> playlists = PlaylistLoader.getAllPlaylists(getActivity());
PlaylistAdapter adapter = new PlaylistAdapter(getActivity(), playlists);
recyclerView.setAdapter(adapter);
}
}
@Subscribe
public void onDataBaseEvent(DataBaseChangedEvent event) {
switch (event.getAction()) {
case DataBaseChangedEvent.PLAYLISTS_CHANGED:
case DataBaseChangedEvent.DATABASE_CHANGED:
setUpAdapter();
break;
}
}
@Override
@ -56,4 +70,16 @@ public class PlaylistViewFragment extends AbsMainActivityFragment {
super.disableViews();
recyclerView.setEnabled(false);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
App.bus.register(this);
}
@Override
public void onDestroy() {
super.onDestroy();
App.bus.unregister(this);
}
}