Skip to content

Commit

Permalink
UI|Client: Actions in package info popups
Browse files Browse the repository at this point in the history
The package compatibility dialog should not allow performing actions on the listed packages, just show information.
  • Loading branch information
skyjake committed Oct 21, 2018
1 parent ae484e0 commit 1a780aa
Show file tree
Hide file tree
Showing 9 changed files with 302 additions and 286 deletions.
7 changes: 5 additions & 2 deletions doomsday/apps/client/include/ui/dialogs/packageinfodialog.h
Expand Up @@ -29,8 +29,11 @@ class PackageInfoDialog : public de::DialogWidget
Q_OBJECT

public:
PackageInfoDialog(de::String const &packageId);
PackageInfoDialog(de::File const *packageFile);
enum Mode { EnableActions, InformationOnly };

public:
PackageInfoDialog(de::String const &packageId, Mode mode);
PackageInfoDialog(de::File const *packageFile, Mode mode);

protected:
void prepare() override;
Expand Down
1 change: 1 addition & 0 deletions doomsday/apps/client/include/ui/widgets/packageswidget.h
Expand Up @@ -61,6 +61,7 @@ class PackagesWidget : public de::GuiWidget, public de::IPersistent
de::ProgressWidget &progress();

void setManualPackageIds(de::StringList manualPackageIds);
void setAllowPackageInfoActions(bool allowActions);
void setRightClickToOpenContextMenu(bool enable);
void setHiddenTags(de::StringList hiddenTags);
void setDontFilterHidden(bool enable);
Expand Down
Expand Up @@ -112,7 +112,8 @@ DENG2_PIMPL(PackageCompatibilityDialog)
{
// The only action on the packages is to view information.
actions << new ui::SubwidgetItem(tr("..."), ui::Up, [this]() -> PopupWidget * {
return new PackageInfoDialog(list->actionPackage());
return new PackageInfoDialog(list->actionPackage(),
PackageInfoDialog::InformationOnly);
});

self().area().add(ignoreToggle = new ToggleWidget);
Expand Down Expand Up @@ -191,6 +192,7 @@ DENG2_PIMPL(PackageCompatibilityDialog)
[](const std::pair<String, Version> &sv) { return sv.first; });

self().area().add(list = new PackagesWidget(wantedAvailable + wantedDifferent));
list->setAllowPackageInfoActions(false);
list->setDontFilterHidden(true);
list->setActionItems(actions);
list->setActionsAlwaysShown(true);
Expand Down
267 changes: 130 additions & 137 deletions doomsday/apps/client/src/ui/dialogs/packageinfodialog.cpp

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions doomsday/apps/client/src/ui/dialogs/packagesdialog.cpp
Expand Up @@ -153,7 +153,7 @@ DENG_GUI_PIMPL(PackagesDialog)

PopupWidget *makeInfoPopup() const
{
return new PackageInfoDialog(_item->packageFile());
return new PackageInfoDialog(_item->packageFile(), PackageInfoDialog::EnableActions);
}

private:
Expand Down Expand Up @@ -224,7 +224,7 @@ DENG_GUI_PIMPL(PackagesDialog)
actions << new ui::SubwidgetItem(tr("..."), ui::Up, [this] () -> PopupWidget *
{
String const id = browser->actionPackage();
return new PackageInfoDialog(id);
return new PackageInfoDialog(id, PackageInfoDialog::EnableActions);
});

// Action for (de)selecting the package.
Expand Down
9 changes: 5 additions & 4 deletions doomsday/apps/client/src/ui/dialogs/serverinfodialog.cpp
Expand Up @@ -166,10 +166,11 @@ DENG_GUI_PIMPL(ServerInfoDialog)
bg->rule().setRect(mapOutline->rule())
.setInput(Rule::Bottom, gameState->rule().bottom());

serverPackageActions << new ui::SubwidgetItem(tr("..."), ui::Right, [this] () -> PopupWidget *
{
return new PackageInfoDialog(serverPackages->actionPackage());
});
serverPackageActions << new ui::SubwidgetItem(
tr("..."), ui::Right, [this]() -> PopupWidget * {
return new PackageInfoDialog(serverPackages->actionPackage(),
PackageInfoDialog::EnableActions);
});

// Popups.

Expand Down
6 changes: 3 additions & 3 deletions doomsday/apps/client/src/ui/home/packagescolumnwidget.cpp
Expand Up @@ -54,9 +54,9 @@ DENG_GUI_PIMPL(PackagesColumnWidget)
{
DoomsdayApp::app().audienceForGameChange() += this;

actions << new ui::SubwidgetItem(tr("..."), ui::Left, [this] () -> PopupWidget *
{
return new PackageInfoDialog(packages->actionPackage());
actions << new ui::SubwidgetItem(tr("..."), ui::Left, [this]() -> PopupWidget * {
return new PackageInfoDialog(packages->actionPackage(),
PackageInfoDialog::EnableActions);
});

countLabel = new LabelWidget;
Expand Down
22 changes: 13 additions & 9 deletions doomsday/apps/client/src/ui/widgets/packagessidebarwidget.cpp
Expand Up @@ -39,15 +39,19 @@ DENG_GUI_PIMPL(PackagesSidebarWidget)
browser->rule().setInput(Rule::Width, rule("sidebar.width"));

// Action for showing information about the package.
browser->actionItems().insert(0, new ui::ActionItem(tr("..."), new CallbackAction([this] ()
{
auto *pop = new PackageInfoDialog(browser->actionPackage());
root().addOnTop(pop);
pop->setDeleteAfterDismissed(true);
pop->setAnchorAndOpeningDirection(browser->actionWidget()->as<HomeItemWidget>()
.buttonWidget(0).rule(), ui::Up);
pop->open();
})));
browser->actionItems().insert(
0,
new ui::ActionItem(
tr("..."), new CallbackAction([this]() {
auto *pop = new PackageInfoDialog(browser->actionPackage(),
PackageInfoDialog::EnableActions);
root().addOnTop(pop);
pop->setDeleteAfterDismissed(true);
pop->setAnchorAndOpeningDirection(
browser->actionWidget()->as<HomeItemWidget>().buttonWidget(0).rule(),
ui::Up);
pop->open();
})));
}
};

Expand Down

0 comments on commit 1a780aa

Please sign in to comment.