Ticket #737: metaformat.patch

File metaformat.patch, 8.9 KB (added by eskil <myth@…>, 15 years ago)

patch to handle format

  • mythplugins/mythmusic/mythmusic/metadata.cpp

    diff --exclude='Makefile*' --exclude='*svn*' -ru ../observable/mythplugins/mythmusic/mythmusic/metadata.cpp mythplugins/mythmusic/mythmusic/metadata.cpp
    old new  
    119119        MythContext::DBError("music persist", query);
    120120}
    121121
     122int Metadata::compare(Metadata *other)
     123{
     124    if (format == "cast")
     125    {
     126        int artist_cmp = qstrcmp (Artist(), other->Artist());
     127        int title_cmp = qstrcmp (Title(), other->Title());
     128       
     129        if (artist_cmp == 0)
     130            return title_cmp;
     131       
     132        return artist_cmp;
     133    }
     134    else
     135    {
     136        return (Track() - other->Track());
     137    }
     138}
     139
    122140bool Metadata::isInDatabase(QString startdir)
    123141{
    124142    bool retval = false;
     
    128146
    129147    MSqlQuery query(MSqlQuery::InitCon());
    130148    query.prepare("SELECT artist,compilation_artist,album,title,genre,year,tracknum,"
    131                   "length,intid,rating,playcount,lastplay,compilation FROM "
     149                  "length,intid,rating,playcount,lastplay,compilation,format FROM "
    132150                  "musicmetadata WHERE filename = :FILENAME ;");
    133151    query.bindValue(":FILENAME", sqlfilename.utf8());
    134152
     
    149167        playcount = query.value(10).toInt();
    150168        lastplay = query.value(11).toString();
    151169        compilation = (query.value(12).toInt() > 0);
     170        format = query.value(13).toString();
    152171       
    153172        retval = true;
    154173    }
     
    181200                  "( album = :ALBUM ) AND ( title = :TITLE ) "
    182201                  "AND ( genre = :GENRE ) AND "
    183202                  "( year = :YEAR ) AND ( tracknum = :TRACKNUM ) "
    184                   "AND ( length = :LENGTH ) );");
     203                  "AND ( length = :LENGTH ) "
     204                  "AND ( format = :FORMAT) );");
    185205    query.bindValue(":ARTIST", artist.utf8());
    186206    query.bindValue(":COMPILATION_ARTIST", compilation_artist.utf8());
    187207    query.bindValue(":ALBUM", album.utf8());
     
    190210    query.bindValue(":YEAR", year);
    191211    query.bindValue(":TRACKNUM", tracknum);
    192212    query.bindValue(":LENGTH", length);
     213    query.bindValue(":FORMAT", format);
    193214
    194215    if (query.exec() && query.isActive() && query.size() > 0)
    195216        return;
     
    197218    query.prepare("INSERT INTO musicmetadata "
    198219                  "(artist,   compilation_artist, album,      title,  "
    199220                  " genre,    year,               tracknum,   length, "
    200                   " filename, compilation,        date_added, date_modified) "
     221                  " filename, compilation,        date_added, date_modified, "
     222                  " format ) "
    201223                  "VALUES "
    202224                  "(:ARTIST,  :COMPILATION_ARTIST,:ALBUM,     :TITLE,   "
    203225                  " :GENRE,   :YEAR,              :TRACKNUM,  :LENGTH,  "
    204                   " :FILENAME,:COMPILATION,       :DATE_ADDED,:DATE_MOD)");
     226                  " :FILENAME,:COMPILATION,       :DATE_ADDED,:DATE_MOD,"
     227                  " :FORMAT)");
    205228    query.bindValue(":ARTIST", artist.utf8());
    206229    query.bindValue(":COMPILATION_ARTIST", compilation_artist.utf8());
    207230    query.bindValue(":ALBUM", album.utf8());
     
    214237    query.bindValue(":COMPILATION", compilation);
    215238    query.bindValue(":DATE_ADDED",  QDateTime::currentDateTime());
    216239    query.bindValue(":DATE_MOD",    QDateTime::currentDateTime());
     240    query.bindValue(":FORMAT", format);
    217241   
    218242    query.exec();
    219243
     
    376400                  "    rating   = :RATING,   "
    377401                  "    date_modified      = :DATE_MODIFIED, "
    378402                  "    compilation        = :COMPILATION,   "
    379                   "    compilation_artist = :COMPILATION_ARTIST "
     403                  "    compilation_artist = :COMPILATION_ARTIST, "
     404                  "    format             = :FORMAT "
    380405                  "WHERE intid = :ID;");
    381406    query.bindValue(":ARTIST",             artist.utf8());
    382407    query.bindValue(":ALBUM",              album.utf8());
     
    388413    query.bindValue(":DATE_MODIFIED",      QDateTime::currentDateTime());
    389414    query.bindValue(":COMPILATION",        compilation);
    390415    query.bindValue(":COMPILATION_ARTIST", compilation_artist.utf8());
     416    query.bindValue(":FORMAT", format);
    391417    query.bindValue(":ID", id);
    392418
    393419    if (!query.exec())
     
    538564        return;
    539565
    540566    QString thequery = "SELECT artist,compilation_artist,album,title,genre,year,tracknum,length,"
    541                        "filename,intid,rating,playcount,lastplay,compilation "
     567                       "filename,intid,rating,playcount,lastplay,compilation,format "
    542568                       "FROM musicmetadata WHERE title = :TITLE";
    543569
    544570    if (album != "")
     
    575601        playcount = query.value(11).toInt();
    576602        lastplay = query.value(12).toString();
    577603        compilation = (query.value(13).toInt() > 0);
     604        format = query.value(14).toString();
    578605
    579606        if (!filename.contains("://"))
    580607            filename = m_startdir + filename;
     
    588615       
    589616    MSqlQuery query(MSqlQuery::InitCon());
    590617    query.prepare("SELECT title,artist,compilation_artist,album,title,genre,year,tracknum,"
    591                   "length,filename,rating,playcount,lastplay,compilation FROM "
     618                  "length,filename,rating,playcount,lastplay,compilation,format FROM "
    592619                  "musicmetadata WHERE intid = :ID ;");
    593620    query.bindValue(":ID", id);
    594621       
     
    610637        playcount = query.value(11).toInt();
    611638        lastplay = query.value(12).toString();
    612639        compilation = (query.value(13).toInt() > 0);
     640        format = query.value(14).toString();
    613641
    614642        if (!filename.contains("://"))
    615643            filename = m_startdir + filename;
     
    758786    done_loading = false;
    759787    QString aquery =    "SELECT intid, artist, compilation_artist, album, title, genre, "
    760788                        "year, tracknum, length, filename, rating, "
    761                         "lastplay, playcount, compilation FROM musicmetadata "
     789                        "lastplay, playcount, compilation, format "
     790                        "FROM musicmetadata "
    762791                        "ORDER BY intid;";
    763792
    764793    QString filename;
     
    797826                query.value(10).toInt(),
    798827                query.value(12).toInt(),
    799828                query.value(11).toString(),
    800                 (query.value(13).toInt() > 0));
    801 
     829                (query.value(13).toInt() > 0),
     830                query.value(14).toString());
     831           
    802832            //  Don't delete temp, as PtrList now owns it
    803833            all_music.append(temp);
    804834
     
    15031533int MetadataPtrList::compareItems(QPtrCollection::Item item1,
    15041534                                  QPtrCollection::Item item2)
    15051535{
    1506     return ((Metadata*)item1)->Track() - ((Metadata*)item2)->Track();
     1536    return ((Metadata*)item1)->compare((Metadata*)item2);
    15071537}
    15081538
    15091539int MusicNodePtrList::compareItems (QPtrCollection::Item item1,
  • mythplugins/mythmusic/mythmusic/metadata.h

    diff --exclude='Makefile*' --exclude='*svn*' -ru ../observable/mythplugins/mythmusic/mythmusic/metadata.h mythplugins/mythmusic/mythmusic/metadata.h
    old new  
    1919             QString lalbum = "", QString ltitle = "", QString lgenre = "",
    2020             int lyear = 0, int ltracknum = 0, int llength = 0, int lid = 0,
    2121             int lrating = 0, int lplaycount = 0, QString llastplay = "",
    22              bool lcompilation = false)
     22             bool lcompilation = false, QString lformat="")
    2323            {
    2424                filename = lfilename;
    2525                artist = lartist;
     
    3939                compilation = lcompilation;
    4040                changed = false;
    4141                show = true;
     42                format = lformat;
    4243            }
    4344
    4445    Metadata(const Metadata &other)
     
    6162                compilation = other.compilation;
    6263                show = other.show;
    6364                changed = false;
     65                format = other.format;
    6466            }
    6567
    6668    Metadata& operator=(Metadata *rhs);
     
    101103    QString Filename() const { return filename; }
    102104    void setFilename(QString &lfilename) { filename = lfilename; }
    103105   
     106    QString Format() const { return format; }
     107    void setFormat(const QString &lformat) { format = lformat; }
     108   
    104109    int Rating() { return rating; }
    105110    void decRating();
    106111    void incRating();
     
    131136    void fillDataFromID();
    132137    void persist();
    133138    bool hasChanged(){return changed;}
     139    int compare (Metadata *other);
    134140    static void setArtistAndTrackFormats();
    135141
    136142    static void SetStartdir(const QString &dir);
     
    146152    QString formattedartist;
    147153    QString formattedtitle;
    148154    QString genre;
     155    QString format;
    149156    int year;
    150157    int tracknum;
    151158    int length;