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

📄 evaqtutil.cpp

📁 linux下的eva源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		Q_UINT32 fontColor = qunIter->getChatFontColor();		stream << fontSize << fontColor;		// save message type		Q_UINT8 msgType = qunIter->getMessageType();		stream<<msgType;		Q_UINT32 nameVersion = qunIter->getRealNamesVersion();		stream<< nameVersion;		// save my qun card		name = qunIter->getCardName();		Q_UINT8 gender = qunIter->getCardGender();		std::string phone = qunIter->getCardPhone();		std::string email = qunIter->getCardEmail();		std::string memo = qunIter->getCardMemo();		stream<<name.c_str()<<gender<<phone.c_str()<<email.c_str()<<memo.c_str();				// save all members		memberList = qunIter->getMembers();		Q_UINT16 size = memberList.size();		stream<<size;		for(memberIter=memberList.begin(); memberIter!=memberList.end(); ++memberIter){			Q_UINT32 qqNum = memberIter->getQQ();			Q_UINT16 face = memberIter->getFace();			Q_UINT8 age = memberIter->getAge();			Q_UINT8 gender = memberIter->getGender();			std::string nick = memberIter->getNick();			Q_UINT8 extFlag = memberIter->getExtFlag();  			Q_UINT8 commonFlag = memberIter->getCommonFlag();			Q_UINT16 qunGroupIndex = memberIter->getQunGroupIndex();			Q_UINT16 qunAdminValue = memberIter->getQunAdminValue();			// added by henry			std::string realName = memberIter->getQunRealName();			stream<<qqNum<<face<<age<<gender<<nick.c_str()<<extFlag<<commonFlag<<qunGroupIndex<<qunAdminValue<<realName.c_str();					}	}	file->flush();	file->close();}void EvaHelper::setLoadQunListArgs( QFile * file ){	this->file = file;}void EvaHelper::doQunUserLoading( ){	if(type != LoadQunUsers) return;	if(!file->isOpen()) return;		QDataStream stream(file);	///FIXME we should do version checking/saving in a seperate method, which 	/// could benifit buddy list save/load as well, I am just too lazy :)	// 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;		QunList list;		Q_UINT32 qunID;	Q_UINT32 extID;	Q_UINT8 type;	Q_UINT32 creator;	Q_UINT8 authType;	Q_UINT16 unknown1;	Q_UINT16 category;	Q_UINT32 versionID;	std::string name;	Q_UINT16 unknown2;	std::string description;	std::string notice;	Q_UINT32 realNamesVersion;	Q_UINT32 fontSize;	Q_UINT32 fontColor;		Q_UINT8 cardGender;	Q_UINT8 msgType;	char *str = new char[1024];	memset(str, 0, 1024);		while(!stream.atEnd()){		// load qun basic info		stream>>qunID>>extID>>type>>creator>>authType>>unknown1>>category>>versionID>>str;		name = str;		stream>>unknown2>>str;		description = str;		stream>>str;		notice = str;		QunInfo info;		info.setQunID(qunID);		info.setExtID(extID);		info.setType(type);		info.setCreator(creator);		info.setAuthType(authType);		info.setUnknown1(unknown1);		info.setCategory(category);		info.setVersionID(versionID);		info.setName(name);		info.setUnknown2(unknown2);		info.setDescription(description);		info.setNotice(notice);				Qun qun(info.getQunID());		qun.setDetails(info);		stream >> fontSize >> fontColor;			qun.setChatFontSize(fontSize);		qun.setChatFontColor(fontColor);		// load message type		stream>>msgType;		qun.setMessageType((Qun::MessageType)msgType);				stream >> realNamesVersion;		qun.setRealNamesVersion(realNamesVersion);		// load my card for this qun		stream>>str;		qun.setCardName(str);		stream>>cardGender;		qun.setCardGender(cardGender);		stream>>str;		qun.setCardPhone(str);		stream>>str;		qun.setCardEmail(str);		stream>>str;		qun.setCardMemo(str);				// load all members details		std::list<FriendItem> members;		Q_UINT16 size;		stream >> size;		for(int i=0; i< size; i++){			Q_UINT32 qqNum;			Q_UINT16 face;			Q_UINT8 age;			Q_UINT8 gender;			std::string nick;			Q_UINT8 extFlag;  			Q_UINT8 commonFlag;			Q_UINT16 qunGroupIndex;			Q_UINT16 qunAdminValue;			std::string realName;   // added by henry						stream>>qqNum>>face>>age>>gender>>str;			nick = str;			stream>>extFlag>>commonFlag>>qunGroupIndex>>qunAdminValue>>str;			realName = str;			FriendItem item;			item.setQQ(qqNum);			item.setFace(face);			item.setAge(age);			item.setGender(gender);			item.setNick(nick);			item.setExtFlag(extFlag);			item.setCommonFlag(commonFlag);			item.setQunGroupIndex(qunGroupIndex);			item.setQunAdminValue(qunAdminValue);			item.setQunRealName( realName); // henry			members.push_back(item);		}		qun.setMembers(members);		list.add(qun);	}	delete str;	file->close();	EvaQunListEvent *event = new EvaQunListEvent();	event->setQunList(list);	QApplication::postEvent(receiver, event);}const QString EvaHelper::generateCustomSmiley( const QString & source, const QString &destDir, const bool withThumbnail){	QString fileName = source;	QString imageName = fileName.right(fileName.length() - fileName.findRev("/") -1);	QString destExt = imageName.right(imageName.length() - (imageName.findRev(".")+1));		if(destExt == "png" || destExt == "PNG"){		QPixmap srcImage;		if(!srcImage.load(fileName)){			printf("EvaHelper: cannot load png image\n");			return "";		}		if(!srcImage.save(destDir + "/" + imageName, "JPEG", 50)){			printf("EvaHelper: convert to JPG format failed\n");			return "";		}		fileName = destDir + "/" + imageName;	}		char *md5 = new char[16];	if(!getFileMD5(fileName, md5)){		delete md5;		return "";	}	QString strMD5 = md5ToString(md5);		if(destExt == "png" || destExt == "PNG"){		destExt = "JPG";		if(!rename(fileName, destDir + "/" + strMD5 +"." + destExt)){			delete md5;			return "";		}	}else{		if(!copyFile(fileName, destDir + "/" + strMD5 +"." + destExt)){			delete md5;			return "";		}	}	delete md5;	if(withThumbnail){		QImage srcpix;		if(!srcpix.load(fileName)){			printf("EvaHelper: cannot load image\n");			return "";		}		QImage thumbpix = srcpix.smoothScale(20, 20);		QString destname = destDir + "/" + strMD5 + "fixed.bmp";		if(!thumbpix.save(destname, "BMP")){			printf("EvaHelper: convert to thumbnail BMP format failed\n");			return "";		}		}	return strMD5 +"." + destExt;}const bool EvaHelper::getFileMD5( const QString & fileName, char *md5){	if(!md5) return false;	QFileInfo info(fileName);	if(!info.exists()) return false;		unsigned int len = info.size();	char *buf = new char[len];	QFile file(fileName);	if(!file.open(IO_ReadOnly)){		printf("EvaHelper:image dose not exists!");		delete buf;		return false;	}	unsigned int numRead = file.readBlock(buf, len);	file.close();	if(numRead!=len){		delete buf;		return false;	}	memcpy(md5, EvaUtil::doMd5(buf, len), 16);	delete buf;	return true;}const QString EvaHelper::md5ToString(const char *md5){	if(!md5) return "";	QString strMd5;	for(int i=0; i<16; i++){		QString tmp = QString::number((unsigned char)(md5[i]), 16);		if(tmp.length()==1)			tmp = "0" + tmp;		strMd5+=tmp.upper();	}	return strMd5;}const bool EvaHelper::copyFile( const QString & source, const QString & dest ){	QFileInfo info(source);	if(!info.exists()) return false;	unsigned int len = info.size();	char *buf = new char[len];	QFile file(source);	if(!file.open(IO_ReadOnly)){		printf("EvaHelper:image dose not exists!");		delete buf;		return false;	}	unsigned int numRead = file.readBlock(buf, len);	file.close();	if(numRead!=len){		delete buf;		return false;	}		QFile destFile(dest);	if(!destFile.exists()){		if(!destFile.open(IO_WriteOnly | IO_Raw)){			printf("EvaHelper:cannot copy image file!\n");			delete buf;			return false;		}		if(destFile.writeBlock(buf, len) != (int)len){			destFile.close();			destFile.remove();			printf("EvaHelper:bytes copied wrong!\n");			delete buf;			return false;					}else			destFile.close();	}	return true;}const bool EvaHelper::rename( const QString & source, const QString & dest ){	QDir destFile(source);	if(!destFile.exists(source)){		printf("EvaHelper: rename file failed\n");		return false;	}	destFile.rename(source, dest);	destFile.remove(source);	return true;}/**=================================================================================================*/QRgb EvaQtUtils::toGray(QRgb rgb){	int gray = (212671 * qRed (rgb) + 715160 * qGreen (rgb) + 72169 * qBlue (rgb)) / 1000000;	return qRgba (gray, gray, gray, qAlpha (rgb));}QPixmap EvaQtUtils::convertToGrayscale(const QPixmap &pm){	QImage image = QImage();	if (!pm.isNull ())		image = pm.convertToImage ();	convertToGrayscale (&image);	QPixmap destPixmap;	destPixmap.convertFromImage(image,				Qt::ColorOnly/*always display depth*/ |				Qt::DiffuseDither/*hi quality dither*/ |				Qt::ThresholdAlphaDither/*no dither alpha*/ |				Qt::PreferDither/*(dither even if <256 colours)*/);	return destPixmap;}void EvaQtUtils::convertToGrayscale (QImage *destImagePtr){    if (destImagePtr->depth () > 8)    {        for (int y = 0; y < destImagePtr->height (); y++)        {            for (int x = 0; x < destImagePtr->width (); x++)            {                destImagePtr->setPixel (x, y, toGray (destImagePtr->pixel (x, y)));            }        }    }    else    {        // 1- & 8- bit images use a color table        for (int i = 0; i < destImagePtr->numColors (); i++)            destImagePtr->setColor (i, toGray (destImagePtr->color (i)));    }}

⌨️ 快捷键说明

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