QTfrontend/AbstractPage.h
author nemo
Sun, 14 Aug 2011 23:52:45 -0400
changeset 5569 8313952b2811
parent 5205 78138ae93820
child 6009 14f6fc9869f2
permissions -rw-r--r--
suggestion of mikade's - delete old mines if the collision array shows signs of filling up. This is kind of an edge case, esp now that array is up to 1024, but should prevent (easiest) way to crash by collision array overflow (endless mines/minestrikes).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     1
/*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 788
diff changeset
     2
 * Hedgewars, a free turn based strategy game
4976
088d40d8aba2 Happy 2011 :)
koda
parents: 4870
diff changeset
     3
 * Copyright (c) 2006-2011 Andrey Korotaev <unC0Rr@gmail.com>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     4
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     8
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    12
 * GNU General Public License for more details.
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    13
 *
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    14
 * You should have received a copy of the GNU General Public License
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    15
 * along with this program; if not, write to the Free Software
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    17
 */
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    18
5205
78138ae93820 some headers cleanup and rename of stats and playrecord pages for consistency
koda
parents: 5204
diff changeset
    19
#ifndef ABSTRACTPAGE_H
78138ae93820 some headers cleanup and rename of stats and playrecord pages for consistency
koda
parents: 5204
diff changeset
    20
#define ABSTRACTPAGE_H
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    21
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    22
#include <QWidget>
684
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    23
#include <QPushButton>
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    24
#include <QFont>
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    25
#include <QGridLayout>
5205
78138ae93820 some headers cleanup and rename of stats and playrecord pages for consistency
koda
parents: 5204
diff changeset
    26
#include <QComboBox>
1840
4747f0232b88 ttsmj2's random teams patch
unc0rr
parents: 1812
diff changeset
    27
#include <QSignalMapper>
184
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    28
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    29
class QPushButton;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    30
class QGroupBox;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    31
class QComboBox;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    32
class QLabel;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    33
class QToolBox;
f97a7a3dc8f6 - Update more headers
unc0rr
parents: 183
diff changeset
    34
class QLineEdit;
665
5c7bfc8bac6a Start move from custom widgets to custom models
unc0rr
parents: 657
diff changeset
    35
class QListWidget;
5c7bfc8bac6a Start move from custom widgets to custom models
unc0rr
parents: 657
diff changeset
    36
class QCheckBox;
5c7bfc8bac6a Start move from custom widgets to custom models
unc0rr
parents: 657
diff changeset
    37
class QSpinBox;
5c7bfc8bac6a Start move from custom widgets to custom models
unc0rr
parents: 657
diff changeset
    38
class QTextEdit;
5c7bfc8bac6a Start move from custom widgets to custom models
unc0rr
parents: 657
diff changeset
    39
class QRadioButton;
5c7bfc8bac6a Start move from custom widgets to custom models
unc0rr
parents: 657
diff changeset
    40
class QTableView;
1377
a9e768739345 - Customize QTextBrowser look
unc0rr
parents: 1315
diff changeset
    41
class QTextBrowser;
1399
ada2411c1d60 Show additional info in rooms list
unc0rr
parents: 1395
diff changeset
    42
class QTableWidget;
1409
d1cbe4a57ebf Add button for controlling room options (no usefull yet)
unc0rr
parents: 1399
diff changeset
    43
class QAction;
1885
75489216b5b0 Continue work on new schemes
unc0rr
parents: 1884
diff changeset
    44
class QDataWidgetMapper;
1887
d68939b3f7f0 - Share model between test table and widgets
unc0rr
parents: 1885
diff changeset
    45
class QAbstractItemModel;
2773
e94f240a8a41 Have game beep when someone joins lobby/room. Controlled by Sound option
nemo
parents: 2762
diff changeset
    46
class QSettings;
3708
64e059b6f9c5 applied from experimental3D, use a slider to set up quality
koda
parents: 3695
diff changeset
    47
class QSlider;
665
5c7bfc8bac6a Start move from custom widgets to custom models
unc0rr
parents: 657
diff changeset
    48
684
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    49
class AbstractPage : public QWidget
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    50
{
2948
3f21a9dc93d0 Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents: 2915
diff changeset
    51
    Q_OBJECT
1885
75489216b5b0 Continue work on new schemes
unc0rr
parents: 1884
diff changeset
    52
684
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    53
 public:
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    54
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    55
 protected:
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    56
  AbstractPage(QWidget* parent = 0) {
4560
5d6c7f88db73 - Some work on drawMap widget and scene to allow undo, clear, save and load operations
unc0rr
parents: 4520
diff changeset
    57
    Q_UNUSED(parent);
5d6c7f88db73 - Some work on drawMap widget and scene to allow undo, clear, save and load operations
unc0rr
parents: 4520
diff changeset
    58
684
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    59
    font14 = new QFont("MS Shell Dlg", 14);
4592
b1fe47b11b99 disable fix for issue 24 in order to fix issue 123, as suggested by koda
sheepluva
parents: 4586
diff changeset
    60
    //setFocusPolicy(Qt::StrongFocus);
684
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    61
  }
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    62
  virtual ~AbstractPage() {};
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    63
1152
c72b939c00df Make buttons border have different colors when mouse is over or it is pressed
unc0rr
parents: 1150
diff changeset
    64
  QPushButton* addButton(QString btname, QGridLayout* grid, int wy, int wx, bool iconed = false) {
684
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    65
    QPushButton* butt = new QPushButton(this);
1152
c72b939c00df Make buttons border have different colors when mouse is over or it is pressed
unc0rr
parents: 1150
diff changeset
    66
    if (!iconed) {
1148
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    67
      butt->setFont(*font14);
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    68
      butt->setText(btname);
1409
d1cbe4a57ebf Add button for controlling room options (no usefull yet)
unc0rr
parents: 1399
diff changeset
    69
      //butt->setStyleSheet("background-color: #0d0544");
1148
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    70
    } else {
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    71
      const QIcon& lp=QIcon(btname);
1152
c72b939c00df Make buttons border have different colors when mouse is over or it is pressed
unc0rr
parents: 1150
diff changeset
    72
      QSize sz = lp.actualSize(QSize(65535, 65535));
1148
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    73
      butt->setIcon(lp);
1152
c72b939c00df Make buttons border have different colors when mouse is over or it is pressed
unc0rr
parents: 1150
diff changeset
    74
      butt->setFixedSize(sz);
1148
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    75
      butt->setIconSize(sz);
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    76
      butt->setFlat(true);
1149
c2d3b4f71836 transparent background for buttons at main page
displacer
parents: 1148
diff changeset
    77
      butt->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
1148
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    78
    }
684
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    79
    grid->addWidget(butt, wy, wx);
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    80
    return butt;
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    81
  };
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
    82
1152
c72b939c00df Make buttons border have different colors when mouse is over or it is pressed
unc0rr
parents: 1150
diff changeset
    83
  QPushButton* addButton(QString btname, QGridLayout* grid, int wy, int wx, int rowSpan, int columnSpan, bool iconed = false) {
692
07787e748831 code size reduse
displacer
parents: 686
diff changeset
    84
    QPushButton* butt = new QPushButton(this);
1152
c72b939c00df Make buttons border have different colors when mouse is over or it is pressed
unc0rr
parents: 1150
diff changeset
    85
    if (!iconed) {
1148
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    86
      butt->setFont(*font14);
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    87
      butt->setText(btname);
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    88
    } else {
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    89
      const QIcon& lp=QIcon(btname);
1152
c72b939c00df Make buttons border have different colors when mouse is over or it is pressed
unc0rr
parents: 1150
diff changeset
    90
      QSize sz = lp.actualSize(QSize(65535, 65535));
1148
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    91
      butt->setIcon(lp);
1152
c72b939c00df Make buttons border have different colors when mouse is over or it is pressed
unc0rr
parents: 1150
diff changeset
    92
      butt->setFixedSize(sz);
1148
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    93
      butt->setIconSize(sz);
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    94
      butt->setFlat(true);
1149
c2d3b4f71836 transparent background for buttons at main page
displacer
parents: 1148
diff changeset
    95
      butt->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
1148
e44de3416af4 images at main page
displacer
parents: 1129
diff changeset
    96
    }
692
07787e748831 code size reduse
displacer
parents: 686
diff changeset
    97
    grid->addWidget(butt, wy, wx, rowSpan, columnSpan);
07787e748831 code size reduse
displacer
parents: 686
diff changeset
    98
    return butt;
07787e748831 code size reduse
displacer
parents: 686
diff changeset
    99
  };
07787e748831 code size reduse
displacer
parents: 686
diff changeset
   100
1443
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   101
  QPushButton* addButton(QString btname, QBoxLayout* box, int where, bool iconed = false) {
684
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
   102
    QPushButton* butt = new QPushButton(this);
1443
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   103
    if (!iconed) {
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   104
      butt->setFont(*font14);
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   105
      butt->setText(btname);
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   106
    } else {
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   107
      const QIcon& lp=QIcon(btname);
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   108
      QSize sz = lp.actualSize(QSize(65535, 65535));
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   109
      butt->setIcon(lp);
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   110
      butt->setFixedSize(sz);
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   111
      butt->setIconSize(sz);
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   112
      butt->setFlat(true);
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   113
      butt->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
e79e4b48c771 Reorganize single player menu
unc0rr
parents: 1409
diff changeset
   114
    }
684
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
   115
    box->addWidget(butt, where);
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
   116
    return butt;
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
   117
  };
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
   118
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
   119
  QFont * font14;
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
   120
};
257444d8429f some copy/paste code removed
displacer
parents: 683
diff changeset
   121
5205
78138ae93820 some headers cleanup and rename of stats and playrecord pages for consistency
koda
parents: 5204
diff changeset
   122
#endif
78138ae93820 some headers cleanup and rename of stats and playrecord pages for consistency
koda
parents: 5204
diff changeset
   123