@Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    getExpandableListView().setFastScrollEnabled(true);

    LibraryActivity parentActivity = (LibraryActivity) getParent();
    int serverId = parentActivity.getIntent().getExtras().getInt(LibraryActivity.SERVER_ID);

    TuneStreamerApp app = (TuneStreamerApp) getApplication();
    mLibrary = app.getServer(serverId).getMainLibrary();

    setListAdapter(new ArtistListAdapter(this, mLibrary));
  }
 @Override
 public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
   AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
   View targetView = info.targetView;
   Intent intent =
       info.id == -1 ? createHeaderIntent(targetView) : mCurrentAdapter.createData(targetView);
   mActivity.onCreateContextMenu(menu, intent);
 }
 @Override
 public void setPrimaryItem(ViewGroup container, int position, Object object) {
   int type = mTabOrder[position];
   LibraryAdapter adapter = mAdapters[type];
   if (position != mCurrentPage || adapter != mCurrentAdapter) {
     requeryIfNeeded(type);
     mCurrentAdapter = adapter;
     mCurrentPage = position;
     mActivity.onPageChanged(position, adapter);
   }
 }
 /**
  * Create the LibraryPager.
  *
  * @param activity The LibraryActivity that will own this adapter. The activity will receive
  *     callbacks from the ListViews.
  * @param workerLooper A Looper running on a worker thread.
  */
 public LibraryPagerAdapter(LibraryActivity activity, Looper workerLooper) {
   if (sLruAdapterPos == null) sLruAdapterPos = new AdaperPositionLruCache(32);
   mActivity = activity;
   mUiHandler = new Handler(this);
   mWorkerHandler = new Handler(workerLooper, this);
   mCurrentPage = -1;
   activity
       .getContentResolver()
       .registerContentObserver(
           MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, true, mPlaylistObserver);
 }
Example #5
0
  /**
   * Opens an intent in an external application
   *
   * @param activity The library activity to use
   * @param intent The intent to examine and launch
   * @return bool true if the intent was dispatched
   */
  public static boolean dispatchIntent(LibraryActivity activity, Intent intent) {
    boolean handled = true;

    String path = intent.getStringExtra(LibraryAdapter.DATA_FILE);
    String mimeGuess = URLConnection.guessContentTypeFromName(path);
    File file = new File(path);
    Uri uri = Uri.fromFile(file);

    Intent extView = new Intent(Intent.ACTION_VIEW);
    extView.setDataAndType(uri, mimeGuess);
    try {
      activity.startActivity(extView);
    } catch (Exception ActivityNotFoundException) {
      handled = false;
    }
    return handled;
  }
 @Override
 public void onClick(View view) {
   view = (View) view.getParent(); // get view of linear layout, not the click consumer
   Intent intent = createHeaderIntent(view);
   mActivity.onItemClicked(intent);
 }
 @Override
 public CharSequence getPageTitle(int position) {
   return mActivity.getResources().getText(TITLES[mTabOrder[position]]);
 }
  @Override
  public Object instantiateItem(ViewGroup container, int position) {
    int type = mTabOrder[position];
    ListView view = mLists[type];

    if (view == null) {
      LibraryActivity activity = mActivity;
      LayoutInflater inflater = activity.getLayoutInflater();
      LibraryAdapter adapter;
      LinearLayout header = null;
      Looper looper = mWorkerHandler.getLooper();

      switch (type) {
        case MediaUtils.TYPE_ARTIST:
          adapter =
              mArtistAdapter =
                  new MediaAdapter(activity, MediaUtils.TYPE_ARTIST, null, activity, looper);
          mArtistAdapter.setExpandable(mSongsPosition != -1 || mAlbumsPosition != -1);
          mArtistHeader =
              header = (LinearLayout) inflater.inflate(R.layout.library_row_expandable, null);
          break;
        case MediaUtils.TYPE_ALBUM:
          adapter =
              mAlbumAdapter =
                  new MediaAdapter(
                      activity, MediaUtils.TYPE_ALBUM, mPendingAlbumLimiter, activity, looper);
          mAlbumAdapter.setExpandable(mSongsPosition != -1);
          mPendingAlbumLimiter = null;
          mAlbumHeader =
              header = (LinearLayout) inflater.inflate(R.layout.library_row_expandable, null);
          break;
        case MediaUtils.TYPE_SONG:
          adapter =
              mSongAdapter =
                  new MediaAdapter(
                      activity, MediaUtils.TYPE_SONG, mPendingSongLimiter, activity, looper);
          mPendingSongLimiter = null;
          mSongHeader =
              header = (LinearLayout) inflater.inflate(R.layout.library_row_expandable, null);
          break;
        case MediaUtils.TYPE_PLAYLIST:
          adapter =
              mPlaylistAdapter =
                  new MediaAdapter(activity, MediaUtils.TYPE_PLAYLIST, null, activity, looper);
          break;
        case MediaUtils.TYPE_GENRE:
          adapter =
              mGenreAdapter =
                  new MediaAdapter(activity, MediaUtils.TYPE_GENRE, null, activity, looper);
          mGenreAdapter.setExpandable(mSongsPosition != -1);
          break;
        case MediaUtils.TYPE_FILE:
          adapter = mFilesAdapter = new FileSystemAdapter(activity, mPendingFileLimiter);
          mPendingFileLimiter = null;
          break;
        default:
          throw new IllegalArgumentException("Invalid media type: " + type);
      }

      view = (ListView) inflater.inflate(R.layout.listview, null);
      view.setOnCreateContextMenuListener(this);

      view.setTag(type);
      if (header != null) {
        TextView headerText = (TextView) header.findViewById(R.id.text);
        headerText.setText(mHeaderText);
        headerText.setOnClickListener(this);
        header.setTag(new ViewHolder()); // behave like a normal library row
        view.addHeaderView(header);
      }
      view.setAdapter(adapter);
      if (type != MediaUtils.TYPE_FILE) loadSortOrder((MediaAdapter) adapter);
      view.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
      adapter.setFilter(mFilter);

      mAdapters[type] = adapter;
      mLists[type] = view;
      mRequeryNeeded[type] = true;
    }

    requeryIfNeeded(type);
    container.addView(view);
    return view;
  }