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

📄 mainwin.cpp

📁 qgo-1.5.4-r3.tar.gz linux下一个很好玩的游戏
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/* *   mainwin.cpp - qGoClient's main window (cont. in tables.cpp) */#include "clientwindow_gui.h"#include "mainwin.h"#include "defines.h"#include "maintable.h"#include "playertable.h"#include "gamestable.h"#include "gamedialog.h"#include "qgo_interface.h"#include "komispinbox.h"#include "icons.h"#include "igsconnection.h"#include "mainwindow.h"#include "qnewgamedlg.h"#include "./pics/clientpics.h"#include <qaction.h>#include <qdir.h>#include <qcombobox.h>#include <qcheckbox.h>#include <qtabwidget.h>#include <qlabel.h>#include <qlineedit.h>#include <qevent.h>#include <qstatusbar.h>#include <qmainwindow.h>#include <qtooltip.h>#include <qwhatsthis.h>#include <qvaluelist.h>#include <qpopupmenu.h>#include <qtextstream.h>#include <qeucjpcodec.h> #include <qjiscodec.h> #include <qsjiscodec.h>#include <qgbkcodec.h>#include <qeuckrcodec.h>#include <qtsciicodec.h>#include <qpalette.h>#include <qaccel.h>#include <qtoolbutton.h>#include <qiconset.h>#include <qpixmap.h>#include <qbuttongroup.h> #include <qobjectlist.h> #include <qlistbox.h> #include <qmovie.h> #include <qradiobutton.h>#ifndef QGO_NOSTYLES#include <qplatinumstyle.h>#include <qmotifstyle.h>#include <qmotifplusstyle.h>#include <qcdestyle.h>#include <qsgistyle.h>#endif#include <qptrlist.h>/* *   Clientwindow = MainWidget */ClientWindow::ClientWindow(QMainWindow *parent, const char* name, WFlags fl)	: ClientWindowGui( parent, name, fl ), Misc<QString>(){	prefsIcon= QPixmap::QPixmap(qembed_findImage("package_settings"));//QPixmap(ICON_PREFS);//	infoIcon= QPixmap(ICON_GAMEINFO);	exitIcon =  QPixmap::QPixmap(qembed_findImage("exit"));//QPixmap(ICON_EXIT);	fileNewboardIcon = QPixmap::QPixmap(qembed_findImage("newboard"));//QPixmap(ICON_FILENEWBOARD);	fileNewIcon = QPixmap::QPixmap(qembed_findImage("filenew"));//QPixmap(ICON_FILENEW);	fileOpenIcon = QPixmap::QPixmap(qembed_findImage("fileopen"));//QPixmap(ICON_FILEOPEN);//	fileSaveIcon = QPixmap(ICON_FILESAVE);//	fileSaveAsIcon = QPixmap(ICON_FILESAVEAS);//	transformIcon = QPixmap(ICON_TRANSFORM);//	charIcon = QPixmap(ICON_CHARSET);	manualIcon = QPixmap::QPixmap(qembed_findImage("help"));//QPixmap(ICON_MANUAL);//	autoplayIcon = QPixmap(ICON_AUTOPLAY);	connectedIcon = QPixmap::QPixmap(qembed_findImage("connected"));//QPixmap(ICON_CONNECTED);             	disconnectedIcon = QPixmap::QPixmap(qembed_findImage("connect_no"));//QPixmap(ICON_DISCONNECTED);       	OpenIcon = QPixmap::QPixmap(qembed_findImage("open"));//QPixmap(ICON_OPEN);              	LookingIcon = QPixmap::QPixmap(qembed_findImage("looking"));//QPixmap(ICON_LOOKING);	QuietIcon= QPixmap::QPixmap(qembed_findImage("quiet"));//QPixmap(ICON_QUIET);	NotOpenIcon = QPixmap::QPixmap(qembed_findImage("not_open"));//QPixmap(ICON_NOT_OPEN);	NotLookingIcon = QPixmap::QPixmap(qembed_findImage("not_looking"));//QPixmap(ICON_NOT_LOOKING);	NotQuietIcon= QPixmap::QPixmap(qembed_findImage("not_quiet"));//QPixmap(ICON_NOT_QUIET);       	RefreshPlayersIcon = QPixmap::QPixmap(qembed_findImage("refresh_players"));//QPixmap(ICON_REFRESH_PLAYERS);    	RefreshGamesIcon = QPixmap::QPixmap(qembed_findImage("refresh_games"));//QPixmap(ICON_REFRESH_GAMES);        	ComputerPlayIcon = QPixmap::QPixmap(qembed_findImage("computerplay"));//QPixmap(ICON_COMPUTER_PLAY);	qgoIcon = QPixmap::QPixmap(qembed_findImage("Bowl"));//QPixmap(ICON_COMPUTER_PLAY);  	NotSeekingIcon = QPixmap::QPixmap(qembed_findImage("not_seeking"));	seekingIcon[0] = QPixmap::QPixmap(qembed_findImage("seeking1"));	seekingIcon[1] = QPixmap::QPixmap(qembed_findImage("seeking2"));	seekingIcon[2] = QPixmap::QPixmap(qembed_findImage("seeking3"));	seekingIcon[3] = QPixmap::QPixmap(qembed_findImage("seeking4"));	// init 	DODEBUG = false;	DD = 0;	setting->cw = this;	setIcon(setting->image0);	myAccount = new Account(this);		defaultStyle = qApp->style().name() ;	// this is very dirty : we do this because there seem to be no clean way to backtrack from MainWindow to the defaultStyle :-(	setting->writeEntry("DEFAULT_STYLE",defaultStyle ) ;  	hostlist.setAutoDelete(true);	cmd_count = 0;	sendBuffer.setAutoDelete(true);	currentCommand = new sendBuf("",0);  	resetCounter();	cmd_valid = false;	tn_ready = false;	tn_wait_for_tn_ready = false;//	tn_active = false;	extUserInfo = false;	youhavemsg = false;	playerListEmpty = true;	gamesListSteadyUpdate = false;	playerListSteadyUpdate = false;	autoAwayMessage = false;	watch = ";" + setting->readEntry("WATCH") + ";";	exclude = ";" + setting->readEntry("EXCLUDE") + ";";	// statistics	bytesIn = 0;	bytesOut = 0;	seekButtonTimer = 0;//	toolConnect = 0;	// set focus, clear entry field	cb_cmdLine->setFocus();	cb_cmdLine->clear();	cb_cmdLine->insertItem("");	// create instance of telnetConnection	telnetConnection = new TelnetConnection(this);	// create parser and connect signals	parser = new Parser();	connect(parser, SIGNAL(signal_player(Player*, bool)), SLOT(slot_player(Player*, bool)));  	connect(parser, SIGNAL(signal_statsPlayer(Player*)), SLOT(slot_statsPlayer(Player*)));	connect(parser, SIGNAL(signal_game(Game*)), SLOT(slot_game(Game*)));	connect(parser, SIGNAL(signal_message(QString)), SLOT(slot_message(QString)));	connect(parser, SIGNAL(signal_svname(GSName&)), SLOT(slot_svname(GSName&)));	connect(parser, SIGNAL(signal_accname(QString&)), SLOT(slot_accname(QString&)));	connect(parser, SIGNAL(signal_status(Status)), SLOT(slot_status(Status)));	connect(parser, SIGNAL(signal_connclosed()), SLOT(slot_connclosed()));	connect(parser, SIGNAL(signal_talk(const QString&, const QString&, bool)), SLOT(slot_talk(const QString&, const QString&, bool)));	connect(parser, SIGNAL(signal_checkbox(int, bool)), SLOT(slot_checkbox(int, bool)));	connect(parser, SIGNAL(signal_addToObservationList(int)), SLOT(slot_addToObservationList(int)));	connect(parser, SIGNAL(signal_channelinfo(int, const QString&)), SLOT(slot_channelinfo(int, const QString&)));	connect(parser, SIGNAL(signal_matchrequest(const QString&, bool)), this, SLOT(slot_matchrequest(const QString&, bool)));  	connect(parser, SIGNAL(signal_matchCanceled(const QString&)), this, SLOT(slot_removeMatchDialog(const QString&)));	connect(parser, SIGNAL(signal_shout(const QString&, const QString&)), SLOT(slot_shout(const QString&, const QString&)));	connect(parser, SIGNAL(signal_room(const QString&, bool)),SLOT(slot_room(const QString&, bool)));	connect(parser, SIGNAL(signal_addSeekCondition(const QString&,const QString&, const QString&, const QString&, const QString&)),this,			SLOT(slot_addSeekCondition(const QString&, const QString&, const QString&, const QString&, const QString&)));	connect(parser, SIGNAL(signal_clearSeekCondition()),this,SLOT(slot_clearSeekCondition()));	connect(parser, SIGNAL(signal_cancelSeek()),this,SLOT(slot_cancelSeek()));	connect(parser, SIGNAL(signal_SeekList(const QString&, const QString&)),this,SLOT(slot_SeekList(const QString&, const QString&)));	connect(parser, SIGNAL(signal_refresh(int)),this, SLOT(slot_refresh(int)));	// connect mouse to games table/player table	connect(ListView_games, SIGNAL(contextMenuRequested(QListViewItem*, const QPoint&, int)),	                        SLOT(slot_menu_games(QListViewItem*, const QPoint&, int)));	// doubleclick	connect(ListView_games, SIGNAL(doubleClicked(QListViewItem*)),							SLOT(slot_click_games(QListViewItem*))); 	// move/*	connect(ListView_games, SIGNAL(onViewport()),							SLOT(slot_moveOver_games()));*/  	connect(ListView_players, SIGNAL(contextMenuRequested(QListViewItem*, const QPoint&, int)),							SLOT(slot_menu_players(QListViewItem*, const QPoint&, int)));	// doubleclick	connect(ListView_players, SIGNAL(doubleClicked(QListViewItem*)),							SLOT(slot_click_players(QListViewItem*))); 	// move/*	connect(ListView_players, SIGNAL(onViewport()),							SLOT(slot_moveOver_players()));*/	// restore last setting	if (!setting)	{		setting = new Setting();		setting->loadSettings();	}	// View Statusbar                          	initStatusBar(this);	// Sets actions	initActions();	// Set menus	//initmenus(this);	// Sets toolbar	initToolBar();                              //end add eb 5	int i;	QString s;// ----// BEGIN find outdated keys:// ----	if (setting->readIntEntry("VERSION") < SETTING_VERSION)	{		// version settings are not actual		int s_v = setting->readIntEntry("VERSION");		switch (s_v)		{			case 0:				for (i = 1; i < 5; i++)				{					s = setting->readEntry("USER" + QString::number(i));					if (s.length() > 0)					{						QString i_ = QString::number(i);						setting->writeEntry("USER" + i_ + "_1", element(s, 0, DELIMITER));						setting->writeEntry("USER" + i_ + "_2", element(s, 1, DELIMITER));						setting->writeEntry("USER" + i_ + "_3", element(s, 2, DELIMITER));						// delete old label						setting->writeEntry("USER" + i_, 0);					}				}				setting->writeEntry("HOSTWINDOW", 0);				i = 0;				while ((s = setting->readEntry("HOST" + QString::number(++i))) != NULL)				{					// check if 4 delimiters in s					if (s.contains(DELIMITER) == 4)					{						setting->writeEntry("HOST" + QString::number(i) + "a", element(s, 0, DELIMITER));						setting->writeEntry("HOST" + QString::number(i) + "b", element(s, 1, DELIMITER));						setting->writeIntEntry("HOST" + QString::number(i) + "c", element(s, 2, DELIMITER).toInt());						setting->writeEntry("HOST" + QString::number(i) + "d", element(s, 3, DELIMITER));						setting->writeEntry("HOST" + QString::number(i) + "e", element(s, 4, DELIMITER));					}					// delete old hosts					setting->writeEntry("HOST" + QString::number(i), QString());				}				break;			default:				break;		}	}// ----// END find// ----	// restore: hostlist	i = 0;	while ((s = setting->readEntry("HOST" + QString::number(++i) + "a")) != NULL)	{		hostlist.inSort(new Host(setting->readEntry("HOST" + QString::number(i) + "a"),			                     setting->readEntry("HOST" + QString::number(i) + "b"),			                     setting->readIntEntry("HOST" + QString::number(i) + "c"),			                     setting->readEntry("HOST" + QString::number(i) + "d"),			                     setting->readEntry("HOST" + QString::number(i) + "e"),			                     setting->readEntry("HOST" + QString::number(i) + "f")));	}	// run slot command to initialize combobox and set host	QString w = setting->readEntry("ACTIVEHOST");	// int cb_connect	slot_cbconnect(QString());	if (w)		// set host if available		slot_cbconnect(w);  //restore user buttons list  i = 0;  QToolButton *b;  QPixmap p;  userButtonGroup = new   QButtonGroup(this);  userButtonGroup->hide();  connect( userButtonGroup, SIGNAL(clicked(int)), SLOT(slotUserButtonClicked(int)) );    while ((s = setting->readEntry("USER" + QString::number(++i) + "_1")) != NULL)  {    	b=new QToolButton(UserToolbar) ;    	b->setText(setting->readEntry("USER" + QString::number(i) + "_1"));   //label of the button : for display    	b->setTextLabel(setting->readEntry("USER" + QString::number(i) + "_1"));   //duplicated  for storage    	b->setCaption(setting->readEntry("USER" + QString::number(i) + "_2")); //dirty but handy    	QToolTip::add(b,setting->readEntry("USER" + QString::number(i) + "_3"));   	 b->setIconText(setting->readEntry("USER" + QString::number(i) + "_4"));  //dirty but handy        	b->setMinimumWidth(25);    	if (p.load(b->iconText()))      		b->setPixmap(p);    	userButtonGroup->insert(b,-1);  }  //restore players list filters  whoBox1->setCurrentItem(setting->readIntEntry("WHO_1"));  whoBox2->setCurrentItem(setting->readIntEntry("WHO_2"));  whoOpenCheck->setChecked(setting->readIntEntry("WHO_CB"));    	// restore size of client window	s = setting->readEntry("CLIENTWINDOW");	if (s.length() > 5)	{		QPoint p;		p.setX(element(s, 0, DELIMITER).toInt());		p.setY(element(s, 1, DELIMITER).toInt());		QSize sz;		sz.setWidth(element(s, 2, DELIMITER).toInt());		sz.setHeight(element(s, 3, DELIMITER).toInt());		resize(sz);		move(p);	}	// restore splitter in client window	s = setting->readEntry("CLIENTSPLITTER");	if (s.length() > 5)	{		QValueList<int> w1, h1, w2;		w1 << element(s, 0, DELIMITER).toInt() << element(s, 1, DELIMITER).toInt();		h1 << element(s, 2, DELIMITER).toInt() << element(s, 3, DELIMITER).toInt();		w2 << element(s, 4, DELIMITER).toInt() << element(s, 5, DELIMITER).toInt();		//mainTable->s1->setSizes(w1);    		s1->setSizes(w1);		s2->setSizes(h1);		s3->setSizes(w2);	}	// restore size of debug window	s = setting->readEntry("DEBUGWINDOW");	if (s.length() > 5)	{		view_p.setX(element(s, 0, DELIMITER).toInt());		view_p.setY(element(s, 1, DELIMITER).toInt());		view_s.setWidth(element(s, 2, DELIMITER).toInt());		view_s.setHeight(element(s, 3, DELIMITER).toInt());	}	else	{		view_p = QPoint();		view_s = QSize();	}	// restore size of menu window	s = setting->readEntry("MENUWINDOW");	if (s.length() > 5)	{		menu_p.setX(element(s, 0, DELIMITER).toInt());		menu_p.setY(element(s, 1, DELIMITER).toInt());		menu_s.setWidth(element(s, 2, DELIMITER).toInt());		menu_s.setHeight(element(s, 3, DELIMITER).toInt());	}	else	{		menu_p = QPoint();		menu_s = QSize();	}	// restore size of preferences window	s = setting->readEntry("PREFWINDOW");	if (s.length() > 5)	{		pref_p.setX(element(s, 0, DELIMITER).toInt());		pref_p.setY(element(s, 1, DELIMITER).toInt());		pref_s.setWidth(element(s, 2, DELIMITER).toInt());		pref_s.setHeight(element(s, 3, DELIMITER).toInt());	}	else	{		pref_p = QPoint();		pref_s = QSize();	}	// 'user' cmd instead of 'who'?	setColumnsForExtUserInfo();	// create qGo Interface for board handling	qgoif = new qGoIF(this);	// qGo Interface		connect(parser, SIGNAL(signal_set_observe( const QString&)), qgoif, SLOT(set_observe(const QString&)));	connect(parser, SIGNAL(signal_move(GameInfo*)), qgoif, SLOT(slot_move(GameInfo*)));	connect(parser, SIGNAL(signal_move(Game*)), qgoif, SLOT(slot_move(Game*)));	connect(parser, SIGNAL(signal_kibitz(int, const QString&, const QString&)), qgoif, SLOT(slot_kibitz(int, const QString&, const QString&)));	connect(parser, SIGNAL(signal_title(const QString&)), qgoif, SLOT(slot_title(const QString&)));	connect(parser, SIGNAL(signal_komi(const QString&, const QString&, bool)), qgoif, SLOT(slot_komi(const QString&, const QString&, bool)));	connect(parser, SIGNAL(signal_freegame(bool)), qgoif, SLOT(slot_freegame(bool)));	connect(parser, SIGNAL(signal_matchcreate(const QString&, const QString&)), qgoif, SLOT(slot_matchcreate(const QString&, const QString&)));	connect(parser, SIGNAL(signal_removestones(const QString&, const QString&)), qgoif, SLOT(slot_removestones(const QString&, const QString&)));	connect(parser, SIGNAL(signal_undo(const QString&, const QString&)), qgoif, SLOT(slot_undo(const QString&, const QString&)));	connect(parser, SIGNAL(signal_result(const QString&, const QString&, bool, const QString&)), qgoif, SLOT(slot_result(const QString&, const QString&, bool, const QString&)));	connect(parser, SIGNAL(signal_requestDialog(const QString&, const QString&, const QString&, const QString&)), qgoif, SLOT(slot_requestDialog(const QString&, const QString&, const QString&, const QString&)));	connect(this, SIGNAL(signal_move(Game*)), qgoif, SLOT(slot_move(Game*))); 	connect(this, SIGNAL(signal_computer_game(QNewGameDlg*)), qgoif, SLOT(slot_computer_game(QNewGameDlg*)));//SL added eb 12	connect(qgoif, SIGNAL(signal_sendcommand(const QString&, bool)), this, SLOT(slot_sendcommand(const QString&, bool)));	connect(qgoif, SIGNAL(signal_addToObservationList(int)), this, SLOT(slot_addToObservationList(int)));	connect(qgoif->get_qgo(), SIGNAL(signal_updateFont()), this, SLOT(slot_updateFont()));	connect(parser, SIGNAL(signal_timeAdded(int, bool)), qgoif, SLOT(slot_timeAdded(int, bool)));	//connect(parser, SIGNAL(signal_undoRequest(const QString&)), qgoif, SLOT(slot_undoRequest(const QString&)));	//gamestable//	connect(ListView_players, SIGNAL(contentsMoving(int, int)), this, SLOT(slot_playerContentsMoving(int, int)));	connect(ListView_games, SIGNAL(contentsMoving(int, int)), this, SLOT(slot_gamesContentsMoving(int, int)));	// add menu bar and status bar//	MainAppWidgetLayout->addWidget(menuBar, 0, 0);/*#ifndef QGO_NOSTYLES	// set style - same as set up a board with qgoif	int style = setting->readEntry("STYLE").toInt();	if (style < 0 || style > 6)	{		setting->writeEntry("STYLE", "0");		style = 0;	}   		switch (style)	{    case 0:      //qApp->setStyle(NULL);		  break;    		case 1:			qApp->setStyle(new QWindowsStyle);			break;		case 2:			qApp->setStyle(new QPlatinumStyle);			break;		case 3:			qApp->setStyle(new QMotifStyle);			break;		case 4:			qApp->setStyle(new QMotifPlusStyle);			break;#ifdef Q_WS_WIN// there seems to be a problem within X11...		case 5:			qApp->setStyle(new QCDEStyle);			break;		case 6:			qApp->setStyle(new QSGIStyle);			break;#endif		case 6:

⌨️ 快捷键说明

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