Skip to content

Commit

Permalink
UI|Client: Added specialized ui::Items for actions and variable toggles
Browse files Browse the repository at this point in the history
  • Loading branch information
skyjake committed Aug 16, 2013
1 parent e6b0e97 commit 6b4c978
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 0 deletions.
66 changes: 66 additions & 0 deletions doomsday/client/include/ui/widgets/actionitem.h
@@ -0,0 +1,66 @@
/** @file actionitem.h
*
* @authors Copyright (c) 2013 Jaakko Keränen <jaakko.keranen@iki.fi>
*
* @par License
* GPL: http://www.gnu.org/licenses/gpl.html
*
* <small>This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version. This program is distributed in the hope that it
* will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details. You should have received a copy of the GNU
* General Public License along with this program; if not, see:
* http://www.gnu.org/licenses</small>
*/

#ifndef DENG_CLIENT_UI_ACTIONITEM_H
#define DENG_CLIENT_UI_ACTIONITEM_H

#include "item.h"

#include <de/Action>
#include <de/Image>

namespace ui {

/**
* UI context item that represents a user action.
*/
class ActionItem : public Item
{
public:
ActionItem(de::String const &label = "", de::Action *action = 0)
: Item(Action, label), _action(action) {}

ActionItem(Semantic semantic, de::String const &label = "", de::Action *action = 0)
: Item(semantic, label), _action(action) {}

ActionItem(de::Image const &img, de::String const &label = "", de::Action *action = 0)
: Item(Action, label), _action(action), _image(img) {}

de::Action *action() const { return _action.data(); } // ownership kept
de::Image const &image() const { return _image; }

void setAction(de::Action *action)
{
_action.reset(action);
notifyChange();
}

void setImage(de::Image const &image)
{
_image = image;
notifyChange();
}

private:
QScopedPointer<de::Action> _action;
de::Image _image;
};

} // namespace ui

#endif // DENG_CLIENT_UI_ACTIONITEM_H
45 changes: 45 additions & 0 deletions doomsday/client/include/ui/widgets/variabletoggleitem.h
@@ -0,0 +1,45 @@
/** @file variabletoggleitem.h
*
* @authors Copyright (c) 2013 Jaakko Keränen <jaakko.keranen@iki.fi>
*
* @par License
* GPL: http://www.gnu.org/licenses/gpl.html
*
* <small>This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version. This program is distributed in the hope that it
* will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details. You should have received a copy of the GNU
* General Public License along with this program; if not, see:
* http://www.gnu.org/licenses</small>
*/

#ifndef DENG_CLIENT_UI_VARIABLETOGGLEITEM_H
#define DENG_CLIENT_UI_VARIABLETOGGLEITEM_H

#include <de/Variable>

#include "item.h"

namespace ui {

/**
* Represents a toggle for a boolean variable.
*/
class VariableToggleItem : public Item
{
public:
VariableToggleItem(de::String const &label, de::Variable &variable)
: Item(Toggle, label), _var(variable) {}

de::Variable &variable() const { return _var; }

private:
de::Variable &_var;
};

} // namespace ui

#endif // DENG_CLIENT_UI_VARIABLETOGGLEITEM_H

0 comments on commit 6b4c978

Please sign in to comment.