From 8b11e3b15d2d5cdf2d31c74a3335aa2bc344ffc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 4 Jan 2007 14:27:05 +0000 Subject: [PATCH] * Changing any of the sliders will now cause the settings to be saved. * The TimeSlider now sends an update message for ongoing changes, and an invokation message when the mouse button was released (standard BSlider behaviour). * Fixed incorrect initial string when the screen saver should start after 30 seconds of inactivity. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19698 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../screensaver/ScreenSaverWindow.cpp | 56 ++++++++----------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/src/preferences/screensaver/ScreenSaverWindow.cpp b/src/preferences/screensaver/ScreenSaverWindow.cpp index 268a121fc7..263789463a 100644 --- a/src/preferences/screensaver/ScreenSaverWindow.cpp +++ b/src/preferences/screensaver/ScreenSaverWindow.cpp @@ -43,27 +43,27 @@ const int32 kMsgSaverSelected = 'SSEL'; const int32 kMsgTestSaver = 'TEST'; const int32 kMsgAddSaver = 'ADD '; const int32 kMsgPasswordCheckBox = 'PWCB'; -const int32 kMsgRunSliderChanged = 'RSCG'; -const int32 kMsgPasswordSliderChanged = 'PWCG'; +const int32 kMsgRunSliderUpdate = 'RSup'; +const int32 kMsgPasswordSliderUpdate = 'PWup'; const int32 kMsgChangePassword = 'PWBT'; const int32 kMsgEnableScreenSaverBox = 'ESCH'; const int32 kMsgTurnOffCheckBox = 'TUOF'; -const int32 kMsgTurnOffSliderChanged = 'TUCG'; +const int32 kMsgTurnOffSliderUpdate = 'TUup'; const int32 kMsgFadeCornerChanged = 'fdcc'; const int32 kMsgNeverFadeCornerChanged = 'nfcc'; -static const uint32 kTimeSliderChanged = 'tsch'; +const uint32 kMsgTimeSliderChanged = 'tsch'; class TimeSlider : public BSlider { public: - TimeSlider(BRect frame, const char* name, uint32 modificationMessage); + TimeSlider(BRect frame, const char* name, uint32 changedMessage, + uint32 updateMessage); virtual ~TimeSlider(); virtual void AttachedToWindow(); - virtual void MessageReceived(BMessage* message); virtual void SetValue(int32 value); void SetTime(bigtime_t useconds); @@ -71,8 +71,6 @@ class TimeSlider : public BSlider { private: void _TimeToString(bigtime_t useconds, BString& string); - - uint32 fModificationMessage; }; class FadeView : public BView { @@ -130,13 +128,13 @@ static const int32 kTimeInUnits[] = { static const int32 kTimeUnitCount = sizeof(kTimeInUnits) / sizeof(kTimeInUnits[0]); -TimeSlider::TimeSlider(BRect frame, const char* name, uint32 modificationMessage) - : BSlider(frame, name, "0 minutes", new BMessage(kTimeSliderChanged), - 0, kTimeUnitCount - 1, B_TRIANGLE_THUMB, B_FOLLOW_LEFT_RIGHT), - fModificationMessage(modificationMessage) +TimeSlider::TimeSlider(BRect frame, const char* name, uint32 changedMessage, + uint32 updateMessage) + : BSlider(frame, name, "30 seconds", new BMessage(changedMessage), + 0, kTimeUnitCount - 1, B_TRIANGLE_THUMB, B_FOLLOW_LEFT_RIGHT) { SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); - SetModificationMessage(new BMessage(kTimeSliderChanged)); + SetModificationMessage(new BMessage(updateMessage)); SetBarThickness(10); } @@ -150,21 +148,7 @@ void TimeSlider::AttachedToWindow() { BSlider::AttachedToWindow(); - SetTarget(this); -} - - -void -TimeSlider::MessageReceived(BMessage* message) -{ - switch (message->what) { - case kTimeSliderChanged: - Window()->PostMessage(fModificationMessage); - break; - - default: - BSlider::MessageReceived(message); - } + SetTarget(Window()); } @@ -673,7 +657,8 @@ ScreenSaverWindow::_SetupFadeTab(BRect rect) box->AddChild(stringView); rect.left += labelWidth; - fRunSlider = new TimeSlider(rect, "RunSlider", kMsgRunSliderChanged); + fRunSlider = new TimeSlider(rect, "RunSlider", kMsgTimeSliderChanged, + kMsgRunSliderUpdate); float width, height; fRunSlider->GetPreferredSize(&width, &height); fRunSlider->ResizeTo(fRunSlider->Bounds().Width(), height); @@ -688,7 +673,8 @@ ScreenSaverWindow::_SetupFadeTab(BRect rect) box->AddChild(fTurnOffCheckBox); rect.left += radioButtonOffset + labelWidth; - fTurnOffSlider = new TimeSlider(rect, "TurnOffSlider", kMsgTurnOffSliderChanged); + fTurnOffSlider = new TimeSlider(rect, "TurnOffSlider", kMsgTimeSliderChanged, + kMsgTurnOffSliderUpdate); fTurnOffSlider->ResizeTo(fTurnOffSlider->Bounds().Width(), height); box->AddChild(fTurnOffSlider); @@ -701,7 +687,8 @@ ScreenSaverWindow::_SetupFadeTab(BRect rect) box->AddChild(fPasswordCheckBox); rect.left += radioButtonOffset + labelWidth; - fPasswordSlider = new TimeSlider(rect, "PasswordSlider", kMsgPasswordSliderChanged); + fPasswordSlider = new TimeSlider(rect, "PasswordSlider", kMsgTimeSliderChanged, + kMsgPasswordSliderUpdate); fPasswordSlider->ResizeTo(fPasswordSlider->Bounds().Width(), height); box->AddChild(fPasswordSlider); @@ -845,7 +832,7 @@ ScreenSaverWindow::MessageReceived(BMessage *msg) switch (msg->what) { // "Fade" tab - case kMsgRunSliderChanged: + case kMsgRunSliderUpdate: if (fRunSlider->Value() > fTurnOffSlider->Value()) fTurnOffSlider->SetValue(fRunSlider->Value()); @@ -857,16 +844,17 @@ ScreenSaverWindow::MessageReceived(BMessage *msg) fTurnOffSlider->SetEnabled(fTurnOffCheckBox->Value() == B_CONTROL_ON); break; - case kMsgTurnOffSliderChanged: + case kMsgTurnOffSliderUpdate: if (fRunSlider->Value() > fTurnOffSlider->Value()) fRunSlider->SetValue(fTurnOffSlider->Value()); break; - case kMsgPasswordSliderChanged: + case kMsgPasswordSliderUpdate: if (fPasswordSlider->Value() < fRunSlider->Value()) fRunSlider->SetValue(fPasswordSlider->Value()); break; + case kMsgTimeSliderChanged: case kMsgPasswordCheckBox: case kMsgEnableScreenSaverBox: case kMsgFadeCornerChanged: