Skip to content

Commit

Permalink
Upgrade preferences page to foobar1.0 style
Browse files Browse the repository at this point in the history
  • Loading branch information
Chronial committed Oct 4, 2015
1 parent 38a7e4c commit 062a864
Show file tree
Hide file tree
Showing 6 changed files with 175 additions and 118 deletions.
88 changes: 0 additions & 88 deletions config.cpp

This file was deleted.

36 changes: 9 additions & 27 deletions foo_trackpos.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,19 @@ DECLARE_COMPONENT_VERSION( "Track Positioner", VERSION,
"by Chronial\n"
"\n"
"Version: " VERSION "\n"
"Compiled: " __DATE__ " - " __TIME__ )
"Compiled: " __DATE__ " - " __TIME__ );

// Settings
VALIDATE_COMPONENT_FILENAME("foo_trackpos.dll");

// {87C514D4-776B-4ed2-9CBB-E4AD52C40707}
static const GUID guid_cfgMovePlaylistContext = { 0x87c514d4, 0x776b, 0x4ed2, { 0x9c, 0xbb, 0xe4, 0xad, 0x52, 0xc4, 0x7, 0x7 } };
cfg_bool cfgMovePlaylistContext (guid_cfgMovePlaylistContext, true);

// {53E78C2B-D357-40a5-A070-93CCFEA08217}
static const GUID guid_cfgMovePlaylistExists = { 0x53e78c2b, 0xd357, 0x40a5, { 0xa0, 0x70, 0x93, 0xcc, 0xfe, 0xa0, 0x82, 0x17 } };
cfg_bool cfgMovePlaylistExists (guid_cfgMovePlaylistExists, false);
extern cfg_bool cfgMovePlaylistContext;
extern cfg_bool cfgMovePlaylistExists;
extern cfg_bool cfgFocus;
extern cfg_bool cfgEmptyQueue;
extern cfg_bool cfgEnqueueOnLock;
extern cfg_bool cfgSetPlaybackOrder;
extern cfg_bool cfgNoPlayPlace;

// {74A30E17-F2C6-465d-94BA-97EADBB352B0}
static const GUID guid_cfgFocus = { 0x74a30e17, 0xf2c6, 0x465d, { 0x94, 0xba, 0x97, 0xea, 0xdb, 0xb3, 0x52, 0xb0 } };
cfg_bool cfgFocus (guid_cfgFocus, true);

// {E5A09D5D-2742-4102-9A37-14EF626552A4}
static const GUID guid_cfgEmptyQueue = { 0xe5a09d5d, 0x2742, 0x4102, { 0x9a, 0x37, 0x14, 0xef, 0x62, 0x65, 0x52, 0xa4 } };
cfg_bool cfgEmptyQueue (guid_cfgEmptyQueue,true);

// {ECD7510C-63C5-465c-822C-4054252FA391}
static const GUID guid_cfgEnqueueOnLock = { 0xecd7510c, 0x63c5, 0x465c, { 0x82, 0x2c, 0x40, 0x54, 0x25, 0x2f, 0xa3, 0x91 } };
cfg_bool cfgEnqueueOnLock (guid_cfgEnqueueOnLock,true);

// {D1EE91FE-CFEF-4425-95DA-485691DD54B3}
static const GUID guid_cfgSetPlaybackOrder = { 0xd1ee91fe, 0xcfef, 0x4425, { 0x95, 0xda, 0x48, 0x56, 0x91, 0xdd, 0x54, 0xb3 } };
cfg_bool cfgSetPlaybackOrder (guid_cfgSetPlaybackOrder, true);

// {8079575C-9728-4b2d-892B-8A0D9F54713B}
static const GUID guid_cfgNoPlayPlace = { 0x8079575c, 0x9728, 0x4b2d, { 0x89, 0x2b, 0x8a, 0xd, 0x9f, 0x54, 0x71, 0x3b } };
cfg_bool cfgNoPlayPlace (guid_cfgNoPlayPlace, true);

char * guidToSource (GUID guid){
char * out = new char[100];
Expand Down
30 changes: 30 additions & 0 deletions foo_trackpos.sln
Original file line number Diff line number Diff line change
Expand Up @@ -13,32 +13,62 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "foobar2000_SDK", "..\SDK\fo
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "foo_trackpos", "foo_trackpos.vcxproj", "{E6B1B2D9-953B-4110-9AA5-268652FBE35F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "foobar2000_ATL_helpers", "..\ATLHelpers\foobar2000_ATL_helpers.vcxproj", "{622E8B19-8109-4717-BD4D-9657AA78363E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{EBFFFB4E-261D-44D3-B89C-957B31A0BF9C}.Debug|Win32.ActiveCfg = Debug|Win32
{EBFFFB4E-261D-44D3-B89C-957B31A0BF9C}.Debug|Win32.Build.0 = Debug|Win32
{EBFFFB4E-261D-44D3-B89C-957B31A0BF9C}.Debug|x64.ActiveCfg = Debug|x64
{EBFFFB4E-261D-44D3-B89C-957B31A0BF9C}.Debug|x64.Build.0 = Debug|x64
{EBFFFB4E-261D-44D3-B89C-957B31A0BF9C}.Release|Win32.ActiveCfg = Release|Win32
{EBFFFB4E-261D-44D3-B89C-957B31A0BF9C}.Release|Win32.Build.0 = Release|Win32
{EBFFFB4E-261D-44D3-B89C-957B31A0BF9C}.Release|x64.ActiveCfg = Release|x64
{EBFFFB4E-261D-44D3-B89C-957B31A0BF9C}.Release|x64.Build.0 = Release|x64
{71AD2674-065B-48F5-B8B0-E1F9D3892081}.Debug|Win32.ActiveCfg = Debug|Win32
{71AD2674-065B-48F5-B8B0-E1F9D3892081}.Debug|Win32.Build.0 = Debug|Win32
{71AD2674-065B-48F5-B8B0-E1F9D3892081}.Debug|x64.ActiveCfg = Debug|x64
{71AD2674-065B-48F5-B8B0-E1F9D3892081}.Debug|x64.Build.0 = Debug|x64
{71AD2674-065B-48F5-B8B0-E1F9D3892081}.Release|Win32.ActiveCfg = Release|Win32
{71AD2674-065B-48F5-B8B0-E1F9D3892081}.Release|Win32.Build.0 = Release|Win32
{71AD2674-065B-48F5-B8B0-E1F9D3892081}.Release|x64.ActiveCfg = Release|x64
{71AD2674-065B-48F5-B8B0-E1F9D3892081}.Release|x64.Build.0 = Release|x64
{EE47764E-A202-4F85-A767-ABDAB4AFF35F}.Debug|Win32.ActiveCfg = Debug|Win32
{EE47764E-A202-4F85-A767-ABDAB4AFF35F}.Debug|Win32.Build.0 = Debug|Win32
{EE47764E-A202-4F85-A767-ABDAB4AFF35F}.Debug|x64.ActiveCfg = Debug|x64
{EE47764E-A202-4F85-A767-ABDAB4AFF35F}.Debug|x64.Build.0 = Debug|x64
{EE47764E-A202-4F85-A767-ABDAB4AFF35F}.Release|Win32.ActiveCfg = Release|Win32
{EE47764E-A202-4F85-A767-ABDAB4AFF35F}.Release|Win32.Build.0 = Release|Win32
{EE47764E-A202-4F85-A767-ABDAB4AFF35F}.Release|x64.ActiveCfg = Release|x64
{EE47764E-A202-4F85-A767-ABDAB4AFF35F}.Release|x64.Build.0 = Release|x64
{E8091321-D79D-4575-86EF-064EA1A4A20D}.Debug|Win32.ActiveCfg = Debug|Win32
{E8091321-D79D-4575-86EF-064EA1A4A20D}.Debug|Win32.Build.0 = Debug|Win32
{E8091321-D79D-4575-86EF-064EA1A4A20D}.Debug|x64.ActiveCfg = Debug|x64
{E8091321-D79D-4575-86EF-064EA1A4A20D}.Debug|x64.Build.0 = Debug|x64
{E8091321-D79D-4575-86EF-064EA1A4A20D}.Release|Win32.ActiveCfg = Release|Win32
{E8091321-D79D-4575-86EF-064EA1A4A20D}.Release|Win32.Build.0 = Release|Win32
{E8091321-D79D-4575-86EF-064EA1A4A20D}.Release|x64.ActiveCfg = Release|x64
{E8091321-D79D-4575-86EF-064EA1A4A20D}.Release|x64.Build.0 = Release|x64
{E6B1B2D9-953B-4110-9AA5-268652FBE35F}.Debug|Win32.ActiveCfg = Debug|Win32
{E6B1B2D9-953B-4110-9AA5-268652FBE35F}.Debug|Win32.Build.0 = Debug|Win32
{E6B1B2D9-953B-4110-9AA5-268652FBE35F}.Debug|x64.ActiveCfg = Debug|Win32
{E6B1B2D9-953B-4110-9AA5-268652FBE35F}.Release|Win32.ActiveCfg = Release|Win32
{E6B1B2D9-953B-4110-9AA5-268652FBE35F}.Release|Win32.Build.0 = Release|Win32
{E6B1B2D9-953B-4110-9AA5-268652FBE35F}.Release|x64.ActiveCfg = Release|Win32
{622E8B19-8109-4717-BD4D-9657AA78363E}.Debug|Win32.ActiveCfg = Debug|Win32
{622E8B19-8109-4717-BD4D-9657AA78363E}.Debug|Win32.Build.0 = Debug|Win32
{622E8B19-8109-4717-BD4D-9657AA78363E}.Debug|x64.ActiveCfg = Debug|x64
{622E8B19-8109-4717-BD4D-9657AA78363E}.Debug|x64.Build.0 = Debug|x64
{622E8B19-8109-4717-BD4D-9657AA78363E}.Release|Win32.ActiveCfg = Release|Win32
{622E8B19-8109-4717-BD4D-9657AA78363E}.Release|Win32.Build.0 = Release|Win32
{622E8B19-8109-4717-BD4D-9657AA78363E}.Release|x64.ActiveCfg = Release|x64
{622E8B19-8109-4717-BD4D-9657AA78363E}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
11 changes: 10 additions & 1 deletion foo_trackpos.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<CustomBuildBeforeTargets>PrepareForRun</CustomBuildBeforeTargets>
<IncludePath>..\..\wtl-9.0\Include;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
Expand Down Expand Up @@ -98,7 +99,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="config.cpp" />
<ClCompile Include="preferences.cpp" />
<ClCompile Include="foo_trackpos.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
Expand All @@ -115,6 +116,9 @@
<ProjectReference Include="..\..\pfc\pfc.vcxproj">
<Project>{ebfffb4e-261d-44d3-b89c-957b31a0bf9c}</Project>
</ProjectReference>
<ProjectReference Include="..\ATLHelpers\foobar2000_ATL_helpers.vcxproj">
<Project>{622e8b19-8109-4717-bd4d-9657aa78363e}</Project>
</ProjectReference>
<ProjectReference Include="..\foobar2000_component_client\foobar2000_component_client.vcxproj">
<Project>{71ad2674-065b-48f5-b8b0-e1f9d3892081}</Project>
</ProjectReference>
Expand All @@ -131,4 +135,9 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<ProjectExtensions>
<VisualStudio>
<UserProperties RESOURCE_FILE="foo_trackpos.rc" />
</VisualStudio>
</ProjectExtensions>
</Project>
123 changes: 123 additions & 0 deletions preferences.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
#include "stdafx.h"
#include "resource.h"

// {87C514D4-776B-4ed2-9CBB-E4AD52C40707}
static const GUID guid_cfgMovePlaylistContext = { 0x87c514d4, 0x776b, 0x4ed2, { 0x9c, 0xbb, 0xe4, 0xad, 0x52, 0xc4, 0x7, 0x7 } };
bool default_cfgMovePlaylistContext = true;
cfg_bool cfgMovePlaylistContext(guid_cfgMovePlaylistContext, default_cfgMovePlaylistContext);

// {53E78C2B-D357-40a5-A070-93CCFEA08217}
static const GUID guid_cfgMovePlaylistExists = { 0x53e78c2b, 0xd357, 0x40a5, { 0xa0, 0x70, 0x93, 0xcc, 0xfe, 0xa0, 0x82, 0x17 } };
bool default_cfgMovePlaylistExists = false;
cfg_bool cfgMovePlaylistExists(guid_cfgMovePlaylistExists, default_cfgMovePlaylistExists);

// {74A30E17-F2C6-465d-94BA-97EADBB352B0}
static const GUID guid_cfgFocus = { 0x74a30e17, 0xf2c6, 0x465d, { 0x94, 0xba, 0x97, 0xea, 0xdb, 0xb3, 0x52, 0xb0 } };
bool default_cfgFocus = true;
cfg_bool cfgFocus(guid_cfgFocus, default_cfgFocus);

// {E5A09D5D-2742-4102-9A37-14EF626552A4}
static const GUID guid_cfgEmptyQueue = { 0xe5a09d5d, 0x2742, 0x4102, { 0x9a, 0x37, 0x14, 0xef, 0x62, 0x65, 0x52, 0xa4 } };
bool default_cfgEmptyQueue = true;
cfg_bool cfgEmptyQueue(guid_cfgEmptyQueue, default_cfgEmptyQueue);

// {ECD7510C-63C5-465c-822C-4054252FA391}
static const GUID guid_cfgEnqueueOnLock = { 0xecd7510c, 0x63c5, 0x465c, { 0x82, 0x2c, 0x40, 0x54, 0x25, 0x2f, 0xa3, 0x91 } };
bool default_cfgEnqueueOnLock = true;
cfg_bool cfgEnqueueOnLock(guid_cfgEnqueueOnLock, default_cfgEnqueueOnLock);

// {D1EE91FE-CFEF-4425-95DA-485691DD54B3}
static const GUID guid_cfgSetPlaybackOrder = { 0xd1ee91fe, 0xcfef, 0x4425, { 0x95, 0xda, 0x48, 0x56, 0x91, 0xdd, 0x54, 0xb3 } };
bool default_cfgSetPlaybackOrder = true;
cfg_bool cfgSetPlaybackOrder(guid_cfgSetPlaybackOrder, default_cfgSetPlaybackOrder);

// {8079575C-9728-4b2d-892B-8A0D9F54713B}
static const GUID guid_cfgNoPlayPlace = { 0x8079575c, 0x9728, 0x4b2d, { 0x89, 0x2b, 0x8a, 0xd, 0x9f, 0x54, 0x71, 0x3b } };
bool default_cfgNoPlayPlace = true;
cfg_bool cfgNoPlayPlace(guid_cfgNoPlayPlace, default_cfgNoPlayPlace);


std::unordered_map<int, std::pair<cfg_bool*, bool>> bool_var_map({
{ IDC_EMPTY_QUEUE, { &cfgEmptyQueue, default_cfgEmptyQueue } },
{ IDC_FOCUS, { &cfgFocus, default_cfgFocus } },
{ IDC_MOVE_PLAYLIST_EXIST, { &cfgMovePlaylistExists, default_cfgMovePlaylistExists } },
{ IDC_MOVE_PLAYLIST_CONTEXT, { &cfgMovePlaylistContext, default_cfgMovePlaylistContext } },
{ IDC_LOCK_ENQUEUE, { &cfgEnqueueOnLock, default_cfgEnqueueOnLock } },
{ IDC_PLAYBACK_ORDER, { &cfgSetPlaybackOrder, default_cfgSetPlaybackOrder } },
{ IDC_NOPLAY_PLACE, { &cfgNoPlayPlace, default_cfgNoPlayPlace } },
});


class pref_page_window : public CDialogImpl<pref_page_window>, public preferences_page_instance
{
preferences_page_callback::ptr callback;
public:
enum { IDD = IDD_CONFIG };

pref_page_window(preferences_page_callback::ptr callback) : callback(callback) {}

BEGIN_MSG_MAP(pref_page_window)
MSG_WM_INITDIALOG(OnInitDialog)
MSG_WM_COMMAND(OnCommand)
END_MSG_MAP()

t_uint32 get_state(){
t_uint32 state = preferences_state::resettable;
if (isDirty())
state |= preferences_state::changed;
return state;
}

void apply(){
for (auto e : bool_var_map){
*e.second.first = IsDlgButtonChecked(e.first) != 0;
callback->on_state_changed();
}
};

bool isDirty(){
for (auto e : bool_var_map){
if (*(e.second.first) != (IsDlgButtonChecked(e.first) != 0)){
return true;
}
}
return false;
}

void reset(){
for (auto e: bool_var_map){
CheckDlgButton(e.first, e.second.second);
}
callback->on_state_changed();
};

LRESULT OnInitDialog(CWindow wndFocus, LPARAM lInitParam){
for (auto e : bool_var_map){
CheckDlgButton(e.first, *(e.second.first));
}
return 0;
}

void OnCommand(UINT uNotifyCode, int nID, CWindow wndCtl){
callback->on_state_changed();
}
};

class pref_page : public preferences_page_impl<pref_page_window>
{
const char * get_name(){
return "Track Positioner";
}

GUID get_guid(){
// {2A1FF559-732D-4dc9-9580-3F257FD3C54F}
static const GUID guid_preferences = { 0x2a1ff559, 0x732d, 0x4dc9, { 0x95, 0x80, 0x3f, 0x25, 0x7f, 0xd3, 0xc5, 0x4f } };
return guid_preferences;
}

GUID get_parent_guid(){
return preferences_page::guid_tools;
}
};

static preferences_page_factory_t<pref_page> g_pref;
5 changes: 3 additions & 2 deletions stdafx.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@
#include <ActivScp.h>
#include <ShellApi.h>

#include "../SDK/foobar2000.h"
#include "../helpers/helpers.h"
#include "../ATLHelpers/ATLHelpers.h"

#include <unordered_map>

0 comments on commit 062a864

Please sign in to comment.