📄 win32musicbrowser.cpp
字号:
hMenu = GetMenu(m_hWnd);
hMenu = GetSubMenu(hMenu, 0);
sItem.cbSize = sizeof(MENUITEMINFO);
sItem.fMask = MIIM_TYPE;
sItem.fType = MFT_STRING;
sItem.dwTypeData = "Search Computer for &Music...";
sItem.cch = strlen(sItem.dwTypeData);
SetMenuItemInfo(hMenu, ID_FILE_SEARCHFORMUSIC, false, &sItem);
m_bSearchInProgress = false;
TreeView_Expand(m_hMusicView,m_hPlaylistItem, TVE_EXPAND);
TreeView_Expand(m_hMusicView,m_hMyMusicItem, TVE_EXPAND);
AcceptEvent(new CDInfoEvent(0, 0, ""));
m_context->player->UpdateCDNow();
}
void MusicBrowserUI::DisplayBrowserMessage(const char* msg)
{
if (m_initialized)
SendMessage(m_hStatus, SB_SETTEXT, 0, (LPARAM)msg);
}
void MusicBrowserUI::SaveCurrentPlaylist()
{
bool savePlaylist = true;
m_context->prefs->GetPrefBoolean(kSaveCurrentPlaylistOnExitPref, &savePlaylist);
if(savePlaylist)
{
char path[MAX_PATH];
char url[MAX_PATH + 7];
uint32 length = sizeof(path);
m_context->prefs->GetPrefString(kInstallDirPref, path, &length);
strcat(path, "\\freeamp.m3u");
length = sizeof(url);
FilePathToURL(path, url, &length);
m_plm->WritePlaylist(url);
m_context->prefs->SetPrefInt32(kSavedPlaylistPositionPref, m_plm->GetCurrentIndex());
}
}
Error MusicBrowserUI::AcceptEvent(Event *event)
{
switch(event->Type())
{
case INFO_FileNotFound:
{
MissingFileEvent* mfe = (MissingFileEvent*)event;
MissingFileDialog* mf= new MissingFileDialog(m_context,
m_hWnd,
mfe->Item());
mf->Show();
break;
}
case INFO_CDDiscStatus:
{
CDInfoEvent* cie = (CDInfoEvent*)event;
uint32 numTracks = cie->GetNumTracks();
if(m_cdTracks && cie->GetCDDB() != m_cdId)
{
m_cdId = cie->GetCDDB();
m_cdTracks->erase(m_cdTracks->begin(), m_cdTracks->end());
for(uint32 track = 1; track <= numTracks; track++)
{
char url[40];
sprintf(url, "file://%d.cda", track);
PlaylistItem* item = new PlaylistItem(url);
m_cdTracks->push_back(item);
}
if(m_cdTracks->size() > 0)
{
vector<PlaylistItem*>* metalist =
new vector<PlaylistItem*>(m_cdTracks->size());
copy(m_cdTracks->begin(), m_cdTracks->end(), metalist->begin());
m_plm->RetrieveMetaData(metalist);
}
vector<MusicBrowserUI *>::iterator i;
for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
{
(*i)->RefreshCDList(m_cdTracks);
}
RefreshCDList(m_cdTracks);
}
break;
}
case INFO_PrefsChanged:
{
bool useTextLabels, useImages;
m_context->prefs->GetPrefBoolean(kShowToolbarTextLabelsPref, &useTextLabels);
m_context->prefs->GetPrefBoolean(kShowToolbarImagesPref, &useImages);
vector<MusicBrowserUI *>::iterator i;
for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
{
(*i)->AddToolbarButtons(useTextLabels, useImages);
(*i)->UpdateButtonStates();
}
//
// Insert the columns that are specified by the user.
unsigned int size = 100;
char *buffer = (char *)malloc( size );
if(kError_BufferTooSmall == m_context->prefs->GetPrefString(kPlaylistHeaderColumnsPref, buffer, &size))
{
int bufferSize = size;
buffer = (char*)realloc(buffer, bufferSize);
m_context->prefs->GetPrefString(kPlaylistHeaderColumnsPref, buffer, &size);
}
//
// Only recreate the header columns if they've changed.
if ( strcmp( m_columnCache.c_str(), buffer ) == 0 )
break;
// Save new columns.
m_columnCache = buffer;
//
// Remove all the columns in the playlist.
RemoveAllColumns( );
// First column is always inserted.
InsertColumn( "#", 0 );
int columnN = 1;
char *token = strtok( buffer, "|" );
while( token != NULL )
{
InsertColumn( token , columnN );
token = strtok( NULL, "|" );
columnN += 1;
}
free( buffer );
// Resize the columns appropriately
ResizeColumns();
AddToolbarButtons(useTextLabels, useImages);
UpdateButtonStates();
if(m_hPortableItem &&
TreeView_GetChild(m_hMusicView, m_hPortableItem) != NULL)
{
FillPortables();
}
break;
}
case CMD_Cleanup:
{
SaveCurrentPlaylist();
CloseMainDialog();
m_uiThread->Join();
m_playerEQ->AcceptEvent(new Event(INFO_ReadyToDieUI));
break;
}
case INFO_MusicCatalogCleared:
{
vector<MusicBrowserUI *>::iterator i;
for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
{
(*i)->MusicCatalogCleared();
}
MusicCatalogCleared();
break;
}
case INFO_MusicCatalogTrackChanged:
{
MusicCatalogTrackChangedEvent* pie = (MusicCatalogTrackChangedEvent*)event;
vector<MusicBrowserUI *>::iterator i;
for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
{
(*i)->MusicCatalogTrackChanged(pie->OldArtist(),
pie->NewArtist(),
pie->OldAlbum(),
pie->NewAlbum(),
pie->OldItem(),
pie->NewItem());
}
MusicCatalogTrackChanged(pie->OldArtist(),
pie->NewArtist(),
pie->OldAlbum(),
pie->NewAlbum(),
pie->OldItem(),
pie->NewItem());
break;
}
case INFO_MusicCatalogStreamAdded:
{
MusicCatalogStreamAddedEvent* pie = (MusicCatalogStreamAddedEvent*)event;
vector<MusicBrowserUI *>::iterator i;
for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
{
(*i)->MusicCatalogStreamAdded(pie->Item());
}
MusicCatalogStreamAdded(pie->Item());
break;
}
case INFO_MusicCatalogStreamRemoved:
{
MusicCatalogStreamRemovedEvent* pie = (MusicCatalogStreamRemovedEvent*)event;
vector<MusicBrowserUI *>::iterator i;
for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
{
(*i)->MusicCatalogStreamRemoved(pie->Item());
}
MusicCatalogStreamRemoved(pie->Item());
break;
}
case INFO_MusicCatalogTrackAdded:
{
MusicCatalogTrackAddedEvent* pie = (MusicCatalogTrackAddedEvent*)event;
vector<MusicBrowserUI *>::iterator i;
for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
{
(*i)->MusicCatalogTrackAdded(pie->Artist(), pie->Album(), pie->Item());
}
MusicCatalogTrackAdded(pie->Artist(), pie->Album(), pie->Item());
break;
}
case INFO_MusicCatalogTrackRemoved:
{
MusicCatalogTrackRemovedEvent* pie = (MusicCatalogTrackRemovedEvent*)event;
vector<MusicBrowserUI *>::iterator i;
for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
{
(*i)->MusicCatalogTrackRemoved(pie->Artist(), pie->Album(), pie->Item());
}
MusicCatalogTrackRemoved(pie->Artist(), pie->Album(), pie->Item());
break;
}
case INFO_MusicCatalogPlaylistAdded:
{
MusicCatalogPlaylistAddedEvent* pie = (MusicCatalogPlaylistAddedEvent*)event;
vector<MusicBrowserUI *>::iterator i;
for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
{
(*i)->MusicCatalogPlaylistAdded(pie->Item());
}
MusicCatalogPlaylistAdded(pie->Item());
break;
}
case INFO_MusicCatalogPlaylistRemoved:
{
MusicCatalogPlaylistRemovedEvent* pie = (MusicCatalogPlaylistRemovedEvent*)event;
vector<MusicBrowserUI *>::iterator i;
for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
{
(*i)->MusicCatalogPlaylistRemoved(pie->Item());
}
MusicCatalogPlaylistRemoved(pie->Item());
break;
}
case INFO_PlaylistItemsAdded:
{
PlaylistItemsAddedEvent* pie = (PlaylistItemsAddedEvent*)event;
if(pie->Manager() == m_plm)
PlaylistListItemsAdded(pie->Items());
else
{
vector<MusicBrowserUI *>::iterator i;
for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
{
if((*i)->PLManager() == pie->Manager())
{
(*i)->PlaylistListItemsAdded(pie->Items());
break;
}
}
}
break;
}
case INFO_PlaylistItemAdded:
{
PlaylistItemAddedEvent* pie = (PlaylistItemAddedEvent*)event;
if(pie->Manager() == m_plm)
PlaylistListItemAdded(pie->Item());
else
{
vector<MusicBrowserUI *>::iterator i;
for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
{
if((*i)->PLManager() == pie->Manager())
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -