Ticket #85: splitfield.diff

File splitfield.diff, 2.6 KB (added by herman@…, 15 years ago)

Patch against r6792

  • mythmusic/metadata.cpp

     
    690690    top_nodes.setAutoDelete(true);
    691691   
    692692    last_listed = -1;
     693    field_sep = gContext->GetSetting("FieldSeparator", "");
    693694}
    694695
    695696AllMusic::~AllMusic()
     
    996997
    997998void AllMusic::intoTree(Metadata* inserter)
    998999{
    999     MusicNode *insertion_point = findRightNode(inserter, 0);
    1000     insertion_point->insert(inserter);
     1000    QString a_field = "";
     1001    inserter->getField(tree_levels.first(), &a_field, paths, startdir, 0);
     1002
     1003    if(field_sep == "")
     1004    {
     1005        MusicNode *insertion_point = findRightNode(inserter, a_field, 0);
     1006        insertion_point->insert(inserter);
     1007    }
     1008    else
     1009    {
     1010        QStringList lst( QStringList::split( field_sep, a_field ) );
     1011
     1012        for (QStringList::Iterator it = lst.begin() ; it != lst.end(); ++it ) {
     1013           MusicNode *insertion_point = findRightNode(inserter, *it, 0);
     1014           insertion_point->insert(inserter);
     1015        }
     1016    }
    10011017}
    10021018
    1003 MusicNode* AllMusic::findRightNode(Metadata* inserter, uint depth)
     1019MusicNode* AllMusic::findRightNode(Metadata* inserter, QString &a_field, uint depth)
    10041020{
    1005     QString a_field = "";
    1006 
    10071021    //  Use metadata to find pre-exisiting insertion
    10081022    //  point or (recursively) create nodes as needed
    10091023    //  and return ultimate insertion point
     
    10151029        //  paths=directory
    10161030        return root_node;
    10171031    }
    1018    
    1019     inserter->getField(tree_levels.first(), &a_field, paths, startdir, depth);
     1032
    10201033    QPtrListIterator<MusicNode> iter( top_nodes );
    10211034    MusicNode *search;
    10221035    while ( (search = iter.current()) != 0 )
  • mythmusic/metadata.h

     
    256256    void        sortTree();
    257257    void        writeTree(GenericTree *tree_to_write_to);
    258258    void        intoTree(Metadata* inserter);
    259     MusicNode*  findRightNode(Metadata* inserter, uint depth);
     259    MusicNode*  findRightNode(Metadata* inserter, QString &a_field, uint depth);
    260260    void        setSorting(QString a_paths);
    261261    bool        putYourselfOnTheListView(TreeCheckItem *where, int how_many);
    262262    void        putCDOnTheListView(CDCheckItem *where);
     
    289289    QString     paths;
    290290    QStringList tree_levels;
    291291   
    292    
     292    QString     field_sep;
    293293    MetadataLoadingThread   *metadata_loader;
    294294    bool                     done_loading;
    295295    int                      last_listed;