#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include #include #include #include "webview.h" #include "graphicsview.h" #include "graphicstoolbar.h" #include "webscrap.h" namespace Ui { class MainWindow; } class MainWindow : public GraphicsView { Q_OBJECT Q_PROPERTY(bool webTitleShown READ webTitleShown WRITE setWebTitleShown) public: enum Movement { Enter, Leave }; enum RotateDirection { Clockwise, AntiClockwise }; MainWindow(QWidget *parent = 0); ~MainWindow(); void initGraphicsView(); void initBrowser(); void initScrapBoard(); void createScrapsToolbar(QGraphicsScene *scene); void createBrowserToolbar(QGraphicsScene *scene); QAbstractAnimation* createToolbarAnim(GraphicsToolBar *fromToolbar, GraphicsToolBar *toToolbar, RotateDirection direction, QObject *parent); QAbstractAnimation* createScrapsAnim(const Movement move, QObject *parent); QAbstractAnimation* createBrowserAnim(const Movement move, QObject *parent); void bubbleUpScraps(QList scraps); void saveSettings(); void loadSettings(); void setWebTitleShown(bool shown); bool webTitleShown() const; void createAnimations(); void addScrapToAnimations(WebScrapContainer *scrapContainer); void removeScrapFromAnimations(WebScrapContainer *scrapContainer); public slots: void adjustLocation(); void changeLocation(); void adjustTitle(); void addScrap(QUrl url, QSize pageSize, QRect scrapRect, QPoint position, qreal xScale = 1.0, qreal yScale = 1.0, int refreshMins = 60); void bubbleUpScrap(QGraphicsWidget *scrap = 0); void removeSenderScrap(); void updateDropDownList(); void scrapDropDownListActivated(int index); void searchTextChanged(const QString& text); void showBrowserToolbar(); void showScrapsToolbar(); void disableScrapSelection(); private: Ui::MainWindow *ui; QSettings *m_settings; QStateMachine m_stateMachine; bool m_isWebTitleShown; // scraps view QComboBox *m_dropDownList; QLineEdit *m_searchBar; QToolButton *m_searchScrapsButton, *m_gotoBrowserButton; GraphicsToolBar *m_scrapsToolbar; QList m_scraps; // browser view WebView *m_webView; QLineEdit *m_addressBar; QToolButton *m_selectScrapsButton, *m_addScrapButton, *m_gotoScrapsButton; GraphicsToolBar *m_browserToolbar; // animations QParallelAnimationGroup *m_browserToScrapsAnimation, *m_scrapsToBrowserAnimation; QParallelAnimationGroup *m_scrapsEnter, *m_scrapsLeave; QAbstractAnimation *m_toBrowserToolbarAnimation, *m_toScrapsToolbarAnimation; }; #endif // MAINWINDOW_H