diff options
Diffstat (limited to 'kopete/protocols/sms/services/gsmlib.h')
-rw-r--r-- | kopete/protocols/sms/services/gsmlib.h | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/kopete/protocols/sms/services/gsmlib.h b/kopete/protocols/sms/services/gsmlib.h new file mode 100644 index 00000000..fa9ef1d2 --- /dev/null +++ b/kopete/protocols/sms/services/gsmlib.h @@ -0,0 +1,151 @@ +/* ************************************************************************* + * 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 |