diff --git a/src/guis/GuiMsgBox.cpp b/src/guis/GuiMsgBox.cpp index 7168c70c9..5a7487a4f 100644 --- a/src/guis/GuiMsgBox.cpp +++ b/src/guis/GuiMsgBox.cpp @@ -5,6 +5,8 @@ #include "../components/MenuComponent.h" // for makeButtonGrid #include "../Util.h" +#define HORIZONTAL_PADDING_PX 20 + GuiMsgBox::GuiMsgBox(Window* window, const std::string& text, const std::string& name1, const std::function& func1, const std::string& name2, const std::function& func2, @@ -15,7 +17,8 @@ GuiMsgBox::GuiMsgBox(Window* window, const std::string& text, float minWidth = Renderer::getScreenWidth() * 0.3f; // minimum width mMsg = std::make_shared(mWindow, text, Font::get(FONT_SIZE_MEDIUM), 0x777777FF, TextComponent::ALIGN_CENTER); - + mGrid.setEntry(mMsg, Eigen::Vector2i(0, 0), false, false); + // create the buttons mButtons.push_back(std::make_shared(mWindow, name1, name1, std::bind(&GuiMsgBox::deleteMeAndCall, this, func1))); if(!name2.empty()) @@ -40,25 +43,20 @@ GuiMsgBox::GuiMsgBox(Window* window, const std::string& text, // put the buttons into a ComponentGrid mButtonGrid = makeButtonGrid(mWindow, mButtons); - - mGrid.setEntry(mMsg, Eigen::Vector2i(0, 0), false, true); mGrid.setEntry(mButtonGrid, Eigen::Vector2i(0, 1), true, false, Eigen::Vector2i(1, 1), GridFlags::BORDER_TOP); - if(mMsg->getSize().x() > width) + // decide final width + if(mMsg->getSize().x() < width && mButtonGrid->getSize().x() < width) { - mMsg->setSize(width, 0); - }else{ - // mMsg is narrower than width - // are buttons? - if(mButtonGrid->getSize().x() < width) - { - width = std::max(mButtonGrid->getSize().x(), mMsg->getSize().x()); - width = std::max(width, minWidth); - } + // mMsg and buttons are narrower than width + width = std::max(mButtonGrid->getSize().x(), mMsg->getSize().x()); + width = std::max(width, minWidth); } + // now that we know width, we can find height + mMsg->setSize(width, 0); // mMsg->getSize.y() now returns the proper length const float msgHeight = std::max(Font::get(FONT_SIZE_LARGE)->getHeight(), mMsg->getSize().y()); - setSize(width, msgHeight + mButtonGrid->getSize().y()); + setSize(width + HORIZONTAL_PADDING_PX*2, msgHeight + mButtonGrid->getSize().y()); // center for good measure setPosition((Renderer::getScreenWidth() - mSize.x()) / 2.0f, (Renderer::getScreenHeight() - mSize.y()) / 2.0f); @@ -81,9 +79,13 @@ bool GuiMsgBox::input(InputConfig* config, Input input) void GuiMsgBox::onSizeChanged() { mGrid.setSize(mSize); - mBackground.fitTo(mSize, Eigen::Vector3f::Zero(), Eigen::Vector2f(-32, -32)); - mGrid.setRowHeightPerc(1, mButtonGrid->getSize().y() / mSize.y()); + + // update messagebox size + mMsg->setSize(mSize.x() - HORIZONTAL_PADDING_PX*2, mGrid.getRowHeight(0)); + mGrid.onSizeChanged(); + + mBackground.fitTo(mSize, Eigen::Vector3f::Zero(), Eigen::Vector2f(-32, -32)); } void GuiMsgBox::deleteMeAndCall(const std::function& func) diff --git a/src/guis/GuiScraperMulti.cpp b/src/guis/GuiScraperMulti.cpp index 44e46b8c2..bbe9d9072 100644 --- a/src/guis/GuiScraperMulti.cpp +++ b/src/guis/GuiScraperMulti.cpp @@ -21,6 +21,7 @@ GuiScraperMulti::GuiScraperMulti(Window* window, const std::queue(mWindow, "SCRAPING IN PROGRESS", Font::get(FONT_SIZE_LARGE), 0x555555FF, TextComponent::ALIGN_CENTER); @@ -94,6 +95,7 @@ void GuiScraperMulti::acceptResult(const ScraperSearchResult& result) mSearchQueue.pop(); mCurrentGame++; + mTotalSuccessful++; doNextSearch(); } @@ -106,7 +108,13 @@ void GuiScraperMulti::skip() void GuiScraperMulti::finish() { - mWindow->pushGui(new GuiMsgBox(mWindow, "SCRAPING COMPLETE!", + std::stringstream ss; + if(mTotalSuccessful == 0) + ss << "NO GAMES SUCCESSFULLY SCRAPED."; + else + ss << mTotalSuccessful << " GAME" << ((mTotalSuccessful > 1) ? "S" : "") << "SUCCESSFULLY SCRAPED!"; + + mWindow->pushGui(new GuiMsgBox(mWindow, ss.str(), "OK", [&] { delete this; })); } diff --git a/src/guis/GuiScraperMulti.h b/src/guis/GuiScraperMulti.h index dd2b51c08..526c75afa 100644 --- a/src/guis/GuiScraperMulti.h +++ b/src/guis/GuiScraperMulti.h @@ -27,6 +27,7 @@ private: unsigned int mTotalGames; unsigned int mCurrentGame; + unsigned int mTotalSuccessful; std::queue mSearchQueue; NinePatchComponent mBackground;