* 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
This commit is contained in:
Axel Dörfler
2007-01-04 14:27:05 +00:00
parent fb29f5b0fb
commit 8b11e3b15d
@@ -43,27 +43,27 @@ const int32 kMsgSaverSelected = 'SSEL';
const int32 kMsgTestSaver = 'TEST'; const int32 kMsgTestSaver = 'TEST';
const int32 kMsgAddSaver = 'ADD '; const int32 kMsgAddSaver = 'ADD ';
const int32 kMsgPasswordCheckBox = 'PWCB'; const int32 kMsgPasswordCheckBox = 'PWCB';
const int32 kMsgRunSliderChanged = 'RSCG'; const int32 kMsgRunSliderUpdate = 'RSup';
const int32 kMsgPasswordSliderChanged = 'PWCG'; const int32 kMsgPasswordSliderUpdate = 'PWup';
const int32 kMsgChangePassword = 'PWBT'; const int32 kMsgChangePassword = 'PWBT';
const int32 kMsgEnableScreenSaverBox = 'ESCH'; const int32 kMsgEnableScreenSaverBox = 'ESCH';
const int32 kMsgTurnOffCheckBox = 'TUOF'; const int32 kMsgTurnOffCheckBox = 'TUOF';
const int32 kMsgTurnOffSliderChanged = 'TUCG'; const int32 kMsgTurnOffSliderUpdate = 'TUup';
const int32 kMsgFadeCornerChanged = 'fdcc'; const int32 kMsgFadeCornerChanged = 'fdcc';
const int32 kMsgNeverFadeCornerChanged = 'nfcc'; const int32 kMsgNeverFadeCornerChanged = 'nfcc';
static const uint32 kTimeSliderChanged = 'tsch'; const uint32 kMsgTimeSliderChanged = '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 changedMessage,
uint32 updateMessage);
virtual ~TimeSlider(); virtual ~TimeSlider();
virtual void AttachedToWindow(); virtual void AttachedToWindow();
virtual void MessageReceived(BMessage* message);
virtual void SetValue(int32 value); virtual void SetValue(int32 value);
void SetTime(bigtime_t useconds); void SetTime(bigtime_t useconds);
@@ -71,8 +71,6 @@ class TimeSlider : public BSlider {
private: private:
void _TimeToString(bigtime_t useconds, BString& string); void _TimeToString(bigtime_t useconds, BString& string);
uint32 fModificationMessage;
}; };
class FadeView : public BView { class FadeView : public BView {
@@ -130,13 +128,13 @@ static const int32 kTimeInUnits[] = {
static const int32 kTimeUnitCount = sizeof(kTimeInUnits) / sizeof(kTimeInUnits[0]); static const int32 kTimeUnitCount = sizeof(kTimeInUnits) / sizeof(kTimeInUnits[0]);
TimeSlider::TimeSlider(BRect frame, const char* name, uint32 modificationMessage) TimeSlider::TimeSlider(BRect frame, const char* name, uint32 changedMessage,
: BSlider(frame, name, "0 minutes", new BMessage(kTimeSliderChanged), uint32 updateMessage)
0, kTimeUnitCount - 1, B_TRIANGLE_THUMB, B_FOLLOW_LEFT_RIGHT), : BSlider(frame, name, "30 seconds", new BMessage(changedMessage),
fModificationMessage(modificationMessage) 0, kTimeUnitCount - 1, B_TRIANGLE_THUMB, B_FOLLOW_LEFT_RIGHT)
{ {
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
SetModificationMessage(new BMessage(kTimeSliderChanged)); SetModificationMessage(new BMessage(updateMessage));
SetBarThickness(10); SetBarThickness(10);
} }
@@ -150,21 +148,7 @@ void
TimeSlider::AttachedToWindow() TimeSlider::AttachedToWindow()
{ {
BSlider::AttachedToWindow(); BSlider::AttachedToWindow();
SetTarget(this); SetTarget(Window());
}
void
TimeSlider::MessageReceived(BMessage* message)
{
switch (message->what) {
case kTimeSliderChanged:
Window()->PostMessage(fModificationMessage);
break;
default:
BSlider::MessageReceived(message);
}
} }
@@ -673,7 +657,8 @@ ScreenSaverWindow::_SetupFadeTab(BRect rect)
box->AddChild(stringView); box->AddChild(stringView);
rect.left += labelWidth; rect.left += labelWidth;
fRunSlider = new TimeSlider(rect, "RunSlider", kMsgRunSliderChanged); fRunSlider = new TimeSlider(rect, "RunSlider", kMsgTimeSliderChanged,
kMsgRunSliderUpdate);
float width, height; float width, height;
fRunSlider->GetPreferredSize(&width, &height); fRunSlider->GetPreferredSize(&width, &height);
fRunSlider->ResizeTo(fRunSlider->Bounds().Width(), height); fRunSlider->ResizeTo(fRunSlider->Bounds().Width(), height);
@@ -688,7 +673,8 @@ ScreenSaverWindow::_SetupFadeTab(BRect rect)
box->AddChild(fTurnOffCheckBox); box->AddChild(fTurnOffCheckBox);
rect.left += radioButtonOffset + labelWidth; rect.left += radioButtonOffset + labelWidth;
fTurnOffSlider = new TimeSlider(rect, "TurnOffSlider", kMsgTurnOffSliderChanged); fTurnOffSlider = new TimeSlider(rect, "TurnOffSlider", kMsgTimeSliderChanged,
kMsgTurnOffSliderUpdate);
fTurnOffSlider->ResizeTo(fTurnOffSlider->Bounds().Width(), height); fTurnOffSlider->ResizeTo(fTurnOffSlider->Bounds().Width(), height);
box->AddChild(fTurnOffSlider); box->AddChild(fTurnOffSlider);
@@ -701,7 +687,8 @@ ScreenSaverWindow::_SetupFadeTab(BRect rect)
box->AddChild(fPasswordCheckBox); box->AddChild(fPasswordCheckBox);
rect.left += radioButtonOffset + labelWidth; rect.left += radioButtonOffset + labelWidth;
fPasswordSlider = new TimeSlider(rect, "PasswordSlider", kMsgPasswordSliderChanged); fPasswordSlider = new TimeSlider(rect, "PasswordSlider", kMsgTimeSliderChanged,
kMsgPasswordSliderUpdate);
fPasswordSlider->ResizeTo(fPasswordSlider->Bounds().Width(), height); fPasswordSlider->ResizeTo(fPasswordSlider->Bounds().Width(), height);
box->AddChild(fPasswordSlider); box->AddChild(fPasswordSlider);
@@ -845,7 +832,7 @@ ScreenSaverWindow::MessageReceived(BMessage *msg)
switch (msg->what) { switch (msg->what) {
// "Fade" tab // "Fade" tab
case kMsgRunSliderChanged: case kMsgRunSliderUpdate:
if (fRunSlider->Value() > fTurnOffSlider->Value()) if (fRunSlider->Value() > fTurnOffSlider->Value())
fTurnOffSlider->SetValue(fRunSlider->Value()); fTurnOffSlider->SetValue(fRunSlider->Value());
@@ -857,16 +844,17 @@ ScreenSaverWindow::MessageReceived(BMessage *msg)
fTurnOffSlider->SetEnabled(fTurnOffCheckBox->Value() == B_CONTROL_ON); fTurnOffSlider->SetEnabled(fTurnOffCheckBox->Value() == B_CONTROL_ON);
break; break;
case kMsgTurnOffSliderChanged: case kMsgTurnOffSliderUpdate:
if (fRunSlider->Value() > fTurnOffSlider->Value()) if (fRunSlider->Value() > fTurnOffSlider->Value())
fRunSlider->SetValue(fTurnOffSlider->Value()); fRunSlider->SetValue(fTurnOffSlider->Value());
break; break;
case kMsgPasswordSliderChanged: case kMsgPasswordSliderUpdate:
if (fPasswordSlider->Value() < fRunSlider->Value()) if (fPasswordSlider->Value() < fRunSlider->Value())
fRunSlider->SetValue(fPasswordSlider->Value()); fRunSlider->SetValue(fPasswordSlider->Value());
break; break;
case kMsgTimeSliderChanged:
case kMsgPasswordCheckBox: case kMsgPasswordCheckBox:
case kMsgEnableScreenSaverBox: case kMsgEnableScreenSaverBox:
case kMsgFadeCornerChanged: case kMsgFadeCornerChanged: