/*
Sunami - An Android music player which knows what you want to listen to.
Copyright (C) 2015 Wojtek Swiderski
Sunami is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Sunami is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
The GNU General Public License can be found at the root of this repository.
To contact me, email me at wojtek.technology@gmail.com
*/
package com.wojtechnology.sunami;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.support.v7.widget.Toolbar;
import android.widget.ImageView;
import android.widget.LinearLayout;
/**
* A simple {@link Fragment} subclass.
*/
public class NavigationDrawerFragment extends Fragment {
private RecyclerView recyclerView;
public static final String PREF_FILE_NAME = "testpref";
public static final String KEY_USER_LEARNED_DRAWER = "user_learned_drawer";
private ActionBarDrawerToggle mDrawerToggle;
private DrawerLayout mDrawerLayout;
private UpNextAdapter mListAdapter;
private RecyclerView mRecyclerView;
private boolean mUserLearnedDrawer;
private boolean mFromSavedInstanceState;
private View containerView;
private boolean mOpened;
private Context mContext;
private LinearLayout mSongButton;
private LinearLayout mArtistButton;
public NavigationDrawerFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences sharedPref = getActivity().getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE);
mUserLearnedDrawer = sharedPref.getBoolean(
getString(R.string.user_learn_drawer), false);
if(savedInstanceState != null){
mFromSavedInstanceState = true;
}
mOpened = false;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
}
public void setUp(int fragmentID
,DrawerLayout drawerLayout
,final Toolbar toolbar
,final Context context) {
containerView = getActivity().findViewById(fragmentID);
mDrawerLayout = drawerLayout;
mContext = context;
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
if(!mUserLearnedDrawer){
mUserLearnedDrawer = true;
SharedPreferences.Editor editor = getActivity().getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE).edit();
editor.putBoolean(getString(R.string.user_learn_drawer), mUserLearnedDrawer);
editor.commit();
}
toolbar.setTitle(R.string.title_side_fragment);
//getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
toolbar.setTitle(R.string.title_activity_main);
//getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
if(slideOffset > 0.0f){
if(!mOpened) {
((MainActivity) context).hideSong();
mOpened = true;
}
}else{
((MainActivity) context).showSong();
mOpened = false;
}
}
};
if(!mUserLearnedDrawer && !mFromSavedInstanceState){
mDrawerLayout.openDrawer(containerView);
mOpened = true;
}else{
mOpened = false;
}
mRecyclerView = (RecyclerView) getActivity().findViewById(R.id.up_next_drawer_list);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerLayout.post(new Runnable() {
@Override
public void run() {
mDrawerToggle.syncState();
}
});
mSongButton = (LinearLayout) getActivity().findViewById(R.id.by_song_button);
mArtistButton = (LinearLayout) getActivity().findViewById(R.id.by_artist_button);
mSongButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mDrawerLayout.closeDrawers();
((MainActivity) mContext).setState(MainActivity.STATE_SONGS);
}
});
mArtistButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mDrawerLayout.closeDrawers();
((MainActivity) mContext).setState(MainActivity.STATE_ARTISTS);
}
});
}
public void closeDrawer() {
mDrawerLayout.closeDrawers();
}
public void updateChoices(int state) {
ImageView songIcon = (ImageView) getActivity().findViewById(R.id.by_song_icon);
ImageView artistIcon = (ImageView) getActivity().findViewById(R.id.by_artist_icon);
Drawable songD;
Drawable artistD;
if (state == MainActivity.STATE_SONGS) {
songD = getActivity().getResources().getDrawable(R.drawable.ic_my_library_music_white_36dp);
songD.setColorFilter(0xffffab40, PorterDuff.Mode.MULTIPLY);
artistD = getActivity().getResources().getDrawable(R.drawable.ic_recent_actors_grey600_36dp);
} else {
songD = getActivity().getResources().getDrawable(R.drawable.ic_my_library_music_grey600_36dp);
artistD = getActivity().getResources().getDrawable(R.drawable.ic_recent_actors_white_36dp);
artistD.setColorFilter(0xffffab40, PorterDuff.Mode.MULTIPLY);
}
songIcon.setImageDrawable(songD);
artistIcon.setImageDrawable(artistD);
}
public void setUpRecyclerView (TheBrain theBrain) {
mListAdapter = new UpNextAdapter(getActivity(), theBrain.getUpNext(), theBrain);
mRecyclerView.setAdapter(mListAdapter);
}
public void updateRecyclerView () {
mListAdapter.notifyDataSetChanged();
}
public static void saveToPreferences(Context context, String preferenceName, String preferenceValue) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(preferenceName, preferenceValue);
editor.apply();
}
public static String readFromPreferences(Context context, String preferenceName, String defaultValue) {
SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
return sharedPreferences.getString(preferenceName, defaultValue);
}
public boolean isOpen() {
return mOpened;
}
}