diff options
Diffstat (limited to 'sh_dummy_content.c')
-rw-r--r-- | sh_dummy_content.c | 596 |
1 files changed, 0 insertions, 596 deletions
diff --git a/sh_dummy_content.c b/sh_dummy_content.c deleted file mode 100644 index 1ccfe9e..0000000 --- a/sh_dummy_content.c +++ /dev/null @@ -1,596 +0,0 @@ -/*******************************************************************/ -/*! \file content_interface.cpp - * \brief Data Objects for content (e.g. mp3 files, movies) - * for the vdr muggle plugindatabase - ******************************************************************** - * \version $Revision: 1.3 $ - * \date $Date: 2004/02/02 22:48:04 $ - * \author Ralf Klueber, Lars von Wedel, Andreas Kellner - * \author file owner: $Author: MountainMan $ - * - * DUMMY - * - * - * Dummy artists: Artist_1, Artist_2, Artist_3 - * Dummy albums by ArtistX: Album_X1, .... AlbumX3 - * Dummy Tracks On Album_XY: Track_XY1,... Track_XY5 - * - */ -/*******************************************************************/ -#define DEBUG - -#include "sh_dummy_content.h" -#include "mg_tools.h" - -#include <strstream> -#include <string> -#define GD_PLAYLIST_TYPE 0 // listtype for giant disc db - -// some dummies to keep the compiler happy -#define DUMMY_CONDITION true // we use that as dummy condition to satisfy C++ syntax -#define DUMMY -#define NUM_ARTISTS 5 -#define NUM_ALBUMS_PER_ARTIST 3 -#define NUM_TRACKS_PER_ALBUM 9 - -int DummyInitDatabase(MYSQL *db){return 0;} -vector<string> *DummyGetStoredPlaylists(MYSQL db){ return new vector<string>();} - -/*******************************************************************/ -/* class mgTack */ -/********************************************************************/ -DummyTrack DummyTrack::UNDEFINED = DummyTrack(); - -/*! - ***************************************************************************** - * \brief Constructor: creates a DummyTrack obect - * - * \param sqlIdentifier identifies a unique row in the track database - * \param dbase database which stores the track table - * - * On creation, the object contains only the idea. The actual data fields - * are filled when readData() is called for the first time. - ****************************************************************************/ -DummyTrack::DummyTrack(int sqlIdentifier, MYSQL dbase) -{ - m_uniqID = sqlIdentifier; - char buf[255]; - - mgDebug(9, "Creating dumy track %d", sqlIdentifier); - // create dummy value based on the id - sprintf(buf, "ArtistName_%d", (int) m_uniqID / 100); - m_artist = buf; - sprintf(buf,"Album_%d", (int) m_uniqID / 10); - m_album = buf; - sprintf(buf,"Track_%d",m_uniqID); - m_title = buf; - sprintf(buf,"sourcefile_%d", m_uniqID); - m_mp3file = buf; - m_genre = "unknown_genre"; - m_year = 1970 + (m_uniqID%35); - m_rating = 2; - m_length = 180; -} - -/*! - ***************************************************************************** - * \brief copy constructor - * - ****************************************************************************/ -DummyTrack::DummyTrack(const DummyTrack& org) -{ - m_uniqID = org.m_uniqID; - m_db = org.m_db; - - mgDebug(9, - "Creating a TrackCopy for track '%s' (is this really necessary?", - org.m_title.c_str()); - - m_artist = org.m_artist; - m_title = org.m_title; - m_mp3file = org.m_mp3file; - m_album = org.m_album; - m_genre = org.m_genre; - m_year = org.m_year; - m_rating = org.m_rating; - -} - - -/*! - ***************************************************************************** - * \brief destructor - * - ****************************************************************************/ -DummyTrack::~DummyTrack() -{ - // nothing to be done -} - -/*! - ***************************************************************************** - * \brief returns value for _mp3file - ****************************************************************************/ -string DummyTrack::getSourceFile() -{ - return m_mp3file; -} - -/*! - ***************************************************************************** - * \brief returns value for m_title - ****************************************************************************/ -string DummyTrack::getTitle() -{ - return m_title; -} - -/*! - ***************************************************************************** - * \brief returns value for m_artist - ****************************************************************************/ -string DummyTrack::getArtist() -{ - return m_artist; -} -string DummyTrack::getLabel(int col) -{ - switch(col) - { - case 0: - return m_artist; - break; - case 1: - return m_title; - break; - default: - return ""; - } -} -string DummyTrack::getDescription() -{ - return m_artist + " - " + m_title; -} - -/*! - ***************************************************************************** - * \brief returns value for m_album - ****************************************************************************/ -string DummyTrack::getAlbum() -{ - return m_album; -} - -/*! - ***************************************************************************** - * \brief returns value for m_genre - ****************************************************************************/ -string DummyTrack::getGenre() -{ - return m_genre; -} - -/*! - ***************************************************************************** - * \brief returns value for m_year - ****************************************************************************/ -int DummyTrack::getYear() -{ - return m_year; -} - -/*! - ***************************************************************************** - * \brief returns value for m_rating - * - * If value has not been retrieved from the database, radData() is called first - ****************************************************************************/ -int DummyTrack::getRating() -{ - return m_rating; -} - -int DummyTrack::getDuration() -{ - return m_rating; -} - -/*! - ***************************************************************************** - * \brief sets the field for m_title to the specified value - * - * Note: The new value is not stored in the database. - * This is only done, when writeData() is called - ****************************************************************************/ -void DummyTrack::setTitle(string new_title) -{ - m_title = new_title; -} - -/*! - ***************************************************************************** - * \brief sets the field for m_artist to the specified value - * - * Note: The new value is not stored in the database. - * This is only done, when writeData() is called - ****************************************************************************/ -void DummyTrack::setArtist(string new_artist) -{ - m_artist = new_artist; -} - - -/*! - ***************************************************************************** - * \brief sets the field for m_album to the specified value - * - * Note: The new value is not stored in the database. - * This is only done, when writeData() is called - ****************************************************************************/ -void DummyTrack::setAlbum(string new_album) -{ - m_album = new_album; -} - - -/*! - ***************************************************************************** - * \brief sets the field for m_genre to the specified value - * - * Note: The new value is not stored in the database. - * This is only done, when writeData() is called - ****************************************************************************/ -void DummyTrack::setGenre(string new_genre) -{ - m_genre = new_genre; -} - - -/*! - ***************************************************************************** - * \brief sets the field for m_year to the specified value - * - * Note: The new value is not stored in the database. - * This is only done, when writeData() is called - ****************************************************************************/ -void DummyTrack::setYear(int new_year) -{ - m_year = new_year; -} - - -/*! - ***************************************************************************** - * \brief sets the field for m_rating to the specified value - * - * Note: The new value is not stored in the database. - * This is only done, when writeData() is called - ****************************************************************************/ -void DummyTrack::setRating(int new_rating) -{ - m_rating = new_rating; -} - - -/*! - ***************************************************************************** - * \brief stores current values in the sql database - * - * Note: At the moment, only the values stored directly in the 'tracks' - * database are updated - ****************************************************************************/ -bool DummyTrack::writeData() -{ - return true; -} - -DummyTracklist::DummyTracklist(MYSQL db_handle, string restrictions) -{ -} - -/*******************************************************************/ -/* class DummyPlaylist */ -/********************************************************************/ - -/*! - ***************************************************************************** - * \brief Constructor: opens playlist by name - * - * \param listname user-readable identifier of the paylist - * \param db_handl database which stores the playlist - * - * If the playlist does not yet exist, an empty playlist is created - ****************************************************************************/ -DummyPlaylist::DummyPlaylist(string listname, MYSQL db_handle) -{ - m_db = db_handle; - - // - // check, if the database really exists - // - if(listname =="EXISTS") - { - - m_author = "DUMMY_author"; - m_listname = listname; - createDummyPlaylist(1); - } - else - { - // new Playlist - m_author = "VDR"; - m_listname = listname; - - } - -} - -/*! - ***************************************************************************** - * \brief Constructor: construct playlist object from existing sql playlist - * - * \param sql_identifier: sql internal identifier for the playlist - * \param db_handl database which stores the playlist - * - * This constructor is typically used when a playlist is selected from an - * internal list of playlists - ****************************************************************************/ -DummyPlaylist::DummyPlaylist(unsigned int sql_identifier, MYSQL db_handle) -{ - m_db = db_handle; - char buf[256]; - - m_author = "DUMMY_author"; - sprintf(buf, "Dummylist_%d", sql_identifier); - m_listname = buf; - createDummyPlaylist(sql_identifier); -} - -void DummyPlaylist::createDummyPlaylist(int start) -{ - DummyTrack* trackptr; - for(int id=start; id < start+20; id++) - { - trackptr = new DummyTrack(id, m_db); - m_list.push_back(trackptr); - } -} - -/*! - ***************************************************************************** - * \brief empty destructor - * - * Nothing to be done. The actual data is stored in the sql db - ****************************************************************************/ -DummyPlaylist::~DummyPlaylist() -{ - // nothing to be done -} - -bool DummyPlaylist::storePlaylist() -{ - mgDebug(1, "Storing Playlist #%s'", m_listname.c_str()); - return true; -} -/*! - ***************************************************************************** - * \brief returns the total duration of all songs in the list in seconds - * - ****************************************************************************/ -int DummyPlaylist::getPlayTime() -{ - return m_list.size()* 180; -} - -/*! - ***************************************************************************** - * \brief returns the duration of all remaining songs in the list in seconds - * - ****************************************************************************/ -int DummyPlaylist::getPlayTimeRemaining() -{ - return 0; // dummy -} - -/*******************************************************************/ -/* class DummyTreeNode */ -/*******************************************************************/ - -DummyTreeNode::DummyTreeNode(MYSQL db, int view) - : mgSelectionTreeNode(db, view) -{ - // create a root node - // everything is done in the parent class - m_restriction ="1"; -} - -DummyTreeNode::DummyTreeNode(mgSelectionTreeNode* parent, - string id, string label, string restriction) - : mgSelectionTreeNode(parent, id, label) -{ - m_restriction = restriction; - // everything else is done in the parent class -} - - -/*! - ***************************************************************************** - * \brief destructor - * - ****************************************************************************/ -DummyTreeNode::~DummyTreeNode() -{ - m_children.clear(); -} - -/*! - ***************************************************************************** - * \brief checks if this node can be further expandded or not - * \true, if node ia leaf node, false if node can be expanded - * - ****************************************************************************/ -bool DummyTreeNode::isLeafNode() -{ - switch(m_view) - { - case 1: // artist -> album -> title - if( m_level <= 3 ) - { - return true; - } - break; - default: - mgError("View '%d' not yet implemented", m_view); - } - return false; -} - - -/*! - ***************************************************************************** - * \brief compute children on the fly - * - ****************************************************************************/ -bool DummyTreeNode::expand() -{ - char buf[20]; - if (m_expanded) - { - mgWarning("Node already expanded\n"); - return true; - } - m_expanded = true; - - mgDebug(5, "Expanding level %d\n", m_level); - switch(m_view) - { - case 1: // artist -> album -> title - if(m_level == 0) // root, expand artist - { - for(int artnum=1; artnum <= NUM_ARTISTS; artnum++) - { - sprintf(buf, "%d", artnum); - m_children.push_back(new DummyTreeNode(this, m_id+ (string) buf, - "Artist "+ (string)buf, - m_restriction + " AND album.artist='Artist "+(string) buf+"'")); - } - - } - else if(m_level == 1) // artist, expand album - { - // create album names in the form Album_x1, ... Album_x3 - // where x is the artist ID - // for normal usage: _restrictions should now hold: - // album.artist = XYZ - for(int albnum=1; albnum <= NUM_ALBUMS_PER_ARTIST; albnum++) - { - sprintf(buf, "%d", albnum); - - m_children.push_back(new DummyTreeNode(this, m_id+ (string) buf, - "Album_"+ m_id + (string) buf, - m_restriction + " AND track.sourceid='0x00"+ m_id + (string) buf +"'")); - } - break; - } - else if(m_level == 2) // artist -> album, expand title - { - // create track names in the form Track_xy1, ... Track_xy5 - // where x is the artist ID and y is the album id - // for normal usage: _restrictions should now hold: - // album.artist = ... AND track.sourceid='0x00XY - for(int tracknum=1; tracknum <= NUM_TRACKS_PER_ALBUM; tracknum++) - { - sprintf(buf, "%d", tracknum); - m_children.push_back(new DummyTreeNode(this, m_id+ (string) buf, - "Track_"+m_id+ (string) buf, - m_restriction + " AND track.id=tr"+ m_id + (string) buf + "'" )); - } - break; - } - else - { - mgWarning("View #%d level %d' not yet implemented", m_view, m_level); - m_expanded = false; - return false; - } - break; - default: - mgError("View '%d' not yet implemented", m_view); - } - mgDebug(5, "%d children expanded\n", m_children.size()); - return true; -} - -/*! - ***************************************************************************** - * \brief go over all children recursively to find the tracks - * - ****************************************************************************/ -vector<mgContentItem*>* DummyTreeNode::getTracks() -{ - vector<mgContentItem*>* dummy; - string sql; - - int artistnum; - int albumnum; - int tracknum; - dummy = new vector<mgContentItem*>(); - - sql = m_restriction; - mgDebug(5, "QUERY:\n%s\n", sql.c_str()); - - artistnum = 0; - do // artist_loop - { - if(m_level >=1) - artistnum = m_id[0]-'0'; // we have a unique artist - else - artistnum++; // we are in a loop - - albumnum = 0; - do // album_loop - { - if(m_level >=2) - albumnum = m_id[1]-'0'; // we have a unique album - else - albumnum++; // we are in a loop - - tracknum =0; - do // track_loop - { - if(m_level ==3) - tracknum = m_id[2]-'0'; // we have a unique track - else - tracknum++; // we are in a loop - dummy->push_back(new DummyTrack(artistnum*100+albumnum*10+tracknum, m_db)); - }while ((m_level < 3) && (tracknum< NUM_TRACKS_PER_ALBUM)); - }while ((m_level < 2) && (albumnum < NUM_ALBUMS_PER_ARTIST)); - }while ((m_level < 1) && (artistnum < NUM_ARTISTS )); - - return dummy; -} - -/*! - ***************************************************************************** - * \brief returns the first track matchin the restrictions of this node - * assuming we are in a leaf node, this returns the track represented by the - * the leaf - ****************************************************************************/ -mgContentItem* DummyTreeNode::getSingleTrack() -{ - // get all tracks satisying the restrictions of this node - mgDebug(5, "getTracks(): query '%s'", m_restriction.c_str()); - - mgContentItem* track = new DummyTrack(atoi(m_id.c_str()), m_db); - - return track; -} - -/* -------------------- begin CVS log --------------------------------- - * $Log: sh_dummy_content.c,v $ - * Revision 1.3 2004/02/02 22:48:04 MountainMan - * added CVS $Log - * - * - * --------------------- end CVS log ---------------------------------- - */ |