Would someone with win32 building add this option to that option menu
as well?
Index: base/include/playlist.h
===================================================================
RCS file: /src/repository/freeamp/base/include/playlist.h,v
retrieving revision 1.62
diff -u -r1.62 playlist.h
--- base/include/playlist.h 2000/09/24 19:26:24 1.62
+++ base/include/playlist.h 2000/10/03 16:38:07
@@ -341,8 +341,10 @@
bool IsEmpty();
uint32 CountItems();
PlaylistItem* ItemAt(uint32 index);
- uint32 IndexOf(const PlaylistItem* item);
+ uint32 IndexOf(const PlaylistItem* item);
bool HasItem(const PlaylistItem* item);
+ uint32 IndexOfURL(const string& url);
+
void RetrieveMetaData(PlaylistItem* item);
void RetrieveMetaData(vector<PlaylistItem*>* list);
Index: base/src/playlist.cpp
===================================================================
RCS file: /src/repository/freeamp/base/src/playlist.cpp,v
retrieving revision 1.113
diff -u -r1.113 playlist.cpp
--- base/src/playlist.cpp 2000/09/28 08:08:00 1.113
+++ base/src/playlist.cpp 2000/10/03 16:38:08
@@ -2350,6 +2350,33 @@
return (IndexOf(item) != kInvalidIndex);
}
+uint32 PlaylistManager::IndexOfURL(const string& url)
+{
+ // Added by [EMAIL PROTECTED]
+ vector<PlaylistItem*>* alist=m_activeList;
+ uint32 result = kInvalidIndex;
+ uint32 index = 0;
+ uint32 size = 0;
+
+ assert(alist);
+
+ if(alist)
+ {
+ vector<PlaylistItem*>::iterator i = alist->begin();
+ size = alist->size();
+
+ for(index = 0; i != alist->end();i++, index++)
+ {
+ if(url == (*i)->URL())
+ {
+ result = index;
+ break;
+ }
+ }
+ }
+
+ return result;
+}
bool PlaylistManager::CanUndo()
{
Index: ui/musicbrowser/unix/include/gtkmusicbrowser.h
===================================================================
RCS file: /src/repository/freeamp/ui/musicbrowser/unix/include/gtkmusicbrowser.h,v
retrieving revision 1.56
diff -u -r1.56 gtkmusicbrowser.h
--- ui/musicbrowser/unix/include/gtkmusicbrowser.h 2000/09/25 08:41:42 1.56
+++ ui/musicbrowser/unix/include/gtkmusicbrowser.h 2000/10/03 16:38:15
@@ -325,6 +325,8 @@
void AddTracksPlaylistEvent(vector<PlaylistItem *> *newlist,
bool end = false, bool forcePlay = false,
bool forceNoPlay = false);
+ /// Added by [EMAIL PROTECTED]
+ void PlayInListEvent(vector<PlaylistItem *> *newlist);
void AddTracksDoubleClick(vector<PlaylistItem *> *newlist);
void PlayEvent();
void StartMusicSearch(bool runMain = true, bool intro = false);
Index: ui/musicbrowser/unix/src/browsertree.cpp
===================================================================
RCS file: /src/repository/freeamp/ui/musicbrowser/unix/src/browsertree.cpp,v
retrieving revision 1.32
diff -u -r1.32 browsertree.cpp
--- ui/musicbrowser/unix/src/browsertree.cpp 2000/10/02 08:03:45 1.32
+++ ui/musicbrowser/unix/src/browsertree.cpp 2000/10/03 16:38:16
@@ -1529,6 +1529,12 @@
p->AddTracksPlaylistEvent(newlist, true, true, false);
}
+static void play_in_list_pop(GTKMusicBrowser *p, guint action, GtkWidget *w)
+{
+ vector<PlaylistItem *> *newlist = p->GetTreeSelection();
+ p->PlayInListEvent(newlist);
+}
+
static void remove_pop(GTKMusicBrowser *p, guint action, GtkWidget *w)
{
p->DeleteEvent();
@@ -1636,6 +1642,7 @@
GtkItemFactoryEntry track_items[] = {
{"/Add to Playlist",NULL, (void(*)(...))add_pop, 0, 0 },
{"/Add and Play Now",NULL, (void(*)(...))add_play_pop, 0, 0 },
+ {"/Play in Playlist",NULL, (void(*)(...))play_in_list_pop, 0, 0 },
{"/sep1", NULL, 0, 0, "<Separator>" },
{"/Remove", NULL, (void(*)(...))remove_pop, 0, 0 },
{"/sep2", NULL, 0, 0, "<Separator>" },
Index: ui/musicbrowser/unix/src/gtkmusicbrowser.cpp
===================================================================
RCS file: /src/repository/freeamp/ui/musicbrowser/unix/src/gtkmusicbrowser.cpp,v
retrieving revision 1.118
diff -u -r1.118 gtkmusicbrowser.cpp
--- ui/musicbrowser/unix/src/gtkmusicbrowser.cpp 2000/10/02 08:17:46 1.118
+++ ui/musicbrowser/unix/src/gtkmusicbrowser.cpp 2000/10/03 16:38:17
@@ -1335,6 +1335,45 @@
}
}
+void GTKMusicBrowser::PlayInListEvent(vector<PlaylistItem *> *newlist)
+{
+ if (!newlist)
+ return;
+ if (0<=newlist->size())
+ {
+ // save the first song that was passed
+ vector<PlaylistItem *>::iterator item=newlist->begin();
+ string firsturl;
+ if (*item)
+ {
+ firsturl=(*item)->URL();
+ }
+ // remove items in newlist that exist in the playlist
+ for (; item != newlist->end(); )
+ {
+ if (*item)
+ {
+ if (kInvalidIndex != m_plm->IndexOfURL((*item)->URL()))
+ {
+ item=newlist->erase(item);
+ }
+ else
+ {
+ ++item;
+ }
+ }
+ }
+ // add remaining items in newlist to the end of the playlist
+ if (0<=newlist->size())
+ {
+ AddTracksPlaylistEvent(newlist, true, false, true);
+ }
+ // play first song that was passed
+ m_lastindex=m_plm->IndexOfURL(firsturl);
+ PlayEvent();
+ }
+}
+
void GTKMusicBrowser::AddTracksDoubleClick(vector<PlaylistItem *> *newlist)
{
bool playNow = false;