#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