#ifndef STORYBOARDSPRESENT_H
#define STORYBOARDSPRESENT_H

#include "DocsManager.h"
#include "appcore.h"

#include <QTextEdit>
#include <QTreeView>
#include <QWidget>

namespace DataModel {

    class StoryboardsPresentModel : public Schedule::AccessibleObject {
      public:
        StoryboardsPresentModel(Core::AppCore *core);
        virtual ~StoryboardsPresentModel();

        void refresh();
        void detailShow(const QList<QString> &navi);

        QStandardItemModel *treeModel() const;
        QTextDocument *detailBackend() const;

        // AccessibleObject interface
      public:
        virtual QString name() const override;

      private:
        Core::AppCore *const core_ins;
        QStandardItemModel *const model_base;
        QTextDocument *const detail_backend;
    };

} // namespace DataModel

namespace Components {

    class StoryboardsPresent : public QWidget, public MakeTools::PresentBase {
      public:
        StoryboardsPresent(Schedule::CommandsDispatcher *core, DataModel::StoryboardsPresentModel *backend, QWidget *parent = nullptr);

        // AccessibleObject interface
      public:
        virtual QString name() const override;
        // PresentBase interface
      public:
        virtual QWidget *widget() const override;

      private:
        Schedule::CommandsDispatcher *const core_ins;
        QTreeView *const tree_view;
        QTextEdit *const details_view;

        void show_current_details(const QModelIndex &idx);
        void jump_to(const QModelIndex &idx);
    };
} // namespace Components

#endif // STORYBOARDSPRESENT_H
