summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLarsAC <LarsAC@e10066b5-e1e2-0310-b819-94efdf66514b>2004-02-02 19:17:44 +0000
committerLarsAC <LarsAC@e10066b5-e1e2-0310-b819-94efdf66514b>2004-02-02 19:17:44 +0000
commit0ca80f90d20394d3d4679f73e95986f4d86af40a (patch)
treecc55ae6aea573a0728f28d89bec99f3a396e5b7c
parentf47b07b342a6e37e76b41b1ab40101190918dbe5 (diff)
downloadvdr-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.c89
-rw-r--r--vdr_menu.h20
2 files changed, 91 insertions, 18 deletions
diff --git a/vdr_menu.c b/vdr_menu.c
index d706e94..39d2afe 100644
--- a/vdr_menu.c
+++ b/vdr_menu.c
@@ -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();
}
diff --git a/vdr_menu.h b/vdr_menu.h
index a0807a4..a4bfed4 100644
--- a/vdr_menu.h
+++ b/vdr_menu.h
@@ -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