~ubuntu-branches/ubuntu/maverick/qgo/maverick

« back to all changes in this revision

Viewing changes to src/maintable.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Martin A. Godisch
  • Date: 2005-01-01 23:07:10 UTC
  • Revision ID: james.westby@ubuntu.com-20050101230710-fhng6yidm47xlb2i
Tags: upstream-1.0.0-r2
ImportĀ upstreamĀ versionĀ 1.0.0-r2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *   maintable.cpp
 
3
 */
 
4
 
 
5
#include "maintable.h"
 
6
#include "setting.h"
 
7
#include "gamestable.h"
 
8
#include "playertable.h"
 
9
#include "icons.h"
 
10
 
 
11
//#include <qmultilineedit.h>
 
12
#include <qtextedit.h>
 
13
#include <qpushbutton.h>
 
14
#include <qtabwidget.h>
 
15
#include <qlayout.h>
 
16
#include <qvariant.h>
 
17
#include <qtooltip.h>
 
18
#include <qwhatsthis.h>
 
19
#include <qmainwindow.h>
 
20
#include <qcombobox.h>
 
21
#include <qimage.h>
 
22
#include <qpixmap.h>
 
23
 
 
24
/* 
 
25
 *  Constructs a MainAppWidget as a child of 'parent', with the 
 
26
 *  name 'name' and widget flags set to 'f'.
 
27
 *
 
28
 */
 
29
MainAppWidget::MainAppWidget( QWidget* parent, const char* name, WFlags fl )
 
30
        : QMainWindow( parent, name, fl )
 
31
{
 
32
        (void)statusBar();
 
33
        if ( !name )
 
34
        setName( "MainAppWidget" );
 
35
        setCentralWidget( new QWidget( this, "qt_central_widget" ) );
 
36
        MainAppWidgetLayout = new QGridLayout( centralWidget(), 1, 1, 2, 2, "MainAppWidgetLayout"); 
 
37
 
 
38
        mainTable = new MainTable( centralWidget(), "mainTable" );
 
39
 
 
40
        MainAppWidgetLayout->addMultiCellWidget( mainTable, 0, 1, 0, 1 );
 
41
 
 
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 ) );
 
45
 
 
46
        MainAppWidgetLayout->addMultiCellWidget( cb_cmdLine, 2, 2, 0, 1 );
 
47
 
 
48
        languageChange();
 
49
        resize( QSize(483, 574).expandedTo(minimumSizeHint()) );
 
50
        clearWState( WState_Polished );
 
51
 
 
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&) ) );
 
55
 
 
56
        // tab order
 
57
}
 
58
 
 
59
/*
 
60
 *  Destroys the object and frees any allocated resources
 
61
 */
 
62
MainAppWidget::~MainAppWidget()
 
63
{
 
64
    // no need to delete child widgets, Qt does it all for us
 
65
}
 
66
 
 
67
/*
 
68
 *  Sets the strings of the subwidgets using the current
 
69
 *  language.
 
70
 */
 
71
void MainAppWidget::languageChange()
 
72
{
 
73
        setProperty( "caption", tr( "MainAppWidget" ) );
 
74
        QWhatsThis::add( cb_cmdLine, tr( "Command line\n"
 
75
                "\n"
 
76
                "Type <command>+<ENTER> to send to Go server. If not online use 'connect' button first.\n"
 
77
                "\n"
 
78
                "Starting with '#' is a internal command as if the server sent the line (without '#').\n"
 
79
                "\n"
 
80
                "In order to open a window use the mouse click instead of entering the 'observe' command." ) );
 
81
}
 
82
 
 
83
void MainAppWidget::slot_cmdactivated(const QString&)
 
84
{
 
85
        qWarning( "MainAppWidget::slot_cmdactivated(const QString&): Not implemented yet" );
 
86
}
 
87
 
 
88
void MainAppWidget::slot_cmdactivated_int(int)
 
89
{
 
90
        qWarning( "MainAppWidget::slot_cmdactivated_int(int): Not implemented yet" );
 
91
}
 
92
 
 
93
 
 
94
MainTable::MainTable(QWidget* parent,  const char* name, WFlags fl)
 
95
    : QWidget(parent, name, fl)
 
96
{
 
97
        s1 = new QSplitter(Horizontal, this);
 
98
        s2 = new QSplitter(Vertical, s1);
 
99
        s3 = new QSplitter(Vertical, s1);
 
100
 
 
101
        mainTableLayout = new QGridLayout(this); 
 
102
        mainTableLayout->setSpacing(6);
 
103
        mainTableLayout->setMargin(0);
 
104
 
 
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);
 
108
 
 
109
        games = new QWidget(TabWidget_mini, "games");
 
110
        gamesLayout = new QGridLayout(games); 
 
111
        gamesLayout->setSpacing(6);
 
112
        gamesLayout->setMargin(0);
 
113
 
 
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"
 
119
                "Id\tgame number\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"
 
123
                "Sz\tboard size\n"
 
124
                "H\thandicap\n"
 
125
                "K\tkomi\n"
 
126
                "By\tbyoyomi time\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'"));
 
130
 
 
131
        gamesLayout->addWidget(ListView_games, 0, 0);
 
132
        TabWidget_mini->insertTab(games, tr("Games"));
 
133
 
 
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"));
 
140
 
 
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);
 
144
 
 
145
        players = new QWidget(TabWidget_players, "players");
 
146
        playersLayout = new QGridLayout(players); 
 
147
        playersLayout->setSpacing(6);
 
148
        playersLayout->setMargin(0);
 
149
 
 
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"
 
156
                "\tX...close\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"
 
165
                "Idle\tidle time\n"
 
166
                "X\tprivate info:\n"
 
167
                "\tM..me\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"
 
180
                "----\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"
 
186
                "----\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"));
 
189
 
 
190
        playersLayout->addWidget(ListView_players, 0, 0);
 
191
        TabWidget_players->insertTab(players, tr("Players"));
 
192
 
 
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);
 
198
 
 
199
        shout = new QWidget(TabWidget_mini_2, "shout");
 
200
        shoutLayout = new QGridLayout(shout); 
 
201
        shoutLayout->setSpacing(6);
 
202
        shoutLayout->setMargin(0);
 
203
 
 
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"));
 
209
 
 
210
        shoutLayout->addWidget(MultiLineEdit3, 0, 0);
 
211
 
 
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*')"));
 
215
 
 
216
        shoutLayout->addWidget(pb_releaseTalkTabs, 1, 0);
 
217
 
 
218
        TabWidget_mini_2->insertTab(shout, tr("msg*"));
 
219
 
 
220
        mainTableLayout->addWidget(s1, 0, 0);
 
221
}
 
222
 
 
223
/*  
 
224
 *  Destroys the object and frees any allocated resources
 
225
 */
 
226
 
 
227
MainTable::~MainTable()
 
228
{
 
229
    // no need to delete child widgets, Qt does it all for us
 
230
}
 
231
 
 
232
/*  
 
233
 *  Main event handler. Reimplemented to handle application
 
234
 *  font changes
 
235
 */
 
236
 
 
237
bool MainTable::event(QEvent* ev)
 
238
{
 
239
        bool ret = QWidget::event(ev); 
 
240
        if (ev->type() == QEvent::ApplicationFontChange)
 
241
        {
 
242
/*
 
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); 
 
251
*/
 
252
                MultiLineEdit2->setCurrentFont(setting->fontComments);
 
253
                MultiLineEdit3->setCurrentFont(setting->fontComments);
 
254
        }
 
255
        return ret;
 
256
}
 
257
 
 
258