QTfrontend/ui/page/pagemain.cpp
author sheepluva
Fri, 29 Apr 2016 23:42:37 +0200
changeset 11782 77afc967f38e
parent 11046 47a8c19ecb60
child 11823 b421923c2577
permissions -rw-r--r--
fix memory corruptions caused by outofbounds-writes in uTouch
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     1
/*
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     2
 * Hedgewars, a free turn based strategy game
11046
47a8c19ecb60 more copyright fixes
sheepluva
parents: 10108
diff changeset
     3
 * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com>
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     4
 *
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     8
 *
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    12
 * GNU General Public License for more details.
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    13
 *
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
10108
c68cf030eded update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
sheepluva
parents: 10017
diff changeset
    16
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    17
 */
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6586
diff changeset
    18
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    19
#include <QGridLayout>
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: 5763
diff changeset
    20
#include <QHBoxLayout>
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    21
#include <QPushButton>
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    22
#include <QLabel>
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    23
#include <QTime>
9832
b1038b4373cc Localise tips again. Including new german contribution from bug #738. We should look into the old .ts files and see if there are translations that can be recovered.
nemo
parents: 9212
diff changeset
    24
#include <QSettings>
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    25
5204
e1a5f4d5d86a split pages.h into several header files
koda
parents: 5078
diff changeset
    26
#include "pagemain.h"
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    27
#include "hwconsts.h"
5205
78138ae93820 some headers cleanup and rename of stats and playrecord pages for consistency
koda
parents: 5204
diff changeset
    28
#include "hwform.h"
9832
b1038b4373cc Localise tips again. Including new german contribution from bug #738. We should look into the old .ts files and see if there are translations that can be recovered.
nemo
parents: 9212
diff changeset
    29
#include "DataManager.h"
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    30
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: 5763
diff changeset
    31
QLayout * PageMain::bodyLayoutDefinition()
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    32
{
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: 5763
diff changeset
    33
    QGridLayout * pageLayout = new QGridLayout();
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    34
    //pageLayout->setColumnStretch(0, 1);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    35
    //pageLayout->setColumnStretch(1, 2);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    36
    //pageLayout->setColumnStretch(2, 1);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    37
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    38
    //QPushButton* btnLogo = addButton(":/res/HedgewarsTitle.png", pageLayout, 0, 0, 1, 4, true);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    39
    //pageLayout->setAlignment(btnLogo, Qt::AlignHCenter);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    40
    pageLayout->setRowStretch(0, 1);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    41
    pageLayout->setRowStretch(1, 1);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    42
    pageLayout->setRowStretch(2, 0);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    43
    pageLayout->setRowStretch(3, 1);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    44
    pageLayout->setRowStretch(4, 1);
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: 5763
diff changeset
    45
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    46
    BtnSinglePlayer = addButton(":/res/LocalPlay.png", pageLayout, 2, 0, 1, 2, true);
6478
752d4fb5e376 cleanup and example
koda
parents: 6477
diff changeset
    47
    BtnSinglePlayer->setWhatsThis(tr("Play a game on a single computer"));
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    48
    pageLayout->setAlignment(BtnSinglePlayer, Qt::AlignHCenter);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    49
8318
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    50
    //BtnNet = addButton(":/res/NetworkPlay.png", (QBoxLayout*)netLayout, 1, true);
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    51
    BtnNet = addButton(":/res/NetworkPlay.png", pageLayout, 2, 2, 1, 2, true);
6478
752d4fb5e376 cleanup and example
koda
parents: 6477
diff changeset
    52
    BtnNet->setWhatsThis(tr("Play a game across a network"));
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    53
    pageLayout->setAlignment(BtnNet, Qt::AlignHCenter);
8434
4821897a0f10 big indentation/whitespaces cleanup
sheepluva
parents: 8382
diff changeset
    54
8318
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    55
    originalNetworkIcon = BtnNet->icon();
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    56
    disabledNetworkIcon = QIcon(":/res/NetworkPlayDisabled.png");
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    57
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    58
    //QWidget *netLayoutWidget = new QWidget();
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    59
    QVBoxLayout *netLayout = new QVBoxLayout(BtnNet);
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    60
    //pageLayout->addWidget(netLayoutWidget, 2, 2, 1, 2);
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    61
    //netLayoutWidget->setStyleSheet("background: green;");
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    62
    //netLayoutWidget->setFixedSize(314, 260);
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    63
    netLayout->setSpacing(20);
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    64
    netLayout->setAlignment(Qt::AlignHCenter);
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    65
8693
ab42f868b1c3 *sigh* hopefully there aren't any more of these. add missing tr() to button text
nemo
parents: 8676
diff changeset
    66
    BtnNetLocal = addButton(tr("Play local network game"), (QBoxLayout*)netLayout, 0, false);
8318
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    67
    BtnNetLocal->setWhatsThis(tr("Play a game across a local area network"));
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    68
    BtnNetLocal->setFixedSize(BtnNet->width() - 50, 60);
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    69
    BtnNetLocal->setVisible(false);
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    70
8693
ab42f868b1c3 *sigh* hopefully there aren't any more of these. add missing tr() to button text
nemo
parents: 8676
diff changeset
    71
    BtnNetOfficial = addButton(tr("Play official network game"), (QBoxLayout*)netLayout, 0, false);
8318
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    72
    BtnNetOfficial->setWhatsThis(tr("Play a game on an official server"));
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    73
    BtnNetOfficial->setFixedSize(BtnNet->width() - 50, 60);
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
    74
    BtnNetOfficial->setVisible(false);
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    75
6169
582f9f61b972 fix overlapping issue in main menu
sheepluva
parents: 6060
diff changeset
    76
    // button order matters for overlapping (what's on top and what isn't)
582f9f61b972 fix overlapping issue in main menu
sheepluva
parents: 6060
diff changeset
    77
    BtnInfo = addButton(":/res/HedgewarsTitle.png", pageLayout, 0, 0, 1, 4, true);
582f9f61b972 fix overlapping issue in main menu
sheepluva
parents: 6060
diff changeset
    78
    BtnInfo->setStyleSheet("border: transparent;background: transparent;");
6478
752d4fb5e376 cleanup and example
koda
parents: 6477
diff changeset
    79
    BtnInfo->setWhatsThis(tr("Read about who is behind the Hedgewars Project"));
6169
582f9f61b972 fix overlapping issue in main menu
sheepluva
parents: 6060
diff changeset
    80
    pageLayout->setAlignment(BtnInfo, Qt::AlignHCenter);
582f9f61b972 fix overlapping issue in main menu
sheepluva
parents: 6060
diff changeset
    81
8676
c00f1df47cef Add missing feedback button translation
nemo
parents: 8635
diff changeset
    82
    BtnFeedback = addButton(tr("Feedback"), pageLayout, 4, 0, 1, 4, false);
8622
2045bdf1b11b Resolves issue 528. Fixed platform-specific order of buttons on seed prompt and new room prompt. Fixed height of back button on all pages -- now aligns to bottom. On pagemain, feedback and dlc buttons no longer fixed size.
dag10
parents: 8435
diff changeset
    83
    BtnFeedback->setStyleSheet("padding: 5px 10px");
6759
700504a608ff bug #370
nemo
parents: 6700
diff changeset
    84
    BtnFeedback->setWhatsThis(tr("Leave a feedback here reporting issues, suggesting features or just saying how you like Hedgewars"));
6582
d32b5fde9ea6 move the feedback button in a nicer position
koda
parents: 6561
diff changeset
    85
    pageLayout->setAlignment(BtnFeedback, Qt::AlignHCenter);
d32b5fde9ea6 move the feedback button in a nicer position
koda
parents: 6561
diff changeset
    86
d32b5fde9ea6 move the feedback button in a nicer position
koda
parents: 6561
diff changeset
    87
    BtnDataDownload = addButton(tr("Downloadable Content"), pageLayout, 5, 0, 1, 4, false);
8622
2045bdf1b11b Resolves issue 528. Fixed platform-specific order of buttons on seed prompt and new room prompt. Fixed height of back button on all pages -- now aligns to bottom. On pagemain, feedback and dlc buttons no longer fixed size.
dag10
parents: 8435
diff changeset
    88
    BtnDataDownload->setStyleSheet("padding: 5px 10px");
6478
752d4fb5e376 cleanup and example
koda
parents: 6477
diff changeset
    89
    BtnDataDownload->setWhatsThis(tr("Access the user created content downloadable from our website"));
5763
d7a887c7e2d0 Add a crappy button to encourage artists to make another one. Restore Info page.
nemo
parents: 5646
diff changeset
    90
    pageLayout->setAlignment(BtnDataDownload, Qt::AlignHCenter);
d7a887c7e2d0 Add a crappy button to encourage artists to make another one. Restore Info page.
nemo
parents: 5646
diff changeset
    91
6583
4218782d8ca0 skip button sound when exiting
bovi
parents: 6582
diff changeset
    92
    // disable exit button sound
4218782d8ca0 skip button sound when exiting
bovi
parents: 6582
diff changeset
    93
    btnBack->isSoundEnabled = false;
4218782d8ca0 skip button sound when exiting
bovi
parents: 6582
diff changeset
    94
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: 5763
diff changeset
    95
    return pageLayout;
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: 5763
diff changeset
    96
}
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: 5763
diff changeset
    97
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: 5763
diff changeset
    98
QLayout * PageMain::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: 5763
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: 5763
diff changeset
   100
    QHBoxLayout * bottomLayout = new QHBoxLayout();
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: 5763
diff changeset
   101
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
   102
    mainNote = new QLabel(this);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
   103
    mainNote->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
   104
    mainNote->setWordWrap(true);
6616
f77bb02b669f astyle -C -S -L -N --style=allman --recursive "QTfrontend/*.cpp" "QTfrontend/*.h"
nemo
parents: 6586
diff changeset
   105
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: 5763
diff changeset
   106
    bottomLayout->addWidget(mainNote, 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: 5763
diff changeset
   107
    bottomLayout->setStretch(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: 5763
diff changeset
   108
6699
83dd3447a212 exploit the new setWhatsThis feature in our desktop frontend
koda
parents: 6616
diff changeset
   109
    btnBack->setWhatsThis(tr("Exit game"));
7235
baa69bd025d9 1. Implement new page in frontend with options for video recording.
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
   110
7617
0ac281e1b58b Make ffmpeg optional for frontend
unc0rr
parents: 7235
diff changeset
   111
#ifdef VIDEOREC
7643
97b98bcfd056 Differentiate videos from demos - navigating between them was too confusing. BTW, why is this on the front page, instead of next to the demos button?
nemo
parents: 7620
diff changeset
   112
    BtnVideos = addButton(":/res/Videos.png", bottomLayout, 1, true);
7620
fa3bc79dc0b8 remove a redundant assignment; whitespace fixes
sheepluva
parents: 7617
diff changeset
   113
    BtnVideos->setWhatsThis(tr("Manage videos recorded from game"));
7617
0ac281e1b58b Make ffmpeg optional for frontend
unc0rr
parents: 7235
diff changeset
   114
#endif
7235
baa69bd025d9 1. Implement new page in frontend with options for video recording.
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
   115
baa69bd025d9 1. Implement new page in frontend with options for video recording.
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
   116
    BtnSetup = addButton(":/res/Settings.png", bottomLayout, 2, true);
6699
83dd3447a212 exploit the new setWhatsThis feature in our desktop frontend
koda
parents: 6616
diff changeset
   117
    BtnSetup->setWhatsThis(tr("Edit game preferences"));
7235
baa69bd025d9 1. Implement new page in frontend with options for video recording.
Stepan777 <stepik-777@mail.ru>
parents: 6952
diff changeset
   118
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: 5763
diff changeset
   119
    return bottomLayout;
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: 5763
diff changeset
   120
}
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: 5763
diff changeset
   121
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: 5763
diff changeset
   122
void PageMain::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: 5763
diff changeset
   123
{
9833
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   124
#ifndef QT_DEBUG
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   125
    connect(this, SIGNAL(pageEnter()), this, SLOT(updateTip()));
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   126
#endif
8435
a59368bd49e7 small cleanup
sheepluva
parents: 8434
diff changeset
   127
    connect(BtnNet, SIGNAL(clicked()), this, SLOT(toggleNetworkChoice()));
8977
d424c7f8b342 Change net button back on leaving main page.
nemo
parents: 8729
diff changeset
   128
    //connect(BtnNetLocal, SIGNAL(clicked()), this, SLOT(toggleNetworkChoice()));
d424c7f8b342 Change net button back on leaving main page.
nemo
parents: 8729
diff changeset
   129
    //connect(BtnNetOfficial, SIGNAL(clicked()), this, SLOT(toggleNetworkChoice()));
8435
a59368bd49e7 small cleanup
sheepluva
parents: 8434
diff changeset
   130
    // TODO: add signal-forwarding required by (currently missing) encapsulation
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: 5763
diff changeset
   131
}
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: 5763
diff changeset
   132
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: 5763
diff changeset
   133
PageMain::PageMain(QWidget* parent) : AbstractPage(parent)
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: 5763
diff changeset
   134
{
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: 5763
diff changeset
   135
    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: 5763
diff changeset
   136
8635
c1c6b815691e convert HW_DEV in ifdef DEBUG clauses
koda
parents: 8622
diff changeset
   137
    if(frontendEffects)
c1c6b815691e convert HW_DEV in ifdef DEBUG clauses
koda
parents: 8622
diff changeset
   138
        setAttribute(Qt::WA_NoSystemBackground, true);
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
   139
    mainNote->setOpenExternalLinks(true);
9212
1d4e1469940b use QT_DEBUG which is always added
koda
parents: 9123
diff changeset
   140
#ifdef QT_DEBUG
8729
b19be476a2fa Call steps on focus instead. fix typo
nemo
parents: 8718
diff changeset
   141
    setDefaultDescription(QLabel::tr("This development build is 'work in progress' and may not be compatible with other versions of the game, while some features might be broken or incomplete!"));
8635
c1c6b815691e convert HW_DEV in ifdef DEBUG clauses
koda
parents: 8622
diff changeset
   142
#else
9123
19c57656460f trying to appease almighty unC0Rr
koda
parents: 9080
diff changeset
   143
    setDefaultDescription(QLabel::tr("Tip: %1").arg(randomTip()));
8635
c1c6b815691e convert HW_DEV in ifdef DEBUG clauses
koda
parents: 8622
diff changeset
   144
#endif
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: 5763
diff changeset
   145
}
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: 5763
diff changeset
   146
9833
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   147
void PageMain::updateTip()
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   148
{
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   149
    setDefaultDescription(QLabel::tr("Tip: %1").arg(randomTip()));
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   150
}
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   151
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   152
QString PageMain::randomTip()
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: 5763
diff changeset
   153
{
8361
2831c1403666 Tips are now loaded from an xml file.
martin_bede
parents: 8318
diff changeset
   154
#ifdef _WIN32
2831c1403666 Tips are now loaded from an xml file.
martin_bede
parents: 8318
diff changeset
   155
    int platform = 1;
2831c1403666 Tips are now loaded from an xml file.
martin_bede
parents: 8318
diff changeset
   156
#elif defined __APPLE__
2831c1403666 Tips are now loaded from an xml file.
martin_bede
parents: 8318
diff changeset
   157
    int platform = 2;
2831c1403666 Tips are now loaded from an xml file.
martin_bede
parents: 8318
diff changeset
   158
#else
2831c1403666 Tips are now loaded from an xml file.
martin_bede
parents: 8318
diff changeset
   159
    int platform = 3;
2831c1403666 Tips are now loaded from an xml file.
martin_bede
parents: 8318
diff changeset
   160
#endif
9852
0a5ec79af0a2 Prevent div by zero
unc0rr
parents: 9846
diff changeset
   161
    if(!Tips.length())
9833
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   162
    {
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   163
        DataManager & dataMgr = DataManager::instance();
9832
b1038b4373cc Localise tips again. Including new german contribution from bug #738. We should look into the old .ts files and see if there are translations that can be recovered.
nemo
parents: 9212
diff changeset
   164
9833
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   165
        // get locale
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   166
        QSettings settings(dataMgr.settingsFileName(),
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   167
                           QSettings::IniFormat);
9832
b1038b4373cc Localise tips again. Including new german contribution from bug #738. We should look into the old .ts files and see if there are translations that can be recovered.
nemo
parents: 9212
diff changeset
   168
9833
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   169
        QString loc = settings.value("misc/locale", "").toString();
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   170
        if (loc.isEmpty())
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   171
            loc = QLocale::system().name();
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   172
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   173
        QString tipFile = QString("physfs://Locale/tips_" + loc + ".xml");
9832
b1038b4373cc Localise tips again. Including new german contribution from bug #738. We should look into the old .ts files and see if there are translations that can be recovered.
nemo
parents: 9212
diff changeset
   174
9833
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   175
        // if file is non-existant try with language only
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   176
        if (!QFile::exists(tipFile))
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   177
            tipFile = QString("physfs://Locale/tips_" + loc.remove(QRegExp("_.*$")) + ".xml");
9832
b1038b4373cc Localise tips again. Including new german contribution from bug #738. We should look into the old .ts files and see if there are translations that can be recovered.
nemo
parents: 9212
diff changeset
   178
9833
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   179
        // fallback if file for current locale is non-existant
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   180
        if (!QFile::exists(tipFile))
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   181
            tipFile = QString("physfs://Locale/tips_en.xml");
9832
b1038b4373cc Localise tips again. Including new german contribution from bug #738. We should look into the old .ts files and see if there are translations that can be recovered.
nemo
parents: 9212
diff changeset
   182
9833
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   183
        QFile file(tipFile);
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   184
        file.open(QIODevice::ReadOnly);
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   185
        QTextStream in(&file);
9846
4dc7cb571e1d I hate windows. This probably fixes text.
nemo
parents: 9835
diff changeset
   186
        in.setCodec("UTF-8");
9833
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   187
        QString line = in.readLine();
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   188
        int tip_platform = 0;
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   189
        while (!line.isNull()) {
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   190
            if(line.contains("<windows-only>", Qt::CaseSensitive))
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   191
                tip_platform = 1;
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   192
            if(line.contains("<mac-only>", Qt::CaseSensitive))
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   193
                tip_platform = 2;
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   194
            if(line.contains("<linux-only>", Qt::CaseSensitive))
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   195
                tip_platform = 3;
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   196
            if(line.contains("</windows-only>", Qt::CaseSensitive) ||
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   197
                    line.contains("</mac-only>", Qt::CaseSensitive) ||
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   198
                    line.contains("</linux-only>", Qt::CaseSensitive)) {
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   199
                tip_platform = 0;
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   200
            }
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   201
            QStringList split_string = line.split(QRegExp("</?tip>"));
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   202
            if((tip_platform == platform || tip_platform == 0) && split_string.size() != 1)
9835
e89b42c55047 Remove some wtfism that was breaking localisation
nemo
parents: 9833
diff changeset
   203
                Tips << split_string[1];
9833
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   204
            line = in.readLine();
8361
2831c1403666 Tips are now loaded from an xml file.
martin_bede
parents: 8318
diff changeset
   205
        }
9833
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   206
        // The following tip will require links to app store entries first.
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   207
        //Tips << tr("Want to play Hedgewars any time? Grab the Mobile version for %1 and %2.", "Tips").arg("").arg("");
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   208
        // the ios version is located here: http://itunes.apple.com/us/app/hedgewars/id391234866
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   209
1957c7f92460 Pick random tip from the tip file each time front page is viewed.
nemo
parents: 9832
diff changeset
   210
        file.close();
8361
2831c1403666 Tips are now loaded from an xml file.
martin_bede
parents: 8318
diff changeset
   211
    }
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 10015
diff changeset
   212
9852
0a5ec79af0a2 Prevent div by zero
unc0rr
parents: 9846
diff changeset
   213
    if(Tips.length())
0a5ec79af0a2 Prevent div by zero
unc0rr
parents: 9846
diff changeset
   214
        return Tips[QTime(0, 0, 0).secsTo(QTime::currentTime()) % Tips.length()];
0a5ec79af0a2 Prevent div by zero
unc0rr
parents: 9846
diff changeset
   215
    else
0a5ec79af0a2 Prevent div by zero
unc0rr
parents: 9846
diff changeset
   216
        return QString();
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
   217
}
8318
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
   218
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
   219
void PageMain::toggleNetworkChoice()
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
   220
{
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
   221
    bool visible = BtnNetLocal->isVisible();
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
   222
    BtnNetLocal->setVisible(!visible);
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
   223
    BtnNetOfficial->setVisible(!visible);
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
   224
    if (visible)    BtnNet->setIcon(originalNetworkIcon);
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
   225
    else            BtnNet->setIcon(disabledNetworkIcon);
e2c01fbf36c0 GCI2012: Beautify Network Page
dag10
parents: 8277
diff changeset
   226
}
8982
0c0141cf851a Needs to reset net button, not toggle it.
nemo
parents: 8977
diff changeset
   227
0c0141cf851a Needs to reset net button, not toggle it.
nemo
parents: 8977
diff changeset
   228
void PageMain::resetNetworkChoice()
0c0141cf851a Needs to reset net button, not toggle it.
nemo
parents: 8977
diff changeset
   229
{
0c0141cf851a Needs to reset net button, not toggle it.
nemo
parents: 8977
diff changeset
   230
    BtnNetLocal->setVisible(false);
0c0141cf851a Needs to reset net button, not toggle it.
nemo
parents: 8977
diff changeset
   231
    BtnNetOfficial->setVisible(false);
0c0141cf851a Needs to reset net button, not toggle it.
nemo
parents: 8977
diff changeset
   232
    BtnNet->setIcon(originalNetworkIcon);
0c0141cf851a Needs to reset net button, not toggle it.
nemo
parents: 8977
diff changeset
   233
}