diff options
author | Jeevaka Badrappan <jeevaka.badrappan@elektrobit.com> | 2011-01-11 16:16:05 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-01-12 17:20:28 -0600 |
commit | 30173f7a6778cb72cc0076bde43838abf717d9ed (patch) | |
tree | 223feb3da68755a944f54aeca362d368be0a0b56 | |
parent | cbab55e907af9c54700ab77f78e9f56d786c8346 (diff) | |
download | phonesim-30173f7a6778cb72cc0076bde43838abf717d9ed.tar.gz |
phonesim: add ui support for sim app selection
-rw-r--r-- | src/control.cpp | 5 | ||||
-rw-r--r-- | src/controlbase.ui | 10 | ||||
-rw-r--r-- | src/hardwaremanipulator.cpp | 19 | ||||
-rw-r--r-- | src/hardwaremanipulator.h | 4 | ||||
-rw-r--r-- | src/phonesim.cpp | 23 | ||||
-rw-r--r-- | src/phonesim.h | 3 |
6 files changed, 37 insertions, 27 deletions
diff --git a/src/control.cpp b/src/control.cpp index 68c5584..2cbb91a 100644 --- a/src/control.cpp +++ b/src/control.cpp @@ -457,8 +457,7 @@ void ControlWidget::simInsertRemove() void ControlWidget::handleNewApp() { - ui->lblApplicationName->setText( "Current application: " + - p->getSimAppName() ); + ui->cbSimApps->insertItems( 0, p->getSimAppsNameList() ); } void Control::handleNewApp() @@ -468,7 +467,7 @@ void Control::handleNewApp() void ControlWidget::simAppStart() { - p->simAppStart(); + p->simAppStart( ui->cbSimApps->currentIndex() ); } void ControlWidget::simAppAbort() diff --git a/src/controlbase.ui b/src/controlbase.ui index 669078c..36fe3cd 100644 --- a/src/controlbase.ui +++ b/src/controlbase.ui @@ -1288,6 +1288,9 @@ p, li { white-space: pre-wrap; } </property> <layout class="QHBoxLayout"> <item> + <widget class="QComboBox" name="cbSimApps"/> + </item> + <item> <widget class="QPushButton" name="pbStart"> <property name="text"> <string>Start</string> @@ -1301,13 +1304,6 @@ p, li { white-space: pre-wrap; } </property> </widget> </item> - <item> - <widget class="QLabel" name="lblApplicationName"> - <property name="toolTip"> - <string>Shows current selected application's name</string> - </property> - </widget> - </item> </layout> </widget> </item> diff --git a/src/hardwaremanipulator.cpp b/src/hardwaremanipulator.cpp index 8ed8227..c7bbe6a 100644 --- a/src/hardwaremanipulator.cpp +++ b/src/hardwaremanipulator.cpp @@ -307,26 +307,27 @@ void HardwareManipulator::setSimPresent( bool present ) simPresent = present; } -QString HardwareManipulator::getSimAppName() +QStringList HardwareManipulator::getSimAppsNameList() { - SimApplication *app = rules->simApplication(); + const QList<SimApplication *> simApps = rules->getSimApps(); + QStringList nameList; - if (app) - return app->getName(); + for ( int i = 0; i < simApps.count(); i++ ) + nameList.append( simApps.at( i )->getName() ); - return "None"; + return nameList; } void HardwareManipulator::handleNewApp() { } -void HardwareManipulator::simAppStart() +void HardwareManipulator::simAppStart( int appIndex ) { - SimApplication *app = rules->simApplication(); + const QList<SimApplication *> simApps = rules->getSimApps(); - if (app) - return app->start(); + rules->setSimApplication( simApps.at( appIndex ) ); + simApps.at( appIndex )->start(); } void HardwareManipulator::simAppAbort() diff --git a/src/hardwaremanipulator.h b/src/hardwaremanipulator.h index d8ab11e..86afbb5 100644 --- a/src/hardwaremanipulator.h +++ b/src/hardwaremanipulator.h @@ -35,7 +35,7 @@ public: HardwareManipulator(SimRules *sr, QObject *parent=0); QSMSMessageList & getSMSList(); bool getSimPresent(); - QString getSimAppName(); + QStringList getSimAppsNameList(); public slots: virtual void handleFromData( const QString& ); @@ -46,7 +46,7 @@ public slots: virtual void sendVMNotify( int type, int count, const QList<QVMMessage> &received, const QList<QVMMessage> &deleted, const QString &mailbox ); virtual void sendUSSD( bool cancel, bool response, const QString &content ); virtual void setSimPresent( bool present ); - virtual void simAppStart(); + virtual void simAppStart( int appIndex ); virtual void simAppAbort(); virtual void handleNewApp(); diff --git a/src/phonesim.cpp b/src/phonesim.cpp index 8ca5b23..f0c93f1 100644 --- a/src/phonesim.cpp +++ b/src/phonesim.cpp @@ -548,6 +548,9 @@ SimRules::SimRules( int fd, QObject *p, const QString& filename, HardwareManipu defaultToolkitApp = toolkitApp = new DemoSimApplication( this, this ); connect( _callManager, SIGNAL(controlEvent(QSimControlEvent)), toolkitApp, SLOT(controlEvent(QSimControlEvent)) ); + + simApps.append( toolkitApp ); + if ( machine ) machine->handleNewApp(); @@ -844,6 +847,9 @@ void SimRules::destruct() delete defaultToolkitApp; toolkitApp = NULL; + for ( int i = 0; i < simApps.count(); i++ ) + simApps.removeAt( i ); + if ( getMachine() ) getMachine()->handleNewApp(); @@ -877,13 +883,18 @@ HardwareManipulator * SimRules::getMachine() const void SimRules::setSimApplication( SimApplication *app ) { - if ( toolkitApp != defaultToolkitApp ) - delete toolkitApp; - toolkitApp = ( app ? app : defaultToolkitApp ); - toolkitApp->start(); + if ( toolkitApp == app ) + return; - if ( getMachine() ) - getMachine()->handleNewApp(); + if ( toolkitApp ) + toolkitApp->abort(); + + toolkitApp = app; +} + +const QList<SimApplication *> SimRules::getSimApps() +{ + return simApps; } void SimRules::switchTo(const QString& name) diff --git a/src/phonesim.h b/src/phonesim.h index cb7a5e1..33b0b31 100644 --- a/src/phonesim.h +++ b/src/phonesim.h @@ -284,6 +284,8 @@ public: SimApplication *simApplication() const { return toolkitApp; } void setSimApplication( SimApplication *app ); + const QList<SimApplication *> getSimApps(); + signals: void returnQueryVariable( const QString&, const QString & ); void returnQueryState( const QString& ); @@ -332,6 +334,7 @@ private: SimFileSystem *fileSystem; SimApplication *defaultToolkitApp; SimApplication *toolkitApp; + QList<SimApplication *> simApps; // Get a particular state object. SimState *state( const QString& name ) const; |