Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
UI|Home: Improved packages list, overall Home item layout
  • Loading branch information
skyjake committed Feb 17, 2016
1 parent e62fd0a commit b55b37e
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 22 deletions.
3 changes: 3 additions & 0 deletions doomsday/apps/client/include/ui/home/homeitemwidget.h
Expand Up @@ -40,6 +40,9 @@ class HomeItemWidget : public de::GuiWidget
virtual void setSelected(bool selected);
bool isSelected() const;

void useInvertedStyle();
void useNormalStyle();

signals:
void mouseActivity();
void doubleClicked();
Expand Down
Expand Up @@ -6,6 +6,7 @@ script { import gui, Version }
# THE BASIC COLOR PALETTE
#

color transparent { rgb <0.0, 0.0, 0.0, 0.0> }
color text { rgb <1.0, 1.0, 1.0> }
color background { rgb <0.0, 0.0, 0.0, 0.75> }
color accent { rgb <1.0, 0.8, 0.4> }
Expand Down
37 changes: 33 additions & 4 deletions doomsday/apps/client/src/ui/home/homeitemwidget.cpp
Expand Up @@ -62,6 +62,10 @@ DENG_GUI_PIMPL(HomeItemWidget)
ScalarRule *labelRightMargin;
Rule const *buttonsWidth = nullptr;
bool selected = false;
DotPath bgColor { "transparent" };
DotPath selectedBgColor { "background" };
DotPath textColor { "text" };
DotPath selectedTextColor { "text" };

Instance(Public *i) : Base(i)
{
Expand Down Expand Up @@ -112,6 +116,12 @@ DENG_GUI_PIMPL(HomeItemWidget)
labelRightMargin->set(0, SPAN);
}
}

void updateColors()
{
background->set(Background(style().colors().colorf(selected? selectedBgColor : bgColor)));
label->setTextColor(selected? selectedTextColor : textColor);
}
};

HomeItemWidget::HomeItemWidget(String const &name)
Expand All @@ -120,7 +130,9 @@ HomeItemWidget::HomeItemWidget(String const &name)
{
setBehavior(Focusable);

Rule const &iconSize = d->label->rule().height();
Rule const &iconSize = d->label->margins().height() +
style().fonts().font("default").height() +
style().fonts().font("default").lineSpacing();

d->background->rule()
.setInput(Rule::Top, rule().top())
Expand All @@ -129,7 +141,7 @@ HomeItemWidget::HomeItemWidget(String const &name)
.setInput(Rule::Bottom, d->label->rule().bottom());

d->icon->rule()
.setSize(iconSize, iconSize)
.setSize(iconSize, d->label->rule().height())
.setInput(Rule::Left, rule().left())
.setInput(Rule::Top, rule().top());
d->icon->set(Background(Background::BorderGlow,
Expand Down Expand Up @@ -160,21 +172,38 @@ void HomeItemWidget::setSelected(bool selected)
d->selected = selected;
if(selected)
{
d->background->set(Background(style().colors().colorf("background")));
d->showButtons(true);
}
else
{
d->background->set(Background());
d->showButtons(false);
}
d->updateColors();
}

bool HomeItemWidget::isSelected() const
{
return d->selected;
}

void HomeItemWidget::useInvertedStyle()
{
d->bgColor = "accent";
d->textColor = "inverted.accent";
d->selectedBgColor = "inverted.background";
d->selectedTextColor = "inverted.text";
d->updateColors();
}

void HomeItemWidget::useNormalStyle()
{
d->bgColor = "transparent";
d->textColor = "text";
d->selectedBgColor = "background";
d->selectedTextColor = "text";
d->updateColors();
}

void HomeItemWidget::addButton(ButtonWidget *button)
{
// Common styling.
Expand Down
14 changes: 7 additions & 7 deletions doomsday/apps/client/src/ui/home/homemenuwidget.cpp
Expand Up @@ -49,26 +49,26 @@ HomeMenuWidget::HomeMenuWidget(String const &name)

void HomeMenuWidget::unselectAll()
{
// Unselect all buttons.
// Unselect all items.
for(auto *w : childWidgets())
{
if(auto *button = w->maybeAs<PanelButtonWidget>())
if(auto *item = w->maybeAs<HomeItemWidget>())
{
button->setSelected(false);
item->setSelected(false);
}
}
}

void HomeMenuWidget::mouseActivityInItem()
{
auto *clickedButton = dynamic_cast<PanelButtonWidget *>(sender());
auto *clickedItem = dynamic_cast<HomeItemWidget *>(sender());

// Radio button behavior: other buttons should be deselected.
// Radio button behavior: other items will be deselected.
for(auto *w : childWidgets())
{
if(auto *button = w->maybeAs<PanelButtonWidget>())
if(auto *item = w->maybeAs<HomeItemWidget>())
{
button->setSelected(button == clickedButton);
item->setSelected(item == clickedItem);
}
}
}
64 changes: 53 additions & 11 deletions doomsday/apps/client/src/ui/home/packageswidget.cpp
Expand Up @@ -30,6 +30,7 @@
#include <de/PopupButtonWidget>
#include <de/SignalAction>
#include <de/CallbackAction>
#include <de/StyleProceduralImage>

using namespace de;

Expand Down Expand Up @@ -104,7 +105,40 @@ DENG_GUI_PIMPL(PackagesWidget)
PackageListWidget(PackageItem const &item)
: _item(&item)
{

icon().set(Background());
icon().setImage(new StyleProceduralImage("package", *this));
Rule const &height = style().fonts().font("default").height();
icon().setOverrideImageSize(height.value());
icon().rule().setInput(Rule::Width, height + label().margins().height());

_loadButton = new ButtonWidget;
_loadButton->setFont("small");
_loadButton->margins().setTopBottom("unit");
_loadButton->setAction(new CallbackAction([this] ()
{
auto &loader = App::packageLoader();
if(loader.isLoaded(packageId()))
{
loader.unload(packageId());
}
else
{
try
{
loader.load(packageId());
}
catch(Error const &er)
{
LOG_RES_ERROR("Package \"" + packageId() +
"\" could not be loaded: " + er.asText());
}
}
updateContents();
}));
connect(this, &HomeItemWidget::doubleClicked, [this] () {
_loadButton->trigger();
});
addButton(_loadButton);

/*add(_title = new LabelWidget);
_title->setSizePolicy(ui::Fixed, ui::Expand);
Expand Down Expand Up @@ -192,25 +226,32 @@ DENG_GUI_PIMPL(PackagesWidget)
/*_title->setText(_item->info->gets("title"));
_subtitle->setText(packageId());*/

label().setText(_item->info->gets("title"));
//label().setFont("small");
label().setText(String(_E(b) "%1\n" _E(l) "%2")
.arg(_item->info->gets("title"))
.arg(packageId()));

String auxColor = "accent";

/*if(isLoaded())
if(isLoaded())
{
_loadButton->setText(tr("Unload"));
_loadButton->setTextColor("altaccent");
_loadButton->setBorderColor("altaccent");
_title->setFont("choice.selected");
auxColor = "altaccent";
_loadButton->useNormalStyle();
useInvertedStyle();
//_loadButton->setTextColor("altaccent");
//_loadButton->setBorderColor("altaccent");
//_title->setFont("choice.selected");
//auxColor = "altaccent";
}
else
{
_loadButton->setText(tr("Load"));
_loadButton->setTextColor("text");
_loadButton->setBorderColor("text");
_title->setFont("default");
}*/
_loadButton->useInfoStyle();
useNormalStyle();
//_loadButton->setTextColor("text");
//_loadButton->setBorderColor("text");
//_title->setFont("default");
}

//_subtitle->setTextColor(auxColor);
for(ButtonWidget *b : _tags)
Expand Down Expand Up @@ -263,6 +304,7 @@ DENG_GUI_PIMPL(PackagesWidget)
search->setEmptyContentHint(tr("Search packages"));

self.add(menu = new HomeMenuWidget);
menu->layout().setRowPadding(Const(0));
menu->rule()
.setInput(Rule::Left, self.rule().left())
.setInput(Rule::Right, self.rule().right())
Expand Down

0 comments on commit b55b37e

Please sign in to comment.