#ifndef SYSCOMMUGROUP_H
#define SYSCOMMUGROUP_H

#include <topcore/topclassabs.h>

class QHBoxLayout;
class TUiLoader;
class TTableView;

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

public slots:
    void reload();
    void copy();
    void create();

    void clearData();
    void setData(const QVariantMap &iDataMap);
    QVariantMap getData() const;
    void saveData();

    void setSendMode(const QString &iModeStr);

    void showAddContactMail();
    QVariantList getAddContactMailList();

    void showAddContactWeixin();
    QVariantList getAddContactWeixinList();

    void showManuallyAddMail();
    void showManuallyAddWeixin();

    void fillTableData(const QVariantList &iDataLst);
    TTableView *getTableView();

    QVariantList plantList();
    QVariantList departmentList();
    QVariantMap departmentMap();
    void setWorkcenterId(const QString &iId);
    QString workcenterId();

protected:
    void uidChangeEvent(const QString &iUidStr) override;
    void resizeEvent(QResizeEvent *iEvent) override;

private:
    void initSearchEntry();
    QVariantMap tableHeaderItem(const QString &iKeyStr, const QString &iDispStr,  int iSizeInt = 100, const QString &iTypeStr = QString());
    void initPlantList();

private slots:
    void onDoSearch(const QString &iSearchStr, const QVariant &iOptions);

private:
    TUiLoader *mUiLoader = nullptr;
    TTableView *mTableView = nullptr;
    QHBoxLayout *mBodyLayout = nullptr;
    QStringList mSearchKey;
    QVariantList mPlantList;
    QVariantList mDepartmentList;
    QVariantMap mDepartmentMap;
    QString mWorkcenterId;
};
#endif // SYSCOMMUGROUP_H