void FadeView::AttachedToWindow() { fEnableCheckBox->SetTarget(this); fRunSlider->SetTarget(this); fTurnOffCheckBox->SetTarget(this); fTurnOffSlider->SetTarget(this); fFadeNow->SetTarget(this); fFadeNever->SetTarget(this); fPasswordCheckBox->SetTarget(this); fPasswordSlider->SetTarget(this); fEnableCheckBox->SetValue( fSettings.TimeFlags() & ENABLE_SAVER ? B_CONTROL_ON : B_CONTROL_OFF); fRunSlider->SetTime(fSettings.BlankTime()); fTurnOffSlider->SetTime(fSettings.OffTime() + fSettings.BlankTime()); fFadeNow->SetCorner(fSettings.BlankCorner()); fFadeNever->SetCorner(fSettings.NeverBlankCorner()); fPasswordCheckBox->SetValue(fSettings.LockEnable()); fPasswordSlider->SetTime(fSettings.PasswordTime()); _UpdateColors(); UpdateTurnOffScreen(); UpdateStatus(); }
// FrameResized void AlphaSlider::FrameResized(float width, float height) { BRect r = _BitmapRect(); _AllocBitmap(r.IntegerWidth() + 1, r.IntegerHeight() + 1); _UpdateColors(); Invalidate(); }
void AntialiasingSettingsView::MessageReceived(BMessage *msg) { switch (msg->what) { case kMsgSetAntialiasing: { bool subpixelAntialiasing; if (msg->FindBool("antialiasing", &subpixelAntialiasing) != B_OK || subpixelAntialiasing == fCurrentSubpixelAntialiasing) break; fCurrentSubpixelAntialiasing = subpixelAntialiasing; fAverageWeightControl->SetEnabled(fCurrentSubpixelAntialiasing); set_subpixel_antialiasing(fCurrentSubpixelAntialiasing); Window()->PostMessage(kMsgUpdate); break; } case kMsgSetHinting: { int8 hinting; if (msg->FindInt8("hinting", &hinting) != B_OK || hinting == fCurrentHinting) break; fCurrentHinting = hinting; set_hinting_mode(fCurrentHinting); Window()->PostMessage(kMsgUpdate); break; } case kMsgSetAverageWeight: { int32 averageWeight = fAverageWeightControl->Value(); if (averageWeight == fCurrentAverageWeight) break; fCurrentAverageWeight = averageWeight; set_average_weight(fCurrentAverageWeight); Window()->PostMessage(kMsgUpdate); break; } case B_COLORS_UPDATED: { if (msg->HasColor(ui_color_name(B_PANEL_BACKGROUND_COLOR)) || msg->HasColor(ui_color_name(B_PANEL_TEXT_COLOR))) { _UpdateColors(); } break; } default: BView::MessageReceived(msg); } }
// SetColor void AlphaSlider::SetColor(const rgb_color& color) { if ((uint32&)fColor == (uint32&)color) return; fColor = color; _UpdateColors(); Invalidate(); }
// SetEnabled void AlphaSlider::SetEnabled(bool enabled) { if (enabled == IsEnabled()) return; BControl::SetEnabled(enabled); _UpdateColors(); Invalidate(); }
void FadeView::MessageReceived(BMessage *message) { switch (message->what) { case B_COLORS_UPDATED: _UpdateColors(); break; case kMsgRunSliderChanged: case kMsgRunSliderUpdate: if (fRunSlider->Value() > fTurnOffSlider->Value()) fTurnOffSlider->SetValue(fRunSlider->Value()); if (fRunSlider->Value() > fPasswordSlider->Value()) fPasswordSlider->SetValue(fRunSlider->Value()); 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 kMsgTurnOffCheckBox: fTurnOffSlider->SetEnabled( fTurnOffCheckBox->Value() == B_CONTROL_ON); break; } switch (message->what) { case kMsgRunSliderChanged: case kMsgTurnOffSliderChanged: case kMsgPasswordSliderChanged: case kMsgPasswordCheckBox: case kMsgEnableScreenSaverBox: case kMsgFadeCornerChanged: case kMsgNeverFadeCornerChanged: UpdateStatus(); fSettings.Save(); break; default: BView::MessageReceived(message); } }
AntialiasingSettingsView::AntialiasingSettingsView(const char* name) : BView(name, 0) { // collect the current system settings if (get_subpixel_antialiasing(&fCurrentSubpixelAntialiasing) != B_OK) fCurrentSubpixelAntialiasing = kDefaultSubpixelAntialiasing; fSavedSubpixelAntialiasing = fCurrentSubpixelAntialiasing; if (get_hinting_mode(&fCurrentHinting) != B_OK) fCurrentHinting = kDefaultHintingMode; fSavedHinting = fCurrentHinting; if (get_average_weight(&fCurrentAverageWeight) != B_OK) fCurrentAverageWeight = kDefaultAverageWeight; fSavedAverageWeight = fCurrentAverageWeight; // create the controls // antialiasing menu _BuildAntialiasingMenu(); fAntialiasingMenuField = new BMenuField("antialiasing", B_TRANSLATE("Antialiasing type:"), fAntialiasingMenu); // "average weight" in subpixel filtering fAverageWeightControl = new BSlider("averageWeightControl", B_TRANSLATE("Reduce colored edges filter strength:"), new BMessage(kMsgSetAverageWeight), 0, 255, B_HORIZONTAL); fAverageWeightControl->SetLimitLabels(B_TRANSLATE("Off"), B_TRANSLATE("Strong")); fAverageWeightControl->SetHashMarks(B_HASH_MARKS_BOTTOM); fAverageWeightControl->SetHashMarkCount(255 / 15); fAverageWeightControl->SetEnabled(false); // hinting menu _BuildHintingMenu(); fHintingMenuField = new BMenuField("hinting", B_TRANSLATE("Glyph hinting:"), fHintingMenu); #ifdef DISABLE_HINTING_CONTROL fHintingMenuField->SetEnabled(false); #endif #ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING // subpixelAntialiasingDisabledLabel // TODO: Replace with layout friendly constructor once available. fSubpixelAntialiasingDisabledLabel = new BTextView("unavailable label"); fSubpixelAntialiasingDisabledLabel->SetText(B_TRANSLATE( "Subpixel based anti-aliasing in combination with glyph hinting is not " "available in this build of Haiku to avoid possible patent issues. To " "enable this feature, you have to build Haiku yourself and enable " "certain options in the libfreetype configuration header.")); fSubpixelAntialiasingDisabledLabel->SetViewUIColor(B_PANEL_BACKGROUND_COLOR); fSubpixelAntialiasingDisabledLabel->MakeEditable(false); fSubpixelAntialiasingDisabledLabel->MakeSelectable(false); #endif // !FT_CONFIG_OPTION_SUBPIXEL_RENDERING BLayoutBuilder::Grid<>(this, B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING) // controls pane .Add(fHintingMenuField->CreateLabelLayoutItem(), 0, 0) .Add(fHintingMenuField->CreateMenuBarLayoutItem(), 1, 0) .Add(fAntialiasingMenuField->CreateLabelLayoutItem(), 0, 1) .Add(fAntialiasingMenuField->CreateMenuBarLayoutItem(), 1, 1) .Add(fAverageWeightControl, 0, 2, 2) #ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING // hinting+subpixel unavailable info .Add(fSubpixelAntialiasingDisabledLabel, 0, 3, 2) #else .Add(BSpaceLayoutItem::CreateGlue(), 0, 3, 2) #endif .AddGlue(0, 4) .SetInsets(B_USE_WINDOW_SPACING); _SetCurrentAntialiasing(); _SetCurrentHinting(); _SetCurrentAverageWeight(); _UpdateColors(); }