summaryrefslogtreecommitdiff
path: root/muggle-plugin/vdr_menu.c
diff options
context:
space:
mode:
authorLarsAC <LarsAC@e10066b5-e1e2-0310-b819-94efdf66514b>2004-02-08 10:48:44 +0000
committerLarsAC <LarsAC@e10066b5-e1e2-0310-b819-94efdf66514b>2004-02-08 10:48:44 +0000
commita6cd0e97d915a7e5fcb3db6fd25eaac624b03d57 (patch)
treeb7f566dca8eec3e8ddb21b189bb23b57273efa24 /muggle-plugin/vdr_menu.c
parentcda41f99d3dcf6b5a3d2a341d95db58c53b0d932 (diff)
downloadvdr-plugin-muggle-a6cd0e97d915a7e5fcb3db6fd25eaac624b03d57.tar.gz
vdr-plugin-muggle-a6cd0e97d915a7e5fcb3db6fd25eaac624b03d57.tar.bz2
Made major revisions in OSD behavior
git-svn-id: https://vdr-muggle.svn.sourceforge.net/svnroot/vdr-muggle/trunk@30 e10066b5-e1e2-0310-b819-94efdf66514b
Diffstat (limited to 'muggle-plugin/vdr_menu.c')
-rw-r--r--muggle-plugin/vdr_menu.c446
1 files changed, 224 insertions, 222 deletions
diff --git a/muggle-plugin/vdr_menu.c b/muggle-plugin/vdr_menu.c
index 4699bb8..317a647 100644
--- a/muggle-plugin/vdr_menu.c
+++ b/muggle-plugin/vdr_menu.c
@@ -2,12 +2,12 @@
/*! \file vdr_menu.c
* \brief Implements menu handling for broswing media libraries within VDR
********************************************************************
- * \version $Revision: 1.11 $
- * \date $Date: 2004/02/03 21:53:32 $
+ * \version $Revision: 1.12 $
+ * \date $Date: 2004/02/08 10:48:44 $
* \author Ralf Klueber, Lars von Wedel, Andreas Kellner
- * \author file owner: $Author: RaK $
+ * \author file owner: $Author: LarsAC $
*
- * $Id: vdr_menu.c,v 1.11 2004/02/03 21:53:32 RaK Exp $
+ * $Id: vdr_menu.c,v 1.12 2004/02/08 10:48:44 LarsAC Exp $
*/
/*******************************************************************/
@@ -105,144 +105,36 @@ void mgMainMenu::SetButtons( )
if( m_state == TREE )
{
- SetHelp( "Add", "Filter", "Playlist", "Change View" );
+ SetHelp( "Add", "Cycle tree", "Playlist", "Submenu" );
}
else if( m_state == PLAYLIST )
{
- SetHelp( "Tracks", "Filter", "Edit PL", "Tree" );
+ SetHelp( "Edit PL", "Track info", "Filter", "Submenu" );
}
else if( m_state == PLAYLIST_TRACKINFO )
{
- SetHelp( "Play/Pause", "Album Info", "Filter", "Tree" );
+ SetHelp( "Edit PL?", "Album info", "Filter", "Submenu" );
}
else if( m_state == PLAYLIST_ALBUMINFO )
{
- SetHelp( "Play/Pause", "Filter", "Playlist", "Tree" );
+ SetHelp( "Edit PL?", "Playlist", "Filter", "Submenu" );
}
else if( m_state == FILTER )
{
- SetHelp( "Add", "Playlist", "Filter", "Tree" );
+ SetHelp( "Query", "Load", "Tree", "Submenu" );
}
- else if( m_state == TRACKS )
+ else
{
- SetHelp( "Add", "Filter", "Playlist", "Tree" );
- }
+ SetHelp( "t", "o", "d", "o" );
+ }
}
eOSState mgMainMenu::ProcessKey(eKeys key)
{
mgDebug( 1, "mgMainMenu::ProcessKey" );
eOSState state = cOsdMenu::ProcessKey(key);
-
- if( m_state == PLAYLIST )
- {
- mgDebug( 1, "mgMainMenu: in state PLAYLIST" );
- if( state == osUnknown )
- {
- switch( key )
- {
- case kOk:
- {
- mgDebug( 1, "mgMainMenu: Mark" );
- Mark(); // Mark (to move), moving done by VDR, calls Move
- state = osContinue;
- } break;
- case kRed:
- {
- mgDebug( 1, "mgMainMenu: " );
- // Shuffle?
- }
- case kYellow:
- {
- if( m_state == PLAYLIST )
- {
- mgDebug( 1, "mgMainMenu: switch to TrackInfo" );
- DisplayTrackInfo();
- }
- else if( m_state == PLAYLIST_TRACKINFO )
- {
- mgDebug( 1, "mgMainMenu: switch to AlbumInfo" );
- DisplayAlbumInfo();
- }
- else if( m_state == PLAYLIST_ALBUMINFO )
- {
- mgDebug( 1, "mgMainMenu: switch to Playlist" );
- DisplayPlaylist();
- }
- state = osContinue;
- } break;
- case kBlue:
- {
- mgDebug( 1, "mgMainMenu: switch to TreeView" );
- m_history.clear();
- DisplayTree( m_root );
- state = osContinue;
- } break;
- case kGreen:
- {
- mgDebug( 1, "mgMainMenu: switch to Filter" );
- DisplayFilter();
- state = osContinue;
- } break;
- default:
- {
- mgDebug( 1, "mgMainMenu: default" );
- state = osContinue;
- };
- }
- }
- }
- else if( m_state == FILTER )
- {
- mgDebug( 1, "mgMainMenu: in state FILTER" );
-
- if( state == osUnknown )
- {
- switch( key )
- {
- case kOk:
- {
- // OK: Create filter and selection tree and display
- mgDebug( 1, "mgMainMenu: create and apply filter" );
- // m_media->applyFilters();
- } break;
- case kRed: // ???
- {
- state = osContinue;
- } break;
- case kYellow:
- {
- // Yellow always goes to playlist view
- mgDebug( 1, "mgMainMenu: switch to playlist" );
- DisplayPlaylist();
- state = osContinue;
- } break;
- case kGreen:
- {
- mgDebug( 1, "mgMainMenu: switch filters" );
- // Green: select other filters
- DisplayFilterSelector();
- } break;
- case kBlue:
- {
- // Blue: treeview
- mgDebug( 1, "mgMainMenu: switch to treeview" );
- m_history.clear();
- DisplayTree( m_root );
- state = osContinue;
- }
- default:
- {
- state = osContinue;
- }
- }
- }
- else if( state == osBack )
- {
- // m_media->resetFilters();
- }
- }
- else if( m_state == TREE )
+
+ if( m_state == TREE )
{
mgDebug( 1, "mgMainMenu: in state TREE" );
// Navigate with up/dn, left/right (pgup, pgdn)
@@ -253,7 +145,7 @@ eOSState mgMainMenu::ProcessKey(eKeys key)
{
case kOk:
{
- mgDebug( 1, "mgMainMenu: switch to filter" );
+ mgDebug( 1, "mgMainMenu: expand and descend" );
m_history.push_back( Current() );
mgDebug( 1, "Remember current node #%i", Current() );
@@ -292,24 +184,24 @@ eOSState mgMainMenu::ProcessKey(eKeys key)
}
state = osContinue;
} break;
- case kYellow:
+ case kGreen:
{
- mgDebug( 1, "mgMainMenu: display playlist" );
- // Yellow always goes to playlist view
- DisplayPlaylist();
+ mgDebug( 1, "mgMainMenu: cycle treeviews (todo)" );
+
state = osContinue;
} break;
- case kGreen:
+ case kYellow:
{
- mgDebug( 1, "mgMainMenu: display filter" );
- DisplayFilter();
- state = osContinue;
+ mgDebug( 1, "mgMainMenu: cycle to playlist view" );
+
+ DisplayPlaylist();
} break;
case kBlue:
{
- mgDebug( 1, "mgMainMenu: select other tree view" );
- // Select other views -> Select other Media
- DisplayTreeViewSelector();
+ mgDebug( 1, "mgMainMenu: submenu (todo)" );
+
+ DisplayTreeSubmenu();
+
state = osContinue;
} break;
default:
@@ -342,110 +234,244 @@ eOSState mgMainMenu::ProcessKey(eKeys key)
state = osBack;
}
+ }
+ }
+ else if( m_state == TREE_SUBMENU )
+ {
+ if( state == osUnknown )
+ {
+ switch( key )
+ {
+ case k0 ... k9:
+ {
+ int n = key - k0;
+
+ TreeSubmenuAction( n );
+
+ state = osContinue;
+ }
+ case kOk:
+ {
+ TreeSubmenuAction( Current() );
+
+ state = osContinue;
+ } break;
+ default:
+ {
+ state = osContinue;
+ } break;
+ }
+ }
+ else if( state == osBack )
+ {
+ mgDebug( 1, "mgMainMenu: return from tree view submenu" );
+
+ // restore last selected entry
+ int last = m_history.back();
+
+ DisplayTree( m_node, last );
+
+ state = osContinue;
}
}
- else if( m_state == TRACKS )
+ else if( m_state == PLAYLIST )
{
- // Navigate with up/dn, left/right (pgup, pgdn)
+ mgDebug( 1, "mgMainMenu: in state PLAYLIST" );
if( state == osUnknown )
{
switch( key )
{
case kOk:
{
- // Show Song Info
+ mgDebug( 1, "mgMainMenu: playlist ok" );
state = osContinue;
} break;
case kRed:
{
- // Add item to Playlist
- if(Current() >= 0 && Current() < (int) m_tracklist->getNumItems())
+ mgDebug( 1, "mgMainMenu: edit playlist" );
+ Mark(); // Mark (to move), moving done by VDR, calls Move
+ }
+ case kGreen:
+ {
+ if( m_state == PLAYLIST )
+ {
+ mgDebug( 1, "mgMainMenu: switch to TrackInfo" );
+ DisplayTrackInfo();
+ }
+ else if( m_state == PLAYLIST_TRACKINFO )
{
- mgContentItem* item = m_tracklist->getItem( Current() );
- mgDebug(3, "Ading item %s to playlist",
- item->getTitle().c_str() );
-
- m_current_playlist->append( item );
+ mgDebug( 1, "mgMainMenu: switch to AlbumInfo" );
+ DisplayAlbumInfo();
+ }
+ else if( m_state == PLAYLIST_ALBUMINFO )
+ {
+ mgDebug( 1, "mgMainMenu: switch to Playlist" );
+ DisplayPlaylist();
}
state = osContinue;
} break;
- case kGreen:
+ case kYellow:
{
- // Green always goes to the filter view
+ mgDebug( 1, "mgMainMenu: cycle playlist to filter" );
DisplayFilter();
- state = osContinue;
+ state = osContinue;
} break;
- case kYellow:
+ case kBlue:
+ {
+ // Submenu
+ mgDebug( 1, "mgMainMenu: playlist submenu (todo)" );
+
+ state = osContinue;
+ } break;
+ default:
+ {
+ mgDebug( 1, "mgMainMenu: default" );
+ state = osContinue;
+ };
+ }
+ }
+ }
+ else if( m_state == FILTER )
+ {
+ mgDebug( 1, "mgMainMenu: in state FILTER" );
+
+ if( state == osUnknown )
+ {
+ switch( key )
+ {
+ case kOk:
+ {
+ // OK: Create filter and selection tree and display
+ mgDebug( 1, "mgMainMenu: create and apply filter" );
+ // m_media->applyFilters();
+ } break;
+ case kRed: // ???
{
- // Yellow always goes to playlist view
- DisplayPlaylist();
state = osContinue;
+ mgDebug( 1, "mgMainMenu: query and display results" );
} break;
- case kBlue:
+ case kGreen:
{
- m_history.clear();
- DisplayTree( m_root );
+ // cycle FILTER -> TREE
+ mgDebug( 1, "mgMainMenu: clear filters (todo)" );
+ DisplayFilterSelector();
state = osContinue;
} break;
+ case kYellow:
+ {
+ // Green: treeview
+ mgDebug( 1, "mgMainMenu: switch to treeview" );
+
+ DisplayTreeViewSelector();
+
+ state = osContinue;
+ } break;
+ case kBlue:
+ {
+ mgDebug( 1, "mgMainMenu: submenu" );
+ }
default:
{
state = osContinue;
- } break;
+ }
}
}
else if( state == osBack )
{
- // where to go on back?
- state = osContinue;
+ // m_media->resetFilters();?
}
}
else
{
mgDebug(1, "Process key: else");
+ mgDebug(1, "Process key: %d", (int) state);
+
}
return state;
}
-void mgMainMenu::Move( int from, int to )
+void mgMainMenu::DisplayTree( mgSelectionTreeNode* node, int select )
{
- // check current view, perform move in the content view
- if( m_state == PLAYLIST )
+ m_state = TREE;
+
+ if( node->expand( ) )
{
- // resort
+ Clear();
+
+ char buffer[256];
+ sprintf( buffer, "Muggle - %s", node->getLabel().c_str() );
+
+ SetTitle( buffer );
+ SetButtons();
+
+ m_node = node;
+ mgDebug( 1, "mgBrowseMenu::DisplaySelection: node %s received", node->getLabel().c_str() );
+ vector<mgSelectionTreeNode*> children = node->getChildren();
+
+ mgDebug( 1, "mgBrowseMenu::DisplaySelection: %d elements received", children.size() );
+
+ for( vector<mgSelectionTreeNode*>::iterator iter = children.begin();
+ iter != children.end();
+ iter ++ )
+ {
+ Add( new mgMenuTreeItem( *iter ) );
+ }
+
+ cOsdItem *item = Get( select );
+ SetCurrent( item );
+
+ RefreshCurrent();
+ DisplayCurrent(true);
}
+ Display();
}
-void mgMainMenu::DisplayTracklist()
+void mgMainMenu::DisplayTreeViewSelector()
{
- m_state = TRACKS;
- mgDebug( 1, "mgBrowseMenu::DisplayTracklist");
+ m_history.clear();
+ // collapse all!
+ DisplayTree( m_root );
+}
- Clear();
- SetButtons();
+void mgMainMenu::DisplayTreeSubmenu()
+{
+ m_state = TREE_SUBMENU;
- mgDebug( 1, "mgBrowseMenu::DisplayTracklist: %d elements received",
- m_tracklist->getNumItems() );
-
- static char titlestr[80];
- sprintf( titlestr, "Muggle Tracklist (%d items)", m_tracklist->getNumItems() );
- SetTitle( titlestr );
+ Clear();
+
+ mgDebug( 1, "Creating Muggle tree view submenu" );
+ SetButtons();
- // create tracklist with the current filters
- if( m_tracklist )
- {
- delete m_tracklist;
- }
-
- m_tracklist = m_media->getTracks();
+ SetTitle( "Muggle Tree View Commands" );
+
+ // Add items
+ Add( new cOsdItem( "1 - Test1" ) );
+ Add( new cOsdItem( "9 - Test9" ) );
+ Add( new cOsdItem( "0 - Test0" ) );
+
+ Display();
+}
- for( unsigned int i = 0; i < m_tracklist->getNumItems(); i++)
+void mgMainMenu::TreeSubmenuAction( int n )
+{
+ mgDebug( "mgMainMenu: TreeSubmenuAction( %d )", n );
+
+ switch( n )
+ {
+ case 0:
{
- string label = m_tracklist->getLabel( i, " " );
- Add( new cOsdItem( label.c_str() ) );
- }
-
- Display();
+ // action 0
+ } break;
+ case 1:
+ {
+ // action 0
+ } break;
+ default:
+ {
+ // undefined action
+ } break;
+ }
}
void mgMainMenu::DisplayPlaylist()
@@ -478,55 +504,28 @@ void mgMainMenu::DisplayPlaylist()
void mgMainMenu::DisplayTrackInfo()
{
m_state = PLAYLIST_TRACKINFO;
+ SetButtons();
+
// show info of the currently playing track
}
void mgMainMenu::DisplayAlbumInfo()
{
m_state = PLAYLIST_ALBUMINFO;
- // show info of the currently playing track
+ SetButtons();
+
+ // show info of the currently playing album
}
-void mgMainMenu::DisplayTree( mgSelectionTreeNode* node, int select )
+void mgMainMenu::Move( int from, int to )
{
- m_state = TREE;
-
- if( node->expand( ) )
+ // check current view, perform move in the content view
+ if( m_state == PLAYLIST )
{
- Clear();
-
- char buffer[256];
- sprintf( buffer, "Muggle - %s", node->getLabel().c_str() );
-
- SetTitle( buffer );
- SetButtons();
-
- m_node = node;
- mgDebug( 1, "mgBrowseMenu::DisplaySelection: node %s received", node->getLabel().c_str() );
- vector<mgSelectionTreeNode*> children = node->getChildren();
-
- mgDebug( 1, "mgBrowseMenu::DisplaySelection: %d elements received", children.size() );
-
- for( vector<mgSelectionTreeNode*>::iterator iter = children.begin();
- iter != children.end();
- iter ++ )
- {
- Add( new mgMenuTreeItem( *iter ) );
- }
-
- cOsdItem *item = Get( select );
- SetCurrent( item );
-
- RefreshCurrent();
- DisplayCurrent(true);
+ // resort
}
- Display();
-}
-void mgMainMenu::DisplayTreeViewSelector()
-{
- m_history.clear();
- DisplayTree( m_root );
+ // what now?
}
void mgMainMenu::DisplayFilter()
@@ -581,12 +580,15 @@ void mgMainMenu::DisplayFilter()
void mgMainMenu::DisplayFilterSelector()
{
-
+ // show available filters, load on OK?
}
/************************************************************
*
* $Log: vdr_menu.c,v $
+ * Revision 1.12 2004/02/08 10:48:44 LarsAC
+ * Made major revisions in OSD behavior
+ *
* Revision 1.11 2004/02/03 21:53:32 RaK
* beak = break in l 212
*