1 /* 2 Copyright (C) 2014 Aseman 3 http://aseman.co 4 5 This project is free software: you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation, either version 3 of the License, or 8 (at your option) any later version. 9 10 This project is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 #ifndef ASEMANQUICKVIEW_H 20 #define ASEMANQUICKVIEW_H 21 22 #include <QQuickView> 23 #include <QQmlEngine> 24 25 #ifdef ASEMAN_QML_PLUGIN 26 #define INHERIT_VIEW QObject 27 #else 28 #define INHERIT_VIEW QQuickView 29 #endif 30 31 class AsemanBackHandler; 32 class AsemanDesktopTools; 33 class AsemanDevices; 34 class AsemanJavaLayer; 35 class AsemanQtLogger; 36 class AsemanTools; 37 class AsemanCalendarConverter; 38 class AsemanQuickViewPrivate; 39 class AsemanQuickView : public INHERIT_VIEW 40 { 41 Q_OBJECT 42 43 Q_PROPERTY(bool fullscreen READ fullscreen WRITE setFullscreen NOTIFY fullscreenChanged) 44 Q_PROPERTY(bool backController READ backController WRITE setBackController NOTIFY backControllerChanged) 45 Q_PROPERTY(bool reverseScroll READ reverseScroll WRITE setReverseScroll NOTIFY reverseScrollChanged) 46 47 Q_PROPERTY(qreal statusBarHeight READ statusBarHeight NOTIFY statusBarHeightChanged) 48 Q_PROPERTY(qreal navigationBarHeight READ navigationBarHeight NOTIFY navigationBarHeightChanged) 49 50 Q_PROPERTY(QObject* root READ root WRITE setRoot NOTIFY rootChanged) 51 Q_PROPERTY(QQuickItem* focusedText READ focusedText WRITE setFocusedText NOTIFY focusedTextChanged) 52 53 Q_PROPERTY(int layoutDirection READ layoutDirection WRITE setLayoutDirection NOTIFY layoutDirectionChanged) 54 55 Q_PROPERTY(qreal flickVelocity READ flickVelocity NOTIFY fakeSignal) 56 57 public: 58 59 #ifdef ASEMAN_QML_PLUGIN 60 AsemanQuickView(QQmlEngine *engine, QObject *parent = 0); 61 #else 62 AsemanQuickView(QWindow *parent = 0); 63 #endif 64 ~AsemanQuickView(); 65 66 AsemanDesktopTools *desktopTools() const; 67 AsemanDevices *devices() const; 68 AsemanQtLogger *qtLogger() const; 69 AsemanTools *tools() const; 70 #ifdef Q_OS_ANDROID 71 AsemanJavaLayer *javaLayer() const; 72 #endif 73 AsemanCalendarConverter *calendar() const; 74 AsemanBackHandler *backHandler() const; 75 76 void setFullscreen( bool stt ); 77 bool fullscreen() const; 78 79 void setBackController(bool stt); 80 bool backController() const; 81 82 void setReverseScroll(bool stt); 83 bool reverseScroll() const; 84 85 qreal statusBarHeight() const; 86 qreal navigationBarHeight() const; 87 88 void setRoot( QObject *root ); 89 QObject *root() const; 90 91 void setFocusedText( QQuickItem *item ); 92 QQuickItem *focusedText() const; 93 94 int layoutDirection() const; 95 void setLayoutDirection( int l ); 96 97 qreal flickVelocity() const; 98 Q_INVOKABLE QSize screenSize() const; 99 100 public slots: 101 void discardFocusedText(); 102 void tryClose(); 103 void setMask(qreal x, qreal y, qreal width, qreal height); 104 void move(qreal x, qreal y); 105 void resize(qreal w, qreal h); 106 107 signals: 108 void fullscreenChanged(); 109 void statusBarHeightChanged(); 110 void navigationBarHeightChanged(); 111 void rootChanged(); 112 void focusedTextChanged(); 113 void layoutDirectionChanged(); 114 void backControllerChanged(); 115 void reverseScrollChanged(); 116 void fakeSignal(); 117 void closeRequest(); 118 119 protected: 120 bool event(QEvent *e); 121 122 private: 123 AsemanQuickViewPrivate *p; 124 }; 125 126 #endif // ASEMANQUICKVIEW_H 127