package org.freemp.droid.playlist; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.MenuItemCompat; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.ViewConfiguration; import android.view.WindowManager; import android.widget.Toast; import com.androidquery.AQuery; import com.flurry.android.FlurryAgent; import org.freemp.droid.ClsTrack; import org.freemp.droid.Constants; import org.freemp.droid.FileUtils; import org.freemp.droid.R; import org.freemp.droid.playlist.albums.FragmentAlbums; import org.freemp.droid.playlist.artists.FragmentArtists; import org.freemp.droid.playlist.folders.FragmentFolders; import org.freemp.droid.view.SlidingTabLayout; import java.lang.reflect.Field; import java.util.ArrayList; /** * Created with IntelliJ IDEA. * User: recoilme * Date: 25/11/13 * Time: 13:46 * To change this template use File | Settings | File Templates. */ public class ActPlaylist extends ActionBarActivity { public int type; private Activity activity; private AQuery aq; private Menu optionsMenu; private boolean refreshing = true; private AdpPagerAdapter adpPagerAdapter; private ViewPager mViewPager; private SlidingTabLayout mSlidingTabLayout; private String scanDir; private DlgChooseDirectory.Result dialogResult; private FragmentFolders playlistFragment = new FragmentFolders(); private FragmentAlbums albumsFragment = new FragmentAlbums(); private FragmentArtists artistsFragment = new FragmentArtists(); public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_DITHER, WindowManager.LayoutParams.FLAG_DITHER); setContentView(R.layout.playlist_tabs); activity = this; aq = new AQuery(activity); FlurryAgent.onStartSession(activity, getString(R.string.flurry)); ActionBar actionBar = getSupportActionBar(); actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bgr)); actionBar.setDisplayHomeAsUpEnabled(true); try { ViewConfiguration config = ViewConfiguration.get(activity); Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); if (menuKeyField != null) { menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } } catch (Exception e) { e.printStackTrace(); } Bundle extras = getIntent().getExtras(); if (extras == null) { return; } else { type = extras.getInt("type"); } dialogResult = new DlgChooseDirectory.Result() { @Override public void onChooseDirectory(String dir) { scanDir = dir; PreferenceManager.getDefaultSharedPreferences(activity).edit().putString("scanDir", dir).commit(); update(true); } }; mViewPager = (ViewPager) aq.id(R.id.viewpager).getView(); mViewPager.setOffscreenPageLimit(2); adpPagerAdapter = new AdpPagerAdapter(getSupportFragmentManager()); mViewPager.setAdapter(adpPagerAdapter); mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tabs); mSlidingTabLayout.setViewPager(mViewPager); mSlidingTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { @Override public int getIndicatorColor(int position) { return getResources().getColor(R.color.yellow); } @Override public int getDividerColor(int position) { return Color.GRAY; } }); } public void setRefreshing(boolean refreshing) { this.refreshing = refreshing; } public void update(boolean refresh) { refreshing = true; setRefreshActionButtonState(); Fragment fragment = adpPagerAdapter.getItem(mViewPager.getCurrentItem()); if (fragment != null) { if (fragment instanceof FragmentFolders) { playlistFragment.update(activity, Constants.TYPE_FS, refresh); } if (fragment instanceof FragmentAlbums) { albumsFragment.update(activity, 1, refresh); } if (fragment instanceof FragmentArtists) { artistsFragment.update(activity, 1, refresh); } } } public AdpPlaylist getAdapter() { return playlistFragment.adapter; /* Fragment fragment = adpPagerAdapter.getItem(mViewPager.getCurrentItem()); if (fragment!=null) { if (fragment instanceof FragmentFolders) { return playlistFragment.adapter; } } return null; */ } @Override public boolean onCreateOptionsMenu(Menu menu) { this.optionsMenu = menu; MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_playlist, menu); if (type == Constants.TYPE_FS) { MenuItem item = this.optionsMenu.add(R.string.setup_scandir); item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { DlgChooseDirectory dlgChooseDirectory = new DlgChooseDirectory(activity, dialogResult, scanDir); return true; } }); } scanDir = PreferenceManager.getDefaultSharedPreferences(activity).getString("scanDir", ""); if (scanDir.equals("")) { DlgChooseDirectory dlgChooseDirectory = new DlgChooseDirectory(activity, dialogResult, "/"); } else { update(false); } return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; case R.id.menu_refresh: update(true); return true; case R.id.menu_save: save(); return true; case R.id.menu_select_all: select_all(); return true; } return super.onOptionsItemSelected(item); } public void setRefreshActionButtonState() { if (optionsMenu != null) { final MenuItem refreshItem = optionsMenu .findItem(R.id.menu_refresh); if (refreshItem != null) { if (refreshing) { MenuItemCompat.setActionView(refreshItem, R.layout.actionbar_progress); } else { MenuItemCompat.setActionView(refreshItem, null); } } } } public void save() { ArrayList<ClsTrack> tracks = null; if (getAdapter() != null) { tracks = getAdapter().getSelected(); } String fileName = "tracks"; if (tracks == null || tracks.size() == 0) { Toast.makeText(activity, getString(R.string.select_pls), Toast.LENGTH_LONG).show(); return; } close(tracks); } public void close(ArrayList<ClsTrack> tracks) { if (FileUtils.writeObject("tracks", activity, tracks)) { setResult(RESULT_OK, null); finish(); } } public void select_all() { if (getAdapter() == null) { return; } ArrayList<ClsTrack> tracks = getAdapter().getSelected(); if (tracks.size() > 0) { setSelection(false); } else { setSelection(true); } } public void setSelection(boolean isSelected) { if (getAdapter() == null) { return; } getAdapter().notifyDataSetInvalidated(); for (int j = 0; j < getAdapter().data.size(); j++) { ClsArrTrack o = getAdapter().data.get(j); ArrayList<ClsTrack> tracks = o.getPlaylists(); for (int i = 0; i < tracks.size(); i++) { ClsTrack t = tracks.get(i); t.setSelected(isSelected); tracks.set(i, t); } o.setPlaylists(tracks); getAdapter().data.set(j, o); } getAdapter().invalidate(); } public void updateColor() { if (getAdapter() == null) { return; } ArrayList<ClsTrack> tmp = getAdapter().getSelected(); if (tmp == null || tmp.size() == 0) { aq.id(R.id.textViewSave).textColor(Color.GRAY); } else { aq.id(R.id.textViewSave).textColor(getResources().getColor(R.color.yellow)); } } @Override public void onDestroy() { FlurryAgent.onEndSession(activity); super.onDestroy(); } @Override public void onResume() { super.onResume(); } class AdpPagerAdapter extends FragmentPagerAdapter { public AdpPagerAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return Constants.NUM_ITEMS; } @Override public Fragment getItem(int position) { switch (position) { case 0: return playlistFragment; case 1: return albumsFragment; case 2: return artistsFragment; } return null; } @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return getString(R.string.tab_folders); case 1: return getString(R.string.tab_albums); case 2: return getString(R.string.tab_artists); } return "-"; } } }