diff options
| author | LarsAC <LarsAC@e10066b5-e1e2-0310-b819-94efdf66514b> | 2004-02-02 19:17:44 +0000 |
|---|---|---|
| committer | LarsAC <LarsAC@e10066b5-e1e2-0310-b819-94efdf66514b> | 2004-02-02 19:17:44 +0000 |
| commit | 0ca80f90d20394d3d4679f73e95986f4d86af40a (patch) | |
| tree | cc55ae6aea573a0728f28d89bec99f3a396e5b7c | |
| parent | f47b07b342a6e37e76b41b1ab40101190918dbe5 (diff) | |
| download | vdr-plugin-muggle-0ca80f90d20394d3d4679f73e95986f4d86af40a.tar.gz vdr-plugin-muggle-0ca80f90d20394d3d4679f73e95986f4d86af40a.tar.bz2 | |
Added generic filter handling to OSD
git-svn-id: https://vdr-muggle.svn.sourceforge.net/svnroot/vdr-muggle/trunk/muggle-plugin@17 e10066b5-e1e2-0310-b819-94efdf66514b
| -rw-r--r-- | vdr_menu.c | 89 | ||||
| -rw-r--r-- | vdr_menu.h | 20 |
2 files changed, 91 insertions, 18 deletions
@@ -2,10 +2,15 @@ /*! \file vdr_menu.c * \brief Implements menu handling for broswing media libraries within VDR ******************************************************************** - * \version $Revision: 1.1 $ - * \date $Date: 2004/02/01 18:22:53 $ + * \version $Revision: 1.2 $ + * \date $Date: 2004/02/02 19:17:44 $ * \author Ralf Klueber, Lars von Wedel, Andreas Kellner * \author file owner: $Author: LarsAC $ + * + * $Log: vdr_menu.c,v $ + * Revision 1.2 2004/02/02 19:17:44 LarsAC + * Added generic filter handling to OSD + * */ /*******************************************************************/ @@ -48,6 +53,16 @@ void mgMenuTreeItem::Set() SetText( buffer, false ); } +void mgMenuTreeItem::setChildIndex( int index ) +{ + m_child_index = index; +} + +int mgMenuTreeItem::getChildIndex( ) +{ + return m_child_index; +} + // ----------------------- mgMenuTrackItem ------------------ @@ -96,6 +111,13 @@ mgSelectionTreeNode *mgMainMenu::CurrentNode() return item? item->Node(): 0; } +mgMenuTreeItem *mgMainMenu::CurrentItem() +{ + mgMenuTreeItem *item = (mgMenuTreeItem *)Get( Current() ); + + return item; +} + void mgMainMenu::SetButtons( ) { SetHasHotkeys(); @@ -202,7 +224,7 @@ eOSState mgMainMenu::ProcessKey(eKeys key) mgDebug( 1, "mgMainMenu: create and apply filter" ); } break; case kRed: // ??? -case kYellow: + case kYellow: { // Yellow always goes to playlist view mgDebug( 1, "mgMainMenu: switch to playlist" ); @@ -241,9 +263,12 @@ case kYellow: case kOk: { mgDebug( 1, "mgMainMenu: switch to filter" ); - mgSelectionTreeNode *child = CurrentNode(); // m_node->getChildren()[ Current() ]; + + m_indices.push_back( Current() ); + + mgSelectionTreeNode *child = CurrentNode(); DisplayTree( child ); - + state = osContinue; } break; case kRed: @@ -308,8 +333,15 @@ case kYellow: if( parent ) { mgDebug( 1, "mgMainMenu: collapse current node" ); + m_node->collapse(); + DisplayTree( parent ); + + // restore last selected entry + cOsdItem *item = Get( m_indices.back() ); + m_indices.pop_back(); + SetCurrent( item ); } state = osContinue; } @@ -502,17 +534,44 @@ void mgMainMenu::DisplayFilter() SetTitle( "Muggle Filter View" ); - Add( new cMenuEditStrItem( "Name ", m_filtername, 32, alpha_num_keys ) ); - Add( new cMenuEditBoolItem( "Filter ", &m_filter, "Off", "On" ) ); - - // Separator??? + vector<mgFilter*> *filter_list = m_media->getTrackFilters(); - Add( new cMenuEditStrItem( "Title ", m_title, 32, alpha_num_keys ) ); - Add( new cMenuEditStrItem( "Interpret", m_interpret, 32, alpha_num_keys ) ); - Add( new cMenuEditStrItem( "Album ", m_album, 32, alpha_num_keys ) ); - Add( new cMenuEditStrItem( "Playlist ", m_playlist, 32, alpha_num_keys ) ); - Add( new cMenuEditIntItem( "Year from", &m_year_min, 1600, 9999 ) ); - Add( new cMenuEditIntItem( "Year to ", &m_year_max, 1600, 9999 ) ); + for( vector<mgFilter*>::iterator iter = filter_list->begin(); + iter != filter_list->end(); + iter ++ ) + { + switch( (*iter)->getType() ) + { + case mgFilter::INT: + { + mgFilterInt *fi = (mgFilterInt *) (*iter); + Add( new cMenuEditIntItem( fi->getName(), + &(fi->m_intval), + fi->getMin(), fi->getMax() ) ); + } break; + case mgFilter::STRING: + { + mgFilterString *fs = (mgFilterString *) (*iter); + /* + Add( new cMenuEditStrItem( fs->getName(), &( fs->m_strval), + fs->getMaxLength(), fs->getAllowedChars() ); + + */ + } break; + case mgFilter::BOOL: + { + mgFilterBool *fb = (mgFilterBool *) (*iter); + /* + Add( new cMenuEditIntItem( fb->getName(), &( fb->m_bval), + fb->getTrueString(), fb->getFalseString() ); + */ + } break; + default: + case mgFilter::UNDEF: + { + } break; + } + } Display(); } @@ -2,10 +2,15 @@ /*! \file vdr_menu.h * \brief Implements menu handling for broswing media libraries within VDR ******************************************************************** - * \version $Revision: 1.2 $ - * \date $Date: 2004/02/01 22:12:56 $ + * \version $Revision: 1.3 $ + * \date $Date: 2004/02/02 19:17:44 $ * \author Ralf Klueber, Lars von Wedel, Andreas Kellner - * \author file owner: $Author: RaK $ + * \author file owner: $Author: LarsAC $ + * + * $Log: vdr_menu.h,v $ + * Revision 1.3 2004/02/02 19:17:44 LarsAC + * Added generic filter handling to OSD + * */ /*******************************************************************/ @@ -21,6 +26,8 @@ #include <vdr/osd.h> #endif +#include <list> + class mgMedia; class mgSelectionTreeNode; class mgPlaylist; @@ -35,10 +42,14 @@ class mgMenuTreeItem : public cOsdItem mgSelectionTreeNode *Node(); void Set(); + + void setChildIndex( int index ); + int getChildIndex( ); private: mgSelectionTreeNode *m_node; + int m_child_index; }; @@ -49,6 +60,7 @@ class mgMainMenu : public cOsdMenu mgMainMenu(); mgSelectionTreeNode *CurrentNode(); + mgMenuTreeItem *CurrentItem(); eOSState ProcessKey(eKeys Key); void Move( int from, int to); @@ -89,6 +101,8 @@ class mgMainMenu : public cOsdMenu int m_year_min, m_year_max, m_filter; MuggleStatus m_state; + + std::list<int> m_indices; }; #endif |
