diff options
Diffstat (limited to 'mg_media.c')
-rw-r--r-- | mg_media.c | 453 |
1 files changed, 0 insertions, 453 deletions
diff --git a/mg_media.c b/mg_media.c deleted file mode 100644 index 2b25b73..0000000 --- a/mg_media.c +++ /dev/null @@ -1,453 +0,0 @@ -/*! \file mg_media.c - * \brief Top level access to media in vdr plugin muggle - * - * \version $Revision: 1.14 $ - * \date $Date$ - * \author Ralf Klueber, Lars von Wedel, Andreas Kellner - * \author Responsible author: $Author$ - */ - -/* makes sure we dont parse the same declarations twice */ -#include "mg_media.h" - -#include "mg_tools.h" -#include "mg_content_interface.h" - -#include "gd_content_interface.h" - -#include "vdr_setup.h" - - -//------------------------------------------------------------------- -// mgFilterSets -//------------------------------------------------------------------- -/*! - * \brief constructor - * - * constructor of the base class - */ - -mgFilterSets::mgFilterSets() -{ - // nothing to be done in the base class -} - -mgFilterSets::~mgFilterSets() -{ - std::vector<mgFilter*> *set; - for(std::vector<std::vector<mgFilter*>*>::iterator iter1 = m_sets.begin(); - iter1 != m_sets.end(); iter1++) - { - set = *iter1; - for(std::vector<mgFilter*>::iterator iter2 = set->begin(); - iter2 != set->end(); iter2++) - { - delete (*iter2); - } - set->clear(); - delete set; - } - m_sets.clear(); -} -/*! - ******************************************************************* - * \brief returns the number of available sets - ********************************************************************/ -int mgFilterSets::numSets() -{ - return m_sets.size(); -} - - /*! - ******************************************************************* - * \brief proceeds to the next one in a circular fashion - ********************************************************************/ -void mgFilterSets::nextSet() -{ - m_activeSetId++; - if(m_activeSetId >= (int) m_sets.size()) - { - m_activeSetId = 0; - } - m_activeSet = m_sets[m_activeSetId]; -} - // - -/*! - ******************************************************************* - * \brief activates a specific set by index - * - * \par n : index of the set to be activated - * - * If n is not a valid filter set, the first set (index 0 ) is activated - ********************************************************************/ -void mgFilterSets::select(int n) -{ - m_activeSetId = n ; - if(m_activeSetId >= (int) m_sets.size()) - { - m_activeSetId = 0; - } - m_activeSet = m_sets[m_activeSetId]; - -} - - /*! - ******************************************************************* - * \brief restores the default values for all filter values in the active set - ********************************************************************/ - void mgFilterSets::clear() -{ - for(std::vector<mgFilter*>::iterator iter = m_activeSet->begin(); - iter != m_activeSet->end(); iter++) - { - (*iter)->clear(); - } -} - /*! - ******************************************************************* - * \brief stores the current filter values - ********************************************************************/ - void mgFilterSets::accept() -{ - for(std::vector<mgFilter*>::iterator iter = m_activeSet->begin(); - iter != m_activeSet->end(); iter++) - { - (*iter)->store(); - } -} - -/*! - ******************************************************************* - * \brief returns the active filter set to the application - * - * the application may temporarily modify the filter values - * accept() needs to be called to memorize the changed values - ********************************************************************/ - std::vector<mgFilter*> *mgFilterSets::getFilters() -{ - for(std::vector<mgFilter*>::iterator iter = m_activeSet->begin(); - iter != m_activeSet->end(); iter++) - { - (*iter)->restore(); - } - return m_activeSet; -} - - -/*! - * \brief return title of the active filter set - */ -std::string mgFilterSets::getTitle() -{ - if(m_activeSetId < (int) m_titles.size()) - { - return m_titles[m_activeSetId]; - } - else - { - mgWarning("Implementation error: No title std::string for filter set %d", - m_activeSetId); - return "NO-TITLE"; - } -} - -/*! - * \class mgMedia - * - * \brief mein class to access content in the vdr plugin muggle - */ -mgMedia::mgMedia(contentType mediatype) -{ - int errval = 0; - m_filters = NULL; - m_mediatype = mediatype; - m_sql_filter = "1"; - m_defaultView = 1; - - // now initialize the database - mgDebug(1, "Media Type %sselected", getMediaTypeName().c_str()); - switch(m_mediatype) - { - case GD_MP3: - { - errval = GdInitDatabase(&m_db); - mgDebug(3, "Successfully connected to sql database %s", the_setup.DbName ); - } - } - if(errval < 0) - { - mgError("Error connecting to database\n"); - } - - mgDebug(3, "Initializing track filters"); - switch(m_mediatype) - { - case GD_MP3: - { - errval = GdInitDatabase( &m_db ); // TODO: why duplicate this? LVW - mgDebug(3, "Successfully conntected to sql database %s", the_setup.DbName ); - } - } -} - -mgMedia::~mgMedia() -{ - if( m_filters ) - { - delete m_filters; - } -} - -std::string mgMedia::getMediaTypeName() -{ - switch(m_mediatype) - { - case GD_MP3: - { - return "GiantDisc"; - } break; - } - mgError("implementation Error"); // we should never get here - return ""; -} - -mgSelectionTreeNode* mgMedia::getSelectionRoot() -{ - switch(m_mediatype) - { - case GD_MP3: - return new GdTreeNode(m_db, m_defaultView, m_sql_filter); - } - mgError("implementation Error"); // we should never get here - return NULL; -} - -mgPlaylist* mgMedia::createTemporaryPlaylist() -{ - std::string tmpname = "current"; - return loadPlaylist( tmpname ); -} - -mgPlaylist* mgMedia::loadPlaylist(std::string name) -{ - mgPlaylist *list; - switch( m_mediatype ) - { - case GD_MP3: - { - list = new GdPlaylist( name, m_db ); - list->setDisplayColumns(getDefaultCols()); - - return list; - } break; - } - mgError("Implementation error: Unknown media type"); // we should never get here - return NULL; -} - -/*! - * \brief Obtain a list of stored playlists - */ -std::vector<std::string> *mgMedia::getStoredPlaylists() -{ - switch(m_mediatype) - { - case GD_MP3: - { - return GdGetStoredPlaylists( m_db ); - } break; - } - mgError("implementation Error"); // we should never get here - return new std::vector<std::string>(); -} - -/*! - * \brief obtain the indices of columns which are presented by default - */ -std::vector<int> mgMedia::getDefaultCols() -{ - std::vector<int> cols; - switch(m_mediatype) - { - case GD_MP3: - { - cols.push_back(1); // artist - cols.push_back(0); // track - - return cols; - } break; - } - mgError("implementation Error"); // we should never get here - - return cols; -} - -/*! - * \brief - */ -mgTracklist* mgMedia::getTracks() -{ - mgTracklist *tracks; - switch(m_mediatype) - { - case GD_MP3: - tracks = new GdTracklist(m_db, m_sql_filter); - tracks->setDisplayColumns(getDefaultCols()); - return tracks; - } - mgError("implementation Error"); // we should never get here - - return NULL; -} - -/*! - * \brief creates FiliterSetObject for the selected media type - * and activates set n (if available) - */ -void mgMedia::initFilterSet(int num) -{ - switch(m_mediatype) - { - case GD_MP3: - { - m_filters = new gdFilterSets(); - m_filters->select(num); - } break; - } -} - -/*! - ******************************************************************* - * \brief returns pointer to the activen filter set to be modified by the osd - * - * Note: Modifications become only effective by calling applyActiveFilter() - ********************************************************************/ -std::vector<mgFilter*> *mgMedia::getActiveFilters() -{ - if(!m_filters) - { - mgError("ImplementationError: getActiveFilters m_filters == NULL"); - } - return m_filters->getFilters(); -} - -/*! - * \brief returns title of the active filter set - */ -std::string mgMedia::getActiveFilterTitle() -{ - - switch(m_mediatype) - { - case GD_MP3: - { - if( !m_filters ) - { - mgError("ImplementationError:getActiveFilterTitle m_filters == NULL"); - } - return m_filters->getTitle(); - } break; - } - return ""; -} - -/*! - * \brief proceeds to the next filter set in a cirlucar fashion - */ -void mgMedia::nextFilterSet() -{ - if(!m_filters) - { - mgError("ImplementationError: nextFilterSet m_filters == NULL"); - } - m_filters->nextSet(); -} - -/*! - * \brief clears the current filter values and restores defaults - */ -void mgMedia::clearActiveFilter() -{ - if( !m_filters ) - { - mgError("ImplementationError: clearActiveFilter m_filters == NULL"); - } - m_filters->clear(); -} - -/*! - * \brief Applies the active filter set and returns a root node for the - * selection in the default view for this filter set - */ -mgSelectionTreeNode* mgMedia::applyActiveFilter() -{ - int view; - GdTreeNode* node; - - switch(m_mediatype) - { - case GD_MP3: - { - if(!m_filters) - { - mgError("ImplementationError: applyActiveFilter() m_filters == NULL"); - } - m_filters->accept(); - m_sql_filter = m_filters->computeRestriction(&view); - node = new GdTreeNode(m_db, view, m_sql_filter); - node->expand(); - return node->getChildren()[0]; - } break; - } - return NULL; -} - - -/* -------------------- begin CVS log --------------------------------- - * $Log: mg_media.c,v $ - * Revision 1.14 2004/07/29 06:17:40 lvw - * Added todo entries - * - * Revision 1.13 2004/05/28 15:29:18 lvw - * Merged player branch back on HEAD branch. - * - * Revision 1.12 2004/02/23 16:30:58 RaK - * - album search error because of i18n corrected - * - * Revision 1.11 2004/02/12 09:15:07 LarsAC - * Moved filter classes into separate files - * - * Revision 1.10.2.3 2004/05/25 00:10:45 lvw - * Code cleanup and added use of real database source files - * - * Revision 1.10.2.2 2004/03/14 17:57:30 lvw - * Linked against libmad. Introduced config options into code. - * - * Revision 1.10.2.1 2004/03/02 07:05:50 lvw - * Initial adaptations from MP3 plugin added (untested) - * - * Revision 1.12 2004/02/23 16:30:58 RaK - * - album search error because of i18n corrected - * - * Revision 1.11 2004/02/12 09:15:07 LarsAC - * Moved filter classes into separate files - * - * Revision 1.10 2004/02/10 23:47:23 RaK - * - views konsitent gemacht. siehe FROMJOIN - * - isLeafNode angepasst fuer neue views 4,5,100,101 - * - like '%abba%' eingebaut - * - filter ist default mit abba gefuellt, zum leichteren testen. - * - search results werden jetzt gleich im ROOT expanded - * - * Revision 1.9 2004/02/09 19:27:52 MountainMan - * filter set implemented - * - * Revision 1.8 2004/02/02 23:33:41 MountainMan - * impementation of gdTrackFilters - * - * Revision 1.7 2004/02/02 22:48:04 MountainMan - * added CVS $Log - * - * --------------------- end CVS log ---------------------------------- - */ |