Skip to content

Commit

Permalink
UI|Client|Home: Allow clearing selected additional data files
Browse files Browse the repository at this point in the history
  • Loading branch information
skyjake committed Jan 25, 2016
1 parent 8615bf0 commit 8d6b4b2
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 3 deletions.
4 changes: 4 additions & 0 deletions doomsday/apps/client/include/ui/widgets/gamesessionwidget.h
Expand Up @@ -49,6 +49,9 @@ class GameSessionWidget : public de::GuiWidget
de::DocumentWidget &document();
de::PopupMenuWidget &menu();

enum DataFileAction { Select, Clear };
void setDataFileAction(DataFileAction action);

/**
* Called immediately before the Info button is pressed.
*/
Expand All @@ -58,6 +61,7 @@ class GameSessionWidget : public de::GuiWidget

public slots:
void browseDataFiles();
void clearDataFiles();

private:
DENG2_PRIVATE(d)
Expand Down
24 changes: 21 additions & 3 deletions doomsday/apps/client/src/ui/widgets/gamesessionwidget.cpp
Expand Up @@ -39,6 +39,7 @@ DENG2_PIMPL(GameSessionWidget)
PopupButtonWidget *funcs = nullptr;
DocumentPopupWidget *doc = nullptr;
PopupMenuWidget *menu = nullptr;
ButtonWidget *actionButton = nullptr;

Instance(Public *i, PopupStyle ps, ui::Direction popupOpeningDirection)
: Base(i)
Expand Down Expand Up @@ -66,9 +67,7 @@ DENG2_PIMPL(GameSessionWidget)
// Set up the info/actions popup widget.
if(popupStyle == PopupWithDataFileButton)
{
ButtonWidget *actionButton = new ButtonWidget;
actionButton->setText(tr("Data Files..."));
actionButton->setAction(new SignalAction(thisPublic, SLOT(browseDataFiles())));
actionButton = new ButtonWidget;
self.add(doc = new DocumentPopupWidget(actionButton));
}
else
Expand Down Expand Up @@ -171,6 +170,20 @@ PopupMenuWidget &GameSessionWidget::menu()
return *d->menu;
}

void GameSessionWidget::setDataFileAction(DataFileAction action)
{
if(action == Select)
{
d->actionButton->setText(tr("Data Files..."));
d->actionButton->setAction(new SignalAction(this, SLOT(browseDataFiles())));
}
else
{
d->actionButton->setText(tr("Reset"));
d->actionButton->setAction(new SignalAction(this, SLOT(clearDataFiles())));
}
}

void GameSessionWidget::updateInfoContent()
{
// overridden by derived classes
Expand All @@ -197,6 +210,11 @@ void GameSessionWidget::browseDataFiles()
d->info->popup()->close();
}

void GameSessionWidget::clearDataFiles()
{
setDataFiles(StringList());
}

void GameSessionWidget::setDataFiles(StringList const &/*paths*/)
{
// overridden by derived classes
Expand Down
Expand Up @@ -162,9 +162,17 @@ DENG_GUI_PIMPL(SingleplayerSessionMenuWidget)
{
GameItem &item = self.items().at(i).as<GameItem>();
item.setLabel(labelForGame(item.game));
updateWidgetAction(item);
}
}

void updateWidgetAction(GameItem const &item)
{
self.itemWidget<GameSessionWidget>(item).
setDataFileAction(item.game.userFiles().isEmpty()? GameSessionWidget::Select :
GameSessionWidget::Clear);
}

void updateWidgetWithGameStatus(ui::Item const &menuItem)
{
GameItem const &item = menuItem.as<GameItem>();
Expand All @@ -176,6 +184,8 @@ DENG_GUI_PIMPL(SingleplayerSessionMenuWidget)

// Can be loaded?
w.loadButton().enable(item.game.allStartupFilesFound() && !isCurrentLoadedGame);

updateWidgetAction(item);
}

void updateGameAvailability()
Expand Down

0 comments on commit 8d6b4b2

Please sign in to comment.