Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members

evaqunlist.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2005 by yunfan                                          *
00003  *   yunfan_zg@163.com                                                     *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  *                                                                         *
00010  *   This program is distributed in the hope that it will be useful,       *
00011  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00012  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00013  *   GNU General Public License for more details.                          *
00014  *                                                                         *
00015  *   You should have received a copy of the GNU General Public License     *
00016  *   along with this program; if not, write to the                         *
00017  *   Free Software Foundation, Inc.,                                       *
00018  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
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                                 // since this method is always called right after updating qun info
00103                                 // therefore, we use the old real name record at the moment, next time
00104                                 // when user open a Qun chat window, real name will be updated 
00105                                 // automatically
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         //numberList = list;
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         //memberList.clear(); 
00181         
00182 //      std::map<int, QunMember>::iterator it;
00183 //      std::list<FriendItem>::iterator iter;
00184 //      for(iter = memberList.begin(); iter!= memberList.end(); ++iter){
00185 //              it = memberArgs.find(iter->getQQ());
00186 //              if(it != memberArgs.end()){
00187 //                      iter->setQunGroupIndex(it->second.groupIndex);
00188 //                      iter->setQunAdminValue(it->second.admin);
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 }

Generated on Mon May 15 20:48:41 2006 for libeva by  doxygen 1.4.4