Show milliseconds in addition to minutes and seconds for the length of a sample in the ISO 8601 standard.
This commit is contained in:
parent
293c12a7e0
commit
6d0f66d144
|
|
@ -22,6 +22,7 @@
|
||||||
#include "Utility/Log.hpp"
|
#include "Utility/Log.hpp"
|
||||||
#include "Utility/Paths.hpp"
|
#include "Utility/Paths.hpp"
|
||||||
#include "Utility/Serialize.hpp"
|
#include "Utility/Serialize.hpp"
|
||||||
|
#include "Utility/Utils.hpp"
|
||||||
|
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <exception>
|
#include <exception>
|
||||||
|
|
@ -610,9 +611,7 @@ wxVector<wxVector<wxVariant>> cDatabase::LoadSamplesDatabase(wxDataViewTreeCtrl
|
||||||
int trashed = sqlite3_column_int(statement.stmt, 10);
|
int trashed = sqlite3_column_int(statement.stmt, 10);
|
||||||
wxString hive_name = std::string(reinterpret_cast<const char*>(sqlite3_column_text(statement.stmt, 11)));
|
wxString hive_name = std::string(reinterpret_cast<const char*>(sqlite3_column_text(statement.stmt, 11)));
|
||||||
|
|
||||||
wxLongLong llLength = length;
|
wxString len = SampleHive::cUtils::Get().CalculateAndGetISOStandardTime(length);
|
||||||
int total_min = static_cast<int>((llLength / 60000).GetValue());
|
|
||||||
int total_sec = static_cast<int>(((llLength % 60000) / 1000).GetValue());
|
|
||||||
|
|
||||||
wxVector<wxVariant> vec;
|
wxVector<wxVariant> vec;
|
||||||
vec.reserve(12);
|
vec.reserve(12);
|
||||||
|
|
@ -685,7 +684,7 @@ wxVector<wxVector<wxVariant>> cDatabase::LoadSamplesDatabase(wxDataViewTreeCtrl
|
||||||
vec.push_back(sample_pack);
|
vec.push_back(sample_pack);
|
||||||
vec.push_back(sample_type);
|
vec.push_back(sample_type);
|
||||||
vec.push_back(wxString::Format("%d", channels));
|
vec.push_back(wxString::Format("%d", channels));
|
||||||
vec.push_back(wxString::Format("%2i:%02i", total_min, total_sec));
|
vec.push_back(len);
|
||||||
vec.push_back(wxString::Format("%d", sample_rate));
|
vec.push_back(wxString::Format("%d", sample_rate));
|
||||||
vec.push_back(wxString::Format("%d", bitrate));
|
vec.push_back(wxString::Format("%d", bitrate));
|
||||||
vec.push_back(path);
|
vec.push_back(path);
|
||||||
|
|
@ -738,9 +737,7 @@ wxVector<wxVector<wxVariant>>cDatabase::FilterDatabaseBySampleName(const std::st
|
||||||
int bitrate = sqlite3_column_int(statement.stmt, 7);
|
int bitrate = sqlite3_column_int(statement.stmt, 7);
|
||||||
wxString path = wxString(std::string(reinterpret_cast<const char*>(sqlite3_column_text(statement.stmt, 8))));
|
wxString path = wxString(std::string(reinterpret_cast<const char*>(sqlite3_column_text(statement.stmt, 8))));
|
||||||
|
|
||||||
wxLongLong llLength = length;
|
wxString len = SampleHive::cUtils::Get().CalculateAndGetISOStandardTime(length);
|
||||||
int total_min = static_cast<int>((llLength / 60000).GetValue());
|
|
||||||
int total_sec = static_cast<int>(((llLength % 60000) / 1000).GetValue());
|
|
||||||
|
|
||||||
wxVector<wxVariant> vec;
|
wxVector<wxVariant> vec;
|
||||||
|
|
||||||
|
|
@ -761,7 +758,7 @@ wxVector<wxVector<wxVariant>>cDatabase::FilterDatabaseBySampleName(const std::st
|
||||||
vec.push_back(sample_pack);
|
vec.push_back(sample_pack);
|
||||||
vec.push_back(sample_type);
|
vec.push_back(sample_type);
|
||||||
vec.push_back(wxString::Format("%d", channels));
|
vec.push_back(wxString::Format("%d", channels));
|
||||||
vec.push_back(wxString::Format("%2i:%02i", total_min, total_sec));
|
vec.push_back(len);
|
||||||
vec.push_back(wxString::Format("%d", sample_rate));
|
vec.push_back(wxString::Format("%d", sample_rate));
|
||||||
vec.push_back(wxString::Format("%d", bitrate));
|
vec.push_back(wxString::Format("%d", bitrate));
|
||||||
vec.push_back(path);
|
vec.push_back(path);
|
||||||
|
|
@ -813,9 +810,7 @@ wxVector<wxVector<wxVariant>>cDatabase::FilterDatabaseByHiveName(const std::stri
|
||||||
int bitrate = sqlite3_column_int(statement.stmt, 7);
|
int bitrate = sqlite3_column_int(statement.stmt, 7);
|
||||||
wxString path = wxString(std::string(reinterpret_cast<const char*>(sqlite3_column_text(statement.stmt, 8))));
|
wxString path = wxString(std::string(reinterpret_cast<const char*>(sqlite3_column_text(statement.stmt, 8))));
|
||||||
|
|
||||||
wxLongLong llLength = length;
|
wxString len = SampleHive::cUtils::Get().CalculateAndGetISOStandardTime(length);
|
||||||
int total_min = static_cast<int>((llLength / 60000).GetValue());
|
|
||||||
int total_sec = static_cast<int>(((llLength % 60000) / 1000).GetValue());
|
|
||||||
|
|
||||||
wxVector<wxVariant> vec;
|
wxVector<wxVariant> vec;
|
||||||
|
|
||||||
|
|
@ -832,7 +827,7 @@ wxVector<wxVector<wxVariant>>cDatabase::FilterDatabaseByHiveName(const std::stri
|
||||||
vec.push_back(sample_pack);
|
vec.push_back(sample_pack);
|
||||||
vec.push_back(sample_type);
|
vec.push_back(sample_type);
|
||||||
vec.push_back(wxString::Format("%d", channels));
|
vec.push_back(wxString::Format("%d", channels));
|
||||||
vec.push_back(wxString::Format("%2i:%02i", total_min, total_sec));
|
vec.push_back(len);
|
||||||
vec.push_back(wxString::Format("%d", sample_rate));
|
vec.push_back(wxString::Format("%d", sample_rate));
|
||||||
vec.push_back(wxString::Format("%d", bitrate));
|
vec.push_back(wxString::Format("%d", bitrate));
|
||||||
vec.push_back(path);
|
vec.push_back(path);
|
||||||
|
|
@ -996,9 +991,7 @@ wxVector<wxVector<wxVariant>>cDatabase::RestoreFromTrashByFilename(const std::st
|
||||||
int trashed = sqlite3_column_int(statement.stmt, 10);
|
int trashed = sqlite3_column_int(statement.stmt, 10);
|
||||||
wxString hive_name = std::string(reinterpret_cast<const char*>(sqlite3_column_text(statement.stmt, 11)));
|
wxString hive_name = std::string(reinterpret_cast<const char*>(sqlite3_column_text(statement.stmt, 11)));
|
||||||
|
|
||||||
wxLongLong llLength = length;
|
wxString len = SampleHive::cUtils::Get().CalculateAndGetISOStandardTime(length);
|
||||||
int total_min = static_cast<int>((llLength / 60000).GetValue());
|
|
||||||
int total_sec = static_cast<int>(((llLength % 60000) / 1000).GetValue());
|
|
||||||
|
|
||||||
wxVector<wxVariant> vec;
|
wxVector<wxVariant> vec;
|
||||||
|
|
||||||
|
|
@ -1017,7 +1010,7 @@ wxVector<wxVector<wxVariant>>cDatabase::RestoreFromTrashByFilename(const std::st
|
||||||
vec.push_back(sample_pack);
|
vec.push_back(sample_pack);
|
||||||
vec.push_back(sample_type);
|
vec.push_back(sample_type);
|
||||||
vec.push_back(wxString::Format("%d", channels));
|
vec.push_back(wxString::Format("%d", channels));
|
||||||
vec.push_back(wxString::Format("%2i:%02i", total_min, total_sec));
|
vec.push_back(len);
|
||||||
vec.push_back(wxString::Format("%d", sample_rate));
|
vec.push_back(wxString::Format("%d", sample_rate));
|
||||||
vec.push_back(wxString::Format("%d", bitrate));
|
vec.push_back(wxString::Format("%d", bitrate));
|
||||||
vec.push_back(path);
|
vec.push_back(path);
|
||||||
|
|
|
||||||
|
|
@ -230,7 +230,7 @@ void cMainFrame::OnMediaFinished(wxMediaEvent& event)
|
||||||
SH_LOG_DEBUG("Stopping timer.");
|
SH_LOG_DEBUG("Stopping timer.");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_pTransportControls->SetSamplePositionText("--:--/--:--");
|
m_pTransportControls->SetSamplePositionText("--:--.---/--:--.---");
|
||||||
PopStatusText(1);
|
PopStatusText(1);
|
||||||
this->SetStatusText(_("Stopped"), 1);
|
this->SetStatusText(_("Stopped"), 1);
|
||||||
}
|
}
|
||||||
|
|
@ -239,18 +239,9 @@ void cMainFrame::OnMediaFinished(wxMediaEvent& event)
|
||||||
void cMainFrame::UpdateElapsedTime(wxTimerEvent& event)
|
void cMainFrame::UpdateElapsedTime(wxTimerEvent& event)
|
||||||
{
|
{
|
||||||
wxString duration, position;
|
wxString duration, position;
|
||||||
wxLongLong llLength, llTell;
|
|
||||||
|
|
||||||
llLength = m_pMediaCtrl->Length();
|
duration = SampleHive::cUtils::Get().CalculateAndGetISOStandardTime(m_pMediaCtrl->Length());
|
||||||
int total_min = static_cast<int>((llLength / 60000).GetValue());
|
position = SampleHive::cUtils::Get().CalculateAndGetISOStandardTime(m_pMediaCtrl->Tell());
|
||||||
int total_sec = static_cast<int>(((llLength % 60000) / 1000).GetValue());
|
|
||||||
|
|
||||||
llTell = m_pMediaCtrl->Tell();
|
|
||||||
int current_min = static_cast<int>((llTell / 60000).GetValue());
|
|
||||||
int current_sec = static_cast<int>(((llTell % 60000) / 1000).GetValue());
|
|
||||||
|
|
||||||
duration.Printf(wxT("%2i:%02i"), total_min, total_sec);
|
|
||||||
position.Printf(wxT("%2i:%02i"), current_min, current_sec);
|
|
||||||
|
|
||||||
m_pTransportControls->SetSamplePositionText(wxString::Format(wxT("%s/%s"), position.c_str(), duration.c_str()));
|
m_pTransportControls->SetSamplePositionText(wxString::Format(wxT("%s/%s"), position.c_str(), duration.c_str()));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ cTransportControls::cTransportControls(wxWindow* window, wxMediaCtrl& mediaCtrl)
|
||||||
m_pVolumeSlider->SetMaxSize(wxSize(120, -1));
|
m_pVolumeSlider->SetMaxSize(wxSize(120, -1));
|
||||||
|
|
||||||
// Sample position static text
|
// Sample position static text
|
||||||
m_pSamplePosition = new wxStaticText(this, SampleHive::ID::BC_SamplePosition, "--:--/--:--",
|
m_pSamplePosition = new wxStaticText(this, SampleHive::ID::BC_SamplePosition, "--:--.---/--:--.---",
|
||||||
wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE_HORIZONTAL);
|
wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE_HORIZONTAL);
|
||||||
|
|
||||||
// Transport control buttons
|
// Transport control buttons
|
||||||
|
|
@ -112,7 +112,7 @@ cTransportControls::cTransportControls(wxWindow* window, wxMediaCtrl& mediaCtrl)
|
||||||
m_pMainSizer->Add(m_pSettingsButton, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
|
m_pMainSizer->Add(m_pSettingsButton, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
|
||||||
m_pMainSizer->Add(0,0,1, wxALL | wxEXPAND, 0);
|
m_pMainSizer->Add(0,0,1, wxALL | wxEXPAND, 0);
|
||||||
m_pMainSizer->Add(m_pSamplePosition, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
|
m_pMainSizer->Add(m_pSamplePosition, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
|
||||||
m_pMainSizer->Add(30,0,0, wxALL | wxEXPAND, 0);
|
m_pMainSizer->Add(60,0,0, wxALL | wxEXPAND, 0);
|
||||||
m_pMainSizer->Add(m_pMuteButton, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
|
m_pMainSizer->Add(m_pMuteButton, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
|
||||||
m_pMainSizer->Add(m_pVolumeSlider, 1, wxALL | wxALIGN_CENTER_VERTICAL, 2);
|
m_pMainSizer->Add(m_pVolumeSlider, 1, wxALL | wxALIGN_CENTER_VERTICAL, 2);
|
||||||
m_pMainSizer->Add(m_pAutoPlayCheck, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
|
m_pMainSizer->Add(m_pAutoPlayCheck, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2);
|
||||||
|
|
@ -193,7 +193,7 @@ void cTransportControls::OnClickStop(wxCommandEvent& event)
|
||||||
// Send custom event to MainFrame to stop the timer
|
// Send custom event to MainFrame to stop the timer
|
||||||
SampleHive::cSignal::SendTimerStopStatus(*this);
|
SampleHive::cSignal::SendTimerStopStatus(*this);
|
||||||
|
|
||||||
m_pSamplePosition->SetLabel("--:--/--:--");
|
m_pSamplePosition->SetLabel("--:--.---/--:--.---");
|
||||||
|
|
||||||
// Send custom event to MainFrame to set the statusbar status
|
// Send custom event to MainFrame to set the statusbar status
|
||||||
SampleHive::cSignal::SendSetStatusBarStatus(_("Stopped"), 1, *this);
|
SampleHive::cSignal::SendSetStatusBarStatus(_("Stopped"), 1, *this);
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@
|
||||||
#include <wx/dir.h>
|
#include <wx/dir.h>
|
||||||
#include <wx/gdicmn.h>
|
#include <wx/gdicmn.h>
|
||||||
#include <wx/progdlg.h>
|
#include <wx/progdlg.h>
|
||||||
|
#include <wx/string.h>
|
||||||
|
|
||||||
namespace SampleHive {
|
namespace SampleHive {
|
||||||
|
|
||||||
|
|
@ -125,9 +126,7 @@ namespace SampleHive {
|
||||||
sample.SetSampleRate(tags.GetAudioInfo().sample_rate);
|
sample.SetSampleRate(tags.GetAudioInfo().sample_rate);
|
||||||
sample.SetBitrate(tags.GetAudioInfo().bitrate);
|
sample.SetBitrate(tags.GetAudioInfo().bitrate);
|
||||||
|
|
||||||
wxLongLong llLength = sample.GetLength();
|
wxString length = CalculateAndGetISOStandardTime(sample.GetLength());
|
||||||
int total_min = static_cast<int>((llLength / 60000).GetValue());
|
|
||||||
int total_sec = static_cast<int>(((llLength % 60000) / 1000).GetValue());
|
|
||||||
|
|
||||||
wxVector<wxVariant> data;
|
wxVector<wxVariant> data;
|
||||||
|
|
||||||
|
|
@ -141,7 +140,7 @@ namespace SampleHive {
|
||||||
data.push_back(sample.GetSamplePack());
|
data.push_back(sample.GetSamplePack());
|
||||||
data.push_back("");
|
data.push_back("");
|
||||||
data.push_back(wxString::Format("%d", sample.GetChannels()));
|
data.push_back(wxString::Format("%d", sample.GetChannels()));
|
||||||
data.push_back(wxString::Format("%2i:%02i", total_min, total_sec));
|
data.push_back(length);
|
||||||
data.push_back(wxString::Format("%d", sample.GetSampleRate()));
|
data.push_back(wxString::Format("%d", sample.GetSampleRate()));
|
||||||
data.push_back(wxString::Format("%d", sample.GetBitrate()));
|
data.push_back(wxString::Format("%d", sample.GetBitrate()));
|
||||||
data.push_back(path);
|
data.push_back(path);
|
||||||
|
|
@ -232,4 +231,22 @@ namespace SampleHive {
|
||||||
return sample_path.ToStdString();
|
return sample_path.ToStdString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxString cUtils::CalculateAndGetISOStandardTime(wxLongLong length)
|
||||||
|
{
|
||||||
|
const int min_digits = 2;
|
||||||
|
const size_t max_digits = 2;
|
||||||
|
wxString iso_length;
|
||||||
|
|
||||||
|
int min = static_cast<int>((length / 60000).GetValue());
|
||||||
|
int sec = static_cast<int>(((length % 60000) / 1000).GetValue());
|
||||||
|
int ms = static_cast<int>((length % 1000).GetValue());
|
||||||
|
|
||||||
|
iso_length = wxString::Format("%s:%s.%s",
|
||||||
|
wxString::Format("%0*i", min_digits, min).Left(max_digits),
|
||||||
|
wxString::Format("%0*i", min_digits, sec).Left(max_digits),
|
||||||
|
wxString::Format("%0*i", min_digits + 1, ms).Left(max_digits + 1));
|
||||||
|
|
||||||
|
return iso_length;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ namespace SampleHive {
|
||||||
bool doGetFilename = true);
|
bool doGetFilename = true);
|
||||||
void AddSamples(wxArrayString& files, wxWindow* parent);
|
void AddSamples(wxArrayString& files, wxWindow* parent);
|
||||||
void OnAutoImportDir(const wxString& pathToDirectory, wxWindow* parent);
|
void OnAutoImportDir(const wxString& pathToDirectory, wxWindow* parent);
|
||||||
|
wxString CalculateAndGetISOStandardTime(wxLongLong length);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// -------------------------------------------------------------------
|
// -------------------------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue