/*************************************************************************** Neutrino-GUI - DBoxII-Project Homepage: http://dbox.cyberphoria.org/ Kommentar: Diese GUI wurde von Grund auf neu programmiert und sollte nun vom Aufbau und auch den Ausbaumoeglichkeiten gut aussehen. Neutrino basiert auf der Client-Server Idee, diese GUI ist also von der direkten DBox- Steuerung getrennt. Diese wird dann von Daemons uebernommen. License: GPL 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, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *********************************************************** Module Name: listframe.h . Description: interface of the CTextBox class Date: Nov 2005 Author: Günther@tuxbox.berlios.org based on code of Steffen Hehn 'McClean' Revision History: Date Author Change Description Nov 2005 Günther initial implementation ****************************************************************************/ #ifndef __LISTFRAME_H__ #define __LISTFRAME_H__ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #define LF_MAX_ROWS 6 typedef struct { int rows; std::string lineHeader[LF_MAX_ROWS]; std::vector lineArray[LF_MAX_ROWS]; int rowWidth[LF_MAX_ROWS]; std::vector Icon; }LF_LINES; class CListFrame { private: /* Functions */ void onNewLineArray(void); void initVar(void); void initFramesRel(void); void refreshTitle(void); void refreshScroll(void); void refreshList(void); void refreshHeaderList(void); void reSizeMainFrameWidth(int maxTextWidth); void reSizeMainFrameHeight(int maxTextHeight); int paintListIcon(int x, int y, int line); /* Variables */ LF_LINES* m_pLines; CBox m_cFrame; CBox m_cFrameTitleRel; CBox m_cFrameListRel; CBox m_cFrameScrollRel; CBox m_cFrameHeaderListRel; int m_nMaxHeight; int m_nMaxWidth; int m_nMode; int m_nNrOfPages; int m_nNrOfLines; int m_nNrOfRows; int m_nLinesPerPage; int m_nCurrentLine; int m_nCurrentPage; int m_nSelectedLine; bool m_showSelection; Font* m_pcFontTitle; std::string m_textTitle; int m_nFontTitleHeight; Font* m_pcFontList; int m_nFontListHeight; Font* m_pcFontHeaderList; int m_nFontHeaderListHeight; CFrameBuffer * frameBuffer; public: /* Constructor */ CListFrame(); CListFrame( LF_LINES* lines); CListFrame( LF_LINES* lines, Font* font_text, const int mode, const CBox* position, const char* textTitle = NULL, Font* font_title = NULL); virtual ~CListFrame(); /* Functions */ void refresh(void); void refreshLine(int line); void scrollPageDown(const int pages); void scrollPageUp(const int pages); void scrollLineDown(const int lines); void scrollLineUp(const int lines); bool setLines(LF_LINES* lines); bool setTitle(char* title); bool setSelectedLine(int selection); void hide(void); void paint(void); inline CBox getWindowsPos(void) {return(m_cFrame);}; inline int getSelectedLine(void) {return(m_nSelectedLine);}; inline int getLines(void) {return(m_nNrOfLines);}; inline int getPages(void) {return(m_nNrOfPages);}; inline void showSelection(bool show) {m_showSelection = show;refreshLine(m_nSelectedLine);}; inline void movePosition(int x, int y){m_cFrame.iX = x; m_cFrame.iY = y;}; /* Variables */ typedef enum mode_ { AUTO_WIDTH = 0x01, AUTO_HIGH = 0x02, SCROLL = 0x04, TITLE = 0x08, HEADER_LINE = 0x80 }mode; }; #endif /*LISTFRAME_H_*/