]> git.sur5r.net Git - minitube/blob - src/MainWindow.h
cc6a7b27331e04a41fee37ec31fbe041bd9bec38
[minitube] / src / MainWindow.h
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3
4 #include <QtGui>
5 #include <phonon/audiooutput.h>
6 #include <phonon/volumeslider.h>
7 #include <phonon/mediaobject.h>
8 #include <phonon/seekslider.h>
9 #include "View.h"
10 #include "SearchView.h"
11 #include "MediaView.h"
12 #include "AboutView.h"
13 #include "downloadview.h"
14
15 class SearchLineEdit;
16 class UpdateChecker;
17
18 class MainWindow : public QMainWindow {
19
20     Q_OBJECT
21
22 public:
23     static MainWindow* instance();
24     MainWindow();
25     ~MainWindow();
26     Phonon::SeekSlider* getSeekSlider() { return seekSlider; }
27     void readSettings();
28     void writeSettings();
29
30 public slots:
31     void showMedia(SearchParams *params);
32     void messageReceived(const QString &message);
33
34 protected:
35     void changeEvent(QEvent *);
36     void closeEvent(QCloseEvent *);
37     bool eventFilter(QObject *obj, QEvent *event);
38     void dragEnterEvent(QDragEnterEvent *event);
39     void dropEvent(QDropEvent *event);
40     void resizeEvent(QResizeEvent *);
41
42 private slots:
43     void checkForUpdate();
44     void gotNewVersion(QString version);
45     void goBack();
46     void showSearch();
47     void visitSite();
48     void donate();
49     void about();
50     void quit();
51     void fullscreen();
52     void updateUIForFullscreen();
53     void compactView(bool enable);
54     void stop();
55     void stateChanged(Phonon::State newState, Phonon::State oldState);
56     void searchFocus();
57     void tick(qint64 time);
58     void totalTimeChanged(qint64 time);
59     void setDefinitionMode(QString definitionName);
60     void toggleDefinitionMode();
61     void clearRecentKeywords();
62
63     // volume shortcuts
64     void volumeUp();
65     void volumeDown();
66     void volumeMute();
67     void volumeChanged(qreal newVolume);
68     void volumeMutedChanged(bool muted);
69
70     // fullscreen toolbar
71     void showFullscreenToolbar(bool show);
72     void showFullscreenPlaylist(bool show);
73
74     void setManualPlay(bool enabled);
75     void updateDownloadMessage(QString);
76     void downloadsFinished();
77     void toggleDownloads(bool show);
78
79     void startToolbarSearch(QString query);
80     void floatOnTop(bool);
81     void showActionInStatusBar(QAction*, bool show);
82     void showStopAfterThisInStatusBar(bool show);
83
84 private:
85     void initPhonon();
86     void createActions();
87     void createMenus();
88     void createToolBars();
89     void createStatusBar();
90     void showWidget(QWidget*);
91     static QString formatTime(qint64 time);
92     bool confirmQuit();
93
94     UpdateChecker *updateChecker;
95
96     // view mechanism
97     QStackedWidget *views;
98     QStack<QWidget*> *history;
99
100     // view widgets
101     SearchView *searchView;
102     MediaView *mediaView;
103     QWidget *aboutView;
104     QWidget *downloadView;
105
106     // actions
107     QAction *addGadgetAct;
108     QAction *backAct;
109     QAction *quitAct;
110     QAction *siteAct;
111     QAction *donateAct;
112     QAction *aboutAct;
113     QAction *searchFocusAct;
114
115     // media actions
116     QAction *skipBackwardAct;
117     QAction *skipAct;
118     QAction *pauseAct;
119     QAction *stopAct;
120     QAction *fullscreenAct;
121     QAction *compactViewAct;
122     QAction *webPageAct;
123     QAction *copyPageAct;
124     QAction *copyLinkAct;
125     QAction *volumeUpAct;
126     QAction *volumeDownAct;
127     QAction *volumeMuteAct;
128     QAction *findVideoPartsAct;
129
130     // playlist actions
131     QAction *removeAct;
132     QAction *moveDownAct;
133     QAction *moveUpAct;
134     QAction *fetchMoreAct;
135     QAction *clearAct;
136
137     // menus
138     QMenu *fileMenu;
139     QMenu *viewMenu;
140     QMenu *playlistMenu;
141     QMenu *helpMenu;
142
143     // toolbar
144     QToolBar *mainToolBar;
145     SearchLineEdit *toolbarSearch;
146     QToolBar *statusToolBar;
147
148     // phonon
149     Phonon::SeekSlider *seekSlider;
150     Phonon::VolumeSlider *volumeSlider;
151     Phonon::MediaObject *mediaObject;
152     Phonon::AudioOutput *audioOutput;
153     QLabel *currentTime;
154     QLabel *totalTime;
155
156     bool m_fullscreen;
157     bool m_maximized;
158
159 };
160
161 #endif