QTfrontend/AbstractPage.cpp
author nemo
Sun, 02 Oct 2011 10:36:43 -0400
changeset 6081 537bbd5c1a62
parent 6042 8b5345758f62
permissions -rw-r--r--
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects. In this test variant it is triggered on girders/objects/bridges of the snow/christmas theme, or on a map that uses blue as a mask colour. Probably needs sheepluva's slope detection to make slopes more slippery to climb.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6038
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
     1
/*
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
     2
 * Hedgewars, a free turn based strategy game
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
     3
 * Copyright (c) 2006-2011 Andrey Korotaev <unC0Rr@gmail.com>
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
     4
 *
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
     8
 *
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    12
 * GNU General Public License for more details.
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    13
 *
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    17
 */
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    18
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    19
#include "AbstractPage.h"
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    20
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    21
AbstractPage::AbstractPage(QWidget* parent)
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    22
{
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    23
    Q_UNUSED(parent);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    24
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    25
    font14 = new QFont("MS Shell Dlg", 14);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    26
}
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    27
6042
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    28
void AbstractPage::initPage()
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    29
{
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    30
    QGridLayout * pageLayout = new QGridLayout(this);
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    31
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    32
    // stretch grid space for body and footer
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    33
    pageLayout->setColumnStretch(0,0);
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    34
    pageLayout->setColumnStretch(1,1);
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    35
    pageLayout->setRowStretch(0,1);
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    36
    pageLayout->setRowStretch(1,0);
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    37
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    38
    // add back/exit button
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    39
    btnBack = formattedButton(":/res/Exit.png", true);
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    40
    pageLayout->addWidget(btnBack, 1, 0, 1, 1, Qt::AlignLeft | Qt::AlignBottom);
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    41
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    42
    // add body layout as defined by the subclass
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    43
    pageLayout->addLayout(bodyLayoutDefinition(), 0, 0, 1, 2);
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    44
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    45
    // add footer layout
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    46
    QLayout * fld = footerLayoutDefinition();
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    47
    if (fld != NULL)
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    48
        pageLayout->addLayout(fld, 1, 1);
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    49
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    50
    // connect signals
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    51
    connect(btnBack, SIGNAL(clicked()), this, SIGNAL(goBack()));
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    52
    connectSignals();
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    53
}
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    54
6038
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    55
QPushButton * AbstractPage::formattedButton(const QString & btname, bool hasIcon)
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    56
{
6042
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    57
    QPushButton * btn = new QPushButton(this);
6038
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    58
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    59
    if (hasIcon)
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    60
    {
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    61
        const QIcon& lp=QIcon(btname);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    62
        QSize sz = lp.actualSize(QSize(65535, 65535));
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    63
        btn->setIcon(lp);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    64
        btn->setFixedSize(sz);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    65
        btn->setIconSize(sz);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    66
        btn->setFlat(true);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    67
        btn->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    68
    }
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    69
    else
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    70
    {
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    71
        btn->setFont(*font14);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    72
        btn->setText(btname);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    73
    }
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    74
    return btn;
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    75
}
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    76
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    77
QPushButton * AbstractPage::addButton(const QString & btname, QGridLayout* grid, int wy, int wx, bool hasIcon)
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    78
{
6042
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    79
    QPushButton * btn = formattedButton(btname, hasIcon);
6038
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    80
    grid->addWidget(btn, wy, wx);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    81
    return btn;
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    82
}
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    83
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    84
QPushButton * AbstractPage::addButton(const QString & btname, QGridLayout* grid, int wy, int wx, int rowSpan, int columnSpan, bool hasIcon)
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    85
{
6042
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    86
    QPushButton * btn = formattedButton(btname, hasIcon);
6038
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    87
    grid->addWidget(btn, wy, wx, rowSpan, columnSpan);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    88
    return btn;
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    89
}
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    90
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    91
QPushButton * AbstractPage::addButton(const QString & btname, QBoxLayout* box, int where, bool hasIcon)
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    92
{
6042
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    93
    QPushButton * btn = formattedButton(btname, hasIcon);
6038
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    94
    box->addWidget(btn, where);
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    95
    return btn;
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    96
}
58d9badf3e7f wow, somebody was smoking some reaaally good sh!t right there, man!
sheepluva
parents:
diff changeset
    97
6042
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    98
void AbstractPage::setBackButtonVisible(bool visible)
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
    99
{
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
   100
    btnBack->setVisible(visible);
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6038
diff changeset
   101
}