Skip to content
Snippets Groups Projects
Commit 35a50e59 authored by Nicolas Jager's avatar Nicolas Jager Committed by Anthony Léonard
Browse files

stubs for data transfer


- this patch is a stub, it show signals and slots connected from
  the daemon to the client.

- each ConversationModel own a TransfertModel.

- add (stub) sendFile and acceptFile to ConversationModel.

Change-Id: Ie53db55e66f466f73644e4119ec1fd25336ab7ae
Reviewed-by: default avatarAnthony Léonard <anthony.leonard@savoirfairelinux.com>
parent eeb42c0f
Branches
No related tags found
No related merge requests found
...@@ -148,13 +148,17 @@ public: ...@@ -148,13 +148,17 @@ public:
*/ */
void deleteObsoleteHistory(int date); void deleteObsoleteHistory(int date);
void sendFile(const std::string& uid, const std::string& path, const std::string& filename);
void acceptFile(const std::string& uid, uint64_t interactionId);
Q_SIGNALS: Q_SIGNALS:
/** /**
* Emitted when a conversation receives a new interaction * Emitted when a conversation receives a new interaction
* @param uid of msg * @param uid of msg
* @param msg * @param msg
*/ */
void newUnreadMessage(const std::string& uid, uint64_t msgId, const interaction::Info& msg) const; void newUnreadMessage(const std::string& uid, uint64_t msgId, const interaction::Info& msg) const; // [jn] rendre cette fonction plus générique en remplaçant message par interaction
/** /**
* Emitted when an interaction got a new status * Emitted when an interaction got a new status
* @param convUid conversation which owns the interaction * @param convUid conversation which owns the interaction
......
...@@ -49,8 +49,7 @@ class LIB_EXPORT DataTransferModel : public QObject { ...@@ -49,8 +49,7 @@ class LIB_EXPORT DataTransferModel : public QObject {
public: public:
DataTransferModel(Database& database, DataTransferModel(Database& database,
const CallbacksHandler& callbacksHandler, const CallbacksHandler& callbacksHandler);
const api::BehaviorController& behaviorController);
~DataTransferModel(); ~DataTransferModel();
std::vector<std::string> transferIdList() const; std::vector<std::string> transferIdList() const;
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include "api/account.h" #include "api/account.h"
#include "api/lrc.h" #include "api/lrc.h"
#include "api/newaccountmodel.h" #include "api/newaccountmodel.h"
#include "api/datatransfer.h"
// Lrc // Lrc
#include "account.h" #include "account.h"
...@@ -30,6 +31,9 @@ ...@@ -30,6 +31,9 @@
#include "dbus/presencemanager.h" #include "dbus/presencemanager.h"
#include "namedirectory.h" #include "namedirectory.h"
// DRing
#include <datatransfer_interface.h>
namespace lrc namespace lrc
{ {
...@@ -109,6 +113,11 @@ CallbacksHandler::CallbacksHandler(const Lrc& parent) ...@@ -109,6 +113,11 @@ CallbacksHandler::CallbacksHandler(const Lrc& parent)
&CallManagerInterface::incomingMessage, &CallManagerInterface::incomingMessage,
this, this,
&CallbacksHandler::slotIncomingMessage); &CallbacksHandler::slotIncomingMessage);
connect(&ConfigurationManager::instance(),
&ConfigurationManagerInterface::dataTransferEvent,
this,
&CallbacksHandler::slotDataTransferEvent);
} }
CallbacksHandler::~CallbacksHandler() CallbacksHandler::~CallbacksHandler()
...@@ -272,4 +281,10 @@ CallbacksHandler::slotAccountMessageStatusChanged(const QString& accountId, ...@@ -272,4 +281,10 @@ CallbacksHandler::slotAccountMessageStatusChanged(const QString& accountId,
to.toStdString(), status); to.toStdString(), status);
} }
void
CallbacksHandler::slotDataTransferEvent(qulonglong dring_id, uint code)
{
emit incomingTransfer(-1, -1);
}
} // namespace lrc } // namespace lrc
...@@ -160,6 +160,8 @@ Q_SIGNALS: ...@@ -160,6 +160,8 @@ Q_SIGNALS:
const uint64_t id, const uint64_t id,
const std::string& to, int status); const std::string& to, int status);
void incomingTransfer(long long dring_id, uint code);
private Q_SLOTS: private Q_SLOTS:
/** /**
* Emit newAccountMessage * Emit newAccountMessage
...@@ -278,6 +280,8 @@ private Q_SLOTS: ...@@ -278,6 +280,8 @@ private Q_SLOTS:
const uint64_t id, const uint64_t id,
const QString& to, int status); const QString& to, int status);
void slotDataTransferEvent(qulonglong id, uint code);
private: private:
const api::Lrc& parent; const api::Lrc& parent;
}; };
......
...@@ -33,6 +33,8 @@ ...@@ -33,6 +33,8 @@
#include "api/newaccountmodel.h" #include "api/newaccountmodel.h"
#include "api/account.h" #include "api/account.h"
#include "api/call.h" #include "api/call.h"
#include "api/datatransfer.h"
#include "api/datatransfermodel.h"
#include "callbackshandler.h" #include "callbackshandler.h"
#include "authority/databasehelper.h" #include "authority/databasehelper.h"
...@@ -135,6 +137,7 @@ public: ...@@ -135,6 +137,7 @@ public:
const CallbacksHandler& callbacksHandler; const CallbacksHandler& callbacksHandler;
const std::string accountProfileId; const std::string accountProfileId;
const BehaviorController& behaviorController; const BehaviorController& behaviorController;
DataTransferModel dataTransferModel;
ConversationModel::ConversationQueue conversations; ///< non-filtered conversations ConversationModel::ConversationQueue conversations; ///< non-filtered conversations
ConversationModel::ConversationQueue filteredConversations; ConversationModel::ConversationQueue filteredConversations;
...@@ -211,6 +214,14 @@ public Q_SLOTS: ...@@ -211,6 +214,14 @@ public Q_SLOTS:
*/ */
void slotConferenceRemoved(const std::string& confId); void slotConferenceRemoved(const std::string& confId);
void slotIncomingTransfer(const std::string& uid,
const std::string& display_name,
const std::size_t size,
const std::size_t offset);
void slotTransferStatusChanged(const std::string& uid,
datatransfer::Status status);
}; };
ConversationModel::ConversationModel(const account::Info& owner, ConversationModel::ConversationModel(const account::Info& owner,
...@@ -652,6 +663,7 @@ ConversationModelPimpl::ConversationModelPimpl(const ConversationModel& linked, ...@@ -652,6 +663,7 @@ ConversationModelPimpl::ConversationModelPimpl(const ConversationModel& linked,
, typeFilter(profile::Type::INVALID) , typeFilter(profile::Type::INVALID)
, accountProfileId(database::getProfileId(db, linked.owner.profileInfo.uri)) , accountProfileId(database::getProfileId(db, linked.owner.profileInfo.uri))
, behaviorController(behaviorController) , behaviorController(behaviorController)
, dataTransferModel(db, callbacksHandler)
{ {
initConversations(); initConversations();
...@@ -699,6 +711,17 @@ ConversationModelPimpl::ConversationModelPimpl(const ConversationModel& linked, ...@@ -699,6 +711,17 @@ ConversationModelPimpl::ConversationModelPimpl(const ConversationModel& linked,
&CallbacksHandler::conferenceRemoved, &CallbacksHandler::conferenceRemoved,
this, this,
&ConversationModelPimpl::slotConferenceRemoved); &ConversationModelPimpl::slotConferenceRemoved);
connect(&dataTransferModel,
&DataTransferModel::incomingTransfer,
this,
&ConversationModelPimpl::slotIncomingTransfer);
connect(&dataTransferModel,
&DataTransferModel::transferStatusChanged,
this,
&ConversationModelPimpl::slotTransferStatusChanged);
} }
ConversationModelPimpl::~ConversationModelPimpl() ConversationModelPimpl::~ConversationModelPimpl()
...@@ -1202,6 +1225,43 @@ ConversationModelPimpl::getNumberOfUnreadMessagesFor(const std::string& uid) ...@@ -1202,6 +1225,43 @@ ConversationModelPimpl::getNumberOfUnreadMessagesFor(const std::string& uid)
database::countUnreadFromInteractions(db, uid); database::countUnreadFromInteractions(db, uid);
} }
void
ConversationModelPimpl::slotIncomingTransfer(const std::string& uid,
const std::string& display_name,
const std::size_t size,
const std::size_t offset)
{
emit linked.newUnreadMessage("", -1, {});
}
void
ConversationModelPimpl::slotTransferStatusChanged(const std::string& uid, datatransfer::Status status)
{
emit linked.interactionStatusUpdated("", -1, {});
}
void
ConversationModel::sendFile(const std::string& uid, const std::string& path, const std::string& filename)
{
auto conversationIdx = pimpl_->indexOf(uid);
if (conversationIdx != -1) {
auto& peerUri = pimpl_->conversations[conversationIdx].participants.front();
if (not peerUri.empty())
pimpl_->dataTransferModel.sendFile(owner.id.c_str(), peerUri.c_str(), path.c_str(), filename.c_str());
}
}
void
ConversationModel::acceptFile(const std::string& uid, uint64_t interactionId)
{
auto conversationIdx = pimpl_->indexOf(uid);
if (conversationIdx != -1) {
auto& dataTransferUid = pimpl_->dataTransferModel.transferIdList()[interactionId];
if (not dataTransferUid.empty())
pimpl_->dataTransferModel.acceptFile(dataTransferUid, "~", 0);
}
}
} // namespace lrc } // namespace lrc
#include "api/moc_conversationmodel.cpp" #include "api/moc_conversationmodel.cpp"
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
// LRC // LRC
#include "api/datatransfermodel.h" #include "api/datatransfermodel.h"
#include "api/behaviorcontroller.h"
#include "callbackshandler.h" #include "callbackshandler.h"
#include "database.h" #include "database.h"
...@@ -64,33 +63,29 @@ class DataTransferModel::Impl : public QObject ...@@ -64,33 +63,29 @@ class DataTransferModel::Impl : public QObject
public: public:
Impl(DataTransferModel& up_link, Impl(DataTransferModel& up_link,
Database& database, Database& database,
const CallbacksHandler& callbacksHandler, const CallbacksHandler& callbacksHandler);
const api::BehaviorController& behaviorController);
DataTransferModel& upLink; DataTransferModel& upLink;
std::map<DRing::DataTransferId, std::string> dring2lrcIdMap; std::map<DRing::DataTransferId, std::string> dring2lrcIdMap;
std::map<std::string, DRing::DataTransferId> lrc2dringIdMap; // stricly the reverse map of dring2lrcIdMap std::map<std::string, DRing::DataTransferId> lrc2dringIdMap; // stricly the reverse map of dring2lrcIdMap
Database& database; Database& database;
const CallbacksHandler& callbacksHandler; const CallbacksHandler& callbacksHandler;
const BehaviorController& behaviorController;
std::string registerTransferId(DRing::DataTransferId id); std::string registerTransferId(DRing::DataTransferId id);
public Q_SLOTS: public Q_SLOTS:
void slotDataTransferEvent(qulonglong id, uint code); void slotDataTransferEvent(long long dring_id, uint code);
}; };
DataTransferModel::Impl::Impl(DataTransferModel& up_link, DataTransferModel::Impl::Impl(DataTransferModel& up_link,
Database& database, Database& database,
const CallbacksHandler& callbacksHandler, const CallbacksHandler& callbacksHandler)
const api::BehaviorController& behaviorController)
: QObject {} : QObject {}
, behaviorController {behaviorController}
, callbacksHandler {callbacksHandler} , callbacksHandler {callbacksHandler}
, database {database} , database {database}
, upLink {up_link} , upLink {up_link}
{ {
connect(&ConfigurationManager::instance(), &ConfigurationManagerInterface::dataTransferEvent, connect(&callbacksHandler, &CallbacksHandler::incomingTransfer,
this, &DataTransferModel::Impl::slotDataTransferEvent); this, &DataTransferModel::Impl::slotDataTransferEvent);
} }
...@@ -110,26 +105,24 @@ DataTransferModel::Impl::registerTransferId(DRing::DataTransferId dring_id) ...@@ -110,26 +105,24 @@ DataTransferModel::Impl::registerTransferId(DRing::DataTransferId dring_id)
} }
void void
DataTransferModel::Impl::slotDataTransferEvent(qulonglong dring_id, uint code) DataTransferModel::Impl::slotDataTransferEvent(long long dring_id, uint code)
{ {
auto lrc_id = registerTransferId(dring_id);
auto event = DRing::DataTransferEventCode(code); auto event = DRing::DataTransferEventCode(code);
if (event == DRing::DataTransferEventCode::created) { if (event == DRing::DataTransferEventCode::created) {
auto info = static_cast<DataTransferInfo>(ConfigurationManager::instance().dataTransferInfo(dring_id)); auto info = static_cast<DataTransferInfo>(ConfigurationManager::instance().dataTransferInfo(dring_id));
if (!info.isOutgoing) { if (!info.isOutgoing) {
emit upLink.incomingTransfer(lrc_id, info.displayName.toStdString(), info.totalSize, info.bytesProgress); emit upLink.incomingTransfer("", "", 0, 0);
return; return;
} }
} }
emit upLink.transferStatusChanged(lrc_id, convertDataTransferEvent(event)); emit upLink.transferStatusChanged("", convertDataTransferEvent(event));
} }
DataTransferModel::DataTransferModel(Database& database, DataTransferModel::DataTransferModel(Database& database,
const CallbacksHandler& callbacksHandler, const CallbacksHandler& callbacksHandler)
const api::BehaviorController& behaviorController)
: QObject() : QObject()
, pimpl_ { std::make_unique<Impl>(*this, database, callbacksHandler, behaviorController) } , pimpl_ { std::make_unique<Impl>(*this, database, callbacksHandler) }
{} {}
DataTransferModel::~DataTransferModel() = default; DataTransferModel::~DataTransferModel() = default;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment