Index: mythmusic/metadata.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythplugins/mythmusic/mythmusic/metadata.cpp,v
retrieving revision 1.35
diff -u -d -r1.35 metadata.cpp
--- mythmusic/metadata.cpp	3 May 2005 07:16:40 -0000	1.35
+++ mythmusic/metadata.cpp	14 May 2005 20:37:09 -0000
@@ -690,6 +690,7 @@
     top_nodes.setAutoDelete(true);
     
     last_listed = -1;
+    field_sep = gContext->GetSetting("FieldSeparator", "");
 }
 
 AllMusic::~AllMusic()
@@ -996,14 +997,27 @@
 
 void AllMusic::intoTree(Metadata* inserter)
 {
-    MusicNode *insertion_point = findRightNode(inserter, 0);
-    insertion_point->insert(inserter);
+    QString a_field = "";
+    inserter->getField(tree_levels.first(), &a_field, paths, startdir, 0);
+
+    if(field_sep == "")
+    {
+        MusicNode *insertion_point = findRightNode(inserter, a_field, 0);
+        insertion_point->insert(inserter);
+    }
+    else
+    {
+        QStringList lst( QStringList::split( field_sep, a_field ) );
+
+        for (QStringList::Iterator it = lst.begin() ; it != lst.end(); ++it ) {
+           MusicNode *insertion_point = findRightNode(inserter, *it, 0);
+           insertion_point->insert(inserter);
+        }
+    }
 }
 
-MusicNode* AllMusic::findRightNode(Metadata* inserter, uint depth)
+MusicNode* AllMusic::findRightNode(Metadata* inserter, QString &a_field, uint depth)
 {
-    QString a_field = "";
-
     //  Use metadata to find pre-exisiting insertion
     //  point or (recursively) create nodes as needed
     //  and return ultimate insertion point
@@ -1015,8 +1029,7 @@
         //  paths=directory
         return root_node;
     }
-    
-    inserter->getField(tree_levels.first(), &a_field, paths, startdir, depth);
+
     QPtrListIterator<MusicNode> iter( top_nodes );
     MusicNode *search;
     while ( (search = iter.current()) != 0 )
Index: mythmusic/metadata.h
===================================================================
RCS file: /var/lib/mythcvs/mythplugins/mythmusic/mythmusic/metadata.h,v
retrieving revision 1.17
diff -u -d -r1.17 metadata.h
--- mythmusic/metadata.h	23 Feb 2005 20:41:08 -0000	1.17
+++ mythmusic/metadata.h	14 May 2005 20:37:09 -0000
@@ -256,7 +256,7 @@
     void        sortTree();
     void        writeTree(GenericTree *tree_to_write_to);
     void        intoTree(Metadata* inserter);
-    MusicNode*  findRightNode(Metadata* inserter, uint depth);
+    MusicNode*  findRightNode(Metadata* inserter, QString &a_field, uint depth);
     void        setSorting(QString a_paths);
     bool        putYourselfOnTheListView(TreeCheckItem *where, int how_many);
     void        putCDOnTheListView(CDCheckItem *where);
@@ -289,7 +289,7 @@
     QString     paths;
     QStringList tree_levels;
     
-    
+    QString     field_sep;
     MetadataLoadingThread   *metadata_loader;
     bool                     done_loading;
     int                      last_listed;
