summaryrefslogtreecommitdiff
path: root/sh_muggle.c
diff options
context:
space:
mode:
Diffstat (limited to 'sh_muggle.c')
-rw-r--r--sh_muggle.c366
1 files changed, 0 insertions, 366 deletions
diff --git a/sh_muggle.c b/sh_muggle.c
deleted file mode 100644
index 485905e..0000000
--- a/sh_muggle.c
+++ /dev/null
@@ -1,366 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include "mysql/mysql.h"
-
-#include "mg_content_interface.h"
-#include "mg_media.h"
-#include "mg_tools.h"
-#include <unistd.h>
-
-#define DISPLAY_SIZE 20
-#define PAGE_JUMP 18
-
-
-#define EXIT 0
-#define TREE_VIEW 1
-#define LIST_VIEW 2
-#define PLAYLIST_VIEW 3
-#define FILTER_VIEW 4
-
-using namespace std;
-
-const char playlist_command_str[] =
-" s : shuffle\n"
-" 8 : up\n"
-" 2 : down\n"
-" 9 : page-up\n"
-" 3 : page-down\n"
-" p : go to top\n"
-" t : switch to tree view\n"
-" q : quit";
-
-const char tree_command_str[] =
-" 6 : expand\n"
-" 4 : collapse\n"
-" 8 : up\n"
-" 2 : down\n"
-" 9 : page-up\n"
-" 3 : page-down\n"
-" 5 : add selection to playlist\n"
-" p : switch to playlist view\n"
-" t : go to root node\n"
-" q : quit";
-
-mgSelectionTreeNode* GV_currentNode;
-vector<mgSelectionTreeNode*> GV_treeDisplay;
-
-mgPlaylist *GV_currentPlaylist;
-
-void print_tree(mgSelectionTreeNode* node, string tab)
-{
- vector<mgSelectionTreeNode*> children;
- vector<mgSelectionTreeNode*>::iterator iter;
-
- tab = tab + " ";
- printf("%2d %c %s-- Id: '%s', level %d '%s' \n",
- GV_treeDisplay.size(), (node->isExpanded()?'x':'-'), tab.c_str(),
- node->getID().c_str(), node->getLevel(),
- node->getLabel().c_str());
-// printf(" %sRestrictions: '%s'\n", tab.c_str(), node->getRestrictions().c_str());
- GV_treeDisplay.push_back(node);
- if(node->isExpanded())
- {
- children = node->getChildren();
- for(iter = children.begin(); iter != children.end(); iter++)
- {
- print_tree(*iter, tab);
- }
- }
-}
-void print_node(mgSelectionTreeNode* node, unsigned int selected, unsigned int start)
-{
- vector<mgSelectionTreeNode*> children;
- vector<mgSelectionTreeNode*>::iterator iter;
- mgSelectionTreeNode* child;
- unsigned int i;
-
- GV_treeDisplay.clear();
- printf("--%s---\n", node->getLabel().c_str());
- children = node->getChildren();
- // first, add al nodes to the storage
- for(iter = children.begin(); iter != children.end(); iter++)
- {
- GV_treeDisplay.push_back(*iter);
- }
-
- // now display the ones in question
- printf("Displaying %d-%d of %d (%s)\n", start+1, start+DISPLAY_SIZE+1,
- GV_treeDisplay.size(), node->getRestrictions().c_str());
- if(start >0)
- printf(".......\n");
- for (i = start; i < start+DISPLAY_SIZE && i< GV_treeDisplay.size(); i++)
- {
- child = GV_treeDisplay[i];
- if(i == selected)
- printf ("==>");
- else
- printf(" ");
- printf ("%s\n",child->getLabel().c_str());
- }
- if(i==start+DISPLAY_SIZE)
- printf(".......\n");
-}
-
-void print_tracks(vector<mgContentItem*>* tracks, string restriction)
-{
- vector<mgContentItem*>::iterator iter;
-
- printf("======BEGIN_TRACKS=====(restriction:'%s'======\n", restriction.c_str());
- for(iter = tracks->begin(); iter != tracks->end(); iter++)
- {
- printf(" Track: (%d): '%s' \n",(*iter)->getId(), (*iter)->getTitle().c_str());
- }
- printf("======END_TRACKS===========\n");
- printf("press key t continue\n");
- getchar();
-}
-
-void PrintPlaylist(mgPlaylist *pl, unsigned int selected, unsigned int start)
-{
- vector<mgContentItem*>::iterator iter;
- unsigned int i;
-
- // now display the ones in question
- printf("Playlist '%s' (%d entries)\n", pl->getListname().c_str(),
- pl->getNumItems());
- if(start >0)
- printf(".......\n");
- for (i = start; i<start+DISPLAY_SIZE && i< pl->getNumItems(); i++)
- {
- if(i == selected)
- printf ("==>");
- else
- printf(" ");
- printf ("%s\n",pl->getLabel(i, "\t").c_str());
- }
- if(i==start+DISPLAY_SIZE)
- printf(".......\n");
-}
-int PlaylistView()
-{
- char cmd;
- bool loop = true;
- unsigned int selected = 0;
- unsigned int start=0;
-
- while(loop)
- {
- printf("\n\n\n\n\n\n");
- PrintPlaylist(GV_currentPlaylist, selected, start);
- printf("------- enter command ('h' for help) -----------\n");
- cmd = getchar();
- switch (cmd)
- {
- case 'h': // shuffle
- printf("%s\n", playlist_command_str);
- break;
- case 's': // shuffle
- GV_currentPlaylist->shuffle();
- break;
- case '8': // up
- if(selected >0) selected--;
- if(selected < start) start = start - PAGE_JUMP;
- break;
- case '2': // down
- if(selected < (GV_currentPlaylist->getNumItems()-1))
- selected++;
- if(selected >= start+DISPLAY_SIZE) start = start + PAGE_JUMP;
- break;
- case '9': // pgup
- if(start >= PAGE_JUMP)
- {
- start -= PAGE_JUMP;
- selected -= PAGE_JUMP;
- }
- else
- mgDebug(6,"Can not go up %d %d", start, selected);
- break;
- case '3': // pgdown
- mgDebug(6,"pgdown %d %d", start, selected);
- if(start+ PAGE_JUMP< (GV_currentNode->getChildren()).size())
- {
- start += PAGE_JUMP;
- selected += PAGE_JUMP;
- if(selected >= ((GV_currentNode->getChildren()).size()))
- selected = (GV_currentNode->getChildren()).size();
- }
-
- break;
- case 'p': // go to top of playlist view
- selected=0;
- start=0;
- break;
- case 't': // tree view (on root node)
- cmd = getchar();
- return TREE_VIEW;
- break;
- case 'q': // tree view (on root node)
- cmd = getchar();
- return EXIT;
- break;
- default:
- mgWarning("Invalid Command '%c'",cmd);
-
- }
- cmd = getchar();
-
- }// end nodeview loop
- return EXIT;
-}
-// displays one node (and all its children)
-int NodeView()
-{
- vector<mgContentItem*>* tracks;
- char cmd;
- bool loop = true;
- unsigned int selected = 0;
- unsigned int start=0;
- while(loop)
- {
- printf("\n\n\n\n\n\n");
- if(!GV_currentNode->isExpanded())
- {
- GV_currentNode->expand();
- }
- print_node(GV_currentNode,selected, start);
- printf("------- enter command ('h' for help) -----------\n");
-
- cmd = getchar();
- switch (cmd)
- {
- case 'h': // shuffle
- printf("%s\n", tree_command_str);
- break;
- case 'e':
- case '6':// expand
- GV_currentNode = GV_treeDisplay[selected];
- if(GV_currentNode->expand())
- {
- selected = 0;
- start=0;
- }
- else
- {
- GV_currentNode = GV_currentNode ->getParent();
- }
- break;
- case 'c' :
- case '4':
- if(GV_currentNode->getParent() != NULL)
- {
- GV_currentNode->collapse();
- GV_currentNode = GV_currentNode->getParent();
- selected = 0;
- start=0;
- }
- else
- {
- mgWarning("Already at top level");
- }
- break;
- case '8': // up
- if(selected >0) selected--;
- if(selected < start) start = start - PAGE_JUMP;
- break;
- case '2': // down
- if(selected < ((GV_currentNode->getChildren()).size()-1))
- selected++;
- if(selected >= start+DISPLAY_SIZE) start = start + PAGE_JUMP;
- break;
- case '9': // pgup
- if(start >= PAGE_JUMP)
- {
- start -= PAGE_JUMP;
- selected -= PAGE_JUMP;
- }
- else
- mgDebug(6,"Can not go up %d %d", start, selected);
- break;
- case '3': // pgdown
- mgDebug(6,"pgdown %d %d", start, selected);
- if(start+ PAGE_JUMP< (GV_currentNode->getChildren()).size())
- {
- start += PAGE_JUMP;
- selected += PAGE_JUMP;
- if(selected >= ((GV_currentNode->getChildren()).size()))
- selected = (GV_currentNode->getChildren()).size();
- }
-
- break;
- case '5': // OK ,add to playlist
- tracks = GV_treeDisplay[selected]->getTracks();
- GV_currentPlaylist->appendList(tracks);
- tracks = NULL;
- break;
- case 'p': // go to playlist view
- cmd = getchar();
- return PLAYLIST_VIEW;
- break;
- case 't': // tree view (on root node)
- while(GV_currentNode->getParent() != NULL)
- {
- GV_currentNode->collapse();
- GV_currentNode = GV_currentNode->getParent();
- }
- selected = 0;
- start=0;
- break;
- case 'q': // go to playlist view
- cmd = getchar();
- return EXIT;
- break;
- default:
- mgWarning("Invalid Command '%c'",cmd);
-
- }
- cmd = getchar();
-
- }// end nodeview loop
- return EXIT;
-}
-int main (int argc, char **argv)
-{
- mgMedia* media;
- string tab;
- bool loop = true;
- /* now to connect to the database */
- mgSelectionTreeNode *root;
- int activeScreen;
-
- vector<int> listcols;
- mgSetDebugLevel(8);
- media = new mgMedia(mgMedia::GD_MP3);
-
- mgDebug(3," Staring sh_muggle");
- // create initial tree node in view '1'
- activeScreen = TREE_VIEW;
- root = media->getSelectionRoot();
- root->expand();
- GV_currentNode = root->getChildren()[0];
- GV_currentPlaylist = media->createTemporaryPlaylist();
- listcols.push_back(1);
- listcols.push_back(0);
- GV_currentPlaylist->setDisplayColumns(listcols);
- mgDebug(3," Entering sh_muggle main loop");
-
- // now switch to the initial view;
- while(loop)
- {
- switch(activeScreen)
- {
- case TREE_VIEW:
- activeScreen = NodeView();
- break;
- case PLAYLIST_VIEW:
- activeScreen = PlaylistView();
- break;
- case EXIT:
- exit(0);
- break;
- default:
- mgError("Invalid screen %d");
- }
- }
- mgError("leavingNodeView");
-
-}