mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
Preparation for audio calls, refactoring
This commit is contained in:
parent
fc8d3c6624
commit
17cca2e3cd
64
cdata.cpp
Normal file
64
cdata.cpp
Normal file
|
@ -0,0 +1,64 @@
|
|||
#include "cdata.h"
|
||||
|
||||
// CData
|
||||
|
||||
CData::CData(const QString &data, uint16_t byteSize)
|
||||
{
|
||||
cData = new uint8_t[byteSize];
|
||||
cDataSize = fromString(data, cData);
|
||||
}
|
||||
|
||||
CData::~CData()
|
||||
{
|
||||
delete[] cData;
|
||||
}
|
||||
|
||||
uint8_t* CData::data()
|
||||
{
|
||||
return cData;
|
||||
}
|
||||
|
||||
uint16_t CData::size()
|
||||
{
|
||||
return cDataSize;
|
||||
}
|
||||
|
||||
QString CData::toString(const uint8_t *cData, const uint16_t cDataSize)
|
||||
{
|
||||
return QString(QByteArray(reinterpret_cast<const char*>(cData), cDataSize).toHex()).toUpper();
|
||||
}
|
||||
|
||||
uint16_t CData::fromString(const QString& data, uint8_t* cData)
|
||||
{
|
||||
QByteArray arr = QByteArray::fromHex(data.toLower().toLatin1());
|
||||
memcpy(cData, reinterpret_cast<uint8_t*>(arr.data()), arr.size());
|
||||
return arr.size();
|
||||
}
|
||||
|
||||
|
||||
// CUserId
|
||||
|
||||
CUserId::CUserId(const QString &userId) :
|
||||
CData(userId, SIZE)
|
||||
{
|
||||
// intentionally left empty
|
||||
}
|
||||
|
||||
QString CUserId::toString(const uint8_t* cUserId)
|
||||
{
|
||||
return CData::toString(cUserId, SIZE);
|
||||
}
|
||||
|
||||
|
||||
// CFriendAddress
|
||||
|
||||
CFriendAddress::CFriendAddress(const QString &friendAddress) :
|
||||
CData(friendAddress, SIZE)
|
||||
{
|
||||
// intentionally left empty
|
||||
}
|
||||
|
||||
QString CFriendAddress::toString(const uint8_t *cFriendAddress)
|
||||
{
|
||||
return CData::toString(cFriendAddress, SIZE);
|
||||
}
|
51
cdata.h
Normal file
51
cdata.h
Normal file
|
@ -0,0 +1,51 @@
|
|||
#ifndef CDATA_H
|
||||
#define CDATA_H
|
||||
|
||||
#include <cstdint>
|
||||
#include <QString>
|
||||
#include "tox/tox.h"
|
||||
|
||||
class CData
|
||||
{
|
||||
public:
|
||||
uint8_t* data();
|
||||
uint16_t size();
|
||||
|
||||
protected:
|
||||
explicit CData(const QString& data, uint16_t byteSize);
|
||||
virtual ~CData();
|
||||
|
||||
static QString toString(const uint8_t* cData, const uint16_t cDataSize);
|
||||
|
||||
private:
|
||||
uint8_t* cData;
|
||||
uint16_t cDataSize;
|
||||
|
||||
static uint16_t fromString(const QString& userId, uint8_t* cData);
|
||||
};
|
||||
|
||||
class CUserId : public CData
|
||||
{
|
||||
public:
|
||||
explicit CUserId(const QString& userId);
|
||||
|
||||
static QString toString(const uint8_t *cUserId);
|
||||
|
||||
private:
|
||||
static const uint16_t SIZE = TOX_CLIENT_ID_SIZE;
|
||||
|
||||
};
|
||||
|
||||
class CFriendAddress : public CData
|
||||
{
|
||||
public:
|
||||
explicit CFriendAddress(const QString& friendAddress);
|
||||
|
||||
static QString toString(const uint8_t* cFriendAddress);
|
||||
|
||||
private:
|
||||
static const uint16_t SIZE = TOX_FRIEND_ADDRESS_SIZE;
|
||||
|
||||
};
|
||||
|
||||
#endif // CDATA_H
|
196
core.cpp
196
core.cpp
|
@ -15,6 +15,8 @@
|
|||
*/
|
||||
|
||||
#include "core.h"
|
||||
#include "cdata.h"
|
||||
#include "cstring.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <QDir>
|
||||
|
@ -31,6 +33,7 @@
|
|||
#define TOX_SAVE_INTERVAL 30*1000
|
||||
#define TOX_FILE_INTERVAL 20
|
||||
#define TOX_BOOTSTRAP_INTERVAL 10*1000
|
||||
#define TOXAV_MAX_CALLS 32
|
||||
|
||||
const QString Core::CONFIG_FILE_NAME = "tox_save";
|
||||
QList<ToxFile> Core::fileSendQueue;
|
||||
|
@ -58,10 +61,62 @@ Core::~Core()
|
|||
{
|
||||
if (tox) {
|
||||
saveConfiguration();
|
||||
toxav_kill(toxav);
|
||||
tox_kill(tox);
|
||||
}
|
||||
}
|
||||
|
||||
void Core::start()
|
||||
{
|
||||
tox = tox_new(1);
|
||||
if (tox == nullptr)
|
||||
{
|
||||
qCritical() << "Tox core failed to start";
|
||||
emit failedToStart();
|
||||
return;
|
||||
}
|
||||
|
||||
toxav = toxav_new(tox, TOXAV_MAX_CALLS);
|
||||
if (toxav == nullptr)
|
||||
{
|
||||
qCritical() << "Toxav core failed to start";
|
||||
emit failedToStart();
|
||||
return;
|
||||
}
|
||||
|
||||
loadConfiguration();
|
||||
|
||||
tox_callback_friend_request(tox, onFriendRequest, this);
|
||||
tox_callback_friend_message(tox, onFriendMessage, this);
|
||||
tox_callback_friend_action(tox, onAction, this);
|
||||
tox_callback_name_change(tox, onFriendNameChange, this);
|
||||
tox_callback_typing_change(tox, onFriendTypingChange, this);
|
||||
tox_callback_status_message(tox, onStatusMessageChanged, this);
|
||||
tox_callback_user_status(tox, onUserStatusChanged, this);
|
||||
tox_callback_connection_status(tox, onConnectionStatusChanged, this);
|
||||
tox_callback_group_invite(tox, onGroupInvite, this);
|
||||
tox_callback_group_message(tox, onGroupMessage, this);
|
||||
tox_callback_group_namelist_change(tox, onGroupNamelistChange, this);
|
||||
tox_callback_file_send_request(tox, onFileSendRequestCallback, this);
|
||||
tox_callback_file_control(tox, onFileControlCallback, this);
|
||||
tox_callback_file_data(tox, onFileDataCallback, this);
|
||||
|
||||
uint8_t friendAddress[TOX_FRIEND_ADDRESS_SIZE];
|
||||
tox_get_address(tox, friendAddress);
|
||||
|
||||
emit friendAddressGenerated(CFriendAddress::toString(friendAddress));
|
||||
|
||||
CString cUsername(Settings::getInstance().getUsername());
|
||||
tox_set_name(tox, cUsername.data(), cUsername.size());
|
||||
|
||||
CString cStatusMessage(Settings::getInstance().getStatusMessage());
|
||||
tox_set_status_message(tox, cStatusMessage.data(), cStatusMessage.size());
|
||||
|
||||
bootstrapDht();
|
||||
|
||||
toxTimer->start(tox_do_interval(tox));
|
||||
}
|
||||
|
||||
void Core::onBootstrapTimer()
|
||||
{
|
||||
if(!tox_isconnected(tox))
|
||||
|
@ -680,48 +735,6 @@ void Core::checkLastOnline(int friendId) {
|
|||
}
|
||||
}
|
||||
|
||||
void Core::start()
|
||||
{
|
||||
tox = tox_new(1);
|
||||
if (tox == nullptr) {
|
||||
qCritical() << "Core failed to start";
|
||||
emit failedToStart();
|
||||
return;
|
||||
}
|
||||
|
||||
loadConfiguration();
|
||||
|
||||
tox_callback_friend_request(tox, onFriendRequest, this);
|
||||
tox_callback_friend_message(tox, onFriendMessage, this);
|
||||
tox_callback_friend_action(tox, onAction, this);
|
||||
tox_callback_name_change(tox, onFriendNameChange, this);
|
||||
tox_callback_typing_change(tox, onFriendTypingChange, this);
|
||||
tox_callback_status_message(tox, onStatusMessageChanged, this);
|
||||
tox_callback_user_status(tox, onUserStatusChanged, this);
|
||||
tox_callback_connection_status(tox, onConnectionStatusChanged, this);
|
||||
tox_callback_group_invite(tox, onGroupInvite, this);
|
||||
tox_callback_group_message(tox, onGroupMessage, this);
|
||||
tox_callback_group_namelist_change(tox, onGroupNamelistChange, this);
|
||||
tox_callback_file_send_request(tox, onFileSendRequestCallback, this);
|
||||
tox_callback_file_control(tox, onFileControlCallback, this);
|
||||
tox_callback_file_data(tox, onFileDataCallback, this);
|
||||
|
||||
uint8_t friendAddress[TOX_FRIEND_ADDRESS_SIZE];
|
||||
tox_get_address(tox, friendAddress);
|
||||
|
||||
emit friendAddressGenerated(CFriendAddress::toString(friendAddress));
|
||||
|
||||
CString cUsername(Settings::getInstance().getUsername());
|
||||
tox_set_name(tox, cUsername.data(), cUsername.size());
|
||||
|
||||
CString cStatusMessage(Settings::getInstance().getStatusMessage());
|
||||
tox_set_status_message(tox, cStatusMessage.data(), cStatusMessage.size());
|
||||
|
||||
bootstrapDht();
|
||||
|
||||
toxTimer->start(tox_do_interval(tox));
|
||||
}
|
||||
|
||||
int Core::getGroupNumberPeers(int groupId) const
|
||||
{
|
||||
return tox_group_number_peers(tox, groupId);
|
||||
|
@ -768,105 +781,6 @@ int Core::joinGroupchat(int32_t friendnumber, uint8_t* friend_group_public_key)
|
|||
return tox_join_groupchat(tox, friendnumber, friend_group_public_key);
|
||||
}
|
||||
|
||||
// CData
|
||||
|
||||
Core::CData::CData(const QString &data, uint16_t byteSize)
|
||||
{
|
||||
cData = new uint8_t[byteSize];
|
||||
cDataSize = fromString(data, cData);
|
||||
}
|
||||
|
||||
Core::CData::~CData()
|
||||
{
|
||||
delete[] cData;
|
||||
}
|
||||
|
||||
uint8_t* Core::CData::data()
|
||||
{
|
||||
return cData;
|
||||
}
|
||||
|
||||
uint16_t Core::CData::size()
|
||||
{
|
||||
return cDataSize;
|
||||
}
|
||||
|
||||
QString Core::CData::toString(const uint8_t *cData, const uint16_t cDataSize)
|
||||
{
|
||||
return QString(QByteArray(reinterpret_cast<const char*>(cData), cDataSize).toHex()).toUpper();
|
||||
}
|
||||
|
||||
uint16_t Core::CData::fromString(const QString& data, uint8_t* cData)
|
||||
{
|
||||
QByteArray arr = QByteArray::fromHex(data.toLower().toLatin1());
|
||||
memcpy(cData, reinterpret_cast<uint8_t*>(arr.data()), arr.size());
|
||||
return arr.size();
|
||||
}
|
||||
|
||||
|
||||
// CUserId
|
||||
|
||||
Core::CUserId::CUserId(const QString &userId) :
|
||||
CData(userId, SIZE)
|
||||
{
|
||||
// intentionally left empty
|
||||
}
|
||||
|
||||
QString Core::CUserId::toString(const uint8_t* cUserId)
|
||||
{
|
||||
return CData::toString(cUserId, SIZE);
|
||||
}
|
||||
|
||||
|
||||
// CFriendAddress
|
||||
|
||||
Core::CFriendAddress::CFriendAddress(const QString &friendAddress) :
|
||||
CData(friendAddress, SIZE)
|
||||
{
|
||||
// intentionally left empty
|
||||
}
|
||||
|
||||
QString Core::CFriendAddress::toString(const uint8_t *cFriendAddress)
|
||||
{
|
||||
return CData::toString(cFriendAddress, SIZE);
|
||||
}
|
||||
|
||||
|
||||
// CString
|
||||
|
||||
Core::CString::CString(const QString& string)
|
||||
{
|
||||
cString = new uint8_t[string.length() * MAX_SIZE_OF_UTF8_ENCODED_CHARACTER]();
|
||||
cStringSize = fromString(string, cString);
|
||||
}
|
||||
|
||||
Core::CString::~CString()
|
||||
{
|
||||
delete[] cString;
|
||||
}
|
||||
|
||||
uint8_t* Core::CString::data()
|
||||
{
|
||||
return cString;
|
||||
}
|
||||
|
||||
uint16_t Core::CString::size()
|
||||
{
|
||||
return cStringSize;
|
||||
}
|
||||
|
||||
QString Core::CString::toString(const uint8_t* cString, uint16_t cStringSize)
|
||||
{
|
||||
return QString::fromUtf8(reinterpret_cast<const char*>(cString), cStringSize);
|
||||
}
|
||||
|
||||
uint16_t Core::CString::fromString(const QString& string, uint8_t* cString)
|
||||
{
|
||||
QByteArray byteArray = QByteArray(string.toUtf8());
|
||||
memcpy(cString, reinterpret_cast<uint8_t*>(byteArray.data()), byteArray.size());
|
||||
return byteArray.size();
|
||||
}
|
||||
|
||||
void Core::quitGroupChat(int groupId) const
|
||||
{
|
||||
tox_del_groupchat(tox, groupId);
|
||||
|
|
143
core.h
143
core.h
|
@ -20,6 +20,7 @@
|
|||
#include "status.h"
|
||||
|
||||
#include <tox/tox.h>
|
||||
#include <tox/toxav.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <QDateTime>
|
||||
|
@ -76,108 +77,6 @@ public:
|
|||
explicit Core();
|
||||
~Core();
|
||||
|
||||
private:
|
||||
static void onFriendRequest(Tox* tox, const uint8_t* cUserId, const uint8_t* cMessage, uint16_t cMessageSize, void* core);
|
||||
static void onFriendMessage(Tox* tox, int friendId, uint8_t* cMessage, uint16_t cMessageSize, void* core);
|
||||
static void onFriendNameChange(Tox* tox, int friendId, uint8_t* cName, uint16_t cNameSize, void* core);
|
||||
static void onFriendTypingChange(Tox* tox, int friendId, uint8_t isTyping, void* core);
|
||||
static void onStatusMessageChanged(Tox* tox, int friendId, uint8_t* cMessage, uint16_t cMessageSize, void* core);
|
||||
static void onUserStatusChanged(Tox* tox, int friendId, uint8_t userstatus, void* core);
|
||||
static void onConnectionStatusChanged(Tox* tox, int friendId, uint8_t status, void* core);
|
||||
static void onAction(Tox* tox, int friendId, uint8_t* cMessage, uint16_t cMessageSize, void* core);
|
||||
static void onGroupInvite(Tox *tox, int friendnumber, uint8_t *group_public_key, void *userdata);
|
||||
static void onGroupMessage(Tox *tox, int groupnumber, int friendgroupnumber, uint8_t * message, uint16_t length, void *userdata);
|
||||
static void onGroupNamelistChange(Tox *tox, int groupnumber, int peernumber, uint8_t change, void *userdata);
|
||||
static void onFileSendRequestCallback(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint64_t filesize,
|
||||
uint8_t *filename, uint16_t filename_length, void *userdata);
|
||||
static void onFileControlCallback(Tox *tox, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber,
|
||||
uint8_t control_type, uint8_t *data, uint16_t length, void *core);
|
||||
static void onFileDataCallback(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t *data, uint16_t length, void *userdata);
|
||||
|
||||
void checkConnection();
|
||||
void onBootstrapTimer();
|
||||
|
||||
void loadConfiguration();
|
||||
void saveConfiguration();
|
||||
void loadFriends();
|
||||
static void sendAllFileData(Core* core, ToxFile* file);
|
||||
|
||||
static void removeFileFromQueue(bool sendQueue, int friendId, int fileId);
|
||||
|
||||
void checkLastOnline(int friendId);
|
||||
|
||||
Tox* tox;
|
||||
QTimer *toxTimer, *saveTimer, *fileTimer, *bootstrapTimer;
|
||||
QList<DhtServer> dhtServerList;
|
||||
int dhtServerId;
|
||||
static QList<ToxFile> fileSendQueue, fileRecvQueue;
|
||||
|
||||
static const QString CONFIG_FILE_NAME;
|
||||
|
||||
class CData
|
||||
{
|
||||
public:
|
||||
uint8_t* data();
|
||||
uint16_t size();
|
||||
|
||||
protected:
|
||||
explicit CData(const QString& data, uint16_t byteSize);
|
||||
virtual ~CData();
|
||||
|
||||
static QString toString(const uint8_t* cData, const uint16_t cDataSize);
|
||||
|
||||
private:
|
||||
uint8_t* cData;
|
||||
uint16_t cDataSize;
|
||||
|
||||
static uint16_t fromString(const QString& userId, uint8_t* cData);
|
||||
};
|
||||
|
||||
class CUserId : public CData
|
||||
{
|
||||
public:
|
||||
explicit CUserId(const QString& userId);
|
||||
|
||||
static QString toString(const uint8_t *cUserId);
|
||||
|
||||
private:
|
||||
static const uint16_t SIZE = TOX_CLIENT_ID_SIZE;
|
||||
|
||||
};
|
||||
|
||||
class CFriendAddress : public CData
|
||||
{
|
||||
public:
|
||||
explicit CFriendAddress(const QString& friendAddress);
|
||||
|
||||
static QString toString(const uint8_t* cFriendAddress);
|
||||
|
||||
private:
|
||||
static const uint16_t SIZE = TOX_FRIEND_ADDRESS_SIZE;
|
||||
|
||||
};
|
||||
|
||||
class CString
|
||||
{
|
||||
public:
|
||||
explicit CString(const QString& string);
|
||||
~CString();
|
||||
|
||||
uint8_t* data();
|
||||
uint16_t size();
|
||||
|
||||
static QString toString(const uint8_t* cMessage, const uint16_t cMessageSize);
|
||||
|
||||
private:
|
||||
const static int MAX_SIZE_OF_UTF8_ENCODED_CHARACTER = 4;
|
||||
|
||||
uint8_t* cString;
|
||||
uint16_t cStringSize;
|
||||
|
||||
static uint16_t fromString(const QString& message, uint8_t* cMessage);
|
||||
};
|
||||
|
||||
public:
|
||||
int getGroupNumberPeers(int groupId) const;
|
||||
QString getGroupPeerName(int groupId, int peerId) const;
|
||||
QList<QString> getGroupPeerNames(int groupId) const;
|
||||
|
@ -266,6 +165,46 @@ signals:
|
|||
void fileTransferFinished(ToxFile file);
|
||||
void fileTransferPaused(int FriendId, int FileNum, ToxFile::FileDirection direction);
|
||||
void fileTransferInfo(int FriendId, int FileNum, int Filesize, int BytesSent, ToxFile::FileDirection direction);
|
||||
|
||||
private:
|
||||
static void onFriendRequest(Tox* tox, const uint8_t* cUserId, const uint8_t* cMessage, uint16_t cMessageSize, void* core);
|
||||
static void onFriendMessage(Tox* tox, int friendId, uint8_t* cMessage, uint16_t cMessageSize, void* core);
|
||||
static void onFriendNameChange(Tox* tox, int friendId, uint8_t* cName, uint16_t cNameSize, void* core);
|
||||
static void onFriendTypingChange(Tox* tox, int friendId, uint8_t isTyping, void* core);
|
||||
static void onStatusMessageChanged(Tox* tox, int friendId, uint8_t* cMessage, uint16_t cMessageSize, void* core);
|
||||
static void onUserStatusChanged(Tox* tox, int friendId, uint8_t userstatus, void* core);
|
||||
static void onConnectionStatusChanged(Tox* tox, int friendId, uint8_t status, void* core);
|
||||
static void onAction(Tox* tox, int friendId, uint8_t* cMessage, uint16_t cMessageSize, void* core);
|
||||
static void onGroupInvite(Tox *tox, int friendnumber, uint8_t *group_public_key, void *userdata);
|
||||
static void onGroupMessage(Tox *tox, int groupnumber, int friendgroupnumber, uint8_t * message, uint16_t length, void *userdata);
|
||||
static void onGroupNamelistChange(Tox *tox, int groupnumber, int peernumber, uint8_t change, void *userdata);
|
||||
static void onFileSendRequestCallback(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint64_t filesize,
|
||||
uint8_t *filename, uint16_t filename_length, void *userdata);
|
||||
static void onFileControlCallback(Tox *tox, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber,
|
||||
uint8_t control_type, uint8_t *data, uint16_t length, void *core);
|
||||
static void onFileDataCallback(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint8_t *data, uint16_t length, void *userdata);
|
||||
|
||||
void checkConnection();
|
||||
void onBootstrapTimer();
|
||||
|
||||
void loadConfiguration();
|
||||
void saveConfiguration();
|
||||
void loadFriends();
|
||||
static void sendAllFileData(Core* core, ToxFile* file);
|
||||
|
||||
static void removeFileFromQueue(bool sendQueue, int friendId, int fileId);
|
||||
|
||||
void checkLastOnline(int friendId);
|
||||
|
||||
private:
|
||||
Tox* tox;
|
||||
ToxAv* toxav;
|
||||
QTimer *toxTimer, *saveTimer, *fileTimer, *bootstrapTimer;
|
||||
QList<DhtServer> dhtServerList;
|
||||
int dhtServerId;
|
||||
static QList<ToxFile> fileSendQueue, fileRecvQueue;
|
||||
|
||||
static const QString CONFIG_FILE_NAME;
|
||||
};
|
||||
|
||||
#endif // CORE_HPP
|
||||
|
|
34
cstring.cpp
Normal file
34
cstring.cpp
Normal file
|
@ -0,0 +1,34 @@
|
|||
#include "cstring.h"
|
||||
|
||||
CString::CString(const QString& string)
|
||||
{
|
||||
cString = new uint8_t[string.length() * MAX_SIZE_OF_UTF8_ENCODED_CHARACTER]();
|
||||
cStringSize = fromString(string, cString);
|
||||
}
|
||||
|
||||
CString::~CString()
|
||||
{
|
||||
delete[] cString;
|
||||
}
|
||||
|
||||
uint8_t* CString::data()
|
||||
{
|
||||
return cString;
|
||||
}
|
||||
|
||||
uint16_t CString::size()
|
||||
{
|
||||
return cStringSize;
|
||||
}
|
||||
|
||||
QString CString::toString(const uint8_t* cString, uint16_t cStringSize)
|
||||
{
|
||||
return QString::fromUtf8(reinterpret_cast<const char*>(cString), cStringSize);
|
||||
}
|
||||
|
||||
uint16_t CString::fromString(const QString& string, uint8_t* cString)
|
||||
{
|
||||
QByteArray byteArray = QByteArray(string.toUtf8());
|
||||
memcpy(cString, reinterpret_cast<uint8_t*>(byteArray.data()), byteArray.size());
|
||||
return byteArray.size();
|
||||
}
|
26
cstring.h
Normal file
26
cstring.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
#ifndef CSTRING_H
|
||||
#define CSTRING_H
|
||||
|
||||
#include <cstdint>
|
||||
#include <QString>
|
||||
|
||||
class CString
|
||||
{
|
||||
public:
|
||||
explicit CString(const QString& string);
|
||||
~CString();
|
||||
|
||||
uint8_t* data();
|
||||
uint16_t size();
|
||||
|
||||
static QString toString(const uint8_t* cMessage, const uint16_t cMessageSize);
|
||||
|
||||
private:
|
||||
const static int MAX_SIZE_OF_UTF8_ENCODED_CHARACTER = 4;
|
||||
|
||||
uint8_t* cString;
|
||||
uint16_t cStringSize;
|
||||
|
||||
static uint16_t fromString(const QString& message, uint8_t* cMessage);
|
||||
};
|
||||
#endif // CSTRING_H
|
|
@ -1,6 +1,6 @@
|
|||
#include "friend.h"
|
||||
#include "friendlist.h"
|
||||
#include "friendwidget.h"
|
||||
#include "widget/friendwidget.h"
|
||||
|
||||
Friend::Friend(int FriendId, QString UserId)
|
||||
: friendId(FriendId), userId(UserId)
|
||||
|
|
2
friend.h
2
friend.h
|
@ -2,7 +2,7 @@
|
|||
#define FRIEND_H
|
||||
|
||||
#include <QString>
|
||||
#include "chatform.h"
|
||||
#include "widget/form/chatform.h"
|
||||
|
||||
class FriendWidget;
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#include "group.h"
|
||||
#include "groupwidget.h"
|
||||
#include "groupchatform.h"
|
||||
#include "widget/groupwidget.h"
|
||||
#include "widget/form/groupchatform.h"
|
||||
#include "friendlist.h"
|
||||
#include "friend.h"
|
||||
#include "widget.h"
|
||||
#include "widget/widget.h"
|
||||
#include "core.h"
|
||||
#include <QDebug>
|
||||
|
||||
|
|
90
toxgui.pro
90
toxgui.pro
|
@ -11,51 +11,29 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
|||
TARGET = toxgui
|
||||
TEMPLATE = app
|
||||
|
||||
|
||||
SOURCES += main.cpp\
|
||||
widget.cpp \
|
||||
core.cpp \
|
||||
status.cpp \
|
||||
settings.cpp \
|
||||
addfriendform.cpp \
|
||||
settingsform.cpp \
|
||||
editablelabelwidget.cpp \
|
||||
copyableelidelabel.cpp \
|
||||
elidelabel.cpp \
|
||||
esclineedit.cpp \
|
||||
friendlist.cpp \
|
||||
friend.cpp \
|
||||
chatform.cpp \
|
||||
chattextedit.cpp \
|
||||
friendrequestdialog.cpp \
|
||||
friendwidget.cpp \
|
||||
groupwidget.cpp \
|
||||
group.cpp \
|
||||
grouplist.cpp \
|
||||
groupchatform.cpp \
|
||||
filetransfertwidget.cpp
|
||||
|
||||
HEADERS += widget.h \
|
||||
core.h \
|
||||
status.h \
|
||||
settings.h \
|
||||
addfriendform.h \
|
||||
settingsform.h \
|
||||
editablelabelwidget.h \
|
||||
elidelabel.h \
|
||||
copyableelidelabel.h \
|
||||
esclineedit.h \
|
||||
friendlist.h \
|
||||
HEADERS += widget/form/addfriendform.h \
|
||||
widget/form/chatform.h \
|
||||
widget/form/groupchatform.h \
|
||||
widget/form/settingsform.h \
|
||||
widget/tool/chattextedit.h \
|
||||
widget/tool/copyableelidelabel.h \
|
||||
widget/tool/editablelabelwidget.h \
|
||||
widget/tool/elidelabel.h \
|
||||
widget/tool/esclineedit.h \
|
||||
widget/tool/friendrequestdialog.h \
|
||||
widget/filetransfertwidget.h \
|
||||
widget/friendwidget.h \
|
||||
widget/groupwidget.h \
|
||||
widget/widget.h \
|
||||
friend.h \
|
||||
chatform.h \
|
||||
chattextedit.h \
|
||||
friendrequestdialog.h \
|
||||
friendwidget.h \
|
||||
groupwidget.h \
|
||||
group.h \
|
||||
grouplist.h \
|
||||
groupchatform.h \
|
||||
filetransfertwidget.h
|
||||
settings.h \
|
||||
status.h \
|
||||
core.h \
|
||||
friendlist.h \
|
||||
cdata.h \
|
||||
cstring.h
|
||||
|
||||
FORMS += widget.ui
|
||||
|
||||
|
@ -64,4 +42,30 @@ CONFIG += c++11
|
|||
RESOURCES += \
|
||||
res.qrc
|
||||
|
||||
LIBS += -ltoxcore -lsodium
|
||||
LIBS += -ltoxcore -ltoxav -lsodium
|
||||
|
||||
SOURCES += \
|
||||
widget/form/addfriendform.cpp \
|
||||
widget/form/chatform.cpp \
|
||||
widget/form/groupchatform.cpp \
|
||||
widget/form/settingsform.cpp \
|
||||
widget/tool/chattextedit.cpp \
|
||||
widget/tool/copyableelidelabel.cpp \
|
||||
widget/tool/editablelabelwidget.cpp \
|
||||
widget/tool/elidelabel.cpp \
|
||||
widget/tool/esclineedit.cpp \
|
||||
widget/tool/friendrequestdialog.cpp \
|
||||
widget/filetransfertwidget.cpp \
|
||||
widget/friendwidget.cpp \
|
||||
widget/groupwidget.cpp \
|
||||
widget/widget.cpp \
|
||||
core.cpp \
|
||||
friend.cpp \
|
||||
friendlist.cpp \
|
||||
group.cpp \
|
||||
grouplist.cpp \
|
||||
main.cpp \
|
||||
settings.cpp \
|
||||
status.cpp \
|
||||
cdata.cpp \
|
||||
cstring.cpp
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#include "chatform.h"
|
||||
#include "friend.h"
|
||||
#include "friendwidget.h"
|
||||
#include "widget.h"
|
||||
#include "filetransfertwidget.h"
|
||||
#include "widget/friendwidget.h"
|
||||
#include "widget/widget.h"
|
||||
#include "widget/filetransfertwidget.h"
|
||||
#include <QFont>
|
||||
#include <QTime>
|
||||
#include <QScrollBar>
|
||||
|
@ -17,7 +17,7 @@ ChatForm::ChatForm(Friend* chatFriend)
|
|||
headTextLayout = new QVBoxLayout(), mainLayout = new QVBoxLayout();
|
||||
mainChatLayout = new QGridLayout();
|
||||
msgEdit = new ChatTextEdit();
|
||||
sendButton = new QPushButton(), fileButton = new QPushButton();
|
||||
sendButton = new QPushButton(), fileButton = new QPushButton(), callButton = new QPushButton();
|
||||
chatArea = new QScrollArea();
|
||||
|
||||
QFont bold;
|
||||
|
@ -48,6 +48,12 @@ ChatForm::ChatForm(Friend* chatFriend)
|
|||
fileButton->setAutoFillBackground(true);
|
||||
fileButton->setIconSize(QSize(20,20));
|
||||
fileButton->setFixedSize(50,40);
|
||||
callButton->setIcon(QIcon("img/button icons/call_2x.png"));
|
||||
callButton->setFlat(true);
|
||||
callButton->setPalette(toxgreen);
|
||||
callButton->setAutoFillBackground(true);
|
||||
callButton->setIconSize(QSize(20,20));
|
||||
callButton->setFixedSize(50,40);
|
||||
|
||||
main->setLayout(mainLayout);
|
||||
mainLayout->addWidget(chatArea);
|
||||
|
@ -61,6 +67,7 @@ ChatForm::ChatForm(Friend* chatFriend)
|
|||
headLayout->addWidget(avatar);
|
||||
headLayout->addLayout(headTextLayout);
|
||||
headLayout->addStretch();
|
||||
headLayout->addWidget(callButton);
|
||||
headLayout->addWidget(fileButton);
|
||||
|
||||
headTextLayout->addStretch();
|
||||
|
@ -248,3 +255,13 @@ void ChatForm::onFileRecvRequest(ToxFile file)
|
|||
connect(Widget::getInstance()->getCore(), &Core::fileTransferCancelled, fileTrans, &FileTransfertWidget::onFileTransferCancelled);
|
||||
connect(Widget::getInstance()->getCore(), &Core::fileTransferFinished, fileTrans, &FileTransfertWidget::onFileTransferFinished);
|
||||
}
|
||||
|
||||
void ChatForm::onCallReceived()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void ChatForm::onCallTriggered()
|
||||
{
|
||||
|
||||
}
|
|
@ -10,7 +10,7 @@
|
|||
#include <QScrollArea>
|
||||
#include <QTime>
|
||||
|
||||
#include "chattextedit.h"
|
||||
#include "widget/tool/chattextedit.h"
|
||||
#include "ui_widget.h"
|
||||
#include "core.h"
|
||||
|
||||
|
@ -34,16 +34,19 @@ public:
|
|||
|
||||
signals:
|
||||
void sendMessage(int, QString);
|
||||
void sendFile(int32_t, QString, QByteArray);
|
||||
void sendFile(int32_t friendId, QString, QByteArray);
|
||||
void startCall(int friendId);
|
||||
|
||||
public slots:
|
||||
void startFileSend(ToxFile file);
|
||||
void onFileRecvRequest(ToxFile file);
|
||||
void onCallReceived();
|
||||
|
||||
private slots:
|
||||
void onSendTriggered();
|
||||
void onAttachClicked();
|
||||
void onSliderRangeChanged();
|
||||
void onCallTriggered();
|
||||
|
||||
private:
|
||||
Friend* f;
|
||||
|
@ -52,7 +55,7 @@ private:
|
|||
QGridLayout *mainChatLayout;
|
||||
QLabel *avatar, *name, *statusMessage;
|
||||
ChatTextEdit *msgEdit;
|
||||
QPushButton *sendButton, *fileButton;
|
||||
QPushButton *sendButton, *fileButton, *callButton;
|
||||
QScrollArea *chatArea;
|
||||
QWidget *main, *head, *chatAreaWidget;
|
||||
QString previousName;
|
|
@ -1,7 +1,7 @@
|
|||
#include "groupchatform.h"
|
||||
#include "group.h"
|
||||
#include "groupwidget.h"
|
||||
#include "widget.h"
|
||||
#include "widget/groupwidget.h"
|
||||
#include "widget/widget.h"
|
||||
#include "friend.h"
|
||||
#include "friendlist.h"
|
||||
#include <QFont>
|
|
@ -10,7 +10,7 @@
|
|||
#include <QScrollArea>
|
||||
#include <QTime>
|
||||
|
||||
#include "chattextedit.h"
|
||||
#include "widget/tool/chattextedit.h"
|
||||
#include "ui_widget.h"
|
||||
|
||||
// Spacing in px inserted when the author of the last message changes
|
|
@ -3,12 +3,12 @@
|
|||
#include "settings.h"
|
||||
#include "friend.h"
|
||||
#include "friendlist.h"
|
||||
#include "friendrequestdialog.h"
|
||||
#include "friendwidget.h"
|
||||
#include "widget/tool/friendrequestdialog.h"
|
||||
#include "widget/friendwidget.h"
|
||||
#include "grouplist.h"
|
||||
#include "group.h"
|
||||
#include "groupwidget.h"
|
||||
#include "groupchatform.h"
|
||||
#include "widget/groupwidget.h"
|
||||
#include "widget/form/groupchatform.h"
|
||||
#include <QMessageBox>
|
||||
#include <QDebug>
|
||||
|
|
@ -5,8 +5,8 @@
|
|||
#include <QWidget>
|
||||
#include <QString>
|
||||
#include "core.h"
|
||||
#include "addfriendform.h"
|
||||
#include "settingsform.h"
|
||||
#include "widget/form/addfriendform.h"
|
||||
#include "widget/form/settingsform.h"
|
||||
|
||||
namespace Ui {
|
||||
class Widget;
|
Loading…
Reference in New Issue
Block a user