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

📄 fxloginwindow.cpp

📁 linux-下的fetion-0.8.1。包括所有源代码
💻 CPP
字号:
/*************************************************************************** *   Copyright (C) 2008 by DDD                                          * *   dedodong@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 <QtGui>#include <QMainWindow>#include "appconfig.h"#include "fxloginwindow.h"FxLoginWindow::FxLoginWindow(QWidget *parent)    : QDialog(parent){	user_id = NULL;	user_pwd = NULL;	proxy = new FxProxy(this);	proxy->hide();    setupUi(this);	this->installEventFilter(this);	loginState->setStyleSheet("background-color: rgb(246,243,243)");	//BT_Login_Ok->setStyleSheet("background-color: rgb(246,243,243)");	{		loginState->setItemIcon(0, getOnlineStatusIcon(FX_STATUS_ONLINE));		loginState->setItemIcon(1, getOnlineStatusIcon(FX_STATUS_OFFLINE));		loginState->setItemIcon(2, getOnlineStatusIcon(FX_STATUS_AWAY));		loginState->setItemIcon(3, getOnlineStatusIcon(FX_STATUS_BUSY));	}	set_login_button_state(true);	login_image->setPixmap(getLoginImage());	LibFetion_image->setPixmap(getLibFetionImage());	//	Login_State->setText("test version for v 0.2.0");	connect(BT_Login_Ok, SIGNAL(clicked()), this, SLOT(BT_Login_clicked()));	//connect(BT_Login_Cancel, SIGNAL(clicked()), this, SLOT(Cancel_logwin()));	connect(this, SIGNAL(signal_enableLoginBT()), this, SLOT(slots_enableLonginBT()) ); 	//connect(Net_Setting, SIGNAL(clicked()), this, SLOT(Setting()));	connect(Net_Setting, SIGNAL(linkActivated(const QString &)), this, SLOT(Setting(const QString &)));	connect(&loginTimer, SIGNAL(timeout()), this, SLOT(login_timer()));	QRegExp rx_port("[0-9]{0,11}");	QValidator *validator_port = new QRegExpValidator(rx_port, this);	ED_Fetion_ID->setValidator(validator_port);	    this->setWindowIcon(getSysTrayIcon(0));    //this->setWindowIcon(getSysTrayIcon(FX_STATUS_AWAY));	//set auto login 	int state_tmp = 0;	if (isAutoLogin(&user_id, &user_pwd, &state_tmp) && user_id) 	{		remPWD->setCheckState(Qt::Checked);		ED_Fetion_ID->setText (QString::fromUtf8(user_id));		ED_Fetion_Pwd->setText (QString::fromUtf8(user_pwd));		loginState->setCurrentIndex(state_tmp);		login();	}}FxLoginWindow::~FxLoginWindow(){	if(user_id)		free(user_id);	if(user_pwd)		free(user_pwd);	proxy->proxy_destroy();}void FxLoginWindow::Cancel_logwin(){	enableLoginBT();	fx_close_network();}void FxLoginWindow::set_login_button_state(bool state){	willLogin = state;	if (willLogin) {		BT_Login_Ok->setText(tr("login"));		BT_Login_Ok->setPixmap(getLogion_InImage());	} else {		BT_Login_Ok->setText(tr("cancel"));		BT_Login_Ok->setPixmap(getLogin_CancelImage());	}}void FxLoginWindow::BT_Login_clicked(){	if (willLogin)		login();	else	{		Cancel_logwin();		set_login_button_state(true);	}}void FxLoginWindow::Setting(const QString &){	proxy->show();}void FxLoginWindow::setLogingState(char *ch){#if 0	QTextCodec * codec_cstring = QTextCodec::codecForCStrings ()	QTextCodec *codec_locale = QTextCodec::codecForLocale ();	QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));	QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));	//	QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));#endif	QString str = str.fromUtf8(ch);	Login_State->setText(str);	update();#if 0	QTextCodec::setCodecForLocale(codec_locale);	QTextCodec::setCodecForCStrings(codec_cstring);#endif	}#define fetion_debug printf  void  My_EventListener (int message, WPARAM wParam, LPARAM lParam, void* args){	FxLoginWindow *loginDlg = NULL;	if(!args)		return;	loginDlg = (FxLoginWindow *)args;		switch(message)	{	case FX_LOGIN_URI_ERROR:		fetion_debug("FX_LOGIN_URI_ERROR\n");		loginDlg->Login_State->setText(QObject::tr("mobile_no or fetion uid error"));		loginDlg->enableLoginBT();		break;			case FX_LOGIN_CONNECTING:		fetion_debug("FX_LOGIN_CONNECTING\n");		loginDlg->Login_State->setText(QObject::tr("connecting the fetion server"));		break;			case FX_LOGIN_WAIT_AUTH:		fetion_debug("FX_LOGIN_WAIT_AUTH\n");		loginDlg->Login_State->setText(QObject::tr("waiting the server auth"));		break;			case FX_LOGIN_AUTH_OK:		fetion_debug("FX_LOGIN_WAIT_AUTH \n");		loginDlg->Login_State->setText(QObject::tr("server auth ok"));		break;			case FX_LOGIN_FAIL:		fetion_debug("FX_LOGIN_FAIL \n");		loginDlg->Login_State->setText(QObject::tr("password error"));		loginDlg->enableLoginBT();		break;	case FX_LOGIN_NETWORK_ERROR:		fetion_debug("FX_LOGIN_NETWORK_ERROR \n");		loginDlg->Login_State->setText(QObject::tr("network error"));		cleanCacheServerAdd(); //clean the sever ip cache		loginDlg->enableLoginBT();		break;	case FX_LOGIN_UNKOWN_ERROR :   		fetion_debug("FX_LOGIN_UNKOWN_ERROR \n");		loginDlg->Login_State->setText(QObject::tr("unkown error"));		cleanCacheServerAdd(); //clean the sever ip cache		loginDlg->enableLoginBT();		break;			case FX_LOGIN_TIMEOUT:		fetion_debug("FX_LOGIN_TIMEOUT \n");		loginDlg->Login_State->setText(QObject::tr("login time out"));		loginDlg->enableLoginBT();		break;	case FX_LOGIN_UNKOWN_USR:		fetion_debug("FX_LOGIN_UNKOWN_USR \n");		loginDlg->Login_State->setText(QObject::tr("unkown fetion uid"));		loginDlg->enableLoginBT();		break;			case FX_LOGIN_GCL_GETTING:		fetion_debug("FX_LOGIN_GCL_GETTING\n");		break;			case FX_LOGIN_GCL_OK:   		fetion_debug("FX_LOGIN_GCL_OK \n");		break;			case FX_LOGIN_GCL_FAIL:		fetion_debug("FX_LOGIN_GCL_FAIL \n");		loginDlg->Login_State->setText(QObject::tr("get account list fail"));		loginDlg->enableLoginBT();		break;			case FX_LOGIN_GP_GETTING:		fetion_debug("FX_LOGIN_GP_GETTING\n");		break;			case FX_LOGIN_GP_OK:		fetion_debug("FX_LOGIN_GP_OK \n");		break;	case FX_LOGIN_GP_FAIL:		fetion_debug("FX_LOGIN_GP_FAIL\n");		loginDlg->Login_State->setText(QObject::tr("get account info fail"));		loginDlg->enableLoginBT();		break;			case FX_LOGIN_OK :		fetion_debug("FX_LOGIN_OK \n");		loginDlg->Login_State->setText(QObject::tr("fetion login ok"));		loginDlg->LoginOK();		break;	}}void FxLoginWindow::enableLoginBT(){	emit signal_enableLoginBT();}void FxLoginWindow::slots_enableLonginBT(){	if (loginTimer.isActive())		loginTimer.stop();	set_login_button_state(true);}void FxLoginWindow::LoginOK(){	if (remPWD->checkState() == Qt::Checked )		setAutoLogin(user_id, user_pwd, loginState->currentIndex());	else		disAutoLogin();	char * serve_address = fx_get_serve_address();	if(serve_address){			setCacheServerAdd(user_id, serve_address);		free(serve_address);	}	//fixme;.....	//fx_get_usr_uri();	emit signal_LoginOK();}void FxLoginWindow::login(){#if 0	LoginOK();	return ;#endif	Login_State->setText(tr("logining"));	int id_len = ED_Fetion_ID->text().size(); 	int pwd_len = ED_Fetion_Pwd->text().size(); 	if (id_len != 9 && id_len != 11) {		Login_State->setText( tr("error usr id"));		return;	}	if (pwd_len == 0) {		Login_State->setText( tr("please input password"));		return;	}	if(user_id)		free(user_id);	if(user_pwd)		free(user_pwd);	user_id = (char*)malloc(id_len + 1);	memcpy(user_id, ED_Fetion_ID->text().toUtf8().data(), id_len);	user_id[id_len] = '\0';	user_pwd = (char*)malloc(pwd_len+1);	memcpy(user_pwd, ED_Fetion_Pwd->text().toUtf8().data(), pwd_len);	user_pwd[pwd_len] = '\0';	char * poxy = getCacheServerAdd(user_id);	if(poxy) {		fx_set_serve_address(poxy);		free(poxy);	}	else		fx_set_unknow_serve_address();		QString state = loginState->currentText(); 	if( state == tr("offline") )		fx_set_login_status(FX_STATUS_OFFLINE);	else		if( state == tr("busy") )			fx_set_login_status(FX_STATUS_BUSY);		else			if( state == tr("away") )				fx_set_login_status(FX_STATUS_AWAY);			else				fx_set_login_status(FX_STATUS_ONLINE);	set_login_button_state(false);//	fx_set_proxy("221.130.46.144:8080");	if(!fx_login(user_id, user_pwd, My_EventListener, this))	{		set_login_button_state(true);		Login_State->setText( tr("password error"));	}	if (loginTimer.isActive())		loginTimer.stop();	loginTimer.start(1000*35);}void FxLoginWindow::login_timer(){	if (loginTimer.isActive())		loginTimer.stop();		Login_State->setText(tr("login time out"));	set_login_button_state(true);}bool FxLoginWindow::eventFilter(QObject *target, QEvent *event){   	if (event->type() == QEvent::KeyPress ) {		QKeyEvent *keyEvent = (QKeyEvent *) event;		if (keyEvent->key() == Qt::Key_Return) {			login();			return true;		}	}    return QObject::eventFilter(target, event);}

⌨️ 快捷键说明

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