#ifndef SCREEN_SAVER_FILTER_H
#define SCREEN_SAVER_FILTER_H
#include "ScreenSaverSettings.h"
#include <InputServerFilter.h>
#include <Locker.h>
#include <Looper.h>
#include <Node.h>
class BMessageRunner;
class ScreenSaverFilter;
class ScreenSaverController : public BLooper {
public:
ScreenSaverController(
ScreenSaverFilter* filter);
virtual void MessageReceived(BMessage* msg);
private:
ScreenSaverFilter* fFilter;
};
class ScreenSaverFilter : public BInputServerFilter, BLocker {
public:
ScreenSaverFilter();
virtual ~ScreenSaverFilter();
virtual filter_result Filter(BMessage* message, BList* outList);
void Suspend(BMessage* message);
void CheckTime();
void CheckCornerInvoke();
void ReloadSettings();
void SetIsRunning(bool isRunning);
private:
uint32 _SnoozeTime() {return fSnoozeTime;}
void _WatchSettings();
void _UpdateRectangles();
BRect _ScreenCorner(screen_corner pos,
uint32 cornerSize);
void _Invoke();
ScreenSaverSettings fSettings;
bigtime_t fLastEventTime;
bigtime_t fBlankTime;
bigtime_t fSnoozeTime;
screen_corner fBlankCorner;
screen_corner fNeverBlankCorner;
screen_corner fCurrentCorner;
BRect fBlankRect;
BRect fNeverBlankRect;
uint32 fFrameNum;
ScreenSaverController* fController;
node_ref fNodeRef;
BMessageRunner* fRunner;
BMessageRunner* fCornerRunner;
bool fWatchingDirectory;
bool fWatchingFile;
bool fIsRunning;
};
#endif