mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
NowPlaying.dll: Added support for types NUMBER and YEAR
This commit is contained in:
parent
63c42fe3a5
commit
a57d75399c
@ -271,6 +271,14 @@ PLUGIN_EXPORT void Reload(void* data, void* rm, double* maxValue)
|
|||||||
{
|
{
|
||||||
measure->type = MEASURE_FILE;
|
measure->type = MEASURE_FILE;
|
||||||
}
|
}
|
||||||
|
else if (_wcsicmp(L"NUMBER", str) == 0)
|
||||||
|
{
|
||||||
|
measure->type = MEASURE_NUMBER;
|
||||||
|
}
|
||||||
|
else if (_wcsicmp(L"YEAR", str) == 0)
|
||||||
|
{
|
||||||
|
measure->type = MEASURE_YEAR;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::wstring error = L"NowPlaying.dll: Invalid PlayerType=";
|
std::wstring error = L"NowPlaying.dll: Invalid PlayerType=";
|
||||||
@ -328,16 +336,22 @@ PLUGIN_EXPORT double Update(void* data)
|
|||||||
return player->GetVolume();
|
return player->GetVolume();
|
||||||
|
|
||||||
case MEASURE_STATE:
|
case MEASURE_STATE:
|
||||||
return (UINT)player->GetState();
|
return player->GetState();
|
||||||
|
|
||||||
case MEASURE_STATUS:
|
case MEASURE_STATUS:
|
||||||
return (UINT)player->IsInitialized();
|
return player->IsInitialized();
|
||||||
|
|
||||||
case MEASURE_SHUFFLE:
|
case MEASURE_SHUFFLE:
|
||||||
return (UINT)player->GetShuffle();
|
return player->GetShuffle();
|
||||||
|
|
||||||
case MEASURE_REPEAT:
|
case MEASURE_REPEAT:
|
||||||
return (UINT)player->GetRepeat();
|
return player->GetRepeat();
|
||||||
|
|
||||||
|
case MEASURE_NUMBER:
|
||||||
|
return player->GetNumber();
|
||||||
|
|
||||||
|
case MEASURE_YEAR:
|
||||||
|
return player->GetYear();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0.0;
|
return 0.0;
|
||||||
|
@ -30,6 +30,8 @@ CPlayer::CPlayer() :
|
|||||||
m_TrackCount(),
|
m_TrackCount(),
|
||||||
m_Measures(),
|
m_Measures(),
|
||||||
m_State(),
|
m_State(),
|
||||||
|
m_Number(1),
|
||||||
|
m_Year(),
|
||||||
m_Shuffle(false),
|
m_Shuffle(false),
|
||||||
m_Repeat(false),
|
m_Repeat(false),
|
||||||
m_Duration(),
|
m_Duration(),
|
||||||
@ -204,4 +206,6 @@ void CPlayer::ClearData()
|
|||||||
m_Duration = 0;
|
m_Duration = 0;
|
||||||
m_Position = 0;
|
m_Position = 0;
|
||||||
m_Rating = 0;
|
m_Rating = 0;
|
||||||
|
m_Number = 0;
|
||||||
|
m_Year = 0;
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,9 @@ enum MeasureType
|
|||||||
MEASURE_STATE = 0x00000800,
|
MEASURE_STATE = 0x00000800,
|
||||||
MEASURE_STATUS = 0x00001000,
|
MEASURE_STATUS = 0x00001000,
|
||||||
MEASURE_SHUFFLE = 0x00002000,
|
MEASURE_SHUFFLE = 0x00002000,
|
||||||
MEASURE_REPEAT = 0x00004000
|
MEASURE_REPEAT = 0x00004000,
|
||||||
|
MEASURE_NUMBER = 0x00008000,
|
||||||
|
MEASURE_YEAR = 0x00010000
|
||||||
};
|
};
|
||||||
|
|
||||||
class CPlayer
|
class CPlayer
|
||||||
@ -97,6 +99,8 @@ public:
|
|||||||
UINT GetPosition() const { return m_Position; }
|
UINT GetPosition() const { return m_Position; }
|
||||||
UINT GetRating() const { return m_Rating; }
|
UINT GetRating() const { return m_Rating; }
|
||||||
UINT GetVolume() const { return m_Volume; }
|
UINT GetVolume() const { return m_Volume; }
|
||||||
|
UINT GetNumber() const { return m_Number; }
|
||||||
|
UINT GetYear() const { return m_Year; }
|
||||||
bool GetShuffle() const { return m_Shuffle; }
|
bool GetShuffle() const { return m_Shuffle; }
|
||||||
bool GetRepeat() const { return m_Repeat; }
|
bool GetRepeat() const { return m_Repeat; }
|
||||||
|
|
||||||
@ -122,6 +126,8 @@ protected:
|
|||||||
UINT m_Position; // Current position in seconds
|
UINT m_Position; // Current position in seconds
|
||||||
UINT m_Rating; // Track rating from 0 to 100
|
UINT m_Rating; // Track rating from 0 to 100
|
||||||
UINT m_Volume; // Volume from 0 to 100
|
UINT m_Volume; // Volume from 0 to 100
|
||||||
|
UINT m_Number;
|
||||||
|
UINT m_Year;
|
||||||
bool m_Shuffle;
|
bool m_Shuffle;
|
||||||
bool m_Repeat;
|
bool m_Repeat;
|
||||||
|
|
||||||
|
@ -166,6 +166,7 @@ void CPlayerAIMP::UpdateData()
|
|||||||
m_Title.assign(stringData, info->nTitleLen);
|
m_Title.assign(stringData, info->nTitleLen);
|
||||||
|
|
||||||
m_Duration = info->nDuration / 1000;
|
m_Duration = info->nDuration / 1000;
|
||||||
|
m_Number = (UINT)info->nTrackID;
|
||||||
|
|
||||||
m_Shuffle = (bool)SendMessage(m_Window, WM_AIMP_COMMAND, WM_AIMP_STATUS_GET, AIMP_STS_SHUFFLE);
|
m_Shuffle = (bool)SendMessage(m_Window, WM_AIMP_COMMAND, WM_AIMP_STATUS_GET, AIMP_STS_SHUFFLE);
|
||||||
m_Repeat = (bool)SendMessage(m_Window, WM_AIMP_COMMAND, WM_AIMP_STATUS_GET, AIMP_STS_REPEAT);
|
m_Repeat = (bool)SendMessage(m_Window, WM_AIMP_COMMAND, WM_AIMP_STATUS_GET, AIMP_STS_REPEAT);
|
||||||
|
@ -275,43 +275,58 @@ LRESULT CALLBACK CPlayerCAD::WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
|
|||||||
// TODO: Sent on track update?
|
// TODO: Sent on track update?
|
||||||
++player->m_TrackCount;
|
++player->m_TrackCount;
|
||||||
|
|
||||||
std::wstring data = (WCHAR*)cds->lpData;
|
WCHAR* data = (WCHAR*)cds->lpData;
|
||||||
std::wstring::size_type len = data.find_first_of(L'\t');
|
WCHAR* pos;
|
||||||
player->m_Title.assign(data, 0, len);
|
UINT index = 1;
|
||||||
data.erase(0, ++len);
|
while ((pos = wcschr(data, '\t')) != NULL)
|
||||||
|
{
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
player->m_Title.assign(data, pos - data);
|
||||||
|
break;
|
||||||
|
|
||||||
len = data.find_first_of(L'\t');
|
case 2:
|
||||||
player->m_Artist.assign(data, 0, len);
|
player->m_Artist.assign(data, pos - data);
|
||||||
data.erase(0, ++len);
|
break;
|
||||||
|
|
||||||
len = data.find_first_of(L'\t');
|
case 3:
|
||||||
player->m_Album.assign(data, 0, len);
|
player->m_Album.assign(data, pos - data);
|
||||||
data.erase(0, ++len);
|
break;
|
||||||
|
|
||||||
len = data.find_first_of(L'\t'); // Skip genre
|
case 5:
|
||||||
len = data.find_first_of(L'\t', ++len); // Skip year
|
player->m_Year = (UINT)_wtoi(data);
|
||||||
len = data.find_first_of(L'\t', ++len); // Skip comments
|
break;
|
||||||
len = data.find_first_of(L'\t', ++len); // Skip track no
|
|
||||||
data.erase(0, ++len);
|
|
||||||
|
|
||||||
len = data.find_first_of(L'\t');
|
case 7:
|
||||||
std::wstring tmpStr(data, 0, len);
|
player->m_Number = (UINT)_wtoi(data);
|
||||||
player->m_Duration = _wtoi(tmpStr.c_str());
|
break;
|
||||||
data.erase(0, ++len);
|
|
||||||
|
|
||||||
len = data.find_first_of(L'\t');
|
case 8:
|
||||||
player->m_FilePath.assign(data, 0, len);
|
player->m_Duration = (UINT)_wtoi(data);
|
||||||
data.erase(0, ++len);
|
break;
|
||||||
|
|
||||||
len = data.find_first_of(L'\t');
|
case 9:
|
||||||
tmpStr.assign(data, 0, len);
|
player->m_FilePath.assign(data, pos - data);
|
||||||
UINT rating = (_wtoi(tmpStr.c_str()) + 1) / 2; // From 0 - 10 to 0 - 5
|
break;
|
||||||
player->m_Rating = rating;
|
|
||||||
data.erase(0, ++len);
|
|
||||||
|
|
||||||
len = data.find_first_of(L'\t');
|
case 10:
|
||||||
player->m_CoverPath.assign(data, 0, len);
|
player->m_Rating = ((UINT)_wtoi(data) + 1) / 2; // 0 - 10 -> 0 - 5
|
||||||
data.erase(0, ++len);
|
break;
|
||||||
|
|
||||||
|
case 11:
|
||||||
|
player->m_CoverPath.assign(data, pos - data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
data = pos + 1;
|
||||||
|
++index;
|
||||||
|
|
||||||
|
if (index == 12)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (player->m_Measures & MEASURE_LYRICS)
|
if (player->m_Measures & MEASURE_LYRICS)
|
||||||
{
|
{
|
||||||
@ -436,7 +451,7 @@ void CPlayerCAD::SetPosition(int position)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Handles the SetVolume bang.
|
** Handles the SetRating bang.
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
void CPlayerCAD::SetRating(int rating)
|
void CPlayerCAD::SetRating(int rating)
|
||||||
|
@ -378,6 +378,12 @@ void CPlayerITunes::OnTrackChange()
|
|||||||
tmpVal /= 20L;
|
tmpVal /= 20L;
|
||||||
m_Rating = (UINT)tmpVal;
|
m_Rating = (UINT)tmpVal;
|
||||||
|
|
||||||
|
track->get_TrackNumber(&tmpVal);
|
||||||
|
m_Number = (UINT)tmpVal;
|
||||||
|
|
||||||
|
track->get_Year(&tmpVal);
|
||||||
|
m_Year = (UINT)tmpVal;
|
||||||
|
|
||||||
IITPlaylist* playlist;
|
IITPlaylist* playlist;
|
||||||
hr = track->get_Playlist(&playlist);
|
hr = track->get_Playlist(&playlist);
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
|
@ -397,6 +397,12 @@ void CPlayerWMP::UpdateData()
|
|||||||
m_Rating = rating;
|
m_Rating = rating;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spMedia->getItemInfo(CComBSTR(L"WM/TrackNumber"), &val);
|
||||||
|
m_Number = (UINT)_wtoi(val);
|
||||||
|
|
||||||
|
spMedia->getItemInfo(CComBSTR(L"WM/Year"), &val);
|
||||||
|
m_Year = (UINT)_wtoi(val);
|
||||||
|
|
||||||
double duration;
|
double duration;
|
||||||
spMedia->get_duration(&duration);
|
spMedia->get_duration(&duration);
|
||||||
m_Duration = (UINT)duration;
|
m_Duration = (UINT)duration;
|
||||||
|
@ -176,6 +176,8 @@ void CPlayerWinamp::UpdateData()
|
|||||||
m_Artist = tag->artist().toWString();
|
m_Artist = tag->artist().toWString();
|
||||||
m_Album = tag->album().toWString();
|
m_Album = tag->album().toWString();
|
||||||
m_Title = tag->title().toWString();
|
m_Title = tag->title().toWString();
|
||||||
|
m_Number = tag->track();
|
||||||
|
m_Year = tag->year();
|
||||||
|
|
||||||
if (m_Measures & MEASURE_LYRICS)
|
if (m_Measures & MEASURE_LYRICS)
|
||||||
{
|
{
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,1,3,7
|
FILEVERSION 1,1,4,0
|
||||||
PRODUCTVERSION PRODUCTVER
|
PRODUCTVERSION PRODUCTVER
|
||||||
FILEFLAGSMASK 0x17L
|
FILEFLAGSMASK 0x17L
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
@ -23,8 +23,8 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
BLOCK "040904E4"
|
BLOCK "040904E4"
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "FileVersion", "1.1.3.7"
|
VALUE "FileVersion", "1.1.4.0"
|
||||||
VALUE "LegalCopyright", "© 2011 - Birunthan Mohanathas"
|
VALUE "LegalCopyright", "© 2012 - Birunthan Mohanathas"
|
||||||
VALUE "OriginalFilename", "NowPlaying.dll"
|
VALUE "OriginalFilename", "NowPlaying.dll"
|
||||||
VALUE "ProductName", "Rainmeter"
|
VALUE "ProductName", "Rainmeter"
|
||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
|
Loading…
x
Reference in New Issue
Block a user