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

📄 evaaddingnoticewindow.cpp

📁 linux下的eva源代码
💻 CPP
字号:
/*************************************************************************** *   Copyright (C) 2007 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 "evaaddingnoticewindow.h"#include <stdlib.h>#include <qpushbutton.h>#include <qtoolbutton.h>#include <qlineedit.h>#include <qlabel.h>#include <qradiobutton.h>#include <qcheckbox.h>#include <qbuttongroup.h>#include <qframe.h>#include <qpixmap.h>#include <qiconset.h>#include <qdatetime.h>#include <qtextcodec.h>#include <qevent.h>#include <kmessagebox.h>#include <klocale.h>#include <kdebug.h>#include "../evamain.h"#include "evaresource.h"#include "evauser.h"#include "evaresource.h"#include "evasetting.h"#include "evausersetting.h"#include "evapacketmanager.h"#include "evafriendlist.h"#include "../evaaddingmanager.h"EvaAddingNoticeWindow::EvaAddingNoticeWindow( EvaPacketManager * connecter )	: m_PacketManager(connecter){	init();}void EvaAddingNoticeWindow::init(){	m_ID = 0;	m_Type = 0;	m_Message = "";	m_AllowReverse = true;	m_HasVerified = false;	QPixmap *facePic = EvaMain::images->getFaceByID( 0 );	if(facePic){		QIconSet faceIcon;		faceIcon.setPixmap(*facePic,QIconSet::Large);		tbFace->setIconSet(faceIcon);	}	lblMessageTag->setHidden(true);	lblMessage->setHidden(true);	btngrpActions->setHidden(true);	fraRejectContents->setHidden(true);	tbtnAuthSettings->setHidden(true);	adjustSize();	QObject::connect(EvaMain::g_AddingManager, SIGNAL(addAuthActionReply(const unsigned int, const unsigned char, const bool)),						SLOT(slotAddAuthActionReply(const unsigned int, const unsigned char, const bool)));		QObject::connect(m_PacketManager, SIGNAL(receivedVerifyAddingMessageReply(const unsigned int,										const unsigned char,										const unsigned char)),					SLOT(slotReceivedVerifyAddingMessageReply(const unsigned int,										const unsigned char,										const unsigned char)));	QObject::connect(tbFace, SIGNAL(clicked()), SLOT(slotFaceClicked()));	QObject::connect(btnOk, SIGNAL(clicked()), SLOT(slotOkClicked()));	QObject::connect(btnCancel, SIGNAL(clicked()), SLOT(close()));	QObject::connect(rbtnAcceptAdd, SIGNAL(clicked()), SLOT(slotRejectClicked( )));	QObject::connect(rbtnAccept, SIGNAL(clicked()), SLOT(slotRejectClicked( )));	QObject::connect(rbtnReject, SIGNAL(clicked()), SLOT(slotRejectClicked( )));	}void EvaAddingNoticeWindow::setMessage( const unsigned char type, const unsigned int fromID,					const QString & msg, const bool allowReverse){	m_Type = type;	m_ID =  fromID;	m_Message = msg;	m_AllowReverse = allowReverse;	processSettings();}// void EvaAddingNoticeWindow::startVerifying( const unsigned char * code, const unsigned int codeLen )// {// 	QByteArray array(codeLen);// 	array.setRawData( (const char *)(code), codeLen);// 	m_Code.duplicate( array);// // 	m_PacketManager->doVerifyAddingMessage(m_ID, m_Code.data(), m_Code.size());// }void EvaAddingNoticeWindow::processSettings(){	printf("m_Type: %d\n", m_Type);	QString title;	BuddyInfoCacheItem buddy = EvaMain::user->getSetting()->removeToBeAddedBuddy(m_ID);	printf("cached: id: %d, nick: %s, face: %d, group:%d\n", buddy.id, buddy.nick.local8Bit().data(), buddy.face, buddy.group);	m_Nick = buddy.nick;	m_Face = buddy.face;	QPixmap *facePic = EvaMain::images->getFaceByID( m_Face );	if(facePic){		QIconSet faceIcon;		faceIcon.setPixmap(*facePic,QIconSet::Large);		tbFace->setIconSet(faceIcon);	}	QString nick = buddy.nick.isEmpty()?(QString::number(m_ID)):(QString("%1(%2)").arg(m_Nick).arg(m_ID));	switch(m_Type){		case QQ_MSG_SYS_ADD_FRIEND_APPROVED:{			title = QString(i18n("%1 has approved your request")).arg(nick);			}			break;		case QQ_MSG_SYS_ADD_FRIEND_REJECTED:{			title = QString(i18n("%1 has rejected your request")).arg(nick);			}			break;		case QQ_MSG_SYS_ADD_FRIEND_REQUEST_EX:{			title = QString(i18n("%1 wants to add you onto her/his contact list")).arg(nick);			btngrpActions->setHidden(false);			if(!m_AllowReverse || EvaMain::user->getFriendList().hasFriend(m_ID)){				rbtnAcceptAdd->setEnabled( false );				rbtnAcceptAdd->setHidden( true );			}			/// once user select reject, the lineedit should appear			tbtnAuthSettings->setHidden(false);			}			break;		case QQ_MSG_SYS_ADD_FRIEND_APPROVED_AND_ADD:{			title = QString(i18n("%1 has approved your request and added you onto her/his contact list")).arg(nick);			}			break;		case QQ_MSG_SYS_ADDED_BY_CORRECT_ANSWER:		case QQ_MSG_SYS_BEING_ADDED_EX:{			title = QString(i18n("%1 has added you onto her/his contact list")).arg(nick);			if(!EvaMain::user->getFriendList().hasFriend(m_ID))				btnOk->setText( i18n("&Add to my list") );			}			break;		case QQ_MSG_SYS_BROADCAST:{			// impossible, cuz this should use differnt dialog			}			break;		default:{			kdDebug() << "[EvaAddingNoticeWindow] unknown type: " << m_Type << endl;			}			break;	}	lblTitle->setText(title);	if(!m_Message.isEmpty()){		QDateTime date = QDateTime::currentDateTime(Qt::LocalTime);		lblMessageTag->setText( QString(i18n("Additional message(%1):")).arg(date.toString( "yyyy-MM-dd hh:mm:ss" ) ) );		lblMessage->setText(m_Message);		lblMessageTag->setHidden(false);		lblMessage->setHidden(false);	}	adjustSize();}void EvaAddingNoticeWindow::slotFaceClicked( ){	if(m_ID)		emit requestDetails(m_ID);}void EvaAddingNoticeWindow::closeEvent( QCloseEvent * /*e*/ ){	deleteLater();}void EvaAddingNoticeWindow::slotOkClicked( ){	switch(m_Type){		case QQ_MSG_SYS_ADD_FRIEND_REQUEST_EX:{			/// user has selected one of followings			/// 1. accept			/// 2. reject			processAddingRequest();			}			break;		case QQ_MSG_SYS_BEING_ADDED_EX:			/// should emit adding signal			if(!EvaMain::user->getFriendList().hasFriend(m_ID))				emit requestAddBuddy(m_ID, m_Nick, m_Face);		case QQ_MSG_SYS_ADD_FRIEND_APPROVED:		case QQ_MSG_SYS_ADD_FRIEND_REJECTED:		case QQ_MSG_SYS_ADD_FRIEND_APPROVED_AND_ADD:		case QQ_MSG_SYS_BROADCAST:			// impossible, cuz this should use differnt dialog		default:			close();			break;	}}void EvaAddingNoticeWindow::processAddingRequest( ){	//lblMessageTag->setText(" ");	//lblMessage->setText( i18n("Sending to server..."));	// we do accept and add in a lazy way, accept the request first then add the buddy onto	// our contact list. However, in QQ 2006, it uses one sub-command of 0x00A8 packet	// to do the 2 steps in one go		if( rbtnAcceptAdd->isChecked() || rbtnAccept->isChecked() ){		m_PacketManager->doAddBuddyAuthEx(m_ID, ADDING_AUTH_TYPE_ACCEPT);		return;	}	if( rbtnReject->isChecked() ){		m_PacketManager->doAddBuddyAuthEx(m_ID, ADDING_AUTH_TYPE_REJECT, 0, 0,0, 0,0, leRejectMessage->text());		return;	}	KMessageBox::information(0, i18n("Select one of the three actions to perform please."), i18n("Eva Search/Add Friend"));}void EvaAddingNoticeWindow::slotAddAuthActionReply( const unsigned int id, const unsigned char auth, const bool ok ){	if(ok){		// the lazy way to do the Accept&Add operation		if(auth == ADDING_AUTH_TYPE_ACCEPT && rbtnAcceptAdd->isChecked()){			EvaMain::g_AddingManager->slotAddBuddy(id, m_Nick, m_Face);		}		if(auth == ADDING_AUTH_TYPE_REJECT && chbRejectForever->isChecked()){			EvaMain::user->getSetting()->addToRejectForever(m_ID);			EvaMain::user->getSetting()->saveSettings();		}		close();	}else{		QString action;		switch(auth){			case ADDING_AUTH_TYPE_ACCEPT_ADD:				action = i18n("accept and add");				break;			case ADDING_AUTH_TYPE_ACCEPT:				action = i18n("accept");				break;			case ADDING_AUTH_TYPE_REJECT:				action = i18n("reject");				break;			default:				action = i18n("unknown");				break;		}		KMessageBox::information(0, QString(i18n("Operation %1 failed.")).arg(action), i18n("Eva Search/Add Friend"));	}}void EvaAddingNoticeWindow::slotRejectClicked( ){	if( rbtnAccept->isChecked() || rbtnAcceptAdd->isChecked()){		fraRejectContents->setHidden(true);	}	if( rbtnReject->isChecked()){		fraRejectContents->setHidden(false);	}	adjustSize();}

⌨️ 快捷键说明

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