File indexing completed on 2024-04-21 04:02:30
0001 /*************************************************************************** 0002 * Copyright (C) 2005-2007 by Albert Astals Cid <aacid@kde.org> * 0003 * * 0004 * This program is free software; you can redistribute it and/or modify * 0005 * it under the terms of the GNU General Public License as published by * 0006 * the Free Software Foundation; either version 2 of the License, or * 0007 * (at your option) any later version. * 0008 ***************************************************************************/ 0009 0010 #include "lateralwidget.h" 0011 0012 #include <QLabel> 0013 #include <QPushButton> 0014 #include <QStackedWidget> 0015 #include <QVBoxLayout> 0016 0017 #include <QAction> 0018 #include <QIcon> 0019 #include <KGameStandardAction> 0020 #include <KLocalizedString> 0021 0022 #include "diceswidget.h" 0023 0024 lateralWidget::lateralWidget(QWidget *parent) : QWidget(parent), m_demoMode(false) 0025 { 0026 QVBoxLayout *lay = new QVBoxLayout(this); 0027 m_rolls = new QLabel(this); 0028 m_dices = new dicesWidget(this); 0029 m_buttons = new QStackedWidget(this); 0030 m_rollButton = new QPushButton(QIcon::fromTheme( QStringLiteral( "roll") ), i18n("&Roll" ), this); 0031 0032 QAction *dummyAction = KGameStandardAction::gameNew(nullptr, nullptr, nullptr); 0033 m_newGameButton = new QPushButton(dummyAction->icon(), dummyAction->text(), this); 0034 delete dummyAction; 0035 0036 m_buttons -> addWidget(m_rollButton); 0037 m_buttons -> addWidget(m_newGameButton); 0038 0039 disableDemoMode(); 0040 0041 lay -> addWidget(m_rolls, 0, Qt::AlignHCenter); 0042 lay -> addWidget(m_dices); 0043 lay -> addWidget(m_buttons); 0044 lay -> addStretch(1); 0045 0046 connect(m_rollButton, &QPushButton::clicked, this, &lateralWidget::roll); 0047 connect(m_rollButton, &QPushButton::clicked, this, &lateralWidget::unhighlightAllDice); 0048 connect(m_newGameButton, &QPushButton::clicked, this, &lateralWidget::newGame); 0049 0050 nextTurn(); 0051 } 0052 0053 void lateralWidget::nextTurn() 0054 { 0055 m_roll = 1; 0056 updateRollLabel(); 0057 m_dices -> rollAll(); 0058 if (!m_demoMode) m_buttons -> setCurrentWidget(m_rollButton); 0059 } 0060 0061 void lateralWidget::setEnabled(bool enabled) 0062 { 0063 m_rollButton -> setEnabled(enabled); 0064 //newGameButton enabledness is controlled internally 0065 //m_newGameButton -> setEnabled(enabled); 0066 m_dices -> setEnabled(enabled); 0067 } 0068 0069 void lateralWidget::enableDemoMode() 0070 { 0071 m_buttons -> setCurrentWidget(m_newGameButton); 0072 m_newGameButton->setEnabled(true); 0073 m_demoMode = true; 0074 } 0075 0076 void lateralWidget::disableDemoMode() 0077 { 0078 m_buttons -> setCurrentWidget(m_rollButton); 0079 m_newGameButton -> setEnabled(false); 0080 m_demoMode = false; 0081 } 0082 0083 void lateralWidget::endGame() 0084 { 0085 m_newGameButton -> setEnabled(true); 0086 m_buttons -> setCurrentWidget(m_newGameButton); 0087 } 0088 0089 int lateralWidget::getDice(int dice) const 0090 { 0091 return m_dices -> getDice(dice); 0092 } 0093 0094 void lateralWidget::selectDice(int dice, bool selected) 0095 { 0096 m_dices -> selectDice(dice, selected); 0097 } 0098 0099 void lateralWidget::highlightDice(int dice, bool selected) 0100 { 0101 m_dices -> highlightDice(dice, selected); 0102 } 0103 0104 void lateralWidget::unhighlightAllDice() 0105 { 0106 for (int i = 0; i < 5; ++i) m_dices -> highlightDice(i, false); 0107 } 0108 0109 int lateralWidget::getRolls() const 0110 { 0111 return m_roll; 0112 } 0113 0114 int lateralWidget::getOnes() const 0115 { 0116 return m_dices -> getOnes(); 0117 } 0118 0119 int lateralWidget::getTwos() const 0120 { 0121 return m_dices -> getTwos(); 0122 } 0123 0124 int lateralWidget::getThrees() const 0125 { 0126 return m_dices -> getThrees(); 0127 } 0128 0129 int lateralWidget::getFours() const 0130 { 0131 return m_dices -> getFours(); 0132 } 0133 0134 int lateralWidget::getFives() const 0135 { 0136 return m_dices -> getFives(); 0137 } 0138 0139 int lateralWidget::getSixs() const 0140 { 0141 return m_dices -> getSixs(); 0142 } 0143 0144 int lateralWidget::getThreeOfAKind() const 0145 { 0146 return m_dices -> getThreeOfAKind(); 0147 } 0148 0149 int lateralWidget::getFourOfAKind() const 0150 { 0151 return m_dices -> getFourOfAKind(); 0152 } 0153 0154 int lateralWidget::getFullHouse() const 0155 { 0156 return m_dices -> getFullHouse(); 0157 } 0158 0159 int lateralWidget::getSStraight() const 0160 { 0161 return m_dices -> getSStraight(); 0162 } 0163 0164 int lateralWidget::getLStraight() const 0165 { 0166 return m_dices -> getLStraight(); 0167 } 0168 0169 int lateralWidget::getKiriki() const 0170 { 0171 return m_dices -> getKiriki(); 0172 } 0173 0174 int lateralWidget::totalSum() const 0175 { 0176 return m_dices -> totalSum(); 0177 } 0178 0179 0180 void lateralWidget::roll() 0181 { 0182 if (m_dices -> roll()) 0183 { 0184 m_roll++; 0185 updateRollLabel(); 0186 Q_EMIT rolled(); 0187 } 0188 } 0189 0190 void lateralWidget::newGame() 0191 { 0192 disableDemoMode(); 0193 Q_EMIT newGameClicked(); 0194 } 0195 0196 void lateralWidget::updateRollLabel() 0197 { 0198 m_rolls -> setText(i18n("Roll %1 of 3",m_roll)); 0199 if (!m_demoMode) setEnabled(m_roll != 3); 0200 } 0201 0202 #include "moc_lateralwidget.cpp"