Changeset b782a816f2f6
- Timestamp:
- 11/16/08 14:16:09 (7 weeks ago)
- Branch:
- trunk
- Files:
-
- 6 modified
-
include/mpx/mpx-library-scanner-thread.hh (modified) (5 diffs)
-
mpx/library-scanner-thread.cc (modified) (20 diffs)
-
mpx/mlibmanager.cc (modified) (1 diff)
-
mpx/mlibmanager.hh (modified) (1 diff)
-
mpx/mpx.cc (modified) (2 diffs)
-
mpx/mpx.hh (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
include/mpx/mpx-library-scanner-thread.hh
r988 r989 37 37 namespace MPX 38 38 { 39 enum ScanResult {39 enum ScanResult { 40 40 SCAN_RESULT_OK, 41 41 SCAN_RESULT_ERROR, … … 43 43 SCAN_RESULT_UPTODATE 44 44 }; 45 45 46 typedef std::pair<std::string, std::string> SSFileInfo; 47 48 struct ScanSummary 49 { 50 gint64 FilesAdded; 51 gint64 FilesErroneous; 52 gint64 FilesUpToDate; 53 gint64 FilesUpdated; 54 gint64 FilesTotal; 55 56 std::vector<SSFileInfo> FileListErroneous; 57 std::vector<SSFileInfo> FileListUpdated; 58 59 ScanSummary () 60 : FilesAdded(0) 61 , FilesErroneous(0) 62 , FilesUpToDate(0) 63 , FilesUpdated(0) 64 , FilesTotal(0) 65 { 66 } 67 }; 68 46 69 class HAL; 47 70 class MetadataReaderTagLib; … … 50 73 public: 51 74 52 typedef sigc::signal<void> SignalScanStart_t ;53 typedef sigc::signal<void, gint64,gint64> SignalScanRun_t ;54 typedef sigc::signal<void, gint64,gint64,gint64,gint64,gint64>SignalScanEnd_t ;55 typedef sigc::signal<void> SignalReload_t ;56 typedef sigc::signal<void, gint64> SignalNewAlbum_t ;57 typedef sigc::signal<void, gint64> SignalNewArtist_t ;58 typedef sigc::signal<void, Track&, gint64, gint64> SignalNewTrack_t ;75 typedef sigc::signal<void> SignalScanStart_t ; 76 typedef sigc::signal<void, gint64,gint64> SignalScanRun_t ; 77 typedef sigc::signal<void, ScanSummary const&> SignalScanEnd_t ; 78 typedef sigc::signal<void> SignalReload_t ; 79 typedef sigc::signal<void, gint64> SignalNewAlbum_t ; 80 typedef sigc::signal<void, gint64> SignalNewArtist_t ; 81 typedef sigc::signal<void, Track&, gint64, gint64> SignalNewTrack_t ; 59 82 60 83 typedef sigc::signal<void, … … 63 86 std::string const&, 64 87 std::string const&, 65 std::string const&> SignalCacheCover_t ;88 std::string const&> SignalCacheCover_t ; 66 89 67 90 typedef sigx::signal_f<SignalScanStart_t> signal_scan_start_x ; … … 173 196 gint64 m_Flags; 174 197 175 gint64 m_added; 176 gint64 m_erroneous; 177 gint64 m_uptodate; 178 gint64 m_updated; 179 gint64 m_total; 198 ScanSummary m_ScanSummary; 180 199 }; 181 200 } -
mpx/library-scanner-thread.cc
r988 r989 10 10 #include <boost/format.hpp> 11 11 #include <giomm.h> 12 #include <glibmm/i18n.h> 12 13 13 14 using boost::get; … … 230 231 gint64 last_scan_date = boost::get<gint64>(rows[1]["last_scan_date"]); 231 232 232 m_added = 0; 233 m_erroneous = 0; 234 m_uptodate = 0; 235 m_updated = 0; 236 m_total = 0; 233 m_ScanSummary = ScanSummary(); 237 234 238 235 for(Util::FileList::const_iterator i = list.begin(); i != list.end(); ++i) … … 279 276 insert_path_sql 280 277 )); 281 282 pthreaddata->ScanEnd.emit( m_added, m_uptodate, m_updated, m_erroneous, m_total);283 278 } 284 279 catch( Glib::ConvertError & cxe ) … … 288 283 } 289 284 } 285 286 pthreaddata->ScanEnd.emit( m_ScanSummary ); 290 287 } 291 288 … … 338 335 { 339 336 g_warning( "%s: %s", G_STRLOC, cxe.what() ); 340 ++(m_erroneous); 337 ++(m_ScanSummary.FilesErroneous); 338 m_ScanSummary.FileListErroneous.push_back( SSFileInfo( *i2, _("HAL error/No HAL data for this file."))); 341 339 err_occured = true; 342 340 } … … 344 342 { 345 343 g_warning( "%s: %s", G_STRLOC, cxe.what().c_str() ); 346 ++(m_erroneous); 344 ++(m_ScanSummary.FilesErroneous); 345 m_ScanSummary.FileListErroneous.push_back( SSFileInfo( *i2, _("URI Conversion Error."))); 347 346 err_occured = true; 348 347 } … … 351 350 if( !err_occured ) 352 351 { 353 try{354 if (!Audio::typefind(*i2, type))355 {356 ++(m_erroneous) ;357 continue;358 }359 }360 catch (Glib::ConvertError & cxe)361 {362 ++(m_erroneous) ;363 continue;364 }365 366 track[ATTRIBUTE_TYPE] = type ;367 368 352 Glib::RefPtr<Gio::File> file = Gio::File::create_for_uri((*i2).c_str()); 369 353 Glib::RefPtr<Gio::FileInfo> info = file->query_info(G_FILE_ATTRIBUTE_TIME_MODIFIED, Gio::FILE_QUERY_INFO_NONE); … … 374 358 if (mtime != 0 && mtime == get<gint64>(track[ATTRIBUTE_MTIME].get())) 375 359 { 376 ++m_ uptodate;360 ++m_ScanSummary.FilesUpToDate; 377 361 } 378 362 else … … 380 364 if( !m_MetadataReaderTagLib.get( *i2, track ) ) 381 365 { 382 ++m_erroneous; 366 ++m_ScanSummary.FilesErroneous; 367 m_ScanSummary.FileListErroneous.push_back( SSFileInfo( *i2, _("Could not acquire metadata using taglib-gio."))); 383 368 } 384 369 else try{ … … 388 373 { 389 374 case SCAN_RESULT_OK: 390 ++m_ added;375 ++m_ScanSummary.FilesAdded; 391 376 break; 392 377 393 378 case SCAN_RESULT_ERROR: 394 ++m_erroneous; 379 ++m_ScanSummary.FilesErroneous; 380 m_ScanSummary.FileListErroneous.push_back( SSFileInfo( *i2, _("Error inserting file into database."))); 395 381 break; 396 382 397 383 case SCAN_RESULT_UPDATE: 398 ++m_updated; 384 ++m_ScanSummary.FilesUpdated; 385 m_ScanSummary.FileListUpdated.push_back( SSFileInfo( *i2, _("Updated."))); 399 386 break; 400 387 } … … 414 401 } 415 402 } 416 417 pthreaddata->ScanRun.emit( m_total++, 0 ); 403 404 m_ScanSummary.FilesTotal++; 405 406 if( m_ScanSummary.FilesTotal % 50 ) 407 { 408 pthreaddata->ScanRun.emit( m_ScanSummary.FilesTotal, 0 ); 409 } 418 410 } 419 411 … … 427 419 m_SQL->exec_sql( "UPDATE album SET album_new = 0" ); 428 420 429 gint64 added = 0, erroneous = 0, uptodate = 0, updated = 0, total = 0;421 m_ScanSummary = ScanSummary(); 430 422 431 423 Util::FileList collection; … … 466 458 collection.clear(); 467 459 Util::collect_audio_paths_recursive( insert_path, collection ); 468 total += collection.size();460 m_ScanSummary.FilesTotal += collection.size(); 469 461 } 470 462 catch( Glib::ConvertError & cxe ) … … 478 470 if( g_atomic_int_get(&pthreaddata->m_ScanStop) ) 479 471 { 480 pthreaddata->ScanEnd.emit( added, uptodate, updated, erroneous, collection.size());472 pthreaddata->ScanEnd.emit( m_ScanSummary ); 481 473 return; 482 474 } … … 489 481 try{ 490 482 491 URI u (*i, true);492 493 if( u.get_protocol() == URI::PROTOCOL_FILE)483 URI u( *i3, true ); 484 485 if( u.get_protocol() == URI::PROTOCOL_FILE ) 494 486 { 495 496 487 bool err_occured = false; 497 488 498 #ifdef HAVE_HAL489 #ifdef HAVE_HAL 499 490 try{ 500 491 … … 517 508 { 518 509 g_warning( "%s: %s", G_STRLOC, cxe.what() ); 519 ++( erroneous);510 ++(m_ScanSummary.FilesErroneous); 520 511 err_occured = true; 521 512 } … … 523 514 { 524 515 g_warning( "%s: %s", G_STRLOC, cxe.what().c_str() ); 525 ++( erroneous);516 ++(m_ScanSummary.FilesErroneous); 526 517 err_occured = true; 527 518 } 528 #endif519 #endif 529 520 530 521 if( !err_occured ) 531 522 { 532 try{533 if (!Audio::typefind(*i3, type))534 {535 ++(erroneous) ;536 continue;537 }538 }539 catch (Glib::ConvertError & cxe)540 {541 ++(erroneous) ;542 continue;543 }544 545 track[ATTRIBUTE_TYPE] = type ;546 547 523 Glib::RefPtr<Gio::File> file = Gio::File::create_for_uri((*i3).c_str()); 548 524 Glib::RefPtr<Gio::FileInfo> info = file->query_info(G_FILE_ATTRIBUTE_TIME_MODIFIED, Gio::FILE_QUERY_INFO_NONE); … … 553 529 if (mtime != 0 && mtime == get<gint64>(track[ATTRIBUTE_MTIME].get())) 554 530 { 555 ++( uptodate);531 ++(m_ScanSummary.FilesUpToDate); 556 532 } 557 533 else … … 559 535 if( !m_MetadataReaderTagLib.get( *i3, track ) ) 560 536 { 561 ++(erroneous) ; 537 ++m_ScanSummary.FilesErroneous; 538 m_ScanSummary.FileListErroneous.push_back( SSFileInfo( *i3, _("Could not acquire metadata using taglib-gio."))); 562 539 } 563 540 else try{ 564 541 ScanResult status = insert( track, *i3, insert_path_sql ); 565 542 566 switch( status)543 switch( status ) 567 544 { 568 545 case SCAN_RESULT_OK: 569 ++ (added);546 ++m_ScanSummary.FilesAdded; 570 547 break; 571 548 572 549 case SCAN_RESULT_ERROR: 573 ++(erroneous) ; 550 ++m_ScanSummary.FilesErroneous; 551 m_ScanSummary.FileListErroneous.push_back( SSFileInfo( *i3, _("Error inserting file into database."))); 574 552 break; 575 553 576 554 case SCAN_RESULT_UPDATE: 577 ++(updated) ; 555 ++m_ScanSummary.FilesUpdated; 556 m_ScanSummary.FileListUpdated.push_back( SSFileInfo( *i3, _("Updated."))); 578 557 break; 579 558 } 580 }581 catch( Glib::ConvertError & cxe )582 {559 } 560 catch( Glib::ConvertError & cxe ) 561 { 583 562 g_warning("%s: %s", G_STRLOC, cxe.what().c_str() ); 584 }563 } 585 564 } 586 565 } … … 597 576 } 598 577 599 pthreaddata->ScanEnd.emit( added, uptodate, updated, erroneous, total);578 pthreaddata->ScanEnd.emit( m_ScanSummary ); 600 579 } 601 580 -
mpx/mlibmanager.cc
r986 r989 212 212 213 213 void 214 MLibManager::scan_end (gint64,gint64,gint64,gint64,gint64)214 MLibManager::scan_end( ScanSummary const& ) 215 215 { 216 216 Gtk::Widget::set_sensitive(true); -
mpx/mlibmanager.hh
r979 r989 71 71 72 72 void 73 scan_end (gint64,gint64,gint64,gint64,gint64);73 scan_end( ScanSummary const& ); 74 74 75 75 void 76 76 scan_start (); 77 77 78 78 79 void 79 80 populate_volumes (); 80 81 82 81 83 void 82 84 build_fstree (std::string const& root_path); 83 84 void85 append_path (std::string const& root_path, Gtk::TreeIter & root_iter);86 87 void88 prescan_path (std::string const& path, Gtk::TreeIter & iter);89 85 90 86 int 91 87 fstree_sort (const Gtk::TreeIter & iter_a, const Gtk::TreeIter & iter_b); 88 89 void 90 append_path (std::string const& root_path, Gtk::TreeIter & root_iter); 91 92 void 93 prescan_path (std::string const& path, Gtk::TreeIter & iter); 92 94 93 95 bool -
mpx/mpx.cc
r983 r989 2046 2046 2047 2047 void 2048 Player::unmount_ready_callback (Glib::RefPtr<Gio::AsyncResult>& res)2048 Player::unmount_ready_callback( Glib::RefPtr<Gio::AsyncResult>& res ) 2049 2049 { 2050 2050 } … … 2058 2058 2059 2059 void 2060 Player::on_library_scan_run( gint64 x, gint64 y)2060 Player::on_library_scan_run( gint64 a, gint64 b ) 2061 2061 { 2062 2062 m_Statusbar->pop(); 2063 m_Statusbar->push((boost::format(_("Library Scan: %1% / %2%")) % x % y).str());2064 } 2065 2066 void 2067 Player::on_library_scan_end( gint64 x, gint64 y, gint64 a, gint64 b, gint64 s)2063 m_Statusbar->push((boost::format(_("Library Scan: %1% Items")) % a).str()); 2064 } 2065 2066 void 2067 Player::on_library_scan_end( ScanSummary const& summary ) 2068 2068 { 2069 2069 m_Statusbar->pop(); 2070 m_Statusbar->push((boost::format(_("Library Scan: Done (%1% Items (files/folders) scanned, %2% files added, %3% files up to date, %4% updated, %5% erroneous)")) % s % x % y % a % b).str());2070 m_Statusbar->push((boost::format(_("Library Scan: Done (%1% Items scanned, %2% Files added, %3% Files up to date, %4% updated, %5% erroneous)")) % summary.FilesTotal % summary.FilesAdded % summary.FilesUpToDate % summary.FilesUpdated % summary.FilesErroneous ).str()); 2071 2071 m_Library.execSQL((boost::format ("INSERT INTO meta (last_scan_date) VALUES (%lld)") % (gint64(time(NULL)))).str()); 2072 2072 } -
mpx/mpx.hh
r954 r989 348 348 349 349 void 350 on_library_scan_end( gint64,gint64,gint64,gint64,gint64);350 on_library_scan_end(ScanSummary const&); 351 351 352 352
