/** * @RDE_HEADER@ * SideBar * $Id$ * $HeadURL$ * $Author$ * Created by Norbert Thoden, SLSE, 2015-01-19 */ #pragma once // Own #include "side_bar_export.h" #include "side_bar_item.h" #include // Qt #include class QModelIndex; class QStandardItem; //---------------------------------------------------------------------------- namespace SituationMap { // forward: class Map; // using baseclass QDialog -> with background / no transparency // using baseclass QWidget -> no background / will be transparent class SIDEBAR_EXPORT SideBar : public QDialog { using BaseClass = QDialog; Q_OBJECT public: static QImage createImage(const QColor &fgColor , const QColor &bgColor , int size); static QIcon createIcon(const QColor &fgColor , const QColor &bgColor , int size); explicit SideBar(QWidget *parent = nullptr); virtual ~SideBar(); // Animation regarding position: virtual void setAnimationDuration(int msecs); virtual void setInvisiblePosition(const QPoint &invisiblePos); virtual void setVisiblePosition(const QPoint &visiblePos); virtual void showAnimated(); virtual bool isCurrentlyShowing(); virtual void hideAnimated(); virtual bool isCurrentlyHiding(); virtual bool addCheckableItem(SideBarItem *item); virtual bool addWidget(QWidget *widget); signals: void dataChanged(); void closeRequest(); void positionString(bool onOff); protected Q_SLOTS: void onItemChanged(QStandardItem *item); void onAnimationOnFinished(); void onAnimationOffFinished(); void onClicked(const QModelIndex &index); void onAnimationStarted(); void onAnimationFinished(); private: bool initAppearanceToSideBar(bool toSideBar = true); bool initModel(); private: class Private; /** * The private d-pointer to not break BC when changing internals of this class */ Private *d = nullptr; LOGGER_T m_logger; ///< Interface of the Logging-Facility }; } // namespace SituationMap