#ifndef PUBCONTACT_H
#define PUBCONTACT_H

#include <topcore/topclassabs.h>

class QVBoxLayout;
class PubOtherDataLineEditWideget;
class PubOtherDataTextEditWideget;
class TFormLayout;
class TPushButton;
class TTableView;
class TUiLoader;

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


signals:
    void countChanged();

public slots:
    void setObjectState(QStringList iObjNames, QString iStateStr);
    static QObject *newDataItem(QObject *iObj, const QString &iTypeStr, const QVariant &iParamVar);
    void reload();
    void copy();
    void create();

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

    void setDefaultSource(const QString &iSource);

    void addRelevantContacts();
    void setContactRelation();
    void OnHeadPortraitBtnClicked();
    void OnCompanyBtnClicked(QString pSource);

    void moveRowsUpOrDown(bool iIsUp);
    void removeSelectedRows();
    QStringList getEditableComboBoxList(const QString& iEnumName);

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

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

private:
    QVariantList getTransferedTableData(const QVariantList &iDataLst);
    void initSearchEntry();
    void initUiItemMode();
    QVariantList getAllCustomerList();
    QVariantList getAllSupplierList();
    QVariantList getAllContactList(QVariantList iExistIdLst);
    QString getLogRemarkInfo(QVariantMap iOldData, QVariantMap iNewData);

    QVBoxLayout *mBodyLayout = nullptr;
    TUiLoader *mUiLoader = nullptr;
    TTableView *mRelatedTableView = nullptr;
    //TPushButton *mHeadPortraitBtn = nullptr;
    //QByteArray mHeadPortraitInfo;
    QStringList mSearchKey = QStringList();
    QString mDefaultSource = "";
};

#endif // PUBCONTACT_H