From 9cd06501e566dfa53dfec65fc41f7ec61105a4dc Mon Sep 17 00:00:00 2001 From: Brian Jones Date: Fri, 20 Apr 2012 12:40:31 -0700 Subject: [PATCH] hfdialer has been made a singleton and will only start one instance of itself. Further calls will simply raise the existing process. hfdialer can also now be started without the UI showing by calling "hfdialer noshow" --- dialer.service | 2 +- projects.pro | 2 +- qml/DialNumPad.qml | 21 +------------------ qml/main.qml | 2 +- .../{com.tizen.hfdialer.xml => com.hfdialer.xml} | 3 ++- src/dbusdialeradapter.h | 2 +- src/dialerapplication.cpp | 17 ++++++++++++++- src/dialerapplication.h | 8 ++++++-- src/main.cpp | 17 ++++++++++++++- src/qmldialer.h | 8 -------- src/qmlmainwindow.cpp | 24 ++++++---------------- src/qmlmainwindow.h | 9 ++++---- src/src.pro | 6 +++--- 13 files changed, 58 insertions(+), 63 deletions(-) rename src/dbus/{com.tizen.hfdialer.xml => com.hfdialer.xml} (82%) diff --git a/dialer.service b/dialer.service index 8352dfd..b9ea896 100644 --- a/dialer.service +++ b/dialer.service @@ -1,3 +1,3 @@ [D-BUS Service] -Name=com.tizen.hfdialer +Name=com.hfdialer Exec=/usr/bin/dialer -prestart diff --git a/projects.pro b/projects.pro index 218a571..21f7a7c 100644 --- a/projects.pro +++ b/projects.pro @@ -1,4 +1,4 @@ -VERSION = 0.3.0 +VERSION = 0.3.1 CONFIG += link_pkgconfig network opengl TEMPLATE = subdirs diff --git a/qml/DialNumPad.qml b/qml/DialNumPad.qml index ca5630b..a4d8b68 100644 --- a/qml/DialNumPad.qml +++ b/qml/DialNumPad.qml @@ -30,25 +30,6 @@ Item } } - function show() - { - height = 72 * 5 + 4; - numPadShown = true; - } - - function hide() - { - height = 72; - numPadShown = false; - } - - function toggle() - { - if(numPadShown == true) {hide()} else {show()} - } - - Behavior on height {PropertyAnimation {duration: 500; easing.type: Easing.OutBounce}} - Image { id: numpad @@ -255,7 +236,6 @@ Item { id: closeButton source: "/usr/share/hfdialer/images/ivi_btn-close.png" - //anchors { left: parent.left; top: parent.top;} height: parent.height width: (parent.width / 7) - 5 @@ -265,6 +245,7 @@ Item onClicked: { console.log("CLOSE BUTTON CLICKED") + Qt.quit() } } diff --git a/qml/main.qml b/qml/main.qml index c8cfddd..694dd09 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -7,7 +7,7 @@ */ import Qt 4.7 -import com.tizen.hfdialer 1.0 +import com.hfdialer 1.0 import 'javascripts/framework.js' as Support diff --git a/src/dbus/com.tizen.hfdialer.xml b/src/dbus/com.hfdialer.xml similarity index 82% rename from src/dbus/com.tizen.hfdialer.xml rename to src/dbus/com.hfdialer.xml index 70a08a7..e78a08e 100644 --- a/src/dbus/com.tizen.hfdialer.xml +++ b/src/dbus/com.hfdialer.xml @@ -1,10 +1,11 @@ - + + diff --git a/src/dbusdialeradapter.h b/src/dbusdialeradapter.h index 6345b21..8c851e4 100644 --- a/src/dbusdialeradapter.h +++ b/src/dbusdialeradapter.h @@ -15,7 +15,7 @@ class DBusDialerAdapter : public QDBusAbstractAdaptor { Q_OBJECT; - Q_CLASSINFO("D-Bus Interface", "com.tizen.hfdialer"); + Q_CLASSINFO("D-Bus Interface", "com.hfdialer"); public: explicit DBusDialerAdapter(DialerApplication *application); diff --git a/src/dialerapplication.cpp b/src/dialerapplication.cpp index 36bd002..98d6793 100644 --- a/src/dialerapplication.cpp +++ b/src/dialerapplication.cpp @@ -13,6 +13,7 @@ #include "dialerapplication.h" #include "dialercontext.h" #include "dbusdialeradapter.h" +#include "hfdialer_adaptor.h" #include "pacontrol.h" #include "qmlmainwindow.h" #include @@ -136,7 +137,7 @@ void DialerApplication::init() else m_connected = true; - DBusDialerAdapter *adapter = new DBusDialerAdapter(this); + HfdialerAdaptor *adapter = new HfdialerAdaptor(this); if(!adapter) { qWarning() << "DBus adapter instantiation failed."; @@ -158,6 +159,8 @@ void DialerApplication::init() this->connectAll(); + m_mainWindow = QMLMainWindow::instance(); + connect(m_mainWindow, SIGNAL(closeWindow()),this, SLOT(closeWindow())); } void DialerApplication::modemChanged() @@ -277,6 +280,18 @@ void DialerApplication::onCallsChanged() QMLMainWindow::instance()->tryToShow(); } +void DialerApplication::raise() +{ + TRACE; + QMLMainWindow::instance()->tryToShow(); +} + +void DialerApplication::closeWindow() +{ + TRACE; + m_mainWindow->hide(); +} + /* Local Variables: */ /* mode:c++ */ /* c-basic-offset:4 */ diff --git a/src/dialerapplication.h b/src/dialerapplication.h index bffac22..756cb29 100644 --- a/src/dialerapplication.h +++ b/src/dialerapplication.h @@ -12,6 +12,7 @@ #define DIALERAPPLICATION_h #include "managerproxy.h" +#include "qmlmainwindow.h" #include #include @@ -40,7 +41,9 @@ public: Q_SIGNALS: void showUi(); void hideUi(); - +public Q_SLOTS: + void closeWindow(); + void raise(); private Q_SLOTS: void connectAll(); void messagesWaitingChanged(); @@ -67,7 +70,8 @@ private: bool m_connected; QString m_lastError; - + QMLMainWindow *m_mainWindow; + QDBusConnection *m_bus; Q_DISABLE_COPY(DialerApplication); }; diff --git a/src/main.cpp b/src/main.cpp index f6f322d..dfe2f0b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,10 +21,25 @@ int main(int argc, char *argv[]) { TRACE; + QDBusConnection bus = QDBusConnection::systemBus(); + QStringList serviceNames = bus.interface()->registeredServiceNames(); + + if (serviceNames.contains("com.hfdialer")) + { + QDBusMessage message = QDBusMessage::createMethodCall("com.hfdialer","/com/dialer","com.hfdialer", "raise"); + bus.call(message,QDBus::NoBlock); + + return 0; + } + DialerApplication app(argc, argv); QMLMainWindow *qmw = QMLMainWindow::instance(); - qmw->tryToShow(); + + QString argString(argv[1]); + + if (argString != "noshow") + qmw->tryToShow(); return app.exec(); } diff --git a/src/qmldialer.h b/src/qmldialer.h index ea02204..c7a93fa 100644 --- a/src/qmldialer.h +++ b/src/qmldialer.h @@ -42,32 +42,24 @@ Q_SIGNALS: public Q_SLOTS: void setMailbox(const QString &number); void setModemOnline(bool online); - QString speedDial(int index) const; void setSpeedDial(int index, const QString &number); - void dial(const QString &msisdn); void hangupAll(); - void silenceRingtone(); - void sendTones(const QString &tones); - void transfer(); void swapCalls(); void releaseAndAnswer(); void holdAndAnswer(); - void createMultiparty(); void hangupMultiparty(); void privateChat(const QMLCallItem &callitem); protected Q_SLOTS: void connectAll(); - void onCallsChanged(); void onIncomingCall(CallItem *callitem); - void onCallManagerChanged(); private: diff --git a/src/qmlmainwindow.cpp b/src/qmlmainwindow.cpp index aa6dfc9..fbdf401 100644 --- a/src/qmlmainwindow.cpp +++ b/src/qmlmainwindow.cpp @@ -43,9 +43,9 @@ public: static void registerDataTypes() { TRACE; - qmlRegisterType("com.tizen.hfdialer", 1, 0, "Dialer"); + qmlRegisterType("com.hfdialer", 1, 0, "Dialer"); - qmlRegisterUncreatableType("com.tizen.hfdialer", 1, 0, "CallItem", ""); + qmlRegisterUncreatableType("com.hfdialer", 1, 0, "CallItem", ""); } QMLMainWindow::QMLMainWindow(QWidget *parent) @@ -62,9 +62,7 @@ QMLMainWindow::QMLMainWindow(QWidget *parent) this->setupUi(); - da->setActiveWindow(this); - - connect(this->engine(), SIGNAL(quit()), this, SLOT(close())); + connect(this->engine(), SIGNAL(quit()), this, SLOT(closeEvent())); } QMLMainWindow::~QMLMainWindow() @@ -109,8 +107,6 @@ void QMLMainWindow::setupUi() d->engine = new QDeclarativeEngine(this); - d->engine->addImportPath("/usr/share/hfdialer/qml/base"); - d->engine->rootContext()->setContextProperty("controller", this); //TODO: Remove this->setSource(QUrl::fromLocalFile("/usr/share/hfdialer/qml/main.qml")); d->component = new QDeclarativeComponent(d->engine, this); @@ -137,25 +133,17 @@ void QMLMainWindow::tryToShow() if (d->component->isReady()) { DialerApplication *da = DialerApplication::instance(); - da->setActiveWindow(this); + da->setActiveWindow(this); da->activeWindow()->show(); da->activeWindow()->activateWindow(); - da->activeWindow()->raise(); this->show(); } } -void QMLMainWindow::hide() +void QMLMainWindow::closeEvent() { TRACE; - QGraphicsView::hide(); -} - -void QMLMainWindow::closeEvent(QCloseEvent *event) -{ - TRACE; - event->accept(); - + emit closeWindow(); } void QMLMainWindow::onGeometryChanged() diff --git a/src/qmlmainwindow.h b/src/qmlmainwindow.h index 54353da..62a07b8 100644 --- a/src/qmlmainwindow.h +++ b/src/qmlmainwindow.h @@ -27,10 +27,12 @@ public: static QMLMainWindow* instanceP(QWidget* parent); ~QMLMainWindow(); +Q_SIGNALS: + void closeWindow(); + public Q_SLOTS: - void hide(); void tryToShow(); - + void closeEvent(); void setAdapter(QMLDialer *adapter); //TODO: Refactor out protected Q_SLOTS: @@ -38,9 +40,6 @@ protected Q_SLOTS: void onGeometryChanged(); -protected: - virtual void closeEvent(QCloseEvent *event); - private: explicit QMLMainWindow(QWidget *parent = 0); QMLMainWindowPrivate *d; diff --git a/src/src.pro b/src/src.pro index 4555332..23d6e89 100644 --- a/src/src.pro +++ b/src/src.pro @@ -8,8 +8,8 @@ MOC_DIR = .moc OBJECTS_DIR = .obj MGEN_OUTDIR = .gen -DEFINES += DBUS_SERVICE_PATH=\\\"/com/tizen/${QMAKE_TARGET}\\\" -DEFINES += DBUS_SERVICE=\\\"com.tizen.${QMAKE_TARGET}\\\" +DEFINES += DBUS_SERVICE_PATH=\\\"/com/${QMAKE_TARGET}\\\" +DEFINES += DBUS_SERVICE=\\\"com.${QMAKE_TARGET}\\\" verbose { DEFINES += VERBOSE @@ -76,7 +76,7 @@ HEADERS += \ system(qdbusxml2cpp -p voicecall_interface dbus/org.ofono.voicecall.xml) system(qdbusxml2cpp -p operator_interface dbus/org.ofono.operator.xml) -system(qdbusxml2cpp -a hfdialer_adaptor dbus/com.tizen.hfdialer.xml) +system(qdbusxml2cpp -a hfdialer_adaptor dbus/com.hfdialer.xml) system(qdbusxml2cpp -i dbustypes.h -p manager_interface dbus/org.ofono.manager.xml) system(qdbusxml2cpp -i dbustypes.h -p modem_interface dbus/org.ofono.modem.xml) -- 2.7.4