Voip.MS dev

This commit is contained in:
J-F Martel 2015-12-17 18:53:13 -05:00
parent 0c16233403
commit 3090a711e8
7 changed files with 185 additions and 70 deletions

View File

@ -17,7 +17,9 @@ HEADERS += \
Sources/VoipSMS/CSMSMessage.h \
Sources/Gui/SystemTrayManager.h \
Sources/Gui/SettingsWindow.h \
Sources/ProgramSettings.h
Sources/ProgramSettings.h \
Sources/Gui/AppIconWidget.h \
../../SMSClient/Sources/SMSClient.h
SOURCES += \
Sources/main.cpp \
@ -32,7 +34,9 @@ SOURCES += \
Sources/VoipSMS/CSMSMessage.cpp \
Sources/Gui/SystemTrayManager.cpp \
Sources/Gui/SettingsWindow.cpp \
Sources/ProgramSettings.cpp
Sources/ProgramSettings.cpp \
Sources/Gui/AppIconWidget.cpp \
../../SMSClient/Sources/SMSClient.cpp
#win32:SOURCES += $$PWD/Source/qextserialport/win_qextserialport.cpp \

View File

@ -0,0 +1,22 @@
#include "AppIconWidget.h"
#include <Qpainter>
CAppIconWidget::CAppIconWidget()
{
setWindowFlags(Qt::Popup | Qt::FramelessWindowHint);
setParent(0); // Create TopLevel-Widget
setAttribute(Qt::WA_NoSystemBackground, true);
setAttribute(Qt::WA_TranslucentBackground, true);
setAttribute(Qt::WA_PaintOnScreen); // not needed in Qt 5.2 and up
}
void CAppIconWidget::paintEvent(QPaintEvent *event)
{
QRectF Rect(100,100,100,100);
QPainter Painter(this);
Painter.fillRect(Rect,Qt::SolidPattern);
}

View File

@ -0,0 +1,18 @@
#ifndef CAPPICONWIDGET_H
#define CAPPICONWIDGET_H
#include "GlobalDefine.h"
#include <QWidget>
class CAppIconWidget : public QWidget
{
Q_OBJECT
public:
CAppIconWidget();
virtual void paintEvent(QPaintEvent *event);
};
#endif // CAPPICONWIDGET_H

View File

@ -37,6 +37,11 @@ void CMasterCtrl::Start()
mSettingsManager.LoadSettings(&mMasterCtrlSettings);
mSettingsWindow->SetSettingsData(&mMasterCtrlSettings);
mVoipMsSMSClient->SetVOIPMsSettings(&mMasterCtrlSettings.mVoipMSSettings);
mVoipMsSMSClient->DownloadSMSFromServer();
// mAppWidget.show();
}

View File

@ -8,6 +8,7 @@
#include "SystemTrayManager.h"
#include "SettingsWindow.h"
#include "ProgramSettings.h"
//#include "AppIconWidget.h"
class CMasterCtrl : public QObject
{
@ -23,6 +24,7 @@ public:
CSystemTrayManager *mSystemTrayManager;
CSettingsWindow *mSettingsWindow;
CProgramSettings mSettingsManager;
// CAppIconWidget mAppWidget;

View File

@ -4,17 +4,25 @@
#include <QJsonDocument>
#include <QJsonObject>
#include <QDateTime>
#include <QStringList>
CVoipMsSMSClient::CVoipMsSMSClient()
{
mVOIPMSSocket = new QNetworkAccessManager();
connect(mVOIPMSSocket,SIGNAL(finished(QNetworkReply*)),this,SLOT(VoipServerReplyFinished(QNetworkReply*)));
mVOIPMsNotificationServer = new QTcpServer;
connect(mVOIPMsNotificationServer,SIGNAL(newConnection()),this,SLOT(VoipNotificationServerConnected()));
mVOIPMsNotificationServer->listen(QHostAddress::Any,80);
}
CVoipMsSMSClient::~CVoipMsSMSClient()
{
delete mVOIPMSSocket;
mSMSMessagesList.clear();
mVOIPMsNotificationServer->close();
delete mVOIPMsNotificationServer;
}
unsigned int CVoipMsSMSClient::SetVOIPMsSettings(CVoipMSSMSSettings *SettingsData)
@ -27,37 +35,9 @@ unsigned int CVoipMsSMSClient::SetVOIPMsSettings(CVoipMSSMSSettings *SettingsDat
int CVoipMsSMSClient::DownloadSMSFromServer()
{
// QDate EndDate;
// mCurStartDate = mVOIPMsSettings.mStartDate;
// if(mCurStartDate.daysTo(QDate::currentDate()) > VOIP_MS_SMS_DATESPAN)
// {
// EndDate = mCurStartDate.addDays(VOIP_MS_SMS_DATESPAN);
// }
// else
// {
// EndDate = mCurStartDate.addDays(mCurStartDate.daysTo(QDate::currentDate()));
// }
mCurStartDate = QDate::currentDate().addDays(-VOIP_MS_SMS_DATESPAN);
SendSMSDownloadRequest(mCurStartDate,QDate::currentDate());
// QString Url;
// Url.clear();
// QTextStream UrlStream(&Url);
// // Url = "https://www.voip.ms/api/v1/rest.php?api_username=jean-francois.martel@polymtl.ca&api_password=Pentium2&method=getSMS&from=2015-11-01&to=2015-11-11&did=5143606463&limit=50";
// UrlStream << VOIP_MS_API_URL
// << "api_username=" << mVOIPMsSettings.mUsername << "&"
// << "api_password=" << mVOIPMsSettings.mPassword << "&"
// << "method=" << "getSMS" << "&"
// << "from=" << mCurStartDate.toString("yyyy-MM-dd") << "&"
// << "to=" << EndDate.toString("yyyy-MM-dd") << "&"
// << "did=" << mVOIPMsSettings.mDefaultDID << "&"
// << "limit=" << "50";
// qDebug() << "Cmd: " << Url;
// mVOIPMSSocket->get(QNetworkRequest(Url));
// mCurStartDate = EndDate;
mSMSMessagesList.clear();
return RET_OK;
}
@ -85,9 +65,15 @@ int CVoipMsSMSClient::SendSMSDownloadRequest(QDate StartDate, QDate EndDate)
mVOIPMSSocket->get(QNetworkRequest(Url));
mCurStartDate = EndDate;
return RET_OK;
}
int CVoipMsSMSClient::DownloadNewSMS()
{
SendSMSDownloadRequest(QDate::currentDate(),QDate::currentDate());
}
unsigned int CVoipMsSMSClient::GetDidFromUserAccount(const QString username, const QString Password)
{
QString Method = "getDIDsInfo";
@ -160,33 +146,71 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
NBMsgReceived = NewMessages.size();
qDebug() << "Received " << NBMsgReceived << "messages";
if(mSMSMessagesList.size() >0 && NewMessages.size() > 0)
{
//remove existing messages...
bool finished = false;
int i = 0;
while(!finished)
{
//compare starting from the end for efficiency...
QDateTime NewDate = NewMessages.at(0).mDateTime;
QDateTime OldDate = mSMSMessagesList.last().mDateTime;
if(NewDate >= OldDate)
QDateTime NewDate = NewMessages.at(0).mDateTime;
QDateTime OldDate = mSMSMessagesList.at(0).mDateTime;
if(NewDate > OldDate)
{
while(!finished)
{
NewMessages.removeAt(0);
if(NewMessages.size() == 0)
//compare starting from the end for efficiency...
NewDate = NewMessages.last().mDateTime;
OldDate = mSMSMessagesList.at(0).mDateTime;
if(NewDate <= OldDate)
{
NewMessages.removeLast();
if(NewMessages.size() == 0)
{
finished = true;
}
}
else
{
finished = true;
}
}
else
NewMessages.append(mSMSMessagesList);
mSMSMessagesList = NewMessages;
}
else
{
while(!finished)
{
finished = true;
//compare starting from the end for efficiency...
NewDate = NewMessages.at(0).mDateTime;
OldDate = mSMSMessagesList.last().mDateTime;
if(NewDate >= OldDate)
{
NewMessages.removeAt(0);
if(NewMessages.size() == 0)
{
finished = true;
}
}
else
{
finished = true;
}
}
mSMSMessagesList.append(NewMessages);
}
}
else
{
mSMSMessagesList.append(NewMessages);
}
mSMSMessagesList.append(NewMessages);
if(NBMsgReceived == VOIP_MS_SMS_MAX_COUNT)
@ -203,7 +227,7 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
qDebug(" ");
for(int i = 0; i < mSMSMessagesList.size(); i++)
{
qDebug() << mSMSMessagesList.at(i).mDateTime.toString("yyyy:MM:dd hh:mm:ss") << " : " << mSMSMessagesList.at(i).mContact << " : " << mSMSMessagesList.at(i).mMessageText.toUtf8().data();
qDebug() << mSMSMessagesList.at(i).mDateTime.toString("yyyy-MM-dd hh:mm:ss") << " : " << mSMSMessagesList.at(i).mContact << " : " << mSMSMessagesList.at(i).mMessageText.toUtf8().data();
}
qDebug("-----------------------------------------------------------------------");
qDebug(" ");
@ -215,34 +239,17 @@ unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray)
qDebug("No SMS to download in this period.");
}
return RET_OK;
}
unsigned int CVoipMsSMSClient::NewSMSNotification(QString DID)
{
if(DID != mVOIPMsSettings.mDefaultDID)
{
return RET_ERROR;
}
// if(mCurStartDate != QDate::currentDate())
// {
// if(mSMSMessagesList.size() != 0)
// {
// mCurStartDate = QDate::fromString(mSMSMessagesList.last().mDateTime.toString("yyyy-MM-dd"));
// }
// QDate EndDate;
// if(mCurStartDate.daysTo(QDate::currentDate()) > VOIP_MS_SMS_DATESPAN)
// {
// EndDate = mCurStartDate.addDays(VOIP_MS_SMS_DATESPAN);
// }
// else
// {
// EndDate = mCurStartDate.addDays(mCurStartDate.daysTo(QDate::currentDate()));
// }
// SendSMSDownloadRequest(mCurStartDate,EndDate);
// }
// qDebug("Added %d messages in the list",mSMSMessagesList.size());
DownloadNewSMS();
return RET_OK;
}
@ -268,6 +275,54 @@ unsigned int CVoipMsSMSClient::DIDsInfoReceived(QJsonArray *DIDsInfoPtr)
return RET_OK;
}
void CVoipMsSMSClient::VoipNotificationServerConnected()
{
qDebug("Client Connected");
mClientConnection = mVOIPMsNotificationServer->nextPendingConnection();
connect(mClientConnection,SIGNAL(readyRead()),this,SLOT(VoipNotificationServerDataAvail()));
// ClientConnection->waitForReadyRead();
}
void CVoipMsSMSClient::VoipNotificationServerDataAvail()
{
QString Notification(mClientConnection->readAll());
QStringList Parts = Notification.split(" ");
QString Data;
QString Did;
for(int i = 0; i < Parts.size(); i++)
{
if(Parts.at(i).contains("/?"))
{
Data = Parts.at(i);
break;
}
}
if(Data.isEmpty() == false)
{
Parts = Data.remove("/?").split("&");
for(int i = 0; i < Parts.size(); i++)
{
if(Parts.at(i).contains("did="))
{
Data = Parts.at(i);
Did = Data.remove("did=");
}
}
}
qDebug() << "New SMS from did: " << Did;
// qDebug() << Notification;
mClientConnection->close();
NewSMSNotification(Did);
}
//https://www.voip.ms/api/v1/rest.php?api_username=jean-francois.martel@polymtl.ca&api_password=Pentium2&method=getBalance&advanced=True

View File

@ -10,6 +10,7 @@
#include <QStringList>
#include <QJsonArray>
#include "ProgramSettings.h"
#include <QTcpServer>
#define VOIP_MS_API_URL "https://www.voip.ms/api/v1/rest.php?"
#define VOIP_MS_SMS_DATESPAN 90
@ -31,11 +32,13 @@ public:
int DownloadSMSFromServer();
int SendSMSDownloadRequest(QDate StartDate, QDate EndDate);
int DownloadNewSMS();
QList<CSMSMessage> mSMSMessagesList;
unsigned int GetDidFromUserAccount(const QString username, const QString Password);
unsigned int SetVOIPMsSettings(CVoipMSSMSSettings *SettingsData);
unsigned int NewSMSNotification(QString DID);
private:
QNetworkAccessManager *mVOIPMSSocket;
@ -47,12 +50,18 @@ private:
QDate mCurStartDate;
QTcpServer *mVOIPMsNotificationServer;
QTcpSocket *mClientConnection;
signals:
void DIDSFetched(QStringList);
public slots:
void VoipServerReplyFinished(QNetworkReply*);
void VoipNotificationServerConnected();
void VoipNotificationServerDataAvail();
};
#endif // CVOIPMSSMSCLIENT_H