#ifndef WEBSCRAP_H #define WEBSCRAP_H #include #include #include #include #include #include #include #include #include #include #include "graphicstoolbar.h" #include "resizeuihelper.h" class WebScrap : public QGraphicsWebView { Q_OBJECT public: WebScrap(QUrl url, QSize pageSize, QRect scrapRect, QGraphicsItem * parent = 0); virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* options, QWidget* widget = 0); const QTimer *refreshTimer() const; void setRefreshInterval(int msecs); int refreshInterval() const; // msecs QRect scrapRect() const; void updateGradient(QRect rect); void savePos(); QPointF savedPos() const; bool dimensionsFixed() const; bool highlightText(const QString& text); void setMouseClicksEnabled(bool enabled); bool mouseClicksEnabled() const; public slots: void onLoadFinished(); void onLoadStarted(); void onRefresh(); void setScrapRect(QRect rect); void openUrlInExternalBrowser(QUrl url); void setDimensionsFixed(bool fixed); protected: void mouseMoveEvent(QGraphicsSceneMouseEvent *event); bool event(QEvent *e); private: QRect m_scrapRect; int m_refreshInterval; QTimer *m_refreshTimer; QLinearGradient m_loadingGradient, m_overlayGradient; QPointF m_savedPos; QPixmap m_webshot; bool m_isDimensionsFixed; QPixmap m_loadingPix, m_adjustablePix, m_arrowPix, m_scalePix; QSize m_pageSize; bool m_isLoading, m_isMouseClicksEnabled; }; class WebScrapContainer : public QGraphicsWidget { Q_OBJECT public: const static int s_padding, s_titlePadding; WebScrapContainer(WebScrap *scrap, QGraphicsScene *scene, qreal xScale = 1.0, qreal yScale = 1.0); void createToolbar(); void createEditToolbar(); void setBoundingRect(QRectF rect); QRectF boundingRect() const; WebScrap* webScrap() const; QGraphicsDropShadowEffect *glow() const; void updateGlow(); const QGraphicsScale *scrapScale() const; void setEnterAnimation(QPropertyAnimation *animation); QPropertyAnimation* enterAnimation() const; void setLeaveAnimation(QPropertyAnimation *animation); QPropertyAnimation *leaveAnimation() const; void paint(QPainter* painter, const QStyleOptionGraphicsItem* options, QWidget* widget = 0); public slots: void setTitle(const QString& title); void handleCloseButtonClicked(); void handleRectResized(QRectF rect); void setLocated(bool located); void setSearchMatched(bool matched); void handleEditButtonClicked(bool checked); void handleResetZoomClicked(); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); signals: void frameClicked(); void removeSelf(); private: QGraphicsScene *m_scene; WebScrap *m_scrap; GraphicsToolBar *m_toolbar; QToolButton *m_closeButton, *m_adjustButton, *m_reloadButton; GraphicsToolBar *m_editToolbar; QLineEdit *m_refreshIntervalLineEdit; QComboBox *m_refreshUnitComboBox; QPushButton *m_resetZoomPushButton; ResizeUiHelper *m_resizer; QGraphicsScale *m_scrapScale; QGraphicsDropShadowEffect *m_glow; bool m_located, m_searchMatched; QPropertyAnimation *m_enterAnimation, *m_leaveAnimation; QString m_title; QBrush m_titleBrush, m_backgroundBrush; QRectF m_boundingRect; }; Q_DECLARE_METATYPE(WebScrapContainer*) #endif // WEBSCRAP_H