sk.baka.ambient.activity.main.cb
Class AbstractCollectionController

java.lang.Object
  extended by sk.baka.ambient.activity.main.AbstractController
      extended by sk.baka.ambient.activity.main.AbstractListController
          extended by sk.baka.ambient.activity.main.cb.AbstractCollectionController
All Implemented Interfaces:
ILibraryListener, IGestureListViewListener
Direct Known Subclasses:
AmpacheController, CollectionController, MagnatuneController

public abstract class AbstractCollectionController
extends AbstractListController
implements ILibraryListener

Controller which displays a collection browser on given list view and allows user to navigate it using gestures.

The controller listens on two actions:

  • Author:
    Martin Vysny

    Nested Class Summary
     
    Nested classes/interfaces inherited from class sk.baka.ambient.activity.main.AbstractController
    AbstractController.Listener
     
    Field Summary
    protected  ICollection collection
              The collection to display the data from.
     
    Fields inherited from class sk.baka.ambient.activity.main.AbstractListController
    highlightColor, listView
     
    Fields inherited from class sk.baka.ambient.activity.main.AbstractController
    app, cycle, listener, mainActivity, mainView
     
    Constructor Summary
    AbstractCollectionController(int mainViewId, int listViewId, Activity mainActivity, GesturesListView playlistView, ICollection collection, int categoryPathId)
              Creates new controller instance.
     
    Method Summary
     boolean canComputeItems()
              Checks if the model currently supports computing tracks.
     boolean canHighlight()
              Checks if we can start highlight mode now.
     List<TrackMetadataBean> computeTracks(Interval highlight)
               Retrieve a list of tracks from the selection.
     void coverLoaded(TrackMetadataBean track)
              A cover for given track has been successfully downloaded.
     void destroy()
              The controller is about to be destroyed.
     String getHint(Interval highlight)
               Returns a very short and simple string representation of the selected contents.
     boolean isComputeTracksLong(Interval interval)
               Checks if the IGestureListViewListener.computeTracks(Interval) method will be a long operation.
     boolean isComputeTracksOnlineOp(Interval interval)
               Checks if the IGestureListViewListener.computeTracks(Interval) method will involve polling of some data from the Internet.
     boolean isReadOnly()
              Checks if the list view is currently read-only.
     void itemActivated(int index, Object model)
              The item was activated, either by clicking on it or using a keyboard.
     void libraryUpdate(boolean updateStarted, boolean interrupted, boolean userNotified)
              Informs that the file rescan is complete and the database is updated.
     void lyricsLoaded(TrackMetadataBean track, List<LyrdbTrack> lyrics)
              A lyrics event.
    protected  void onAction(ActionsEnum action)
              Called when an action button is pressed.
    protected  void recomputeListItems()
              Recomputes the model.
    protected  void refetchData()
              Updates the data which is currently being shown.
     void removeItems(Interval remove)
               Remove these items from the list.
    protected  void reset()
              Resets the controller and shows the first manager, the GroupingManager.
     void update(GesturesListView listView, View itemView, int index, Object model)
              An item view is being drawn (or re-drawn) on screen.
    protected  void updateData()
              Updates data shown in the controller.
     
    Methods inherited from class sk.baka.ambient.activity.main.AbstractListController
    dropItems, getClipboard, highlightChanged, moveItems, moveItemsByOne, performZoom, setClipboard, update
     
    Methods inherited from class sk.baka.ambient.activity.main.AbstractController
    equals, flipVisibility, hashCode, hide, initButtonBar, initButtonBar, initButtonBar, isDestroyed, isVisible, isZoomed, setVisibility, show, visibilityChanged, zoom
     
    Methods inherited from class java.lang.Object
    clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
     

    Field Detail

    collection

    protected final ICollection collection
    The collection to display the data from.

    Constructor Detail

    AbstractCollectionController

    public AbstractCollectionController(int mainViewId,
                                        int listViewId,
                                        Activity mainActivity,
                                        GesturesListView playlistView,
                                        ICollection collection,
                                        int categoryPathId)
    Creates new controller instance. Subclasses should invoke updateData() in the constructor to update the display.

    Parameters:
    mainViewId - the view whose visibility is controlled.
    listViewId - the id of the GesturesListView
    mainActivity - the main activity instance.
    playlistView - the playlist view - target of drag'n'drop operations.
    collection - the collection to display the data from.
    categoryPathId - the ID of TextView which will display current category path.
    Method Detail

    destroy

    public void destroy()
    Description copied from class: AbstractController
    The controller is about to be destroyed. No invocations are performed after this call. The controller should release its resources, stop its activities etc. Make sure that you call super() if you override this method!

    Overrides:
    destroy in class AbstractListController

    reset

    protected final void reset()
    Resets the controller and shows the first manager, the GroupingManager.


    canHighlight

    public final boolean canHighlight()
    Description copied from interface: IGestureListViewListener
    Checks if we can start highlight mode now.

    Specified by:
    canHighlight in interface IGestureListViewListener
    Overrides:
    canHighlight in class AbstractListController
    Returns:
    true if highlight mode can be started, false otherwise.

    itemActivated

    public void itemActivated(int index,
                              Object model)
    Description copied from interface: IGestureListViewListener
    The item was activated, either by clicking on it or using a keyboard.

    Specified by:
    itemActivated in interface IGestureListViewListener
    Parameters:
    index - the index of the item.
    model - the model for the item.

    removeItems

    public void removeItems(Interval remove)
    Description copied from interface: IGestureListViewListener

    Remove these items from the list. The list view sets the highlight automatically to zero interval.

    This operation is invoked even when IGestureListViewListener.isReadOnly() returns false as some use cases activates a "Go Back" activity instead of deleting items.

    Specified by:
    removeItems in interface IGestureListViewListener
    Overrides:
    removeItems in class AbstractListController
    Parameters:
    remove - remove these items. The interval is not null however it may be empty.

    refetchData

    protected final void refetchData()
    Updates the data which is currently being shown.


    onAction

    protected void onAction(ActionsEnum action)
    Description copied from class: AbstractController
    Called when an action button is pressed. By default invokes main activity. Subclasses can override.

    Overrides:
    onAction in class AbstractController
    Parameters:
    action - the action to take

    recomputeListItems

    protected final void recomputeListItems()
    Description copied from class: AbstractListController
    Recomputes the model. You don't have to call the ModelHolder.notifyModified() - it is called automatically after the method finishes.

    Specified by:
    recomputeListItems in class AbstractListController

    update

    public void update(GesturesListView listView,
                       View itemView,
                       int index,
                       Object model)
    Description copied from interface: IGestureListViewListener
    An item view is being drawn (or re-drawn) on screen. The implementation should correctly set the view contents, based on the model object. The model object is taken from the GesturesListView.getModel() list. The only exception is the EOP special item. For more information please read here.

    Specified by:
    update in interface IGestureListViewListener
    Parameters:
    listView - the listview containing the view
    itemView - the view representing a single item
    index - the index in the GesturesListView.getModel() list. May point outside of the model list only when drawing an EOP item.
    model - The model object, taken from the GesturesListView.getModel() list. This value may optionally be the MutableListAdapter.EOP_MODEL_MARKER object - in this case the special EndOfPlaylist item must be drawn.

    updateData

    protected final void updateData()
    Updates data shown in the controller.


    computeTracks

    public final List<TrackMetadataBean> computeTracks(Interval highlight)
    Description copied from interface: IGestureListViewListener

    Retrieve a list of tracks from the selection. This operation may not be invoked from the handler's thread (depending on the result of the IGestureListViewListener.isComputeTracksLong(Interval) method). The method implementation should thus periodically check for the interrupted flag. When interrupted, it should return an empty list or null ASAP. It may do so by throwing an exception

    If the method is invoked in a non-handler thread the callee wraps the result in a thread-safe list.

    The method may throw RuntimeException - it will be caught and displayed unless the thread is interrupted.

    This method is only invoked when IGestureListViewListener.canComputeItems() returns true.

    Specified by:
    computeTracks in interface IGestureListViewListener
    Overrides:
    computeTracks in class AbstractListController
    Parameters:
    highlight - the selection
    Returns:
    a list of tracks, must not be null.

    isComputeTracksLong

    public final boolean isComputeTracksLong(Interval interval)
    Description copied from interface: IGestureListViewListener

    Checks if the IGestureListViewListener.computeTracks(Interval) method will be a long operation. If yes, then the operation will be run in new thread. If not, the operation will be run in handler event thread.

    This method is only invoked when IGestureListViewListener.canComputeItems() returns true.

    Specified by:
    isComputeTracksLong in interface IGestureListViewListener
    Overrides:
    isComputeTracksLong in class AbstractListController
    Parameters:
    interval - the selection
    Returns:
    true if long operation, false otherwise.

    isComputeTracksOnlineOp

    public boolean isComputeTracksOnlineOp(Interval interval)
    Description copied from interface: IGestureListViewListener

    Checks if the IGestureListViewListener.computeTracks(Interval) method will involve polling of some data from the Internet.

    This method is only invoked when IGestureListViewListener.canComputeItems() returns true.

    Specified by:
    isComputeTracksOnlineOp in interface IGestureListViewListener
    Overrides:
    isComputeTracksOnlineOp in class AbstractListController
    Parameters:
    interval - the selection
    Returns:
    true if some Internet resources will be polled, false otherwise.

    getHint

    public String getHint(Interval highlight)
    Description copied from interface: IGestureListViewListener

    Returns a very short and simple string representation of the selected contents.

    This method is only invoked when IGestureListViewListener.canComputeItems() returns true.

    Specified by:
    getHint in interface IGestureListViewListener
    Overrides:
    getHint in class AbstractListController
    Parameters:
    highlight - the highlighted items.
    Returns:
    short description of selected contents. May be null if no hint should be shown.

    isReadOnly

    public final boolean isReadOnly()
    Description copied from interface: IGestureListViewListener
    Checks if the list view is currently read-only.

    Specified by:
    isReadOnly in interface IGestureListViewListener
    Overrides:
    isReadOnly in class AbstractListController
    Returns:
    true if the view cannot be modified, false otherwise.

    canComputeItems

    public final boolean canComputeItems()
    Description copied from interface: IGestureListViewListener
    Checks if the model currently supports computing tracks. This also affects the drag'n'drop capability - we cannot drag'n'drop if a track list cannot be computed.

    Specified by:
    canComputeItems in interface IGestureListViewListener
    Overrides:
    canComputeItems in class AbstractListController
    Returns:
    true if the model can compute tracks, false otherwise.

    coverLoaded

    public void coverLoaded(TrackMetadataBean track)
    Description copied from interface: ILibraryListener
    A cover for given track has been successfully downloaded. Note that if the cache size is set to a very small value the image may already be purged from the cache. To avoid this either set a sensible cache size value, e.g. 128kb, or turn off the image downloading by setting offline mode to true.

    Specified by:
    coverLoaded in interface ILibraryListener
    Parameters:
    track - the track.

    libraryUpdate

    public void libraryUpdate(boolean updateStarted,
                              boolean interrupted,
                              boolean userNotified)
    Description copied from interface: ILibraryListener
    Informs that the file rescan is complete and the database is updated. Invoked in Scanner thread.

    Specified by:
    libraryUpdate in interface ILibraryListener
    Parameters:
    updateStarted - if true then the library update just started. If false then the update finished.
    interrupted - if true then the scan was interrupted.
    userNotified - if true then the user is already notified about the library being updated.

    lyricsLoaded

    public void lyricsLoaded(TrackMetadataBean track,
                             List<LyrdbTrack> lyrics)
    Description copied from interface: ILibraryListener
    A lyrics event. Either lyrics for given track has been successfully downloaded or user needs to select one from given lyrics list.

    Specified by:
    lyricsLoaded in interface ILibraryListener
    Parameters:
    track - the track.
    lyrics - if non-null then user needs to select the correct karaoke from this list. The list may be empty - in this case no karaoke files are available. If null then the karaoke file is available locally. If non-null and is empty then no karaoke files are available.


    Copyright © 2007-2008. All Rights Reserved.