144 } |
144 } |
145 |
145 |
146 |
146 |
147 void PlayersListModel::setFlag(const QString &nickname, StateFlag flagType, bool isSet) |
147 void PlayersListModel::setFlag(const QString &nickname, StateFlag flagType, bool isSet) |
148 { |
148 { |
|
149 if(flagType == Friend) |
|
150 { |
|
151 if(isSet) |
|
152 m_friendsSet.insert(nickname.toLower()); |
|
153 else |
|
154 m_friendsSet.remove(nickname.toLower()); |
|
155 |
|
156 saveSet(m_friendsSet, "friends"); |
|
157 } |
|
158 else if(flagType == Ignore) |
|
159 { |
|
160 if(isSet) |
|
161 m_ignoredSet.insert(nickname.toLower()); |
|
162 else |
|
163 m_ignoredSet.remove(nickname.toLower()); |
|
164 |
|
165 saveSet(m_ignoredSet, "ignore"); |
|
166 } |
|
167 |
149 QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly); |
168 QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly); |
150 |
169 |
151 if(mil.size()) |
170 if(mil.size()) |
152 { |
171 { |
153 setData(mil[0], isSet, flagType); |
172 setData(mil[0], isSet, flagType); |
154 |
173 |
155 if(flagType == Friend || flagType == ServerAdmin |
174 if(flagType == Friend || flagType == ServerAdmin |
156 || flagType == Ignore || flagType == RoomAdmin) |
175 || flagType == Ignore || flagType == RoomAdmin) |
157 updateSortData(mil[0]); |
176 updateSortData(mil[0]); |
158 |
177 |
159 if(flagType == Friend) |
|
160 { |
|
161 if(isSet) |
|
162 m_friendsSet.insert(nickname.toLower()); |
|
163 else |
|
164 m_friendsSet.remove(nickname.toLower()); |
|
165 |
|
166 saveSet(m_friendsSet, "friends"); |
|
167 } |
|
168 |
|
169 if(flagType == Ignore) |
|
170 { |
|
171 if(isSet) |
|
172 m_ignoredSet.insert(nickname.toLower()); |
|
173 else |
|
174 m_ignoredSet.remove(nickname.toLower()); |
|
175 |
|
176 saveSet(m_ignoredSet, "ignore"); |
|
177 } |
|
178 |
|
179 updateIcon(mil[0]); |
178 updateIcon(mil[0]); |
180 } |
179 } |
181 } |
180 } |
182 |
181 |
183 |
182 |
185 { |
184 { |
186 QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly); |
185 QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly); |
187 |
186 |
188 if(mil.size()) |
187 if(mil.size()) |
189 return mil[0].data(flagType).toBool(); |
188 return mil[0].data(flagType).toBool(); |
|
189 else if(flagType == Friend) |
|
190 return isFriend(nickname); |
|
191 else if(flagType == Ignore) |
|
192 return isIgnored(nickname); |
190 else |
193 else |
191 return false; |
194 return false; |
192 } |
195 } |
193 |
196 |
194 void PlayersListModel::resetRoomFlags() |
197 void PlayersListModel::resetRoomFlags() |
342 |
345 |
343 for(int i = rowCount() - 1; i >= 0; --i) |
346 for(int i = rowCount() - 1; i >= 0; --i) |
344 checkFriendIgnore(index(i)); |
347 checkFriendIgnore(index(i)); |
345 } |
348 } |
346 |
349 |
|
350 bool PlayersListModel::isFriend(const QString & nickname) |
|
351 { |
|
352 return m_friendsSet.contains(nickname.toLower()); |
|
353 } |
|
354 |
|
355 bool PlayersListModel::isIgnored(const QString & nickname) |
|
356 { |
|
357 return m_ignoredSet.contains(nickname.toLower()); |
|
358 } |
347 |
359 |
348 void PlayersListModel::checkFriendIgnore(const QModelIndex &mi) |
360 void PlayersListModel::checkFriendIgnore(const QModelIndex &mi) |
349 { |
361 { |
350 setData(mi, m_friendsSet.contains(mi.data().toString().toLower()), Friend); |
362 setData(mi, isFriend(mi.data().toString()), Friend); |
351 setData(mi, m_ignoredSet.contains(mi.data().toString().toLower()), Ignore); |
363 setData(mi, isIgnored(mi.data().toString()), Ignore); |
352 |
364 |
353 updateIcon(mi); |
365 updateIcon(mi); |
354 updateSortData(mi); |
366 updateSortData(mi); |
355 } |
367 } |
356 |
368 |