]> git.sur5r.net Git - minitube/blob - src/MediaView.h
26775b624ac73e241196636a81bed50e12225666
[minitube] / src / MediaView.h
1 #ifndef __MEDIAVIEW_H__
2 #define __MEDIAVIEW_H__
3
4 #include <QtGui>
5 #include <QtNetwork>
6 #include <phonon/mediaobject.h>
7 #include <phonon/videowidget.h>
8 #include "View.h"
9 #include "ListModel.h"
10 #include "thblackbar.h"
11 #include "searchparams.h"
12 #include "playlistwidget.h"
13 #include "loadingwidget.h"
14 #include "videoareawidget.h"
15
16 class MediaView : public QWidget, public View {
17     Q_OBJECT
18
19 public:
20     MediaView(QWidget *parent);
21     ~MediaView();
22     void initialize();
23
24     // View
25     void appear() {}
26     void disappear();
27     QMap<QString, QVariant> metadata() {
28         QMap<QString, QVariant> metadata;
29         if (searchParams) {
30             metadata.insert("title", searchParams->keywords());
31             metadata.insert("description", tr("You're watching \"%1\"").arg(searchParams->keywords()));
32         }
33         return metadata;
34     }
35
36     void setMediaObject(Phonon::MediaObject *mediaObject);
37
38 public slots:
39     void search(SearchParams *searchParams);
40     void pause();
41     void stop();
42     void skip();
43     void skipVideo();
44     void openWebPage();
45     void copyWebPage();
46     void copyVideoLink();
47     void removeSelected();
48     void moveUpSelected();
49     void moveDownSelected();
50     void setPlaylistVisible(bool visible=true);
51     void saveSplitterState();
52
53 private slots:
54     // list/model
55     void itemActivated(const QModelIndex &index);
56     void selectionChanged (const QItemSelection & selected, const QItemSelection & deselected);
57     void activeRowChanged(int);
58     void selectVideos(QList<Video*> videos);
59     void gotStreamUrl(QUrl streamUrl);
60     void handleError(QString message);
61     // phonon
62     void stateChanged(Phonon::State newState, Phonon::State oldState);
63     void currentSourceChanged(const Phonon::MediaSource source);
64     void showVideoContextMenu(QPoint point);
65     // bar
66     void searchMostRelevant();
67     void searchMostRecent();
68     void searchMostViewed();
69     // timer
70     void timerPlay();
71
72 private:
73
74     SearchParams *searchParams;
75
76     QSplitter *splitter;
77
78     PlaylistWidget *playlistWidget;
79     QListView *listView;
80     ListModel *listModel;
81
82     // sortBar
83     THBlackBar *sortBar;
84     QAction *mostRelevantAction;
85     QAction *mostRecentAction;
86     QAction *mostViewedAction;
87
88     // phonon
89     Phonon::MediaObject *mediaObject;
90     Phonon::VideoWidget *videoWidget;
91
92     // loadingWidget
93     VideoAreaWidget *videoAreaWidget;
94     LoadingWidget *loadingWidget;
95
96     bool timerPlayFlag;
97     bool reallyStopped;
98
99     QTimer *errorTimer;
100     QTimer *workaroundTimer;
101     Video *skippedVideo;
102
103 };
104
105 #endif // __MEDIAVIEW_H__