topdesktopitemabs.h 2.83 KB
#ifndef TOPDESKTOPITEMABS_H
#define TOPDESKTOPITEMABS_H

#include <QFrame>
#include <QVariantMap>
#include <QMenu>

class TComboBox;
class TopDesktopItemAbsPrivate;
class TopDesktopItemAbs : public QFrame
{
    Q_OBJECT
    Q_PROPERTY(QString urlAddress READ urlAddress WRITE setUrlAddress)
    Q_PROPERTY(bool hasOpenRight READ hasOpenRight WRITE setHasOpenRight)
    Q_PROPERTY(QString layoutStyle READ layoutStyle WRITE setLayoutStyle)

public:
    enum State
    {
        State_None,
        State_Editing,
    };

    enum ClickType
    {
        ClickType_DoubleClick,
        ClickType_Click
    };

    explicit TopDesktopItemAbs(QWidget *parent = 0);
    ~TopDesktopItemAbs();


signals:
    void clicked(const QString &iUrlAddressStr, const QVariant &iConfigMap);
    void doubleClicked(const QString &iUrlAddressStr, const QVariant &iConfigMap);
    void configChanged();
    void itemDeleted(TopDesktopItemAbs *iItem);
    void itemTryDeleted(TopDesktopItemAbs *iItem);
    void layoutDone();

public slots:
    virtual void doLayout();
    virtual void doTimeout();
    QVariantMap configData() const;
    void setConfigData(const QVariantMap &iCfgDataVar);
    QString urlAddress() const;
    void setUrlAddress(const QString &iAdrStr);

    State state() const;
    void setState(State iState);

    ClickType clickType() const;
    void setClickType(ClickType iClickType);


    QVariant config(const QString &iKeyVar) const;
    void setConfig(const QString &iKeyVar, const QVariant &iValueVar);
    int rowSpan() const;
    int colSpan() const;
    bool hasOpenRight() const;
    void setHasOpenRight(bool iHasOpenRightBol);
    QString layoutStyle() const;
    void setLayoutStyle(const QString &iLayoutStyleStr);
    QString fixedStyleSheet() const;
    void setFixedStyleSheet(const QString &iStyleSheetStr);

    void setStartRow(int iStartRowInt);
    int startRow() const;
    void setStartCol(int iStartColInt);
    int startCol() const;

    void setMargin(int iMarginInt);
    int margin() const;

    // 菜单功能
    virtual bool showConfigDialog();
    void deleteItem();
    void setItemLayoutStyle(QAction *iAction = NULL);

    // tui回调
    void setColorList(TComboBox *iBackgroundCombox);

protected:
    void enterEvent(QEvent *iEvent);
    void leaveEvent(QEvent *iEvent);
    void mousePressEvent(QMouseEvent *iEvent);
    void mouseMoveEvent(QMouseEvent *iEvent);
    void mouseReleaseEvent(QMouseEvent *iEvent);
    void dragEnterEvent(QDragEnterEvent *event) Q_DECL_OVERRIDE;
    void dragLeaveEvent(QDragLeaveEvent *event) Q_DECL_OVERRIDE;
    void mouseDoubleClickEvent(QMouseEvent *iEvent);

private slots:
    QMenu *createContextMenu();

protected:
    const QScopedPointer<TopDesktopItemAbsPrivate> d_ptr;

private:
    Q_DISABLE_COPY(TopDesktopItemAbs)
    Q_DECLARE_PRIVATE(TopDesktopItemAbs)
    
};

#endif // TOPDESKTOPITEMABSTRACTCLASS_H