From edda6e98b92fcdff3fd157d06e7cc37f7ab86416 Mon Sep 17 00:00:00 2001 From: Philippe Houdoin Date: Wed, 16 Feb 2011 15:36:05 +0000 Subject: [PATCH] Tell user why Turn Off feature is not available. Close #3274. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40530 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../screensaver/ScreenSaverWindow.cpp | 28 ++++++++++++++++++- .../screensaver/ScreenSaverWindow.h | 2 ++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/preferences/screensaver/ScreenSaverWindow.cpp b/src/preferences/screensaver/ScreenSaverWindow.cpp index 1c85b83458..d2d9494a3c 100644 --- a/src/preferences/screensaver/ScreenSaverWindow.cpp +++ b/src/preferences/screensaver/ScreenSaverWindow.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include @@ -552,7 +553,7 @@ ModulesView::_OpenSaver() // There are no settings at all, we add the module name here to // let it look a bit better at least. BPrivate::BuildScreenSaverDefaultSettingsView(fSettingsView, - fSettings.ModuleName()[0] ? fSettings.ModuleName() : + fSettings.ModuleName()[0] ? fSettings.ModuleName() : B_TRANSLATE("Blackness"), saver || !fSettings.ModuleName()[0] ? B_TRANSLATE("No options available") : B_TRANSLATE("Could not load screen saver")); @@ -734,6 +735,21 @@ ScreenSaverWindow::_SetupFadeTab(BRect rect) fTurnOffSlider->ResizeTo(fTurnOffSlider->Bounds().Width(), height); box->AddChild(fTurnOffSlider); + rgb_color textColor = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), + B_DISABLED_LABEL_TINT); + BRect textRect(0, 0, fTurnOffSlider->Bounds().Width(), height); + textRect.InsetBy(0, 3); + fTurnOffNotSupported = new BTextView(rect, "not_supported", + textRect, be_plain_font, &textColor, B_FOLLOW_ALL, B_WILL_DRAW); + fTurnOffNotSupported->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + fTurnOffNotSupported->MakeEditable(false); + fTurnOffNotSupported->MakeSelectable(false); + fTurnOffNotSupported->SetText( + B_TRANSLATE("Display Power Management Signaling not available")); + + fTurnOffNotSupported->ResizeTo(fTurnOffSlider->Bounds().Width(), height); + box->AddChild(fTurnOffNotSupported); + // Password rect.left = 8; rect.OffsetBy(0, fTurnOffSlider->Bounds().Height() + 4.0f); @@ -835,6 +851,16 @@ ScreenSaverWindow::_UpdateTurnOffScreen() fTurnOffCheckBox->SetValue(enabled && fTurnOffScreenFlags != 0 ? B_CONTROL_ON : B_CONTROL_OFF); + + enabled = fEnableCheckBox->Value() == B_CONTROL_ON; + fTurnOffCheckBox->SetEnabled(enabled && fTurnOffScreenFlags != 0); + if (fTurnOffScreenFlags != 0) { + fTurnOffNotSupported->Hide(); + fTurnOffSlider->Show(); + } else { + fTurnOffSlider->Hide(); + fTurnOffNotSupported->Show(); + } } diff --git a/src/preferences/screensaver/ScreenSaverWindow.h b/src/preferences/screensaver/ScreenSaverWindow.h index 40dc087519..f2bc99f7e1 100644 --- a/src/preferences/screensaver/ScreenSaverWindow.h +++ b/src/preferences/screensaver/ScreenSaverWindow.h @@ -23,6 +23,7 @@ class BButton; class BTabView; +class BTextView; class ModulesView; class ScreenCornerSelector; @@ -62,6 +63,7 @@ private: BCheckBox* fTurnOffCheckBox; TimeSlider* fTurnOffSlider; + BTextView* fTurnOffNotSupported; BCheckBox* fPasswordCheckBox; TimeSlider* fPasswordSlider;