* ScreenCornerSelector is now a BControl and fully keyboard navigable.
* simplified drawing a bit, and got rid of those scary scale*() stuff (which also results in better looks). The monitor now looks like the one in Screen; I think it should either be a very reduced form or a very detailed form, but anything in between often looks just odd. * It now also listens to B_MOUSE_DOWN incl. mouse tracking, not only to B_MOUSE_UP. * Less flickering on state changes (and focus change). * Loading settings no longer overwrites defaults missing from the settings. * Renamed ScreenSaverSettings::GetBlankCorner() to BlankCorner(), LoadSettings() to Load(), GetState() to GetModuleState(), .... * Some more cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17783 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -12,12 +12,12 @@
|
|||||||
|
|
||||||
|
|
||||||
enum screen_corner {
|
enum screen_corner {
|
||||||
NONE = -1,
|
NO_CORNER = -1,
|
||||||
UPLEFT,
|
UP_LEFT_CORNER,
|
||||||
UPRIGHT,
|
UP_RIGHT_CORNER,
|
||||||
DOWNRIGHT,
|
DOWN_RIGHT_CORNER,
|
||||||
DOWNLEFT,
|
DOWN_LEFT_CORNER,
|
||||||
CENTER
|
CENTER_CORNER
|
||||||
};
|
};
|
||||||
|
|
||||||
// time flags
|
// time flags
|
||||||
@@ -37,7 +37,8 @@ class ScreenSaverSettings {
|
|||||||
public:
|
public:
|
||||||
ScreenSaverSettings();
|
ScreenSaverSettings();
|
||||||
|
|
||||||
bool LoadSettings();
|
bool Load();
|
||||||
|
void Save();
|
||||||
void Defaults();
|
void Defaults();
|
||||||
BPath& Path() { return fSettingsPath; }
|
BPath& Path() { return fSettingsPath; }
|
||||||
|
|
||||||
@@ -49,15 +50,15 @@ class ScreenSaverSettings {
|
|||||||
bigtime_t SuspendTime() { return fSuspendTime; }
|
bigtime_t SuspendTime() { return fSuspendTime; }
|
||||||
bigtime_t OffTime() { return fOffTime; }
|
bigtime_t OffTime() { return fOffTime; }
|
||||||
|
|
||||||
screen_corner GetBlankCorner() { return fBlankCorner; }
|
screen_corner BlankCorner() { return fBlankCorner; }
|
||||||
screen_corner GetNeverBlankCorner() { return fNeverBlankCorner; }
|
screen_corner NeverBlankCorner() { return fNeverBlankCorner; }
|
||||||
bool LockEnable() { return fLockEnabled; }
|
bool LockEnable() { return fLockEnabled; }
|
||||||
bigtime_t PasswordTime() { return fPasswordTime; }
|
bigtime_t PasswordTime() { return fPasswordTime; }
|
||||||
const char *Password() { return fPassword.String(); }
|
const char *Password() { return fPassword.String(); }
|
||||||
const char *LockMethod() { return fLockMethod.String(); }
|
const char *LockMethod() { return fLockMethod.String(); }
|
||||||
bool IsNetworkPassword() { return strcmp(fLockMethod.String(), "custom") != 0; }
|
bool IsNetworkPassword() { return strcmp(fLockMethod.String(), "custom") != 0; }
|
||||||
const char *ModuleName() { return fModuleName.String(); }
|
const char *ModuleName() { return fModuleName.String(); }
|
||||||
status_t GetState(const char *name, BMessage *stateMsg);
|
status_t GetModuleState(const char *name, BMessage *stateMsg);
|
||||||
|
|
||||||
void SetWindowFrame(const BRect &fr) { fWindowFrame = fr; }
|
void SetWindowFrame(const BRect &fr) { fWindowFrame = fr; }
|
||||||
void SetWindowTab(int32 tab) { fWindowTab = tab; }
|
void SetWindowTab(int32 tab) { fWindowTab = tab; }
|
||||||
@@ -74,9 +75,9 @@ class ScreenSaverSettings {
|
|||||||
// Cannot set network password from here.
|
// Cannot set network password from here.
|
||||||
void SetLockMethod(const char *method) { fLockMethod = method; }
|
void SetLockMethod(const char *method) { fLockMethod = method; }
|
||||||
void SetModuleName(const char *mn) { fModuleName = mn; }
|
void SetModuleName(const char *mn) { fModuleName = mn; }
|
||||||
void SetState(const char *name, BMessage *stateMsg);
|
void SetModuleState(const char *name, BMessage *stateMsg);
|
||||||
void SaveSettings();
|
|
||||||
BMessage& GetSettings();
|
BMessage& Message();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BRect fWindowFrame;
|
BRect fWindowFrame;
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ ScreenSaverFilter::ScreenSaverFilter()
|
|||||||
fLastEventTime(0),
|
fLastEventTime(0),
|
||||||
fBlankTime(0),
|
fBlankTime(0),
|
||||||
fSnoozeTime(0),
|
fSnoozeTime(0),
|
||||||
fCurrentCorner(NONE),
|
fCurrentCorner(NO_CORNER),
|
||||||
fEnabled(false),
|
fEnabled(false),
|
||||||
fFrameNum(0),
|
fFrameNum(0),
|
||||||
fRunner(NULL),
|
fRunner(NULL),
|
||||||
@@ -192,10 +192,10 @@ ScreenSaverFilter::ReloadSettings()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fSettings.LoadSettings();
|
fSettings.Load();
|
||||||
|
|
||||||
fBlankCorner = fSettings.GetBlankCorner();
|
fBlankCorner = fSettings.BlankCorner();
|
||||||
fNeverBlankCorner = fSettings.GetNeverBlankCorner();
|
fNeverBlankCorner = fSettings.NeverBlankCorner();
|
||||||
fBlankTime = fSnoozeTime = fSettings.BlankTime();
|
fBlankTime = fSnoozeTime = fSettings.BlankTime();
|
||||||
CheckTime();
|
CheckTime();
|
||||||
|
|
||||||
@@ -274,19 +274,19 @@ ScreenSaverFilter::_ScreenCorner(screen_corner corner, uint32 cornerSize)
|
|||||||
BRect frame = BScreen().Frame();
|
BRect frame = BScreen().Frame();
|
||||||
|
|
||||||
switch (corner) {
|
switch (corner) {
|
||||||
case UPLEFT:
|
case UP_LEFT_CORNER:
|
||||||
return BRect(frame.left, frame.top, frame.left + cornerSize - 1,
|
return BRect(frame.left, frame.top, frame.left + cornerSize - 1,
|
||||||
frame.top + cornerSize - 1);
|
frame.top + cornerSize - 1);
|
||||||
|
|
||||||
case UPRIGHT:
|
case UP_RIGHT_CORNER:
|
||||||
return BRect(frame.right - cornerSize + 1, frame.top, frame.right,
|
return BRect(frame.right - cornerSize + 1, frame.top, frame.right,
|
||||||
frame.top + cornerSize - 1);
|
frame.top + cornerSize - 1);
|
||||||
|
|
||||||
case DOWNRIGHT:
|
case DOWN_RIGHT_CORNER:
|
||||||
return BRect(frame.right - cornerSize + 1, frame.bottom - cornerSize + 1,
|
return BRect(frame.right - cornerSize + 1, frame.bottom - cornerSize + 1,
|
||||||
frame.right, frame.bottom);
|
frame.right, frame.bottom);
|
||||||
|
|
||||||
case DOWNLEFT:
|
case DOWN_LEFT_CORNER:
|
||||||
return BRect(frame.left, frame.bottom - cornerSize + 1,
|
return BRect(frame.left, frame.bottom - cornerSize + 1,
|
||||||
frame.left + cornerSize - 1, frame.bottom);
|
frame.left + cornerSize - 1, frame.bottom);
|
||||||
|
|
||||||
@@ -330,7 +330,7 @@ ScreenSaverFilter::Filter(BMessage *message, BList *outList)
|
|||||||
if (fNeverBlankRect.Contains(where))
|
if (fNeverBlankRect.Contains(where))
|
||||||
fCurrentCorner = fNeverBlankCorner;
|
fCurrentCorner = fNeverBlankCorner;
|
||||||
else
|
else
|
||||||
fCurrentCorner = NONE;
|
fCurrentCorner = NO_CORNER;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,11 +57,11 @@ ScreenBlanker::~ScreenBlanker()
|
|||||||
void
|
void
|
||||||
ScreenBlanker::ReadyToRun()
|
ScreenBlanker::ReadyToRun()
|
||||||
{
|
{
|
||||||
if (!fSettings.LoadSettings()) {
|
if (!fSettings.Load()) {
|
||||||
fprintf(stderr, "could not load settings\n");
|
fprintf(stderr, "could not load settings\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// create a BDirectWindow and start the render thread.
|
// create a BDirectWindow and start the render thread.
|
||||||
// TODO: we need a window per screen...
|
// TODO: we need a window per screen...
|
||||||
BScreen screen(B_MAIN_SCREEN_ID);
|
BScreen screen(B_MAIN_SCREEN_ID);
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ ScreenSaverRunner::_LoadAddOn()
|
|||||||
printf("Unable to find the instantiator\n");
|
printf("Unable to find the instantiator\n");
|
||||||
} else {
|
} else {
|
||||||
BMessage state;
|
BMessage state;
|
||||||
fSettings.GetState(fSettings.ModuleName(), &state);
|
fSettings.GetModuleState(fSettings.ModuleName(), &state);
|
||||||
fSaver = instantiate(&state, fAddonImage);
|
fSaver = instantiate(&state, fAddonImage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ ScreenSaverSettings::ScreenSaverSettings()
|
|||||||
|
|
||||||
//! Load the flattened settings BMessage from disk and parse it.
|
//! Load the flattened settings BMessage from disk and parse it.
|
||||||
bool
|
bool
|
||||||
ScreenSaverSettings::LoadSettings()
|
ScreenSaverSettings::Load()
|
||||||
{
|
{
|
||||||
BFile file(fSettingsPath.Path(), B_READ_ONLY);
|
BFile file(fSettingsPath.Path(), B_READ_ONLY);
|
||||||
if (file.InitCheck() != B_OK)
|
if (file.InitCheck() != B_OK)
|
||||||
@@ -48,31 +48,47 @@ ScreenSaverSettings::LoadSettings()
|
|||||||
|
|
||||||
PRINT_OBJECT(fSettings);
|
PRINT_OBJECT(fSettings);
|
||||||
|
|
||||||
fSettings.FindRect("windowframe", &fWindowFrame);
|
BRect rect;
|
||||||
fSettings.FindInt32("windowtab", &fWindowTab);
|
if (fSettings.FindRect("windowframe", &rect) == B_OK)
|
||||||
fSettings.FindInt32("timeflags", &fTimeFlags);
|
fWindowFrame = rect;
|
||||||
|
int32 value;
|
||||||
|
if (fSettings.FindInt32("windowtab", &value) == B_OK)
|
||||||
|
fWindowTab = value;
|
||||||
|
if (fSettings.FindInt32("timeflags", &value) == B_OK)
|
||||||
|
fTimeFlags = value;
|
||||||
|
|
||||||
int32 blank_time, standByTime, suspendTime, offTime, passwordTime;
|
if (fSettings.FindInt32("timefade", &value) == B_OK)
|
||||||
if (fSettings.FindInt32("timefade", &blank_time) == B_OK)
|
fBlankTime = value * 1000000LL;
|
||||||
fBlankTime = blank_time * 1000000LL;
|
if (fSettings.FindInt32("timestandby", &value) == B_OK)
|
||||||
if (fSettings.FindInt32("timestandby", &standByTime) == B_OK)
|
fStandByTime = value * 1000000LL;
|
||||||
fStandByTime = standByTime * 1000000LL;
|
if (fSettings.FindInt32("timesuspend", &value) == B_OK)
|
||||||
if (fSettings.FindInt32("timesuspend", &suspendTime) == B_OK)
|
fSuspendTime = value * 1000000LL;
|
||||||
fSuspendTime = suspendTime * 1000000LL;
|
if (fSettings.FindInt32("timeoff", &value) == B_OK)
|
||||||
if (fSettings.FindInt32("timeoff", &offTime) == B_OK)
|
fOffTime = value * 1000000LL;
|
||||||
fOffTime = offTime * 1000000LL;
|
|
||||||
fSettings.FindInt32("cornernow", (int32*)&fBlankCorner);
|
if (fSettings.FindInt32("cornernow", &value) == B_OK)
|
||||||
fSettings.FindInt32("cornernever", (int32*)&fNeverBlankCorner);
|
fBlankCorner = (screen_corner)value;
|
||||||
fSettings.FindBool("lockenable", &fLockEnabled);
|
if (fSettings.FindInt32("cornernever", &value) == B_OK)
|
||||||
if (fSettings.FindInt32("lockdelay", &passwordTime) == B_OK)
|
fNeverBlankCorner = (screen_corner)value;
|
||||||
fPasswordTime = passwordTime * 1000000LL;
|
|
||||||
fSettings.FindString("lockpassword", &fPassword);
|
bool lockEnabled;
|
||||||
fSettings.FindString("lockmethod", &fLockMethod);
|
if (fSettings.FindBool("lockenable", &lockEnabled) == B_OK)
|
||||||
fSettings.FindString("modulename", &fModuleName);
|
fLockEnabled = lockEnabled;
|
||||||
|
if (fSettings.FindInt32("lockdelay", &value) == B_OK)
|
||||||
|
fPasswordTime = value * 1000000LL;
|
||||||
|
const char* string;
|
||||||
|
if (fSettings.FindString("lockpassword", &string) == B_OK)
|
||||||
|
fPassword = string;
|
||||||
|
if (fSettings.FindString("lockmethod", &string) == B_OK)
|
||||||
|
fLockMethod = string;
|
||||||
|
|
||||||
|
if (fSettings.FindString("modulename", &string) == B_OK)
|
||||||
|
fModuleName = string;
|
||||||
|
|
||||||
if (IsNetworkPassword()) {
|
if (IsNetworkPassword()) {
|
||||||
FILE *networkFile = NULL;
|
FILE *networkFile = NULL;
|
||||||
char buffer[512], *start;
|
char buffer[512], *start;
|
||||||
|
// TODO: this only works under R5 net_server!
|
||||||
// This ugly piece opens the networking file and reads the password, if it exists.
|
// This ugly piece opens the networking file and reads the password, if it exists.
|
||||||
if ((networkFile = fopen(fNetworkPath.Path(),"r")))
|
if ((networkFile = fopen(fNetworkPath.Path(),"r")))
|
||||||
while (fgets(buffer, 512, networkFile) != NULL) {
|
while (fgets(buffer, 512, networkFile) != NULL) {
|
||||||
@@ -100,8 +116,8 @@ ScreenSaverSettings::Defaults()
|
|||||||
fStandByTime = 120*1000000LL;
|
fStandByTime = 120*1000000LL;
|
||||||
fSuspendTime = 120*1000000LL;
|
fSuspendTime = 120*1000000LL;
|
||||||
fOffTime = 120*1000000LL;
|
fOffTime = 120*1000000LL;
|
||||||
fBlankCorner = NONE;
|
fBlankCorner = NO_CORNER;
|
||||||
fNeverBlankCorner = NONE;
|
fNeverBlankCorner = NO_CORNER;
|
||||||
fLockEnabled = false;
|
fLockEnabled = false;
|
||||||
fPasswordTime = 120*1000000LL;
|
fPasswordTime = 120*1000000LL;
|
||||||
fPassword = "";
|
fPassword = "";
|
||||||
@@ -111,7 +127,7 @@ ScreenSaverSettings::Defaults()
|
|||||||
|
|
||||||
|
|
||||||
BMessage &
|
BMessage &
|
||||||
ScreenSaverSettings::GetSettings()
|
ScreenSaverSettings::Message()
|
||||||
{
|
{
|
||||||
// We can't just empty the message, because the module states are stored
|
// We can't just empty the message, because the module states are stored
|
||||||
// in this message as well.
|
// in this message as well.
|
||||||
@@ -153,7 +169,7 @@ ScreenSaverSettings::GetSettings()
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
ScreenSaverSettings::GetState(const char *name, BMessage *stateMsg)
|
ScreenSaverSettings::GetModuleState(const char *name, BMessage *stateMsg)
|
||||||
{
|
{
|
||||||
BString stateName("modulesettings_");
|
BString stateName("modulesettings_");
|
||||||
stateName += name;
|
stateName += name;
|
||||||
@@ -162,7 +178,7 @@ ScreenSaverSettings::GetState(const char *name, BMessage *stateMsg)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ScreenSaverSettings::SetState(const char *name, BMessage *stateMsg)
|
ScreenSaverSettings::SetModuleState(const char *name, BMessage *stateMsg)
|
||||||
{
|
{
|
||||||
BString stateName("modulesettings_");
|
BString stateName("modulesettings_");
|
||||||
stateName += name;
|
stateName += name;
|
||||||
@@ -172,9 +188,9 @@ ScreenSaverSettings::SetState(const char *name, BMessage *stateMsg)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ScreenSaverSettings::SaveSettings()
|
ScreenSaverSettings::Save()
|
||||||
{
|
{
|
||||||
BMessage &settings = GetSettings();
|
BMessage &settings = Message();
|
||||||
PRINT_OBJECT(settings);
|
PRINT_OBJECT(settings);
|
||||||
BFile file(fSettingsPath.Path(), B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE);
|
BFile file(fSettingsPath.Path(), B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE);
|
||||||
if (file.InitCheck() != B_OK || settings.Flatten(&file) != B_OK)
|
if (file.InitCheck() != B_OK || settings.Flatten(&file) != B_OK)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Michael Phipps
|
* Michael Phipps
|
||||||
|
* Axel Dörfler, [email protected]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ScreenCornerSelector.h"
|
#include "ScreenCornerSelector.h"
|
||||||
@@ -13,141 +14,314 @@
|
|||||||
#include <Rect.h>
|
#include <Rect.h>
|
||||||
#include <Point.h>
|
#include <Point.h>
|
||||||
#include <Shape.h>
|
#include <Shape.h>
|
||||||
|
#include <Screen.h>
|
||||||
|
#include <Window.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
|
static const float kAspectRatio = 4.0f / 3.0f;
|
||||||
|
static const float kMonitorBorderSize = 3.0f;
|
||||||
|
static const float kArrowSize = 11.0f;
|
||||||
|
static const float kStopSize = 15.0f;
|
||||||
|
|
||||||
inline BPoint
|
|
||||||
scale_arrow(int x, int y, BRect area, bool invertX, bool invertY)
|
ScreenCornerSelector::ScreenCornerSelector(BRect frame, const char *name,
|
||||||
|
BMessage* message, uint32 resizingMode)
|
||||||
|
: BControl(frame, name, NULL, message, resizingMode, B_WILL_DRAW | B_NAVIGABLE),
|
||||||
|
fCurrentCorner(NO_CORNER),
|
||||||
|
fPreviousCorner(-1)
|
||||||
{
|
{
|
||||||
float arrowX[] = {0, .25, .5, .66667, .90, .9};
|
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||||
float arrowY[] = {0, .15, .25, .3333333, .6666667, 1.0};
|
|
||||||
|
|
||||||
return scale_direct(invertX ? 1 - arrowX[x] : arrowX[x],
|
|
||||||
invertY ? 1 - arrowY[y] : arrowY[y], area);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark -
|
BRect
|
||||||
|
ScreenCornerSelector::_MonitorFrame() const
|
||||||
|
|
||||||
ScreenCornerSelector::ScreenCornerSelector(BRect frame, const char *name, uint32 resizingMode)
|
|
||||||
: BView(frame, name, resizingMode, B_WILL_DRAW),
|
|
||||||
fCurrentCorner(NONE)
|
|
||||||
{
|
{
|
||||||
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
float width = Bounds().Width();
|
||||||
|
float height = Bounds().Height();
|
||||||
|
|
||||||
|
if (width / kAspectRatio > height)
|
||||||
|
width = height * kAspectRatio;
|
||||||
|
else if (height * kAspectRatio > width)
|
||||||
|
height = width / kAspectRatio;
|
||||||
|
|
||||||
|
return BRect((Bounds().Width() - width) / 2, (Bounds().Height() - height) / 2,
|
||||||
|
(Bounds().Width() + width) / 2, (Bounds().Height() + height) / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BRect
|
||||||
|
ScreenCornerSelector::_InnerFrame(BRect monitorFrame) const
|
||||||
|
{
|
||||||
|
return monitorFrame.InsetByCopy(kMonitorBorderSize + 3,
|
||||||
|
kMonitorBorderSize + 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BRect
|
||||||
|
ScreenCornerSelector::_CenterFrame(BRect innerFrame) const
|
||||||
|
{
|
||||||
|
return innerFrame.InsetByCopy(kArrowSize, kArrowSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ScreenCornerSelector::Draw(BRect update)
|
ScreenCornerSelector::Draw(BRect update)
|
||||||
{
|
{
|
||||||
// Top of monitor
|
rgb_color darkColor = {160, 160, 160, 255};
|
||||||
SetHighColor(kGrey);
|
rgb_color blackColor = {0, 0, 0, 255};
|
||||||
FillRoundRect(scale(0, 7, 0, 3, Bounds()), 4, 4);
|
rgb_color redColor = {228, 0, 0, 255};
|
||||||
SetHighColor(kBlack);
|
|
||||||
StrokeRoundRect(scale(0, 7, 0, 3, Bounds()), 4, 4);
|
|
||||||
SetHighColor(kLightBlue);
|
|
||||||
fMonitorFrame = scale(1, 6, 1, 2, Bounds());
|
|
||||||
FillRect(fMonitorFrame);
|
|
||||||
SetHighColor(kDarkGrey);
|
|
||||||
StrokeRect(fMonitorFrame);
|
|
||||||
|
|
||||||
// Base of monitor
|
BRect outerRect = _MonitorFrame();
|
||||||
SetHighColor(kGrey);
|
BRect innerRect(outerRect.InsetByCopy(kMonitorBorderSize + 2,
|
||||||
FillTriangle(scale(1,5,Bounds()),scale(3,4,Bounds()),scale(3,5,Bounds()));
|
kMonitorBorderSize + 2));
|
||||||
FillTriangle(scale(4,5,Bounds()),scale(4,4,Bounds()),scale(6,5,Bounds()));
|
|
||||||
FillRect(scale(3,4,4,5,Bounds()));
|
SetDrawingMode(B_OP_OVER);
|
||||||
FillRect(scale(3,4,3,4,Bounds()));
|
|
||||||
SetHighColor(kBlack);
|
if (!_InnerFrame(outerRect).Contains(update)) {
|
||||||
StrokeRect(scale(3,4,3,4,Bounds()));
|
// frame & background
|
||||||
StrokeLine(scale(2,4,Bounds()),scale(1,5,Bounds()));
|
|
||||||
StrokeLine(scale(6,5,Bounds()),scale(1,5,Bounds()));
|
// if the focus is changing, we don't redraw the whole view, but only
|
||||||
StrokeLine(scale(6,5,Bounds()),scale(5,4,Bounds()));
|
// the part that's affected by the change
|
||||||
DrawArrow();
|
if (!IsFocusChanging()) {
|
||||||
|
SetHighColor(darkColor);
|
||||||
|
FillRoundRect(outerRect, kMonitorBorderSize * 3 / 2, kMonitorBorderSize * 3 / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsFocus() && Window()->IsActive())
|
||||||
|
SetHighColor(ui_color(B_KEYBOARD_NAVIGATION_COLOR));
|
||||||
|
else
|
||||||
|
SetHighColor(blackColor);
|
||||||
|
StrokeRoundRect(outerRect, kMonitorBorderSize * 3 / 2, kMonitorBorderSize * 3 / 2);
|
||||||
|
|
||||||
|
if (!IsFocusChanging()) {
|
||||||
|
SetHighColor(210, 210, 255);
|
||||||
|
FillRoundRect(innerRect, kMonitorBorderSize, kMonitorBorderSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsFocus() && Window()->IsActive())
|
||||||
|
SetHighColor(ui_color(B_KEYBOARD_NAVIGATION_COLOR));
|
||||||
|
else
|
||||||
|
SetHighColor(blackColor);
|
||||||
|
StrokeRoundRect(innerRect, kMonitorBorderSize, kMonitorBorderSize);
|
||||||
|
|
||||||
|
if (IsFocusChanging())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// power light
|
||||||
|
|
||||||
|
SetHighColor(redColor);
|
||||||
|
BPoint powerPos(outerRect.left + kMonitorBorderSize * 2, outerRect.bottom
|
||||||
|
- kMonitorBorderSize);
|
||||||
|
StrokeLine(powerPos, BPoint(powerPos.x + 2, powerPos.y));
|
||||||
|
}
|
||||||
|
|
||||||
|
innerRect = _InnerFrame(outerRect);
|
||||||
|
|
||||||
|
if (fCurrentCorner != NO_CORNER)
|
||||||
|
_DrawArrow(innerRect);
|
||||||
|
else
|
||||||
|
_DrawStop(innerRect);
|
||||||
|
|
||||||
|
SetDrawingMode(B_OP_COPY);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int32
|
||||||
|
ScreenCornerSelector::Value()
|
||||||
|
{
|
||||||
|
return (int32)fCurrentCorner;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ScreenCornerSelector::SetValue(int32 corner)
|
||||||
|
{
|
||||||
|
switch (corner) {
|
||||||
|
case UP_LEFT_CORNER:
|
||||||
|
case UP_RIGHT_CORNER:
|
||||||
|
case DOWN_LEFT_CORNER:
|
||||||
|
case DOWN_RIGHT_CORNER:
|
||||||
|
case NO_CORNER:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
corner = NO_CORNER;
|
||||||
|
}
|
||||||
|
if ((screen_corner)corner == fCurrentCorner)
|
||||||
|
return;
|
||||||
|
|
||||||
|
fCurrentCorner = (screen_corner)corner;
|
||||||
|
Invalidate(_InnerFrame(_MonitorFrame()));
|
||||||
|
Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
screen_corner
|
||||||
|
ScreenCornerSelector::Corner() const
|
||||||
|
{
|
||||||
|
return fCurrentCorner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ScreenCornerSelector::SetCorner(screen_corner corner)
|
ScreenCornerSelector::SetCorner(screen_corner corner)
|
||||||
{
|
{
|
||||||
fCurrentCorner = corner;
|
// redirected to SetValue() to make sure only valid values are set
|
||||||
Invalidate();
|
SetValue((int32)corner);
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BRect
|
|
||||||
ScreenCornerSelector::_ArrowSize(BRect monitorRect, bool isCentered)
|
|
||||||
{
|
|
||||||
int arrowSize = monitorRect.IntegerWidth();
|
|
||||||
if (monitorRect.IntegerHeight() < arrowSize)
|
|
||||||
arrowSize = monitorRect.IntegerHeight();
|
|
||||||
|
|
||||||
arrowSize /= 3;
|
|
||||||
|
|
||||||
BRect arrowRect(0, 0, arrowSize, arrowSize);
|
|
||||||
if (isCentered) {
|
|
||||||
arrowRect.OffsetBy(monitorRect.left + (monitorRect.Width() - arrowSize) / 2,
|
|
||||||
monitorRect.top + (monitorRect.Height() - arrowSize) / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
return arrowRect;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ScreenCornerSelector::DrawArrow()
|
ScreenCornerSelector::_DrawStop(BRect innerFrame)
|
||||||
{
|
{
|
||||||
PushState();
|
BRect centerRect = _CenterFrame(innerFrame);
|
||||||
|
float size = kStopSize;
|
||||||
BRect rect(_ArrowSize(fMonitorFrame, fCurrentCorner == NONE));
|
BRect rect;
|
||||||
|
rect.left = centerRect.left + (centerRect.Width() - size) / 2;
|
||||||
if (fCurrentCorner != NONE) {
|
rect.top = centerRect.top + (centerRect.Height() - size) / 2;
|
||||||
bool invertX = fCurrentCorner == UPRIGHT || fCurrentCorner == DOWNRIGHT;
|
if (rect.left < centerRect.left || rect.top < centerRect.top) {
|
||||||
bool invertY = fCurrentCorner == UPRIGHT || fCurrentCorner == UPLEFT;
|
size = centerRect.Height();
|
||||||
|
rect.top = centerRect.top;
|
||||||
float size = rect.Width();
|
rect.left = centerRect.left + (centerRect.Width() - size) / 2;
|
||||||
MovePenTo(invertX ? fMonitorFrame.right - size - 2 : 2 + fMonitorFrame.left,
|
|
||||||
!invertY ? fMonitorFrame.bottom - size - 2 : 2 + fMonitorFrame.top);
|
|
||||||
|
|
||||||
BShape arrow;
|
|
||||||
arrow.MoveTo(scale_arrow(0, 1, rect, invertX, invertY));
|
|
||||||
arrow.LineTo(scale_arrow(0, 5, rect, invertX, invertY));
|
|
||||||
arrow.LineTo(scale_arrow(4, 5, rect, invertX, invertY));
|
|
||||||
arrow.LineTo(scale_arrow(3, 4, rect, invertX, invertY));
|
|
||||||
arrow.LineTo(scale_arrow(5, 3, rect, invertX, invertY));
|
|
||||||
arrow.LineTo(scale_arrow(2, 0, rect, invertX, invertY));
|
|
||||||
arrow.LineTo(scale_arrow(1, 2, rect, invertX, invertY));
|
|
||||||
arrow.LineTo(scale_arrow(0, 1, rect, invertX, invertY));
|
|
||||||
arrow.Close();
|
|
||||||
SetHighColor(kBlack);
|
|
||||||
FillShape(&arrow, B_SOLID_HIGH);
|
|
||||||
} else {
|
|
||||||
SetHighColor(255, 0, 0);
|
|
||||||
SetPenSize(2);
|
|
||||||
StrokeEllipse(rect);
|
|
||||||
StrokeLine(BPoint(rect.right, rect.top), BPoint(rect.left, rect.bottom));
|
|
||||||
}
|
}
|
||||||
|
rect.right = rect.left + size - 1;
|
||||||
|
rect.bottom = rect.top + size - 1;
|
||||||
|
|
||||||
PopState();
|
SetHighColor(255, 0, 0);
|
||||||
|
SetPenSize(2);
|
||||||
|
StrokeEllipse(rect);
|
||||||
|
|
||||||
|
size -= ceilf(sin(PI / 4) * size) + 1;
|
||||||
|
rect.InsetBy(size, size);
|
||||||
|
StrokeLine(BPoint(rect.right, rect.top), BPoint(rect.left, rect.bottom));
|
||||||
|
|
||||||
|
SetPenSize(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ScreenCornerSelector::MouseUp(BPoint point)
|
ScreenCornerSelector::_DrawArrow(BRect innerFrame)
|
||||||
{
|
{
|
||||||
if (fMonitorFrame.Contains(point)) {
|
float size = kArrowSize;
|
||||||
if (_ArrowSize(fMonitorFrame, true).Contains(point))
|
float sizeX = fCurrentCorner == UP_LEFT_CORNER || fCurrentCorner == DOWN_LEFT_CORNER ? size : -size;
|
||||||
fCurrentCorner = NONE;
|
float sizeY = fCurrentCorner == UP_LEFT_CORNER || fCurrentCorner == UP_RIGHT_CORNER ? size : -size;
|
||||||
else {
|
|
||||||
float centerX = fMonitorFrame.left + fMonitorFrame.Width() / 2;
|
innerFrame.InsetBy(2, 2);
|
||||||
float centerY = fMonitorFrame.top + fMonitorFrame.Height() / 2;
|
BPoint origin(sizeX < 0 ? innerFrame.right : innerFrame.left,
|
||||||
if (point.x < centerX)
|
sizeY < 0 ? innerFrame.bottom : innerFrame.top);
|
||||||
fCurrentCorner = point.y < centerY ? UPLEFT : DOWNLEFT;
|
|
||||||
else
|
SetHighColor(kBlack);
|
||||||
fCurrentCorner = point.y < centerY ? UPRIGHT : DOWNRIGHT;
|
FillTriangle(BPoint(origin.x, origin.y), BPoint(origin.x, origin.y + sizeY),
|
||||||
}
|
BPoint(origin.x + sizeX, origin.y));
|
||||||
Draw(fMonitorFrame);
|
}
|
||||||
|
|
||||||
|
|
||||||
|
screen_corner
|
||||||
|
ScreenCornerSelector::_ScreenCorner(BPoint point, screen_corner previousCorner) const
|
||||||
|
{
|
||||||
|
BRect innerFrame = _InnerFrame(_MonitorFrame());
|
||||||
|
|
||||||
|
if (!innerFrame.Contains(point))
|
||||||
|
return previousCorner;
|
||||||
|
|
||||||
|
if (_CenterFrame(innerFrame).Contains(point))
|
||||||
|
return NO_CORNER;
|
||||||
|
|
||||||
|
float centerX = innerFrame.left + innerFrame.Width() / 2;
|
||||||
|
float centerY = innerFrame.top + innerFrame.Height() / 2;
|
||||||
|
if (point.x < centerX)
|
||||||
|
return point.y < centerY ? UP_LEFT_CORNER : DOWN_LEFT_CORNER;
|
||||||
|
|
||||||
|
return point.y < centerY ? UP_RIGHT_CORNER : DOWN_RIGHT_CORNER;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ScreenCornerSelector::MouseDown(BPoint where)
|
||||||
|
{
|
||||||
|
fPreviousCorner = Value();
|
||||||
|
|
||||||
|
SetValue(_ScreenCorner(where, (screen_corner)fPreviousCorner));
|
||||||
|
SetMouseEventMask(B_POINTER_EVENTS, B_NO_POINTER_HISTORY);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ScreenCornerSelector::MouseUp(BPoint where)
|
||||||
|
{
|
||||||
|
fPreviousCorner = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ScreenCornerSelector::MouseMoved(BPoint where, uint32 transit, const BMessage* dragMessage)
|
||||||
|
{
|
||||||
|
if (fPreviousCorner == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
SetValue(_ScreenCorner(where, (screen_corner)fPreviousCorner));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ScreenCornerSelector::KeyDown(const char* bytes, int32 numBytes)
|
||||||
|
{
|
||||||
|
switch (bytes[0]) {
|
||||||
|
// arrow keys
|
||||||
|
|
||||||
|
case B_LEFT_ARROW:
|
||||||
|
case '4':
|
||||||
|
if (Corner() == UP_RIGHT_CORNER)
|
||||||
|
SetCorner(UP_LEFT_CORNER);
|
||||||
|
else if (Corner() == DOWN_RIGHT_CORNER)
|
||||||
|
SetCorner(DOWN_LEFT_CORNER);
|
||||||
|
break;
|
||||||
|
case B_RIGHT_ARROW:
|
||||||
|
case '6':
|
||||||
|
if (Corner() == UP_LEFT_CORNER)
|
||||||
|
SetCorner(UP_RIGHT_CORNER);
|
||||||
|
else if (Corner() == DOWN_LEFT_CORNER)
|
||||||
|
SetCorner(DOWN_RIGHT_CORNER);
|
||||||
|
break;
|
||||||
|
case B_UP_ARROW:
|
||||||
|
case '8':
|
||||||
|
if (Corner() == DOWN_LEFT_CORNER)
|
||||||
|
SetCorner(UP_LEFT_CORNER);
|
||||||
|
else if (Corner() == DOWN_RIGHT_CORNER)
|
||||||
|
SetCorner(UP_RIGHT_CORNER);
|
||||||
|
break;
|
||||||
|
case B_DOWN_ARROW:
|
||||||
|
case '2':
|
||||||
|
if (Corner() == UP_LEFT_CORNER)
|
||||||
|
SetCorner(DOWN_LEFT_CORNER);
|
||||||
|
else if (Corner() == UP_RIGHT_CORNER)
|
||||||
|
SetCorner(DOWN_RIGHT_CORNER);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// numlock keys
|
||||||
|
|
||||||
|
case B_HOME:
|
||||||
|
case '7':
|
||||||
|
SetCorner(UP_LEFT_CORNER);
|
||||||
|
break;
|
||||||
|
case B_PAGE_UP:
|
||||||
|
case '9':
|
||||||
|
SetCorner(UP_RIGHT_CORNER);
|
||||||
|
break;
|
||||||
|
case B_PAGE_DOWN:
|
||||||
|
case '3':
|
||||||
|
SetCorner(DOWN_RIGHT_CORNER);
|
||||||
|
break;
|
||||||
|
case B_END:
|
||||||
|
case '1':
|
||||||
|
SetCorner(DOWN_LEFT_CORNER);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
BControl::KeyDown(bytes, numBytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Michael Phipps
|
* Michael Phipps
|
||||||
|
* Axel Dörfler, [email protected]
|
||||||
*/
|
*/
|
||||||
#ifndef SCREEN_CORNER_SELECTOR_H
|
#ifndef SCREEN_CORNER_SELECTOR_H
|
||||||
#define SCREEN_CORNER_SELECTOR_H
|
#define SCREEN_CORNER_SELECTOR_H
|
||||||
@@ -11,25 +12,36 @@
|
|||||||
|
|
||||||
#include "ScreenSaverSettings.h"
|
#include "ScreenSaverSettings.h"
|
||||||
|
|
||||||
#include <View.h>
|
#include <Control.h>
|
||||||
|
|
||||||
|
|
||||||
class ScreenCornerSelector : public BView {
|
class ScreenCornerSelector : public BControl {
|
||||||
public:
|
public:
|
||||||
ScreenCornerSelector(BRect frame, const char *name, uint32 resizingMode);
|
ScreenCornerSelector(BRect frame, const char *name, BMessage* message,
|
||||||
|
uint32 resizingMode);
|
||||||
|
|
||||||
virtual void Draw(BRect update);
|
virtual void Draw(BRect update);
|
||||||
|
virtual void MouseDown(BPoint point);
|
||||||
virtual void MouseUp(BPoint point);
|
virtual void MouseUp(BPoint point);
|
||||||
|
virtual void MouseMoved(BPoint where, uint32 transit, const BMessage* dragMessage);
|
||||||
|
virtual void KeyDown(const char* bytes, int32 numBytes);
|
||||||
|
|
||||||
void DrawArrow();
|
virtual void SetValue(int32 value);
|
||||||
inline screen_corner Corner() { return fCurrentCorner; }
|
virtual int32 Value();
|
||||||
void SetCorner(screen_corner direction);
|
|
||||||
|
void SetCorner(screen_corner corner);
|
||||||
|
screen_corner Corner() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BRect _ArrowSize(BRect monitorRect, bool isCentered);
|
BRect _MonitorFrame() const;
|
||||||
|
BRect _InnerFrame(BRect monitorFrame) const;
|
||||||
|
BRect _CenterFrame(BRect innerFrame) const;
|
||||||
|
void _DrawStop(BRect innerFrame);
|
||||||
|
void _DrawArrow(BRect innerFrame);
|
||||||
|
screen_corner _ScreenCorner(BPoint point, screen_corner previous) const;
|
||||||
|
|
||||||
BRect fMonitorFrame;
|
|
||||||
screen_corner fCurrentCorner;
|
screen_corner fCurrentCorner;
|
||||||
|
int32 fPreviousCorner;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SCREEN_CORNER_SELECTOR_H
|
#endif // SCREEN_CORNER_SELECTOR_H
|
||||||
|
|||||||
@@ -34,9 +34,6 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <Debug.h>
|
|
||||||
#define CALLED() PRINT(("%s\n", __PRETTY_FUNCTION__))
|
|
||||||
|
|
||||||
|
|
||||||
const uint32 kPreviewMonitorGap = 16;
|
const uint32 kPreviewMonitorGap = 16;
|
||||||
const uint32 kMinSettingsWidth = 230;
|
const uint32 kMinSettingsWidth = 230;
|
||||||
@@ -54,8 +51,12 @@ const int32 kMsgEnableScreenSaverBox = 'ESCH';
|
|||||||
const int32 kMsgTurnOffCheckBox = 'TUOF';
|
const int32 kMsgTurnOffCheckBox = 'TUOF';
|
||||||
const int32 kMsgTurnOffSliderChanged = 'TUCG';
|
const int32 kMsgTurnOffSliderChanged = 'TUCG';
|
||||||
|
|
||||||
|
const int32 kMsgFadeCornerChanged = 'fdcc';
|
||||||
|
const int32 kMsgNeverFadeCornerChanged = 'nfcc';
|
||||||
|
|
||||||
static const uint32 kTimeSliderChanged = 'tsch';
|
static const uint32 kTimeSliderChanged = 'tsch';
|
||||||
|
|
||||||
|
|
||||||
class TimeSlider : public BSlider {
|
class TimeSlider : public BSlider {
|
||||||
public:
|
public:
|
||||||
TimeSlider(BRect frame, const char* name, uint32 modificationMessage);
|
TimeSlider(BRect frame, const char* name, uint32 modificationMessage);
|
||||||
@@ -371,9 +372,9 @@ ModulesView::MessageReceived(BMessage* message)
|
|||||||
|
|
||||||
case kMsgTestSaver:
|
case kMsgTestSaver:
|
||||||
SaveState();
|
SaveState();
|
||||||
fSettings.SaveSettings();
|
fSettings.Save();
|
||||||
|
|
||||||
be_roster->Launch(SCREEN_BLANKER_SIG, &fSettings.GetSettings());
|
be_roster->Launch(SCREEN_BLANKER_SIG, &fSettings.Message());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case kMsgAddSaver:
|
case kMsgAddSaver:
|
||||||
@@ -395,7 +396,7 @@ ModulesView::SaveState()
|
|||||||
|
|
||||||
BMessage state;
|
BMessage state;
|
||||||
if (saver->SaveState(&state) == B_OK)
|
if (saver->SaveState(&state) == B_OK)
|
||||||
fSettings.SetState(fCurrentName.String(), &state);
|
fSettings.SetModuleState(fCurrentName.String(), &state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -586,7 +587,7 @@ ScreenSaverWindow::ScreenSaverWindow()
|
|||||||
: BWindow(BRect(50, 50, 496, 375), "Screen Saver",
|
: BWindow(BRect(50, 50, 496, 375), "Screen Saver",
|
||||||
B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS /*| B_NOT_ZOOMABLE | B_NOT_RESIZABLE*/)
|
B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS /*| B_NOT_ZOOMABLE | B_NOT_RESIZABLE*/)
|
||||||
{
|
{
|
||||||
fSettings.LoadSettings();
|
fSettings.Load();
|
||||||
|
|
||||||
BRect rect = Bounds();
|
BRect rect = Bounds();
|
||||||
|
|
||||||
@@ -622,8 +623,8 @@ ScreenSaverWindow::ScreenSaverWindow()
|
|||||||
fEnableCheckBox->SetValue(fSettings.TimeFlags() & ENABLE_SAVER ? B_CONTROL_ON : B_CONTROL_OFF);
|
fEnableCheckBox->SetValue(fSettings.TimeFlags() & ENABLE_SAVER ? B_CONTROL_ON : B_CONTROL_OFF);
|
||||||
fRunSlider->SetTime(fSettings.BlankTime());
|
fRunSlider->SetTime(fSettings.BlankTime());
|
||||||
fTurnOffSlider->SetTime(fSettings.OffTime() + fSettings.BlankTime());
|
fTurnOffSlider->SetTime(fSettings.OffTime() + fSettings.BlankTime());
|
||||||
fFadeNow->SetCorner(fSettings.GetBlankCorner());
|
fFadeNow->SetCorner(fSettings.BlankCorner());
|
||||||
fFadeNever->SetCorner(fSettings.GetNeverBlankCorner());
|
fFadeNever->SetCorner(fSettings.NeverBlankCorner());
|
||||||
fPasswordCheckBox->SetValue(fSettings.LockEnable());
|
fPasswordCheckBox->SetValue(fSettings.LockEnable());
|
||||||
fPasswordSlider->SetTime(fSettings.PasswordTime());
|
fPasswordSlider->SetTime(fSettings.PasswordTime());
|
||||||
|
|
||||||
@@ -714,10 +715,10 @@ ScreenSaverWindow::_SetupFadeTab(BRect rect)
|
|||||||
|
|
||||||
// Bottom
|
// Bottom
|
||||||
|
|
||||||
box->AddChild(fFadeNow = new ScreenCornerSelector(BRect(20,205,80,260),"fadeNow",
|
box->AddChild(fFadeNow = new ScreenCornerSelector(BRect(20,205,80,260), "FadeNow",
|
||||||
B_FOLLOW_LEFT | B_FOLLOW_BOTTOM));
|
new BMessage(kMsgFadeCornerChanged), B_FOLLOW_LEFT | B_FOLLOW_BOTTOM));
|
||||||
box->AddChild(fFadeNever = new ScreenCornerSelector(BRect(220,205,280,260),"fadeNever",
|
box->AddChild(fFadeNever = new ScreenCornerSelector(BRect(220,205,280,260), "FadeNever",
|
||||||
B_FOLLOW_LEFT | B_FOLLOW_BOTTOM));
|
new BMessage(kMsgNeverFadeCornerChanged), B_FOLLOW_LEFT | B_FOLLOW_BOTTOM));
|
||||||
|
|
||||||
rect = BRect(90,215,193,230);
|
rect = BRect(90,215,193,230);
|
||||||
stringView = new BStringView(rect, NULL, "Fade now when",
|
stringView = new BStringView(rect, NULL, "Fade now when",
|
||||||
@@ -842,7 +843,10 @@ ScreenSaverWindow::MessageReceived(BMessage *msg)
|
|||||||
|
|
||||||
case kMsgPasswordCheckBox:
|
case kMsgPasswordCheckBox:
|
||||||
case kMsgEnableScreenSaverBox:
|
case kMsgEnableScreenSaverBox:
|
||||||
|
case kMsgFadeCornerChanged:
|
||||||
|
case kMsgNeverFadeCornerChanged:
|
||||||
_UpdateStatus();
|
_UpdateStatus();
|
||||||
|
fSettings.Save();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case kMsgChangePassword:
|
case kMsgChangePassword:
|
||||||
@@ -871,7 +875,7 @@ ScreenSaverWindow::QuitRequested()
|
|||||||
{
|
{
|
||||||
_UpdateStatus();
|
_UpdateStatus();
|
||||||
fModulesView->SaveState();
|
fModulesView->SaveState();
|
||||||
fSettings.SaveSettings();
|
fSettings.Save();
|
||||||
|
|
||||||
be_app->PostMessage(B_QUIT_REQUESTED);
|
be_app->PostMessage(B_QUIT_REQUESTED);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user