summaryrefslogtreecommitdiff
path: root/dash
diff options
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2014-07-10 14:34:49 +0200
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2014-07-10 14:34:49 +0200
commit9a514ec85161ac97d904414772d8fa49c0628a60 (patch)
tree7c4483ad32c1775796c44897d51ec30c075cc357 /dash
parenta1da2093d004cab1d86588e95f423d525d38f06d (diff)
FilterRatingsWidget: add support for scaling
(bzr r3830.5.18)
Diffstat (limited to 'dash')
-rw-r--r--dash/FilterRatingsWidget.cpp31
-rw-r--r--dash/FilterRatingsWidget.h3
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_;