diff --git a/dbusadaptor.cpp b/dbusadaptor.cpp
index d0237f2..a8fd4a7 100644
--- a/dbusadaptor.cpp
+++ b/dbusadaptor.cpp
@@ -17,8 +17,7 @@
along with FingerTerm. If not, see .
*/
-#include
-#include
+#include
#include "dbusadaptor.h"
#include "mainwindow.h"
diff --git a/fingerterm.pro b/fingerterm.pro
index abdbf7c..c43f243 100644
--- a/fingerterm.pro
+++ b/fingerterm.pro
@@ -1,4 +1,4 @@
-QT = core gui declarative opengl dbus
+QT = core gui qml quick dbus
contains(MEEGO_EDITION,harmattan): {
CONFIG += meegotouch
diff --git a/keyloader.h b/keyloader.h
index 0b9202c..10d6d05 100644
--- a/keyloader.h
+++ b/keyloader.h
@@ -21,7 +21,6 @@
#define KEYLOADER_H
#include
-#include
class Util;
diff --git a/main.cpp b/main.cpp
index 612af7e..b122112 100644
--- a/main.cpp
+++ b/main.cpp
@@ -20,8 +20,7 @@
#include "qplatformdefs.h"
#include
-#include
-#include
+#include
extern "C" {
#include
@@ -52,7 +51,7 @@ int main(int argc, char *argv[])
QSettings *settings = new QSettings(QDir::homePath()+"/.config/FingerTerm/settings.ini", QSettings::IniFormat);
defaultSettings(settings);
- // fork the child process before creating QApplication
+ // fork the child process before creating QGuiApplication
int socketM;
int pid = forkpty(&socketM,NULL,NULL,NULL);
if( pid==-1 ) {
@@ -94,7 +93,7 @@ int main(int argc, char *argv[])
exit(0);
}
- QApplication app(argc, argv);
+ QGuiApplication app(argc, argv);
qmlRegisterType("TextRender",1,0,"TextRender");
MainWindow view;
@@ -107,14 +106,6 @@ int main(int argc, char *argv[])
MComponentData::createInstance(argc, argv, "fingerterm", dba);
#endif
-#ifdef MEEGO_EDITION_HARMATTAN
- if(!app.arguments().contains("-nogl")) {
- view.setViewport(new QGLWidget(QGLFormat(QGL::DoubleBuffer)));
- view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
- }
-#endif
- view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
-
Terminal term;
Util util(settings);
term.setUtil(&util);
@@ -137,7 +128,7 @@ int main(int argc, char *argv[])
qFatal("failure loading keyboard layout");
}
- QDeclarativeContext* context = view.rootContext();
+ QQmlContext *context = view.rootContext();
context->setContextProperty( "term", &term );
context->setContextProperty( "util", &util );
context->setContextProperty( "keyLoader", &keyLoader );
@@ -159,7 +150,7 @@ int main(int argc, char *argv[])
util.setWindow(&view);
util.setTerm(&term);
util.setRenderer(tr);
- view.scene()->installEventFilter(&util); //for grabbing mouse drags
+ view.installEventFilter(&util); //for grabbing mouse drags
QObject::connect(&term,SIGNAL(displayBufferChanged()),win,SLOT(displayBufferChanged()));
QObject::connect(view.engine(),SIGNAL(quit()),&app,SLOT(quit()));
@@ -167,10 +158,14 @@ int main(int argc, char *argv[])
#ifdef MEEGO_EDITION_HARMATTAN
view.showFullScreen();
#else
- if ((QApplication::desktop()->width() < 1024 || QApplication::desktop()->height() < 768 || app.arguments().contains("-fs"))
+ QSize screenSize = QGuiApplication::primaryScreen()->size();
+ view.rootObject()->setWidth(screenSize.width());
+ view.rootObject()->setHeight(screenSize.height());
+ if ((screenSize.width() < 1024 || screenSize.height() < 768 || app.arguments().contains("-fs"))
&& !app.arguments().contains("-nofs"))
+ {
view.showFullScreen();
- else
+ } else
view.show();
#endif
diff --git a/mainwindow.cpp b/mainwindow.cpp
index 8b47c67..d4a498f 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -30,8 +30,9 @@
#include
#endif //MEEGO_EDITION_HARMATTAN
-MainWindow::MainWindow(QWidget* parent): QDeclarativeView(parent)
+MainWindow::MainWindow()
{
+// setResizeMode(SizeRootObjectToView);
}
MainWindow::~MainWindow()
@@ -40,19 +41,19 @@ MainWindow::~MainWindow()
void MainWindow::focusInEvent(QFocusEvent *event)
{
- QDeclarativeView::focusInEvent(event);
+ QQuickView::focusInEvent(event);
emit focusChanged(true);
}
void MainWindow::focusOutEvent(QFocusEvent *event)
{
- QDeclarativeView::focusOutEvent(event);
+ QQuickView::focusOutEvent(event);
emit focusChanged(false);
}
void MainWindow::minimize()
{
- setWindowState(windowState() | Qt::WindowMinimized);
+ setWindowState(Qt::WindowMinimized);
}
void MainWindow::disableSwipe()
diff --git a/mainwindow.h b/mainwindow.h
index b572973..71fac55 100644
--- a/mainwindow.h
+++ b/mainwindow.h
@@ -20,13 +20,13 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
-#include
+#include
-class MainWindow : public QDeclarativeView
+class MainWindow : public QQuickView
{
Q_OBJECT
public:
- explicit MainWindow(QWidget* parent=0);
+ explicit MainWindow();
virtual ~MainWindow();
void minimize();
diff --git a/qml/Button.qml b/qml/Button.qml
index 69fa634..519fee4 100644
--- a/qml/Button.qml
+++ b/qml/Button.qml
@@ -17,7 +17,7 @@
along with FingerTerm. If not, see .
*/
-import QtQuick 1.1
+import QtQuick 2.0
Rectangle {
id: button
diff --git a/qml/Key.qml b/qml/Key.qml
index d10cb7a..e9576cb 100644
--- a/qml/Key.qml
+++ b/qml/Key.qml
@@ -17,7 +17,7 @@
along with FingerTerm. If not, see .
*/
-import QtQuick 1.1
+import QtQuick 2.0
Rectangle {
id: key
diff --git a/qml/Keyboard.qml b/qml/Keyboard.qml
index 48c7fba..2a4dbbf 100644
--- a/qml/Keyboard.qml
+++ b/qml/Keyboard.qml
@@ -17,7 +17,7 @@
along with FingerTerm. If not, see .
*/
-import QtQuick 1.1
+import QtQuick 2.0
Rectangle {
id: keyboard
diff --git a/qml/LayoutWindow.qml b/qml/LayoutWindow.qml
index 7e9ac1b..7453ff8 100644
--- a/qml/LayoutWindow.qml
+++ b/qml/LayoutWindow.qml
@@ -17,7 +17,7 @@
along with FingerTerm. If not, see .
*/
-import QtQuick 1.1
+import QtQuick 2.0
Rectangle {
id: layoutWindow
diff --git a/qml/Lineview.qml b/qml/Lineview.qml
index e90385f..e8ff0e6 100644
--- a/qml/Lineview.qml
+++ b/qml/Lineview.qml
@@ -17,7 +17,7 @@
along with FingerTerm. If not, see .
*/
-import QtQuick 1.1
+import QtQuick 2.0
Rectangle {
id: lineView
diff --git a/qml/Main.qml b/qml/Main.qml
index 7037401..0a82138 100644
--- a/qml/Main.qml
+++ b/qml/Main.qml
@@ -17,7 +17,7 @@
along with FingerTerm. If not, see .
*/
-import QtQuick 1.1
+import QtQuick 2.0
import TextRender 1.0
Rectangle {
@@ -32,8 +32,6 @@ Rectangle {
id: window
objectName: "window"
- width: 854
- height: 480
color: bgcolor
NotifyWin {
diff --git a/qml/Menu.qml b/qml/Menu.qml
index 3e7b892..7c39759 100644
--- a/qml/Menu.qml
+++ b/qml/Menu.qml
@@ -17,7 +17,8 @@
along with FingerTerm. If not, see .
*/
-import QtQuick 1.1
+import QtQuick 2.0
+import QtQuick.XmlListModel 2.0
Rectangle {
id: menuWin
diff --git a/qml/NotifyWin.qml b/qml/NotifyWin.qml
index 03026d8..887e28b 100644
--- a/qml/NotifyWin.qml
+++ b/qml/NotifyWin.qml
@@ -17,7 +17,7 @@
along with FingerTerm. If not, see .
*/
-import QtQuick 1.1
+import QtQuick 2.0
Rectangle {
id: notifyWin
diff --git a/qml/UrlWindow.qml b/qml/UrlWindow.qml
index bf9a0ed..e97629c 100644
--- a/qml/UrlWindow.qml
+++ b/qml/UrlWindow.qml
@@ -17,7 +17,7 @@
along with FingerTerm. If not, see .
*/
-import QtQuick 1.1
+import QtQuick 2.0
Rectangle {
id: urlWindow
diff --git a/rpm/fingerterm.spec b/rpm/fingerterm.spec
index de2966c..3236c76 100644
--- a/rpm/fingerterm.spec
+++ b/rpm/fingerterm.spec
@@ -9,8 +9,9 @@ URL: https://github.com/nemomobile/fingerterm
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5DBus)
BuildRequires: pkgconfig(Qt5Gui)
-BuildRequires: pkgconfig(Qt5OpenGL)
-BuildRequires: pkgconfig(Qt5Declarative)
+BuildRequires: pkgconfig(Qt5Qml)
+BuildRequires: pkgconfig(Qt5Quick)
+Requires: qt5-qtdeclarative-import-xmllistmodel
Obsoletes: meego-terminal <= 0.2.2
Provides: meego-terminal > 0.2.2
diff --git a/terminal.cpp b/terminal.cpp
index 5399df2..13a2ca7 100644
--- a/terminal.cpp
+++ b/terminal.cpp
@@ -17,7 +17,7 @@
along with FingerTerm. If not, see .
*/
-#include
+#include
#include
#include "terminal.h"
@@ -1142,7 +1142,7 @@ void Terminal::resetTabs()
void Terminal::pasteFromClipboard()
{
- QClipboard *cb = QApplication::clipboard();
+ QClipboard *cb = QGuiApplication::clipboard();
if(cb->mimeData()->hasText() && !cb->mimeData()->text().isEmpty()) {
if(iPtyIFace) {
resetBackBufferScrollPos();
@@ -1275,7 +1275,7 @@ void Terminal::copySelectionToClipboard()
if (selection().isNull())
return;
- QClipboard *cb = QApplication::clipboard();
+ QClipboard *cb = QGuiApplication::clipboard();
cb->clear();
QString text;
diff --git a/terminal.h b/terminal.h
index 2a31eba..8d7ccf3 100644
--- a/terminal.h
+++ b/terminal.h
@@ -21,11 +21,11 @@
#define TERMINAL_H
#include
-#include
class TextRender;
class PtyIFace;
class Util;
+class QQuickView;
struct TermChar {
QChar c;
@@ -62,7 +62,7 @@ class Terminal : public QObject
virtual ~Terminal() {}
void setRenderer(TextRender* tr);
void setPtyIFace(PtyIFace* pty);
- void setWindow(QWidget* win) { iWindow=win; }
+ void setWindow(QQuickView* win) { iWindow=win; }
void setUtil(Util* util) { iUtil = util; }
void insertInBuffer(const QString& chars);
@@ -128,7 +128,7 @@ class Terminal : public QObject
TextRender* iRenderer;
PtyIFace* iPtyIFace;
- QWidget* iWindow;
+ QQuickView* iWindow;
Util* iUtil;
QList > iBuffer;
diff --git a/textrender.cpp b/textrender.cpp
index fcc86c1..76f5e09 100644
--- a/textrender.cpp
+++ b/textrender.cpp
@@ -22,15 +22,15 @@
#include "terminal.h"
#include "util.h"
-TextRender::TextRender(QDeclarativeItem *parent) :
- QDeclarativeItem(parent),
+TextRender::TextRender(QQuickItem *parent) :
+ QQuickPaintedItem(parent),
iTerm(0),
iUtil(0)
{
- setFlag(QGraphicsItem::ItemHasNoContents, false);
+ setFlag(ItemHasContents);
- connect(this,SIGNAL(widthChanged(int)),this,SLOT(updateTermSize()));
- connect(this,SIGNAL(heightChanged(int)),this,SLOT(updateTermSize()));
+ connect(this,SIGNAL(myWidthChanged(int)),this,SLOT(updateTermSize()));
+ connect(this,SIGNAL(myHeightChanged(int)),this,SLOT(updateTermSize()));
connect(this,SIGNAL(fontSizeChanged()),this,SLOT(updateTermSize()));
//normal
@@ -56,16 +56,13 @@ TextRender::TextRender(QDeclarativeItem *parent) :
qFatal("invalid color table");
iShowBufferScrollIndicator = false;
-
- // caching results in considerably faster redrawing during animations
- setCacheMode(QGraphicsItem::DeviceCoordinateCache);
}
TextRender::~TextRender()
{
}
-void TextRender::paint(QPainter* painter, const QStyleOptionGraphicsItem*, QWidget*)
+void TextRender::paint(QPainter* painter)
{
if (!iTerm)
return;
@@ -252,7 +249,7 @@ void TextRender::drawTextFragment(QPainter* painter, int x, int y, QString text,
void TextRender::redraw()
{
- update(boundingRect());
+ update();
}
void TextRender::setTerminal(Terminal *term)
diff --git a/textrender.h b/textrender.h
index 26bf6a4..873ce5a 100644
--- a/textrender.h
+++ b/textrender.h
@@ -20,18 +20,17 @@
#ifndef TEXTRENDER_H
#define TEXTRENDER_H
-#include
+#include
#include
-#include
#include "terminal.h"
class Util;
-class TextRender : public QDeclarativeItem
+class TextRender : public QQuickPaintedItem
{
- Q_PROPERTY(int myWidth READ width WRITE setWidth NOTIFY widthChanged)
- Q_PROPERTY(int myHeight READ height WRITE setHeight NOTIFY heightChanged)
+ Q_PROPERTY(int myWidth READ myWidth WRITE setMyWidth NOTIFY myWidthChanged)
+ Q_PROPERTY(int myHeight READ myHeight WRITE setMyHeight NOTIFY myHeightChanged)
Q_PROPERTY(int fontWidth READ fontWidth NOTIFY fontSizeChanged)
Q_PROPERTY(int fontHeight READ fontHeight NOTIFY fontSizeChanged)
Q_PROPERTY(int fontPointSize READ fontPointSize WRITE setFontPointSize NOTIFY fontSizeChanged)
@@ -39,17 +38,17 @@ class TextRender : public QDeclarativeItem
Q_OBJECT
public:
- explicit TextRender(QDeclarativeItem *parent = 0);
+ explicit TextRender(QQuickItem *parent = 0);
virtual ~TextRender();
- void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
+ void paint(QPainter*);
void setTerminal(Terminal* term);
void setUtil(Util* util) { iUtil = util; }
- int width() { return iWidth; }
- int height() { return iHeight; }
- void setWidth(int w) { if(iWidth!=w) { iWidth=w; emit widthChanged(w); } }
- void setHeight(int h) { if(iHeight!=h) { iHeight=h; emit heightChanged(h); } }
+ int myWidth() { return iWidth; }
+ int myHeight() { return iHeight; }
+ void setMyWidth(int w) { if(iWidth!=w) { iWidth=w; emit myWidthChanged(w); } }
+ void setMyHeight(int h) { if(iHeight!=h) { iHeight=h; emit myHeightChanged(h); } }
int fontWidth() { return iFontWidth; }
int fontHeight() { return iFontHeight; }
int fontDescent() { return iFontDescent; }
@@ -62,8 +61,8 @@ class TextRender : public QDeclarativeItem
Q_INVOKABLE QSize cursorPixelSize();
signals:
- void widthChanged(int newWidth);
- void heightChanged(int newHeight);
+ void myWidthChanged(int newWidth);
+ void myHeightChanged(int newHeight);
void fontSizeChanged();
void showBufferScrollIndicatorChanged();
@@ -93,6 +92,4 @@ public slots:
QList iColorTable;
};
-QML_DECLARE_TYPE(TextRender)
-
#endif // TEXTRENDER_H
diff --git a/util.cpp b/util.cpp
index 45624c8..c348b13 100644
--- a/util.cpp
+++ b/util.cpp
@@ -22,7 +22,8 @@
#include
#include
#include
-#include
+#include
+#include
#include "mainwindow.h"
#include "terminal.h"
@@ -48,7 +49,7 @@ Util::Util(QSettings *settings, QObject *parent) :
swipeModeSet = false;
swipeAllowed = true;
- connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SIGNAL(clipboardOrSelectionChanged()));
+ connect(QGuiApplication::clipboard(), SIGNAL(dataChanged()), this, SIGNAL(clipboardOrSelectionChanged()));
}
Util::~Util()
@@ -57,7 +58,7 @@ Util::~Util()
clearNotifications();
}
-void Util::setWindow(QWidget* win)
+void Util::setWindow(QQuickView* win)
{
iWindow = dynamic_cast(win);
if(!iWindow)
@@ -68,7 +69,7 @@ void Util::setWindow(QWidget* win)
void Util::setWindowTitle(QString title)
{
iCurrentWinTitle = title;
- iWindow->setWindowTitle(title);
+ iWindow->setTitle(title);
emit windowTitleChanged();
}
@@ -271,39 +272,40 @@ bool Util::eventFilter(QObject *, QEvent *ev)
if(!iAllowGestures)
return false;
- if(ev->type()==QEvent::GraphicsSceneMousePress) {
- QGraphicsSceneMouseEvent *mev = static_cast(ev);
- dragOrigin = mev->scenePos();
+ if(ev->type()==QEvent::MouseButtonPress) {
+ QMouseEvent *mev = static_cast(ev);
+ dragOrigin = mev->pos();
newSelection = true;
}
- else if(ev->type()==QEvent::GraphicsSceneMouseMove) {
- QGraphicsSceneMouseEvent *mev = static_cast(ev);
+ else if(ev->type()==QEvent::MouseMove) {
+ QMouseEvent *mev = static_cast(ev);
if(settingsValue("ui/dragMode")=="scroll") {
- scrollBackBuffer(mev->scenePos(), mev->lastScenePos());
+ scrollBackBuffer(mev->pos(), dragOrigin);
+ dragOrigin = mev->pos();
}
else if(settingsValue("ui/dragMode")=="select" && iRenderer) {
- selectionHelper(mev->scenePos());
+ selectionHelper(mev->pos());
}
}
- else if(ev->type()==QEvent::GraphicsSceneMouseRelease) {
- QGraphicsSceneMouseEvent *mev = static_cast(ev);
- if(settingsValue("ui/dragMode")=="gestures" && mev->lastScenePos() != dragOrigin) {
- int xdist = qAbs(mev->scenePos().x() - dragOrigin.x());
- int ydist = qAbs(mev->scenePos().y() - dragOrigin.y());
- if(mev->scenePos().x() < dragOrigin.x()-reqDragLength && xdist > ydist*2)
+ else if(ev->type()==QEvent::MouseButtonRelease) {
+ QMouseEvent *mev = static_cast(ev);
+ if(settingsValue("ui/dragMode")=="gestures") {
+ int xdist = qAbs(mev->pos().x() - dragOrigin.x());
+ int ydist = qAbs(mev->pos().y() - dragOrigin.y());
+ if(mev->pos().x() < dragOrigin.x()-reqDragLength && xdist > ydist*2)
doGesture(PanLeft);
- else if(mev->scenePos().x() > dragOrigin.x()+reqDragLength && xdist > ydist*2)
+ else if(mev->pos().x() > dragOrigin.x()+reqDragLength && xdist > ydist*2)
doGesture(PanRight);
- else if(mev->scenePos().y() > dragOrigin.y()+reqDragLength && ydist > xdist*2)
+ else if(mev->pos().y() > dragOrigin.y()+reqDragLength && ydist > xdist*2)
doGesture(PanDown);
- else if(mev->scenePos().y() < dragOrigin.y()-reqDragLength && ydist > xdist*2)
+ else if(mev->pos().y() < dragOrigin.y()-reqDragLength && ydist > xdist*2)
doGesture(PanUp);
}
else if(settingsValue("ui/dragMode")=="scroll") {
- scrollBackBuffer(mev->scenePos(), mev->lastScenePos());
+ scrollBackBuffer(mev->pos(), dragOrigin);
}
else if(settingsValue("ui/dragMode")=="select" && iRenderer) {
- selectionHelper(mev->scenePos());
+ selectionHelper(mev->pos());
selectionFinished();
}
}
@@ -370,7 +372,7 @@ void Util::notifyText(QString text)
void Util::copyTextToClipboard(QString str)
{
- QClipboard *cb = QApplication::clipboard();
+ QClipboard *cb = QGuiApplication::clipboard();
cb->clear();
cb->setText(str);
}
@@ -382,7 +384,7 @@ bool Util::terminalHasSelection()
bool Util::canPaste()
{
- QClipboard *cb = QApplication::clipboard();
+ QClipboard *cb = QGuiApplication::clipboard();
if(cb->mimeData()->hasText() && !cb->mimeData()->text().isEmpty())
return true;
diff --git a/util.h b/util.h
index 13f5e05..6bfa4a2 100644
--- a/util.h
+++ b/util.h
@@ -21,11 +21,11 @@
#define UTIL_H
#include
-#include
class Terminal;
class MainWindow;
class TextRender;
+class QQuickView;
class Util : public QObject
{
@@ -33,7 +33,7 @@ class Util : public QObject
public:
explicit Util(QSettings* settings, QObject *parent = 0);
virtual ~Util();
- void setWindow(QWidget* win);
+ void setWindow(QQuickView* win);
void setWindowTitle(QString title);
Q_INVOKABLE QString currentWindowTitle();
void setTerm(Terminal* term) { iTerm = term; }