]> git.sur5r.net Git - minitube/blob - src/mediaview.h
Imported Upstream version 2.1.3
[minitube] / src / mediaview.h
1 /* $BEGIN_LICENSE
2
3 This file is part of Minitube.
4 Copyright 2009, Flavio Tordini <flavio.tordini@gmail.com>
5
6 Minitube is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 Minitube is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with Minitube.  If not, see <http://www.gnu.org/licenses/>.
18
19 $END_LICENSE */
20
21 #ifndef __MEDIAVIEW_H__
22 #define __MEDIAVIEW_H__
23
24 #include <QtGui>
25 #include <QtNetwork>
26 #include <phonon/mediaobject.h>
27 #include <phonon/videowidget.h>
28 #include <phonon/seekslider.h>
29 #include "view.h"
30
31 class Video;
32 class PlaylistModel;
33 class SearchParams;
34 class LoadingWidget;
35 class VideoAreaWidget;
36 class DownloadItem;
37 class PlaylistView;
38 class SidebarWidget;
39 class VideoSource;
40
41 namespace The {
42     QHash<QString, QAction*>* globalActions();
43 }
44
45 class MediaView : public QWidget, public View {
46
47     Q_OBJECT
48
49 public:
50     static MediaView* instance();
51     void initialize();
52
53     void appear();
54     void disappear();
55
56     void setMediaObject(Phonon::MediaObject *mediaObject);
57     const QList<VideoSource*> & getHistory() { return history; }
58     int getHistoryIndex();
59     PlaylistModel* getPlaylistModel() { return playlistModel; }
60     const QString &getCurrentVideoId();
61     void updateSubscriptionAction(Video *video, bool subscribed);
62     VideoAreaWidget* getVideoArea() { return videoAreaWidget; }
63
64 public slots:
65     void search(SearchParams *searchParams);
66     void setVideoSource(VideoSource *videoSource, bool addToHistory = true);
67     void pause();
68     void stop();
69     void skip();
70     void skipBackward();
71     void skipVideo();
72     void openWebPage();
73     void copyWebPage();
74     void copyVideoLink();
75     void openInBrowser();
76     void shareViaTwitter();
77     void shareViaFacebook();
78     void shareViaBuffer();
79     void shareViaEmail();
80     void removeSelected();
81     void moveUpSelected();
82     void moveDownSelected();
83     bool isPlaylistVisible();
84     void setPlaylistVisible(bool visible=true);
85     void saveSplitterState();
86     void downloadVideo();
87     // void snapshot();
88     void fullscreen();
89     void findVideoParts();
90     void relatedVideos();
91     bool canGoBack();
92     void goBack();
93     bool canGoForward();
94     void goForward();
95     void toggleSubscription();
96
97 private slots:
98     // list/model
99     void itemActivated(const QModelIndex &index);
100     void selectionChanged (const QItemSelection & selected, const QItemSelection & deselected);
101     void activeRowChanged(int);
102     void selectVideos(QList<Video*> videos);
103     void gotStreamUrl(QUrl streamUrl);
104     void handleError(QString message);
105     // phonon
106     void stateChanged(Phonon::State newState, Phonon::State oldState);
107     void aboutToFinish();
108 #ifdef APP_ACTIVATION
109     void demoMessage();
110     void updateContinueButton(int);
111 #endif
112     void startPlaying();
113     void downloadStatusChanged();
114     void playbackFinished();
115     void playbackResume();
116     void authorPushed(QModelIndex);
117     void searchAgain();
118     void sliderMoved(int value);
119     qint64 offsetToTime(qint64 offset);
120     void startDownloading();
121
122 private:
123     MediaView(QWidget *parent = 0);
124     SearchParams* getSearchParams();
125
126     static QRegExp wordRE(QString s);
127
128     QSplitter *splitter;
129     SidebarWidget *sidebar;
130     PlaylistView *playlistView;
131     PlaylistModel *playlistModel;
132     VideoAreaWidget *videoAreaWidget;
133     LoadingWidget *loadingWidget;
134
135     // phonon
136     Phonon::MediaObject *mediaObject;
137     Phonon::VideoWidget *videoWidget;
138
139     bool stopped;
140     QTimer *errorTimer;
141     Video *skippedVideo;
142     QString currentVideoId;
143
144 #ifdef APP_ACTIVATION
145     QTimer *demoTimer;
146 #endif
147
148     DownloadItem *downloadItem;
149     QList<VideoSource*> history;
150     QList<QAction*> currentVideoActions;
151
152     qint64 currentVideoSize;
153 };
154
155 #endif // __MEDIAVIEW_H__