7
#include "gamestable.h"
8
#include "playertable.h"
11
//#include <qmultilineedit.h>
12
#include <qtextedit.h>
13
#include <qpushbutton.h>
14
#include <qtabwidget.h>
18
#include <qwhatsthis.h>
19
#include <qmainwindow.h>
20
#include <qcombobox.h>
25
* Constructs a MainAppWidget as a child of 'parent', with the
26
* name 'name' and widget flags set to 'f'.
29
MainAppWidget::MainAppWidget( QWidget* parent, const char* name, WFlags fl )
30
: QMainWindow( parent, name, fl )
34
setName( "MainAppWidget" );
35
setCentralWidget( new QWidget( this, "qt_central_widget" ) );
36
MainAppWidgetLayout = new QGridLayout( centralWidget(), 1, 1, 2, 2, "MainAppWidgetLayout");
38
mainTable = new MainTable( centralWidget(), "mainTable" );
40
MainAppWidgetLayout->addMultiCellWidget( mainTable, 0, 1, 0, 1 );
42
cb_cmdLine = new QComboBox( FALSE, centralWidget(), "cb_cmdLine" );
43
cb_cmdLine->setProperty( "sizePolicy", QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, cb_cmdLine->sizePolicy().hasHeightForWidth() ) );
44
cb_cmdLine->setProperty( "editable", QVariant( TRUE, 0 ) );
46
MainAppWidgetLayout->addMultiCellWidget( cb_cmdLine, 2, 2, 0, 1 );
49
resize( QSize(483, 574).expandedTo(minimumSizeHint()) );
50
clearWState( WState_Polished );
52
// signals and slots connections
53
connect( cb_cmdLine, SIGNAL( activated(int) ), this, SLOT( slot_cmdactivated_int(int) ) );
54
connect( cb_cmdLine, SIGNAL( activated(const QString&) ), this, SLOT( slot_cmdactivated(const QString&) ) );
60
* Destroys the object and frees any allocated resources
62
MainAppWidget::~MainAppWidget()
64
// no need to delete child widgets, Qt does it all for us
68
* Sets the strings of the subwidgets using the current
71
void MainAppWidget::languageChange()
73
setProperty( "caption", tr( "MainAppWidget" ) );
74
QWhatsThis::add( cb_cmdLine, tr( "Command line\n"
76
"Type <command>+<ENTER> to send to Go server. If not online use 'connect' button first.\n"
78
"Starting with '#' is a internal command as if the server sent the line (without '#').\n"
80
"In order to open a window use the mouse click instead of entering the 'observe' command." ) );
83
void MainAppWidget::slot_cmdactivated(const QString&)
85
qWarning( "MainAppWidget::slot_cmdactivated(const QString&): Not implemented yet" );
88
void MainAppWidget::slot_cmdactivated_int(int)
90
qWarning( "MainAppWidget::slot_cmdactivated_int(int): Not implemented yet" );
94
MainTable::MainTable(QWidget* parent, const char* name, WFlags fl)
95
: QWidget(parent, name, fl)
97
s1 = new QSplitter(Horizontal, this);
98
s2 = new QSplitter(Vertical, s1);
99
s3 = new QSplitter(Vertical, s1);
101
mainTableLayout = new QGridLayout(this);
102
mainTableLayout->setSpacing(6);
103
mainTableLayout->setMargin(0);
105
TabWidget_mini = new QTabWidget(s3, "TabWidget_mini");
106
TabWidget_mini->setProperty("sizePolicy", QSizePolicy((QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, TabWidget_mini->sizePolicy().hasHeightForWidth()));
107
TabWidget_mini->setProperty("focusPolicy", (int)QTabWidget::NoFocus);
109
games = new QWidget(TabWidget_mini, "games");
110
gamesLayout = new QGridLayout(games);
111
gamesLayout->setSpacing(6);
112
gamesLayout->setMargin(0);
114
ListView_games = new GamesTable(games, "ListView_games");
115
ListView_games->setProperty("sizePolicy", QSizePolicy((QSizePolicy::SizeType)7, (QSizePolicy::SizeType)5, ListView_games->sizePolicy().hasHeightForWidth()));
116
QWhatsThis::add(ListView_games, tr("Table of games\n\n"
117
"right click to observe\n\n"
118
"Symbol explanation: (click on tab to sort by)\n"
120
"White/WR\twhite player's name and rank\n"
121
"Black/BR\tblack player's name and rank\n"
122
"Mv\tnumber of moves at last refresh\n"
127
"FR\tfree (FI), rated (I) or teach (TI) game\n"
128
"(Ob)\tnumber of observers at last refresh\n\n"
129
"This table can be updated by 'Refresh games'"));
131
gamesLayout->addWidget(ListView_games, 0, 0);
132
TabWidget_mini->insertTab(games, tr("Games"));
134
MultiLineEdit2 = new QTextEdit(s3, "MultiLineEdit2");
135
s3->setResizeMode(MultiLineEdit2, QSplitter::KeepSize);
136
MultiLineEdit2->setCurrentFont(setting->fontComments);
137
MultiLineEdit2->setProperty("focusPolicy", (int)QTextEdit::NoFocus);
138
MultiLineEdit2->setProperty("readOnly", QVariant(TRUE, 0));
139
QToolTip::add(MultiLineEdit2, tr("relevant messages from/to server"));
141
TabWidget_players = new QTabWidget(s2, "TabWidget_mini");
142
TabWidget_players->setProperty("sizePolicy", QSizePolicy((QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, TabWidget_mini->sizePolicy().hasHeightForWidth()));
143
TabWidget_players->setProperty("focusPolicy", (int)QTabWidget::NoFocus);
145
players = new QWidget(TabWidget_players, "players");
146
playersLayout = new QGridLayout(players);
147
playersLayout->setSpacing(6);
148
playersLayout->setMargin(0);
150
ListView_players = new PlayerTable(players, "ListView_players");
151
ListView_players->setProperty("sizePolicy", QSizePolicy((QSizePolicy::SizeType)1, (QSizePolicy::SizeType)7, ListView_players->sizePolicy().hasHeightForWidth()));
152
QWhatsThis::add(ListView_players, tr("Table of players\n\n"
153
"right click for menu\n\n"
154
"Symbol explanation: (click on tab to sort by)\n"
155
"Stat\tplayer's stats:\n"
157
"\t!...looking = wants to play a game\n"
158
"\tQ...quiet = doesn't receive system messages\n"
159
"\tS...shout = can't receive shouts\n"
160
"\t??...unknown - player entered after last table update\n"
161
"name\tplayer's name\n"
162
"Rk\tplayer's rank\n"
163
"pl\tplaying game (only one game visible)\n"
164
"ob\tobserving game (only one game visible)\n"
168
"\tX..excluded from shout\n"
169
"\tW..watched (sort: X entries, then Rk)\n"
170
"and, if extended player info (Toolbox) is active (IGS only):\n"
171
"Info\tplayer's info string\n"
172
"Won\tnumber of games won by player\n"
173
"Lost\tnumber of games lost by player\n"
174
"Country\torigin of player (from e-mail address)\n"
175
"Lang\tpreferred language\n\n"
176
"This table can be updated by 'Refresh players'\n\n"
177
"Menu entries (right click):\n"
178
"match\trequest for match (dialog arises)\n"
179
"talk\ttalk to player (tab arises)\n"
181
"stats\t\tshow player's stats\n"
182
"stored games\tshow stored games\n"
183
"results\t\tshow results\n"
184
"rating\t\tshow rating (NNGS/IGS only)\n"
185
"observe game\tshow game currently played by player\n"
187
"toggle watch list\t\tput/remove player to/from watch list - make 'W' entry at 'X' column; entry/leave sounds are activated\n"
188
"toggle exclude list\tsimilar to watch - make 'X' entry; player's shouts are no longer shown"));
190
playersLayout->addWidget(ListView_players, 0, 0);
191
TabWidget_players->insertTab(players, tr("Players"));
193
TabWidget_mini_2 = new QTabWidget(s2, "TabWidget_mini_2");
194
s2->setResizeMode(TabWidget_mini_2, QSplitter::KeepSize);
195
TabWidget_mini_2->setProperty("sizePolicy", QSizePolicy((QSizePolicy::SizeType)1, (QSizePolicy::SizeType)7, TabWidget_mini_2->sizePolicy().hasHeightForWidth()));
196
TabWidget_mini_2->setProperty("focusPolicy", (int)QTabWidget::NoFocus);
197
TabWidget_mini_2->setProperty("tabPosition", (int)QTabWidget::Bottom);
199
shout = new QWidget(TabWidget_mini_2, "shout");
200
shoutLayout = new QGridLayout(shout);
201
shoutLayout->setSpacing(6);
202
shoutLayout->setMargin(0);
204
MultiLineEdit3 = new QTextEdit(shout, "MultiLineEdit3");
205
MultiLineEdit3->setCurrentFont(setting->fontComments);
206
MultiLineEdit3->setProperty("focusPolicy", (int)QTextEdit::NoFocus);
207
MultiLineEdit3->setProperty("readOnly", QVariant(TRUE, 0));
208
QToolTip::add(MultiLineEdit3, tr("Log online-time and name of arriving message"));
210
shoutLayout->addWidget(MultiLineEdit3, 0, 0);
212
pb_releaseTalkTabs = new QPushButton(tr("Close all talk tabs"), shout, "HideAllTalkTabs");
213
QWhatsThis::add(pb_releaseTalkTabs, tr("Close all tabs containing a player's name (without '*'). The messages will not be deleted. "
214
"If you want to see it again click with right button on player's name and choose talk (same as '#24 *name*')"));
216
shoutLayout->addWidget(pb_releaseTalkTabs, 1, 0);
218
TabWidget_mini_2->insertTab(shout, tr("msg*"));
220
mainTableLayout->addWidget(s1, 0, 0);
224
* Destroys the object and frees any allocated resources
227
MainTable::~MainTable()
229
// no need to delete child widgets, Qt does it all for us
233
* Main event handler. Reimplemented to handle application
237
bool MainTable::event(QEvent* ev)
239
bool ret = QWidget::event(ev);
240
if (ev->type() == QEvent::ApplicationFontChange)
243
QFont MultiLineEdit2_font( MultiLineEdit2->font());
244
MultiLineEdit2_font.setFamily("Courier");
245
MultiLineEdit2_font.setPointSize(10);
246
MultiLineEdit2->setFont(MultiLineEdit2_font);
247
QFont MultiLineEdit3_font( MultiLineEdit3->font());
248
MultiLineEdit3_font.setFamily("Courier");
249
MultiLineEdit3_font.setPointSize(10);
250
MultiLineEdit3->setFont(MultiLineEdit3_font);
252
MultiLineEdit2->setCurrentFont(setting->fontComments);
253
MultiLineEdit3->setCurrentFont(setting->fontComments);