Skip to content

Commit

Permalink
Refactor|libappfw|Client: Easier way to use images from the UI style
Browse files Browse the repository at this point in the history
LabelWidget now offers a convenient method for using an image from the
UI style with a height that matches a font.
  • Loading branch information
skyjake committed Apr 24, 2016
1 parent 51d1c53 commit 42a9c04
Show file tree
Hide file tree
Showing 9 changed files with 34 additions and 28 deletions.
7 changes: 2 additions & 5 deletions doomsday/apps/client/src/ui/dialogs/packagesdialog.cpp
Expand Up @@ -36,7 +36,6 @@
#include <de/PopupMenuWidget>
#include <de/SequentialLayout>
#include <de/SignalAction>
#include <de/StyleProceduralImage>
#include <de/ui/SubwidgetItem>

using namespace de;
Expand Down Expand Up @@ -110,8 +109,7 @@ DENG_GUI_PIMPL(PackagesDialog)
useColorTheme(Normal, Normal);

_removeButton = new ButtonWidget;
_removeButton->setImage(new StyleProceduralImage("close.ringless", *_removeButton));
_removeButton->setOverrideImageSize(style().fonts().font("small").height().value());
_removeButton->setStyleImage("close.ringless", "small");
_removeButton->margins().setTopBottom("unit");
_removeButton->setActionFn([this] ()
{
Expand All @@ -124,10 +122,9 @@ DENG_GUI_PIMPL(PackagesDialog)
// Package icon.
icon().set(Background());
icon().setImageFit(ui::FitToSize | ui::OriginalAspectRatio);
icon().setImage(new StyleProceduralImage("package", *this));
icon().setStyleImage("package", "default");
icon().margins().set("dialog.gap");
Rule const &height = style().fonts().font("default").height();
icon().setOverrideImageSize(height.value());
icon().rule().setInput(Rule::Width, height + rule("dialog.gap")*2);
}

Expand Down
3 changes: 1 addition & 2 deletions doomsday/apps/client/src/ui/home/gamecolumnwidget.cpp
Expand Up @@ -34,7 +34,6 @@
#include <de/MenuWidget>
#include <de/PersistentState>
#include <de/PopupMenuWidget>
#include <de/StyleProceduralImage>

using namespace de;

Expand Down Expand Up @@ -120,7 +119,7 @@ DENG_GUI_PIMPL(GameColumnWidget)
area.add(newProfileButton = new ButtonWidget);
newProfileButton->audienceForStateChange() += this;
newProfileButton->setText(tr("New Profile..."));
newProfileButton->setImage(new StyleProceduralImage("create", *newProfileButton));
newProfileButton->setStyleImage("create");
newProfileButton->setOverrideImageSize(style().fonts().font("default").height().value() * 1.5f);
newProfileButton->set(Background());
newProfileButton->setSizePolicy(ui::Filled, ui::Expand);
Expand Down
7 changes: 2 additions & 5 deletions doomsday/apps/client/src/ui/home/gamepanelbuttonwidget.cpp
Expand Up @@ -34,7 +34,6 @@
#include <de/CallbackAction>
#include <de/ChildWidgetOrganizer>
#include <de/PopupMenuWidget>
#include <de/StyleProceduralImage>

using namespace de;

Expand Down Expand Up @@ -74,9 +73,8 @@ DENG_GUI_PIMPL(GamePanelButtonWidget)

playButton = new ButtonWidget;
playButton->useInfoStyle();
playButton->setImage(new StyleProceduralImage("play", self));
playButton->setStyleImage("play", "default");
playButton->setImageColor(style().colors().colorf("inverted.text"));
playButton->setOverrideImageSize(style().fonts().font("default").height().value());
playButton->setActionFn([this] () { playButtonPressed(); });
self.addButton(playButton);

Expand All @@ -88,8 +86,7 @@ DENG_GUI_PIMPL(GamePanelButtonWidget)
saves->setItems(savedItems);

deleteSaveButton = new ButtonWidget;
deleteSaveButton->setImage(new StyleProceduralImage("close.ring", self));
deleteSaveButton->setOverrideImageSize(style().fonts().font("default").height().value());
deleteSaveButton->setStyleImage("close.ring", "default");
deleteSaveButton->setSizePolicy(ui::Expand, ui::Expand);
deleteSaveButton->set(Background());
deleteSaveButton->hide();
Expand Down
9 changes: 4 additions & 5 deletions doomsday/apps/client/src/ui/home/headerwidget.cpp
Expand Up @@ -23,7 +23,6 @@
#include <de/ButtonWidget>
#include <de/PanelWidget>
#include <de/CallbackAction>
#include <de/StyleProceduralImage>

using namespace de;

Expand Down Expand Up @@ -167,14 +166,14 @@ PanelWidget &HeaderWidget::infoPanel()
return *d->infoPanel;
}

void HeaderWidget::setLogoImage(const DotPath &imageId)
void HeaderWidget::setLogoImage(DotPath const &imageId)
{
d->logo->setImage(new StyleProceduralImage(imageId, *d->logo));
d->logo->setStyleImage(imageId);
d->logo->rule().setInput(Rule::Width, Const(toDevicePixels(160)));
d->title->margins().setLeft("gap");
}

void HeaderWidget::setLogoBackground(const DotPath &imageId)
void HeaderWidget::setLogoBackground(DotPath const &imageId)
{
d->logoBg->setImage(new StyleProceduralImage(imageId, *d->logoBg));
d->logoBg->setStyleImage(imageId);
}
3 changes: 1 addition & 2 deletions doomsday/apps/client/src/ui/widgets/packagesbuttonwidget.cpp
Expand Up @@ -20,7 +20,6 @@
#include "ui/dialogs/packagesdialog.h"

#include <de/CallbackAction>
#include <de/StyleProceduralImage>

using namespace de;

Expand All @@ -36,7 +35,7 @@ DENG_GUI_PIMPL(PackagesButtonWidget)

void updateLabel()
{
self.setImage(new StyleProceduralImage("package", self));
self.setStyleImage("package");

if(packages.isEmpty())
{
Expand Down
11 changes: 4 additions & 7 deletions doomsday/apps/client/src/ui/widgets/packageswidget.cpp
Expand Up @@ -32,7 +32,6 @@
#include <de/PopupButtonWidget>
#include <de/SequentialLayout>
#include <de/SignalAction>
#include <de/StyleProceduralImage>

using namespace de;

Expand Down Expand Up @@ -141,10 +140,9 @@ DENG_GUI_PIMPL(PackagesWidget)
{
icon().set(Background());
icon().setImageFit(ui::FitToSize | ui::OriginalAspectRatio);
icon().setImage(new StyleProceduralImage("package", *this));
icon().setStyleImage("package", "default");
icon().margins().set("gap");
Rule const &height = style().fonts().font("default").height();
icon().setOverrideImageSize(height.value());
icon().rule().setInput(Rule::Width, height + rule("gap")*2);

_actionButton = new ButtonWidget;
Expand Down Expand Up @@ -271,7 +269,7 @@ DENG_GUI_PIMPL(PackagesWidget)
_actionButton->setText(_owner.d->buttonLabels[1]);
if(!imageIds[1].isEmpty())
{
_actionButton->setImage(new StyleProceduralImage(imageIds[1], *this));
_actionButton->setStyleImage(imageIds[1]);
_actionButton->setImageColor(style().colors().colorf("text"));
}
_actionButton->setColorTheme(invertColorTheme(_owner.d->loadedSelectedItem));
Expand All @@ -284,7 +282,7 @@ DENG_GUI_PIMPL(PackagesWidget)
_actionButton->setText(_owner.d->buttonLabels[0]);
if(!imageIds[0].isEmpty())
{
_actionButton->setImage(new StyleProceduralImage(imageIds[0], *this));
_actionButton->setStyleImage(imageIds[0]);
_actionButton->setImageColor(style().colors().colorf("inverted.text"));
}
_actionButton->setColorTheme(invertColorTheme(_owner.d->selectedItem));
Expand Down Expand Up @@ -335,8 +333,7 @@ DENG_GUI_PIMPL(PackagesWidget)

self.add(clearSearch = new ButtonWidget);
clearSearch->set(Background());
clearSearch->setImage(new StyleProceduralImage("close.ring", self));
clearSearch->setOverrideImageSize(style().fonts().font("default").height().value());
clearSearch->setStyleImage("close.ring", "default");
clearSearch->setSizePolicy(ui::Expand, ui::Expand);
clearSearch->rule()
.setInput(Rule::Right, search->rule().right())
Expand Down
9 changes: 9 additions & 0 deletions doomsday/sdk/libappfw/include/de/widgets/labelwidget.h
Expand Up @@ -86,6 +86,15 @@ class LIBAPPFW_PUBLIC LabelWidget : public GuiWidget, public IAssetGroup
*/
void setImage(ProceduralImage *procImage);

/**
* Sets the image drawn in the label using a procedural image from the UI style.
*
* @param id Image ID.
* @param heightFromFont Optionally overrides the image size using the height of
* this font. Default is to use the image's own size.
*/
void setStyleImage(DotPath const &id, String const &heightFromFont = "");

ProceduralImage *image() const;

/**
Expand Down
10 changes: 10 additions & 0 deletions doomsday/sdk/libappfw/src/widgets/labelwidget.cpp
Expand Up @@ -19,6 +19,7 @@
#include "de/LabelWidget"
#include "de/TextDrawable"
#include "de/AtlasProceduralImage"
#include "de/StyleProceduralImage"

#include <de/Drawable>
#include <de/AtlasTexture>
Expand Down Expand Up @@ -611,6 +612,15 @@ void LabelWidget::setImage(ProceduralImage *procImage)
d->image.reset(procImage);
}

void LabelWidget::setStyleImage(DotPath const &id, String const &heightFromFont)
{
setImage(new StyleProceduralImage(id, *this));
if(!heightFromFont.isEmpty())
{
setOverrideImageSize(style().fonts().font(heightFromFont).height().value());
}
}

ProceduralImage *LabelWidget::image() const
{
return d->image.data();
Expand Down
3 changes: 1 addition & 2 deletions doomsday/sdk/libappfw/src/widgets/progresswidget.cpp
Expand Up @@ -18,7 +18,6 @@

#include "de/ProgressWidget"
#include "de/GuiRootWidget"
#include "de/StyleProceduralImage"

#include <de/Animation>
#include <de/Lockable>
Expand Down Expand Up @@ -174,7 +173,7 @@ ProgressWidget::ProgressWidget(String const &name)
setSizePolicy(ui::Filled, ui::Filled);

// Set up the static progress ring image.
setImage(new StyleProceduralImage("progress.wheel", *this));
setStyleImage("progress.wheel");
setImageFit(ui::FitToSize | ui::OriginalAspectRatio);
setImageScale(.6f);

Expand Down

0 comments on commit 42a9c04

Please sign in to comment.