audacia/src/DeviceChange.h
Paul Licameli 7824e94030 Harmlessly qualify classes as final (or explicitly comment not)...
... Should have no effect on generated code, except perhaps some slight faster
virtual function calls.  Mostly useful as documentation of design intent.

Tried to mark every one of our classes that inherits from another, or is a
base for others, or has abstract virtual functions, and a few others besides.
2016-02-24 20:58:30 -05:00

62 lines
1.1 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
DeviceChange.h
Leland Lucius
**********************************************************************/
#ifndef __AUDACITY_DEVICECHANGE_H__
#define __AUDACITY_DEVICECHANGE_H__
#include "Audacity.h"
#include "Experimental.h"
#if defined(EXPERIMENTAL_DEVICE_CHANGE_HANDLER)
#if defined(__WXMSW__) || defined(__WXMAC__) || defined(HAVE_LIBUDEV_H)
#define HAVE_DEVICE_CHANGE
#endif
#if defined(HAVE_DEVICE_CHANGE)
#include <wx/event.h>
#include <wx/timer.h>
class DeviceChangeInterface /* not final */
{
public:
virtual ~DeviceChangeInterface() {};
virtual bool SetHandler(wxEvtHandler *handler) = 0;
virtual void Enable(bool enable = true) = 0;
};
class DeviceChangeHandler : public wxEvtHandler
{
public:
DeviceChangeHandler();
virtual ~DeviceChangeHandler();
void Enable(bool enable = true);
virtual void DeviceChangeNotification() = 0;
private:
void OnChange(wxCommandEvent & evt);
void OnTimer(wxTimerEvent & evt);
DeviceChangeInterface *mListener;
wxTimer mTimer;
DECLARE_EVENT_TABLE()
};
#endif
#endif
#endif