/**
* This work is licensed under the Creative Commons Attribution-NonCommercial-
* NoDerivs 3.0 Unported License. To view a copy of this license, visit
* http://creativecommons.org/licenses/by-nc-nd/3.0/ or send a letter to
* Creative Commons, 444 Castro Street, Suite 900, Mountain View, California,
* 94041, USA.
*
* Use of this work is permitted only in accordance with license rights granted.
* Materials provided "AS IS"; no representations or warranties provided.
*
* Copyright � 2012 Marcus Parkkinen, Aki K�kel�, Fredrik �hs.
**/
package edu.chalmers.dat255.audiobookplayer.interfaces;
import edu.chalmers.dat255.audiobookplayer.model.Track;
/**
* Used to assert that implementing classes can handle updates on Book
* instances.
*
* @author Aki K�kel�
* @version 0.6
*
*/
public interface IBookUpdates extends ITrackUpdates {
/**
* Add a track to the list.
*
* @param t
* Track to add.
*/
void addTrack(Track t);
/**
* Removes a track from the collection on the specified index.
*
* @param index
* Index of the track to remove.
*/
void removeTrack(int index);
/**
* Swaps the position of two tracks in the list.
*
* @param firstIndex
* First index to swap.
* @param secondIndex
* Second index to swap.
*/
void swapTracks(int firstIndex, int secondIndex);
/**
* Move a track from a given index to a given index. Indices inbetween will
* be adjusted.
*
* @param from
* Index to move from.
* @param to
* Index to move to.
*/
void moveTrack(int from, int to);
/**
* Sets the track index of the book. Can be set to "-1", which means
* 'deselected.'
* <p>
* Must be set to integers greater than or equal to -1.
*
* @param index
* Index to select.
*/
void setSelectedTrackIndex(int index);
/**
* Sets the title of the book.
*
* @param newTitle
* The new title to set.
*/
void setSelectedBookTitle(String newTitle);
/**
* Gets the title of the book.
*
* @return The title of the book.
*/
String getSelectedBookTitle();
/**
* Returns the author of the selected book.
*
* @return The author of the selected book.
*/
String getSelectedBookAuthor();
/**
* Updates the duration of the book to the sum of the duration of its
* tracks.
*/
void updateSelectedBookDuration();
}