diff --git a/common/server_game.cpp b/common/server_game.cpp index 85db1171..63abe40d 100644 --- a/common/server_game.cpp +++ b/common/server_game.cpp @@ -303,7 +303,7 @@ QList Server_Game::getGameState(Server_Player *playerWhosAs Server_CardZone *zone = zoneIterator.next().value(); QList cardList; if ( - ((playerWhosAsking == player) && (zone->getType() != HiddenZone)) + (((playerWhosAsking == player) || (playerWhosAsking->getSpectator() && spectatorsSeeEverything)) && (zone->getType() != HiddenZone)) || ((playerWhosAsking != player) && (zone->getType() == PublicZone)) ) { QListIterator cardIterator(zone->cards); diff --git a/oracle/src/window_main.cpp b/oracle/src/window_main.cpp index 4907cf3b..2ffa7ad9 100644 --- a/oracle/src/window_main.cpp +++ b/oracle/src/window_main.cpp @@ -27,11 +27,21 @@ WindowMain::WindowMain(QWidget *parent) checkboxArea->setWidget(checkboxFrame); checkboxArea->setWidgetResizable(true); + checkAllButton = new QPushButton(tr("&Check all")); + connect(checkAllButton, SIGNAL(clicked()), this, SLOT(actCheckAll())); + uncheckAllButton = new QPushButton(tr("&Uncheck all")); + connect(uncheckAllButton, SIGNAL(clicked()), this, SLOT(actUncheckAll())); + + QHBoxLayout *checkAllButtonLayout = new QHBoxLayout; + checkAllButtonLayout->addWidget(checkAllButton); + checkAllButtonLayout->addWidget(uncheckAllButton); + startButton = new QPushButton(tr("&Start download")); connect(startButton, SIGNAL(clicked()), this, SLOT(actStart())); QVBoxLayout *settingsLayout = new QVBoxLayout; settingsLayout->addWidget(checkboxArea); + settingsLayout->addLayout(checkAllButtonLayout); settingsLayout->addWidget(startButton); totalLabel = new QLabel(tr("Total progress:")); @@ -155,12 +165,28 @@ void WindowMain::updateFileProgress(int bytesRead, int totalBytes) fileProgressBar->setValue(bytesRead); } +void WindowMain::actCheckAll() +{ + for (int i = 0; i < checkBoxList.size(); ++i) + checkBoxList[i]->setChecked(true); +} + +void WindowMain::actUncheckAll() +{ + for (int i = 0; i < checkBoxList.size(); ++i) + checkBoxList[i]->setChecked(false); +} + void WindowMain::actStart() { - startButton->setEnabled(false); + int setsCount = importer->startDownload(); + if (!setsCount) { + QMessageBox::critical(this, tr("Error"), tr("No sets to download selected.")); + return; + } for (int i = 0; i < checkBoxList.size(); ++i) checkBoxList[i]->setEnabled(false); - int setsCount = importer->startDownload(); + startButton->setEnabled(false); totalProgressBar->setMaximum(setsCount); } diff --git a/oracle/src/window_main.h b/oracle/src/window_main.h index 61ae7110..afcf897d 100644 --- a/oracle/src/window_main.h +++ b/oracle/src/window_main.h @@ -25,7 +25,7 @@ private: QMenu *fileMenu; QAction *aLoadSetsFile, *aDownloadSetsFile, *aExit; - QPushButton *startButton; + QPushButton *checkAllButton, *uncheckAllButton, *startButton; QLabel *totalLabel, *fileLabel, *nextSetLabel1, *nextSetLabel2; QProgressBar *totalProgressBar, *fileProgressBar; QTextEdit *messageLog; @@ -37,6 +37,8 @@ private slots: void updateTotalProgress(int cardsImported, int setIndex, const QString &nextSetName); void updateFileProgress(int bytesRead, int totalBytes); void updateSetList(); + void actCheckAll(); + void actUncheckAll(); void actStart(); void actLoadSetsFile(); void actDownloadSetsFile();