~ubuntu-branches/ubuntu/saucy/quassel/saucy-proposed

« back to all changes in this revision

Viewing changes to src/common/buffersyncer.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-02-17 12:49:50 UTC
  • mto: This revision was merged to the branch mainline in revision 59.
  • Revision ID: james.westby@ubuntu.com-20100217124950-v9hajw5d2xa6fszn
Tags: upstream-0.6~beta1
ImportĀ upstreamĀ versionĀ 0.6~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
{
27
27
}
28
28
 
29
 
BufferSyncer::BufferSyncer(const QHash<BufferId, MsgId> &lastSeenMsg, QObject *parent)
 
29
BufferSyncer::BufferSyncer(const QHash<BufferId, MsgId> &lastSeenMsg, const QHash<BufferId, MsgId> &markerLines, QObject *parent)
30
30
  : SyncableObject(parent),
31
 
    _lastSeenMsg(lastSeenMsg)
 
31
    _lastSeenMsg(lastSeenMsg),
 
32
    _markerLines(markerLines)
32
33
{
33
34
}
34
35
 
35
36
MsgId BufferSyncer::lastSeenMsg(BufferId buffer) const {
36
 
  if(_lastSeenMsg.contains(buffer))
37
 
    return _lastSeenMsg[buffer];
38
 
  return MsgId();
 
37
  return _lastSeenMsg.value(buffer, MsgId());
39
38
}
40
39
 
41
40
bool BufferSyncer::setLastSeenMsg(BufferId buffer, const MsgId &msgId) {
52
51
  return false;
53
52
}
54
53
 
 
54
MsgId BufferSyncer::markerLine(BufferId buffer) const {
 
55
  return _markerLines.value(buffer, MsgId());
 
56
}
 
57
 
 
58
bool BufferSyncer::setMarkerLine(BufferId buffer, const MsgId &msgId) {
 
59
  if(!msgId.isValid())
 
60
    return false;
 
61
 
 
62
  _markerLines[buffer] = msgId;
 
63
  SYNC(ARG(buffer), ARG(msgId))
 
64
  emit markerLineSet(buffer, msgId);
 
65
  return true;
 
66
}
 
67
 
55
68
QVariantList BufferSyncer::initLastSeenMsg() const {
56
69
  QVariantList list;
57
70
  QHash<BufferId, MsgId>::const_iterator iter = _lastSeenMsg.constBegin();
58
71
  while(iter != _lastSeenMsg.constEnd()) {
59
72
    list << QVariant::fromValue<BufferId>(iter.key())
60
 
         << QVariant::fromValue<MsgId>(iter.value());
61
 
    iter++;
 
73
         << QVariant::fromValue<MsgId>(iter.value());
 
74
    ++iter;
62
75
  }
63
76
  return list;
64
77
}
67
80
  _lastSeenMsg.clear();
68
81
  Q_ASSERT(list.count() % 2 == 0);
69
82
  for(int i = 0; i < list.count(); i += 2) {
70
 
    setLastSeenMsg(list[i].value<BufferId>(), list[i+1].value<MsgId>());
 
83
    setLastSeenMsg(list.at(i).value<BufferId>(), list.at(i+1).value<MsgId>());
 
84
  }
 
85
}
 
86
 
 
87
QVariantList BufferSyncer::initMarkerLines() const {
 
88
  QVariantList list;
 
89
  QHash<BufferId, MsgId>::const_iterator iter = _markerLines.constBegin();
 
90
  while(iter != _markerLines.constEnd()) {
 
91
    list << QVariant::fromValue<BufferId>(iter.key())
 
92
         << QVariant::fromValue<MsgId>(iter.value());
 
93
    ++iter;
 
94
  }
 
95
  return list;
 
96
}
 
97
 
 
98
void BufferSyncer::initSetMarkerLines(const QVariantList &list) {
 
99
  _markerLines.clear();
 
100
  Q_ASSERT(list.count() % 2 == 0);
 
101
  for(int i = 0; i < list.count(); i += 2) {
 
102
    setMarkerLine(list.at(i).value<BufferId>(), list.at(i+1).value<MsgId>());
71
103
  }
72
104
}
73
105
 
74
106
void BufferSyncer::removeBuffer(BufferId buffer) {
75
107
  if(_lastSeenMsg.contains(buffer))
76
108
    _lastSeenMsg.remove(buffer);
 
109
  if(_markerLines.contains(buffer))
 
110
    _markerLines.remove(buffer);
77
111
  SYNC(ARG(buffer))
78
112
  emit bufferRemoved(buffer);
79
113
}
81
115
void BufferSyncer::mergeBuffersPermanently(BufferId buffer1, BufferId buffer2) {
82
116
  if(_lastSeenMsg.contains(buffer2))
83
117
    _lastSeenMsg.remove(buffer2);
 
118
  if(_markerLines.contains(buffer2))
 
119
    _markerLines.remove(buffer2);
84
120
  SYNC(ARG(buffer1), ARG(buffer2))
85
121
  emit buffersPermanentlyMerged(buffer1, buffer2);
86
122
}