You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
3.5 KiB
152 lines
3.5 KiB
/* *************************************************************************
|
|
* copyright: (C) 2005 Justin Huff <jjhuff@mspin.net> *
|
|
*************************************************************************
|
|
*/
|
|
|
|
/* *************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
*************************************************************************
|
|
*/
|
|
|
|
#ifndef GSMLIB_H_039562406
|
|
#define GSMLIB_H_039562406
|
|
|
|
#include "config.h"
|
|
#ifdef INCLUDE_SMSGSM
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <gsmlib/gsm_unix_serial.h>
|
|
#include <gsmlib/gsm_sms.h>
|
|
#include <gsmlib/gsm_me_ta.h>
|
|
#include <gsmlib/gsm_util.h>
|
|
#include <gsmlib/gsm_event.h>
|
|
|
|
#include "smsservice.h"
|
|
#include "kopetemessage.h"
|
|
|
|
#include <qobject.h>
|
|
#include <qevent.h>
|
|
#include <qthread.h>
|
|
#include <qmutex.h>
|
|
#include <qvaluelist.h>
|
|
#include <qstringlist.h>
|
|
|
|
class GSMLibPrefsUI;
|
|
class SMSContact;
|
|
class QListViewItem;
|
|
class KProcess;
|
|
class GSMLibThread;
|
|
|
|
class GSMLib : public SMSService
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
GSMLib(Kopete::Account* account);
|
|
~GSMLib();
|
|
|
|
void send(const Kopete::Message& msg);
|
|
void setWidgetContainer(QWidget* parent, QGridLayout* container);
|
|
|
|
int maxSize();
|
|
const QString& description();
|
|
|
|
public slots:
|
|
void savePreferences();
|
|
virtual void connect();
|
|
virtual void disconnect();
|
|
|
|
//signals:
|
|
// void messageSent(const Kopete::Message &);
|
|
protected:
|
|
virtual void customEvent(QCustomEvent* e);
|
|
|
|
QWidget* configureWidget(QWidget* parent);
|
|
void saveConfig();
|
|
void loadConfig();
|
|
|
|
GSMLibPrefsUI* prefWidget;
|
|
QStringList output;
|
|
|
|
QString m_device;
|
|
|
|
QString m_description;
|
|
|
|
GSMLibThread* m_thread;
|
|
|
|
} ;
|
|
|
|
|
|
/// Custom event for async-events
|
|
class GSMLibEvent : public QCustomEvent
|
|
{
|
|
public:
|
|
enum SubType { CONNECTED, DISCONNECTED, NEW_MESSAGE, MSG_SENT, MSG_NOT_SENT };
|
|
|
|
GSMLibEvent(SubType t);
|
|
|
|
SubType subType();
|
|
void setSubType(SubType t);
|
|
|
|
QString Text;
|
|
QString Number;
|
|
|
|
QString Reason;
|
|
|
|
Kopete::Message Message;
|
|
protected:
|
|
SubType m_subType;
|
|
};
|
|
|
|
/// Thread to deal with GsmLib's blocking
|
|
class GSMLibThread : public QThread, gsmlib::GsmEvent
|
|
{
|
|
public:
|
|
GSMLibThread(QString dev, GSMLib* parent);
|
|
virtual ~GSMLibThread();
|
|
|
|
virtual void run();
|
|
void stop();
|
|
void send(const Kopete::Message& msg);
|
|
protected:
|
|
bool doConnect();
|
|
void pollForMessages();
|
|
void sendMessageQueue();
|
|
void sendMessage(const Kopete::Message& msg);
|
|
void SMSReception(gsmlib::SMSMessageRef newMessage, SMSMessageType messageType);
|
|
void SMSReceptionIndication(std::string storeName, unsigned int index, SMSMessageType messageType);
|
|
|
|
GSMLib* m_parent;
|
|
QString m_device;
|
|
|
|
gsmlib::MeTa* m_MeTa;
|
|
|
|
bool m_run;
|
|
|
|
struct IncomingMessage
|
|
{
|
|
int Index;
|
|
QString StoreName;
|
|
gsmlib::SMSMessageRef Message;
|
|
GsmEvent::SMSMessageType Type;
|
|
|
|
IncomingMessage() : Index(-1)
|
|
{}
|
|
};
|
|
|
|
typedef QValueList<IncomingMessage> MessageList;
|
|
MessageList m_newMessages;
|
|
|
|
typedef QValueList<Kopete::Message> KopeteMessageList;
|
|
KopeteMessageList m_outMessages;
|
|
QMutex m_outMessagesMutex;
|
|
};
|
|
|
|
#endif
|
|
#endif //GSMLIB_H_039562406
|