Ticket #1287: 3-lessstartdir.patch
File 3-lessstartdir.patch, 7.9 KB (added by , 18 years ago) |
---|
-
mythmusic/mythmusic/metadata.cpp
137 143 } 138 144 } 139 145 140 bool Metadata::isInDatabase( QString startdir)146 bool Metadata::isInDatabase() 141 147 { 142 148 bool retval = false; 143 149 144 QString sqlfilename = filename; 145 sqlfilename = filename.remove(0, startdir.length()); 150 QString sqlfilename = filename.remove(0, m_startdir.length()); 146 151 147 152 MSqlQuery query(MSqlQuery::InitCon()); 148 153 query.prepare("SELECT artist,compilation_artist,album,title,genre,year,tracknum," … … 175 180 return retval; 176 181 } 177 182 178 void Metadata::dumpToDatabase( QString startdir)183 void Metadata::dumpToDatabase() 179 184 { 180 185 if (artist == "") 181 186 artist = QObject::tr("Unknown Artist"); … … 188 193 if (genre == "") 189 194 genre = QObject::tr("Unknown Genre"); 190 195 191 QString sqlfilename = filename; 192 sqlfilename = filename.remove(0, startdir.length()); 196 QString sqlfilename = filename.remove(0, m_startdir.length()); 193 197 194 198 // Don't update the database if a song with the exact same 195 199 // metadata is already there … … 372 376 } 373 377 374 378 375 void Metadata::updateDatabase( QString startdir)379 void Metadata::updateDatabase() 376 380 { 377 startdir = startdir;378 381 // only save to DB if something changed 379 382 //if (!hasChanged()) 380 383 // return; … … 454 457 } 455 458 } 456 459 457 bool Metadata::areYouFinished(uint depth, uint treedepth, const QString &paths , const QString &startdir)460 bool Metadata::areYouFinished(uint depth, uint treedepth, const QString &paths) 458 461 { 459 462 if(paths == "directory") 460 463 { 461 464 // have we made it to directory just above the file name? 462 465 463 466 QString working = filename; 464 working.replace(QRegExp( startdir), QString(""));467 working.replace(QRegExp(m_startdir), QString("")); 465 468 working = working.section('/', depth); 466 469 if(working.contains('/') < 1) 467 470 { … … 478 481 return false; 479 482 } 480 483 481 void Metadata::getField(const QStringList &tree_levels, QString *data, const QString &paths, const QString &startdir,uint depth)484 void Metadata::getField(const QStringList &tree_levels, QString *data, const QString &paths, uint depth) 482 485 { 483 486 if(paths == "directory") 484 487 { … … 486 489 // real metadata/TAG values 487 490 488 491 QString working = filename; 489 working.replace(QRegExp( startdir), QString(""));492 working.replace(QRegExp(m_startdir), QString("")); 490 493 working.replace(QRegExp("/[^/]*$"), QString("")); 491 494 492 495 working = working.section('/', depth, depth); … … 791 794 "ORDER BY intid;"; 792 795 793 796 QString filename; 794 QString startdir = gContext->GetSetting("MusicLocation");795 startdir = QDir::cleanDirPath(startdir);796 if (!startdir.endsWith("/"));797 startdir += "/";798 797 799 798 MSqlQuery query(MSqlQuery::InitCon()); 800 799 query.exec(aquery); … … 1055 1083 Metadata *cur; 1056 1084 while ((cur = iter.current()) != 0) 1057 1085 { 1058 if (cur->areYouFinished(depth, tree_levels.count(), paths , startdir))1086 if (cur->areYouFinished(depth, tree_levels.count(), paths)) 1059 1087 { 1060 1088 // special case, track is at root level 1061 1089 // e.g. an mp3 in the root directory and … … 1065 1093 continue; 1066 1094 } 1067 1095 1068 cur->getField(tree_levels.first(), &a_field, paths, startdir,depth);1096 cur->getField(tree_levels.first(), &a_field, paths, depth); 1069 1097 curList = mapping.find(a_field); 1070 1098 if (!curList) 1071 1099 { … … 1345 1373 Metadata *cur; 1346 1374 while ((cur = iter.current()) != 0) 1347 1375 { 1348 if (usesPath && cur->areYouFinished(depth, tree_levels.count(), m_paths , m_startdir))1376 if (usesPath && cur->areYouFinished(depth, tree_levels.count(), m_paths)) 1349 1377 { 1350 1378 insert(cur); 1351 1379 ++iter; 1352 1380 continue; 1353 1381 } 1354 1382 1355 cur->getField(tree_levels, &a_field, m_paths, m_startdir,depth);1383 cur->getField(tree_levels, &a_field, m_paths, depth); 1356 1384 1357 1385 a_lowercase_field = a_field.lower(); 1358 1386 if (a_lowercase_field.left(4) == "the ") -
mythmusic/mythmusic/decoder.cpp
107 107 { 108 108 109 109 Metadata *mdata = new Metadata(filename); 110 if (mdata->isInDatabase( musiclocation))110 if (mdata->isInDatabase()) 111 111 { 112 112 return mdata; 113 113 } -
mythmusic/mythmusic/metadata.h
126 126 void setCompilation(bool state) { compilation = state; formattedartist = formattedtitle = ""; } 127 127 bool determineIfCompilation(bool cd = false); 128 128 129 bool isInDatabase( QString startdir);130 void dumpToDatabase( QString startdir);131 void updateDatabase( QString startdir);129 bool isInDatabase(void); 130 void dumpToDatabase(void); 131 void updateDatabase(void); 132 132 void setField(const QString &field, const QString &data); 133 133 void getField(const QString &field, QString *data); 134 void getField(const QStringList& tree_levels, QString *data, const QString &paths, const QString &startdir,uint depth);135 bool areYouFinished(uint depth, uint treedepth, const QString& paths , const QString& startdir);134 void getField(const QStringList& tree_levels, QString *data, const QString &paths, uint depth); 135 bool areYouFinished(uint depth, uint treedepth, const QString& paths); 136 136 void fillData(); 137 137 void fillDataFromID(); 138 138 void persist(); -
mythmusic/mythmusic/editmetadata.cpp
488 488 { 489 489 cancelPopup(); 490 490 491 m_metadata->updateDatabase( QString::null);491 m_metadata->updateDatabase(); 492 492 *m_sourceMetadata = m_metadata; 493 493 done(1); 494 494 } -
mythmusic/mythmusic/main.cpp
67 67 return decoder; 68 68 } 69 69 70 void AddFileToDB(const QString & directory, const QString &filename)70 void AddFileToDB(const QString &filename) 71 71 { 72 72 Decoder *decoder = getDecoder(filename); 73 73 … … 75 75 { 76 76 Metadata *data = decoder->getMetadata(); 77 77 if (data) { 78 data->dumpToDatabase( directory);78 data->dumpToDatabase(); 79 79 delete data; 80 80 } 81 81 … … 91 91 MSqlQuery query(MSqlQuery::InitCon()); 92 92 query.prepare("DELETE FROM musicmetadata WHERE " 93 93 "filename = :NAME ;"); 94 query.bindValue(":NAME", name.utf8());94 query.bindValue(":NAME", filename.utf8()); 95 95 query.exec(); 96 96 } 97 97 98 void UpdateFileInDB(const QString & directory, const QString &filename)98 void UpdateFileInDB(const QString &filename) 99 99 { 100 100 Decoder *decoder = getDecoder(filename); 101 101 … … 108 108 { 109 109 disk_meta->setID(db_meta->ID()); 110 110 disk_meta->setRating(db_meta->Rating()); 111 disk_meta->updateDatabase( directory);111 disk_meta->updateDatabase(); 112 112 } 113 113 114 114 if (disk_meta) … … 316 316 for (iter = music_files.begin(); iter != music_files.end(); iter++) 317 317 { 318 318 if (*iter == kFileSystem) 319 AddFileToDB( directory,iter.key());319 AddFileToDB(iter.key()); 320 320 else if (*iter == kDatabase) 321 321 RemoveFileFromDB(directory, iter.key ()); 322 322 else if (*iter == kNeedUpdate) 323 UpdateFileInDB( directory,iter.key());323 UpdateFileInDB(iter.key()); 324 324 325 325 file_checking->setProgress(++counter); 326 326 }