Skip to content

Commit

Permalink
Merge branch 'v1.17-dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
anthonybilinski committed Dec 2, 2019
2 parents 88d10b1 + 7be3277 commit f252816
Show file tree
Hide file tree
Showing 19 changed files with 121 additions and 52 deletions.
4 changes: 4 additions & 0 deletions res/io.github.qtox.qTox.appdata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@
<url type="homepage">https://qtox.github.io</url>
<update_contact>[email protected]</update_contact>
<project_group>qTox</project_group>
<content_rating type="oars-1.0">
<content_attribute id="social-chat">intense</content_attribute>
<content_attribute id="social-audio">intense</content_attribute>
</content_rating>
<releases>
​ <release version="1.16.3" date="2018-07-21"/>
</releases>
Expand Down
2 changes: 1 addition & 1 deletion src/core/corefile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,9 @@ void CoreFile::sendAvatarFile(uint32_t friendId, const QByteArray& data)
uint8_t *file_id = nullptr;
uint8_t *file_name = nullptr;
size_t nameLength = 0;
uint8_t avatarHash[TOX_HASH_LENGTH];
if (!data.isEmpty()) {
static_assert(TOX_HASH_LENGTH <= TOX_FILE_ID_LENGTH, "TOX_HASH_LENGTH > TOX_FILE_ID_LENGTH!");
uint8_t avatarHash[TOX_HASH_LENGTH];
tox_hash(avatarHash, (uint8_t*)data.data(), data.size());
filesize = data.size();
file_id = avatarHash;
Expand Down
3 changes: 2 additions & 1 deletion src/model/chatroom/friendchatroom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "src/model/dialogs/idialogsmanager.h"
#include "src/model/friend.h"
#include "src/model/group.h"
#include "src/model/status.h"
#include "src/persistence/settings.h"
#include "src/widget/contentdialog.h"

Expand Down Expand Up @@ -67,7 +68,7 @@ void FriendChatroom::setActive(bool _active)

bool FriendChatroom::canBeInvited() const
{
return frnd->isOnline();
return Status::isOnline(frnd->getStatus());
}

int FriendChatroom::getCircleId() const
Expand Down
3 changes: 2 additions & 1 deletion src/model/chatroom/groupchatroom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "src/model/dialogs/idialogsmanager.h"
#include "src/model/friend.h"
#include "src/model/group.h"
#include "src/model/status.h"
#include "src/persistence/settings.h"

GroupChatroom::GroupChatroom(Group* group, IDialogsManager* dialogsManager)
Expand Down Expand Up @@ -64,7 +65,7 @@ void GroupChatroom::inviteFriend(const ToxPk& pk)
const Friend* frnd = FriendList::findFriend(pk);
const auto friendId = frnd->getId();
const auto groupId = group->getId();
const auto canInvite = frnd->isOnline();
const auto canInvite = Status::isOnline(frnd->getStatus());

if (canInvite) {
Core::getInstance()->groupInviteFriend(friendId, groupId);
Expand Down
12 changes: 7 additions & 5 deletions src/model/friend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,15 @@ bool Friend::getEventFlag() const
void Friend::setStatus(Status::Status s)
{
if (friendStatus != s) {
auto oldStatus = friendStatus;
friendStatus = s;
emit statusChanged(friendPk, friendStatus);
if (!Status::isOnline(oldStatus) && Status::isOnline(friendStatus)) {
emit onlineOfflineChanged(friendPk, true);
} else if (Status::isOnline(oldStatus) && !Status::isOnline(friendStatus)) {
emit onlineOfflineChanged(friendPk, false);
}

}
}

Expand All @@ -162,11 +169,6 @@ Status::Status Friend::getStatus() const
return friendStatus;
}

bool Friend::isOnline() const
{
return friendStatus != Status::Status::Offline && friendStatus != Status::Status::Blocked;
}

bool Friend::useHistory() const
{
return true;
Expand Down
3 changes: 1 addition & 2 deletions src/model/friend.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,13 @@ class Friend : public Contact

void setStatus(Status::Status s);
Status::Status getStatus() const;
bool isOnline() const;

bool useHistory() const final;

signals:
void nameChanged(const ToxPk& friendId, const QString& name);
void aliasChanged(const ToxPk& friendId, QString alias);
void statusChanged(const ToxPk& friendId, Status::Status status);
void onlineOfflineChanged(const ToxPk& friendId, bool isOnline);
void statusMessageChanged(const ToxPk& friendId, const QString& message);
void loadChatHistory();

Expand Down
9 changes: 5 additions & 4 deletions src/model/friendmessagedispatcher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

#include "friendmessagedispatcher.h"
#include "src/persistence/settings.h"
#include "src/model/status.h"


namespace {
Expand Down Expand Up @@ -49,7 +50,7 @@ FriendMessageDispatcher::FriendMessageDispatcher(Friend& f_, MessageProcessor pr
, offlineMsgEngine(&f_, &messageSender_)
, processor(std::move(processor_))
{
connect(&f, &Friend::statusChanged, this, &FriendMessageDispatcher::onFriendStatusChange);
connect(&f, &Friend::onlineOfflineChanged, this, &FriendMessageDispatcher::onFriendOnlineOfflineChanged);
}

/**
Expand All @@ -69,7 +70,7 @@ FriendMessageDispatcher::sendMessage(bool isAction, const QString& content)

bool messageSent = false;

if (f.isOnline()) {
if (Status::isOnline(f.getStatus())) {
messageSent = sendMessageToCore(messageSender, f, message, receipt);
}

Expand Down Expand Up @@ -107,9 +108,9 @@ void FriendMessageDispatcher::onReceiptReceived(ReceiptNum receipt)
* @brief Handles status change for friend
* @note Parameters just to fit slot api
*/
void FriendMessageDispatcher::onFriendStatusChange(const ToxPk&, Status::Status)
void FriendMessageDispatcher::onFriendOnlineOfflineChanged(const ToxPk&, bool isOnline)
{
if (f.isOnline()) {
if (isOnline) {
offlineMsgEngine.deliverOfflineMsgs();
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/model/friendmessagedispatcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class FriendMessageDispatcher : public IMessageDispatcher
void onReceiptReceived(ReceiptNum receipt);
void clearOutgoingMessages();
private slots:
void onFriendStatusChange(const ToxPk& key, Status::Status status);
void onFriendOnlineOfflineChanged(const ToxPk& key, bool isOnline);

private:
Friend& f;
Expand Down
5 changes: 5 additions & 0 deletions src/model/status.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,4 +75,9 @@ namespace Status
return ":/img/status/" + statusSuffix + eventSuffix + ".svg";
}
}

bool isOnline(Status status)
{
return status != Status::Offline && status != Status::Blocked;
}
} // namespace Status
1 change: 1 addition & 0 deletions src/model/status.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ namespace Status
QString getIconPath(Status status, bool event = false);
QString getTitle(Status status);
QString getAssetSuffix(Status status);
bool isOnline(Status status);
}

#endif // STATUS_H
Loading

0 comments on commit f252816

Please sign in to comment.