⛏️ index : haiku.git

/*
 * Copyright 2003-2014 Haiku, Inc. All rights reserved.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *		JΓ©rΓ΄me Duval, jerome.duval@free.fr
 * 		Michael Phipps
 *		John Scipione, jscipione@gmail.com
 *		Puck Meerburg, puck@puckipedia.nl
 */
#ifndef SCREEN_SAVER_APP_H
#define SCREEN_SAVER_APP_H


#include "PasswordWindow.h"
#include "ScreenSaverSettings.h"
#include "ScreenSaverRunner.h"
#include "ScreenSaverWindow.h"

#include <Application.h>
#include <MessageRunner.h>


const static uint32 kMsgResumeSaver = 'RSSV';


class ScreenBlanker : public BApplication {
public:
								ScreenBlanker();
								~ScreenBlanker();

	virtual	void				ReadyToRun();

	virtual	bool				QuitRequested();
	virtual	void				ArgvReceived(int argc, char** argv);
	virtual	void				MessageReceived(BMessage* message);

			bool				IsPasswordWindowShown() const;

private:
			bool				_LoadAddOn();
			void				_ShowPasswordWindow();
			void				_QueueResumeScreenSaver();
			void				_TurnOnScreen();
			void				_SetDPMSMode(uint32 mode);
			void				_QueueTurnOffScreen();
			void				_Shutdown();

			ScreenSaverSettings	fSettings;
			ScreenSaverWindow*	fWindow;
			ScreenSaverRunner*	fSaverRunner;
			PasswordWindow*		fPasswordWindow;

			bigtime_t			fBlankTime;
			bool				fImmediateLock;
			bool				fTestSaver;
			BMessageRunner*		fResumeRunner;

			BMessageRunner*		fStandByScreenRunner;
			BMessageRunner*		fSuspendScreenRunner;
			BMessageRunner*		fTurnOffScreenRunner;
};

#endif	// SCREEN_SAVER_APP_H