]> git.sur5r.net Git - minitube/blob - src/MainWindow.h
Sidebar and mouse autohide in fullscreen mode for Mac
[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 restore();
33     void messageReceived(const QString &message);
34     void quit();
35     void startToolbarSearch(QString query);
36
37 protected:
38     void changeEvent(QEvent *);
39     void closeEvent(QCloseEvent *);
40     bool eventFilter(QObject *obj, QEvent *event);
41     void dragEnterEvent(QDragEnterEvent *event);
42     void dropEvent(QDropEvent *event);
43     void resizeEvent(QResizeEvent *);
44
45 private slots:
46     void checkForUpdate();
47     void gotNewVersion(QString version);
48     void goBack();
49     void showSearch();
50     void visitSite();
51     void donate();
52     void reportIssue();
53     void about();
54     void fullscreen();
55     void updateUIForFullscreen();
56     void compactView(bool enable);
57     void stop();
58     void stateChanged(Phonon::State newState, Phonon::State oldState);
59     void searchFocus();
60     void tick(qint64 time);
61     void totalTimeChanged(qint64 time);
62     void setDefinitionMode(QString definitionName);
63     void toggleDefinitionMode();
64     void clearRecentKeywords();
65
66     // volume shortcuts
67     void volumeUp();
68     void volumeDown();
69     void volumeMute();
70     void volumeChanged(qreal newVolume);
71     void volumeMutedChanged(bool muted);
72
73     // fullscreen toolbar
74     void showFullscreenToolbar(bool show);
75     void showFullscreenPlaylist(bool show);
76
77     void setManualPlay(bool enabled);
78     void updateDownloadMessage(QString);
79     void downloadsFinished();
80     void toggleDownloads(bool show);
81
82     void floatOnTop(bool);
83     void showActionInStatusBar(QAction*, bool show);
84     void showStopAfterThisInStatusBar(bool show);
85
86     void hideMouse();
87
88 private:
89     void initPhonon();
90     void createActions();
91     void createMenus();
92     void createToolBars();
93     void createStatusBar();
94     void showWidget(QWidget*);
95     static QString formatTime(qint64 time);
96     bool confirmQuit();
97
98     UpdateChecker *updateChecker;
99
100     // view mechanism
101     QStackedWidget *views;
102     QStack<QWidget*> *history;
103
104     // view widgets
105     SearchView *searchView;
106     MediaView *mediaView;
107     QWidget *aboutView;
108     QWidget *downloadView;
109
110     // actions
111     QAction *addGadgetAct;
112     QAction *backAct;
113     QAction *quitAct;
114     QAction *siteAct;
115     QAction *donateAct;
116     QAction *aboutAct;
117     QAction *searchFocusAct;
118
119     // media actions
120     QAction *skipBackwardAct;
121     QAction *skipAct;
122     QAction *pauseAct;
123     QAction *stopAct;
124     QAction *fullscreenAct;
125     QAction *compactViewAct;
126     QAction *webPageAct;
127     QAction *copyPageAct;
128     QAction *copyLinkAct;
129     QAction *volumeUpAct;
130     QAction *volumeDownAct;
131     QAction *volumeMuteAct;
132     QAction *findVideoPartsAct;
133
134     // playlist actions
135     QAction *removeAct;
136     QAction *moveDownAct;
137     QAction *moveUpAct;
138     QAction *fetchMoreAct;
139     QAction *clearAct;
140
141     // menus
142     QMenu *fileMenu;
143     QMenu *viewMenu;
144     QMenu *playlistMenu;
145     QMenu *helpMenu;
146
147     // toolbar
148     QToolBar *mainToolBar;
149     SearchLineEdit *toolbarSearch;
150     QToolBar *statusToolBar;
151
152     // phonon
153     Phonon::SeekSlider *seekSlider;
154     Phonon::VolumeSlider *volumeSlider;
155     Phonon::MediaObject *mediaObject;
156     Phonon::AudioOutput *audioOutput;
157     QLabel *currentTime;
158     QLabel *totalTime;
159
160     bool m_fullscreen;
161     bool m_maximized;
162
163     QTimer *mouseTimer;
164
165 };
166
167 #endif