diff options
Diffstat (limited to 'mg_content.c')
-rw-r--r-- | mg_content.c | 351 |
1 files changed, 0 insertions, 351 deletions
diff --git a/mg_content.c b/mg_content.c deleted file mode 100644 index 5ab6874..0000000 --- a/mg_content.c +++ /dev/null @@ -1,351 +0,0 @@ -/*! - * \file mg_selection.c - * \brief A general interface to data items, currently only GiantDisc - * - * \version $Revision: 1.0 $ - * \date $Date: 2004-12-07 10:10:35 +0200 (Tue, 07 Dec 2004) $ - * \author Wolfgang Rohdewald - * \author Responsible author: $Author: wr $ - * - */ - -#include <sys/types.h> -#include <sys/stat.h> -#include <unistd.h> -#include "i18n.h" -#include <tools.h> -#include "mg_selection.h" -#include "mg_setup.h" -#include "mg_tools.h" - - -mgListItem zeroitem; - -mgListItem::mgListItem() -{ - m_valid=false; - m_count=0; -} - -mgListItem::mgListItem(string v,string i,unsigned int c) -{ - set(v,i,c); -} - -void -mgListItem::set(string v,string i,unsigned int c) -{ - m_valid=true; - m_value=v; - m_id=i; - m_count=c; -} - -void -mgListItem::operator=(const mgListItem& from) -{ - m_valid=from.m_valid; - m_value=from.m_value; - m_id=from.m_id; - m_count=from.m_count; -} - -void -mgListItem::operator=(const mgListItem* from) -{ - m_valid=from->m_valid; - m_value=from->m_value; - m_id=from->m_id; - m_count=from->m_count; -} - -bool -mgListItem::operator==(const mgListItem& other) const -{ - return m_value == other.m_value - && m_id == other.m_id; -} - -mgListItem* -mgContentItem::getKeyItem(mgKeyTypes kt) -{ - string val; - string id; - if (m_trackid>=0) - { - switch (kt) { - case keyGenres: - case keyGenre1: - case keyGenre2: - case keyGenre3: val = getGenre();id=m_genre1_id;break; - case keyArtist: val = id = getArtist();break; - case keyArtistABC: val = id = getArtist()[0];break; - case keyAlbum: val = id = getAlbum();break; - case keyYear: val = id = string(ltos(getYear()));break; - case keyDecade: val = id = string(ltos(int((getYear() % 100) / 10) * 10));break; - case keyTitle: val = id = getTitle();break; - case keyTitleABC: val = id = getTitle()[0];break; - case keyTrack: val = id = getTitle();break; - case keyLanguage: val = getLanguage();id=m_language_id ; break; - case keyRating: val = id = getRating();break; - case keyFolder1: - case keyFolder2: - case keyFolder3: - case keyFolder4: - { - char *folders[4]; - char *fbuf=SeparateFolders(m_mp3file.c_str(),folders,4); - val = id = folders[int(kt)-int(keyFolder1)]; - free(fbuf); - break; - } - default: return new mgListItem; - } - } - return new mgListItem(val,id); -} - - -string mgContentItem::getGenre () const -{ - string result=""; - if (m_genre1!="NULL") - result = m_genre1; - if (m_genre2!="NULL") - { - if (!result.empty()) - result += "/"; - result += m_genre2; - } - return result; -} - - -string mgContentItem::getLanguage() const -{ - return m_language; -} - -string mgContentItem::getBitrate () const -{ - return m_bitrate; -} - - -string mgContentItem::getImageFile () const -{ - return "Name of Imagefile"; -} - - -string mgContentItem::getAlbum () const -{ - return m_albumtitle; -} - - -int mgContentItem::getYear () const -{ - return m_year; -} - - -int mgContentItem::getRating () const -{ - return m_rating; -} - - -int mgContentItem::getDuration () const -{ - return m_duration; -} - - -int mgContentItem::getSampleRate () const -{ - return m_samplerate; -} - - -int mgContentItem::getChannels () const -{ - return m_channels; -} - -mgContentItem::mgContentItem () -{ - m_valid = true; - m_validated = false; - m_trackid = -1; -} - -mgContentItem::mgContentItem (const mgContentItem* c) -{ - m_valid = true; - m_validated = false; - m_trackid = c->m_trackid; - m_title = c->m_title; - m_mp3file = c->m_mp3file; - m_artist = c->m_artist; - m_albumtitle = c->m_albumtitle; - m_genre1_id = c->m_genre1_id; - m_genre2_id = c->m_genre2_id; - m_genre1 = c->m_genre1; - m_genre2 = c->m_genre2; - m_language = c->m_language; - m_language_id = c->m_language_id; - m_bitrate = c->m_bitrate; - m_year = c->m_year; - m_rating = c->m_rating; - m_duration = c->m_duration; - m_samplerate = c->m_samplerate; - m_channels = c->m_channels; -} - -bool -mgContentItem::Valid() const -{ - if (!m_validated) - { - getSourceFile(); // sets m_valid as a side effect - m_validated=true; - } - return m_valid; -} - -static bool music_dir_exists[100]; -static bool music_dirs_scanned=false; - -bool -mgContentItem::readable(string filename) const -{ - return !access(filename.c_str(),R_OK); -} - -string -mgContentItem::getSourceFile(bool AbsolutePath) const -{ - string tld = the_setup.ToplevelDir; - string result = m_mp3file; - if (m_validated && !m_valid) - return m_mp3file; - if (!readable(tld+result)) - { - result.clear(); - if (!music_dirs_scanned) - { - for (unsigned int i =0 ; i < 100 ; i++) - { - struct stat stbuf; - char *dir; - asprintf(&dir,"%s%02d",tld.c_str(),i); - music_dir_exists[i]=!stat(dir,&stbuf); - free(dir); - } - music_dirs_scanned=true; - } - for (unsigned int i =0 ; i < 100 ; i++) - { - if (!music_dir_exists[i]) - continue; - char *file; - asprintf(&file,"%02d/%s",i,m_mp3file.c_str()); - if (readable(tld+file)) - { - m_mp3file = file; - result = m_mp3file; - } - free(file); - if (!result.empty()) - break; - } - } - if (result.empty()) - { - char *b=0; - int nsize = m_mp3file.size(); - if (nsize<30) - asprintf(&b,tr("%s not readable"),m_mp3file.c_str()); - else - asprintf(&b,tr("%s..%s not readable"),m_mp3file.substr(0,20).c_str(),m_mp3file.substr(nsize-20).c_str());; - extern void showmessage(const char*,int duration=0); - showmessage(b); - free(b); - esyslog ("ERROR: cannot stat %s. Meaning not found, not a valid file, or no access rights", m_mp3file.c_str ()); - m_valid = false; - return m_mp3file; - } - if (AbsolutePath) - result = tld + result; - return result; -} - -mgContentItem::mgContentItem (const MYSQL_ROW row) -{ - m_valid = true; - m_validated = false; - m_trackid = atol (row[0]); - if (row[1]) - m_title = row[1]; - else - m_title = "NULL"; - if (row[2]) - m_mp3file = row[2]; - else - m_mp3file = "NULL"; - if (row[3]) - m_artist = row[3]; - else - m_artist = "NULL"; - if (row[4]) - m_albumtitle = row[4]; - else - m_albumtitle = "NULL"; - if (row[5]) - { - m_genre1_id = row[5]; - m_genre1 = KeyMaps.value(keyGenres,row[5]); - } - else - m_genre1 = "NULL"; - if (row[6]) - { - m_genre2_id = row[6]; - m_genre2 = KeyMaps.value(keyGenres,row[6]); - } - else - m_genre2 = "NULL"; - if (row[7]) - m_bitrate = row[7]; - else - m_bitrate = "NULL"; - if (row[8]) - m_year = atol (row[8]); - else - m_year = 0; - if (row[9]) - m_rating = atol (row[9]); - else - m_rating = 0; - if (row[10]) - m_duration = atol (row[10]); - else - m_duration = 0; - if (row[11]) - m_samplerate = atol (row[11]); - else - m_samplerate = 0; - if (row[12]) - m_channels = atol (row[12]); - else - m_channels = 0; - if (row[13]) - { - m_language_id = row[13]; - m_language = KeyMaps.value(keyLanguage,row[13]); - } - else - m_language_id = "NULL"; -}; - |