#ifndef SYSCHARTDEVELOPERMGT_H
#define SYSCHARTDEVELOPERMGT_H
#pragma execution_character_set("utf-8")

#include <topcore/topclassabs.h>
#include <topcore/topclasshelper.h>
#include <tdatabaseutil/tsqlselectorv2.h>
#include <QFileDialog>

class QVBoxLayout;
class TSplitter;
class TTableViewV2;
class TSearchEntry;
class TUiLoader;
class TPageTool;
class TDialog;
class TWidget;
class TSqlSelectorV2;
class TTableView;
class SysChartDeveloper;
class SysChartNavigation;

class SysChartDeveloperMgt: public TopClassAbs
{
    Q_OBJECT
public:
    explicit SysChartDeveloperMgt(const QString &iModuleName = QString(""),
                                      const QVariantMap &iUrlPars = QVariantMap(),
                                      QWidget *iParent = nullptr);
    ~SysChartDeveloperMgt();
public slots:
    void refresh(bool iResetPageBol = true);
    void preview();
    QVariantList selectedItems() const;
    QVariantList selectedDataMaps() const;
    QString specifiedClass();
    void setFileDir(const QString &iDir);
    QString lastFileDir();
    void exportChart();
    void importChart();

private slots:
    void onSelectionChanged();
    void onDetailChanged();
    void onPageChanged();

private:
    void initUi();
    void initPreviewUi();
    void initSpecifiedClass();
    TSqlSelectorV2 getSqlSelector(bool iResetPageBol = true);
    QStringList extractDir(const QString &iPath);

private:
    TSplitter *mBodySplitter = nullptr;
    QWidget *mBodyWidget = nullptr;
    QWidget *mMgtWidget = nullptr;
    QVBoxLayout *mBodyLayout = nullptr;
    TSearchEntry *mSearchEntry = nullptr;
    TPageTool *mPageTool = nullptr;
    TTableView *mTableView = nullptr;
    SysChartDeveloper *mDetail = nullptr;
    TDialog *mPreviewDlg = nullptr;
    SysChartNavigation *mChartNaviWgt = nullptr;
    TopClassTableConf mTableConf;
    QString mSpecifiedClass;
    QString mLastChartNaviId = "";
    QString mLastDir;
};

class MultiFileSelect :public QFileDialog
{
    Q_OBJECT
public:
    explicit MultiFileSelect(QWidget *parent = 0);

signals:

public slots:
    void go();
};
#endif // SYSCHARTDEVELOPERMGT_H