69
69
: qunID(id), cardName(""), cardGender(0), cardPhone(""), cardEmail(""), cardMemo(""),
70
70
m_RealNamesVersion(0), msgType(Notify), m_ChatFontSize(9), m_ChatFontColor(0)
72
m_memberStartCount = 0;
73
m_bFirstRefresh = true;
74
76
Qun::Qun(const Qun &rhs)
81
83
qunID = rhs.getQunID();
82
84
info = rhs.getDetails();
83
numberList = rhs.getQQList();
85
//numberList = rhs.getQQList();
84
86
memberList = rhs.getMembers();
87
memberArgs = rhs.getMemberArgs();
85
88
tmpQunList = rhs.getTmpQunList();
86
89
cardName = rhs.getCardName();
87
90
cardGender = rhs.getCardGender();
102
105
std::list<FriendItem> list = l;
103
106
std::list<FriendItem>::iterator iter;
107
std::list<FriendItem>::iterator iter1;
104
108
for(iter = list.begin(); iter!= list.end(); ++iter){
105
std::list<FriendItem>::iterator iter1;
106
109
for(iter1 = memberList.begin(); iter1!= memberList.end(); ++iter1){
107
110
if(iter1->getQQ() == iter->getQQ()){
108
// since this method is always called right after updating qun info
109
// therefore, we use the old real name record at the moment, next time
110
// when user open a Qun chat window, real name will be updated
112
iter->setQunRealName(iter1->getQunRealName());
113
memberList.erase(iter1);
119
std::map<unsigned int, QunMember>::iterator it;
121
for(iter = list.begin(); iter!= list.end(); ++iter){
122
it = memberArgs.find(iter->getQQ());
123
if(it != memberArgs.end()){
124
iter->setQunGroupIndex(it->second.groupIndex);
125
iter->setQunAdminValue(it->second.admin);
114
if(iter1 != memberList.end()){ // already in our list
115
iter->setQunRealName(iter1->getQunRealName());
116
iter->setQunGroupIndex(iter1->getQunGroupIndex());
117
iter->setQunAdminValue(iter1->getQunAdminValue());
119
}else{ // new guy, just add it
120
memberList.push_back(*iter);
127
memberList.push_back(*iter);
169
162
std::list<FriendItem>::iterator iter;
170
163
for(iter = memberList.begin(); iter!= memberList.end(); ++iter){
171
164
if(iter->getQQ() == item.getQQ()){
172
memberList.erase(iter);
165
item.setQunGroupIndex(iter->getQunGroupIndex());
166
item.setQunAdminValue(iter->getQunAdminValue());
177
std::map<unsigned int, QunMember>::iterator it = memberArgs.find(item.getQQ());
178
if(it != memberArgs.end()){
179
item.setQunGroupIndex(it->second.groupIndex);
180
item.setQunAdminValue(it->second.admin);
171
if(iter == memberList.end()){
172
std::map<unsigned int, QunMember>::iterator it = memberArgs.find(item.getQQ());
173
if( it != memberArgs.end()){
174
item.setQunGroupIndex(it->second.groupIndex);
175
item.setQunAdminValue(it->second.admin);
177
memberList.push_back(item);
182
memberList.push_back(item);
185
181
void Qun::addTmpQun( const TmpQun & q )
192
188
memberArgs = list;
193
189
m_RealNamesVersion = 0;
195
/// if we clear this list, the real name setting will lost
196
//memberList.clear();
191
std::map<unsigned int, QunMember>::iterator it;
192
std::list<FriendItem>::iterator iter;
194
std::map<unsigned int, bool> toRemove; //record those members who are kicked out from this Qun
195
for(iter = memberList.begin(); iter != memberList.end(); ++ iter){
196
toRemove[iter->getQQ()] = true;
198
// try every member in memberArgs, check if already in
199
// in our memberList. if it is we'll use the old one
200
// otherwise use the memberArgs one
201
for(it = memberArgs.begin(); it!=memberArgs.end(); ++it){
202
for(iter = memberList.begin(); iter != memberList.end(); ++ iter){
203
if(iter->getQQ() == it->first){
204
toRemove.erase(iter->getQQ());
205
iter->setQunGroupIndex( it->second.groupIndex);
206
iter->setQunAdminValue( it->second.admin);
210
if(iter != memberList.end()) continue; // we have deleted it
212
FriendItem item(it->first);
213
item.setQunGroupIndex( it->second.groupIndex);
214
item.setQunAdminValue( it->second.admin);
215
memberList.push_back(item);
198
std::list<FriendItem> tmpList;
218
// remove those NOT existed members
219
std::map<unsigned int, bool>::iterator remvIt;
220
iter = memberList.begin();
221
while(iter != memberList.end()){
222
remvIt = toRemove.find(iter->getQQ());
223
if(remvIt != toRemove.end()){
224
memberList.erase(iter);
225
toRemove.erase(remvIt);
226
iter = memberList.begin();
200
std::map<unsigned int, QunMember>::iterator it;
232
std::list<unsigned int> Qun::getNextMembers()
234
std::list<unsigned int> list;
236
if(m_memberStartCount == memberList.size() ) return list;
201
237
std::list<FriendItem>::iterator iter;
202
238
for(iter = memberList.begin(); iter!= memberList.end(); ++iter){
203
it = memberArgs.find(iter->getQQ());
204
if(it!= memberArgs.end()){
205
tmpList.push_back(*iter);
239
if(i >= m_memberStartCount){
240
if(i > m_memberStartCount + 30) break;
241
list.push_back(iter->getQQ());
209
memberList = tmpList;
245
m_memberStartCount += list.size();
212
249
const bool Qun::isAdmin( const unsigned int id)
318
Qun * QunList::getQunByExtID( const unsigned int ext )
320
std::list<Qun>::iterator iter;
321
for(iter = qunList.begin(); iter!=qunList.end(); ++iter){
322
if(iter->getExtQunID() == ext){
280
329
void QunList::setDetails( const QunInfo & info )
282
331
std::list<Qun>::iterator iter;
324
void QunList::setQQList(const unsigned int id, const std::list<unsigned int> &list)
326
std::list<Qun>::iterator iter;
327
for(iter = qunList.begin(); iter!= qunList.end(); ++iter){
328
if(iter->getQunID() == id){
329
iter->setQQList(list);
373
// void QunList::setQQList(const unsigned int id, const std::list<unsigned int> &list)
375
// std::list<Qun>::iterator iter;
376
// for(iter = qunList.begin(); iter!= qunList.end(); ++iter){
377
// if(iter->getQunID() == id){
378
// iter->setQQList(list);
335
384
void QunList::setMemberArgs(const unsigned int id, const std::map<unsigned int, QunMember> &list)