⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evaqtutil.cpp

📁 linux下的eva源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*************************************************************************** *   Copyright (C) 2005 by yunfan                                          * *   yunfan_zg@163.com                                                     * *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * *   This program is distributed in the hope that it will be useful,       * *   but WITHOUT ANY WARRANTY; without even the implied warranty of        * *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         * *   GNU General Public License for more details.                          * *                                                                         * *   You should have received a copy of the GNU General Public License     * *   along with this program; if not, write to the                         * *   Free Software Foundation, Inc.,                                       * *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * ***************************************************************************/#include "evaqtutil.h"#include "evautil.h"#include "evausersetting.h"#include "evamemo.h"#include <qtextstream.h>#include <qimage.h>#include <qdir.h>#include <qfile.h>#include <qfileinfo.h>#include <qapplication.h>const QString EvaTextFilter::filter( const QString & source ){	QChar ch;	QString result;	QTextStream stream(&result, IO_WriteOnly);	for(uint i=0; i< source.length(); i++){		ch = source.at(i);		if(ch.isPrint())			stream << ch;	}	return result;}  /* ***********************************************************/QMutex EvaHelper::mutex;void EvaHelper::run(){	mutex.lock();	switch(type){	case LoadGroupedUsers:		doGroupedUserLoading();		break;	case SaveGroupedUsers:		doGroupedUserSaving();		break;	case LoadQunUsers:		doQunUserLoading();		break;	case SaveQunUsers:		doQunUserSaving();	case LoadSys:		doSysLoading();		break;	case ScaleImage:		doImageScaling();	}	mutex.unlock();}void EvaHelper::doSysLoading( ){}void EvaHelper::doImageScaling( ){	QImage img(pic.convertToImage().smoothScale(size));	pic = img;	EvaScaleEvent *event = new EvaScaleEvent(pic);	QApplication::postEvent(receiver, event);}void EvaHelper::setLoadGroupedUsersArgs( QFile * file ){	this->file = file;}void EvaHelper::doGroupedUserLoading( ){	if(type != LoadGroupedUsers) return;	if(!file->isOpen()) return;	std::list<std::string> groupNames;	ContactInfo myInfo;	FriendList list;		Q_UINT32 numGroups=0;	MemoItem memo;	QDataStream stream(file);		// check version first	char *flag = new char[3];	stream.readRawBytes(flag, 3);	Q_UINT32 version = 0;	stream>>version;	if(!(flag[0]=='E' && flag[1]=='V' && flag[2]=='A' && version == profileVersion)){		file->close();		file->remove();		delete flag;		return;	}	delete []flag;		// load my details first	Q_UINT32 size=0;	std::string item;	std::vector<std::string> strlist;		stream>>size;	char *str = new char[512];	for(uint i=0; i<size; i++){		stream>>str;		item = str;		strlist.push_back(item);	}		myInfo.setDetails(strlist);	// read my extra info	Q_UINT16 myExtraInfo;	stream>>myExtraInfo;		// read signature & time	std::string signature;	stream>>str; 	signature = str;		Q_UINT32 sigTime;	stream>>sigTime;		// read in how many groups	stream>>numGroups;	std::string name;	// read all groups in	for(uint i=0; i<numGroups; i++){		stream>>str;		name = str;		groupNames.push_back(name);	}		Q_UINT32 id;	Q_UINT16 face;	Q_UINT8  age;	Q_UINT8  gender;	std::string nick;	Q_UINT8  extFlag;	Q_UINT8  commonFlag;	Q_UINT32 groupIndex;	Q_UINT16 extraInfo;	std::string frdSig;	Q_UINT32 frdSigTime;	Q_UINT32 fontSize;	Q_UINT32 fontColor;		// read in all friends	while(!stream.atEnd()){		stream>>id;		stream>>face;		stream>>age;		stream>>gender;		stream>>str;		nick = str;		stream>>extFlag;		stream>>commonFlag;		stream>>groupIndex;		stream>>extraInfo;		stream>>str;		frdSig = str;		stream>>frdSigTime;				strlist.clear();		stream>>size;		for(uint i=0; i<size; i++){			stream>>str;			item = str;			strlist.push_back(item);		}		stream>>str;memo.name = str;		stream>>str;memo.mobile = str;		stream>>str;memo.telephone = str;		stream>>str;memo.address = str;		stream>>str;memo.email = str;		stream>>str;memo.zipcode = str;		stream>>str;memo.note = str;		stream>>fontSize>>fontColor;		QQFriend f(id, face);				f.setAge(age);		f.setGender(gender);		f.setNick(nick);		f.setExtFlag(extFlag);		f.setCommonFlag(commonFlag);		f.setGroupIndex(groupIndex);		f.setExtraInfo(extraInfo);		f.setSignature(frdSig, frdSigTime);		ContactInfo info;		info.setDetails(strlist);		f.setUserInformation(info);		f.setMemo(memo);		f.setChatFontSize(fontSize);		f.setChatFontColor(fontColor);				list.addFriend(f);	}	delete str;	file->close();	EvaBuddyListEvent *event = new EvaBuddyListEvent();	event->setGroupNames(groupNames);	event->setDetails(myInfo);	event->setFriendList(list);	event->setExtraInfo(myExtraInfo);	event->setSignature(signature, sigTime);	QApplication::postEvent(receiver, event);}void EvaHelper::setSaveGroupedUsersArgs( QFile * file, std::list<std::string> myGroups, ContactInfo &info, FriendList &myList,					unsigned short extraInfo, std::string signature, unsigned int sigModiTime){	this->file = file;	groups = myGroups;	myInfo = info;	list = myList;	mExtraInfo = extraInfo;	mSignature = signature;	mSigModiTime = sigModiTime;}void EvaHelper::doGroupedUserSaving(){	if(type != SaveGroupedUsers) return;	if(!file->isOpen()) return;	QDataStream stream(file);		// save Eva flag and Version	stream.writeRawBytes("EVA", 3);	stream<<profileVersion;		std::string detailItem;		// save my info first	Q_UINT32 myCount = myInfo.count();	stream<<myCount;	for(int i=0; i<(int)myCount; i++){		detailItem = myInfo.at(i);		stream<<detailItem.c_str();	}			// save my extra info	stream<<mExtraInfo;		// save my signature	stream<<mSignature.c_str()<< mSigModiTime;			// save group names	std::list<std::string>::iterator itr;	// save the number of customized groups (including buddy list)	Q_UINT32 size = groups.size();	stream<<size;	for(itr=groups.begin(); itr!=groups.end(); ++itr){		stream<<itr->c_str();	}		std::list<QQFriend> flist = list.getAllFriends();	std::list<QQFriend>::iterator iter;	Q_UINT32 id;	Q_UINT16  face;	Q_UINT8  age;	Q_UINT8  gender;	std::string nick;	Q_UINT8  extFlag;	Q_UINT8  commonFlag;	Q_UINT32 groupIndex;	Q_UINT16 bExtraInfo;	std::string signature;	Q_UINT32 sigModiTime;	ContactInfo userDetails;	MemoItem memo;	Q_UINT32 fontSize;	Q_UINT32 fontColor;		// save all buddy details	for(iter = flist.begin(); iter!= flist.end(); ++iter){		id = iter->getQQ();		face = iter->getFace();		age = iter->getAge();		gender = iter->getGender();		nick = iter->getNick();		extFlag = iter->getExtFlag();		commonFlag = iter->getCommonFlag();		groupIndex = iter->getGroupIndex();		bExtraInfo = iter->getExtraInfo();		signature = iter->getSignature();		sigModiTime = iter->getSignatureModifyTime();		userDetails = iter->getUserInformation();				stream<<id<<face<<age<<gender<<nick.c_str()<<extFlag<<commonFlag<<groupIndex<<bExtraInfo<<signature.c_str()<<sigModiTime;						Q_UINT32 count = userDetails.count();		stream<<count;		for(int i=0; i<(int)count; i++){			detailItem = userDetails.at(i);			stream<<detailItem.c_str();		}		memo = iter->getMemo();		stream<<memo.name.c_str()<<memo.mobile.c_str()<<memo.telephone.c_str();		stream<<memo.address.c_str()<<memo.email.c_str()<<memo.zipcode.c_str()<<memo.note.c_str();		fontSize = iter->getChatFontSize();		fontColor = iter->getChatFontColor();		stream << fontSize << fontColor;	}	file->flush();	file->close();}void EvaHelper::setSaveQunListArgs( QFile * file, QunList & list ){	this->file = file;	qunList = list;}void EvaHelper::doQunUserSaving( ){	if(type != SaveQunUsers) return;	if(!file->isOpen()) return;	QDataStream stream(file);		// save Eva flag and Version	stream.writeRawBytes("EVA", 3);	stream<<profileVersion;	std::list<Qun>::iterator qunIter;	std::list<Qun>list = qunList.getQunList();		QunInfo info;	std::list<FriendItem>::iterator memberIter;	std::list<FriendItem> memberList;		for(qunIter = list.begin(); qunIter!= list.end(); ++qunIter){		// save qun info		info = qunIter->getDetails();				Q_UINT32 qunID = qunIter->getQunID();		Q_UINT32 extID = info.getExtID();		Q_UINT8 type = info.getType();		Q_UINT32 creator = info.getCreator();		Q_UINT8 authType = info.getAuthType();		Q_UINT16 unknown1 = info.getUnknown1();		Q_UINT16 category = info.getCategory();		Q_UINT32 versionID = info.getVersionID();		std::string name = info.getName();		Q_UINT16 unknown2 = info.getUnknown2();		std::string description = info.getDescription();		std::string notice = info.getNotice();				stream<<qunID<<extID<<type<<creator<<authType<<unknown1<<category<<			versionID<<name.c_str()<<unknown2<<description.c_str()<<notice.c_str();				Q_UINT32 fontSize = qunIter->getChatFontSize();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -