[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [abakus] /: fix segfault on exit
From:       Mathias Kraus <k.hias () gmx ! de>
Date:       2013-12-08 14:55:40
Message-ID: E1Vpflk-0002v7-Mf () scm ! kde ! org
[Download RAW message or body]

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/harmattan/mainwindow.cpp - 084% similarity] R  +7    -7    \
src/mobile/harmattan/mainobject.h [from: src/mobile/harmattan/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 = src/common/lexer.ll
 
 # The .cpp file which was generated for your project. Feel free to hack it.
 SOURCES += 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 += src/mobile/harmattan/main.cpp \
     src/common/function.cpp
 
 HEADERS += \
-    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  USA
  */
 
-#include "mainwindow.h"
+#include "mainobject.h"
 
 #include <QApplication>
 #include <QDeclarativeView>
@@ -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 needed.
 
     QScopedPointer<QApplication> app(createApplication(argc, argv));
-
+    QScopedPointer<MainObject> mainObject(new MainObject());
     QmlApplicationViewer viewer;
+
+    mainObject->setView(&viewer);
     viewer.setOrientation(QmlApplicationViewer::ScreenOrientationLockPortrait);
-    MainWindow mainObject(&viewer);
     viewer.setMainQmlFile(QLatin1String("qml/main.qml"));
     viewer.showExpanded();
 
     return app->exec();
 }
-// vim: set et sw=4 ts=8:
diff --git a/src/mobile/harmattan/mainwindow.cpp \
b/src/mobile/harmattan/mainobject.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  USA
  */
-#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* declarativeView) :
     connect(m_settingscore->instance(), SIGNAL(precisionChanged()), this, \
SLOT(slotRedrawResults()));  
     qmlRegisterType<Settings>("abakus", 1, 0, "Settings");
-
-    m_declarativeContext = m_declarativeView->rootContext();
-    m_declarativeContext->setContextProperty("mainWindow", this);
-    m_declarativeContext->setContextProperty("resultModel", m_resultItemModel);
-    m_declarativeContext->setContextProperty("numeralModel", \
                NumeralModel::instance());
-    m_declarativeContext->setContextProperty("functionModel", \
FunctionModel::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 = declarativeView->rootContext();
+    m_declarativeContext->setContextProperty("mainWindow", this);
+    m_declarativeContext->setContextProperty("resultModel", m_resultItemModel);
+    m_declarativeContext->setContextProperty("numeralModel", \
NumeralModel::instance()); +    \
m_declarativeContext->setContextProperty("functionModel", FunctionModel::instance()); \
+} +
+void MainObject::slotEvaluate(const QString &expression)
 {
     QString text = 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() == 1 && m_insert) {
         m_insert = 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), \
ResultModel::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 >= 0 && listIndex < m_visibleHistoryItemIndices.count()) ? \
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 = 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 QString &text)
     return str;
 }
 
-void MainWindow::slotRedrawResults()
+void MainObject::slotRedrawResults()
 {
     m_resultItemModel->slotRedrawItems();
     NumeralModel::instance()->slotRedrawItems();
 }
-
-// vim: set et ts=8 sw=4:
diff --git a/src/mobile/harmattan/mainwindow.h b/src/mobile/harmattan/mainobject.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 <k.hias@gmx.net>
@@ -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;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic