Android Open Source - EnklawaPlayer Navigation Controller






From Project

Back to project page EnklawaPlayer.

License

The source code is released under:

GNU General Public License

If you think the Android project EnklawaPlayer listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package macbury.pod.activities.main;
//w w w .  j ava2s  . c o m
import android.app.Fragment;
import android.support.v4.widget.DrawerLayout;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import macbury.pod.R;
import macbury.pod.db.models.Program;
import macbury.pod.fragments.main.episodes.ProgramEpisodesFragment;
import macbury.pod.navigation_drawer.NavAdapter;
import macbury.pod.navigation_drawer.NavDivider;
import macbury.pod.navigation_drawer.items.AllProgramsNavItem;
import macbury.pod.navigation_drawer.items.DownloadedEpisodesNavItem;
import macbury.pod.navigation_drawer.items.FavoriteProgramNavItem;
import macbury.pod.navigation_drawer.items.ForumNavItem;
import macbury.pod.navigation_drawer.items.NavItemFragment;
import macbury.pod.navigation_drawer.items.NewestEpisodesNavItem;
import macbury.pod.navigation_drawer.items.PlayQueueNavItem;

/**
 * Created by macbury on 12.09.14.
 */
public class NavigationController implements AdapterView.OnItemClickListener {
  private final MainActivity          activity;
  private final ListView              navDrawerListView;
  private final DrawerLayout          mDrawerLayout;
  private final PlayQueueNavItem      playQueueItemNav;
  private NavAdapter                  drawerNavAdapter;
  private NewestEpisodesNavItem       newestEpisodesItemNav;
  private AllProgramsNavItem          allProgamsItemNav;
  private DownloadedEpisodesNavItem   downloadedItemNav;
  private NavDivider                  favoriteDividerNav;
  private ForumNavItem                forumNavItem;
  private NavigationListener          listener;
  private ProgramEpisodesFragment     programEpisodesFragment;
  private Program                     currentProgram;
  private Fragment                    currentFragment;

  public NavigationController(MainActivity activity, ListView navDrawerListView, DrawerLayout mDrawerLayout, NavigationListener listener) {
    this.activity                 = activity;
    this.listener                 = listener;
    this.navDrawerListView        = navDrawerListView;
    this.mDrawerLayout            = mDrawerLayout;
    this.forumNavItem             = new ForumNavItem(activity);
    this.favoriteDividerNav       = new NavDivider(activity, activity.getString(R.string.nav_divider_favorite));
    this.downloadedItemNav        = new DownloadedEpisodesNavItem(activity);
    this.allProgamsItemNav        = new AllProgramsNavItem(activity);
    this.newestEpisodesItemNav    = new NewestEpisodesNavItem(activity);
    this.drawerNavAdapter         = new NavAdapter(activity);
    this.playQueueItemNav         = new PlayQueueNavItem(activity);
    refresh();
    navDrawerListView.setAdapter(drawerNavAdapter);
    navDrawerListView.setOnItemClickListener(this);
    setSelected(0);
  }

  public void refresh() {
    drawerNavAdapter.clear();
    drawerNavAdapter.add(newestEpisodesItemNav);
    drawerNavAdapter.add(allProgamsItemNav);
    drawerNavAdapter.add(downloadedItemNav);
    drawerNavAdapter.add(playQueueItemNav);

    drawerNavAdapter.add(favoriteDividerNav);
    for(Program program : listener.getNavigationControllerFavoritedPrograms()) {
      drawerNavAdapter.add(new FavoriteProgramNavItem(activity, program));
    }

    drawerNavAdapter.notifyDataSetChanged();
  }

  @Override
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    if (drawerNavAdapter.isDivider(position)) {
      return;
    }
    mDrawerLayout.closeDrawers();
    setSelected(position);
  }

  public void setSelected(int position) {
    if (position >= drawerNavAdapter.getCount()) {
      position = 0;
    }

    if (drawerNavAdapter.isNavItemFragment(position)) {
      currentProgram               = null;
      NavItemFragment itemFragment = (NavItemFragment)drawerNavAdapter.getItem(position);

      if (currentFragment != itemFragment.getFragment()) {
        currentFragment              = itemFragment.getFragment();
        this.listener.onNavigationFragmentSelect(itemFragment.getFragment());
      }
    } else if (drawerNavAdapter.isNavFavoriteProgramItem(position)) {
      FavoriteProgramNavItem itemFragment = (FavoriteProgramNavItem)drawerNavAdapter.getItem(position);
      if (programEpisodesFragment == null) {
        programEpisodesFragment = new ProgramEpisodesFragment();
      }
      currentFragment = null;
      if (currentProgram != itemFragment.getProgram()) {
        currentProgram = itemFragment.getProgram();
        programEpisodesFragment.setProgram(itemFragment.getProgram());
        this.listener.onNavigationFragmentSelect(programEpisodesFragment);
      }
    }
    this.drawerNavAdapter.setSelected(position);
  }

  public void setListener(NavigationListener listener) {
    this.listener = listener;
  }

  public int getSelected() {
    return drawerNavAdapter.getSelected();
  }
}




Java Source Code List

macbury.pod.ApplicationTest.java
macbury.pod.activities.DonateActivity.java
macbury.pod.activities.ProgramEpisodesActivity.java
macbury.pod.activities.SettingsActivity.java
macbury.pod.activities.ext.AccentFragmentActivity.java
macbury.pod.activities.main.MainActivityActionBarToggle.java
macbury.pod.activities.main.MainActivity.java
macbury.pod.activities.main.NavigationController.java
macbury.pod.activities.main.NavigationListener.java
macbury.pod.activities.player.PlayerActivity.java
macbury.pod.activities.player.RadioActivity.java
macbury.pod.adapters.EpisodesAdapterListener.java
macbury.pod.adapters.EpisodesAdapter.java
macbury.pod.adapters.ProgramsAdapter.java
macbury.pod.api.APICategory.java
macbury.pod.api.APIEpisode.java
macbury.pod.api.APIProgram.java
macbury.pod.api.APIResponse.java
macbury.pod.api.APIThread.java
macbury.pod.db.DatabaseCRUDListener.java
macbury.pod.db.models.EnqueueEpisode.java
macbury.pod.db.models.EpisodeFile.java
macbury.pod.db.models.Episode.java
macbury.pod.db.models.ForumThread.java
macbury.pod.db.models.Program.java
macbury.pod.db.scopes.AbstractScope.java
macbury.pod.db.scopes.EnqueueEpisodeScope.java
macbury.pod.db.scopes.EpisodeFilesScope.java
macbury.pod.db.scopes.EpisodesScope.java
macbury.pod.db.scopes.ProgramsScope.java
macbury.pod.db.scopes.ThreadScope.java
macbury.pod.dialogs.EpisodeAboutDialog.java
macbury.pod.dialogs.ProgramAboutDialog.java
macbury.pod.extensions.Converter.java
macbury.pod.extensions.DateDeserializer.java
macbury.pod.extensions.SleepTimer.java
macbury.pod.fragments.SettingsFragment.java
macbury.pod.fragments.main.AbstractEpisodesFragment.java
macbury.pod.fragments.main.AllProgramsFragment.java
macbury.pod.fragments.main.EnklawaBaseAbstractListFragment.java
macbury.pod.fragments.main.episodes.DownloadedEpisodesFragment.java
macbury.pod.fragments.main.episodes.NewestEpisodesFragment.java
macbury.pod.fragments.main.episodes.PlaylistFragment.java
macbury.pod.fragments.main.episodes.ProgramEpisodesFragment.java
macbury.pod.fragments.player.ExternalPlayerFragment.java
macbury.pod.fragments.player.PlayerArtworkAndInfoFragment.java
macbury.pod.fragments.player.PlayerControllerFragment.java
macbury.pod.managers.AlarmsManager.java
macbury.pod.managers.App.java
macbury.pod.managers.BroadcastsManager.java
macbury.pod.managers.DatabaseManager.java
macbury.pod.managers.IntentManager.java
macbury.pod.managers.NotificationsManager.java
macbury.pod.managers.ServiceManager.java
macbury.pod.managers.SettingsManager.java
macbury.pod.managers.StorageManager.java
macbury.pod.managers.download.DownloadEpisode.java
macbury.pod.managers.download.DownloadManagerListener.java
macbury.pod.managers.download.DownloadManager.java
macbury.pod.managers.player.PlaybackStatus.java
macbury.pod.managers.player.PlayerManagerListener.java
macbury.pod.managers.player.PlayerManager.java
macbury.pod.managers.player.sources.AbstractMediaSource.java
macbury.pod.managers.player.sources.EpisodeMediaSource.java
macbury.pod.managers.player.sources.RadioMediaSource.java
macbury.pod.navigation_drawer.NavAdapter.java
macbury.pod.navigation_drawer.NavBaseItem.java
macbury.pod.navigation_drawer.NavDivider.java
macbury.pod.navigation_drawer.items.AllProgramsNavItem.java
macbury.pod.navigation_drawer.items.DownloadedEpisodesNavItem.java
macbury.pod.navigation_drawer.items.FavoriteProgramNavItem.java
macbury.pod.navigation_drawer.items.ForumNavItem.java
macbury.pod.navigation_drawer.items.NavItemFragment.java
macbury.pod.navigation_drawer.items.NewestEpisodesNavItem.java
macbury.pod.navigation_drawer.items.PlayQueueNavItem.java
macbury.pod.receivers.BootReceiver.java
macbury.pod.receivers.MediaButtonReceiver.java
macbury.pod.services.DownloadService.java
macbury.pod.services.PlayerService.java
macbury.pod.services.SyncPodService.java
macbury.pod.tutorial.MainActivityTutorial.java
macbury.pod.views.TappableFrameLayout.java