From 47e1f28f1fe9fecf969d63f059b8ec8c0184605e Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Fri, 22 Mar 2013 22:42:05 +0100 Subject: Added Engine->Messageing system. Implemented LoadStatus Message. Added ProgressBar widget. Made FileBrowser chdir to old value (needs further fixing). More printf->hugin ports. --- src/drumkitloader.cc | 46 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 11 deletions(-) (limited to 'src/drumkitloader.cc') diff --git a/src/drumkitloader.cc b/src/drumkitloader.cc index 9f514d0..53af7db 100644 --- a/src/drumkitloader.cc +++ b/src/drumkitloader.cc @@ -29,9 +29,11 @@ #include #include "drumkitparser.h" +#include "drumgizmo.h" -DrumKitLoader::DrumKitLoader() +DrumKitLoader::DrumKitLoader(DrumGizmo *dg) { + drumgizmo = dg; is_done = false; quitit = false; } @@ -75,19 +77,41 @@ void DrumKitLoader::thread_main() if(quitit) return; - Instruments::iterator i = kit->instruments.begin(); - while(i != kit->instruments.end()) { - Instrument *instr = *i; + unsigned int count = 0; + { // Count total number of files that need loading: + Instruments::iterator i = kit->instruments.begin(); + while(i != kit->instruments.end()) { + Instrument *instr = *i; - std::vector::iterator a = instr->audiofiles.begin(); - while(a != instr->audiofiles.end()) { - // usleep(10000); - AudioFile *af = *a; - af->load(); - a++; + count += instr->audiofiles.size(); + i++; } + } - i++; + { // Now actually load them: + unsigned int loaded = 0; + Instruments::iterator i = kit->instruments.begin(); + while(i != kit->instruments.end()) { + Instrument *instr = *i; + + std::vector::iterator a = instr->audiofiles.begin(); + while(a != instr->audiofiles.end()) { + //usleep(5000); + AudioFile *af = *a; + af->load(); + loaded++; + + LoadStatus *ls = new LoadStatus(); + ls->number_of_files = count; + ls->numer_of_files_loaded = loaded; + ls->current_file = af->filename; + drumgizmo->sendMessage(ls); + + a++; + } + + i++; + } } mutex.lock(); -- cgit v1.2.3