#ifndef SYSCONFIGMGTV2_H
#define SYSCONFIGMGTV2_H

#include <tbaseutil/tdataresponse.h>
#include <tdatabaseutil/tsqlselectorv2.h>
#include <topcore/topclassabs.h>
#include "sysconfig.h"

class TTableView;
class TSearchEntry;
class TPageTool;
class TSplitter;

class SysConfigMgt : public TopClassAbs
{
    Q_OBJECT
public:
    explicit SysConfigMgt(const QString &iModuleNameStr = QString(""),
                        const QVariantMap iUrlPars = QVariantMap(),
                        QWidget *iParent = nullptr);
    ~SysConfigMgt();

public slots:
    void refresh(bool iResetPageBol = true);
    void deleteItem(const QVariantList &iIdLst);
    QVariantList selectedItems();
    TopClassAbs *openItem(int iUserId);
    void newItem();

private slots:
    void onPageChanged();
    void onSelectionChanged();
    void onDetailSaved(const QVariant &iUidStr);
    void onDetailChanged();

private:
    TSqlSelectorV2 getSqlSelector(bool iResetPageBol = true);
    void initTableView();
    void fillTableData(const TDataResponse &iDataRes);
    QVariantList getFixedTableHeadItemList();
    QVariantMap tableHeaderItem(const QString &iKeyStr, const QString &iDispStr, const QString &iDisplayRolr, int iSizeInt = 100, const QString &iTypeStr = QString());

private:
    TSplitter *mBodySplitter = nullptr;
    QWidget *mBodyWidget = nullptr;
    TTableView *mTableView = nullptr;
    TSearchEntry *mSearchEntry = nullptr;
    TPageTool *mPageTool = nullptr;
    QVariantList mSelectedLst = QVariantList();
    SysConfig *mDetailView = nullptr;
};

#endif // SYSCONFIGMGTV2_H