Index: main_menu.c
===================================================================
RCS file: /cvsroot/rockbox/apps/main_menu.c,v
retrieving revision 1.55
diff -u -r1.55 main_menu.c
--- main_menu.c	31 Aug 2002 23:07:11 -0000	1.55
+++ main_menu.c	4 Sep 2002 03:40:18 -0000
@@ -34,7 +34,7 @@
 #include "power.h"
 #include "powermgmt.h"
 #include "sound_menu.h"
-
+#include "wps.h"
 #ifdef HAVE_LCD_BITMAP
 #include "bmp.h"
 #include "icons.h"
@@ -196,6 +196,8 @@
     return MENU_OK;
 }
 
+
+
 Menu main_menu(void)
 {
     int m;
@@ -203,6 +205,7 @@
 
     /* main menu */
     struct menu_items items[] = {
+        { "Play Favorites",     build_fave_playlist },
         { "Sound Settings",     sound_menu        },
         { "General Settings",   settings_menu     },
 #ifdef HAVE_LCD_BITMAP
Index: wps.c
===================================================================
RCS file: /cvsroot/rockbox/apps/wps.c,v
retrieving revision 1.134
diff -u -r1.134 wps.c
--- wps.c	4 Sep 2002 01:51:08 -0000	1.134
+++ wps.c	4 Sep 2002 03:40:20 -0000
@@ -60,6 +60,34 @@
 static struct mp3entry* id3 = NULL;
 static int old_release_mask;
 
+
+#define MAX_FAVE_SIZE 25
+/* Store five at a time */
+static int iFaveCtr = 0;
+
+int build_fave_playlist()
+{
+    int i;
+    int start_index = 0;
+ 
+    playlist_clear();
+
+    int seed = current_tick;
+   
+    lcd_stop_scroll();
+
+    for(i = 0;i < iFaveCtr;i++)
+    {
+         playlist_add(favorites[i]);
+    }
+
+    start_index = play_list(NULL, NULL,
+                  0, false, 0, seed);
+
+    return start_index;
+
+}
+
 #ifdef HAVE_PLAYER_KEYPAD
 void player_change_volume(int button)
 {
@@ -560,10 +588,23 @@
                     old_release_mask = button_set_release(RELEASE_MASK);
                 }
                 break;
-
-                /* mute */
 #ifdef HAVE_PLAYER_KEYPAD
-            case BUTTON_MENU | BUTTON_PLAY:
+               case BUTTON_MENU | BUTTON_PLAY:
+               {
+                   if (!mpeg_is_playing())
+                       break;
+ 
+                   lcd_stop_scroll();
+ 
+                   if (store_favorite())
+                   {
+                      lcd_puts(0, 0, "Stored Favorite"); 
+                   } else {
+                      lcd_puts(0, 0, "No Stored Favorite"); 
+                   }
+ 
+                   break;
+               }
 #else
             case BUTTON_F1 | BUTTON_UP:
 #endif
@@ -629,6 +670,25 @@
     return false;
 }
 
+int store_favorite()
+{
+    if (id3->path)
+    {
+
+        if (iFaveCtr < MAX_FAVE_SIZE)
+        {
+          strncpy(favorites[iFaveCtr], id3->path, MAX_PATH);
+          iFaveCtr++; 
+          return 1;
+        } else {  
+            return 0; 
+        }   
+    } else {
+         return 0;
+    }
+}
+
+
 #ifdef HAVE_LCD_BITMAP
 bool f2_screen(void)
 {
@@ -970,3 +1030,5 @@
         lastbutton = button;
     }
 }
+
+
Index: wps.h
===================================================================
RCS file: /cvsroot/rockbox/apps/wps.h,v
retrieving revision 1.15
diff -u -r1.15 wps.h
--- wps.h	3 Sep 2002 15:58:46 -0000	1.15
+++ wps.h	4 Sep 2002 03:40:20 -0000
@@ -21,11 +21,15 @@
 #include "id3.h"
 #include "playlist.h" 
 
+#define MAX_FAVE_SIZE 25
+
 extern bool keys_locked;
 extern bool wps_time_countup;
+char favorites[MAX_FAVE_SIZE][MAX_PATH];
 
+int store_favorite(void);
 int wps_show(void);
-
+int build_fave_playlist(void);
 bool load_custom_wps(void);
 bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string);
 bool refresh_wps(bool refresh_scroll);
@@ -34,5 +38,4 @@
 bool f2_screen(void);
 bool f3_screen(void);
 #endif
-
 #endif
