aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeevaka Badrappan <jeevaka.badrappan@elektrobit.com>2011-01-11 16:16:05 +0200
committerDenis Kenzior <denkenz@gmail.com>2011-01-12 17:20:28 -0600
commit30173f7a6778cb72cc0076bde43838abf717d9ed (patch)
tree223feb3da68755a944f54aeca362d368be0a0b56
parentcbab55e907af9c54700ab77f78e9f56d786c8346 (diff)
downloadphonesim-30173f7a6778cb72cc0076bde43838abf717d9ed.tar.gz
phonesim: add ui support for sim app selection
-rw-r--r--src/control.cpp5
-rw-r--r--src/controlbase.ui10
-rw-r--r--src/hardwaremanipulator.cpp19
-rw-r--r--src/hardwaremanipulator.h4
-rw-r--r--src/phonesim.cpp23
-rw-r--r--src/phonesim.h3
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;