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