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
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);
// Binding events.
@ -543,11 +548,6 @@ MainFrame::MainFrame()
m_BottomRightPanelMainSizer->SetSizeHints(m_BottomRightPanel);
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
LoadDatabase();

View File

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

View File

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