From 966daa1c321b6f68b7daed0013ba0b061f480ec0 Mon Sep 17 00:00:00 2001 From: Mill J Date: Tue, 27 Apr 2021 01:40:18 +0000 Subject: [PATCH] Replace wxBusyInfo with wxProgressDialog --- src/Browser.cpp | 49 ++++++++++++++++++++++++++++++++---------------- src/Browser.hpp | 1 + src/Database.cpp | 6 +++--- 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/src/Browser.cpp b/src/Browser.cpp index 23baa0a..378c473 100644 --- a/src/Browser.cpp +++ b/src/Browser.cpp @@ -409,20 +409,18 @@ void Browser::OnDragAndDropToSampleListView(wxDropFilesEvent& event) { wxString* dropped = event.GetFiles(); wxASSERT(dropped); - + wxBusyCursor busy_cursor; wxWindowDisabler window_disabler; - wxBusyInfo busy_info("Adding files, please wait...", this); - + wxString name; wxArrayString files; - - // wxProgressDialog* progressDialog = new wxProgressDialog("Adding files..", "Adding files, please wait...", - // event.GetNumberOfFiles(), this, - // wxPD_APP_MODAL | wxPD_SMOOTH | wxPD_CAN_ABORT | - // wxPD_CAN_SKIP); - // progressDialog->CenterOnParent(wxBOTH); - + wxProgressDialog* progressDialog = new wxProgressDialog("Adding files..", "Adding files, please wait...", + event.GetNumberOfFiles(), this, + wxPD_APP_MODAL | wxPD_SMOOTH | wxPD_CAN_ABORT | + wxPD_AUTO_HIDE); + progressDialog->CenterOnParent(wxBOTH); + for (int i = 0; i < event.GetNumberOfFiles(); i++) { name = dropped[i]; @@ -434,29 +432,40 @@ void Browser::OnDragAndDropToSampleListView(wxDropFilesEvent& event) { wxDir::GetAllFiles(name, &files); } + progressDialog->Pulse("Reading Samples",NULL); } - + + progressDialog->SetRange(files.size()); for (size_t i = 0; i < files.size(); i++) { Browser::AddSamples(files[i]); + progressDialog->Update(i, wxString::Format("Adding %s", files[i].AfterLast('/'))); + + if(progressDialog->WasCancelled()) + break; } + progressDialog->Destroy(); } } void Browser::OnAutoImportDir() { - Settings settings(m_ConfigFilepath, m_DatabaseFilepath); + Settings settings(this,m_ConfigFilepath, m_DatabaseFilepath); wxBusyCursor busy_cursor; wxWindowDisabler window_disabler; - wxBusyInfo busy_info("Adding files, please wait...", this); - + wxString dir = settings.GetImportDirPath(); wxString name; wxArrayString files; size_t number_of_files = wxDir::GetAllFiles(dir, &files, wxEmptyString, wxDIR_DEFAULT); - + + wxProgressDialog* progressDialog = new wxProgressDialog("Adding files..", "Adding files, please wait...", + (int)number_of_files, this, + wxPD_APP_MODAL | wxPD_SMOOTH | wxPD_CAN_ABORT | + wxPD_AUTO_HIDE); + progressDialog->CenterOnParent(wxBOTH); for ( size_t i = 0; i < number_of_files; i++) { name = files[i]; @@ -468,12 +477,20 @@ void Browser::OnAutoImportDir() { wxDir::GetAllFiles(name, &files); } + progressDialog->Pulse("Reading Samples",NULL); } - + + progressDialog->SetRange(files.size()); + for (size_t i = 0; i < files.size(); i++) { Browser::AddSamples(files[i]); + progressDialog->Update(i, wxString::Format("Adding %s", files[i].AfterLast('/'))); + + if(progressDialog->WasCancelled()) + break; } + progressDialog->Destroy(); } void LogDragResult(wxDragResult result) diff --git a/src/Browser.hpp b/src/Browser.hpp index b9f2a05..947ad95 100644 --- a/src/Browser.hpp +++ b/src/Browser.hpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/src/Database.cpp b/src/Database.cpp index 2e017fc..3ed052c 100644 --- a/src/Database.cpp +++ b/src/Database.cpp @@ -111,9 +111,9 @@ void Database::InsertSample(int favorite, std::string filename, rc = sqlite3_bind_int(m_Stmt, 9, bitrate); rc = sqlite3_bind_text(m_Stmt, 10, path.c_str(), path.size(), SQLITE_STATIC); rc = sqlite3_bind_int(m_Stmt, 11, trashed); - - rc = sqlite3_step(m_Stmt); - + + rc = sqlite3_step(m_Stmt); + if (rc != SQLITE_DONE) { wxLogDebug("No data inserted. Error code: %d: Msg: %s", rc , sqlite3_errmsg(m_Database));