Add scroll pos to history
[semperweb:semperweb.git] / src / BrowserView.h
1 #ifndef BROWSERVIEW_H
2 #define BROWSERVIEW_H
3
4 #include <QWidget>
5 #include <QVector>
6 #include <QSslError>
7 #include <QWebPage>
8 #include <QList>
9 #include <QGraphicsScene>
10 #include <QGraphicsView>
11
12 class MainWindow;
13 class QUrl;
14 class MWebPage;
15 class MWebView;
16 class QWebView;
17 class QNetworkReply;
18 class QTimeLine;
19 class TitleBar;
20 class ControlStrip;
21 class ZoomStrip;
22 class PersistentCookieJar;
23 class Downloader;
24 class BrowserCache;
25 class MediaPlayer;
26
27 struct BrowserHistory
28 {
29     BrowserHistory(QUrl u, QPoint p, qreal z)
30         : url(u), pos(p), zoom(z) {}
31     QUrl url;
32     QPoint pos;
33     qreal zoom;
34 };
35
36 class BrowserView : public QGraphicsView
37 {
38     Q_OBJECT
39
40     friend class MWebView;
41     friend class MWebPage;
42
43 public:
44     BrowserView(MainWindow *parent = 0);
45     ~BrowserView();
46
47     static BrowserView* instance() {
48         return m_browserInstance;
49     }
50     static BrowserView* m_browserInstance;
51
52     QString getCurrentName();
53     QString getCurrentAdress();
54     QGraphicsScene* getScene() { return &m_scene; }
55
56     void updateButtons();
57 public slots:
58     void showMedia(const QUrl &url);
59     void navigate(const QUrl &url);
60     QUrl currentUrl();
61
62 private slots:
63     void start();
64     void setProgress(int percent);
65     void finish(bool);
66     void updateTitleBar();
67     void updateHistory(const QUrl& url);
68 #ifndef QT_NO_OPENSSL
69     void slotSslErrors(QNetworkReply* rep,QList<QSslError>);
70 #endif
71     void slotFrameCreated(QWebFrame * frame);
72 //    void slotFrameInitialLayoutCompleted();
73     void backView();
74     void fwdView();
75     void stop();
76     void closeMedia();
77     void zoomBest();
78     void reload();
79
80     void slideFwd(int pos);
81     void slideFwdDone();
82     void slideBack(int pos);
83     void slideBackDone();
84
85     void onDownloadRequested (const QNetworkRequest & request);
86     void onUnsupportedContent (QNetworkReply * reply);
87     void unsupportedReplyFinished();
88
89     void updateFrameLayout();
90 signals:
91     void menuButtonClicked();
92     void preferencesClicked();
93
94 protected:
95     void cleanupMemory();
96     void addWebview(bool appendToQ = true);
97
98     void resizeEvent(QResizeEvent *event);
99     void gotoHomePage();
100
101 protected:
102     QGraphicsScene m_scene;
103
104     TitleBar *m_titleBar;
105     QList<MWebView *> m_webQ;
106     MWebView *oldWebView;
107     MWebView *curWebView;
108     MWebView *expiredWebView;
109     BrowserCache* m_cache;
110     PersistentCookieJar* m_cookiejar;
111 //    ZoomStrip *m_zoomStrip;
112     ControlStrip *m_controlStrip;
113     int m_progress;
114     QTimeLine *m_timeLineFwd;
115     QTimeLine *m_timeLineBack;
116
117     QList<BrowserHistory> m_history;
118     int m_curHistIdx;
119
120     Downloader* m_downloader;
121     QNetworkReply* m_unsupReply;
122     bool m_unsupHandled;
123     MediaPlayer* m_player;
124 };
125
126 #endif // BROWSERVIEW_H