blob: fd1a4e6e3ffa9cadd3b909b41af1b2b41e4732fc [file] [log] [blame]
/****************************************************************************
**
** This file is part of the Qt Extended Opensource Package.
**
** Copyright (C) 2009 Trolltech ASA.
**
** Contact: Qt Extended Information ([email protected])
**
** This file may be used under the terms of the GNU General Public License
** version 2.0 as published by the Free Software Foundation and appearing
** in the file LICENSE.GPL included in the packaging of this file.
**
** Please review the following information to ensure GNU General Public
** Licensing requirements will be met:
** http://www.fsf.org/licensing/licenses/info/GPLv2.html.
**
**
****************************************************************************/
#ifndef CONTROL_H
#define CONTROL_H
#include <hardwaremanipulator.h>
#include <QtDBus/QtDBus>
#include <QtScript>
#include "ui_controlbase.h"
#include "attranslator.h"
#include "callmanager.h"
class Control;
class Script: public QDBusAbstractAdaptor
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "org.ofono.phonesim.Script")
Q_CLASSINFO("D-Bus Introspection", ""
" <interface name=\"org.ofono.phonesim.Script\">\n"
" <method name=\"SetPath\">\n"
" <arg direction=\"in\" type=\"s\" name=\"path\"/>\n"
" </method>\n"
" <method name=\"GetPath\">\n"
" <arg direction=\"out\" type=\"s\" name=\"path\"/>\n"
" </method>\n"
" <method name=\"Run\">\n"
" <arg direction=\"in\" type=\"s\" name=\"name\"/>\n"
" <arg direction=\"out\" type=\"s\" name=\"result\"/>\n"
" </method>\n"
" </interface>\n"
"")
public:
Script(QObject *obj, Ui_ControlBase *ui);
public slots:
void SetPath(const QString &path, const QDBusMessage &msg);
QString GetPath();
QString Run(const QString &name, const QDBusMessage &msg);
private:
QString dirPath;
QScriptEngine engine;
};
class ControlWidget : public QWidget
{
Q_OBJECT
public:
ControlWidget( const QString&, Control*);
~ControlWidget();
void handleFromData( const QString& );
void handleToData( const QString& );
void handleNewApp();
void handleCSSNNotif();
void setCssuEnabled( bool enableCSSU );
void setCssiEnabled( bool enableCSSI );
void updateCallView( QString callParameters [5], int row );
void clearCallView();
private slots:
void sendSQ();
void sendBC();
void chargingChanged(int state);
void sendOPS();
void sendREG();
void sendCBM();
void sendSMSMessage();
void sendMGD();
void selectFile();
void sendSMSDatagram();
void sendCall();
void atChanged();
void resetTranslator();
void addVoicemail();
void delVoicemail();
void sendVMNotify( int type = 0 );
void sendEVMNotify();
void sendUSSD();
void cancelUSSD();
void simInsertRemove();
void simAppStart();
void simAppAbort();
void modemSilentReset();
void sendGNSSData();
void setDefaultGNSSData();
void sendCSSN();
void setStateAlerting();
void setStateConnected();
void setStateHangup();
signals:
void unsolicitedCommand(const QString &);
void command(const QString &);
void variableChanged(const QString &, const QString &);
void switchTo(const QString &);
void startIncomingCall(const QString &, const QString &, const QString &);
void stateChangedToAlerting();
void stateChangedToConnected();
void stateChangedToHangup( int callId );
protected:
void closeEvent(QCloseEvent *event);
private:
Ui_ControlBase *ui;
Script *script;
Control *p;
AtTranslator *translator;
class VoicemailItem {
public:
VoicemailItem( const QString &sender, bool urgent );
QTableWidgetItem sender;
QTableWidgetItem priority;
QTableWidgetItem pending;
bool notifyReceived;
bool notifyDeleted;
int id;
static int nextId;
};
QList<VoicemailItem> mailbox;
};
class Control: public HardwareManipulator
{
Q_OBJECT
public:
Control(const QString& ruleFile, SimRules *sr, QObject *parent=0);
virtual ~Control();
public slots:
void handleFromData( const QString& );
void handleToData( const QString& );
void setPhoneNumber( const QString& );
void handleNewApp();
void callManagement( QList<CallInfo> *info );
protected:
virtual void warning( const QString&, const QString& );
private:
ControlWidget *widget;
friend class ControlWidget;
};
class ControlFactory : public HardwareManipulatorFactory
{
public:
inline virtual HardwareManipulator *create(SimRules *sr, QObject *parent)
{ return new Control(ruleFile(), sr, parent); }
};
#endif
OSZAR »