Reduce redundant database code

This commit is contained in:
Mathias Buhr 2021-07-24 11:57:56 +02:00
parent 7eccf406dc
commit 3558cac62d
4 changed files with 370 additions and 729 deletions

File diff suppressed because it is too large Load Diff

View File

@ -398,7 +398,12 @@ MainFrame::MainFrame()
// Intializing wxTimer // Intializing wxTimer
m_Timer = new wxTimer(this); m_Timer = new wxTimer(this);
m_TopWaveformPanel = new WaveformViewer(this, m_TopPanel, *m_Library, *m_MediaCtrl, *m_InfoBar, // Initialize the database
m_database = std::make_unique<Database>(*m_InfoBar, m_DatabaseFilepath);
m_database->CreateTableSamples();
m_database->CreateTableHives();
m_TopWaveformPanel = new WaveformViewer(this, m_TopPanel, *m_Library, *m_MediaCtrl, *m_database,
m_ConfigFilepath, m_DatabaseFilepath); m_ConfigFilepath, m_DatabaseFilepath);
// Binding events. // Binding events.
@ -543,11 +548,6 @@ MainFrame::MainFrame()
m_BottomRightPanelMainSizer->SetSizeHints(m_BottomRightPanel); m_BottomRightPanelMainSizer->SetSizeHints(m_BottomRightPanel);
m_BottomRightPanelMainSizer->Layout(); m_BottomRightPanelMainSizer->Layout();
// Initialize the database
m_database = std::make_unique<Database>(*m_InfoBar, m_DatabaseFilepath);
m_database->CreateTableSamples();
m_database->CreateTableHives();
// Restore the data previously added to Library // Restore the data previously added to Library
LoadDatabase(); LoadDatabase();

View File

@ -39,10 +39,10 @@
#include <sndfile.hh> #include <sndfile.hh>
WaveformViewer::WaveformViewer(wxWindow* parentFrame, wxWindow* window, wxDataViewListCtrl& library, WaveformViewer::WaveformViewer(wxWindow* parentFrame, wxWindow* window, wxDataViewListCtrl& library,
wxMediaCtrl& mediaCtrl, wxInfoBar& infoBar, wxMediaCtrl& mediaCtrl, Database& database,
const std::string& configFilepath, const std::string& databaseFilepath) const std::string& configFilepath, const std::string& databaseFilepath)
: wxPanel(window, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxNO_BORDER | wxFULL_REPAINT_ON_RESIZE), : wxPanel(window, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxNO_BORDER | wxFULL_REPAINT_ON_RESIZE),
m_ParentFrame(parentFrame), m_Window(window), m_Library(library), m_InfoBar(infoBar), m_MediaCtrl(mediaCtrl), m_ParentFrame(parentFrame), m_Window(window), m_Library(library), m_database(database), m_MediaCtrl(mediaCtrl),
m_ConfigFilepath(configFilepath), m_DatabaseFilepath(databaseFilepath) m_ConfigFilepath(configFilepath), m_DatabaseFilepath(databaseFilepath)
{ {
this->SetDoubleBuffered(true); this->SetDoubleBuffered(true);
@ -110,15 +110,13 @@ void WaveformViewer::OnPaint(wxPaintEvent& event)
void WaveformViewer::RenderPlayhead(wxDC& dc) void WaveformViewer::RenderPlayhead(wxDC& dc)
{ {
Database db(m_InfoBar);
int selected_row = m_Library.GetSelectedRow(); int selected_row = m_Library.GetSelectedRow();
if (selected_row < 0) if (selected_row < 0)
return; return;
wxString selected = m_Library.GetTextValue(selected_row, 1); wxString selected = m_Library.GetTextValue(selected_row, 1);
std::string path = db.GetSamplePathByFilename(m_DatabaseFilepath, selected.BeforeLast('.').ToStdString()); std::string path = m_database.GetSamplePathByFilename(selected.BeforeLast('.').ToStdString());
Tags tags(path); Tags tags(path);
@ -150,7 +148,6 @@ void WaveformViewer::RenderPlayhead(wxDC& dc)
void WaveformViewer::UpdateWaveformBitmap() void WaveformViewer::UpdateWaveformBitmap()
{ {
Database db(m_InfoBar);
Settings settings(m_ParentFrame, m_ConfigFilepath, m_DatabaseFilepath); Settings settings(m_ParentFrame, m_ConfigFilepath, m_DatabaseFilepath);
Serializer serializer(m_ConfigFilepath); Serializer serializer(m_ConfigFilepath);
@ -161,12 +158,12 @@ void WaveformViewer::UpdateWaveformBitmap()
wxString selection = m_Library.GetTextValue(selected_row, 1); wxString selection = m_Library.GetTextValue(selected_row, 1);
wxString filepath_with_extension = db.GetSamplePathByFilename(m_DatabaseFilepath, selection.BeforeLast('.').ToStdString()); wxString filepath_with_extension = m_database.GetSamplePathByFilename(selection.BeforeLast('.').ToStdString());
wxString filepath_without_extension = db.GetSamplePathByFilename(m_DatabaseFilepath, selection.ToStdString()); wxString filepath_without_extension = m_database.GetSamplePathByFilename(selection.ToStdString());
std::string extension = settings.ShouldShowFileExtension() ? std::string extension = settings.ShouldShowFileExtension() ?
db.GetSampleFileExtension(m_DatabaseFilepath, selection.ToStdString()) : m_database.GetSampleFileExtension(selection.ToStdString()) :
db.GetSampleFileExtension(m_DatabaseFilepath, selection.BeforeLast('.').ToStdString()); m_database.GetSampleFileExtension(selection.BeforeLast('.').ToStdString());
wxString path = selection.Contains(wxString::Format(".%s", extension)) ? wxString path = selection.Contains(wxString::Format(".%s", extension)) ?
filepath_with_extension : filepath_without_extension; filepath_with_extension : filepath_without_extension;
@ -293,15 +290,13 @@ void WaveformViewer::OnControlKeyUp(wxKeyEvent &event)
void WaveformViewer::OnMouseMotion(wxMouseEvent& event) void WaveformViewer::OnMouseMotion(wxMouseEvent& event)
{ {
Database db(m_InfoBar);
int selected_row = m_Library.GetSelectedRow(); int selected_row = m_Library.GetSelectedRow();
if (selected_row < 0) if (selected_row < 0)
return; return;
wxString selected = m_Library.GetTextValue(selected_row, 1); wxString selected = m_Library.GetTextValue(selected_row, 1);
std::string path = db.GetSamplePathByFilename(m_DatabaseFilepath, selected.BeforeLast('.').ToStdString()); std::string path = m_database.GetSamplePathByFilename(selected.BeforeLast('.').ToStdString());
Tags tags(path); Tags tags(path);
@ -335,14 +330,13 @@ void WaveformViewer::OnMouseMotion(wxMouseEvent& event)
void WaveformViewer::OnMouseLeftButtonDown(wxMouseEvent& event) void WaveformViewer::OnMouseLeftButtonDown(wxMouseEvent& event)
{ {
Database db(m_InfoBar);
int selected_row = m_Library.GetSelectedRow(); int selected_row = m_Library.GetSelectedRow();
if (selected_row < 0) if (selected_row < 0)
return; return;
wxString selected = m_Library.GetTextValue(selected_row, 1); wxString selected = m_Library.GetTextValue(selected_row, 1);
std::string path = db.GetSamplePathByFilename(m_DatabaseFilepath, selected.BeforeLast('.').ToStdString()); std::string path = m_database.GetSamplePathByFilename(selected.BeforeLast('.').ToStdString());
Tags tags(path); Tags tags(path);
@ -385,15 +379,13 @@ void WaveformViewer::OnMouseLeftButtonDown(wxMouseEvent& event)
void WaveformViewer::OnMouseLeftButtonUp(wxMouseEvent& event) void WaveformViewer::OnMouseLeftButtonUp(wxMouseEvent& event)
{ {
Database db(m_InfoBar);
int selected_row = m_Library.GetSelectedRow(); int selected_row = m_Library.GetSelectedRow();
if (selected_row < 0) if (selected_row < 0)
return; return;
wxString selected = m_Library.GetTextValue(selected_row, 1); wxString selected = m_Library.GetTextValue(selected_row, 1);
std::string path = db.GetSamplePathByFilename(m_DatabaseFilepath, selected.BeforeLast('.').ToStdString()); std::string path = m_database.GetSamplePathByFilename(selected.BeforeLast('.').ToStdString());
Tags tags(path); Tags tags(path);
@ -457,15 +449,13 @@ void WaveformViewer::SendLoopPoints()
SampleHive::SH_LoopPointsEvent event(SampleHive::SH_EVT_LOOP_POINTS_UPDATED, this->GetId()); SampleHive::SH_LoopPointsEvent event(SampleHive::SH_EVT_LOOP_POINTS_UPDATED, this->GetId());
event.SetEventObject(this); event.SetEventObject(this);
Database db(m_InfoBar);
int selected_row = m_Library.GetSelectedRow(); int selected_row = m_Library.GetSelectedRow();
if (selected_row < 0) if (selected_row < 0)
return; return;
wxString selected = m_Library.GetTextValue(selected_row, 1); wxString selected = m_Library.GetTextValue(selected_row, 1);
std::string path = db.GetSamplePathByFilename(m_DatabaseFilepath, selected.BeforeLast('.').ToStdString()); std::string path = m_database.GetSamplePathByFilename(selected.BeforeLast('.').ToStdString());
Tags tags(path); Tags tags(path);

View File

@ -20,6 +20,8 @@
#pragma once #pragma once
#include "Database.hpp"
#include <wx/dataview.h> #include <wx/dataview.h>
#include <wx/bitmap.h> #include <wx/bitmap.h>
#include <wx/colour.h> #include <wx/colour.h>
@ -37,7 +39,7 @@ class WaveformViewer : public wxPanel
{ {
public: public:
WaveformViewer(wxWindow* parentFrame, wxWindow* window, wxDataViewListCtrl& library, WaveformViewer(wxWindow* parentFrame, wxWindow* window, wxDataViewListCtrl& library,
wxMediaCtrl& mediaCtrl, wxInfoBar& infoBar, wxMediaCtrl& mediaCtrl, Database& database,
const std::string& configFilepath, const std::string& databaseFilepath); const std::string& configFilepath, const std::string& databaseFilepath);
~WaveformViewer(); ~WaveformViewer();
@ -47,7 +49,7 @@ class WaveformViewer : public wxPanel
wxWindow* m_Window; wxWindow* m_Window;
wxDataViewListCtrl& m_Library; wxDataViewListCtrl& m_Library;
wxInfoBar& m_InfoBar; Database& m_database;
wxMediaCtrl& m_MediaCtrl; wxMediaCtrl& m_MediaCtrl;
const std::string& m_ConfigFilepath; const std::string& m_ConfigFilepath;