Added ITrack methods for getting column values for types other than

strings. Required an SDK bump.
This commit is contained in:
casey langen 2017-03-20 21:13:28 -07:00
parent 04eb8c13ea
commit bde694e9a8
10 changed files with 111 additions and 4 deletions

View File

@ -87,6 +87,36 @@ std::string IndexerTrack::GetValue(const char* metakey) {
return "";
}
unsigned long long IndexerTrack::GetUint64(const char* key, unsigned long long defaultValue) {
try { return std::stoull(GetValue(key)); }
catch (...) { }
return defaultValue;
}
long long IndexerTrack::GetInt64(const char* key, long long defaultValue) {
try { return std::stoll(GetValue(key)); }
catch (...) {}
return defaultValue;
}
unsigned long IndexerTrack::GetUint32(const char* key, unsigned long defaultValue) {
try { return std::stoul(GetValue(key)); }
catch (...) {}
return defaultValue;
}
long IndexerTrack::GetInt32(const char* key, unsigned int defaultValue) {
try { return std::stol(GetValue(key)); }
catch (...) {}
return defaultValue;
}
double IndexerTrack::GetDouble(const char* key, double defaultValue) {
try { return std::stod(GetValue(key)); }
catch (...) {}
return defaultValue;
}
void IndexerTrack::SetValue(const char* metakey, const char* value) {
if (metakey && value) {
this->internalMetadata->metadata.insert(

View File

@ -51,6 +51,11 @@ namespace musik { namespace core {
virtual std::string GetValue(const char* metakey);
virtual int GetValue(const char* key, char* dst, int size);
virtual unsigned long long GetUint64(const char* key, unsigned long long defaultValue = 0ULL);
virtual long long GetInt64(const char* key, long long defaultValue = 0LL);
virtual unsigned long GetUint32(const char* key, unsigned long defaultValue = 0);
virtual long GetInt32(const char* key, unsigned int defaultValue = 0);
virtual double GetDouble(const char* key, double defaultValue = 0.0f);
virtual std::string Uri();
virtual int Uri(char* dst, int size);

View File

@ -71,6 +71,36 @@ std::string LibraryTrack::GetValue(const char* metakey) {
return "";
}
unsigned long long LibraryTrack::GetUint64(const char* key, unsigned long long defaultValue) {
try { return std::stoull(GetValue(key)); }
catch (...) {}
return defaultValue;
}
long long LibraryTrack::GetInt64(const char* key, long long defaultValue) {
try { return std::stoll(GetValue(key)); }
catch (...) {}
return defaultValue;
}
unsigned long LibraryTrack::GetUint32(const char* key, unsigned long defaultValue) {
try { return std::stoul(GetValue(key)); }
catch (...) {}
return defaultValue;
}
long LibraryTrack::GetInt32(const char* key, unsigned int defaultValue) {
try { return std::stol(GetValue(key)); }
catch (...) {}
return defaultValue;
}
double LibraryTrack::GetDouble(const char* key, double defaultValue) {
try { return std::stod(GetValue(key)); }
catch (...) {}
return defaultValue;
}
void LibraryTrack::SetValue(const char* metakey, const char* value) {
std::unique_lock<std::mutex> lock(this->data.mutex);
this->data.metadata.insert(std::pair<std::string, std::string>(metakey,value));

View File

@ -59,6 +59,12 @@ namespace musik { namespace core {
virtual void SetThumbnail(const char *data, long size);
virtual std::string GetValue(const char* metakey);
virtual unsigned long long GetUint64(const char* key, unsigned long long defaultValue = 0ULL);
virtual long long GetInt64(const char* key, long long defaultValue = 0LL);
virtual unsigned long GetUint32(const char* key, unsigned long defaultValue = 0);
virtual long GetInt32(const char* key, unsigned int defaultValue = 0);
virtual double GetDouble(const char* key, double defaultValue = 0.0f);
virtual std::string Uri();
virtual int GetValue(const char* key, char* dst, int size);

View File

@ -61,6 +61,26 @@ int RetainedTrack::Uri(char* dst, int size) {
return track->Uri(dst, size);
}
unsigned long long RetainedTrack::GetUint64(const char* key, unsigned long long defaultValue) {
return track->GetUint64(key, defaultValue);
}
long long RetainedTrack::GetInt64(const char* key, long long defaultValue) {
return track->GetInt64(key, defaultValue);
}
unsigned long RetainedTrack::GetUint32(const char* key, unsigned long defaultValue) {
return track->GetUint32(key, defaultValue);
}
long RetainedTrack::GetInt32(const char* key, unsigned int defaultValue) {
return track->GetInt32(key, defaultValue);
}
double RetainedTrack::GetDouble(const char* key, double defaultValue) {
return track->GetDouble(key, defaultValue);
}
unsigned long long RetainedTrack::GetId() {
return track->GetId();
}

View File

@ -45,7 +45,14 @@ namespace musik { namespace core {
virtual unsigned long long GetId();
virtual void Release();
virtual int GetValue(const char* key, char* dst, int size);
virtual unsigned long long GetUint64(const char* key, unsigned long long defaultValue = 0ULL);
virtual long long GetInt64(const char* key, long long defaultValue = 0LL);
virtual unsigned long GetUint32(const char* key, unsigned long defaultValue = 0);
virtual long GetInt32(const char* key, unsigned int defaultValue = 0);
virtual double GetDouble(const char* key, double defaultValue = 0.0f);
virtual int Uri(char* dst, int size);
private:

View File

@ -67,6 +67,12 @@ namespace musik { namespace core {
virtual std::string Uri() = 0;
virtual int GetValue(const char* key, char* dst, int size) = 0;
virtual unsigned long long GetUint64(const char* key, unsigned long long defaultValue = 0ULL) = 0;
virtual long long GetInt64(const char* key, long long defaultValue = 0LL) = 0;
virtual unsigned long GetUint32(const char* key, unsigned long defaultValue = 0) = 0;
virtual long GetInt32(const char* key, unsigned int defaultValue = 0) = 0;
virtual double GetDouble(const char* key, double defaultValue = 0.0f) = 0;
virtual int Uri(char* dst, int size) = 0;
virtual MetadataIteratorRange GetValues(const char* metakey) = 0;

View File

@ -40,6 +40,11 @@ namespace musik { namespace core { namespace sdk {
public:
virtual unsigned long long GetId() = 0;
virtual int GetValue(const char* key, char* dst, int size) = 0;
virtual unsigned long long GetUint64(const char* key, unsigned long long defaultValue = 0ULL) = 0;
virtual long long GetInt64(const char* key, long long defaultValue = 0LL) = 0;
virtual unsigned long GetUint32(const char* key, unsigned long defaultValue = 0) = 0;
virtual long GetInt32(const char* key, unsigned int defaultValue = 0) = 0;
virtual double GetDouble(const char* key, double defaultValue = 0.0f) = 0;
virtual int Uri(char* dst, int size) = 0;
};

View File

@ -108,5 +108,5 @@ namespace musik {
static const char* AlbumId = "album_id";
}
static const int SdkVersion = 3;
static const int SdkVersion = 4;
} } }

View File

@ -201,14 +201,12 @@ bool TrackListView::KeyPress(const std::string& key) {
if (key == "KEY_ENTER") {
if (headers.HeaderAt(this->GetSelectedIndex())) {
auto track = this->GetSelectedTrack();
unsigned long long fieldId = std::stoull(
track->GetValue(constants::Track::ALBUM_ID));
PlayQueueOverlays::ShowAddCategoryOverlay(
this->playback,
this->library,
constants::Track::ALBUM,
fieldId);
track->GetUint64(constants::Track::ALBUM_ID));
handled = true;
}