syncableobject.cpp
transfer.cpp
transfermanager.cpp
+ types.cpp
util.cpp
serializers/serializers.cpp
#if QT_VERSION >= 0x050500
EcdsaCertfpKeys, ///< ECDSA keys for CertFP in identities
#endif
+ LongMessageId, ///< 64-bit IDs for messages
};
Q_ENUMS(Feature)
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2005-2018 by the Quassel Project *
+ * devel@quassel-irc.org *
+ * *
+ * This program 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 2 of the License, or *
+ * (at your option) version 3. *
+ * *
+ * This program 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 this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include "peer.h"
+#include "types.h"
+
+QDataStream &operator<<(QDataStream &out, const SignedId64 &signedId) {
+ Q_ASSERT(SignalProxy::current());
+ Q_ASSERT(SignalProxy::current()->targetPeer());
+
+ if (SignalProxy::current()->targetPeer()->hasFeature(Quassel::Feature::LongMessageId)) {
+ out << signedId.toQint64();
+ } else {
+ out << (qint32) signedId.toQint64();
+ }
+ return out;
+}
+
+QDataStream &operator>>(QDataStream &in, SignedId64 &signedId) {
+ Q_ASSERT(SignalProxy::current());
+ Q_ASSERT(SignalProxy::current()->sourcePeer());
+
+ if (SignalProxy::current()->sourcePeer()->hasFeature(Quassel::Feature::LongMessageId)) {
+ in >> signedId.id;
+ } else {
+ qint32 id;
+ in >> id;
+ signedId.id = id;
+ }
+ return in;
+}
friend QDataStream &operator>>(QDataStream &in, SignedId &signedId);
};
-
inline QDataStream &operator<<(QDataStream &out, const SignedId &signedId) { out << signedId.toInt(); return out; }
inline QDataStream &operator>>(QDataStream &in, SignedId &signedId) { in >> signedId.id; return in; }
inline QTextStream &operator<<(QTextStream &out, const SignedId &signedId) { out << QString::number(signedId.toInt()); return out; }
inline QDebug operator<<(QDebug dbg, const SignedId &signedId) { dbg.space() << signedId.toInt(); return dbg; }
inline uint qHash(const SignedId &id) { return qHash(id.toInt()); }
+class SignedId64
+{
+protected:
+ qint64 id;
+
+public:
+ inline SignedId64(qint64 _id = 0) { id = _id; }
+ inline qint64 toQint64() const { return id; }
+ inline bool isValid() const { return id > 0; }
+
+ inline bool operator==(const SignedId64 &other) const { return id == other.id; }
+ inline bool operator!=(const SignedId64 &other) const { return id != other.id; }
+ inline bool operator<(const SignedId64 &other) const { return id < other.id; }
+ inline bool operator<=(const SignedId64 &other) const { return id <= other.id; }
+ inline bool operator>(const SignedId64 &other) const { return id > other.id; }
+ inline bool operator>=(const SignedId64 &other) const { return id >= other.id; }
+ inline bool operator==(qint64 i) const { return id == i; }
+ inline bool operator!=(qint64 i) const { return id != i; }
+ inline bool operator<(qint64 i) const { return id < i; }
+ inline bool operator>(qint64 i) const { return id > i; }
+ inline bool operator<=(qint64 i) const { return id <= i; }
+
+ inline SignedId64 operator++(int) { id++; return *this; }
+ //inline operator int() const { return toQint64(); } // no automatic conversion!
+
+ friend QDataStream &operator>>(QDataStream &in, SignedId64 &signedId);
+};
+
+QDataStream &operator<<(QDataStream &out, const SignedId64 &signedId);
+QDataStream &operator>>(QDataStream &in, SignedId64 &signedId);
+inline QTextStream &operator<<(QTextStream &out, const SignedId64 &signedId) { out << QString::number(signedId.toQint64()); return out; }
+inline QDebug operator<<(QDebug dbg, const SignedId64 &signedId) { dbg.space() << signedId.toQint64(); return dbg; }
+inline uint qHash(const SignedId64 &id) { return qHash(id.toQint64()); }
+
struct UserId : public SignedId {
inline UserId(int _id = 0) : SignedId(_id) {}
//inline operator QVariant() const { return QVariant::fromValue<UserId>(*this); } // no automatic conversion!
};
-struct MsgId : public SignedId {
- inline MsgId(int _id = 0) : SignedId(_id) {}
+struct MsgId : public SignedId64 {
+ inline MsgId(qint64 _id = 0) : SignedId64(_id) {}
//inline operator QVariant() const { return QVariant::fromValue<MsgId>(*this); }
};
CREATE TABLE sender ( -- THE SENDER OF IRC MESSAGES
- senderid serial NOT NULL PRIMARY KEY,
+ senderid bigserial NOT NULL PRIMARY KEY,
sender varchar(128) NOT NULL,
realname TEXT,
avatarurl TEXT
buffername varchar(128) NOT NULL,
buffercname varchar(128) NOT NULL, -- CANONICAL BUFFER NAME (lowercase version)
buffertype integer NOT NULL DEFAULT 0,
- lastmsgid integer NOT NULL DEFAULT 0,
- lastseenmsgid integer NOT NULL DEFAULT 0,
- markerlinemsgid integer NOT NULL DEFAULT 0,
+ lastmsgid bigint NOT NULL DEFAULT 0,
+ lastseenmsgid bigint NOT NULL DEFAULT 0,
+ markerlinemsgid bigint NOT NULL DEFAULT 0,
bufferactivity integer NOT NULL DEFAULT 0,
highlightcount integer NOT NULL DEFAULT 0,
key varchar(128),
CREATE TABLE backlog (
- messageid serial PRIMARY KEY,
+ messageid bigserial PRIMARY KEY,
time timestamp NOT NULL,
bufferid integer NOT NULL REFERENCES buffer (bufferid) ON DELETE CASCADE,
type integer NOT NULL,
flags integer NOT NULL,
- senderid integer NOT NULL REFERENCES sender (senderid) ON DELETE SET NULL,
+ senderid bigint NOT NULL REFERENCES sender (senderid) ON DELETE SET NULL,
senderprefixes TEXT,
message TEXT
)
--- /dev/null
+ALTER TABLE sender
+ALTER COLUMN senderid TYPE bigint
--- /dev/null
+ALTER TABLE buffer
+ALTER COLUMN lastmsgid TYPE bigint,
+ALTER COLUMN lastseenmsgid TYPE bigint,
+ALTER COLUMN markerlinemsgid TYPE bigint
--- /dev/null
+ALTER TABLE backlog
+ALTER COLUMN messageid TYPE bigint,
+ALTER COLUMN senderid TYPE bigint
};
struct SenderMO {
- int senderId;
+ qint64 senderId;
QString sender;
QString realname;
QString avatarurl;
bool autoAwayReasonEnabled;
bool detachAwayEnabled;
QString detachAwayReason;
- bool detchAwayReasonEnabled;
+ bool detachAwayReasonEnabled;
QString ident;
QString kickReason;
QString partReason;
QString buffername;
QString buffercname;
int buffertype;
- int lastmsgid;
- int lastseenmsgid;
- int markerlinemsgid;
+ qint64 lastmsgid;
+ qint64 lastseenmsgid;
+ qint64 markerlinemsgid;
int bufferactivity;
int highlightcount;
QString key;
BufferId bufferid;
int type;
int flags;
- int senderid;
+ qint64 senderid;
QString senderprefixes;
QString message;
};
void CoreSession::addClient(RemotePeer *peer)
{
+ signalProxy()->setTargetPeer(peer);
+
peer->dispatch(sessionState());
signalProxy()->addPeer(peer);
+
+ signalProxy()->setTargetPeer(nullptr);
}
query.bindValue(":userid", user.toInt());
query.bindValue(":bufferid", bufferId.toInt());
- query.bindValue(":lastseenmsgid", msgId.toInt());
+ query.bindValue(":lastseenmsgid", msgId.toQint64());
safeExec(query);
watchQuery(query);
}
}
while (query.next()) {
- lastSeenHash[query.value(0).toInt()] = query.value(1).toInt();
+ lastSeenHash[query.value(0).toInt()] = query.value(1).toLongLong();
}
db.commit();
query.bindValue(":userid", user.toInt());
query.bindValue(":bufferid", bufferId.toInt());
- query.bindValue(":markerlinemsgid", msgId.toInt());
+ query.bindValue(":markerlinemsgid", msgId.toQint64());
safeExec(query);
watchQuery(query);
}
}
while (query.next()) {
- markerLineHash[query.value(0).toInt()] = query.value(1).toInt();
+ markerLineHash[query.value(0).toInt()] = query.value(1).toLongLong();
}
db.commit();
QSqlQuery query(logDb());
query.prepare(queryString("select_buffer_bufferactivity"));
query.bindValue(":bufferid", bufferId.toInt());
- query.bindValue(":lastseenmsgid", lastSeenMsgId.toInt());
+ query.bindValue(":lastseenmsgid", lastSeenMsgId.toQint64());
safeExec(query);
watchQuery(query);
Message::Types result = Message::Types(0);
QSqlQuery query(logDb());
query.prepare(queryString("select_buffer_highlightcount"));
query.bindValue(":bufferid", bufferId.toInt());
- query.bindValue(":lastseenmsgid", lastSeenMsgId.toInt());
+ query.bindValue(":lastseenmsgid", lastSeenMsgId.toQint64());
safeExec(query);
watchQuery(query);
int result = int(0);
<< msg.realName()
<< msg.avatarUrl();
QSqlQuery getSenderIdQuery = executePreparedQuery("select_senderid", senderParams, db);
- int senderId;
+ qint64 senderId;
if (getSenderIdQuery.first()) {
- senderId = getSenderIdQuery.value(0).toInt();
+ senderId = getSenderIdQuery.value(0).toLongLong();
}
else {
// it's possible that the sender was already added by another thread
getSenderIdQuery = executePreparedQuery("select_senderid", senderParams, db);
watchQuery(getSenderIdQuery);
getSenderIdQuery.first();
- senderId = getSenderIdQuery.value(0).toInt();
+ senderId = getSenderIdQuery.value(0).toLongLong();
}
else {
releaseSavePoint("sender_sp1", db);
addSenderQuery.first();
- senderId = addSenderQuery.value(0).toInt();
+ senderId = addSenderQuery.value(0).toLongLong();
}
}
}
logMessageQuery.first();
- MsgId msgId = logMessageQuery.value(0).toInt();
+ MsgId msgId = logMessageQuery.value(0).toLongLong();
db.commit();
if (msgId.isValid()) {
msg.setMsgId(msgId);
}
QList<int> senderIdList;
- QHash<SenderData, int> senderIds;
+ QHash<SenderData, qint64> senderIds;
QSqlQuery addSenderQuery;
QSqlQuery selectSenderQuery;;
for (int i = 0; i < msgs.count(); i++) {
selectSenderQuery = executePreparedQuery("select_senderid", senderParams, db);
if (selectSenderQuery.first()) {
- senderIdList << selectSenderQuery.value(0).toInt();
- senderIds[sender] = selectSenderQuery.value(0).toInt();
+ senderIdList << selectSenderQuery.value(0).toLongLong();
+ senderIds[sender] = selectSenderQuery.value(0).toLongLong();
}
else {
savePoint("sender_sp", db);
selectSenderQuery = executePreparedQuery("select_senderid", senderParams, db);
watchQuery(selectSenderQuery);
selectSenderQuery.first();
- senderIdList << selectSenderQuery.value(0).toInt();
- senderIds[sender] = selectSenderQuery.value(0).toInt();
+ senderIdList << selectSenderQuery.value(0).toLongLong();
+ senderIds[sender] = selectSenderQuery.value(0).toLongLong();
}
else {
releaseSavePoint("sender_sp", db);
addSenderQuery.first();
- senderIdList << addSenderQuery.value(0).toInt();
- senderIds[sender] = addSenderQuery.value(0).toInt();
+ senderIdList << addSenderQuery.value(0).toLongLong();
+ senderIds[sender] = addSenderQuery.value(0).toLongLong();
}
}
}
}
else {
logMessageQuery.first();
- msg.setMsgId(logMessageQuery.value(0).toInt());
+ msg.setMsgId(logMessageQuery.value(0).toLongLong());
}
}
}
else if (last == -1) {
queryName = "select_messagesNewerThan";
- params << first.toInt();
+ params << first.toQint64();
}
else {
queryName = "select_messagesRange";
- params << first.toInt();
- params << last.toInt();
+ params << first.toQint64();
+ params << last.toQint64();
}
params << bufferId.toInt();
if (limit != -1)
query.value(6).toString(),
query.value(7).toString(),
(Message::Flags)query.value(3).toUInt());
- msg.setMsgId(query.value(0).toInt());
+ msg.setMsgId(query.value(0).toLongLong());
messagelist << msg;
}
query.prepare(queryString("select_messagesNewestK_filtered"));
} else if (last == -1) {
query.prepare(queryString("select_messagesNewerThan_filtered"));
- query.bindValue(":first", first.toInt());
+ query.bindValue(":first", first.toQint64());
} else {
query.prepare(queryString("select_messagesRange_filtered"));
- query.bindValue(":last", last.toInt());
- query.bindValue(":first", first.toInt());
+ query.bindValue(":last", last.toQint64());
+ query.bindValue(":first", first.toQint64());
}
query.bindValue(":buffer", bufferId.toInt());
query.bindValue(":limit", limit);
query.value(6).toString(),
query.value(7).toString(),
Message::Flags{query.value(3).toInt()});
- msg.setMsgId(query.value(0).toInt());
+ msg.setMsgId(query.value(0).toLongLong());
messagelist << msg;
}
}
else {
query.prepare(queryString("select_messagesAll"));
- query.bindValue(":lastmsg", last.toInt());
+ query.bindValue(":lastmsg", last.toQint64());
}
query.bindValue(":userid", user.toInt());
- query.bindValue(":firstmsg", first.toInt());
+ query.bindValue(":firstmsg", first.toQint64());
safeExec(query);
if (!watchQuery(query)) {
db.rollback();
query.value(7).toString(),
query.value(8).toString(),
(Message::Flags)query.value(4).toUInt());
- msg.setMsgId(query.value(0).toInt());
+ msg.setMsgId(query.value(0).toLongLong());
messagelist << msg;
}
}
else {
query.prepare(queryString("select_messagesAll_filtered"));
- query.bindValue(":lastmsg", last.toInt());
+ query.bindValue(":lastmsg", last.toQint64());
}
query.bindValue(":userid", user.toInt());
- query.bindValue(":firstmsg", first.toInt());
+ query.bindValue(":firstmsg", first.toQint64());
int typeRaw = type;
query.bindValue(":type", typeRaw);
query.value(7).toString(),
query.value(8).toString(),
Message::Flags{query.value(4).toInt()});
- msg.setMsgId(query.value(0).toInt());
+ msg.setMsgId(query.value(0).toLongLong());
messagelist << msg;
}
bindValue(11, identity.autoAwayReasonEnabled);
bindValue(12, identity.detachAwayEnabled);
bindValue(13, identity.detachAwayReason);
- bindValue(14, identity.detchAwayReasonEnabled);
+ bindValue(14, identity.detachAwayReasonEnabled);
bindValue(15, identity.ident);
bindValue(16, identity.kickReason);
bindValue(17, identity.partReason);
//bool PostgreSqlMigrationWriter::writeBacklog(const BacklogMO &backlog) {
bool PostgreSqlMigrationWriter::writeMo(const BacklogMO &backlog)
{
- bindValue(0, backlog.messageid.toInt());
+ bindValue(0, backlog.messageid.toQint64());
bindValue(1, backlog.time);
bindValue(2, backlog.bufferid.toInt());
bindValue(3, backlog.type);
<file>./SQL/PostgreSQL/version/27/upgrade_020_update_sender_add_new_constraint.sql</file>
<file>./SQL/PostgreSQL/version/27/upgrade_030_upgrade_sender_drop_old_constraint.sql</file>
<file>./SQL/PostgreSQL/version/28/upgrade_000_create_corestate.sql</file>
+ <file>./SQL/PostgreSQL/version/29/upgrade_010_alter_sender_64bit_ids.sql</file>
+ <file>./SQL/PostgreSQL/version/29/upgrade_050_alter_buffer_64bit_ids.sql</file>
+ <file>./SQL/PostgreSQL/version/29/upgrade_060_alter_backlog_64bit_ids.sql</file>
<file>./SQL/SQLite/delete_backlog_by_uid.sql</file>
<file>./SQL/SQLite/delete_backlog_for_buffer.sql</file>
<file>./SQL/SQLite/delete_backlog_for_network.sql</file>
query.prepare(queryString("update_buffer_lastseen"));
query.bindValue(":userid", user.toInt());
query.bindValue(":bufferid", bufferId.toInt());
- query.bindValue(":lastseenmsgid", msgId.toInt());
+ query.bindValue(":lastseenmsgid", msgId.toQint64());
lockForWrite();
safeExec(query);
error = !watchQuery(query);
if (!error) {
while (query.next()) {
- lastSeenHash[query.value(0).toInt()] = query.value(1).toInt();
+ lastSeenHash[query.value(0).toInt()] = query.value(1).toLongLong();
}
}
}
query.prepare(queryString("update_buffer_markerlinemsgid"));
query.bindValue(":userid", user.toInt());
query.bindValue(":bufferid", bufferId.toInt());
- query.bindValue(":markerlinemsgid", msgId.toInt());
+ query.bindValue(":markerlinemsgid", msgId.toQint64());
lockForWrite();
safeExec(query);
error = !watchQuery(query);
if (!error) {
while (query.next()) {
- markerLineHash[query.value(0).toInt()] = query.value(1).toInt();
+ markerLineHash[query.value(0).toInt()] = query.value(1).toLongLong();
}
}
}
QSqlQuery query(db);
query.prepare(queryString("select_buffer_bufferactivity"));
query.bindValue(":bufferid", bufferId.toInt());
- query.bindValue(":lastseenmsgid", lastSeenMsgId.toInt());
+ query.bindValue(":lastseenmsgid", lastSeenMsgId.toQint64());
lockForRead();
safeExec(query);
QSqlQuery query(db);
query.prepare(queryString("select_buffer_highlightcount"));
query.bindValue(":bufferid", bufferId.toInt());
- query.bindValue(":lastseenmsgid", lastSeenMsgId.toInt());
+ query.bindValue(":lastseenmsgid", lastSeenMsgId.toQint64());
lockForRead();
safeExec(query);
}
}
if (!error) {
- MsgId msgId = logMessageQuery.lastInsertId().toInt();
+ MsgId msgId = logMessageQuery.lastInsertId().toLongLong();
if (msgId.isValid()) {
msg.setMsgId(msgId);
}
break;
}
else {
- msg.setMsgId(logMessageQuery.lastInsertId().toInt());
+ msg.setMsgId(logMessageQuery.lastInsertId().toLongLong());
}
}
}
bool error = false;
BufferInfo bufferInfo;
{
- // code dupication from getBufferInfo:
+ // code duplication from getBufferInfo:
// this is due to the impossibility of nesting transactions and recursive locking
QSqlQuery bufferInfoQuery(db);
bufferInfoQuery.prepare(queryString("select_buffer_by_id"));
}
else if (last == -1) {
query.prepare(queryString("select_messagesNewerThan"));
- query.bindValue(":firstmsg", first.toInt());
+ query.bindValue(":firstmsg", first.toQint64());
}
else {
query.prepare(queryString("select_messagesRange"));
- query.bindValue(":lastmsg", last.toInt());
- query.bindValue(":firstmsg", first.toInt());
+ query.bindValue(":lastmsg", last.toQint64());
+ query.bindValue(":firstmsg", first.toQint64());
}
query.bindValue(":bufferid", bufferId.toInt());
query.bindValue(":limit", limit);
query.value(6).toString(),
query.value(7).toString(),
(Message::Flags)query.value(3).toUInt());
- msg.setMsgId(query.value(0).toInt());
+ msg.setMsgId(query.value(0).toLongLong());
messagelist << msg;
}
}
}
else if (last == -1) {
query.prepare(queryString("select_messagesNewerThan_filtered"));
- query.bindValue(":firstmsg", first.toInt());
+ query.bindValue(":firstmsg", first.toQint64());
}
else {
query.prepare(queryString("select_messagesRange_filtered"));
- query.bindValue(":lastmsg", last.toInt());
- query.bindValue(":firstmsg", first.toInt());
+ query.bindValue(":lastmsg", last.toQint64());
+ query.bindValue(":firstmsg", first.toQint64());
}
query.bindValue(":bufferid", bufferId.toInt());
query.bindValue(":limit", limit);
query.value(6).toString(),
query.value(7).toString(),
Message::Flags{query.value(3).toInt()});
- msg.setMsgId(query.value(0).toInt());
+ msg.setMsgId(query.value(0).toLongLong());
messagelist << msg;
}
}
}
else {
query.prepare(queryString("select_messagesAll"));
- query.bindValue(":lastmsg", last.toInt());
+ query.bindValue(":lastmsg", last.toQint64());
}
query.bindValue(":userid", user.toInt());
- query.bindValue(":firstmsg", first.toInt());
+ query.bindValue(":firstmsg", first.toQint64());
query.bindValue(":limit", limit);
safeExec(query);
query.value(7).toString(),
query.value(8).toString(),
(Message::Flags)query.value(4).toUInt());
- msg.setMsgId(query.value(0).toInt());
+ msg.setMsgId(query.value(0).toLongLong());
messagelist << msg;
}
}
}
else {
query.prepare(queryString("select_messagesAll_filtered"));
- query.bindValue(":lastmsg", last.toInt());
+ query.bindValue(":lastmsg", last.toQint64());
}
query.bindValue(":userid", user.toInt());
- query.bindValue(":firstmsg", first.toInt());
+ query.bindValue(":firstmsg", first.toQint64());
query.bindValue(":limit", limit);
int typeRaw = type;
query.bindValue(":type", typeRaw);
query.value(7).toString(),
query.value(8).toString(),
Message::Flags{query.value(4).toInt()});
- msg.setMsgId(query.value(0).toInt());
+ msg.setMsgId(query.value(0).toLongLong());
messagelist << msg;
}
}
}
QSqlQuery query = logDb().exec(queryString);
query.first();
- _maxId = query.value(0).toInt();
+ _maxId = query.value(0).toLongLong();
}
identity.autoAwayReasonEnabled = value(11).toInt() == 1 ? true : false;
identity.detachAwayEnabled = value(12).toInt() == 1 ? true : false;
identity.detachAwayReason = value(13).toString();
- identity.detchAwayReasonEnabled = value(14).toInt() == 1 ? true : false;
+ identity.detachAwayReasonEnabled = value(14).toInt() == 1 ? true : false;
identity.ident = value(15).toString();
identity.kickReason = value(16).toString();
identity.partReason = value(17).toString();
buffer.buffername = value(4).toString();
buffer.buffercname = value(5).toString();
buffer.buffertype = value(6).toInt();
- buffer.lastmsgid = value(7).toInt();
- buffer.lastseenmsgid = value(8).toInt();
- buffer.markerlinemsgid = value(9).toInt();
+ buffer.lastmsgid = value(7).toLongLong();
+ buffer.lastseenmsgid = value(8).toLongLong();
+ buffer.markerlinemsgid = value(9).toLongLong();
buffer.bufferactivity = value(10).toInt();
buffer.highlightcount = value(11).toInt();
buffer.key = value(12).toString();
}
}
- sender.senderId = value(0).toInt();
+ sender.senderId = value(0).toLongLong();
sender.sender = value(1).toString();
sender.realname = value(2).toString();
sender.avatarurl = value(3).toString();
int skipSteps = 0;
while (!next()) {
if (backlog.messageid < _maxId) {
- bindValue(0, backlog.messageid.toInt() + (skipSteps * stepSize()));
- bindValue(1, backlog.messageid.toInt() + ((skipSteps + 1) * stepSize()));
+ bindValue(0, backlog.messageid.toQint64() + (skipSteps * stepSize()));
+ bindValue(1, backlog.messageid.toQint64() + ((skipSteps + 1) * stepSize()));
skipSteps++;
if (!exec())
return false;
}
}
- backlog.messageid = value(0).toInt();
+ backlog.messageid = value(0).toLongLong();
backlog.time = QDateTime::fromTime_t(value(1).toInt()).toUTC();
backlog.bufferid = value(2).toInt();
backlog.type = value(3).toInt();
backlog.flags = value(4).toInt();
- backlog.senderid = value(5).toInt();
+ backlog.senderid = value(5).toLongLong();
backlog.senderprefixes = value(6).toString();
backlog.message = value(7).toString();
return true;
private:
void setMaxId(MigrationObject mo);
- int _maxId;
+ qint64 _maxId;
};
// }
// 2) draw MsgId over the time column
// if(column() == 0) {
-// QString msgIdString = QString::number(data(MessageModel::MsgIdRole).value<MsgId>().toInt());
+// QString msgIdString = QString::number(data(MessageModel::MsgIdRole).value<MsgId>().toLongLong());
// QPointF bottomPoint = boundingRect().bottomLeft();
// bottomPoint.ry() -= 2;
// painter->drawText(bottomPoint, msgIdString);
return QVariant();
QModelIndex source_index = mapToSource(index);
- return sourceModel()->data(source_index, MessageModel::MsgIdRole).value<MsgId>().toInt();
+ return sourceModel()->data(source_index, MessageModel::MsgIdRole).value<MsgId>().toQint64();
}