Git commit 2da2592c17014001970a3d1300cf7dcce223c7e8 by Mathias Kraus. Committed on 07/12/2013 at 14:58. Pushed by mkraus into branch 'master'. fix segfault on exit M +2 -2 abakus-harmattan.pro M +4 -4 src/mobile/harmattan/main.cpp R +27 -27 src/mobile/harmattan/mainobject.cpp [from: src/mobile/harmat= tan/mainwindow.cpp - 084% similarity] R +7 -7 src/mobile/harmattan/mainobject.h [from: src/mobile/harmatta= n/mainwindow.h - 090% similarity] http://commits.kde.org/abakus/2da2592c17014001970a3d1300cf7dcce223c7e8 diff --git a/abakus-harmattan.pro b/abakus-harmattan.pro index 2aea94b..abb3b7e 100644 --- a/abakus-harmattan.pro +++ b/abakus-harmattan.pro @@ -51,7 +51,7 @@ FLEXSOURCES =3D src/common/lexer.ll = # The .cpp file which was generated for your project. Feel free to hack it. SOURCES +=3D src/mobile/harmattan/main.cpp \ - src/mobile/harmattan/mainwindow.cpp \ + src/mobile/harmattan/mainobject.cpp \ src/common/settingscore.cpp \ src/common/settings.cpp \ src/common/resultmodelitem.cpp \ @@ -66,7 +66,7 @@ SOURCES +=3D src/mobile/harmattan/main.cpp \ src/common/function.cpp = HEADERS +=3D \ - src/mobile/harmattan/mainwindow.h \ + src/mobile/harmattan/mainobject.h \ src/common/sharedptr.h \ src/common/settingscore.h \ src/common/settings.h \ diff --git a/src/mobile/harmattan/main.cpp b/src/mobile/harmattan/main.cpp index e41ced8..755c4c4 100644 --- a/src/mobile/harmattan/main.cpp +++ b/src/mobile/harmattan/main.cpp @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 U= SA */ = -#include "mainwindow.h" +#include "mainobject.h" = #include #include @@ -33,13 +33,13 @@ Q_DECL_EXPORT int main(int argc, char **argv) mpfr_set_default_prec(6 * 78); // 78 digits, figure about 6 bits neede= d. = QScopedPointer app(createApplication(argc, argv)); - + QScopedPointer mainObject(new MainObject()); QmlApplicationViewer viewer; + + mainObject->setView(&viewer); viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockPortr= ait); - MainWindow mainObject(&viewer); viewer.setMainQmlFile(QLatin1String("qml/main.qml")); viewer.showExpanded(); = return app->exec(); } -// vim: set et sw=3D4 ts=3D8: diff --git a/src/mobile/harmattan/mainwindow.cpp b/src/mobile/harmattan/mai= nobject.cpp similarity index 84% rename from src/mobile/harmattan/mainwindow.cpp rename to src/mobile/harmattan/mainobject.cpp index 2f05d7a..87f394e 100644 --- a/src/mobile/harmattan/mainwindow.cpp +++ b/src/mobile/harmattan/mainobject.cpp @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 U= SA */ -#include "mainwindow.h" +#include "mainobject.h" = #include "functionmodel.h" #include "numeralmodel.h" @@ -33,9 +33,9 @@ = #define i18n tr = -MainWindow::MainWindow(QDeclarativeView* declarativeView) : +MainObject::MainObject() : m_resultItemModel (ResultModel::instance()), - m_declarativeView(declarativeView), + m_declarativeContext(NULL), m_settingscore(SettingsCore::instance()), m_insert(false) { @@ -46,22 +46,24 @@ MainWindow::MainWindow(QDeclarativeView* declarativeVie= w) : connect(m_settingscore->instance(), SIGNAL(precisionChanged()), this, = SLOT(slotRedrawResults())); = qmlRegisterType("abakus", 1, 0, "Settings"); - - m_declarativeContext =3D m_declarativeView->rootContext(); - m_declarativeContext->setContextProperty("mainWindow", this); - m_declarativeContext->setContextProperty("resultModel", m_resultItemMo= del); - m_declarativeContext->setContextProperty("numeralModel", NumeralModel:= :instance()); - m_declarativeContext->setContextProperty("functionModel", FunctionMode= l::instance()); } = -bool MainWindow::queryExit() +MainObject::~MainObject() { m_settingscore->saveSettings(); m_resultItemModel->clear(); - return true;//QMainWindow::close(); } = -void MainWindow::slotEvaluate(const QString &expression) +void MainObject::setView(QDeclarativeView* declarativeView) +{ + m_declarativeContext =3D declarativeView->rootContext(); + m_declarativeContext->setContextProperty("mainWindow", this); + m_declarativeContext->setContextProperty("resultModel", m_resultItemMo= del); + m_declarativeContext->setContextProperty("numeralModel", NumeralModel:= :instance()); + m_declarativeContext->setContextProperty("functionModel", FunctionMode= l::instance()); +} + +void MainObject::slotEvaluate(const QString &expression) { QString text =3D expression; = @@ -120,7 +122,7 @@ void MainWindow::slotEvaluate(const QString &expression) } } = -void MainWindow::slotTextChanged(const QString &str) +void MainObject::slotTextChanged(const QString &str) { if(str.length() =3D=3D 1 && m_insert) { m_insert =3D false; @@ -131,52 +133,52 @@ void MainWindow::slotTextChanged(const QString &str) } } = -QString MainWindow::getTag(const int &index) +QString MainObject::getTag(const int &index) { return m_resultItemModel->data(m_resultItemModel->index(index), Result= Model::TagRole).toString(); } = -void MainWindow::clearHistory() +void MainObject::clearHistory() { m_resultItemModel->clear(); } = -void MainWindow::historyPrevious() +void MainObject::historyPrevious() { emit setEditorText(m_resultItemModel->previousExpression()); } = -void MainWindow::historyNext() +void MainObject::historyNext() { emit setEditorText(m_resultItemModel->nextExpression()); } = -void MainWindow::removeNumeral(const QString& name) +void MainObject::removeNumeral(const QString& name) { NumeralModel::instance()->removeValue(name); } = -void MainWindow::removeFunction(const QString& name) +void MainObject::removeFunction(const QString& name) { FunctionModel::instance()->removeFunction(name); } = -int MainWindow::getVisibleHistoryItemIndex(int listIndex) +int MainObject::getVisibleHistoryItemIndex(int listIndex) { return (listIndex >=3D 0 && listIndex < m_visibleHistoryItemIndices.co= unt()) ? m_visibleHistoryItemIndices[listIndex] : -1; } = -void MainWindow::addVisibleHistoryItemIndex(int itemIndex) +void MainObject::addVisibleHistoryItemIndex(int itemIndex) { m_visibleHistoryItemIndices.append(itemIndex); } = -void MainWindow::removeVisibleHistoryItemIndex(int itemIndex) +void MainObject::removeVisibleHistoryItemIndex(int itemIndex) { m_visibleHistoryItemIndices.removeOne(itemIndex); } = -int MainWindow::getParenthesesLevel(const QString &str) +int MainObject::getParenthesesLevel(const QString &str) { int level =3D 0; = @@ -189,7 +191,7 @@ int MainWindow::getParenthesesLevel(const QString &str) return level; } = -QString MainWindow::interpolateExpression(const QString &text) +QString MainObject::interpolateExpression(const QString &text) { QString str(text); QRegExp stackRE("\\$\\d+"); @@ -211,10 +213,8 @@ QString MainWindow::interpolateExpression(const QStrin= g &text) return str; } = -void MainWindow::slotRedrawResults() +void MainObject::slotRedrawResults() { m_resultItemModel->slotRedrawItems(); NumeralModel::instance()->slotRedrawItems(); } - -// vim: set et ts=3D8 sw=3D4: diff --git a/src/mobile/harmattan/mainwindow.h b/src/mobile/harmattan/maino= bject.h similarity index 90% rename from src/mobile/harmattan/mainwindow.h rename to src/mobile/harmattan/mainobject.h index 5a24e11..a8d88a5 100644 --- a/src/mobile/harmattan/mainwindow.h +++ b/src/mobile/harmattan/mainobject.h @@ -1,5 +1,5 @@ -#ifndef ABAKUS_MAINWINDOW_H -#define ABAKUS_MAINWINDOW_H +#ifndef ABAKUS_MAINOBJECT_H +#define ABAKUS_MAINOBJECT_H /* * mainwindow.h - part of abakus * Copyright (C) 2012 Mathias Kraus @@ -32,16 +32,17 @@ class QDeclarativeView; class QMenu; = // Main window class, handles events and stuff -class MainWindow : public QObject +class MainObject : public QObject { Q_OBJECT = public: - MainWindow(QDeclarativeView* declarativeView); + MainObject(); + ~MainObject(); + + void setView(QDeclarativeView* declarativeView); = protected: - virtual bool queryExit(); - = Q_INVOKABLE void slotEvaluate(const QString &expression); Q_INVOKABLE void slotTextChanged(const QString &str); Q_INVOKABLE QString getTag(const int &index); @@ -70,7 +71,6 @@ private: = ResultModel *m_resultItemModel; = - QDeclarativeView* m_declarativeView; QDeclarativeContext *m_declarativeContext; = SettingsCore* m_settingscore;