/*
 * Copyright 2009- ECMWF.
 *
 * This software is licensed under the terms of the Apache Licence version 2.0
 * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 * In applying this licence, ECMWF does not waive the privileges and immunities
 * granted to it by virtue of its status as an intergovernmental organisation
 * nor does it submit to any jurisdiction.
 */

#ifndef ecflow_viewer_DashboardDock_HPP
#define ecflow_viewer_DashboardDock_HPP

#include <QDockWidget>

#include "ui_DashboardDockTitleWidget.h"

class DashboardWidget;
class QToolButton;

class DashboardDockTitleWidget : public QWidget, protected Ui::DashboardDockTitleWidget {
    Q_OBJECT

public:
    explicit DashboardDockTitleWidget(QWidget* parent = nullptr);

    void addInfoPanelActions();
    QSize sizeHint() const override;
    QSize minimumSizeHint() const override;
    QToolButton* optionsTb() const;
    void setBcWidget(QWidget* w);
    void addActions(QList<QAction*> lst);
    void setDetachedAction(QAction* ac);
    void setMaximisedAction(QAction* ac);

public Q_SLOTS:
    void slotUpdateTitle(QString txt, QString type);

protected Q_SLOTS:
#if 0
    void on_floatTb__clicked(bool);
#endif
    void on_closeTb__clicked(bool);
    void slotActionChanged();

Q_SIGNALS:
    void detachedChanged(bool);

protected:
    QList<QToolButton*> actionTbList_;
    QWidget* titleBc_{nullptr};
    QPixmap warnPix_;
};

class DashboardDock : public QDockWidget {
    Q_OBJECT

public:
    explicit DashboardDock(DashboardWidget* dw, QWidget* parent = nullptr);

Q_SIGNALS:
    void closeRequested();

protected:
    void showEvent(QShowEvent* event) override;
    void closeEvent(QCloseEvent* event) override;
};

#endif /* ecflow_viewer_DashboardDock_HPP */
