QTfrontend/ui/page/pagetraining.cpp
author unC0Rr
Sun, 12 Feb 2023 15:10:10 +0100
branchtransitional_engine
changeset 15919 659c92124c26
parent 15257 752b44ffa707
permissions -rw-r--r--
Fix some bugs
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: 9998
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
 */
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    18
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    19
#include <QGridLayout>
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    20
#include <QVBoxLayout>
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
    21
#include <QLabel>
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
    22
#include <QListWidget>
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
    23
#include <QListWidgetItem>
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    24
#include <QPushButton>
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    25
13087
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
    26
#include <QTextStream>
6059
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
    27
#include <QFile>
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
    28
#include <QLocale>
6058
ae8684864a6e load mission caption and description from localization file (WIP)
sheepluva
parents: 6054
diff changeset
    29
#include <QSettings>
ae8684864a6e load mission caption and description from localization file (WIP)
sheepluva
parents: 6054
diff changeset
    30
14525
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
    31
#include "mission.h"
6159
c780b8cf4d75 introduce HWDataManager util for transparent access to [user-]data files
sheepluva
parents: 6073
diff changeset
    32
#include "hwconsts.h"
6930
d187ea93fc4f renaming HWDataManager -> DataManager
sheepluva
parents: 6700
diff changeset
    33
#include "DataManager.h"
6159
c780b8cf4d75 introduce HWDataManager util for transparent access to [user-]data files
sheepluva
parents: 6073
diff changeset
    34
5204
e1a5f4d5d86a split pages.h into several header files
koda
parents: 5078
diff changeset
    35
#include "pagetraining.h"
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    36
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: 6009
diff changeset
    37
QLayout * PageTraining::bodyLayoutDefinition()
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    38
{
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: 6009
diff changeset
    39
    QGridLayout * pageLayout = new QGridLayout();
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: 6009
diff changeset
    40
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
    41
    // declare start button, caption and description
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    42
    btnPreview = formattedButton(":/res/Trainings.png", true);
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    43
14471
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    44
    // tweak widget spacing
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    45
    pageLayout->setRowStretch(0, 1);
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    46
    pageLayout->setRowStretch(1, 1);
14471
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    47
    pageLayout->setRowStretch(2, 1);
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    48
    pageLayout->setColumnStretch(0, 5);
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    49
    pageLayout->setColumnStretch(1, 1);
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    50
    pageLayout->setColumnStretch(2, 9);
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    51
    pageLayout->setColumnStretch(3, 5);
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
    52
14471
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    53
    QWidget * infoWidget = new QWidget();
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    54
    QHBoxLayout * infoLayout = new QHBoxLayout();
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    55
    // add preview, caption and description
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    56
    infoWidget->setLayout(infoLayout);
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    57
    infoLayout->addWidget(btnPreview);
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    58
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    59
    // center preview
14471
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    60
    infoLayout->setAlignment(btnPreview, Qt::AlignRight | Qt::AlignVCenter);
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
    61
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    62
    // info area (caption on top, description below)
14471
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    63
    QWidget * infoTextWidget = new QWidget();
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    64
    QVBoxLayout * infoTextLayout = new QVBoxLayout();
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    65
    infoTextWidget->setObjectName("trainingInfo");
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    66
    infoTextWidget->setLayout(infoTextLayout);
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    67
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    68
    lblCaption = new QLabel();
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    69
    lblCaption->setMinimumWidth(360);
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    70
    lblCaption->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    71
    lblCaption->setWordWrap(true);
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    72
    lblDescription = new QLabel();
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    73
    lblDescription->setMinimumWidth(360);
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    74
    lblDescription->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    75
    lblDescription->setWordWrap(true);
14525
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
    76
    lblHighscores = new QLabel();
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
    77
    lblHighscores->setMinimumWidth(360);
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
    78
    lblHighscores->setAlignment(Qt::AlignHCenter | Qt::AlignTop);
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    79
14471
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    80
    infoTextLayout->addWidget(lblCaption);
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    81
    infoTextLayout->addWidget(lblDescription);
14525
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
    82
    infoTextLayout->addWidget(lblHighscores);
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    83
14471
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    84
    infoLayout->addWidget(infoTextWidget);
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    85
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    86
    pageLayout->addWidget(infoWidget, 0, 1, 1, 2); // span 2 columns
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    87
    pageLayout->setAlignment(infoTextWidget, Qt::AlignLeft);
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    88
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
    89
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    90
    // tab widget containing all lists
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    91
    tbw = new QTabWidget(this);
14471
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
    92
    pageLayout->addWidget(tbw, 1, 0, 1, 4); // span 4 columns
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    93
    // let's not make the tab widget use more space than needed
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    94
    tbw->setFixedWidth(400);
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    95
    pageLayout->setAlignment(tbw, Qt::AlignHCenter);
15248
7d957886170f Pagetraining: Fix broken style sheet
Wuzzy <Wuzzy2@mail.ru>
parents: 14646
diff changeset
    96
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    97
    // training/challenge/scenario lists
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    98
    lstTrainings = new QListWidget(this);
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
    99
    lstTrainings ->setWhatsThis(tr("Pick the training to play"));
15257
752b44ffa707 Pagetraining: Move style sheet to CSS files
Wuzzy <Wuzzy2@mail.ru>
parents: 15248
diff changeset
   100
    lstTrainings ->setObjectName("trainingList");
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   101
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   102
    lstChallenges = new QListWidget(this);
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   103
    lstChallenges ->setWhatsThis(tr("Pick the challenge to play"));
15257
752b44ffa707 Pagetraining: Move style sheet to CSS files
Wuzzy <Wuzzy2@mail.ru>
parents: 15248
diff changeset
   104
    lstChallenges ->setObjectName("trainingList");
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   105
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   106
    lstScenarios= new QListWidget(this);
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   107
    lstScenarios->setWhatsThis(tr("Pick the scenario to play"));
15257
752b44ffa707 Pagetraining: Move style sheet to CSS files
Wuzzy <Wuzzy2@mail.ru>
parents: 15248
diff changeset
   108
    lstScenarios->setObjectName("trainingList");
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   109
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   110
    tbw->addTab(lstTrainings, tr("Trainings"));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   111
    tbw->addTab(lstChallenges, tr("Challenges"));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   112
    tbw->addTab(lstScenarios, tr("Scenarios"));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   113
    tbw->setCurrentWidget(lstTrainings);
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
   114
14462
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 13645
diff changeset
   115
    QLabel* lblteam = new QLabel(tr("Team"));
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 13645
diff changeset
   116
    CBTeam = new QComboBox(this);
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 13645
diff changeset
   117
    CBTeam->setMaxVisibleItems(30);
14471
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
   118
    pageLayout->addWidget(lblteam, 2, 1);
c5033a95fd7b Tweak training menu spacing
Wuzzy <Wuzzy2@mail.ru>
parents: 14462
diff changeset
   119
    pageLayout->addWidget(CBTeam, 2, 2);
14462
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 13645
diff changeset
   120
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: 6009
diff changeset
   121
    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: 6009
diff changeset
   122
}
6009
14f6fc9869f2 code cleanup/etc
sheepluva
parents: 5238
diff changeset
   123
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   124
QLayout * PageTraining::footerLayoutDefinition()
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   125
{
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   126
    QBoxLayout * bottomLayout = new QVBoxLayout();
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   127
11973
de1b616fd5e6 Use proper start button in training menu
Wuzzy <almikes@aol.com>
parents: 11970
diff changeset
   128
    const QIcon& lp = QIcon(":/res/Start.png");
de1b616fd5e6 Use proper start button in training menu
Wuzzy <almikes@aol.com>
parents: 11970
diff changeset
   129
    QSize sz = lp.actualSize(QSize(65535, 65535));
de1b616fd5e6 Use proper start button in training menu
Wuzzy <almikes@aol.com>
parents: 11970
diff changeset
   130
    btnStart = new QPushButton();
12236
a0ed4caa6d35 Apply minimal padding to all text buttons in frontend
Wuzzy <almikes@aol.com>
parents: 11973
diff changeset
   131
    btnStart->setStyleSheet("padding: 5px 10px");
11973
de1b616fd5e6 Use proper start button in training menu
Wuzzy <almikes@aol.com>
parents: 11970
diff changeset
   132
    btnStart->setText(QPushButton::tr("Start"));
6699
83dd3447a212 exploit the new setWhatsThis feature in our desktop frontend
koda
parents: 6616
diff changeset
   133
    btnStart->setWhatsThis(tr("Start fighting"));
11973
de1b616fd5e6 Use proper start button in training menu
Wuzzy <almikes@aol.com>
parents: 11970
diff changeset
   134
    btnStart->setMinimumWidth(sz.width() + 60);
de1b616fd5e6 Use proper start button in training menu
Wuzzy <almikes@aol.com>
parents: 11970
diff changeset
   135
    btnStart->setIcon(lp);
de1b616fd5e6 Use proper start button in training menu
Wuzzy <almikes@aol.com>
parents: 11970
diff changeset
   136
    btnStart->setFixedHeight(50);
de1b616fd5e6 Use proper start button in training menu
Wuzzy <almikes@aol.com>
parents: 11970
diff changeset
   137
    btnStart->setIconSize(sz);
de1b616fd5e6 Use proper start button in training menu
Wuzzy <almikes@aol.com>
parents: 11970
diff changeset
   138
    btnStart->setFlat(true);
de1b616fd5e6 Use proper start button in training menu
Wuzzy <almikes@aol.com>
parents: 11970
diff changeset
   139
    btnStart->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   140
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   141
    bottomLayout->addWidget(btnStart);
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   142
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   143
    bottomLayout->setAlignment(btnStart, Qt::AlignRight | Qt::AlignVCenter);
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   144
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   145
    return bottomLayout;
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   146
}
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   147
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   148
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: 6009
diff changeset
   149
void PageTraining::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: 6009
diff changeset
   150
{
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   151
    connect(lstTrainings, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(updateInfo()));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   152
    connect(lstTrainings, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(updateInfo()));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   153
    connect(lstTrainings, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(startSelected()));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   154
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   155
    connect(lstChallenges, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(updateInfo()));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   156
    connect(lstChallenges, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(updateInfo()));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   157
    connect(lstChallenges, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(startSelected()));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   158
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   159
    connect(lstScenarios, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this, SLOT(updateInfo()));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   160
    connect(lstScenarios, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(updateInfo()));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   161
    connect(lstScenarios, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(startSelected()));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   162
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   163
    connect(tbw, SIGNAL(currentChanged(int)), this, SLOT(updateInfo()));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   164
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   165
    connect(btnPreview, SIGNAL(clicked()), this, SLOT(startSelected()));
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   166
    connect(btnStart, SIGNAL(clicked()), this, SLOT(startSelected()));
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
   167
}
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: 6009
diff changeset
   168
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   169
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: 6009
diff changeset
   170
PageTraining::PageTraining(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: 6009
diff changeset
   171
{
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: 6009
diff changeset
   172
    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: 6009
diff changeset
   173
6930
d187ea93fc4f renaming HWDataManager -> DataManager
sheepluva
parents: 6700
diff changeset
   174
    DataManager & dataMgr = DataManager::instance();
6196
c16e84558f71 minor cleanups, mostly in own code
sheepluva
parents: 6183
diff changeset
   175
6059
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
   176
    // get locale
8918
512753ea4b1b Switch to 'settings.ini'. Copies old ini file if necessary on startup.
unc0rr
parents: 8098
diff changeset
   177
    QSettings settings(dataMgr.settingsFileName(),
6059
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
   178
                       QSettings::IniFormat);
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
   179
13274
e381f5260b45 Change how locale is loaded in frontend, and fix some bugs
Wuzzy <Wuzzy2@mail.ru>
parents: 13087
diff changeset
   180
    QString loc = QLocale().name();
6059
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
   181
8049
133e22b5c410 Get rid of DataManager::findFileForRead
unc0rr
parents: 6952
diff changeset
   182
    QString infoFile = QString("physfs://Locale/missions_" + loc + ".txt");
6059
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
   183
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
   184
    // if file is non-existant try with language only
6167
728cabee2c9f simplified some stuff I wrote
sheepluva
parents: 6160
diff changeset
   185
    if (!QFile::exists(infoFile))
8049
133e22b5c410 Get rid of DataManager::findFileForRead
unc0rr
parents: 6952
diff changeset
   186
        infoFile = QString("physfs://Locale/missions_" + loc.remove(QRegExp("_.*$")) + ".txt");
6059
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
   187
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
   188
    // fallback if file for current locale is non-existant
6167
728cabee2c9f simplified some stuff I wrote
sheepluva
parents: 6160
diff changeset
   189
    if (!QFile::exists(infoFile))
8049
133e22b5c410 Get rid of DataManager::findFileForRead
unc0rr
parents: 6952
diff changeset
   190
        infoFile = QString("physfs://Locale/missions_en.txt");
6159
c780b8cf4d75 introduce HWDataManager util for transparent access to [user-]data files
sheepluva
parents: 6073
diff changeset
   191
6059
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
   192
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
   193
    // preload mission info for current locale
6167
728cabee2c9f simplified some stuff I wrote
sheepluva
parents: 6160
diff changeset
   194
    m_info = new QSettings(infoFile, QSettings::IniFormat, this);
6257
e6690d3a8a44 mission locale -> UTF-8
sheepluva
parents: 6196
diff changeset
   195
    m_info->setIniCodec("UTF-8");
6058
ae8684864a6e load mission caption and description from localization file (WIP)
sheepluva
parents: 6054
diff changeset
   196
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   197
    QStringList m_list;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   198
    QListWidget * m_widget;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   199
    QString subFolder;
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   200
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   201
    for(int i=1; i<=3; i++) {
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   202
        switch(i) {
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   203
            case 1:
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   204
                subFolder = "Training";
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   205
                m_widget = lstTrainings;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   206
                break;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   207
            case 2:
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   208
                subFolder = "Challenge";
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   209
                m_widget = lstChallenges;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   210
                break;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   211
            case 3:
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   212
                subFolder = "Scenario";
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   213
                m_widget = lstScenarios;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   214
                break;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   215
        }
13087
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   216
        // scripts to load
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   217
        // first, load scripts in order specified in order.cfg (if present)
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   218
        QFile orderFile(QString("physfs://Missions/%1/order.cfg").arg(subFolder));
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   219
        QStringList orderedMissions;
14462
4c743ef80b1b Add team selection in training page and basic check mark support
Wuzzy <Wuzzy2@mail.ru>
parents: 13645
diff changeset
   220
13087
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   221
        if (orderFile.open(QFile::ReadOnly))
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   222
        {
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   223
            QString m_id;
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   224
            QTextStream input(&orderFile);
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   225
            while(true)
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   226
            {
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   227
                m_id = input.readLine();
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   228
                if(m_id.isNull() || m_id.isEmpty())
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   229
                {
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   230
                    break;
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   231
                }
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   232
                QListWidgetItem * item = new QListWidgetItem(m_id);
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   233
                QString name = item->text().replace("_", " ");
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   234
                name = m_info->value(m_id + ".name", name).toString();
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   235
                item->setText(name);
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   236
                item->setData(Qt::UserRole, m_id);
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   237
                m_widget->addItem(item);
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   238
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   239
                orderedMissions << m_id;
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   240
            }
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   241
        }
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   242
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   243
        // then, just load anything else in no particular order
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   244
        m_list = dataMgr.entryList(
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   245
                    "Missions/" + subFolder,
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   246
                    QDir::Files, QStringList("*.lua")).
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   247
               replaceInStrings(QRegExp("\\.lua$"), "");
6059
ddf020d0941a training screen localization works now
sheepluva
parents: 6058
diff changeset
   248
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   249
        foreach (const QString & m_id, m_list)
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   250
        {
13087
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   251
            // Disallow duplicates from order.cfg
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   252
            if (orderedMissions.contains(m_id))
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   253
            {
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   254
                continue;
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   255
            }
b6df6283e2ba Sort all core missions in training menu more logically
Wuzzy <Wuzzy2@mail.ru>
parents: 12240
diff changeset
   256
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   257
            QListWidgetItem * item = new QListWidgetItem(m_id);
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   258
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   259
            // fallback name: replace underscores in mission name with spaces
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   260
            QString name = item->text().replace("_", " ");
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   261
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   262
            // see if we can get a prettier/translated name
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   263
            name = m_info->value(m_id + ".name", name).toString();
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   264
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   265
            item->setText(name);
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   266
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   267
            // store original name in data
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   268
            item->setData(Qt::UserRole, m_id);
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   269
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   270
            m_widget->addItem(item);
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   271
        }
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: 6009
diff changeset
   272
    }
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: 6009
diff changeset
   273
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   274
    updateInfo();
6052
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   275
5e3e7d19bdb5 stuffToBeAvoidedInFuture->append("layouting");
sheepluva
parents: 6050
diff changeset
   276
    // pre-select first mission
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   277
    if (lstTrainings->count() > 0)
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   278
        lstTrainings->setCurrentRow(0);
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   279
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   280
    if (lstChallenges->count() > 0)
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   281
        lstChallenges->setCurrentRow(0);
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   282
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   283
    if (lstScenarios->count() > 0)
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   284
        lstScenarios->setCurrentRow(0);
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: 6009
diff changeset
   285
}
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: 6009
diff changeset
   286
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   287
QString PageTraining::getSubFolderOfSelected()
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   288
{
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   289
    QString subFolder;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   290
    if (tbw->currentWidget() == lstTrainings) {
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   291
        subFolder = "Training";
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   292
    } else if (tbw->currentWidget() == lstChallenges) {
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   293
        subFolder = "Challenge";
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   294
    } else if (tbw->currentWidget() == lstScenarios) {
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   295
        subFolder = "Scenario";
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   296
    } else {
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   297
        subFolder = "Training";
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   298
    }
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   299
    return subFolder;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   300
}
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   301
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   302
void PageTraining::startSelected()
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   303
{
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   304
    QListWidget *list;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   305
    list = (QListWidget*) tbw->currentWidget();
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   306
    QListWidgetItem * curItem = list->currentItem();
6050
07561ade87ca oops, I forgot I wanted to fix that before committing xD
sheepluva
parents: 6048
diff changeset
   307
14646
e3e6b0c6543f Frontend: Gray out campaign/training start buttons when no human team available
Wuzzy <Wuzzy2@mail.ru>
parents: 14591
diff changeset
   308
    if ((curItem != NULL) && (CBTeam->currentIndex() != -1))
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   309
        emit startMission(curItem->data(Qt::UserRole).toString(), getSubFolderOfSelected());
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   310
}
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   311
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   312
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   313
void PageTraining::updateInfo()
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   314
{
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   315
    if (tbw->currentWidget())
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   316
    {
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   317
        QString subFolder;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   318
        QListWidget *list;
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   319
        subFolder = getSubFolderOfSelected();
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   320
        list = (QListWidget*) tbw->currentWidget();
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   321
        if (list->currentItem())
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   322
        {
14525
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   323
            QString missionName = list->currentItem()->data(Qt::UserRole).toString();
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   324
            QString thumbFile =     "physfs://Graphics/Missions/" +
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   325
                                    subFolder + "/" +
14525
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   326
                                    missionName +
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   327
                                    "@2x.png";
6058
ae8684864a6e load mission caption and description from localization file (WIP)
sheepluva
parents: 6054
diff changeset
   328
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   329
            if (QFile::exists(thumbFile))
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   330
                btnPreview->setIcon(QIcon(thumbFile));
14473
afa4f2140252 Add image for challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14471
diff changeset
   331
            else if (tbw->currentWidget() == lstChallenges)
afa4f2140252 Add image for challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14471
diff changeset
   332
                btnPreview->setIcon(QIcon(":/res/Challenges.png"));
14474
2c3fb87ad1c5 Add fallback preview image for scenarios
Wuzzy <Wuzzy2@mail.ru>
parents: 14473
diff changeset
   333
            else if (tbw->currentWidget() == lstScenarios)
2c3fb87ad1c5 Add fallback preview image for scenarios
Wuzzy <Wuzzy2@mail.ru>
parents: 14473
diff changeset
   334
                // TODO: Prettier scenario fallback image
2c3fb87ad1c5 Add fallback preview image for scenarios
Wuzzy <Wuzzy2@mail.ru>
parents: 14473
diff changeset
   335
                btnPreview->setIcon(QIcon(":/res/Scenarios.png"));
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   336
            else
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   337
                btnPreview->setIcon(QIcon(":/res/Trainings.png"));
6058
ae8684864a6e load mission caption and description from localization file (WIP)
sheepluva
parents: 6054
diff changeset
   338
12240
88b31fdc760b Add a few WhatsThis texts in frontend, rename “Stereo rendering” to “Stereoscopy”
Wuzzy <almikes@aol.com>
parents: 12236
diff changeset
   339
            btnPreview->setWhatsThis(tr("Start fighting"));
88b31fdc760b Add a few WhatsThis texts in frontend, rename “Stereo rendering” to “Stereoscopy”
Wuzzy <almikes@aol.com>
parents: 12236
diff changeset
   340
14525
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   341
            QString caption = m_info->value(missionName + ".name",
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   342
                                            list->currentItem()->text()).toString();
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   343
14525
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   344
            QString description = m_info->value(missionName + ".desc",
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   345
                                                tr("No description available")).toString();
6058
ae8684864a6e load mission caption and description from localization file (WIP)
sheepluva
parents: 6054
diff changeset
   346
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   347
            lblCaption->setText("<h2>" + caption +"</h2>");
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   348
            lblDescription->setText(description);
14525
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   349
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   350
            // Challenge highscores
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   351
            QString highscoreText = QString("");
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   352
            QString teamName = CBTeam->currentText();
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   353
            if (missionValueExists(missionName, teamName, "Highscore"))
14527
0fc9560be9cc Pagetraining: Make sure the translator comment will be collected
Wuzzy <Wuzzy2@mail.ru>
parents: 14525
diff changeset
   354
                highscoreText = highscoreText +
0fc9560be9cc Pagetraining: Make sure the translator comment will be collected
Wuzzy <Wuzzy2@mail.ru>
parents: 14525
diff changeset
   355
                    //: Highest score of a team
0fc9560be9cc Pagetraining: Make sure the translator comment will be collected
Wuzzy <Wuzzy2@mail.ru>
parents: 14525
diff changeset
   356
                    tr("Team highscore: %1")
0fc9560be9cc Pagetraining: Make sure the translator comment will be collected
Wuzzy <Wuzzy2@mail.ru>
parents: 14525
diff changeset
   357
                    .arg(getMissionValue(missionName, teamName, "Highscore").toString()) + "\n";
14525
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   358
            if (missionValueExists(missionName, teamName, "Lowscore"))
14527
0fc9560be9cc Pagetraining: Make sure the translator comment will be collected
Wuzzy <Wuzzy2@mail.ru>
parents: 14525
diff changeset
   359
                highscoreText = highscoreText +
0fc9560be9cc Pagetraining: Make sure the translator comment will be collected
Wuzzy <Wuzzy2@mail.ru>
parents: 14525
diff changeset
   360
                    //: Lowest score of a team
0fc9560be9cc Pagetraining: Make sure the translator comment will be collected
Wuzzy <Wuzzy2@mail.ru>
parents: 14525
diff changeset
   361
                    tr("Team lowscore: %1")
0fc9560be9cc Pagetraining: Make sure the translator comment will be collected
Wuzzy <Wuzzy2@mail.ru>
parents: 14525
diff changeset
   362
                    .arg(getMissionValue(missionName, teamName, "Lowscore").toString()) + "\n";
14591
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14527
diff changeset
   363
            if (missionValueExists(missionName, teamName, "AccuracyRecord"))
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14527
diff changeset
   364
                highscoreText = highscoreText +
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14527
diff changeset
   365
                    //: Best accuracy of a team (in a challenge)
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14527
diff changeset
   366
                    tr("Team's top accuracy: %1%")
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14527
diff changeset
   367
                    .arg(getMissionValue(missionName, teamName, "AccuracyRecord").toString()) + "\n";
14525
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   368
            if (missionValueExists(missionName, teamName, "TimeRecord"))
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   369
            {
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   370
                double time = ((double) getMissionValue(missionName, teamName, "TimeRecord").toInt()) / 1000.0;
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   371
                highscoreText = highscoreText + tr("Team's best time: %L1 s").arg(time, 0, 'f', 3) + "\n";
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   372
            }
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   373
            if (missionValueExists(missionName, teamName, "TimeRecordHigh"))
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   374
            {
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   375
                double time = ((double) getMissionValue(missionName, teamName, "TimeRecordHigh").toInt()) / 1000.0;
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   376
                highscoreText = highscoreText + tr("Team's longest time: %L1 s").arg(time, 0, 'f', 3) + "\n";
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   377
            }
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   378
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   379
            lblHighscores->setText(highscoreText);
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   380
        }
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   381
        else
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   382
        {
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   383
            btnPreview->setIcon(QIcon(":/res/Trainings.png"));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   384
            lblCaption->setText(tr("Select a mission!"));
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   385
            lblDescription->setText("");
14525
029f40c609b4 Display team records in training menu
Wuzzy <Wuzzy2@mail.ru>
parents: 14474
diff changeset
   386
            lblHighscores->setText("");
11968
1de4d6b35748 Mission recategorization into trainings, challenges and scenarios.
Wuzzy <almikes@aol.com>
parents: 11046
diff changeset
   387
        }
6048
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   388
    }
ae213ef7030a PIMP'ed up training screen. special thanks to mikade for supplying the pics <3
sheepluva
parents: 6042
diff changeset
   389
}