diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-07-10 14:34:49 +0200 |
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-07-10 14:34:49 +0200 |
| commit | 9a514ec85161ac97d904414772d8fa49c0628a60 (patch) | |
| tree | 7c4483ad32c1775796c44897d51ec30c075cc357 /dash | |
| parent | a1da2093d004cab1d86588e95f423d525d38f06d (diff) | |
FilterRatingsWidget: add support for scaling
(bzr r3830.5.18)
Diffstat (limited to 'dash')
| -rw-r--r-- | dash/FilterRatingsWidget.cpp | 31 | ||||
| -rw-r--r-- | dash/FilterRatingsWidget.h | 3 |
2 files changed, 19 insertions, 15 deletions
diff --git a/dash/FilterRatingsWidget.cpp b/dash/FilterRatingsWidget.cpp index 0ccbb5982..112a805bb 100644 --- a/dash/FilterRatingsWidget.cpp +++ b/dash/FilterRatingsWidget.cpp @@ -33,15 +33,14 @@ #include "FilterRatingsButton.h" #include "FilterRatingsWidget.h" -namespace -{ -const int star_size = 28; -} - namespace unity { namespace dash { +namespace +{ +const RawPixel STAR_SIZE = 28_em; +} NUX_IMPLEMENT_OBJECT_TYPE(FilterRatingsWidget); @@ -49,26 +48,30 @@ FilterRatingsWidget::FilterRatingsWidget(NUX_FILE_LINE_DECL) : FilterExpanderLabel(_("Rating"), NUX_FILE_LINE_PARAM) , all_button_(nullptr) { - dash::Style& style = dash::Style::Instance(); - const int top_padding = style.GetSpaceBetweenFilterWidgets() - style.GetFilterHighlightPadding() - 1; // -1 (PNGs have an 1px top padding) - const int bottom_padding = style.GetFilterHighlightPadding(); - nux::VLayout* layout = new nux::VLayout(NUX_TRACKER_LOCATION); - layout->SetTopAndBottomPadding(top_padding, bottom_padding); ratings_ = new FilterRatingsButton(NUX_TRACKER_LOCATION); - ratings_->SetMinimumHeight(star_size); layout->AddView(ratings_); + UpdateSize(); + SetContents(layout); + scale.changed.connect([this] (double scale) { if (all_button_) all_button_->scale = scale; + UpdateSize(); }); - - SetContents(layout); } -FilterRatingsWidget::~FilterRatingsWidget() +void FilterRatingsWidget::UpdateSize() { + dash::Style& style = dash::Style::Instance(); + int top_padding = style.GetSpaceBetweenFilterWidgets().CP(scale) - style.GetFilterHighlightPadding().CP(scale) - (1_em).CP(scale); // -1 (PNGs have an 1px top padding) + int bottom_padding = style.GetFilterHighlightPadding().CP(scale); + static_cast<nux::VLayout*>(GetLayout())->SetTopAndBottomPadding(top_padding, bottom_padding); + + ratings_->scale = scale(); + ratings_->SetMinimumHeight(STAR_SIZE.CP(scale)); + ratings_->ApplyMinHeight(); } void FilterRatingsWidget::SetFilter(Filter::Ptr const& filter) diff --git a/dash/FilterRatingsWidget.h b/dash/FilterRatingsWidget.h index d694c0800..649c74e56 100644 --- a/dash/FilterRatingsWidget.h +++ b/dash/FilterRatingsWidget.h @@ -45,7 +45,6 @@ class FilterRatingsWidget : public FilterExpanderLabel NUX_DECLARE_OBJECT_TYPE(FilterRatingsWidget, FilterExpanderLabel); public: FilterRatingsWidget(NUX_FILE_LINE_PROTO); - virtual ~FilterRatingsWidget(); void SetFilter(Filter::Ptr const& filter); std::string GetFilterType(); @@ -54,6 +53,8 @@ protected: void ClearRedirectedRenderChildArea(); private: + void UpdateSize(); + FilterAllButton* all_button_; FilterRatingsButton* ratings_; RatingsFilter::Ptr filter_; |
