topdesktopitemabs.h 2.83 KB
Newer Older
Cindy Ye's avatar
Cindy Ye committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
#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