summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwr61 <wr61@e10066b5-e1e2-0310-b819-94efdf66514b>2005-02-20 12:15:09 +0000
committerwr61 <wr61@e10066b5-e1e2-0310-b819-94efdf66514b>2005-02-20 12:15:09 +0000
commit825586656f62847a44329e39d0ba2684f86bdbbe (patch)
treec667030783f50a2dfbc192175da981609be1e8c3
parent4e6dd27b393de80b5da48a589d662b41c3e47c89 (diff)
downloadvdr-plugin-muggle-825586656f62847a44329e39d0ba2684f86bdbbe.tar.gz
vdr-plugin-muggle-825586656f62847a44329e39d0ba2684f86bdbbe.tar.bz2
sort by folder, show track counts, use shuttle/loop from setup, separate mg_setup from vdr_setup, better error reporting in mugglei, escape cddbid in mugglei
git-svn-id: https://vdr-muggle.svn.sourceforge.net/svnroot/vdr-muggle/trunk/muggle-plugin@494 e10066b5-e1e2-0310-b819-94efdf66514b
-rw-r--r--Makefile2
-rw-r--r--i18n.c57
-rw-r--r--mg_db.c77
-rw-r--r--mg_db.h18
-rw-r--r--mg_order.c56
-rw-r--r--mg_order.h5
-rw-r--r--mg_setup.c34
-rw-r--r--mg_setup.h61
-rwxr-xr-xmugglei.c85
-rw-r--r--vdr_menu.c28
-rw-r--r--vdr_setup.c17
-rw-r--r--vdr_setup.h47
12 files changed, 364 insertions, 123 deletions
diff --git a/Makefile b/Makefile
index 48d42e7..2f5ac30 100644
--- a/Makefile
+++ b/Makefile
@@ -57,7 +57,7 @@ MIFLAGS += -I/usr/include/taglib -lmysqlclient
OBJS = $(PLUGIN).o i18n.o mg_valmap.o mg_order.o mg_db.o mg_actions.o vdr_menu.o mg_tools.o \
vdr_decoder_mp3.o vdr_stream.o vdr_decoder.o vdr_player.o \
- vdr_setup.o
+ vdr_setup.o mg_setup.o
LIBS = -lmad -lmysqlclient
MILIBS = -lmysqlclient -ltag
diff --git a/i18n.c b/i18n.c
index 6ba1065..c9e1240 100644
--- a/i18n.c
+++ b/i18n.c
@@ -999,13 +999,64 @@ const tI18nPhrase Phrases[] =
"", // TODO
},
{
- "Genre 1",
- "Genre 1",
+ "Folder1",
+ "Ordner1",
"", // TODO
"", // TODO
"", // TODO
"", // TODO
- "Genre 1", // TODO
+ "Folder1", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ },
+ {
+ "Folder2",
+ "Ordner2",
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "Folder2", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ },
+ {
+ "Folder3",
+ "Ordner3",
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "Folder3", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ },
+ {
+ "Folder4",
+ "Ordner4",
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "", // TODO
+ "Folder4", // TODO
"", // TODO
"", // TODO
"", // TODO
diff --git a/mg_db.c b/mg_db.c
index 57edc0e..0797465 100644
--- a/mg_db.c
+++ b/mg_db.c
@@ -740,8 +740,8 @@ mgContentItem::mgContentItem (const mgSelection* sel,const MYSQL_ROW row)
};
void mgSelection::InitSelection() {
+ setDB(0);
m_Directory=".";
- InitDatabase();
m_level = 0;
m_position = 0;
m_tracks_position = 0;
@@ -750,18 +750,13 @@ void mgSelection::InitSelection() {
m_loop_mode = LoopMode(the_setup.InitLoopMode);
clearCache();
values.setOwner(this);
- if (!needGenre2_set)
- {
- needGenre2_set=true;
- needGenre2=exec_count("SELECT COUNT(DISTINCT genre2) from tracks")>1;
- }
}
mgSelection::mgSelection (const bool fall_through)
{
- setDB(0);
InitSelection ();
+ Connect();
m_fall_through = fall_through;
}
@@ -802,8 +797,8 @@ mgSelection::setOrder(mgOrder* o)
void
mgSelection::InitFrom(mgValmap& nv)
{
- setDB(0);
InitSelection();
+ Connect();
m_fall_through = nv.getbool("FallThrough");
m_Directory = nv.getstr("Directory");
while (m_level < nv.getuint("Level"))
@@ -830,7 +825,6 @@ mgSelection::~mgSelection ()
void mgSelection::InitFrom(const mgSelection* s)
{
- setDB(0);
InitSelection();
m_fall_through = s->m_fall_through;
m_Directory = s->m_Directory;
@@ -844,18 +838,9 @@ void mgSelection::InitFrom(const mgSelection* s)
m_tracks_position = s->m_tracks_position;
setShuffleMode (s->getShuffleMode ());
setLoopMode (s->getLoopMode ());
+ Connect();
}
-const mgSelection& mgSelection::operator=(const mgSelection &s)
-{
- if (this==&s) { // prevent s = s
- return *this;
- }
- InitFrom(&s);
- return *this;
-}
-
-
unsigned int
mgSelection::ordersize ()
{
@@ -948,7 +933,7 @@ mgSelection::count () const
return values.size ();
}
void
-mgSelection::InitDatabase ()
+mgSelection::Connect ()
{
if (m_db)
{
@@ -997,6 +982,11 @@ mgSelection::InitDatabase ()
mysql_close (m_db);
setDB(0);
}
+ if (!needGenre2_set && m_db)
+ {
+ needGenre2_set=true;
+ needGenre2=exec_count("SELECT COUNT(DISTINCT genre2) from tracks")>1;
+ }
return;
}
@@ -1347,7 +1337,10 @@ mgSelection::keycount(mgKeyTypes kt)
if (count==-1)
{
mgKey* k = ktGenerate(kt,m_db);
- count = exec_count(k->Parts(true).sql_count());
+ if (k->Enabled())
+ count = exec_count(k->Parts(true).sql_count());
+ else
+ count = 0;
delete k;
}
return count;
@@ -1376,18 +1369,36 @@ mgSelection::choices(mgOrder *o,unsigned int level, unsigned int *current)
continue;
if (kt==keyDecade && UsedBefore(o,keyYear,level))
continue;
- if (kt==keyGenre1 && UsedBefore(o,keyGenres,level))
- continue;
- if (kt==keyGenre2 && UsedBefore(o,keyGenres,level))
- continue;
- if (kt==keyGenre3 && UsedBefore(o,keyGenres,level))
- continue;
- if (kt==keyGenre1 && UsedBefore(o,keyGenre3,level))
- continue;
- if (kt==keyGenre2 && UsedBefore(o,keyGenre3,level))
- continue;
- if (kt==keyGenre1 && UsedBefore(o,keyGenre2,level))
- continue;
+ if (kt==keyGenre1)
+ {
+ if (UsedBefore(o,keyGenre2,level)) continue;
+ if (UsedBefore(o,keyGenre3,level)) continue;
+ if (UsedBefore(o,keyGenres,level)) continue;
+ }
+ if (kt==keyGenre2)
+ {
+ if (UsedBefore(o,keyGenre3,level)) continue;
+ if (UsedBefore(o,keyGenres,level)) continue;
+ }
+ if (kt==keyGenre3)
+ {
+ if (UsedBefore(o,keyGenres,level)) continue;
+ }
+ if (kt==keyFolder1)
+ {
+ if (UsedBefore(o,keyFolder2,level)) continue;
+ if (UsedBefore(o,keyFolder3,level)) continue;
+ if (UsedBefore(o,keyFolder4,level)) continue;
+ }
+ if (kt==keyFolder2)
+ {
+ if (UsedBefore(o,keyFolder3,level)) continue;
+ if (UsedBefore(o,keyFolder4,level)) continue;
+ }
+ if (kt==keyFolder3)
+ {
+ if (UsedBefore(o,keyFolder4,level)) continue;
+ }
if (kt==keyCollection || kt==keyCollectionItem)
result.push_back(ktName(kt));
else if (keycount(kt)>1)
diff --git a/mg_db.h b/mg_db.h
index c0daf7c..28fc5a1 100644
--- a/mg_db.h
+++ b/mg_db.h
@@ -178,12 +178,6 @@ class mgSelection
*/
mgSelection (const mgSelection* s);
-/*! \brief the assignment operator. Does a deep copy.
- * Some of the data base content will only be retrieved by the
- * new mgSelection as needed, so some data base
- * overhead is involved
- */
- const mgSelection& operator=(const mgSelection& s);
//! \brief initializes from a map.
void InitFrom(mgValmap& nv);
@@ -397,6 +391,16 @@ class mgSelection
*/
string exportM3U ();
+ /*! import/export tags like
+ * \par path can be a file or a directory. If directory,
+ * sync all files within but by default non recursive
+ * \par recursive recurse into all directories beneath path
+ * \par assorted see mugglei -h
+ * \par delete_missing if the file does not exist, delete the
+ * data base entry. If the file is unreadable, do not delete.
+ */
+ void Sync(string path, bool recursive=false,bool assorted=false,bool delete_missing=false);
+
/*! \brief go to a position in the current level. If we are at the
* most detailled level this also sets the track position since
* they are identical.
@@ -530,7 +534,7 @@ class mgSelection
mgOrder order;
bool UsedBefore (mgOrder *o,const mgKeyTypes kt, unsigned int level) const;
void InitSelection ();
- void InitDatabase ();
+ void Connect ();
/*! \brief returns the SQL command for getting all values.
* For the leaf level, all values are returned. For upper
* levels, every distinct value is returned only once.
diff --git a/mg_order.c b/mg_order.c
index 64cb379..479e2f3 100644
--- a/mg_order.c
+++ b/mg_order.c
@@ -169,9 +169,9 @@ class mgKeyNormal : public mgKey {
string IdClause(string what,string::size_type start=0,string::size_type len=string::npos) const;
void AddIdClause(mgParts &result,string what) const;
string m_id;
+ string m_field;
private:
mgKeyTypes m_kt;
- string m_field;
string m_table;
string m_value;
};
@@ -182,6 +182,52 @@ class mgKeyTrack : public mgKeyNormal {
mgParts Parts(bool orderby=false) const;
};
+class mgKeyFolder : public mgKeyNormal {
+ public:
+ mgKeyFolder(mgKeyTypes kt,const char *fname)
+ : mgKeyNormal(kt,"tracks",fname) { m_enabled=-1;};
+ bool Enabled();
+ private:
+ int m_enabled;
+};
+
+class mgKeyFolder1 : public mgKeyFolder {
+ public:
+ mgKeyFolder1() : mgKeyFolder(keyFolder1,"folder1") {};
+};
+class mgKeyFolder2 : public mgKeyFolder {
+ public:
+ mgKeyFolder2() : mgKeyFolder(keyFolder2,"folder2") {};
+};
+class mgKeyFolder3 : public mgKeyFolder {
+ public:
+ mgKeyFolder3() : mgKeyFolder(keyFolder3,"folder3") {};
+};
+class mgKeyFolder4 : public mgKeyFolder {
+ public:
+ mgKeyFolder4() : mgKeyFolder(keyFolder4,"folder4") {};
+};
+
+bool
+mgKeyFolder::Enabled()
+{
+ if (m_enabled<0)
+ {
+ if (!m_db)
+ return false;
+ char *b;
+ asprintf(&b,"DESCRIBE tracks %s",m_field.c_str());
+ MYSQL_RES * rows = exec_sql (m_db, b);
+ free(b);
+ if (rows)
+ {
+ m_enabled = mysql_num_rows(rows);
+ mysql_free_result (rows);
+ }
+ }
+ return (m_enabled==1);
+}
+
class mgKeyGenres : public mgKeyNormal {
public:
mgKeyGenres() : mgKeyNormal(keyGenres,"tracks","genre1") {};
@@ -956,6 +1002,10 @@ ktGenerate(const mgKeyTypes kt,MYSQL* db)
case keyGenre1: result = new mgKeyGenre1;break;
case keyGenre2: result = new mgKeyGenre2;break;
case keyGenre3: result = new mgKeyGenre3;break;
+ case keyFolder1:result = new mgKeyFolder1;break;
+ case keyFolder2:result = new mgKeyFolder2;break;
+ case keyFolder3:result = new mgKeyFolder3;break;
+ case keyFolder4:result = new mgKeyFolder4;break;
case keyArtist: result = new mgKeyNormal(kt,"tracks","artist");break;
case keyTitle: result = new mgKeyNormal(kt,"tracks","title");break;
case keyTrack: result = new mgKeyTrack;break;
@@ -981,6 +1031,10 @@ ktName(const mgKeyTypes kt)
case keyGenre1: result = "Genre1";break;
case keyGenre2: result = "Genre2";break;
case keyGenre3: result = "Genre3";break;
+ case keyFolder1: result = "Folder1";break;
+ case keyFolder2: result = "Folder2";break;
+ case keyFolder3: result = "Folder3";break;
+ case keyFolder4: result = "Folder4";break;
case keyArtist: result = "Artist";break;
case keyTitle: result = "Title";break;
case keyTrack: result = "Track";break;
diff --git a/mg_order.h b/mg_order.h
index 576f2c4..e2dcbd7 100644
--- a/mg_order.h
+++ b/mg_order.h
@@ -34,6 +34,10 @@ enum mgKeyTypes {
keyTrack,
keyLanguage,
keyRating,
+ keyFolder1,
+ keyFolder2,
+ keyFolder3,
+ keyFolder4,
keyCollection,
keyCollectionItem,
};
@@ -84,6 +88,7 @@ class mgKey {
virtual string map_valuefield() const { return ""; }
virtual string map_valuetable() const { return ""; }
void setdb(MYSQL *db);
+ virtual bool Enabled() { return true; }
protected:
MYSQL *m_db;
};
diff --git a/mg_setup.c b/mg_setup.c
new file mode 100644
index 0000000..41a673e
--- /dev/null
+++ b/mg_setup.c
@@ -0,0 +1,34 @@
+/*!
+ * \file vdr_setup.c
+ * \brief A setup class for a VDR media plugin (muggle)
+ *
+ * \version $Revision: 1.3 $
+ * \date $Date: 2005-01-24 15:45:30 +0100 (Mon, 24 Jan 2005) $
+ * \author Ralf Klueber, Lars von Wedel, Andreas Kellner
+ * \author Responsible author: $Author: wr61 $
+ *
+ * $Id: vdr_setup.c 399 2005-01-24 14:45:30Z wr61 $
+ *
+ * Partially adapted from
+ * MP3/MPlayer plugin to VDR (C++)
+ * (C) 2001,2002 Stefan Huelswitt <huels@iname.com>
+ */
+
+
+#include "mg_setup.h"
+
+mgSetup the_setup;
+
+
+mgSetup::mgSetup ()
+{
+ InitLoopMode = 0;
+ InitShuffleMode = 0;
+ AudioMode = 1;
+ DisplayMode = 3;
+ BackgrMode = 1;
+ TargetLevel = DEFAULT_TARGET_LEVEL;
+ LimiterLevel = DEFAULT_LIMITER_LEVEL;
+ Only48kHz = 0;
+ ToplevelDir = "/mnt/music/";
+}
diff --git a/mg_setup.h b/mg_setup.h
new file mode 100644
index 0000000..7bd18ac
--- /dev/null
+++ b/mg_setup.h
@@ -0,0 +1,61 @@
+/*!
+ * \file vdr_setup.h
+ * \brief A setup class for a VDR media plugin (muggle)
+ *
+ * \version $Revision: 1.2 $
+ * \date $Date: 2005-01-24 15:45:30 +0100 (Mon, 24 Jan 2005) $
+ * \author Ralf Klueber, Lars von Wedel, Andreas Kellner
+ * \author Responsible author: $Author: wr61 $
+ *
+ * $Id: vdr_setup.h 399 2005-01-24 14:45:30Z wr61 $
+ *
+ * Adapted from
+ * MP3/MPlayer plugin to VDR (C++)
+ * (C) 2001,2002 Stefan Huelswitt <huels@iname.com>
+ */
+
+#ifndef ___SETUP_MG_H
+#define ___SETUP_MG_H
+
+#define MAX_STRING_LEN 128
+
+#define DEFAULT_TARGET_LEVEL 25
+#define MAX_TARGET_LEVEL 50
+#define DEFAULT_LIMITER_LEVEL 70
+#define MIN_LIMITER_LEVEL 25
+
+/*!
+ * \brief storage for setup data
+ */
+class mgSetup
+{
+ public:
+ int InitLoopMode;
+ int InitShuffleMode;
+ int AudioMode;
+ int DisplayMode;
+ int BackgrMode;
+ int MenuMode;
+ int TargetLevel;
+ int LimiterLevel;
+ int Only48kHz;
+
+ char *DbHost;
+ char *DbSocket;
+ char *DbName;
+ char *DbUser;
+ char *DbPass;
+ int DbPort;
+ bool GdCompatibility;
+ char *ToplevelDir;
+
+ char PathPrefix[MAX_STRING_LEN];
+
+ public:
+ mgSetup (void);
+
+};
+
+extern mgSetup the_setup;
+
+#endif
diff --git a/mugglei.c b/mugglei.c
index c3e07f5..40ed785 100755
--- a/mugglei.c
+++ b/mugglei.c
@@ -69,6 +69,7 @@ char *db_cmds[] =
"drop table if exists tracks;CREATE TABLE tracks ( artist varchar(255) default NULL, title varchar(255) default NULL, genre1 varchar(10) default NULL, genre2 varchar(10) default NULL, year smallint(5) unsigned default NULL, lang varchar(4) default NULL, type tinyint(3) unsigned default NULL, rating tinyint(3) unsigned default NULL, length smallint(5) unsigned default NULL, source tinyint(3) unsigned default NULL, sourceid varchar(20) default NULL, tracknb tinyint(3) unsigned default NULL, mp3file varchar(255) default NULL, condition tinyint(3) unsigned default NULL, voladjust smallint(6) default '0', lengthfrm mediumint(9) default '0', startfrm mediumint(9) default '0', bpm smallint(6) default '0', lyrics mediumtext, bitrate varchar(10) default NULL, created date default NULL, modified date default NULL, backup tinyint(3) unsigned default NULL, samplerate int(7) unsigned default NULL, channels tinyint(3) unsigned default NULL, id int(11) NOT NULL auto_increment, PRIMARY KEY (id), KEY title (title(10)), KEY mp3file (mp3file(10)), KEY genre1 (genre1), KEY genre2 (genre2), KEY year (year), KEY lang (lang), KEY type (type), KEY rating (rating), KEY sourceid (sourceid), KEY artist (artist(10))) TYPE=MyISAM;"
};
+bool folderfields;
std::string host, user, pass, dbname, sck;
bool import_assorted, delete_mode, create_mode;
@@ -80,6 +81,28 @@ void showmessage(const char *msg)
{
}
+void
+init_folderfields()
+{
+ folderfields=false;
+ mysql_query(db,"DESCRIBE tracks folder1");
+ MYSQL_RES *rows = mysql_store_result(db);
+ if (rows)
+ {
+ folderfields = mysql_num_rows(rows)>0;
+ mysql_free_result(rows);
+ if (!folderfields)
+ {
+ folderfields = !mysql_query(db,
+ "alter table tracks add column folder1 varchar(255),"
+ "add column folder2 varchar(255),"
+ "add column folder3 varchar(255),"
+ "add column folder4 varchar(255)");
+
+ }
+ }
+}
+
MYSQL_RES* mgSqlReadQuery(MYSQL *db, const char *fmt, ...)
{
va_list ap;
@@ -88,7 +111,7 @@ MYSQL_RES* mgSqlReadQuery(MYSQL *db, const char *fmt, ...)
if( mysql_query(db, querybuf) )
{
- mgError( "SQL error in MUGGLE:\n%s\n", querybuf );
+ mgError( "SQL error in MUGGLE:\n%s: %s\n", querybuf,mysql_error(db) );
}
MYSQL_RES *result = mysql_store_result(db);
@@ -105,7 +128,7 @@ void mgSqlWriteQuery(MYSQL *db, const char *fmt, ...)
if( mysql_query(db, querybuf) )
{
- mgError( "SQL error in MUGGLE:\n%s\n", querybuf );
+ mgError( "SQL error in MUGGLE:\n%s %s\n", querybuf,mysql_error(db) );
}
va_end(ap);
@@ -342,7 +365,7 @@ void update_db( long uid, std::string filename )
}
else
{ // use first album found as source id for the track
- cddbid = row[0];
+ cddbid = escape_string(db,row[0]);
}
}
else
@@ -389,7 +412,7 @@ void update_db( long uid, std::string filename )
}
else
{ // use first album found as source id for the track
- cddbid = row[0];
+ cddbid = escape_string(db,row[0]);
}
}
@@ -406,7 +429,58 @@ void update_db( long uid, std::string filename )
}
else
{ // the entry does not exist, create it
- mgSqlWriteQuery( db,
+ if (folderfields)
+ {
+ char *path = strdup(filename.c_str());
+ char *folder1="";
+ char *folder2="";
+ char *folder3="";
+ char *folder4="";
+ char *p=path;
+ char *slash;
+ slash=strchr(p,'/');
+ if (slash)
+ {
+ folder1=p;
+ *slash=0;
+ p=slash+1;
+ slash=strchr(p,'/');
+ if (slash)
+ {
+ folder2=p;
+ *slash=0;
+ p=slash+1;
+ slash=strchr(p,'/');
+ if (slash)
+ {
+ folder3=p;
+ *slash=0;
+ p=slash+1;
+ slash=strchr(p,'/');
+ if (slash)
+ {
+ folder4=p;
+ *slash=0;
+ }
+ }
+ }
+ }
+ TagLib::String f1 = escape_string( db, folder1 );
+ TagLib::String f2 = escape_string( db, folder2 );
+ TagLib::String f3 = escape_string( db, folder3 );
+ TagLib::String f4 = escape_string( db, folder4 );
+ mgSqlWriteQuery( db,
+ "INSERT INTO tracks "
+ "(artist, title, year,sourceid,tracknb,mp3file,length,bitrate,samplerate,channels,genre1,genre2,lang,folder1,folder2,folder3,folder4) VALUES"
+ "(\"%s\", \"%s\", %d, \"%s\", %d, \"%s\", %d, \"%d\", %d, %d, \"%s\",\"\",\"%s\","
+ "\"%s\",\"%s\",\"%s\",\"%s\")",
+ artist.toCString(), title.toCString(), year, cddbid.toCString(),
+ trackno, filename.c_str(), len, bitrate, sample, channels, gid.toCString(),
+ language.toCString(),f1.toCString(),f2.toCString(),f3.toCString(),f4.toCString());
+ free(path);
+ }
+ else
+ mgSqlWriteQuery( db,
"INSERT INTO tracks "
"(artist, title, year,sourceid,tracknb,mp3file,length,bitrate,samplerate,channels,genre1,genre2,lang) VALUES"
"(\"%s\", \"%s\", %d, \"%s\", %d, \"%s\", %d, \"%d\", %d, %d, \"%s\",\"\",\"%s\")",
@@ -618,6 +692,7 @@ int main( int argc, char *argv[] )
if( 0 == init_database() )
{
+ init_folderfields();
if( delete_mode )
{
update_tags( -1 );
diff --git a/vdr_menu.c b/vdr_menu.c
index 605b675..d2bb163 100644
--- a/vdr_menu.c
+++ b/vdr_menu.c
@@ -363,13 +363,15 @@ mgMainMenu::AddOrder()
void
mgMainMenu::DeleteOrder()
{
+ mgOrder *o = orders[Current()];
+ delete o;
orders.erase(orders.begin()+Current());
}
void
mgMainMenu::LoadOrders(mgValmap& nv)
{
- for (unsigned int idx=0;idx<10;idx++)
+ for (unsigned int idx=0;idx<1000;idx++)
{
char b[10];
sprintf(b,"order%u",idx);
@@ -377,7 +379,7 @@ mgMainMenu::LoadOrders(mgValmap& nv)
if (o->size()==0)
{
delete o;
- continue;
+ break;
}
orders.push_back(o);
}
@@ -386,20 +388,20 @@ mgMainMenu::LoadOrders(mgValmap& nv)
m_current_order=0;
if (orders.size()>0) return;
- nv.put("order1.Keys.0.Type",keyArtist);
- nv.put("order1.Keys.1.Type",keyAlbum);
- nv.put("order1.Keys.2.Type",keyTrack);
+ nv.put("order0.Keys.0.Type",keyArtist);
+ nv.put("order0.Keys.1.Type",keyAlbum);
+ nv.put("order0.Keys.2.Type",keyTrack);
- nv.put("order2.Keys.0.Type",keyAlbum);
- nv.put("order2.Keys.1.Type",keyTrack);
+ nv.put("order1.Keys.0.Type",keyAlbum);
+ nv.put("order1.Keys.1.Type",keyTrack);
- nv.put("order3.Keys.0.Type",keyGenres);
- nv.put("order3.Keys.1.Type",keyArtist);
- nv.put("order3.Keys.2.Type",keyAlbum);
- nv.put("order3.Keys.3.Type",keyTrack);
+ nv.put("order2.Keys.0.Type",keyGenres);
+ nv.put("order2.Keys.1.Type",keyArtist);
+ nv.put("order2.Keys.2.Type",keyAlbum);
+ nv.put("order2.Keys.3.Type",keyTrack);
- nv.put("order4.Keys.0.Type",keyArtist);
- nv.put("order4.Keys.1.Type",keyTrack);
+ nv.put("order3.Keys.0.Type",keyArtist);
+ nv.put("order3.Keys.1.Type",keyTrack);
nv.put("CurrentOrder",0);
LoadOrders(nv);
diff --git a/vdr_setup.c b/vdr_setup.c
index 0334fea..95d7df2 100644
--- a/vdr_setup.c
+++ b/vdr_setup.c
@@ -22,8 +22,6 @@
#include "vdr_setup.h"
#include "i18n.h"
-mgSetup the_setup;
-
// --- mgMenuSetup -----------------------------------------------------------
@@ -75,18 +73,3 @@ mgMenuSetup::Store (void)
SetupStore ("Only48kHz", the_setup.Only48kHz);
}
-
-// --- mgSetup ---------------------------------------------------------------
-
-mgSetup::mgSetup ()
-{
- InitLoopMode = 0;
- InitShuffleMode = 0;
- AudioMode = 1;
- DisplayMode = 3;
- BackgrMode = 1;
- TargetLevel = DEFAULT_TARGET_LEVEL;
- LimiterLevel = DEFAULT_LIMITER_LEVEL;
- Only48kHz = 0;
- ToplevelDir = "/mnt/music/";
-}
diff --git a/vdr_setup.h b/vdr_setup.h
index f17aa2a..354534f 100644
--- a/vdr_setup.h
+++ b/vdr_setup.h
@@ -14,53 +14,14 @@
* (C) 2001,2002 Stefan Huelswitt <huels@iname.com>
*/
-#ifndef ___SETUP_MG_H
-#define ___SETUP_MG_H
+#ifndef ___VDR_SETUP_MG_H
+#define ___VDR_SETUP_MG_H
// #include <osd.h>
#include <menuitems.h>
#include <string>
-#define MAX_STRING_LEN 128
-
-#define DEFAULT_TARGET_LEVEL 25
-#define MAX_TARGET_LEVEL 50
-#define DEFAULT_LIMITER_LEVEL 70
-#define MIN_LIMITER_LEVEL 25
-
-/*!
- * \brief storage for setup data
- */
-class mgSetup
-{
- public:
- int InitLoopMode;
- int InitShuffleMode;
- int AudioMode;
- int DisplayMode;
- int BackgrMode;
- int MenuMode;
- int TargetLevel;
- int LimiterLevel;
- int Only48kHz;
-
- char *DbHost;
- char *DbSocket;
- char *DbName;
- char *DbUser;
- char *DbPass;
- int DbPort;
- bool GdCompatibility;
- char *ToplevelDir;
-
- char PathPrefix[MAX_STRING_LEN];
-
- public:
- mgSetup (void);
-
-};
-
-extern mgSetup the_setup;
+#include "mg_setup.h"
/*!
* \brief allow user to modify setup on OSD
@@ -74,4 +35,4 @@ class mgMenuSetup:public cMenuSetupPage
public:
mgMenuSetup ();
};
-#endif //___SETUP_MP3_H
+#endif