Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GNASH_KDE4GUI_H
00020 #define GNASH_KDE4GUI_H
00021
00022 #ifdef HAVE_CONFIG_H
00023 #include "gnashconfig.h"
00024 #endif
00025
00026 #include "gui.h"
00027 #include "rc.h"
00028
00029 #include <vector>
00030 #include <QX11EmbedWidget>
00031 #include <QDialog>
00032
00033 #ifdef RENDERER_AGG
00034 #include "Qt4GlueAgg.h"
00035 #endif
00036
00037 #ifdef RENDERER_CAIRO
00038 #include "Qt4GlueCairo.h"
00039 #endif
00040
00041 #ifdef RENDERER_OPENGL
00042 #include "Qt4GlueOgl.h"
00043 class QGLWidget;
00044 #endif
00045
00046
00047 class QMainWindow;
00048 class QMenuBar;
00049 class QMenu;
00050 class QRect;
00051 class QCheckBox;
00052 class QSlider;
00053 class QLineEdit;
00054 class QSpinBox;
00055 class QStackedWidget;
00056
00057 namespace gnash {
00058 class Qt4Gui;
00059 class DrawingWidget;
00060 }
00061
00062 namespace gnash
00063 {
00064
00065 class EmbedWidget : public QX11EmbedWidget
00066 {
00067 Q_OBJECT
00068
00069 public:
00070 EmbedWidget(Qt4Gui& gui);
00071 ~EmbedWidget() {};
00072
00073 DrawingWidget* drawingWidget() { return _drawingWidget; }
00074
00075 public slots:
00076 void hidePlayButton();
00077 void showPlayButton();
00078
00079 private:
00080 QPushButton* _playButton;
00081 DrawingWidget* _drawingWidget;
00082 };
00083
00084
00085 class DSOEXPORT Qt4Gui : public Gui
00086 {
00087 public:
00088 Qt4Gui(unsigned long xid, float scale, bool loop, RunResources& r);
00089 virtual ~Qt4Gui();
00090 virtual bool init(int argc, char **argv[]);
00091 virtual bool createWindow(const char* windowtitle, int width, int height,
00092 int xPosition = 0, int yPosition = 0);
00093 virtual void resizeWindow(int width, int height);
00094 virtual bool run();
00095 virtual void renderBuffer();
00096 virtual void setInterval(unsigned int interval);
00097 virtual void setTimeout(unsigned int timeout);
00098 virtual void handleKeyEvent(QKeyEvent *event, bool down);
00099 virtual void setCursor(gnash_cursor_type newcursor);
00100 virtual void setFullscreen();
00101 virtual bool showMouse(bool show);
00102 virtual void unsetFullscreen();
00103 virtual void setClipboard(const std::string& copy);
00104 virtual std::pair<int, int> screenResolution() const;
00105 virtual double getScreenDPI() const;
00106 virtual bool yesno(const std::string& question);
00107
00108 void setInvalidatedRegions(const InvalidatedRanges& ranges);
00109 void resize(int width, int height);
00110 void showProperties();
00111 void showPreferences();
00112 void quitUI();
00113
00114 bool want_multiple_regions() { return true; }
00115
00116 void renderWidget(const QRect& updateRect);
00117
00118 void popupMenu(const QPoint& point);
00119
00120 private:
00121 typedef std::vector<geometry::Range2d<int> > DrawBounds;
00122 typedef std::map<int, gnash::key::code> KeyMap;
00123
00124 void setupActions();
00125 void setupMenus();
00126 void createMainMenu();
00127
00129 void setupKeyMap();
00130
00133 void stopHook();
00134
00136 void playHook();
00137
00138 DrawBounds _drawbounds;
00139
00142 std::auto_ptr<QApplication> _application;
00143
00145 EmbedWidget* _embedWidget;
00146
00148
00151 DrawingWidget* _drawingWidget;
00152
00154 std::auto_ptr<Qt4Glue> _glue;
00155
00157 std::auto_ptr<QMainWindow> _window;
00158
00161 KeyMap _keyMap;
00162
00164 gnash::key::code qtToGnashKey(QKeyEvent *event);
00165 int qtToGnashModifier(const Qt::KeyboardModifiers modifiers);
00166
00167 int _interval;
00168
00169 int _advanceTimer;
00170
00175
00176
00177 QMenu* fileMenu;
00178 QAction* propertiesAction;
00179 QAction* quitAction;
00180
00181
00182 QMenu* editMenu;
00183 QAction* preferencesAction;
00184
00185
00186 QMenu* movieControlMenu;
00187 QAction* playAction;
00188 QAction* pauseAction;
00189 QAction* stopAction;
00190 QAction* restartAction;
00191
00192
00193 QMenu* viewMenu;
00194 QAction* refreshAction;
00195 QAction* fullscreenAction;
00196 };
00197
00198 namespace Qt4GuiPrefs
00199 {
00200
00201 class PreferencesDialog : public QDialog
00202 {
00203 Q_OBJECT
00204
00205 public:
00206 PreferencesDialog(QWidget* parent);
00207
00208 private slots:
00209 void savePreferences();
00210
00211 private:
00212 PreferencesDialog(const PreferencesDialog&);
00213
00214
00215 QSlider* _verbositySlider;
00216 QCheckBox* _logToFileToggle;
00217 QLineEdit* _logFileName;
00218 QCheckBox* _parserDumpToggle;
00219 QCheckBox* _actionDumpToggle;
00220 QCheckBox* _malformedSWFToggle;
00221 QCheckBox* _ASCodingErrorToggle;
00222 QCheckBox* _lcTraceToggle;
00223
00224
00225 QCheckBox* _localHostToggle;
00226 QCheckBox* _localDomainToggle;
00227 QCheckBox* _insecureSSLToggle;
00228 QLineEdit* _solSandboxDir;
00229 QCheckBox* _solReadOnlyToggle;
00230 QCheckBox* _solLocalDomainToggle;
00231 QCheckBox* _localConnectionToggle;
00232
00233
00234 QSpinBox* _streamsTimeoutScale;
00235
00236
00237 QCheckBox* _soundToggle;
00238 QCheckBox* _saveStreamingMediaToggle;
00239 QCheckBox* _saveLoadedMediaToggle;
00240 QLineEdit* _mediaDir;
00241
00242
00243 QLineEdit* _versionText;
00244 QLineEdit* _osText;
00245 QLineEdit* _urlOpenerText;
00246 QSpinBox* _librarySize;
00247 QCheckBox* _startStoppedToggle;
00248
00249
00250 RcInitFile& _rcfile;
00251 };
00252
00253 }
00254
00255 }
00256
00257 #endif