mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-31 17:31:20 +02:00
git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-beta@2138 e54a6e83-5905-42d5-8d5c-058d10e6a962
720 lines
22 KiB
C++
720 lines
22 KiB
C++
/***************************************************************************
|
|
Neutrino-GUI - DBoxII-Project
|
|
|
|
Homepage: http://dbox.cyberphoria.org/
|
|
|
|
$Id: moviebrowser.h,v 1.5 2006/09/11 21:11:35 guenther Exp $
|
|
|
|
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: moviebrowser.h .
|
|
|
|
Description: implementation of the CMovieBrowser class
|
|
|
|
Date: Nov 2005
|
|
|
|
Author: Günther@tuxbox.berlios.org
|
|
based on code of Steffen Hehn 'McClean'
|
|
|
|
$Log: moviebrowser.h,v $
|
|
Revision 1.5 2006/09/11 21:11:35 guenther
|
|
General menu clean up
|
|
Dir menu updated
|
|
Add options menu
|
|
In movie info menu "update all" added
|
|
Serie option added (hide serie, auto serie)
|
|
Update movie info on delete movie
|
|
Delete Background when menu is entered
|
|
Timeout updated (MB does not exit after options menu is left)
|
|
|
|
Revision 1.4 2006/02/20 01:10:34 guenther
|
|
- temporary parental lock updated - remove 1s debug prints in movieplayer- Delete file without rescan of movies- Crash if try to scroll in list with 2 movies only- UTF8XML to UTF8 conversion in preview- Last file selection recovered- use of standard folders adjustable in config- reload and remount option in config
|
|
|
|
Revision 1.3 2005/12/18 09:23:53 metallica
|
|
fix compil warnings
|
|
|
|
Revision 1.2 2005/12/12 07:58:02 guenther
|
|
- fix bug on deleting CMovieBrowser - speed up parse time (20 ms per .ts file now)- update stale function- refresh directories on reload- print scan time in debug console
|
|
|
|
|
|
****************************************************************************/
|
|
#ifndef MOVIEBROWSER_H_
|
|
#define MOVIEBROWSER_H_
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include <config.h>
|
|
#endif
|
|
|
|
#include <configfile.h>
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
#include "gui/widget/listframe.h"
|
|
#include "gui/widget/menue.h"
|
|
#include "gui/widget/textbox.h"
|
|
#include "gui/movieinfo.h"
|
|
#include "driver/file.h"
|
|
#include <driver/fb_window.h>
|
|
#include "driver/pictureviewer/pictureviewer.h"
|
|
|
|
#define MAX_NUMBER_OF_BOOKMARK_ITEMS MI_MOVIE_BOOK_USER_MAX // we just use the same size as used in Movie info (MAX_NUMBER_OF_BOOKMARK_ITEMS is used for the number of menu items)
|
|
#define MOVIEBROWSER_SETTINGS_FILE CONFIGDIR "/moviebrowser.conf"
|
|
|
|
/* percent */
|
|
#define MIN_BROWSER_FRAME_HEIGHT 10
|
|
#define MAX_BROWSER_FRAME_HEIGHT 80
|
|
void strReplace(std::string& orig, const char* fstr, const std::string rstr);
|
|
|
|
/* !!!! Do NOT change the order of the enum, just add items at the end !!!! */
|
|
typedef enum
|
|
{
|
|
MB_INFO_FILENAME = 0,
|
|
MB_INFO_FILEPATH = 1,
|
|
MB_INFO_TITLE = 2,
|
|
MB_INFO_SERIE = 3,
|
|
MB_INFO_INFO1 = 4,
|
|
MB_INFO_MAJOR_GENRE = 5,
|
|
MB_INFO_MINOR_GENRE = 6,
|
|
MB_INFO_INFO2 = 7,
|
|
MB_INFO_PARENTAL_LOCKAGE = 8,
|
|
MB_INFO_CHANNEL = 9,
|
|
MB_INFO_BOOKMARK = 10,
|
|
MB_INFO_QUALITY = 11,
|
|
MB_INFO_PREVPLAYDATE = 12,
|
|
MB_INFO_RECORDDATE = 13,
|
|
MB_INFO_PRODDATE = 14,
|
|
MB_INFO_COUNTRY = 15,
|
|
MB_INFO_GEOMETRIE = 16,
|
|
MB_INFO_AUDIO = 17,
|
|
MB_INFO_LENGTH = 18,
|
|
MB_INFO_SIZE = 19,
|
|
MB_INFO_MAX_NUMBER = 20 // MUST be allways the last item in the list
|
|
}MB_INFO_ITEM;
|
|
|
|
|
|
|
|
typedef enum
|
|
{
|
|
MB_DIRECTION_AUTO = 0,
|
|
MB_DIRECTION_UP = 1,
|
|
MB_DIRECTION_DOWN = 2,
|
|
MB_DIRECTION_MAX_NUMBER = 3 // MUST be allways the last item in the list
|
|
}MB_DIRECTION;
|
|
|
|
typedef struct
|
|
{
|
|
MB_INFO_ITEM item;
|
|
MB_DIRECTION direction;
|
|
}MB_SORTING;
|
|
|
|
typedef enum
|
|
{
|
|
MB_STORAGE_TYPE_UNDEFINED = 0,
|
|
MB_STORAGE_TYPE_NFS = 1,
|
|
MB_STORAGE_TYPE_VLC = 2,
|
|
MB_STORAGE_MAX_NUMBER = 3 // MUST be allways the last item in the list
|
|
}MB_STORAGE_TYPE;
|
|
|
|
typedef struct
|
|
{
|
|
MB_INFO_ITEM item;
|
|
std::string optionString;
|
|
int optionVar;
|
|
}MB_FILTER;
|
|
|
|
typedef enum
|
|
{
|
|
MB_FOCUS_BROWSER = 0,
|
|
MB_FOCUS_LAST_PLAY = 1,
|
|
MB_FOCUS_LAST_RECORD = 2,
|
|
MB_FOCUS_MOVIE_INFO = 3,
|
|
MB_FOCUS_FILTER = 4,
|
|
MB_FOCUS_MAX_NUMBER = 5 // MUST be allways the last item in the list
|
|
}MB_FOCUS;
|
|
|
|
typedef enum
|
|
{
|
|
MB_GUI_BROWSER_ONLY = 0,
|
|
MB_GUI_MOVIE_INFO = 1,
|
|
MB_GUI_LAST_PLAY = 2,
|
|
MB_GUI_LAST_RECORD = 3,
|
|
MB_GUI_FILTER = 4,
|
|
MB_GUI_MAX_NUMBER = 5 // MUST be allways the last item in the list
|
|
}MB_GUI;
|
|
|
|
|
|
typedef enum
|
|
{
|
|
MB_PARENTAL_LOCK_OFF = 0,
|
|
MB_PARENTAL_LOCK_ACTIVE = 1,
|
|
MB_PARENTAL_LOCK_OFF_TMP = 2, // use this to activate the lock temporarily until next dbox start up
|
|
MB_PARENTAL_LOCK_MAX_NUMBER = 3 // MUST be allways the last item in the list
|
|
}MB_PARENTAL_LOCK;
|
|
|
|
typedef struct
|
|
{
|
|
std::string name;
|
|
int* used;
|
|
}MB_DIR;
|
|
|
|
#define MB_MAX_ROWS 6
|
|
#define MB_MAX_DIRS 5
|
|
/* MB_SETTINGS to be stored in g_settings anytime ....*/
|
|
typedef struct
|
|
{
|
|
// moviebrowser
|
|
MB_GUI gui; //MB_GUI
|
|
MB_SORTING sorting; //MB_SORTING
|
|
MB_FILTER filter;//MB_FILTER
|
|
MI_PARENTAL_LOCKAGE parentalLockAge ;//MI_PARENTAL_LOCKAGE
|
|
MB_PARENTAL_LOCK parentalLock;//MB_PARENTAL_LOCK
|
|
|
|
std::string storageDir[MB_MAX_DIRS];
|
|
int storageDirUsed[MB_MAX_DIRS];
|
|
int storageDirRecUsed;
|
|
int storageDirMovieUsed;
|
|
|
|
int reload;
|
|
int remount;
|
|
|
|
int browser_serie_mode;
|
|
int serie_auto_create;
|
|
/* these variables are used for the listframes */
|
|
int browserFrameHeight;
|
|
int browserRowNr;
|
|
MB_INFO_ITEM browserRowItem[MB_MAX_ROWS];//MB_INFO_ITEM
|
|
int browserRowWidth[MB_MAX_ROWS];
|
|
|
|
// to be added to config later
|
|
int lastPlayMaxItems;
|
|
int lastPlayRowNr;
|
|
MB_INFO_ITEM lastPlayRow[MB_MAX_ROWS];
|
|
int lastPlayRowWidth[MB_MAX_ROWS];
|
|
|
|
int lastRecordMaxItems;
|
|
int lastRecordRowNr;
|
|
MB_INFO_ITEM lastRecordRow[MB_MAX_ROWS];
|
|
int lastRecordRowWidth[MB_MAX_ROWS];
|
|
} MB_SETTINGS;
|
|
|
|
// Priorities for Developmemt: P1: critical feature, P2: important feature, P3: for next release, P4: looks nice, lets see
|
|
class CMovieBrowser : public CMenuTarget
|
|
{
|
|
public: // Variables /////////////////////////////////////////////////
|
|
int Multi_Select; // for FileBrowser compatibility, not used in MovieBrowser
|
|
int Dirs_Selectable; // for FileBrowser compatibility, not used in MovieBrowser
|
|
|
|
private: // Variables
|
|
//CFBWindow* m_pcWindow;
|
|
CFrameBuffer * m_pcWindow;
|
|
|
|
CListFrame* m_pcBrowser;
|
|
CListFrame* m_pcLastPlay;
|
|
CListFrame* m_pcLastRecord;
|
|
CTextBox* m_pcInfo;
|
|
CListFrame* m_pcFilter;
|
|
|
|
CBox m_cBoxFrame;
|
|
CBox m_cBoxFrameLastPlayList;
|
|
CBox m_cBoxFrameLastRecordList;
|
|
CBox m_cBoxFrameBrowserList;
|
|
CBox m_cBoxFrameInfo;
|
|
CBox m_cBoxFrameBookmarkList;
|
|
CBox m_cBoxFrameFilter;
|
|
CBox m_cBoxFrameFootRel;
|
|
CBox m_cBoxFrameTitleRel;
|
|
|
|
LF_LINES m_browserListLines;
|
|
LF_LINES m_recordListLines;
|
|
LF_LINES m_playListLines;
|
|
LF_LINES m_FilterLines;
|
|
|
|
std::vector<MI_MOVIE_INFO> m_vMovieInfo;
|
|
std::vector<MI_MOVIE_INFO*> m_vHandleBrowserList;
|
|
std::vector<MI_MOVIE_INFO*> m_vHandleRecordList;
|
|
std::vector<MI_MOVIE_INFO*> m_vHandlePlayList;
|
|
std::vector<std::string> m_dirNames;
|
|
std::vector<MI_MOVIE_INFO*> m_vHandleSerienames;
|
|
|
|
unsigned int m_currentBrowserSelection;
|
|
unsigned int m_currentRecordSelection;
|
|
unsigned int m_currentPlaySelection;
|
|
unsigned int m_currentFilterSelection;
|
|
unsigned int m_prevBrowserSelection;
|
|
unsigned int m_prevRecordSelection;
|
|
unsigned int m_prevPlaySelection;
|
|
|
|
bool m_showBrowserFiles;
|
|
bool m_showLastRecordFiles;
|
|
bool m_showLastPlayFiles;
|
|
bool m_showMovieInfo;
|
|
bool m_showFilter;
|
|
|
|
MI_MOVIE_INFO* m_movieSelectionHandler;
|
|
int m_currentStartPos;
|
|
std::string m_selectedDir;
|
|
MB_FOCUS m_windowFocus;
|
|
|
|
bool m_file_info_stale; // if this bit is set, MovieBrowser shall reload all movie infos from HD
|
|
bool m_seriename_stale;
|
|
|
|
Font* m_pcFontFoot;
|
|
Font* m_pcFontTitle;
|
|
std::string m_textTitle;
|
|
|
|
MB_PARENTAL_LOCK m_parentalLock;
|
|
MB_STORAGE_TYPE m_storageType;
|
|
|
|
CConfigFile configfile;
|
|
CMovieInfo m_movieInfo;
|
|
MB_SETTINGS m_settings;
|
|
std::vector<MB_DIR> m_dir;
|
|
|
|
bool IsRecord;
|
|
|
|
int movieInfoUpdateAll[MB_INFO_MAX_NUMBER];
|
|
int movieInfoUpdateAllIfDestEmptyOnly;
|
|
|
|
std::vector<std::string> PicExts;
|
|
std::string getScreenshotName(std::string movie);
|
|
|
|
//bool restart_mb_timeout;
|
|
|
|
public: // Functions //////////////////////////////////////////////////////////7
|
|
CMovieBrowser(const char* path); //P1
|
|
CMovieBrowser(); //P1
|
|
~CMovieBrowser(); //P1
|
|
int exec(const char* path); //P1
|
|
int exec(CMenuTarget* parent, const std::string & actionKey);
|
|
std::string getCurrentDir(void); //P1 for FileBrowser compatibility
|
|
CFile* getSelectedFile(void); //P1 for FileBrowser compatibility
|
|
MI_MOVIE_BOOKMARKS* getCurrentMovieBookmark(void){if(m_movieSelectionHandler == NULL) return NULL; return(&(m_movieSelectionHandler->bookmarks));};
|
|
int getCurrentStartPos(void){return(m_currentStartPos);}; //P1 return start position in [s]
|
|
MI_MOVIE_INFO* getCurrentMovieInfo(void){return(m_movieSelectionHandler);}; //P1 return start position in [s]
|
|
void fileInfoStale(void); // call this function to force the Moviebrowser to reload all movie information from HD
|
|
|
|
bool readDir(const std::string & dirname, CFileList* flist);
|
|
bool readDir_vlc(const std::string & dirname, CFileList* flist);
|
|
bool readDir_std(const std::string & dirname, CFileList* flist);
|
|
|
|
bool delFile(CFile& file);
|
|
bool delFile_vlc(CFile& file);
|
|
bool delFile_std(CFile& file);
|
|
|
|
private: //Functions
|
|
///// MovieBrowser init ///////////////
|
|
void init(void); //P1
|
|
void initGlobalSettings(void); //P1
|
|
void initFrames(void);
|
|
#if 0
|
|
void initDevelopment(void); //P1 for development testing only
|
|
#endif
|
|
void initRows(void);
|
|
void reinit(void); //P1
|
|
|
|
///// MovieBrowser Main Window//////////
|
|
int paint(void); //P1
|
|
void refresh(void); //P1
|
|
void hide(void); //P1
|
|
void refreshLastPlayList(void); //P2
|
|
void refreshLastRecordList(void); //P2
|
|
void refreshBrowserList(void); //P1
|
|
void refreshFilterList(void); //P1
|
|
void refreshMovieInfo(void); //P1
|
|
void refreshBookmarkList(void); // P3
|
|
void refreshFoot(void); //P2
|
|
void refreshTitle(void); //P2
|
|
void refreshInfo(void); // P2
|
|
void refreshLCD(void); // P2
|
|
|
|
///// Events ///////////////////////////
|
|
bool onButtonPress(neutrino_msg_t msg); // P1
|
|
bool onButtonPressMainFrame(neutrino_msg_t msg); // P1
|
|
bool onButtonPressBrowserList(neutrino_msg_t msg); // P1
|
|
bool onButtonPressLastPlayList(neutrino_msg_t msg); // P2
|
|
bool onButtonPressLastRecordList(neutrino_msg_t msg); // P2
|
|
bool onButtonPressFilterList(neutrino_msg_t msg); // P2
|
|
bool onButtonPressBookmarkList(neutrino_msg_t msg); // P3
|
|
bool onButtonPressMovieInfoList(neutrino_msg_t msg); // P2
|
|
void onSetFocus(MB_FOCUS new_focus); // P2
|
|
void onSetFocusNext(void); // P2
|
|
void onSetFocusPrev(void); // P2
|
|
void onSetGUIWindow(MB_GUI gui);
|
|
void onSetGUIWindowNext(void);
|
|
void onSetGUIWindowPrev(void);
|
|
void onDeleteFile(MI_MOVIE_INFO& movieSelectionHandler); // P4
|
|
bool onSortMovieInfoHandleList(std::vector<MI_MOVIE_INFO*>& pv_handle_list, MB_INFO_ITEM sort_type, MB_DIRECTION direction);
|
|
|
|
///// parse Storage Directories /////////////
|
|
bool addDir(std::string& dirname, int* used);
|
|
void updateDir(void);
|
|
void loadAllTsFileNamesFromStorage(void); // P1
|
|
bool loadTsFileNamesFromDir(const std::string & dirname); // P1
|
|
void getStorageInfo(void); // P3
|
|
|
|
///// Menu ////////////////////////////////////
|
|
bool showMenu(MI_MOVIE_INFO* movie_info); // P2
|
|
int showMovieInfoMenu(MI_MOVIE_INFO* movie_info); // P2
|
|
int showStartPosSelectionMenu(void); // P2
|
|
|
|
///// settings ///////////////////////////////////
|
|
bool loadSettings(MB_SETTINGS* settings); // P2
|
|
bool saveSettings(MB_SETTINGS* settings); // P2
|
|
void defaultSettings(MB_SETTINGS* settings);
|
|
|
|
///// EPG_DATA /XML ///////////////////////////////
|
|
void loadMovies(bool doRefresh = true);
|
|
void loadAllMovieInfo(void); // P1
|
|
void saveMovieInfo(std::string* filename, MI_MOVIE_INFO* movie_info); // P2
|
|
|
|
// misc
|
|
void showHelp(void);
|
|
bool isFiltered(MI_MOVIE_INFO& movie_info);
|
|
bool isParentalLock(MI_MOVIE_INFO& movie_info);
|
|
bool getMovieInfoItem(MI_MOVIE_INFO& movie_info, MB_INFO_ITEM item, std::string* item_string);
|
|
void updateMovieSelection(void);
|
|
void updateFilterSelection(void);
|
|
void updateSerienames(void);
|
|
void autoFindSerie(void);
|
|
|
|
void info_hdd_level(bool paint_hdd=false);
|
|
};
|
|
|
|
// Class to show Moviebrowser Information, to be used by menu
|
|
class CMovieHelp : public CMenuTarget
|
|
{
|
|
private:
|
|
|
|
public:
|
|
CMovieHelp(){};
|
|
~CMovieHelp(){};
|
|
int exec( CMenuTarget* parent, const std::string & actionKey );
|
|
};
|
|
|
|
// I tried a lot to use the menu.cpp as ListBox selection, and I got three solution which are all garbage.
|
|
//Might be replaced by somebody who is familiar with this stuff .
|
|
|
|
// CLass to verifiy a menu was selected by the user. There might be better ways to do so.
|
|
class CSelectedMenu : public CMenuTarget
|
|
{
|
|
public:
|
|
bool selected;
|
|
CSelectedMenu(void){selected = false;};
|
|
inline int exec(CMenuTarget* /*parent*/, const std::string & /*actionKey*/){selected = true; return menu_return::RETURN_EXIT;};
|
|
};
|
|
|
|
|
|
// This Class creates a menue item, which writes its caption to an given string (or an given int value to an given variable).
|
|
// The programm could use this class to verify, what menu was selected.
|
|
// A good listbox class might do the same. There might be better ways to do so.
|
|
#define BUFFER_MAX 20
|
|
class CMenuSelector : public CMenuItem
|
|
{
|
|
private:
|
|
const char * optionName;
|
|
char * optionValue;
|
|
std::string* optionValueString;
|
|
int returnIntValue;
|
|
int* returnInt;
|
|
int height;
|
|
char buffer[BUFFER_MAX];
|
|
public:
|
|
CMenuSelector(const char * OptionName, const bool Active = true, char * OptionValue = NULL, int* ReturnInt = NULL,int ReturnIntValue = 0);
|
|
CMenuSelector(const char * OptionName, const bool Active , std::string & OptionValue, int* ReturnInt = NULL,int ReturnIntValue = 0);
|
|
int exec(CMenuTarget* parent);
|
|
int paint(bool selected);
|
|
int getHeight(void) const{return height;};
|
|
bool isSelectable(void) const { return active;}
|
|
};
|
|
|
|
// CLass to get the menu line selected by the user. There might be better ways to do so.
|
|
class CMenuWidgetSelection : public CMenuWidget
|
|
{
|
|
public:
|
|
CMenuWidgetSelection(const neutrino_locale_t Name, const std::string & Icon = "", const int mwidth = 30) : CMenuWidget(Name, Icon, mwidth){;};
|
|
int getSelectedLine(void){return exit_pressed ? -1 : selected;};
|
|
};
|
|
|
|
|
|
class CFileChooser : public CMenuWidget
|
|
{
|
|
private:
|
|
std::string* dirPath;
|
|
|
|
public:
|
|
CFileChooser(std::string* path){dirPath= path;};
|
|
int exec(CMenuTarget* parent, const std::string & actionKey);
|
|
};
|
|
|
|
typedef enum
|
|
{
|
|
DIR_STATE_UNKNOWN = 0,
|
|
DIR_STATE_SERVER_DOWN = 1,
|
|
DIR_STATE_NOT_MOUNTED = 2,
|
|
DIR_STATE_MOUNTED = 3,
|
|
DIR_STATE_DISABLED = 4
|
|
} DIR_STATE;
|
|
|
|
#define MAX_DIR 10
|
|
class CDirMenu : public CMenuWidget
|
|
{
|
|
private:
|
|
std::vector<MB_DIR>* dirList;
|
|
DIR_STATE dirState[MAX_DIR];
|
|
std::string dirOptionText[MAX_DIR];
|
|
int dirNfsMountNr[MAX_DIR];
|
|
bool changed;
|
|
|
|
void updateDirState(void);
|
|
|
|
public:
|
|
CDirMenu(std::vector<MB_DIR>* dir_list);
|
|
int exec(CMenuTarget* parent, const std::string & actionKey);
|
|
int show(void);
|
|
bool isChanged(){return changed;};
|
|
};
|
|
|
|
|
|
// EPG Genre , taken from epgview, TODO: migth be splitted in major/minor to increase handling, might be moved to CMovieInfo
|
|
#define GENRE_ALL_COUNT 76
|
|
const CMenuOptionChooser::keyval GENRE_ALL[GENRE_ALL_COUNT] =
|
|
{
|
|
{ 0x00, LOCALE_GENRE_UNKNOWN },
|
|
{ 0x10, LOCALE_GENRE_MOVIE_0 },
|
|
{ 0x11, LOCALE_GENRE_MOVIE_1 },
|
|
{ 0x12, LOCALE_GENRE_MOVIE_2 },
|
|
{ 0x13, LOCALE_GENRE_MOVIE_3 },
|
|
{ 0x14, LOCALE_GENRE_MOVIE_4 },
|
|
{ 0x15, LOCALE_GENRE_MOVIE_5 },
|
|
{ 0x16, LOCALE_GENRE_MOVIE_6 },
|
|
{ 0x17, LOCALE_GENRE_MOVIE_7 },
|
|
{ 0x18, LOCALE_GENRE_MOVIE_8 },
|
|
{ 0x20, LOCALE_GENRE_NEWS_0 },
|
|
{ 0x21, LOCALE_GENRE_NEWS_1 },
|
|
{ 0x22, LOCALE_GENRE_NEWS_2 },
|
|
{ 0x23, LOCALE_GENRE_NEWS_3 },
|
|
{ 0x24, LOCALE_GENRE_NEWS_4 },
|
|
{ 0x30, LOCALE_GENRE_SHOW_0 },
|
|
{ 0x31, LOCALE_GENRE_SHOW_1 },
|
|
{ 0x32, LOCALE_GENRE_SHOW_2 },
|
|
{ 0x33, LOCALE_GENRE_SHOW_3 },
|
|
{ 0x40, LOCALE_GENRE_SPORTS_0 },
|
|
{ 0x41, LOCALE_GENRE_SPORTS_1 },
|
|
{ 0x42, LOCALE_GENRE_SPORTS_2 },
|
|
{ 0x43, LOCALE_GENRE_SPORTS_3 },
|
|
{ 0x44, LOCALE_GENRE_SPORTS_4 },
|
|
{ 0x45, LOCALE_GENRE_SPORTS_5 },
|
|
{ 0x46, LOCALE_GENRE_SPORTS_6 },
|
|
{ 0x47, LOCALE_GENRE_SPORTS_7 },
|
|
{ 0x48, LOCALE_GENRE_SPORTS_8 },
|
|
{ 0x49, LOCALE_GENRE_SPORTS_9 },
|
|
{ 0x4A, LOCALE_GENRE_SPORTS_10 },
|
|
{ 0x4B, LOCALE_GENRE_SPORTS_11 },
|
|
{ 0x50, LOCALE_GENRE_CHILDRENS_PROGRAMMES_0 },
|
|
{ 0x51, LOCALE_GENRE_CHILDRENS_PROGRAMMES_1 },
|
|
{ 0x52, LOCALE_GENRE_CHILDRENS_PROGRAMMES_2 },
|
|
{ 0x53, LOCALE_GENRE_CHILDRENS_PROGRAMMES_3 },
|
|
{ 0x54, LOCALE_GENRE_CHILDRENS_PROGRAMMES_4 },
|
|
{ 0x55, LOCALE_GENRE_CHILDRENS_PROGRAMMES_5 },
|
|
{ 0x60, LOCALE_GENRE_MUSIC_DANCE_0 },
|
|
{ 0x61, LOCALE_GENRE_MUSIC_DANCE_1 },
|
|
{ 0x62, LOCALE_GENRE_MUSIC_DANCE_2 },
|
|
{ 0x63, LOCALE_GENRE_MUSIC_DANCE_3 },
|
|
{ 0x64, LOCALE_GENRE_MUSIC_DANCE_4 },
|
|
{ 0x65, LOCALE_GENRE_MUSIC_DANCE_5 },
|
|
{ 0x66, LOCALE_GENRE_MUSIC_DANCE_6 },
|
|
{ 0x70, LOCALE_GENRE_ARTS_0 },
|
|
{ 0x71, LOCALE_GENRE_ARTS_1 },
|
|
{ 0x72, LOCALE_GENRE_ARTS_2 },
|
|
{ 0x73, LOCALE_GENRE_ARTS_3 },
|
|
{ 0x74, LOCALE_GENRE_ARTS_4 },
|
|
{ 0x75, LOCALE_GENRE_ARTS_5 },
|
|
{ 0x76, LOCALE_GENRE_ARTS_6 },
|
|
{ 0x77, LOCALE_GENRE_ARTS_7 },
|
|
{ 0x78, LOCALE_GENRE_ARTS_8 },
|
|
{ 0x79, LOCALE_GENRE_ARTS_9 },
|
|
{ 0x7A, LOCALE_GENRE_ARTS_10 },
|
|
{ 0x7B, LOCALE_GENRE_ARTS_11 },
|
|
{ 0x80, LOCALE_GENRE_SOCIAL_POLITICAL_0 },
|
|
{ 0x81, LOCALE_GENRE_SOCIAL_POLITICAL_1 },
|
|
{ 0x82, LOCALE_GENRE_SOCIAL_POLITICAL_2 },
|
|
{ 0x83, LOCALE_GENRE_SOCIAL_POLITICAL_3 },
|
|
{ 0x90, LOCALE_GENRE_DOCUS_MAGAZINES_0 },
|
|
{ 0x91, LOCALE_GENRE_DOCUS_MAGAZINES_1 },
|
|
{ 0x92, LOCALE_GENRE_DOCUS_MAGAZINES_2 },
|
|
{ 0x93, LOCALE_GENRE_DOCUS_MAGAZINES_3 },
|
|
{ 0x94, LOCALE_GENRE_DOCUS_MAGAZINES_4 },
|
|
{ 0x95, LOCALE_GENRE_DOCUS_MAGAZINES_5 },
|
|
{ 0x96, LOCALE_GENRE_DOCUS_MAGAZINES_6 },
|
|
{ 0x97, LOCALE_GENRE_DOCUS_MAGAZINES_7 },
|
|
{ 0xA0, LOCALE_GENRE_TRAVEL_HOBBIES_0 },
|
|
{ 0xA1, LOCALE_GENRE_TRAVEL_HOBBIES_1 },
|
|
{ 0xA2, LOCALE_GENRE_TRAVEL_HOBBIES_2 },
|
|
{ 0xA3, LOCALE_GENRE_TRAVEL_HOBBIES_3 },
|
|
{ 0xA4, LOCALE_GENRE_TRAVEL_HOBBIES_4 },
|
|
{ 0xA5, LOCALE_GENRE_TRAVEL_HOBBIES_5 },
|
|
{ 0xA6, LOCALE_GENRE_TRAVEL_HOBBIES_6 },
|
|
{ 0xA7, LOCALE_GENRE_TRAVEL_HOBBIES_7 }
|
|
};
|
|
|
|
#define GENRE_MOVIE_COUNT 9
|
|
const CMenuOptionChooser::keyval genre_movie[GENRE_MOVIE_COUNT] =
|
|
{
|
|
{ 0, LOCALE_GENRE_MOVIE_0 },
|
|
{ 1, LOCALE_GENRE_MOVIE_1 },
|
|
{ 2, LOCALE_GENRE_MOVIE_2 },
|
|
{ 3, LOCALE_GENRE_MOVIE_3 },
|
|
{ 4, LOCALE_GENRE_MOVIE_4 },
|
|
{ 5, LOCALE_GENRE_MOVIE_5 },
|
|
{ 6, LOCALE_GENRE_MOVIE_6 },
|
|
{ 7, LOCALE_GENRE_MOVIE_7 },
|
|
{ 8, LOCALE_GENRE_MOVIE_8 }
|
|
};
|
|
#define GENRE_NEWS_COUNT 5
|
|
const CMenuOptionChooser::keyval genre_news[GENRE_NEWS_COUNT] =
|
|
{
|
|
{ 0, LOCALE_GENRE_NEWS_0 },
|
|
{ 1, LOCALE_GENRE_NEWS_1 },
|
|
{ 2, LOCALE_GENRE_NEWS_2 },
|
|
{ 3, LOCALE_GENRE_NEWS_3 },
|
|
{ 4, LOCALE_GENRE_NEWS_4 }
|
|
};
|
|
#define GENRE_SHOW_COUNT 4
|
|
const CMenuOptionChooser::keyval genre_show[GENRE_SHOW_COUNT] =
|
|
{
|
|
{ 0, LOCALE_GENRE_SHOW_0 },
|
|
{ 1, LOCALE_GENRE_SHOW_1 },
|
|
{ 2, LOCALE_GENRE_SHOW_2 },
|
|
{ 3, LOCALE_GENRE_SHOW_3 }
|
|
};
|
|
#define GENRE_SPORTS_COUNT 12
|
|
const CMenuOptionChooser::keyval genre_sports[GENRE_SPORTS_COUNT] =
|
|
{
|
|
{ 0, LOCALE_GENRE_SPORTS_0 },
|
|
{ 1, LOCALE_GENRE_SPORTS_1 },
|
|
{ 2, LOCALE_GENRE_SPORTS_2 },
|
|
{ 3, LOCALE_GENRE_SPORTS_3 },
|
|
{ 4, LOCALE_GENRE_SPORTS_4 },
|
|
{ 5, LOCALE_GENRE_SPORTS_5 },
|
|
{ 6, LOCALE_GENRE_SPORTS_6 },
|
|
{ 7, LOCALE_GENRE_SPORTS_7 },
|
|
{ 8, LOCALE_GENRE_SPORTS_8 },
|
|
{ 9, LOCALE_GENRE_SPORTS_9 },
|
|
{10, LOCALE_GENRE_SPORTS_10 },
|
|
{11, LOCALE_GENRE_SPORTS_11 }
|
|
};
|
|
#define GENRE_CHILDRENS_PROGRAMMES_COUNT 6
|
|
const CMenuOptionChooser::keyval genre_childrens_programmes[GENRE_CHILDRENS_PROGRAMMES_COUNT] =
|
|
{
|
|
{ 0, LOCALE_GENRE_CHILDRENS_PROGRAMMES_0 },
|
|
{ 1, LOCALE_GENRE_CHILDRENS_PROGRAMMES_1 },
|
|
{ 2, LOCALE_GENRE_CHILDRENS_PROGRAMMES_2 },
|
|
{ 3, LOCALE_GENRE_CHILDRENS_PROGRAMMES_3 },
|
|
{ 4, LOCALE_GENRE_CHILDRENS_PROGRAMMES_4 },
|
|
{ 5, LOCALE_GENRE_CHILDRENS_PROGRAMMES_5 }
|
|
};
|
|
#define GENRE_MUSIC_DANCE_COUNT 7
|
|
const CMenuOptionChooser::keyval genre_music_dance[GENRE_MUSIC_DANCE_COUNT] =
|
|
{
|
|
{ 0, LOCALE_GENRE_MUSIC_DANCE_0 },
|
|
{ 1, LOCALE_GENRE_MUSIC_DANCE_1 },
|
|
{ 2, LOCALE_GENRE_MUSIC_DANCE_2 },
|
|
{ 3, LOCALE_GENRE_MUSIC_DANCE_3 },
|
|
{ 4, LOCALE_GENRE_MUSIC_DANCE_4 },
|
|
{ 5, LOCALE_GENRE_MUSIC_DANCE_5 },
|
|
{ 6, LOCALE_GENRE_MUSIC_DANCE_6 }
|
|
};
|
|
#define GENRE_ARTS_COUNT 12
|
|
const CMenuOptionChooser::keyval genre_arts_dance[GENRE_ARTS_COUNT] =
|
|
{
|
|
{ 0, LOCALE_GENRE_ARTS_0 },
|
|
{ 1, LOCALE_GENRE_ARTS_1 },
|
|
{ 2, LOCALE_GENRE_ARTS_2 },
|
|
{ 3, LOCALE_GENRE_ARTS_3 },
|
|
{ 4, LOCALE_GENRE_ARTS_4 },
|
|
{ 5, LOCALE_GENRE_ARTS_5 },
|
|
{ 6, LOCALE_GENRE_ARTS_6 },
|
|
{ 7, LOCALE_GENRE_ARTS_7 },
|
|
{ 8, LOCALE_GENRE_ARTS_8 },
|
|
{ 9, LOCALE_GENRE_ARTS_9 },
|
|
{10, LOCALE_GENRE_ARTS_10 },
|
|
{11, LOCALE_GENRE_ARTS_11 }
|
|
};
|
|
#define GENRE_SOCIAL_POLITICAL_COUNT 4
|
|
const CMenuOptionChooser::keyval genre_social_political[GENRE_SOCIAL_POLITICAL_COUNT] =
|
|
{
|
|
{ 0, LOCALE_GENRE_SOCIAL_POLITICAL_0 },
|
|
{ 1, LOCALE_GENRE_SOCIAL_POLITICAL_1 },
|
|
{ 2, LOCALE_GENRE_SOCIAL_POLITICAL_2 },
|
|
{ 3, LOCALE_GENRE_SOCIAL_POLITICAL_3 }
|
|
};
|
|
#define GENRE_DOCUS_MAGAZINES_COUNT 8
|
|
const CMenuOptionChooser::keyval genre_docus_magazines[GENRE_DOCUS_MAGAZINES_COUNT] =
|
|
{
|
|
{ 0, LOCALE_GENRE_DOCUS_MAGAZINES_0 },
|
|
{ 1, LOCALE_GENRE_DOCUS_MAGAZINES_1 },
|
|
{ 2, LOCALE_GENRE_DOCUS_MAGAZINES_2 },
|
|
{ 3, LOCALE_GENRE_DOCUS_MAGAZINES_3 },
|
|
{ 4, LOCALE_GENRE_DOCUS_MAGAZINES_4 },
|
|
{ 5, LOCALE_GENRE_DOCUS_MAGAZINES_5 },
|
|
{ 6, LOCALE_GENRE_DOCUS_MAGAZINES_6 },
|
|
{ 7, LOCALE_GENRE_DOCUS_MAGAZINES_7 }
|
|
};
|
|
#define GENRE_TRAVEL_HOBBIES_COUNT 8
|
|
const CMenuOptionChooser::keyval genre_travel_hobbies[GENRE_TRAVEL_HOBBIES_COUNT] =
|
|
{
|
|
{ 0, LOCALE_GENRE_TRAVEL_HOBBIES_0 },
|
|
{ 1, LOCALE_GENRE_TRAVEL_HOBBIES_1 },
|
|
{ 2, LOCALE_GENRE_TRAVEL_HOBBIES_2 },
|
|
{ 3, LOCALE_GENRE_TRAVEL_HOBBIES_3 },
|
|
{ 4, LOCALE_GENRE_TRAVEL_HOBBIES_4 },
|
|
{ 5, LOCALE_GENRE_TRAVEL_HOBBIES_5 },
|
|
{ 6, LOCALE_GENRE_TRAVEL_HOBBIES_6 },
|
|
{ 7, LOCALE_GENRE_TRAVEL_HOBBIES_7 }
|
|
};
|
|
|
|
#define GENRE_MAJOR_COUNT 10
|
|
const CMenuOptionChooser::keyval genre_major[GENRE_MAJOR_COUNT] =
|
|
{
|
|
{ 1, LOCALE_GENRE_MOVIE_0 },
|
|
{ 2, LOCALE_GENRE_NEWS_0 },
|
|
{ 3, LOCALE_GENRE_SHOW_0 },
|
|
{ 4, LOCALE_GENRE_SPORTS_0 },
|
|
{ 5, LOCALE_GENRE_CHILDRENS_PROGRAMMES_0 },
|
|
{ 6, LOCALE_GENRE_MUSIC_DANCE_0 },
|
|
{ 7, LOCALE_GENRE_ARTS_0 },
|
|
{ 8, LOCALE_GENRE_SOCIAL_POLITICAL_0 },
|
|
{ 9, LOCALE_GENRE_DOCUS_MAGAZINES_0 },
|
|
{ 10, LOCALE_GENRE_TRAVEL_HOBBIES_0}
|
|
};
|
|
|
|
#endif /*MOVIEBROWSER_H_*/
|
|
|
|
|
|
|
|
|