QtNovelUI/WordsIDE/present_container.h

65 lines
2.0 KiB
C++

#ifndef PRESENT_CONTAINER_H
#define PRESENT_CONTAINER_H
#include "manager_docs.h"
#include <QComboBox>
#include <QPushButton>
#include <QStackedLayout>
#include <QStackedWidget>
#include <SplitWindow.h>
#include "message_view.h"
namespace Presents {
class WelcomePanel;
}
namespace Components {
/**
* @brief 内容视图容器
*/
class PresentContainer : public QWidget ,public ExtendView, public Presents::PresentHost {
Q_OBJECT
public:
PresentContainer(QWidget *ptr = nullptr);
// PresentHost interface
public:
virtual QWidget *hostWidget() const override;
virtual void addListener(Presents::HostListener *lst) override;
virtual void append(Presents::FilePresent *ins) override;
virtual bool active(const Presents::FilePresent *ins) override;
virtual void remove(const Presents::FilePresent *ins) override;
virtual bool contains(const Presents::FilePresent *ins) const override;
virtual bool avaliable(Presents::FilePresent *vins) override;
virtual Presents::FilePresent *currentPresent() const override;
// ExtendView interface
public:
virtual ExtendView *newInst(QWidget *parent, XApp *core) override;
virtual QMenu *bindMenu() const override;
virtual QString typeName() const override;
virtual ExtendType type() const override;
virtual QWidget *presentWidget() const override;
virtual void saveProcess() override;
virtual void closeProcess() override;
private:
QList<Presents::HostListener*> listeners_store;
QList<const Presents::FilePresent *> items_store;
QComboBox *const title_store;
QStackedWidget *const stack_container;
Presents::WelcomePanel *const welcome_list;
QPushButton *const close_btn;
void change_view(int view_index);
void close_current_view();
};
} // namespace Components
#endif // PRESENT_CONTAINER_H