00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "evaqunlist.h"
00022
00023
00024
00025
00026 TmpQun::TmpQun( )
00027 : qunID(0), parentID(0)
00028 {
00029 }
00030
00031 TmpQun::TmpQun( const int pid )
00032 : qunID(0), parentID(pid)
00033 {
00034 }
00035
00036 TmpQun &TmpQun::operator=(const TmpQun &rhs)
00037 {
00038 qunID = rhs.getQunID();
00039 parentID = rhs.getParentID();
00040 name = rhs.getName();
00041 memberList = rhs.getMemberQQList();
00042 return *this;
00043 }
00044
00045 void TmpQun::addMember( const int qqNum )
00046 {
00047 memberList.push_back(qqNum);
00048 }
00049
00050 const bool TmpQun::removeMember( const int qqNum )
00051 {
00052 std::list<int>::iterator iter;
00053 for(iter=memberList.begin(); iter!=memberList.end(); ++iter){
00054 if( *iter == qqNum){
00055 memberList.erase(iter);
00056 return true;
00057 }
00058 }
00059 return false;
00060 }
00061
00062
00063
00064
00065
00066
00067
00068 Qun::Qun( const int id )
00069 : qunID(id), cardName(""), cardGender(0), cardPhone(""), cardEmail(""), cardMemo(""),
00070 m_RealNamesVersion(0), msgType(Notify), m_ChatFontSize(9), m_ChatFontColor(0)
00071 {
00072 }
00073
00074 Qun &Qun::operator=(const Qun &rhs)
00075 {
00076 qunID = rhs.getQunID();
00077 info = rhs.getDetails();
00078 numberList = rhs.getQQList();
00079 memberList = rhs.getMembers();
00080 tmpQunList = rhs.getTmpQunList();
00081 cardName = rhs.getCardName();
00082 cardGender = rhs.getCardGender();
00083 cardPhone = rhs.getCardPhone();
00084 cardEmail = rhs.getCardEmail();
00085 cardMemo = rhs.getCardMemo();
00086 m_RealNamesVersion = rhs.getRealNamesVersion();
00087
00088 m_ChatFontSize = rhs.getChatFontSize();
00089 m_ChatFontColor = rhs.getChatFontColor();
00090
00091 return *this;
00092 }
00093
00094 void Qun::setMembers(const std::list<FriendItem> &l)
00095 {
00096 std::list<FriendItem> list = l;
00097 std::list<FriendItem>::iterator iter;
00098 for(iter = list.begin(); iter!= list.end(); ++iter){
00099 std::list<FriendItem>::iterator iter1;
00100 for(iter1 = memberList.begin(); iter1!= memberList.end(); ++iter1){
00101 if(iter1->getQQ() == iter->getQQ()){
00102
00103
00104
00105
00106 iter->setQunRealName(iter1->getQunRealName());
00107 memberList.erase(iter1);
00108 break;
00109 }
00110 }
00111 }
00112
00113 std::map<int, QunMember>::iterator it;
00114
00115 for(iter = list.begin(); iter!= list.end(); ++iter){
00116 it = memberArgs.find(iter->getQQ());
00117 if(it != memberArgs.end()){
00118 iter->setQunGroupIndex(it->second.groupIndex);
00119 iter->setQunAdminValue(it->second.admin);
00120 }
00121 memberList.push_back(*iter);
00122 }
00123 }
00124
00125 void Qun::updateOnlineMembers(const std::list<int> &list)
00126 {
00127 std::list<int> onlist = list;
00128 std::list<FriendItem>::iterator iter;
00129 for(iter = memberList.begin(); iter!= memberList.end(); ++iter){
00130 iter->setOnline(false);
00131 std::list<int>::iterator iter1;
00132 for(iter1 = onlist.begin(); iter1 != onlist.end(); ++iter1){
00133 if(iter->getQQ() == *iter1)
00134 iter->setOnline(true);
00135 }
00136 }
00137
00138 }
00139
00140 const FriendItem *Qun::getMemberDetails( const int qqNum )
00141 {
00142 std::list<FriendItem>::iterator iter;
00143 for(iter = memberList.begin(); iter!= memberList.end(); ++iter){
00144 if(iter->getQQ() == qqNum)
00145 return &(*iter);
00146 }
00147 return NULL;
00148 }
00149
00150 void Qun::setMember( const FriendItem & fi )
00151 {
00152 FriendItem item = fi;
00153 std::list<FriendItem>::iterator iter;
00154 for(iter = memberList.begin(); iter!= memberList.end(); ++iter){
00155 if(iter->getQQ() == item.getQQ()){
00156 memberList.erase(iter);
00157 break;
00158 }
00159 }
00160
00161 std::map<int, QunMember>::iterator it = memberArgs.find(item.getQQ());
00162 if(it != memberArgs.end()){
00163 item.setQunGroupIndex(it->second.groupIndex);
00164 item.setQunAdminValue(it->second.admin);
00165 }
00166 memberList.push_back(item);
00167 }
00168
00169 void Qun::addTmpQun( const TmpQun & q )
00170 {
00171 tmpQunList.push_back(q);
00172 }
00173
00174 void Qun::setMemberArgs(const std::map<int, QunMember> &list)
00175 {
00176 memberArgs = list;
00177 m_RealNamesVersion = 0;
00178 numberList.clear();
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191 }
00192
00193 const bool Qun::isAdmin( const int id)
00194 {
00195 std::list<FriendItem>::iterator iter;
00196 for(iter = memberList.begin(); iter!= memberList.end(); ++iter){
00197 if(iter->getQQ() == id){
00198 if(iter->getQunAdminValue() & QUN_TYPE_ADMIN)
00199 return true;
00200 break;
00201 }
00202 }
00203 return false;
00204 }
00205
00206 const bool Qun::hasMember(const int id)
00207 {
00208 std::list<FriendItem>::iterator iter;
00209 for(iter = memberList.begin(); iter!= memberList.end(); ++iter){
00210 if(iter->getQQ() == id){
00211 return true;
00212 }
00213 }
00214 return false;
00215 }
00216
00217
00218
00219 QunList &QunList::operator=(const QunList &rhs)
00220 {
00221 qunList = rhs.getQunList();
00222 return *this;
00223 }
00224
00225 void QunList::add( const Qun & q )
00226 {
00227 Qun *qun = getQun(q.getQunID());
00228 if(!qun)
00229 qunList.push_back(q);
00230 }
00231
00232 bool QunList::remove( const int id )
00233 {
00234 std::list<Qun>::iterator iter;
00235 for(iter = qunList.begin(); iter!= qunList.end(); ++iter){
00236 if(iter->getQunID() == id){
00237 qunList.erase(iter);
00238 return true;
00239 }
00240 }
00241 return false;
00242 }
00243
00244 void QunList::update( const Qun & q )
00245 {
00246 if(remove(q.getQunID()))
00247 add(q);
00248 }
00249
00250 Qun *QunList::getQun( const int id )
00251 {
00252 std::list<Qun>::iterator iter;
00253 for(iter = qunList.begin(); iter!=qunList.end(); ++iter){
00254 if(iter->getQunID() == id){
00255 return &(*iter);
00256 }
00257 }
00258 return NULL;
00259 }
00260
00261 void QunList::setDetails( const QunInfo & info )
00262 {
00263 std::list<Qun>::iterator iter;
00264 for(iter = qunList.begin(); iter!= qunList.end(); ++iter){
00265 if(iter->getQunID() == info.getQunID()){
00266 iter->setDetails(info);
00267 return;
00268 }
00269 }
00270 }
00271
00272 void QunList::setMember( const int id, const FriendItem & fi )
00273 {
00274 std::list<Qun>::iterator iter;
00275 for(iter = qunList.begin(); iter!= qunList.end(); ++iter){
00276 if(iter->getQunID() == id){
00277 iter->setMember(fi);
00278 return;
00279 }
00280 }
00281 }
00282
00283 void QunList::setMembers( const int id, const std::list< FriendItem > & list )
00284 {
00285 std::list<Qun>::iterator iter;
00286 for(iter = qunList.begin(); iter!= qunList.end(); ++iter){
00287 if(iter->getQunID() == id){
00288 iter->setMembers(list);
00289 return;
00290 }
00291 }
00292 }
00293
00294 void QunList::setOnlineMembers(const int id, const std::list<int> &list)
00295 {
00296 std::list<Qun>::iterator iter;
00297 for(iter = qunList.begin(); iter!= qunList.end(); ++iter){
00298 if(iter->getQunID() == id){
00299 iter->updateOnlineMembers(list);
00300 return;
00301 }
00302 }
00303 }
00304
00305 void QunList::setQQList(const int id, const std::list<int> &list)
00306 {
00307 std::list<Qun>::iterator iter;
00308 for(iter = qunList.begin(); iter!= qunList.end(); ++iter){
00309 if(iter->getQunID() == id){
00310 iter->setQQList(list);
00311 return;
00312 }
00313 }
00314 }
00315
00316 void QunList::setMemberArgs(const int id, const std::map<int, QunMember> &list)
00317 {
00318 std::list<Qun>::iterator iter;
00319 for(iter = qunList.begin(); iter!= qunList.end(); ++iter){
00320 if(iter->getQunID() == id){
00321 iter->setMemberArgs(list);
00322 return;
00323 }
00324 }
00325 }
00326
00327 void QunList::setMyQunCardInfo( const int id, const std::string name, const unsigned char gender,
00328 const std::string phone, const std::string email, const std::string memo )
00329 {
00330 std::list<Qun>::iterator iter;
00331 for(iter = qunList.begin(); iter!= qunList.end(); ++iter){
00332 if(iter->getQunID() == id){
00333 iter->setCardName(name);
00334 iter->setCardGender(gender);
00335 iter->setCardPhone(phone);
00336 iter->setCardEmail(email);
00337 iter->setCardMemo(memo);
00338 return;
00339 }
00340 }
00341 }