diff --git a/src/Message.cpp b/src/Message.cpp
index e987cbc..9f686c8 100644
--- a/src/Message.cpp
+++ b/src/Message.cpp
@@ -1,257 +1,240 @@
/*
* Kaidan - A user-friendly XMPP client for every device!
*
* Copyright (C) 2016-2019 Kaidan developers and contributors
* (see the LICENSE file for a full list of copyright authors)
*
* Kaidan is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* In addition, as a special exception, the author of Kaidan gives
* permission to link the code of its release with the OpenSSL
* project's "OpenSSL" library (or with modified versions of it that
* use the same license as the "OpenSSL" library), and distribute the
* linked executables. You must obey the GNU General Public License in
* all respects for all of the code used other than "OpenSSL". If you
* modify this file, you may extend this exception to your version of
* the file, but you are not obligated to do so. If you do not wish to
* do so, delete this exception statement from your version.
*
* Kaidan is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Kaidan. If not, see .
*/
#include "Message.h"
#include
#include
static bool operator==(const QXmppStanza::Error &left, const QXmppStanza::Error &right) {
return left.code() == right.code()
&& left.text() == right.text()
&& left.condition() == right.condition()
&& left.type() == right.type();
}
static bool operator==(const QXmppElement &left, const QXmppElement &right) {
return left.sourceDomElement() == right.sourceDomElement()
&& left.attributeNames() == right.attributeNames()
&& left.tagName() == right.tagName()
&& left.value() == right.value();
}
static bool operator==(const QXmppExtendedAddress &left, const QXmppExtendedAddress &right) {
return left.description() == right.description()
&& left.jid() == right.jid()
&& left.type() == right.type()
&& left.isDelivered() == right.isDelivered();
}
static bool operator==(const QXmppStanza &left, const QXmppStanza &right) {
return left.to() == right.to()
&& left.from() == right.from()
&& left.id() == right.id()
&& left.lang() == right.lang()
&& left.error() == right.error()
&& left.extensions() == right.extensions()
&& left.extendedAddresses() == right.extendedAddresses()
&& left.isXmppStanza() == right.isXmppStanza();
}
static bool operator==(const QXmppMessage &left, const QXmppMessage &right) {
return operator==(static_cast(left), static_cast(right))
&& left.body() == right.body()
&& left.isAttentionRequested() == right.isAttentionRequested()
&& left.isReceiptRequested() == right.isReceiptRequested()
&& left.mucInvitationJid() == right.mucInvitationJid()
&& left.mucInvitationPassword() == right.mucInvitationPassword()
&& left.mucInvitationReason() == right.mucInvitationReason()
&& left.receiptId() == right.receiptId()
&& left.stamp() == right.stamp()
&& left.state() == right.state()
&& left.subject() == right.subject()
&& left.thread() == right.thread()
&& left.type() == right.type()
&& left.xhtml() == right.xhtml()
&& left.isMarkable() == right.isMarkable()
&& left.markedId() == right.markedId()
&& left.markedThread() == right.markedThread()
&& left.marker() == right.marker()
&& left.isPrivate() == right.isPrivate()
&& left.isXmppStanza() == right.isXmppStanza()
-#if (QXMPP_VERSION) >= QT_VERSION_CHECK(1, 0, 0)
&& left.outOfBandUrl() == right.outOfBandUrl()
-#endif
&& left.replaceId() == right.replaceId();
}
MessageType Message::mediaTypeFromMimeType(const QMimeType &type)
{
if (type.inherits("image/jpeg") || type.inherits("image/png") ||
type.inherits("image/gif"))
return MessageType::MessageImage;
if (type.inherits("audio/flac") || type.inherits("audio/mp4") ||
type.inherits("audio/ogg") || type.inherits("audio/wav") ||
type.inherits("audio/mpeg") || type.inherits("audio/webm"))
return MessageType::MessageAudio;
if (type.inherits("video/mpeg") || type.inherits("video/x-msvideo") ||
type.inherits("video/quicktime") || type.inherits("video/mp4") ||
type.inherits("video/x-matroska"))
return MessageType::MessageVideo;
if (type.inherits("text/plain"))
return MessageType::MessageDocument;
return MessageType::MessageFile;
}
bool Message::operator==(const Message &m) const
{
return ::operator==(static_cast(m), static_cast(*this))
&& m.mediaType() == mediaType()
&& m.sentByMe() == sentByMe()
&& m.isEdited() == isEdited()
&& m.isSent() == isSent()
&& m.isDelivered() == isDelivered()
-#if (QXMPP_VERSION) < QT_VERSION_CHECK(1, 0, 0)
- && m.outOfBandUrl() == outOfBandUrl()
-#endif
&& m.mediaLocation() == mediaLocation()
&& m.mediaContentType() == mediaContentType()
&& m.mediaLastModified() == mediaLastModified()
&& m.mediaSize() == mediaSize()
&& m.isSpoiler() == isSpoiler()
&& m.spoilerHint() == spoilerHint();
}
bool Message::operator!=(const Message &m) const
{
return !operator==(m);
}
MessageType Message::mediaType() const
{
return m_mediaType;
}
void Message::setMediaType(MessageType mediaType)
{
m_mediaType = mediaType;
}
bool Message::sentByMe() const
{
return m_sentByMe;
}
void Message::setSentByMe(bool sentByMe)
{
m_sentByMe = sentByMe;
}
bool Message::isEdited() const
{
return m_isEdited;
}
void Message::setIsEdited(bool isEdited)
{
m_isEdited = isEdited;
}
bool Message::isSent() const
{
return m_isSent;
}
void Message::setIsSent(bool isSent)
{
m_isSent = isSent;
}
bool Message::isDelivered() const
{
return m_isDelivered;
}
void Message::setIsDelivered(bool isDelivered)
{
m_isDelivered = isDelivered;
}
QString Message::mediaLocation() const
{
return m_mediaLocation;
}
void Message::setMediaLocation(const QString &mediaLocation)
{
m_mediaLocation = mediaLocation;
}
QString Message::mediaContentType() const
{
return m_mediaContentType;
}
void Message::setMediaContentType(const QString &mediaContentType)
{
m_mediaContentType = mediaContentType;
}
QDateTime Message::mediaLastModified() const
{
return m_mediaLastModified;
}
void Message::setMediaLastModified(const QDateTime &mediaLastModified)
{
m_mediaLastModified = mediaLastModified;
}
qint64 Message::mediaSize() const
{
return m_mediaSize;
}
void Message::setMediaSize(const qint64 &mediaSize)
{
m_mediaSize = mediaSize;
}
bool Message::isSpoiler() const
{
return m_isSpoiler;
}
void Message::setIsSpoiler(bool isSpoiler)
{
m_isSpoiler = isSpoiler;
}
QString Message::spoilerHint() const
{
return m_spoilerHint;
}
void Message::setSpoilerHint(const QString &spoilerHint)
{
m_spoilerHint = spoilerHint;
}
-
-#if (QXMPP_VERSION) < QT_VERSION_CHECK(1, 0, 0)
-QString Message::outOfBandUrl() const
-{
- return m_outOfBandUrl;
-}
-
-void Message::setOutOfBandUrl(const QString &outOfBandUrl)
-{
- m_outOfBandUrl = outOfBandUrl;
-}
-#endif
diff --git a/src/Message.h b/src/Message.h
index 46736ba..01404ab 100644
--- a/src/Message.h
+++ b/src/Message.h
@@ -1,156 +1,147 @@
/*
* Kaidan - A user-friendly XMPP client for every device!
*
* Copyright (C) 2016-2019 Kaidan developers and contributors
* (see the LICENSE file for a full list of copyright authors)
*
* Kaidan is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* In addition, as a special exception, the author of Kaidan gives
* permission to link the code of its release with the OpenSSL
* project's "OpenSSL" library (or with modified versions of it that
* use the same license as the "OpenSSL" library), and distribute the
* linked executables. You must obey the GNU General Public License in
* all respects for all of the code used other than "OpenSSL". If you
* modify this file, you may extend this exception to your version of
* the file, but you are not obligated to do so. If you do not wish to
* do so, delete this exception statement from your version.
*
* Kaidan is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Kaidan. If not, see .
*/
#ifndef MESSAGE_H
#define MESSAGE_H
#include
#include "Enums.h"
class QMimeType;
using namespace Enums;
/**
* @brief This class is used to load messages from the database and use them in
* the @c MessageModel. The class inherits from @c QXmppMessage and most
* properties are shared.
*/
class Message : public QXmppMessage
{
public:
static MessageType mediaTypeFromMimeType(const QMimeType&);
/**
* Compares another @c Message with this. Only attributes that are saved in the
* database are checked.
*/
bool operator==(const Message &m) const;
bool operator!=(const Message &m) const;
MessageType mediaType() const;
void setMediaType(MessageType mediaType);
bool sentByMe() const;
void setSentByMe(bool sentByMe);
bool isEdited() const;
void setIsEdited(bool isEdited);
bool isSent() const;
void setIsSent(bool isSent);
bool isDelivered() const;
void setIsDelivered(bool isDelivered);
QString mediaLocation() const;
void setMediaLocation(const QString &mediaLocation);
QString mediaContentType() const;
void setMediaContentType(const QString &mediaContentType);
QDateTime mediaLastModified() const;
void setMediaLastModified(const QDateTime &mediaLastModified);
qint64 mediaSize() const;
void setMediaSize(const qint64 &mediaSize);
bool isSpoiler() const;
void setIsSpoiler(bool isSpoiler);
QString spoilerHint() const;
void setSpoilerHint(const QString &spoilerHint);
-#if (QXMPP_VERSION) < QT_VERSION_CHECK(1, 0, 0)
- QString outOfBandUrl() const;
- void setOutOfBandUrl(const QString &outOfBandUrl);
-#endif
-
private:
/**
* Media type of the message, e.g. a text or image.
*/
MessageType m_mediaType = MessageType::MessageText;
/**
* True if the message was sent by the user.
*/
bool m_sentByMe = true;
/**
* True if the orginal message was edited.
*/
bool m_isEdited = false;
/**
* True if the message was sent.
*/
bool m_isSent = false;
/**
* True if a sent message was delivered to the contact.
*/
bool m_isDelivered = false;
/**
* Location of the media on the local storage.
*/
QString m_mediaLocation;
/**
* Media content type, e.g. "image/jpeg".
*/
QString m_mediaContentType;
/**
* Size of the file in bytes.
*/
qint64 m_mediaSize = 0;
/**
* Timestamp of the last modification date of the file locally on disk.
*/
QDateTime m_mediaLastModified;
/**
* True if the message is a spoiler message.
*/
bool m_isSpoiler = false;
/**
* Hint of the spoiler message.
*/
QString m_spoilerHint;
-
-#if (QXMPP_VERSION) < QT_VERSION_CHECK(1, 0, 0)
- QString m_outOfBandUrl;
-#endif
};
#endif // MESSAGE_H