From 86e9c4a2972d91b41fa40c885eb85d06e9e21d8c Mon Sep 17 00:00:00 2001 From: apoorv569 Date: Sun, 2 May 2021 08:21:25 +0530 Subject: [PATCH] Fixed issue with samples not being deleted from database. --- src/Browser.cpp | 32 ++++++++++++++++++++------------ src/Database.cpp | 12 +++++++++--- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/Browser.cpp b/src/Browser.cpp index 378c473..9fa8135 100644 --- a/src/Browser.cpp +++ b/src/Browser.cpp @@ -466,6 +466,7 @@ void Browser::OnAutoImportDir() 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]; @@ -477,6 +478,7 @@ void Browser::OnAutoImportDir() { wxDir::GetAllFiles(name, &files); } + progressDialog->Pulse("Reading Samples",NULL); } @@ -485,11 +487,13 @@ void Browser::OnAutoImportDir() 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(); } @@ -794,7 +798,7 @@ void Browser::OnShowSampleListViewContextMenu(wxDataViewEvent& event) "%s from database? " "Warning this change is " "permanent, and cannot be " - "undone.", selection), + "undone.", sample.AfterLast('/')), wxMessageBoxCaptionStr, wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION | wxSTAY_ON_TOP | @@ -817,8 +821,8 @@ void Browser::OnShowSampleListViewContextMenu(wxDataViewEvent& event) { case wxID_YES: { - msg = wxString::Format("Selected row: %d :: Sample: %s", selected_row, selection); - db.RemoveSampleFromDatabase(selection.ToStdString()); + msg = wxString::Format("Selected row: %d :: Sample: %s", selected_row, filename); + db.RemoveSampleFromDatabase(filename); m_SampleListView->DeleteItem(selected_row); } break; @@ -838,8 +842,12 @@ void Browser::OnShowSampleListViewContextMenu(wxDataViewEvent& event) for (int i = 0; i < rows; i++) { int row = m_SampleListView->ItemToRow(items[i]); - wxString sel = m_SampleListView->GetTextValue(row, 1); - db.RemoveSampleFromDatabase(sel.ToStdString()); + + wxString text_value = m_SampleListView->GetTextValue(row, 1); + std::string multi_selection = text_value.Contains(wxString::Format(".%s", extension)) ? + text_value.BeforeLast('.').ToStdString() : text_value.ToStdString() ; + + db.RemoveSampleFromDatabase(multi_selection); m_SampleListView->DeleteItem(row); } } @@ -865,9 +873,9 @@ void Browser::OnShowSampleListViewContextMenu(wxDataViewEvent& event) if (m_SampleListView->GetToggleValue(selected_row, 0)) { m_SampleListView->SetToggleValue(false, selected_row, 0); - db.UpdateFavoriteColumn(selection.BeforeLast('.').ToStdString(), 0); + db.UpdateFavoriteColumn(filename, 0); } - db.UpdateTrashColumn(selection.BeforeLast('.').ToStdString(), 1); + db.UpdateTrashColumn(filename, 1); m_TrashedItems->AppendItem(trash_root_node, selection); m_SampleListView->DeleteItem(selected_row); } @@ -879,16 +887,16 @@ void Browser::OnShowSampleListViewContextMenu(wxDataViewEvent& event) for (int i = 0; i < rows; i++) { int row = m_SampleListView->ItemToRow(items[i]); - wxString sel = m_SampleListView->GetTextValue(row, 1); + wxString multi_selection = m_SampleListView->GetTextValue(row, 1); if (m_SampleListView->GetToggleValue(row, 0)) { m_SampleListView->SetToggleValue(false, row, 0); - db.UpdateFavoriteColumn(sel.BeforeLast('.').ToStdString(), 0); + db.UpdateFavoriteColumn(multi_selection.BeforeLast('.').ToStdString(), 0); } - db.UpdateTrashColumn(sel.BeforeLast('.').ToStdString(), 1); - m_TrashedItems->AppendItem(trash_root_node, sel); + db.UpdateTrashColumn(multi_selection.BeforeLast('.').ToStdString(), 1); + m_TrashedItems->AppendItem(trash_root_node, multi_selection); m_SampleListView->DeleteItem(row); } } @@ -926,7 +934,7 @@ void Browser::OnShowSampleListViewContextMenu(wxDataViewEvent& event) void Browser::LoadDatabase() { - Settings settings(m_ConfigFilepath, m_DatabaseFilepath); + Settings settings(this, m_ConfigFilepath, m_DatabaseFilepath); Database db(*m_InfoBar); try diff --git a/src/Database.cpp b/src/Database.cpp index 3ed052c..fd740cb 100644 --- a/src/Database.cpp +++ b/src/Database.cpp @@ -113,7 +113,7 @@ void Database::InsertSample(int favorite, std::string filename, rc = sqlite3_bind_int(m_Stmt, 11, trashed); rc = sqlite3_step(m_Stmt); - + if (rc != SQLITE_DONE) { wxLogDebug("No data inserted. Error code: %d: Msg: %s", rc , sqlite3_errmsg(m_Database)); @@ -155,7 +155,13 @@ void Database::InsertSample(int favorite, std::string filename, if (rc == SQLITE_INTERNAL) wxLogDebug("SQLITE_INTERNAL"); - sqlite3_close(m_Database); + rc = sqlite3_close(m_Database); + + if (rc == SQLITE_OK) + wxLogDebug("DB Closed.."); + else + wxLogDebug("Error! Cannot close DB, Error code: %d, Error message: %s", rc, m_ErrMsg); + } catch (const std::exception &exception) { @@ -453,7 +459,7 @@ void Database::RemoveSampleFromDatabase(std::string filename) { rc = sqlite3_open("sample.hive", &m_Database); - std::string remove = "DELETE * FROM SAMPLES WHERE FILENAME = ?;"; + std::string remove = "DELETE FROM SAMPLES WHERE FILENAME = ?;"; rc = sqlite3_prepare_v2(m_Database, remove.c_str(), remove.size(), &m_Stmt, NULL);