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