Example #1
0
  protected void selectItem(T item) {
    deselectAll();
    item.setSelected(true);
    selectedItem = item;
    selectedIndex = itemList.indexOf(selectedItem);

    lc.updateHorizontalScrollbar(item, scroll);
  }
Example #2
0
  public void changeSelection(int delta, int keyCode) {
    boolean sideways = keyCode == KeyEvent.VK_LEFT || keyCode == KeyEvent.VK_RIGHT;

    T item = lc.changeSelection(itemList, selectedItem, delta, sideways);
    if (item != null) {
      selectItem(item);
    }
  }
 public void onActivityResume(Activity activity) {
   super.onActivityResume(activity);
   if (mVideoManager != null) {
     mVideoManager.setController(this);
   }
   if (mControlManager != null) {
     mControlManager.setController(this);
   }
 }
 public void onActivityPause() {
   if (mVideoManager != null) {
     mVideoManager.setController(null);
   }
   if (mTvShowManager != null) {
     mTvShowManager.setController(null);
   }
   super.onActivityPause();
 }
 public void onActivityPause() {
   if (mVideoManager != null) {
     mVideoManager.setController(null);
     mVideoManager.postActivity();
   }
   if (mControlManager != null) {
     mControlManager.setController(null);
   }
   super.onActivityPause();
 }
 public void onActivityResume(Activity activity) {
   super.onActivityResume(activity);
   ConnectionFactory.getNowPlayingPoller(activity.getApplicationContext())
       .subscribe(mNowPlayingHandler);
   if (mEventClient != null) {
     mEventClient.setController(this);
   }
   if (mMusicManager != null) {
     mMusicManager.setController(this);
   }
   if (mControlManager != null) {
     mControlManager.setController(this);
   }
 }
 public void onActivityPause() {
   ConnectionFactory.getNowPlayingPoller(mActivity.getApplicationContext())
       .unSubscribe(mNowPlayingHandler);
   if (mMusicManager != null) {
     mMusicManager.setController(null);
     mMusicManager.postActivity();
   }
   if (mControlManager != null) {
     mControlManager.setController(null);
   }
   if (mEventClient != null) {
     mEventClient.setController(null);
   }
   super.onActivityPause();
 }
  public void onCreate(Activity activity, Handler handler, AbsListView list) {

    mMusicManager = ManagerFactory.getMusicManager(this);
    mControlManager = ManagerFactory.getControlManager(this);

    ((ISortableManager) mMusicManager).setSortKey(AbstractManager.PREF_SORT_KEY_ALBUM);
    ((ISortableManager) mMusicManager)
        .setPreferences(activity.getPreferences(Context.MODE_PRIVATE));

    final String sdError = ImportUtilities.assertSdCard();
    mLoadCovers = sdError == null;

    if (!isCreated()) {
      super.onCreate(activity, handler, list);

      if (!mLoadCovers) {
        Toast toast =
            Toast.makeText(
                activity, sdError + " Displaying place holders only.", Toast.LENGTH_LONG);
        toast.show();
      }

      mArtist = (Artist) activity.getIntent().getSerializableExtra(ListController.EXTRA_ARTIST);
      mGenre = (Genre) activity.getIntent().getSerializableExtra(ListController.EXTRA_GENRE);
      activity.registerForContextMenu(mList);

      mFallbackBitmap =
          BitmapFactory.decodeResource(activity.getResources(), R.drawable.default_album);
      setupIdleListener();

      mList.setOnItemClickListener(
          new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              if (isLoading()) return;
              Intent nextActivity;
              final Album album =
                  (Album) mList.getAdapter().getItem(((ThreeLabelsItemView) view).position);
              nextActivity = new Intent(view.getContext(), ListActivity.class);
              nextActivity.putExtra(ListController.EXTRA_LIST_CONTROLLER, new SongListController());
              nextActivity.putExtra(ListController.EXTRA_ALBUM, album);
              mActivity.startActivity(nextActivity);
            }
          });
      mList.setOnKeyListener(new ListControllerOnKeyListener<Album>());
      fetch();
    }
  }
  public void onCreate(Activity activity, Handler handler, AbsListView list) {

    mVideoManager = ManagerFactory.getVideoManager(this);
    mControlManager = ManagerFactory.getControlManager(this);

    ((ISortableManager) mVideoManager).setSortKey(AbstractManager.PREF_SORT_KEY_MOVIE);
    ((ISortableManager) mVideoManager)
        .setPreferences(activity.getPreferences(Context.MODE_PRIVATE));

    final String sdError = ImportUtilities.assertSdCard();
    mLoadCovers = sdError == null;

    if (!isCreated()) {
      super.onCreate(activity, handler, list);

      if (!mLoadCovers) {
        Toast toast =
            Toast.makeText(
                activity, sdError + " Displaying place holders only.", Toast.LENGTH_LONG);
        toast.show();
      }

      mActor = (Actor) mActivity.getIntent().getSerializableExtra(ListController.EXTRA_ACTOR);
      mGenre = (Genre) mActivity.getIntent().getSerializableExtra(ListController.EXTRA_GENRE);
      activity.registerForContextMenu(mList);

      mFallbackBitmap =
          BitmapFactory.decodeResource(activity.getResources(), R.drawable.default_poster);
      mWatchedBitmap = BitmapFactory.decodeResource(activity.getResources(), R.drawable.check_mark);
      setupIdleListener();

      mList.setOnItemClickListener(
          new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              if (isLoading()) return;
              final Movie movie =
                  (Movie) mList.getAdapter().getItem(((FiveLabelsItemView) view).position);
              Intent nextActivity = new Intent(view.getContext(), MovieDetailsActivity.class);
              nextActivity.putExtra(ListController.EXTRA_MOVIE, movie);
              mActivity.startActivity(nextActivity);
            }
          });
      mList.setOnKeyListener(new ListControllerOnKeyListener<Movie>());
      fetch();
    }
  }
Example #10
0
  protected void layoutItems() {
    Insets insets = main.getInsets();
    Dimension size = new Dimension();

    int xOff = 12 + insets.left;
    int yOff = 57;

    xOff += layoutXOffAdjustment;
    yOff += layoutYOffAdjustment;

    int x = 0;
    int y = yOff;

    Rectangle b = main.getBounds();

    for (T item : itemList) {
      size = item.getPreferredSize();
      lc.itemsPerRow = (b.height - yOff) / (size.height + layoutItemHeightAdjustment);

      item.setBounds(xOff + x, y + insets.top, size.width, size.height);

      y += size.height + layoutItemHeightAdjustment;

      if (!layoutHeightOnly) {
        if (y + size.height > b.height) {
          x += size.width + xOff;
          y = yOff;
        }
      }
    }

    Dimension d = main.getPreferredSize();
    d.width = x + size.width + xOff * 2;
    if (layoutHeightOnly) {
      d.height = y + size.height + yOff;
    }
    main.setPreferredSize(d);

    main.repaint();
  }
 @Override
 public void onOptionsItemSelected(MenuItem item) {
   final SharedPreferences.Editor ed;
   switch (item.getItemId()) {
     case MENU_PLAY_ALL:
       break;
     case MENU_SORT_BY_TITLE_ASC:
       ed = mActivity.getPreferences(Context.MODE_PRIVATE).edit();
       ed.putInt(
           AbstractManager.PREF_SORT_BY_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.TITLE);
       ed.putString(
           AbstractManager.PREF_SORT_ORDER_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.ORDER_ASC);
       ed.commit();
       fetch();
       break;
     case MENU_SORT_BY_TITLE_DESC:
       ed = mActivity.getPreferences(Context.MODE_PRIVATE).edit();
       ed.putInt(
           AbstractManager.PREF_SORT_BY_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.TITLE);
       ed.putString(
           AbstractManager.PREF_SORT_ORDER_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.ORDER_DESC);
       ed.commit();
       fetch();
       break;
     case MENU_SORT_BY_YEAR_ASC:
       ed = mActivity.getPreferences(Context.MODE_PRIVATE).edit();
       ed.putInt(
           AbstractManager.PREF_SORT_BY_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.YEAR);
       ed.putString(
           AbstractManager.PREF_SORT_ORDER_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.ORDER_ASC);
       ed.commit();
       fetch();
       break;
     case MENU_SORT_BY_YEAR_DESC:
       ed = mActivity.getPreferences(Context.MODE_PRIVATE).edit();
       ed.putInt(
           AbstractManager.PREF_SORT_BY_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.YEAR);
       ed.putString(
           AbstractManager.PREF_SORT_ORDER_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.ORDER_DESC);
       ed.commit();
       fetch();
       break;
     case MENU_SORT_BY_RATING_ASC:
       ed = mActivity.getPreferences(Context.MODE_PRIVATE).edit();
       ed.putInt(
           AbstractManager.PREF_SORT_BY_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.RATING);
       ed.putString(
           AbstractManager.PREF_SORT_ORDER_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.ORDER_ASC);
       ed.commit();
       fetch();
       break;
     case MENU_SORT_BY_RATING_DESC:
       ed = mActivity.getPreferences(Context.MODE_PRIVATE).edit();
       ed.putInt(
           AbstractManager.PREF_SORT_BY_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.RATING);
       ed.putString(
           AbstractManager.PREF_SORT_ORDER_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.ORDER_DESC);
       ed.commit();
       fetch();
       break;
     case MENU_SORT_BY_DATE_ADDED_ASC:
       ed = mActivity.getPreferences(Context.MODE_PRIVATE).edit();
       ed.putInt(
           AbstractManager.PREF_SORT_BY_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.DATE_ADDED);
       ed.putString(
           AbstractManager.PREF_SORT_ORDER_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.ORDER_ASC);
       ed.commit();
       fetch();
       break;
     case MENU_SORT_BY_DATE_ADDED_DESC:
       ed = mActivity.getPreferences(Context.MODE_PRIVATE).edit();
       ed.putInt(
           AbstractManager.PREF_SORT_BY_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.DATE_ADDED);
       ed.putString(
           AbstractManager.PREF_SORT_ORDER_PREFIX + AbstractManager.PREF_SORT_KEY_MOVIE,
           SortType.ORDER_DESC);
       ed.commit();
       fetch();
       break;
     default:
       super.onOptionsItemSelected(item);
   }
 }
  public void onCreate(Activity activity, Handler handler, AbsListView list) {

    mVideoManager = ManagerFactory.getVideoManager(this);
    mTvShowManager = ManagerFactory.getTvManager(this);

    if (!isCreated()) {
      super.onCreate(activity, handler, list);
      final String sdError = ImportUtilities.assertSdCard();
      mLoadCovers = sdError == null;
      if (!mLoadCovers) {
        Toast toast =
            Toast.makeText(
                activity, sdError + " Displaying place holders only.", Toast.LENGTH_LONG);
        toast.show();
      }

      mFallbackBitmap =
          BitmapFactory.decodeResource(activity.getResources(), R.drawable.person_black_small);
      setupIdleListener();

      final String title =
          mType == TYPE_MOVIE ? "Movie " : mType == TYPE_TVSHOW ? "TV " : "" + "Actors";
      DataResponse<ArrayList<Actor>> response =
          new DataResponse<ArrayList<Actor>>() {
            @SuppressLint("")
            public void run() {
              if (value.size() > 0) {
                setTitle(title + " (" + value.size() + ")");
                ((ListView) mList).setAdapter(new ActorAdapter(mActivity, value));
              } else {
                setTitle(title);
                setNoDataMessage("No actors found.", R.drawable.icon_artist_dark);
              }
            }
          };

      mList.setOnKeyListener(new ListControllerOnKeyListener<Artist>());

      showOnLoading();
      setTitle(title + "...");
      switch (mType) {
        case TYPE_MOVIE:
          mVideoManager.getMovieActors(response, mActivity.getApplicationContext());
          break;
        case TYPE_TVSHOW:
          mTvShowManager.getTvShowActors(response, mActivity.getApplicationContext());
          break;
        case TYPE_EPISODE:
          break;
      }

      mList.setOnItemClickListener(
          new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              if (isLoading()) return;
              Intent nextActivity;
              final Actor actor =
                  (Actor) mList.getAdapter().getItem(((OneLabelItemView) view).position);
              nextActivity = new Intent(view.getContext(), ListActivity.class);
              if (mType == TYPE_TVSHOW)
                nextActivity.putExtra(
                    ListController.EXTRA_LIST_CONTROLLER, new TvShowListController());
              else
                nextActivity.putExtra(
                    ListController.EXTRA_LIST_CONTROLLER, new MovieListController());
              nextActivity.putExtra(ListController.EXTRA_ACTOR, actor);
              mActivity.startActivity(nextActivity);
            }
          });
    }
  }
 public void onActivityResume(Activity activity) {
   super.onActivityResume(activity);
   mVideoManager = ManagerFactory.getVideoManager(this);
   mTvShowManager = ManagerFactory.getTvManager(this);
 }
Example #14
0
public abstract class ToolbarList<T extends Component & ToolbarList.ToolbarListItem>
    extends BackgroundPanel {

  interface ToolbarListItem {
    public void setSelected(boolean b);
  }

  protected List<T> itemList = Factory.newArrayList();
  protected ListController<T> lc = ListController.newInstance();

  private static Image hLine, noteToolsTrash;

  protected JPanel main;
  protected JButton bNew;
  protected SearchTextField search;
  protected JScrollPane scroll;
  protected JButton trash;

  protected boolean isEditing;

  protected T selectedItem;
  protected int selectedIndex;

  protected int layoutItemHeightAdjustment = 0;
  protected int layoutXOffAdjustment = 0;
  protected int layoutYOffAdjustment = 0;
  protected boolean layoutHeightOnly = false;

  private Image newButtonImage;
  private String searchHint;

  static {
    Iterator<Image> i = Images.iterator(new String[] {"notebooksHLine", "noteToolsTrash"});
    hLine = i.next();
    noteToolsTrash = i.next();
  }

  public ToolbarList(Image img, Image newButtonImage, String searchHint) {
    super(img);

    this.newButtonImage = newButtonImage;
    this.searchHint = searchHint;
  }

  protected void initialize() {
    createComponents();
    update();

    addComponentListener(
        new ResizeListener() {
          @Override
          public void componentResized(ComponentEvent e) {
            layoutItems();
          }
        });
  }

  protected void createComponents() {
    main = new JPanel();
    main.setLayout(null);

    int divY = 42;

    BackgroundPanel div = new BackgroundPanel(hLine);
    div.setBounds(0, divY, 1920, 2);
    div.setStyle(BackgroundPanel.SCALED_X);

    JPanel tools = new JPanel(null);
    tools.setBounds(0, 0, 800, divY);

    bNew = new JButton("");
    bNew.setIcon(new ImageIcon(newButtonImage));
    bNew.setBorderPainted(false);
    bNew.setBounds(10, 10, newButtonImage.getWidth(null), newButtonImage.getHeight(null));

    search = new SearchTextField(searchHint, ElephantWindow.fontMedium);
    search.setBorder(BorderFactory.createEmptyBorder(0, 22, 0, 20));
    search.setBounds(newButtonImage.getWidth(null) + 10, 8, 160, 26);
    search.setFont(ElephantWindow.fontMedium);
    search.setFixedColor(Color.decode("#e9e9e9"));
    search.useV2();
    search.windowFocusGained();

    trash = new JButton("");
    trash.setBorderPainted(false);
    trash.setContentAreaFilled(false);
    trash.setIcon(new ImageIcon(noteToolsTrash));
    trash.setVisible(this instanceof Notebooks);
    trash.setBounds(
        newButtonImage.getWidth(null) + 177,
        10,
        noteToolsTrash.getWidth(null),
        noteToolsTrash.getHeight(null));

    tools.add(bNew);
    tools.add(search);
    tools.add(trash);

    scroll = new JScrollPane(main);
    scroll.setBorder(ElephantWindow.emptyBorder);
    scroll.getHorizontalScrollBar().setUnitIncrement(5);
    scroll.getVerticalScrollBar().setUnitIncrement(5);

    add(tools);
    add(div);
    add(scroll);

    addComponentListeners();
  }

  protected abstract List<T> queryFilter(String text);

  protected abstract void newButtonAction();

  protected abstract void trashButtonAction();

  protected void vkEnter() {}

  protected void update() {
    for (T item : itemList) {
      item.setVisible(false);
    }

    main.removeAll();
    itemList.clear();
    deselectAll();

    List<T> list = queryFilter(search.getText());

    for (T item : list) {
      main.add(item);
      itemList.add(item);
    }
  }

  protected void layoutItems() {
    Insets insets = main.getInsets();
    Dimension size = new Dimension();

    int xOff = 12 + insets.left;
    int yOff = 57;

    xOff += layoutXOffAdjustment;
    yOff += layoutYOffAdjustment;

    int x = 0;
    int y = yOff;

    Rectangle b = main.getBounds();

    for (T item : itemList) {
      size = item.getPreferredSize();
      lc.itemsPerRow = (b.height - yOff) / (size.height + layoutItemHeightAdjustment);

      item.setBounds(xOff + x, y + insets.top, size.width, size.height);

      y += size.height + layoutItemHeightAdjustment;

      if (!layoutHeightOnly) {
        if (y + size.height > b.height) {
          x += size.width + xOff;
          y = yOff;
        }
      }
    }

    Dimension d = main.getPreferredSize();
    d.width = x + size.width + xOff * 2;
    if (layoutHeightOnly) {
      d.height = y + size.height + yOff;
    }
    main.setPreferredSize(d);

    main.repaint();
  }

  protected void refresh() {
    update();
    layoutItems();
  }

  protected void deselectAll() {
    if (selectedItem != null) {
      selectedItem.setSelected(false);
      selectedItem = null;
    }
  }

  public boolean isEditing() {
    return isEditing || (search != null && search.hasFocus());
  }

  protected void addComponentListeners() {
    main.addMouseListener(
        new CustomMouseListener() {
          @Override
          public void mouseClicked(MouseEvent e) {
            deselectAll();
            search.setFocusable(false);
          }
        });

    if (bNew != null) {
      bNew.addActionListener(
          new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
              newButtonAction();
            }
          });
    }

    search
        .getDocument()
        .addDocumentListener(
            new DocumentListener() {
              @Override
              public void insertUpdate(DocumentEvent e) {
                refresh();
              }

              @Override
              public void removeUpdate(DocumentEvent e) {
                refresh();
              }

              @Override
              public void changedUpdate(DocumentEvent e) {
                refresh();
              }
            });

    search.addKeyListener(
        new KeyListener() {
          @Override
          public void keyTyped(KeyEvent e) {}

          @Override
          public void keyPressed(KeyEvent e) {
            switch (e.getKeyCode()) {
              case KeyEvent.VK_UP:
                if (search.hasFocus()) {
                  search.setFocusable(false);
                  changeSelection(-1, 0);
                }
                break;
              case KeyEvent.VK_DOWN:
                if (search.hasFocus()) {
                  search.setFocusable(false);
                  changeSelection(1, 0);
                }
                break;
            }
          }

          @Override
          public void keyReleased(KeyEvent e) {}
        });

    if (this instanceof Notebooks) {
      trash.addActionListener(
          new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
              trashButtonAction();
            }
          });
    }
  }

  public void changeSelection(int delta, int keyCode) {
    boolean sideways = keyCode == KeyEvent.VK_LEFT || keyCode == KeyEvent.VK_RIGHT;

    T item = lc.changeSelection(itemList, selectedItem, delta, sideways);
    if (item != null) {
      selectItem(item);
    }
  }

  protected void selectItem(T item) {
    deselectAll();
    item.setSelected(true);
    selectedItem = item;
    selectedIndex = itemList.indexOf(selectedItem);

    lc.updateHorizontalScrollbar(item, scroll);
  }

  protected JTextField setEditable(final T item, String name) {
    final JTextField edit = new JTextField();
    edit.setText(name);
    edit.setSelectionStart(0);
    edit.setSelectionEnd(name.length());

    edit.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
            isEditing = false;
            doneEditing(item, edit.getText());
          }
        });

    edit.addKeyListener(
        new KeyListener() {
          @Override
          public void keyTyped(KeyEvent e) {}

          @Override
          public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
              isEditing = false;
              cancelEditing(item);
            }
          }

          @Override
          public void keyReleased(KeyEvent e) {}
        });

    isEditing = true;

    return edit;
  }

  protected abstract void doneEditing(T item, String text);

  protected abstract void cancelEditing(T item);

  static final Timer t = new Timer();

  public void handleKeyEvent(final KeyEvent e) {
    switch (e.getID()) {
      case KeyEvent.KEY_PRESSED:
        switch (e.getKeyCode()) {
          case KeyEvent.VK_ENTER:
            vkEnter();
            break;
          default:
            if (e.getKeyCode() != KeyEvent.VK_ESCAPE && e.getKeyCode() != KeyEvent.VK_BACK_SPACE) {
              if (e.getModifiers() == 0) {
                if (!search.hasFocus()) {
                  final Document d = search.getDocument();
                  final int pos = search.getCaretPosition();

                  // Avoid inserted character to be highlighted and
                  // wiped by succeeding keystrokes. hack.

                  TimerTask tt =
                      new TimerTask() {
                        @Override
                        public void run() {
                          EventQueue.invokeLater(
                              new Runnable() {
                                @Override
                                public void run() {
                                  try {
                                    d.insertString(pos, String.valueOf(e.getKeyChar()), null);
                                    search.setCaretPosition(search.getCaretPosition() + 1);
                                  } catch (BadLocationException e1) {
                                  } catch (IllegalArgumentException e2) {
                                  }
                                }
                              });
                        }
                      };

                  t.schedule(tt, 50);

                  search.setFocusable(true);
                  search.requestFocusInWindow();
                }
              }
            }
        }
        break;
    }
  }
}
  public void onCreate(final PlaylistActivity activity, Handler handler, final AbsListView list) {

    mPlaylistActivity = activity;
    mMusicManager = ManagerFactory.getMusicManager(this);
    mControlManager = ManagerFactory.getControlManager(this);
    mEventClient = ManagerFactory.getEventClientManager(this);
    mNowPlayingHandler = new Handler(this);

    if (!isCreated()) {
      super.onCreate(activity, handler, list);

      activity.registerForContextMenu(mList);

      mFallbackBitmap =
          BitmapFactory.decodeResource(activity.getResources(), R.drawable.icon_song_light);
      sPlayingBitmap = BitmapFactory.decodeResource(activity.getResources(), R.drawable.icon_play);

      mMusicManager.getPlaylistPosition(
          new DataResponse<Integer>() {
            public void run() {
              mCurrentPosition = value;
            }
          },
          mActivity.getApplicationContext());

      mMusicManager.getPlaylist(
          new DataResponse<ArrayList<String>>() {
            public void run() {
              if (value.size() > 0) {
                final ArrayList<PlaylistItem> items = new ArrayList<PlaylistItem>();
                int i = 0;
                for (String path : value) {
                  items.add(new PlaylistItem(path, i++));
                }
                setTitle(
                    "Music playlist ("
                        + (value.size() > MusicClient.PLAYLIST_LIMIT
                            ? MusicClient.PLAYLIST_LIMIT + "+"
                            : value.size())
                        + ")");
                mSongAdapter = new SongAdapter(activity, items);
                mList.setAdapter(mSongAdapter);
                if (mCurrentPosition >= 0) {
                  mList.setSelection(mCurrentPosition);
                }
              } else {
                setTitle("Music playlist");
                setNoDataMessage("No tracks in playlist.", R.drawable.icon_playlist_dark);
              }
            }
          },
          mActivity.getApplicationContext());
      mList.setOnItemClickListener(
          new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              final PlaylistItem item =
                  (PlaylistItem) mList.getAdapter().getItem(((OneLabelItemView) view).position);
              final DataResponse<Boolean> doNothing = new DataResponse<Boolean>();
              mControlManager.setPlaylistId(
                  doNothing, mPlayListId < 0 ? 0 : mPlayListId, mActivity.getApplicationContext());
              mMusicManager.setPlaylistSong(
                  doNothing, item.position, mActivity.getApplicationContext());
            }
          });
      mList.setOnKeyListener(new ListControllerOnKeyListener<Song>());
      setTitle("Music playlist...");
    }
  }