From 19d57a88970d33b6a674b3d584eb6639ec828362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Wed, 28 Dec 2016 13:28:15 +0100 Subject: [PATCH] [apps] Create a class curve view with banner Change-Id: I49108e9231f97aeed53351e2596b6550568c6314 --- apps/Makefile | 1 + apps/curve_view_with_banner.cpp | 39 +++++++++++++++++++++++++++++++++ apps/curve_view_with_banner.h | 24 ++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 apps/curve_view_with_banner.cpp create mode 100644 apps/curve_view_with_banner.h diff --git a/apps/Makefile b/apps/Makefile index 3aae45d86..0027090ed 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -9,6 +9,7 @@ app_objs += $(addprefix apps/,\ apps_container.o\ constant.o\ curve_view.o\ + curve_view_with_banner.o\ curve_view_window.o\ editable_cell_table_view_controller.o\ expression_text_field_delegate.o\ diff --git a/apps/curve_view_with_banner.cpp b/apps/curve_view_with_banner.cpp new file mode 100644 index 000000000..4b7e0417a --- /dev/null +++ b/apps/curve_view_with_banner.cpp @@ -0,0 +1,39 @@ +#include "curve_view_with_banner.h" +#include +#include + +CurveViewWithBanner::CurveViewWithBanner(CurveViewWindow * curveViewWindow, float topMarginFactor, + float rightMarginFactor, float bottomMarginFactor, float leftMarginFactor) : + CurveView(curveViewWindow, topMarginFactor, rightMarginFactor, bottomMarginFactor, leftMarginFactor), + m_mainViewSelected(true) +{ +} + +bool CurveViewWithBanner::isMainViewSelected() { + return m_mainViewSelected; +} + +void CurveViewWithBanner::selectMainView(bool mainViewSelected) { + if (m_mainViewSelected != mainViewSelected) { + m_mainViewSelected = mainViewSelected; + reloadMainView(); + layoutSubviews(); + } +} + +int CurveViewWithBanner::numberOfSubviews() const { + return 1; +}; + +View * CurveViewWithBanner::subviewAtIndex(int index) { + assert(index == 0); + return bannerView(); +} + +void CurveViewWithBanner::layoutSubviews() { + KDRect bannerFrame(KDRect(0, bounds().height()- k_bannerHeight, bounds().width(), k_bannerHeight)); + if (!m_mainViewSelected) { + bannerFrame = KDRectZero; + } + bannerView()->setFrame(bannerFrame); +} diff --git a/apps/curve_view_with_banner.h b/apps/curve_view_with_banner.h new file mode 100644 index 000000000..4cbaa65f4 --- /dev/null +++ b/apps/curve_view_with_banner.h @@ -0,0 +1,24 @@ +#ifndef APPS_CURVE_VIEW_WITH_BANNER_H +#define APPS_CURVE_VIEW_WITH_BANNER_H + +#include +#include "curve_view.h" + +class CurveViewWithBanner : public CurveView { +public: + CurveViewWithBanner(CurveViewWindow * curveViewWindow = nullptr, float topMarginFactor = 0.0f, + float rightMarginFactor = 0.0f, float bottomMarginFactor = 0.0f, float leftMarginFactor = 0.0f); + virtual void reloadMainView() = 0; + bool isMainViewSelected(); + void selectMainView(bool mainViewSelected); +protected: + void layoutSubviews() override; + bool m_mainViewSelected; +private: + constexpr static KDCoordinate k_bannerHeight = 30; + int numberOfSubviews() const override; + View * subviewAtIndex(int index) override; + virtual View * bannerView() = 0; +}; + +#endif