From 6b7ff8e86a965374f4abdb516855976f5a85837d Mon Sep 17 00:00:00 2001 From: J-F Martel Date: Fri, 11 Dec 2015 07:34:57 -0500 Subject: [PATCH] Dev.. --- Configuration/Settings.mcs | Bin 0 -> 122 bytes MasterCtrl.pro | 8 +- Sources/Gui/SettingsWindow.cpp | 147 ++++++++++++++++++++++++ Sources/Gui/SettingsWindow.h | 44 +++++++ Sources/Gui/SystemTrayManager.cpp | 3 +- Sources/MasterCtrl.cpp | 44 ++++++- Sources/MasterCtrl.h | 18 ++- Sources/ProgramSettings.cpp | 146 +++++++++++++++++++++++ Sources/ProgramSettings.h | 54 +++++++++ Sources/VoipSMS/CSMSMessage.h | 2 +- Sources/VoipSMS/VoipMsSMSClient.cpp | 172 +++++++++++++++++++++++----- Sources/VoipSMS/VoipMsSMSClient.h | 25 +++- Sources/main.cpp | 1 + 13 files changed, 628 insertions(+), 36 deletions(-) create mode 100644 Configuration/Settings.mcs create mode 100644 Sources/Gui/SettingsWindow.cpp create mode 100644 Sources/Gui/SettingsWindow.h create mode 100644 Sources/ProgramSettings.cpp create mode 100644 Sources/ProgramSettings.h diff --git a/Configuration/Settings.mcs b/Configuration/Settings.mcs new file mode 100644 index 0000000000000000000000000000000000000000..1445910fe534bf301e1428ba6ad182f025a0369e GIT binary patch literal 122 zcmW-X%MCzK6hu!67Fw_*{!3AU7G8ve_=RU-qazI{K~Z92G51c+ocnrSz$GIhB_StN yQY8_0sA!n5bnJ}8V&I*-Zb7fjX!U7X|5h{0+z8|vF)L%BWDy@YM6G^6jrjmA5*6A2 literal 0 HcmV?d00001 diff --git a/MasterCtrl.pro b/MasterCtrl.pro index 2e58a91..23f26c4 100644 --- a/MasterCtrl.pro +++ b/MasterCtrl.pro @@ -15,7 +15,9 @@ HEADERS += \ Sources/AVReceiverDevice.h \ Sources/VoipSMS/VoipMsSMSClient.h \ Sources/VoipSMS/CSMSMessage.h \ - Sources/Gui/SystemTrayManager.h + Sources/Gui/SystemTrayManager.h \ + Sources/Gui/SettingsWindow.h \ + Sources/ProgramSettings.h SOURCES += \ Sources/main.cpp \ @@ -28,7 +30,9 @@ SOURCES += \ Sources/AVReceiverDevice.cpp \ Sources/VoipSMS/VoipMsSMSClient.cpp \ Sources/VoipSMS/CSMSMessage.cpp \ - Sources/Gui/SystemTrayManager.cpp + Sources/Gui/SystemTrayManager.cpp \ + Sources/Gui/SettingsWindow.cpp \ + Sources/ProgramSettings.cpp #win32:SOURCES += $$PWD/Source/qextserialport/win_qextserialport.cpp \ diff --git a/Sources/Gui/SettingsWindow.cpp b/Sources/Gui/SettingsWindow.cpp new file mode 100644 index 0000000..3a87882 --- /dev/null +++ b/Sources/Gui/SettingsWindow.cpp @@ -0,0 +1,147 @@ +#include "SettingsWindow.h" +#include +#include +#include +#include "MasterCtrl.h" + + +CSettingsWindow::CSettingsWindow() +{ + resize(600,600); + + QVBoxLayout *MainLayout = new QVBoxLayout; + QWidget *mPagesContainer = new QWidget(this); + + mOptionsTabBar = new QTabBar(); + mOptionsTabBar->addTab("SMS"); + mOptionsTabBar->addTab("Network"); + mOptionsTabBar->resize(this->geometry().width(),mOptionsTabBar->height()); + MainLayout->addWidget(mOptionsTabBar); + + mSMSPage = new QWidget(mPagesContainer); + // mVoipPage->resize(this->size()); + + QGridLayout *mSMSPageLayout = new QGridLayout; + + + QLabel *Label; + mVoipMSUsername = new QLineEdit; + Label = new QLabel("Voip.ms Username: "); + mSMSPageLayout->addWidget(Label,0,1,1,1); + mSMSPageLayout->addWidget(mVoipMSUsername,0,2,1,2/*,Qt::AlignLeft*/); + + Label = new QLabel("Voip.ms Password: "); + mVoipMSPassword = new QLineEdit; + mVoipMSPassword->setEchoMode(QLineEdit::Password); + mSMSPageLayout->addWidget(Label,1,1,1,1); + mSMSPageLayout->addWidget(mVoipMSPassword,1,2,1,1/*,Qt::AlignLeft*/); + + mRetreiveDIDSButton = new QPushButton("Get DIDs"); + connect(mRetreiveDIDSButton,SIGNAL(clicked(bool)),this,SLOT(RetreiveDIDButtonClicked(bool))); + mSMSPageLayout->addWidget(mRetreiveDIDSButton,1,3,1,1); + + + Label = new QLabel("DID:"); + mDIDSelectionDropList = new QComboBox(); + mSMSPageLayout->addWidget(Label,2,1,1,1); + mSMSPageLayout->addWidget(mDIDSelectionDropList,2,2,1,1); + + + mVoipMSCalendar = new QCalendarWidget; + Label = new QLabel("SMS retreival stard date:"); + mSMSPageLayout->addWidget(Label,3,1,1,1); + mSMSPageLayout->addWidget(mVoipMSCalendar,4,1,1,4); + + mDoneButton = new QPushButton("Done"); + MainLayout->addWidget(mDoneButton); + connect(mDoneButton,SIGNAL(clicked(bool)),this,SLOT(DoneButtonClicked(bool))); + + + + + mSMSPage->setLayout(mSMSPageLayout); + mSMSPage->show(); + + MainLayout->addWidget(mPagesContainer); + setLayout(MainLayout); + + connect(mOptionsTabBar,SIGNAL(currentChanged(int)),this,SLOT(TabBarClicked(int))); + +} + +CSettingsWindow::~CSettingsWindow() +{ + +} + +void CSettingsWindow::TabBarClicked(int TabIndex) +{ + if(TabIndex == 0)//SMS + { + mSMSPage->show(); + + + } + else if(TabIndex == 1)//Network + { + mSMSPage->hide(); + + } +} + +void CSettingsWindow::RetreiveDIDButtonClicked(bool checked) +{ + Q_UNUSED(checked) + + if(mVoipMSUsername->text().isEmpty() || mVoipMSPassword->text().isEmpty()) + { + return; + } + + + mProgramHandle->FetchDIDsRequest(mVoipMSUsername->text(),mVoipMSPassword->text()); + qDebug("CLick!"); +} + +void CSettingsWindow::DIDsListFetched(QStringList DIDs) +{ + if(DIDs.size() == 0) + { + + } + else + { + mDIDSelectionDropList->clear(); + for(int i = 0; i < DIDs.size(); i++) + { + mDIDSelectionDropList->addItem(DIDs.at(i)); + } + } +} + +unsigned int CSettingsWindow::SetSettingsData(CSettings *SettingsData) +{ + mVoipMSPassword->setText(SettingsData->mVoipMSSettings.mPassword); + mVoipMSUsername->setText(SettingsData->mVoipMSSettings.mUsername); + mDIDSelectionDropList->clear(); + mDIDSelectionDropList->addItem(SettingsData->mVoipMSSettings.mDefaultDID); + mVoipMSCalendar->setSelectedDate(SettingsData->mVoipMSSettings.mStartDate); + return RET_OK; +} + +void CSettingsWindow::DoneButtonClicked(bool checked) +{ + Q_UNUSED(checked) + + CSettings *Settings = new CSettings; + Settings->mVoipMSSettings.mDefaultDID = mDIDSelectionDropList->currentText(); + Settings->mVoipMSSettings.mPassword = mVoipMSPassword->text(); + Settings->mVoipMSSettings.mStartDate = mVoipMSCalendar->selectedDate(); + Settings->mVoipMSSettings.mUsername = mVoipMSUsername->text(); + + mProgramHandle->SaveSettings(Settings); + mProgramHandle->SettingsWindowClosed(); + delete Settings; + + this->hide(); +} diff --git a/Sources/Gui/SettingsWindow.h b/Sources/Gui/SettingsWindow.h new file mode 100644 index 0000000..2c09ce9 --- /dev/null +++ b/Sources/Gui/SettingsWindow.h @@ -0,0 +1,44 @@ +#ifndef CSETTINGSWINDOW_H +#define CSETTINGSWINDOW_H + +#include "GlobalDefine.h" +#include +#include +#include +#include +#include +#include +#include "ProgramSettings.h" + +class CMasterCtrl; + + +class CSettingsWindow : public QDialog +{ + Q_OBJECT +public: + CSettingsWindow(); + virtual ~CSettingsWindow(); + + CMasterCtrl *mProgramHandle; + + QWidget *mSMSPage; + QTabBar *mOptionsTabBar; + QLineEdit *mVoipMSUsername; + QLineEdit *mVoipMSPassword; + QCalendarWidget *mVoipMSCalendar; + QComboBox *mDIDSelectionDropList; + QPushButton *mRetreiveDIDSButton; + + QPushButton *mDoneButton; + + unsigned int SetSettingsData(CSettings *SettingsData); + +public slots: + void TabBarClicked(int); + void RetreiveDIDButtonClicked(bool); + void DIDsListFetched(QStringList); + void DoneButtonClicked(bool); +}; + +#endif // CSETTINGSWINDOW_H diff --git a/Sources/Gui/SystemTrayManager.cpp b/Sources/Gui/SystemTrayManager.cpp index f9ed27a..61e28cc 100644 --- a/Sources/Gui/SystemTrayManager.cpp +++ b/Sources/Gui/SystemTrayManager.cpp @@ -13,8 +13,8 @@ CSystemTrayManager::CSystemTrayManager() connect(&mSystemTrayIcon,SIGNAL(messageClicked()),this,SLOT(TrayBaloonMessageClicked())); connect(mTrayMenu,SIGNAL(triggered(QAction*)),this,SLOT(TrayMenuClicked(QAction*))); - mQuitAction = mTrayMenu->addAction("Quit MasterController"); mShowSettingsGUIAction = mTrayMenu->addAction("Settings"); + mQuitAction = mTrayMenu->addAction("Quit MasterController"); mSystemTrayIcon.setIcon(QIcon("./Ico/icon.png")); mSystemTrayIcon.setToolTip("MasterController :)"); mSystemTrayIcon.show(); @@ -72,6 +72,7 @@ void CSystemTrayManager::TrayMenuClicked(QAction *Menu) else if(Menu == mShowSettingsGUIAction) { qDebug("Settings"); + mProgramHandle->ShowSettingsWindowRequest(); } } diff --git a/Sources/MasterCtrl.cpp b/Sources/MasterCtrl.cpp index 53eb3e0..0851f1b 100644 --- a/Sources/MasterCtrl.cpp +++ b/Sources/MasterCtrl.cpp @@ -9,8 +9,9 @@ CMasterCtrl::CMasterCtrl() mVoipMsSMSClient = new CVoipMsSMSClient; mSystemTrayManager = new CSystemTrayManager; mSystemTrayManager->mProgramHandle = this; - - + mSettingsWindow = new CSettingsWindow(); + mSettingsWindow->mProgramHandle = this; + // mMasterCtrlSettings = new CSettings; } CMasterCtrl::~CMasterCtrl() @@ -21,14 +22,22 @@ CMasterCtrl::~CMasterCtrl() delete mAVReceiverDevice; delete mVoipMsSMSClient; delete mSystemTrayManager; + delete mSettingsWindow; + // delete mMasterCtrlSettings; } void CMasterCtrl::Start() { qDebug("Started!"); + + connect(mVoipMsSMSClient,SIGNAL(DIDSFetched(QStringList)),mSettingsWindow,SLOT(DIDsListFetched(QStringList))); + mAVReceiverDevice->ConnectToReceiver(); - mVoipMsSMSClient->DownloadSMSFromServer(); + + mSettingsManager.LoadSettings(&mMasterCtrlSettings); + mSettingsWindow->SetSettingsData(&mMasterCtrlSettings); + } unsigned int CMasterCtrl::QuitApplicationRequest() @@ -36,3 +45,32 @@ unsigned int CMasterCtrl::QuitApplicationRequest() QApplication::exit(69); return RET_OK; } + +unsigned int CMasterCtrl::ShowSettingsWindowRequest() +{ + mSettingsWindow->show(); + return RET_OK; +} + +unsigned int CMasterCtrl::FetchDIDsRequest(QString Username, QString Password) +{ + mVoipMsSMSClient->GetDidFromUserAccount(Username,Password); + return RET_OK; +} + +unsigned int CMasterCtrl::SaveSettings(CSettings *Settings) +{ + CSettings toto; + toto = *Settings; + mMasterCtrlSettings = toto; + mSettingsManager.SaveSettings(&mMasterCtrlSettings); + + return RET_OK; +} + +unsigned int CMasterCtrl::SettingsWindowClosed() +{ + mVoipMsSMSClient->SetVOIPMsSettings(&mMasterCtrlSettings.mVoipMSSettings); + mVoipMsSMSClient->DownloadSMSFromServer(); + return RET_OK; +} diff --git a/Sources/MasterCtrl.h b/Sources/MasterCtrl.h index 8d15eed..7307a48 100644 --- a/Sources/MasterCtrl.h +++ b/Sources/MasterCtrl.h @@ -6,9 +6,12 @@ #include "AVReceiverDevice.h" #include "VoipMsSMSClient.h" #include "SystemTrayManager.h" +#include "SettingsWindow.h" +#include "ProgramSettings.h" -class CMasterCtrl +class CMasterCtrl : public QObject { + Q_OBJECT public: CMasterCtrl(); ~CMasterCtrl(); @@ -18,10 +21,23 @@ public: CAVReceiverDevice *mAVReceiverDevice; CVoipMsSMSClient *mVoipMsSMSClient; CSystemTrayManager *mSystemTrayManager; + CSettingsWindow *mSettingsWindow; + CProgramSettings mSettingsManager; + + unsigned int QuitApplicationRequest(); + unsigned int ShowSettingsWindowRequest(); + unsigned int FetchDIDsRequest(QString Username, QString Password); + unsigned int SaveSettings(CSettings *Settings); + unsigned int SettingsWindowClosed(); + + +private: + + CSettings mMasterCtrlSettings; }; #endif // MASTERCTRL_H diff --git a/Sources/ProgramSettings.cpp b/Sources/ProgramSettings.cpp new file mode 100644 index 0000000..806bdad --- /dev/null +++ b/Sources/ProgramSettings.cpp @@ -0,0 +1,146 @@ +#include "ProgramSettings.h" + +CProgramSettings::CProgramSettings() +{ + +} + + +unsigned int CProgramSettings::LoadSettings(CSettings* Settings) +{ + QFile* SettingsFile = new QFile("./Configuration/Settings.mcs"); + if(SettingsFile) + { + if(SettingsFile->open(QIODevice::ReadOnly | QIODevice::Unbuffered) == false) + { + LoadDefaultSettings(Settings); + SaveSettings(Settings); + return RET_ERROR; + } + } + else + { + LoadDefaultSettings(Settings); + return RET_ERROR; + } + + QDataStream * InputStream = new QDataStream(SettingsFile); + + quint32 MagicNbr;// = 0xBAADCAFE; + + *InputStream >> MagicNbr; + + if(MagicNbr != 0xBAADCAFE) + { + LoadDefaultSettings(Settings); + return RET_ERROR; + } + + *InputStream >> *Settings; + + SettingsFile->close(); + delete SettingsFile; + delete InputStream; + + return RET_OK; +} + +void CProgramSettings::LoadDefaultSettings(CSettings *Settings) +{ + Settings->mVoipMSSettings.mDefaultDID = "555555555"; + Settings->mVoipMSSettings.mPassword = "Voip.ms Password"; + Settings->mVoipMSSettings.mUsername = "Voip.ms Username"; + Settings->mVoipMSSettings.mStartDate = QDate::currentDate(); +} + +unsigned int CProgramSettings::SaveSettings(CSettings *SettingsData) +{ + QFile* SettingsFile = new QFile("./Configuration/Settings.mcs"); + if(SettingsFile) + { + if(SettingsFile->open(QIODevice::WriteOnly | QIODevice::Unbuffered) == false) + { + return RET_ERROR; + } + } + else + { + return RET_ERROR; + } + + QDataStream * OutputStream = new QDataStream(SettingsFile); + + quint32 MagicNbr = 0xBAADCAFE; + + *OutputStream << MagicNbr; + + *OutputStream << *SettingsData; + + SettingsFile->flush(); + SettingsFile->close(); + + delete SettingsFile; + delete OutputStream; + + return RET_OK; +} + + +QDataStream &operator<<(QDataStream &out, const CSettings &source) +{ + out << source.mVoipMSSettings; + + return out; +} + +QDataStream &operator>>(QDataStream &in, CSettings &dest) +{ + in >> dest.mVoipMSSettings; + + return in; +} + +QDataStream &operator<<(QDataStream &out, const CVoipMSSMSSettings &source) +{ + out << source.mDefaultDID + << source.mPassword + << source.mStartDate + << source.mUsername; + + return out; +} + +QDataStream &operator>>(QDataStream &in, CVoipMSSMSSettings &dest) +{ + in >> dest.mDefaultDID + >> dest.mPassword + >> dest.mStartDate + >> dest.mUsername; + + return in; +} + +CVoipMSSMSSettings& CVoipMSSMSSettings::operator=(const CVoipMSSMSSettings *source) +{ + if(source == this) + { + return *this; + } + + this->mDefaultDID = source->mDefaultDID; + this->mPassword = source->mPassword; + this->mStartDate = source->mStartDate; + this->mUsername = source->mUsername; + + return *this; +} + +CSettings& CSettings::operator =(const CSettings &source) +{ + if(this == &source) + { + return *this; + } + this->mVoipMSSettings = source.mVoipMSSettings; + return *this; +} diff --git a/Sources/ProgramSettings.h b/Sources/ProgramSettings.h new file mode 100644 index 0000000..d1625a3 --- /dev/null +++ b/Sources/ProgramSettings.h @@ -0,0 +1,54 @@ +#ifndef CPROGRAMSETTINGS_H +#define CPROGRAMSETTINGS_H + +#include "GlobalDefine.h" +#include +#include +#include +#include + + +class CVoipMSSMSSettings +{ +public: + QString mUsername; + QString mPassword; + QDate mStartDate; + QString mDefaultDID; + + CVoipMSSMSSettings &operator=(const CVoipMSSMSSettings *source); + +}; +QDataStream &operator<<(QDataStream &out, const CVoipMSSMSSettings &source); +QDataStream &operator>>(QDataStream &in, CVoipMSSMSSettings &dest); + + +class CSettings +{ +public: + CVoipMSSMSSettings mVoipMSSettings; + + CSettings &operator=(const CSettings &source); +}; + +QDataStream &operator<<(QDataStream &out, const CSettings &source); +QDataStream &operator>>(QDataStream &in, CSettings &dest); + +class CProgramSettings +{ +public: + CProgramSettings(); + unsigned int LoadSettings(CSettings*); + unsigned int SaveSettings(CSettings *SettingsData); + +private: + + void LoadDefaultSettings(CSettings* Settings); + + + +}; + + + +#endif // CPROGRAMSETTINGS_H diff --git a/Sources/VoipSMS/CSMSMessage.h b/Sources/VoipSMS/CSMSMessage.h index c074389..8c39a5b 100644 --- a/Sources/VoipSMS/CSMSMessage.h +++ b/Sources/VoipSMS/CSMSMessage.h @@ -17,7 +17,7 @@ class CSMSMessage public: CSMSMessage(); - qint64 mVOIPMSDatabaseID; + /*qint64*/QString mVOIPMSDatabaseID; QDateTime mDateTime; SmsType_t mType; QString mDID, mContact, mMessageText; diff --git a/Sources/VoipSMS/VoipMsSMSClient.cpp b/Sources/VoipSMS/VoipMsSMSClient.cpp index ec456f1..52aa8f5 100644 --- a/Sources/VoipSMS/VoipMsSMSClient.cpp +++ b/Sources/VoipSMS/VoipMsSMSClient.cpp @@ -3,7 +3,6 @@ #include #include #include -#include #include CVoipMsSMSClient::CVoipMsSMSClient() @@ -18,42 +17,132 @@ CVoipMsSMSClient::~CVoipMsSMSClient() mSMSMessagesList.clear(); } +unsigned int CVoipMsSMSClient::SetVOIPMsSettings(CVoipMSSMSSettings *SettingsData) +{ + mVOIPMsSettings = SettingsData; + + return RET_OK; +} + int CVoipMsSMSClient::DownloadSMSFromServer() { - QString Username = "jean-francois.martel@polymtl.ca"; - QString Password = "Pentium2"; - QString Method = "getSMS"; + 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())); + } + + SendSMSDownloadRequest(mCurStartDate,EndDate); + +// 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; + + return RET_OK; +} + +int CVoipMsSMSClient::SendSMSDownloadRequest(QDate StartDate, QDate EndDate) +{ + QString Url; + Url.clear(); + QTextStream UrlStream(&Url); + + qDebug() << "Sending request for dates from: " << StartDate.toString("yyyy-MM-dd") << " to: " << EndDate.toString("yyyy-MM-dd"); + + // 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=" << StartDate.toString("yyyy-MM-dd") << "&" + << "to=" << EndDate.toString("yyyy-MM-dd") << "&" + << "did=" << mVOIPMsSettings.mDefaultDID << "&" + << "limit=" << "50"; + + qDebug() << "Cmd: " << Url; + mVOIPMSSocket->get(QNetworkRequest(Url)); + mCurStartDate = EndDate; + + return RET_OK; +} + +unsigned int CVoipMsSMSClient::GetDidFromUserAccount(const QString username, const QString Password) +{ + QString Method = "getDIDsInfo"; QString Url; Url.clear(); QTextStream UrlStream(&Url); UrlStream << VOIP_MS_API_URL - << "api_username=" << Username << "&" + << "api_username=" << username << "&" << "api_password=" << Password << "&" - << "method=" << Method << "&" - << "from=" << "2015-10-01" << "&" - << "to=" << "2015-11-30" << "&" - << "did=" << "5143606463" << "&" - << "limit=" << "50"; + << "method=" << Method << "&"; - mVOIPMSSocket->get(QNetworkRequest(Url)); + mVOIPMSSocket->get(QNetworkRequest(Url)); - return RET_OK; + return RET_OK; } - void CVoipMsSMSClient::VoipServerReplyFinished(QNetworkReply *NetworkReply) { QByteArray Reply = NetworkReply->readAll(); QJsonDocument JsonReply = QJsonDocument::fromJson(Reply); QJsonObject JsonObject = JsonReply.object(); + QStringList Keys = JsonObject.keys(); if(JsonObject["status"].toString() == "success") { - QJsonArray SMSArray = JsonObject["sms"].toArray(); + if(Keys.contains("sms")) + { + QJsonArray SMSArray = JsonObject["sms"].toArray(); + SMSReceived(&SMSArray); + } + else if(Keys.contains("dids")) + { + QJsonArray DIDsInfoArray = JsonObject["dids"].toArray(); + DIDsInfoReceived(&DIDsInfoArray); + } + } + else + { + if(JsonObject["status"].toString() == "no_sms") + { + SMSReceived(0); + } + else + { + qDebug() << "Failed VOIP.MS reply: " << JsonObject["status"].toString(); + } + } +} - foreach (const QJsonValue & value, SMSArray) +unsigned int CVoipMsSMSClient::SMSReceived(QJsonArray *SMSArray) +{ + if(SMSArray != 0) + { + foreach (const QJsonValue & value, *SMSArray) { CSMSMessage NewMessage; QJsonObject obj = value.toObject(); @@ -62,28 +151,57 @@ void CVoipMsSMSClient::VoipServerReplyFinished(QNetworkReply *NetworkReply) NewMessage.mDID = obj["did"].toString(); NewMessage.mMessageText = obj["message"].toString(); NewMessage.mType = (SmsType_t)obj["type"].toString().toInt(); - NewMessage.mVOIPMSDatabaseID = (qint64)obj["type"].toString().toLongLong(); + NewMessage.mVOIPMSDatabaseID = obj["id"].toString();//.toLongLong(); mSMSMessagesList.append(NewMessage); qDebug() << obj["contact"].toString().toUtf8() << " : " << obj["message"].toString().toUtf8(); } - - qDebug("Added %d messages in the list",mSMSMessagesList.size()); } + if(mCurStartDate != QDate::currentDate()) + { + if(mSMSMessagesList.size() != 0) + { + mCurStartDate = QDate::fromString(mSMSMessagesList.last().mDateTime.toString("yyyy-MM-dd")); + } -// qDebug() << "Reply from server: " << Reply; - - - // [id] => 111120 - // [date] => 2014-03-30 10:24:16 - // [type] => 0 - // [did] => 8574884828 - // [contact] => 8577884821 - // [message] => hello+john + 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()); + return RET_OK; } +unsigned int CVoipMsSMSClient::DIDsInfoReceived(QJsonArray *DIDsInfoPtr) +{ + QStringList DIDs; + QJsonArray DIDsInfo = *DIDsInfoPtr; + + foreach (const QJsonValue & value, DIDsInfo) + { + QJsonObject DIDInfo = value.toObject(); + QString CurDID = DIDInfo["did"].toString(); + int SMSEnabled = DIDInfo["sms_enabled"].toString().toInt(); + if(SMSEnabled == 1) + { + DIDs.append(CurDID); + } + qDebug("DID: %s - SMSEnabled %d",CurDID.toUtf8().data(),SMSEnabled); + + emit DIDSFetched(DIDs); + } + + return RET_OK; +} //https://www.voip.ms/api/v1/rest.php?api_username=jean-francois.martel@polymtl.ca&api_password=Pentium2&method=getBalance&advanced=True diff --git a/Sources/VoipSMS/VoipMsSMSClient.h b/Sources/VoipSMS/VoipMsSMSClient.h index b53f611..5c9b616 100644 --- a/Sources/VoipSMS/VoipMsSMSClient.h +++ b/Sources/VoipSMS/VoipMsSMSClient.h @@ -7,10 +7,21 @@ #include "GlobalDefine.h" #include #include "CSMSMessage.h" +#include +#include +#include "ProgramSettings.h" #define VOIP_MS_API_URL "https://www.voip.ms/api/v1/rest.php?" +#define VOIP_MS_SMS_DATESPAN 90 -class CVoipMsSMSClient : QObject +enum VoipMSRetValues +{ + VOIPMS_RET_SUCCESS, + VOIPMS_RET_FAILED, + VOIPMS_RET_NO_DID_FOUND +}; + +class CVoipMsSMSClient : public QObject { Q_OBJECT public: @@ -18,14 +29,26 @@ public: virtual ~CVoipMsSMSClient(); int DownloadSMSFromServer(); + int SendSMSDownloadRequest(QDate StartDate, QDate EndDate); QList mSMSMessagesList; + unsigned int GetDidFromUserAccount(const QString username, const QString Password); + unsigned int SetVOIPMsSettings(CVoipMSSMSSettings *SettingsData); + private: QNetworkAccessManager *mVOIPMSSocket; + unsigned int SMSReceived(QJsonArray *sms); + unsigned int DIDsInfoReceived(QJsonArray *DIDsInfo); + + CVoipMSSMSSettings mVOIPMsSettings; + + QDate mCurStartDate; +signals: + void DIDSFetched(QStringList); public slots: void VoipServerReplyFinished(QNetworkReply*); diff --git a/Sources/main.cpp b/Sources/main.cpp index a98df80..5168806 100644 --- a/Sources/main.cpp +++ b/Sources/main.cpp @@ -38,6 +38,7 @@ int main(int argc, char *argv[]) QFont serifFont("Times", 10, QFont::Bold); QApplication::setFont(serifFont); + QApplication::setQuitOnLastWindowClosed(false); //Create program instance