You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
267 lines
7.6 KiB
267 lines
7.6 KiB
/*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
|
|
// QT includes
|
|
#include <tqkeycode.h>
|
|
#include <tqcursor.h>
|
|
|
|
// KDE includes
|
|
#include <kapplication.h>
|
|
#include <kmenubar.h>
|
|
#include <kstatusbar.h>
|
|
#include <kmessagebox.h>
|
|
#include <kconfig.h>
|
|
#include <klocale.h>
|
|
#include <kstdaccel.h>
|
|
#include <kstdaction.h>
|
|
#include <kstdgameaction.h>
|
|
#include <kaction.h>
|
|
#include <kshortcut.h>
|
|
|
|
// own includes
|
|
#include "top.h"
|
|
#include "kpoker.h"
|
|
#include "defines.h"
|
|
#include "version.h"
|
|
|
|
|
|
PokerWindow::PokerWindow()
|
|
{
|
|
m_kpok = new kpok(this, 0);
|
|
setCentralWidget( m_kpok );
|
|
m_kpok->show();
|
|
|
|
clickToHoldIsShown = false;
|
|
|
|
LHLabel = new TQLabel(statusBar());
|
|
LHLabel->adjustSize();
|
|
|
|
connect(m_kpok, TQT_SIGNAL(changeLastHand(const TQString &, bool)),
|
|
this, TQT_SLOT(setHand(const TQString &, bool)));
|
|
connect(m_kpok, TQT_SIGNAL(showClickToHold(bool)),
|
|
this, TQT_SLOT(showClickToHold(bool)));
|
|
connect(m_kpok, TQT_SIGNAL(clearStatusBar()),
|
|
this, TQT_SLOT(clearStatusBar()));
|
|
connect(m_kpok, TQT_SIGNAL(statusBarMessage(TQString)),
|
|
this, TQT_SLOT(statusBarMessage(TQString)));
|
|
|
|
statusBar()->addWidget(LHLabel, 0, true);
|
|
m_kpok->updateLHLabel();
|
|
//FIXME: LHLabel is shown twize until the bar is tqrepainted!
|
|
|
|
initKAction();
|
|
readOptions();
|
|
}
|
|
|
|
|
|
PokerWindow::~PokerWindow()
|
|
{
|
|
}
|
|
|
|
|
|
// ----------------------------------------------------------------
|
|
|
|
|
|
void PokerWindow::initKAction()
|
|
{
|
|
//Game
|
|
KStdGameAction::gameNew(TQT_TQOBJECT(m_kpok), TQT_SLOT(newGame()), actionCollection());
|
|
KStdGameAction::save(TQT_TQOBJECT(m_kpok), TQT_SLOT(saveGame()), actionCollection());
|
|
KStdGameAction::quit(TQT_TQOBJECT(this), TQT_SLOT(close()), actionCollection());
|
|
|
|
//Settings
|
|
showMenubarAction =
|
|
KStdAction::showMenubar(TQT_TQOBJECT(this), TQT_SLOT(toggleMenubar()), actionCollection());
|
|
|
|
soundAction = new KToggleAction(i18n("Soun&d"), 0, TQT_TQOBJECT(m_kpok),
|
|
TQT_SLOT(toggleSound()), actionCollection(), "options_sound");
|
|
if (m_kpok->getSound())
|
|
m_kpok->toggleSound();
|
|
blinkingAction = new KToggleAction(i18n("&Blinking Cards"), 0, TQT_TQOBJECT(m_kpok),
|
|
TQT_SLOT(toggleBlinking()), actionCollection(), "options_blinking");
|
|
if (m_kpok->getBlinking())
|
|
m_kpok->toggleBlinking();
|
|
adjustAction = new KToggleAction(i18n("&Adjust Bet is Default"), 0,
|
|
TQT_TQOBJECT(m_kpok), TQT_SLOT(toggleAdjust()), actionCollection(), "options_adjust");
|
|
if (m_kpok->getAdjust())
|
|
m_kpok->toggleAdjust();
|
|
|
|
showStatusbarAction =
|
|
KStdAction::showStatusbar(TQT_TQOBJECT(this), TQT_SLOT(toggleStatusbar()), actionCollection());
|
|
|
|
KStdAction::saveOptions(TQT_TQOBJECT(this), TQT_SLOT(saveOptions()), actionCollection());
|
|
KStdGameAction::carddecks(TQT_TQOBJECT(m_kpok), TQT_SLOT(slotCardDeck()), actionCollection());
|
|
KStdAction::preferences(TQT_TQOBJECT(m_kpok), TQT_SLOT(slotPreferences()), actionCollection());
|
|
|
|
// Keyboard shortcuts.
|
|
(void)new KAction(i18n("Draw"), KShortcut(TQt::Key_Return), TQT_TQOBJECT(m_kpok),
|
|
TQT_SLOT(drawClick()), actionCollection(), "draw");
|
|
(void)new KAction(i18n("Exchange Card 1"), KShortcut(TQt::Key_1), TQT_TQOBJECT(m_kpok),
|
|
TQT_SLOT(exchangeCard1()), actionCollection(), "exchange_card_1");
|
|
(void)new KAction(i18n("Exchange Card 2"), KShortcut(TQt::Key_2), TQT_TQOBJECT(m_kpok),
|
|
TQT_SLOT(exchangeCard2()), actionCollection(), "exchange_card_2");
|
|
(void)new KAction(i18n("Exchange Card 3"), KShortcut(TQt::Key_3), TQT_TQOBJECT(m_kpok),
|
|
TQT_SLOT(exchangeCard3()), actionCollection(), "exchange_card_3");
|
|
(void)new KAction(i18n("Exchange Card 4"), KShortcut(TQt::Key_4), TQT_TQOBJECT(m_kpok),
|
|
TQT_SLOT(exchangeCard4()), actionCollection(), "exchange_card_4");
|
|
(void)new KAction(i18n("Exchange Card 5"), KShortcut(TQt::Key_5), TQT_TQOBJECT(m_kpok),
|
|
TQT_SLOT(exchangeCard5()), actionCollection(), "exchange_card_5");
|
|
|
|
setupGUI( KMainWindow::Save | StatusBar | Keys | Create);
|
|
}
|
|
|
|
|
|
void PokerWindow::readOptions()
|
|
{
|
|
KConfig* conf = kapp->config();
|
|
conf->setGroup("General");
|
|
|
|
if (m_kpok->getSound() != conf->readBoolEntry("Sound", true))
|
|
soundAction->activate();
|
|
|
|
if (m_kpok->getBlinking() != conf->readBoolEntry("Blinking", true))
|
|
blinkingAction->activate();
|
|
|
|
if (m_kpok->getAdjust() != conf->readBoolEntry("Adjust", true))
|
|
adjustAction->activate();
|
|
|
|
if ( showMenubarAction->isChecked() !=
|
|
conf->readBoolEntry("ShowMenubar", true))
|
|
showMenubarAction->activate();
|
|
|
|
if ( showStatusbarAction->isChecked() !=
|
|
conf->readBoolEntry("ShowStatusbar", true))
|
|
showStatusbarAction->activate();
|
|
}
|
|
|
|
|
|
void PokerWindow::toggleMenubar()
|
|
{
|
|
if (!menuBar()->isHidden())
|
|
menuBar()->hide();
|
|
else
|
|
menuBar()->show();
|
|
}
|
|
|
|
|
|
void PokerWindow::toggleStatusbar()
|
|
{
|
|
if (!statusBar()->isHidden())
|
|
statusBar()->hide();
|
|
else
|
|
statusBar()->show();
|
|
}
|
|
|
|
|
|
/* Ask the user if he/she wants to save the game. This virtual method
|
|
* is called from the Quit KAction (I think).
|
|
*/
|
|
|
|
bool PokerWindow::queryClose()
|
|
{
|
|
if (!m_kpok->isDirty())
|
|
return true;
|
|
|
|
// Only ask if the game is changed in some way.
|
|
switch(KMessageBox::warningYesNoCancel(this, i18n("Do you want to save this game?"), TQString(), KStdGuiItem::save(), KStdGuiItem::dontSave())) {
|
|
case KMessageBox::Yes :
|
|
m_kpok->saveGame();
|
|
return true;
|
|
case KMessageBox::No :
|
|
return true;
|
|
default :
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
/* Show the hand or winner in the status bar at the lower right.
|
|
*
|
|
* Which is shown depends on wether this is a one player game or a two
|
|
* player game.
|
|
*/
|
|
|
|
void PokerWindow::setHand(const TQString &newHand, bool lastHand)
|
|
{
|
|
if (lastHand)
|
|
LHLabel->setText(i18n("Last hand: ") + newHand);
|
|
else
|
|
LHLabel->setText(i18n("Last winner: ") + newHand);
|
|
LHLabel->adjustSize();
|
|
}
|
|
|
|
|
|
void PokerWindow::showClickToHold(bool show)
|
|
{
|
|
if (show) {
|
|
statusBar()->clear();
|
|
statusBar()->message(i18n("Click a card to hold it"));
|
|
clickToHoldIsShown = true;
|
|
} else if (clickToHoldIsShown) {
|
|
statusBar()->clear();
|
|
clickToHoldIsShown = false;
|
|
}
|
|
}
|
|
|
|
|
|
void PokerWindow::statusBarMessage(TQString s)
|
|
{
|
|
clearStatusBar();
|
|
statusBar()->message(s);
|
|
clickToHoldIsShown = false;
|
|
}
|
|
|
|
|
|
void PokerWindow::clearStatusBar()
|
|
{
|
|
if (!clickToHoldIsShown)
|
|
statusBar()->clear();
|
|
}
|
|
|
|
|
|
void PokerWindow::saveOptions()
|
|
{
|
|
KConfig* conf = kapp->config();
|
|
conf->setGroup("General");
|
|
|
|
conf->writeEntry("Sound", soundAction->isChecked());
|
|
conf->writeEntry("Blinking", blinkingAction->isChecked());
|
|
conf->writeEntry("Adjust", adjustAction->isChecked());
|
|
conf->writeEntry("ShowMenubar", showMenubarAction->isChecked());
|
|
conf->writeEntry("ShowStatusbar", showStatusbarAction->isChecked());
|
|
}
|
|
|
|
|
|
bool PokerWindow::eventFilter(TQObject*, TQEvent* e)
|
|
{
|
|
if (e->type() == TQEvent::MouseButtonPress) {
|
|
|
|
if (((TQMouseEvent*)e)->button() == Qt::RightButton) {
|
|
TQPopupMenu* popup = (TQPopupMenu*) factory()->container("popup", this);
|
|
if (popup)
|
|
popup->popup(TQCursor::pos());
|
|
return true;
|
|
} else
|
|
return false;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
#include "top.moc"
|
|
|