owntone-server/win32/FireflyShell/AdvancedPage.h

98 lines
3.0 KiB
C++

/*
*(C) 2006 Roku LLC
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License Version 2 as published
* by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* without any warranty; without even the implied warranty of
* merchantability or fitness for a particular purpose. See the GNU General
* Public License for more details.
*
* Please read README.txt in the same directory as this source file for
* further license information.
*/
#ifndef ADVANCEDPAGE_H
#define ADVANCEDPAGE_H 1
#include "resource.h"
#include "ServiceControl.h"
/// @todo Users shouldn't be able to paste non-numbers into the port number.
class CAdvancedPage :
public CPropertyPageImpl<CAdvancedPage>,
public CWinDataExchange<CAdvancedPage>,
public ServiceStatusObserver
{
public:
enum { IDD = IDD_PAGE_ADVANCED };
private:
typedef CPropertyPageImpl<CAdvancedPage> base;
enum ServiceState
{
Pending = 0,
Running = 1,
Stopped = 2
};
enum { TIMER_ID = 42 };
unsigned int m_server_port;
CUpDownCtrl m_port_spin;
CButton m_autostart_check;
void UpdateControls(Service::Status status);
void UpdateControls();
// ServiceStatusObserver
void OnServiceStatus(Service::Status old_status, Service::Status new_status);
BEGIN_MSG_MAP(CAdvancedPage)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_HANDLER_EX(IDC_SERVERPORT, EN_CHANGE, OnChange)
COMMAND_HANDLER_EX(IDC_AUTOSTART, BN_CLICKED, OnClickAutostart)
COMMAND_ID_HANDLER(IDC_STARTSERVICE, OnStartService)
COMMAND_ID_HANDLER(IDC_STOPSERVICE, OnStopService)
COMMAND_ID_HANDLER(IDC_WEBADMIN, OnWebAdmin)
MSG_WM_DESTROY(OnDestroy)
CHAIN_MSG_MAP(base)
END_MSG_MAP()
BEGIN_DDX_MAP(CAdvancedPage)
DDX_UINT(IDC_SERVERPORT, m_server_port);
DDX_CONTROL_HANDLE(IDC_PORTSPIN, m_port_spin);
DDX_CONTROL_HANDLE(IDC_AUTOSTART, m_autostart_check);
END_DDX_MAP()
// MessageHandlers;
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnStartService(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnStopService(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnWebAdmin(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
void OnDestroy();
void OnTimer(UINT id, TIMERPROC proc);
int OnApply();
void OnChange(UINT uCode, int nCtrlID, HWND hwndCtrl)
{
// Lots of things could have changed.
SetModified();
}
void OnClickAutostart(UINT uCode, int nCtrlID, HWND hwndCtrl)
{
// When clicked revert to being a normal checkbox in case
// we were intermediate.
if (m_autostart_check.GetButtonStyle() != BS_AUTOCHECKBOX)
{
m_autostart_check.SetButtonStyle(BS_AUTOCHECKBOX);
m_autostart_check.SetCheck(TRUE);
}
OnChange(uCode, nCtrlID, hwndCtrl);
}
};
#endif // ADVANCEDPAGE_H