package com.simplecity.amp_library.ui.fragments; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import com.simplecity.amp_library.R; import com.simplecity.amp_library.ui.activities.MainActivity; import com.simplecity.amp_library.ui.adapters.PagerAdapter; import com.simplecity.amp_library.ui.views.SlidingTabLayout; import com.simplecity.amp_library.utils.ActionBarUtils; import com.simplecity.amp_library.utils.ColorUtils; import com.simplecity.amp_library.utils.DialogUtils; import com.simplecity.amp_library.utils.ShuttleUtils; import com.simplecity.amp_library.utils.ThemeUtils; public class MainFragment extends BaseFragment { private static final String TAG = "MainFragment"; private static final String GENRES_ORDER = "genres_order"; private static final String SUGGESTED_ORDER = "suggested_order"; private static final String ARTISTS_ORDER = "artists_order"; private static final String ALBUMS_ORDER = "albums_order"; private static final String SONGS_ORDER = "songs_order"; private static final String FOLDERS_ORDER = "folders_order"; private static final String PLAYLISTS_ORDER = "playlists_order"; private static final String SHOW_GENRES = "show_genres"; private static final String SHOW_SUGGESTED = "show_suggested"; private static final String SHOW_ARTISTS = "show_artists"; private static final String SHOW_ALBUMS = "show_albums"; private static final String SHOW_SONGS = "show_songs"; private static final String SHOW_FOLDERS = "show_folders"; private static final String SHOW_PLAYLISTS = "show_playlists"; private View dummyToolbar; private View dummyStatusBar; private SharedPreferences prefs; private SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener; private int defaultPage; private PagerAdapter adapter; private SlidingTabLayout slidingTabLayout; private ViewPager pager; public MainFragment() { } public static MainFragment newInstance() { final MainFragment fragment = new MainFragment(); final Bundle args = new Bundle(); fragment.setArguments(args); return fragment; } @Override public void onAttach(Context context) { super.onAttach(context); ((MainActivity) context).onSectionAttached(getString(R.string.library_title)); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); prefs = PreferenceManager.getDefaultSharedPreferences(this.getActivity()); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this.getActivity()); boolean showGenres = prefs.getBoolean(SHOW_GENRES, true); boolean showSuggested = prefs.getBoolean(SHOW_SUGGESTED, true); boolean showArtists = prefs.getBoolean(SHOW_ARTISTS, true); boolean showAlbums = prefs.getBoolean(SHOW_ALBUMS, true); boolean showSongs = prefs.getBoolean(SHOW_SONGS, true); boolean showFolders = prefs.getBoolean(SHOW_FOLDERS, false); if (!ShuttleUtils.isUpgraded()) { showFolders = false; } boolean showPlaylists = prefs.getBoolean(SHOW_PLAYLISTS, false); int genresOrder = prefs.getInt(GENRES_ORDER, 0); int suggestedOrder = prefs.getInt(SUGGESTED_ORDER, 1); int artistsOrder = prefs.getInt(ARTISTS_ORDER, 2); int albumsOrder = prefs.getInt(ALBUMS_ORDER, 3); int songsOrder = prefs.getInt(SONGS_ORDER, 4); int foldersOrder = prefs.getInt(FOLDERS_ORDER, 5); int playlistsOrder = prefs.getInt(PLAYLISTS_ORDER, 6); adapter = new PagerAdapter(getChildFragmentManager()); for (int i = 0; i < 8; i++) { if (genresOrder == i) { if (showGenres) { adapter.addFragment(GenreFragment.newInstance(getString(R.string.genres_title))); } } else if (suggestedOrder == i) { if (showSuggested) { adapter.addFragment(SuggestedFragment.newInstance(getString(R.string.suggested_title))); } } else if (artistsOrder == i) { if (showArtists) { adapter.addFragment(AlbumArtistFragment.newInstance(getString(R.string.artists_title))); } } else if (albumsOrder == i) { if (showAlbums) { adapter.addFragment(AlbumFragment.newInstance(getString(R.string.albums_title))); } } else if (songsOrder == i) { if (showSongs) { adapter.addFragment(SongFragment.newInstance(getString(R.string.tracks_title))); } } else if (foldersOrder == i) { if (showFolders) { adapter.addFragment(FolderFragment.newInstance(getString(R.string.folders_title))); } } else if (playlistsOrder == i) { if (showPlaylists) { adapter.addFragment(PlaylistFragment.newInstance(getString(R.string.playlists_title))); } } } defaultPage = 2; String defaultPage = prefs.getString("pref_default_page", null); for (int i = 0; i < adapter.getCount(); i++) { if (adapter.getPageTitle(i).equals(defaultPage)) { this.defaultPage = i; } } if (this.defaultPage > adapter.getCount()) { if (adapter.getCount() > 3) { this.defaultPage = 2; } else { this.defaultPage = 0; } } sharedPreferenceChangeListener = (sharedPreferences, key) -> { if (key.equals("pref_theme_highlight_color") || key.equals("pref_theme_accent_color") || key.equals("pref_theme_white_accent")) { themeUIComponents(); } }; this.prefs.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); pager = (ViewPager) rootView.findViewById(R.id.pager); pager.setAdapter(adapter); pager.setOffscreenPageLimit(adapter.getCount() - 1); pager.setCurrentItem(defaultPage); slidingTabLayout = (SlidingTabLayout) rootView.findViewById(R.id.tabs); ThemeUtils.themeTabLayout(getActivity(), slidingTabLayout); slidingTabLayout.setViewPager(pager); pager.postDelayed(() -> { if (pager != null) { DialogUtils.showRateSnackbar(getActivity(), pager); } }, 1000); dummyToolbar = rootView.findViewById(R.id.dummyToolbar); dummyStatusBar = rootView.findViewById(R.id.dummyStatusBar); //We need to set the dummy status bar height. if (ShuttleUtils.hasKitKat()) { LinearLayout.LayoutParams statusBarParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) ActionBarUtils.getStatusBarHeight(getActivity())); dummyStatusBar.setLayoutParams(statusBarParams); } else { dummyStatusBar.setVisibility(View.GONE); } themeUIComponents(); return rootView; } private void themeUIComponents() { if (dummyStatusBar != null) { //noinspection ResourceAsColor dummyStatusBar.setBackgroundColor(ShuttleUtils.hasLollipop() ? ColorUtils.getPrimaryColorDark(getContext()) : ColorUtils.getPrimaryColor()); } if (dummyToolbar != null) { dummyToolbar.setBackgroundColor(ColorUtils.getPrimaryColor()); } if (slidingTabLayout != null) { ThemeUtils.themeTabLayout(getActivity(), slidingTabLayout); } if (pager != null) { ThemeUtils.themeViewPager(pager); } } @Override public void onDestroy() { adapter.clear(); prefs.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); super.onDestroy(); } public Fragment getCurrentFragment() { if (adapter == null || pager == null) { return null; } return adapter.getItem(pager.getCurrentItem()); } @Override protected String screenName() { return TAG; } }