CComponentsItem: move/rename doCenter()to base class CComponentsItem

So it's possible to use this method for all cc-items.
setCenterPos() comes now with parameter 'along_mode' (CC_ALONG_X, CC_ALONG_Y).
So it's possible to center in x or y direction. As default are
both directions predefined.
This commit is contained in:
2014-02-27 19:43:30 +01:00
parent 38dffb8456
commit 8a897103ac
6 changed files with 22 additions and 12 deletions

View File

@@ -3,7 +3,7 @@
Copyright (C) 2001 by Steffen Hehn 'McClean'
Copyright (C) 2013, M. Liebmann 'micha-bbg'
Copyright (C) 2013, Thilo Graf 'dbt'
Copyright (C) 2013-2014, Thilo Graf 'dbt'
License: GPL
@@ -43,7 +43,7 @@ CBuildInfo::CBuildInfo() : CComponentsWindow(0, 0, 700, 500, LOCALE_BUILDINFO_ME
//init all var members
void CBuildInfo::initVarBuildInfo()
{
doCenter();
setCenterPos();
font = NULL;
setWindowHeaderButtons(CComponentsHeader::CC_BTN_MENU | CComponentsHeader::CC_BTN_EXIT);

View File

@@ -3,7 +3,7 @@
Copyright (C) 2001 by Steffen Hehn 'McClean'
Classes for generic GUI-related components.
Copyright (C) 2012, 2013, Thilo Graf 'dbt'
Copyright (C) 2012-2014, Thilo Graf 'dbt'
License: GPL
@@ -294,6 +294,9 @@ class CComponentsItem : public CComponents
///set x and y position as percent value from current parent or screen dimensions at once
///Note: position of bound components (items) means position related within parent form, not for screen!
virtual void setPosP(const uint8_t& xpos_percent, const uint8_t& ypos_percent);
///do center item on screen or within a parent form, parameter along_mode assigns direction of centering
virtual void setCenterPos(int along_mode = CC_ALONG_X | CC_ALONG_Y);
};
#endif

View File

@@ -29,7 +29,6 @@
#include <global.h>
#include <neutrino.h>
#include "cc_frm_window.h"
#include <driver/screen_max.h>
using namespace std;
@@ -146,11 +145,6 @@ void CComponentsWindow::initWindowPos()
y = frameBuffer->getScreenY();
}
void CComponentsWindow::doCenter(){
x = cc_parent ? cc_parent->getWidth() - width/2 : getScreenStartX(width);
y = cc_parent ? cc_parent->getHeight() - height/2 : getScreenStartY(height);
}
void CComponentsWindow::setWindowCaption(neutrino_locale_t locale_text, const int& align_mode)
{
ccw_caption = g_Locale->getText(locale_text);

View File

@@ -90,8 +90,6 @@ class CComponentsWindow : public CComponentsForm
fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6,
fb_pixel_t color_body = COL_MENUCONTENT_PLUS_0,
fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0);
///allow centering of window on screen, mostly senseful for window object without parent
void doCenter();
///initialize width and height
void initWindowSize();
///initialize position

View File

@@ -182,3 +182,11 @@ void CComponentsItem::setPosP(const uint8_t& xpos_percent, const uint8_t& ypos_p
setXPosP(xpos_percent);
setYPosP(ypos_percent);
}
void CComponentsItem::setCenterPos(int along_mode)
{
if (along_mode & CC_ALONG_X)
x = cc_parent ? cc_parent->getWidth() - width/2 : getScreenStartX(width);
if (along_mode & CC_ALONG_Y)
y = cc_parent ? cc_parent->getHeight() - height/2 : getScreenStartY(height);
}

View File

@@ -3,7 +3,7 @@
Copyright (C) 2001 by Steffen Hehn 'McClean'
Classes for generic GUI-related components.
Copyright (C) 2012, 2013, Thilo Graf 'dbt'
Copyright (C) 2012-2014, Thilo Graf 'dbt'
License: GPL
@@ -110,6 +110,13 @@ enum
CC_ALIGN_VER_CENTER = 32
};
//item centering modes, see also CComponentsItem::setCenterPos()
enum
{
CC_ALONG_X = 1,
CC_ALONG_Y = 2
};
enum
{
CC_ITEMBOX_ICON,