📄 event.cpp
字号:
else if(treedata->IsPlaylist())
{
// just change the title for this playlist
UpdatePlaylistName(treedata->m_oPlaylistPath,
tv_item.pszText);
}
else if(treedata->IsAlbum())
{
// need to change the album for all tracks in album
UpdateAlbumName(treedata->m_pAlbum,
tv_item.pszText);
}
else if(treedata->IsArtist())
{
// need to change the artist for all albums
// and tracks by this artist
UpdateArtistName(treedata->m_pArtist,
tv_item.pszText);
}
else if(treedata->IsUncatagorized())
{
// just change the title for this song
UpdateUncatagorizedTrackName(treedata->m_pTrack,
tv_item.pszText);
}
}
if(treedata->IsTrack())
{
ostringstream ost;
if(treedata->m_pTrack->GetMetaData().Track() == 0)
ost << "?. ";
else
ost << treedata->m_pTrack->GetMetaData().Track() << ". ";
if(tv_item.pszText)
ost << tv_item.pszText;
else
ost << treedata->m_pTrack->GetMetaData().Title();
string title = ost.str();
if(!tv_item.pszText &&
treedata->m_pTrack->GetMetaData().Title() == string(" ") ||
treedata->m_pTrack->GetMetaData().Title().length() == 0)
tv_item.pszText = "Unknown";
else
tv_item.pszText = (char *)(title.c_str());
tv_item.mask = TVIF_HANDLE | TVIF_TEXT;
tv_item.cchTextMax = strlen(tv_item.pszText);
TreeView_SetItem(m_hMusicView, &tv_item);
result = FALSE;
}
}
break;
}
case TVN_ITEMEXPANDING:
{
if(!TreeView_GetChild(m_hMusicView,
pTreeView->itemNew.hItem))
{
TreeData* treedata = (TreeData*)pTreeView->itemNew.lParam;
if(pTreeView->itemNew.hItem == m_hMyMusicItem)
{
FillArtists();
}
else if(pTreeView->itemNew.hItem == m_hAllItem)
{
m_fillAllThread = Thread::CreateThread();
m_fillAllThread->Create(MusicBrowserUI::fill_all_tracks, this);
}
else if(pTreeView->itemNew.hItem == m_hUncatItem)
{
FillUncatTracks();
}
else if(treedata && treedata->GetLevel() == 1)
{
FillAlbums(&pTreeView->itemNew);
}
else if(treedata && treedata->GetLevel() == 2)
{
FillTracks(&pTreeView->itemNew);
}
else if(pTreeView->itemNew.hItem == m_hPlaylistItem)
{
FillPlaylists();
}
else if(pTreeView->itemNew.hItem == m_hStreamsItem)
{
FillStreams();
}
else if(pTreeView->itemNew.hItem == m_hFavoritesItem)
{
FillFavorites();
}
else if(pTreeView->itemNew.hItem == m_hPortableItem)
{
FillPortables();
}
else if(pTreeView->itemNew.hItem == m_hRelatableItem)
{
FillRelatable();
}
}
break;
}
case TVN_SELCHANGED:
{
UpdateButtonStates();
break;
}
case NM_DBLCLK:
{
/*int32 lParam;
lParam = GetCurrentItemFromMousePos();
TV_ITEM tv_item;
TV_HITTESTINFO tv_htinfo;
GetCursorPos(&tv_htinfo.pt);
ScreenToClient(m_hMusicView, &tv_htinfo.pt);
if(TreeView_HitTest(m_hMusicView, &tv_htinfo))
{
tv_item.hItem = TreeView_GetSelection(m_hMusicView);
tv_item.mask = TVIF_PARAM | TVIF_HANDLE;
TreeView_GetItem(m_hMusicView, &tv_item);
TreeData* treedata = (TreeData*)tv_item.lParam;
if(treedata->IsTrack())
{
PlaylistItem *item;
item = new PlaylistItem(*treedata->m_pTrack);
m_plm->AddItem(item, false);
}
else if(treedata->IsPlaylist())
{
m_plm->ReadPlaylist(treedata->m_oPlaylistPath.c_str());
}
else if(treedata->IsPortable())
{
EditPortablePlaylist(treedata->m_pPortable);
}
else if(tv_htinfo.hItem == m_hNewPlaylistItem)
{
NewPlaylist();
}
else if(tv_htinfo.hItem == m_hNewPortableItem)
{
m_context->target->AcceptEvent(new ShowPreferencesEvent(3));
}
}*/
break;
}
case NM_RCLICK:
{
HMENU mainMenu, cdMenu, streamMenu;
HMENU subMenu;
POINT sPoint;
uint32 trackCount = 0;
uint32 playlistCount = 0;
trackCount = GetSelectedTrackCount();
playlistCount = GetSelectedPlaylistCount();
GetCursorPos(&sPoint);
TV_HITTESTINFO tv_htinfo;
tv_htinfo.pt = sPoint;
ScreenToClient(m_hMusicView, &tv_htinfo.pt);
TreeView_HitTest(m_hMusicView, &tv_htinfo);
mainMenu = LoadMenu(g_hinst, MAKEINTRESOURCE(IDR_TVPOPUP));
cdMenu = LoadMenu(g_hinst, MAKEINTRESOURCE(IDR_TVPOPUP1));
streamMenu = LoadMenu(g_hinst, MAKEINTRESOURCE(IDR_TVPOPUP2));
if(tv_htinfo.hItem == m_hStreamsItem ||
TreeView_GetParent(m_hMusicView, tv_htinfo.hItem) == m_hStreamsItem ||
TreeView_GetParent(m_hMusicView, TreeView_GetParent(m_hMusicView, tv_htinfo.hItem)) == m_hStreamsItem)
{
subMenu = GetSubMenu(streamMenu, 0);
if(tv_htinfo.hItem == m_hStreamsItem)
{
EnableMenuItem(subMenu, ID_POPUP_ADDTRACK, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(subMenu, ID_POPUP_ADDTRACK_PLAY, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(subMenu, ID_POPUP_FAVORITE, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(subMenu, ID_POPUP_VISITWEB, MF_BYCOMMAND|MF_GRAYED);
}
if(tv_htinfo.hItem == m_hFavoritesItem ||
TreeView_GetParent(m_hMusicView, tv_htinfo.hItem) == m_hFavoritesItem)
{
DeleteMenu(subMenu, 2, MF_BYPOSITION);
DeleteMenu(subMenu, 2, MF_BYPOSITION);
DeleteMenu(subMenu, ID_POPUP_VISITWEB, MF_BYCOMMAND);
if(tv_htinfo.hItem == m_hFavoritesItem ||
tv_htinfo.hItem == m_hNewFavoritesItem)
{
EnableMenuItem(subMenu, ID_POPUP_RENAME, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(subMenu, ID_POPUP_REMOVEFAVORITE, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(subMenu, ID_POPUP_EDITSTREAMINFO, MF_BYCOMMAND|MF_GRAYED);
if(tv_htinfo.hItem == m_hNewFavoritesItem)
{
EnableMenuItem(subMenu, ID_POPUP_ADDTRACK, MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(subMenu, ID_POPUP_ADDTRACK_PLAY, MF_BYCOMMAND|MF_GRAYED);
}
}
}
else
{
DeleteMenu(subMenu, 4, MF_BYPOSITION);
DeleteMenu(subMenu, 4, MF_BYPOSITION);
DeleteMenu(subMenu, 4, MF_BYPOSITION);
DeleteMenu(subMenu, 4, MF_BYPOSITION);
DeleteMenu(subMenu, 4, MF_BYPOSITION);
}
}
else if(tv_htinfo.hItem == m_hCDItem ||
TreeView_GetParent(m_hMusicView, tv_htinfo.hItem) == m_hCDItem)
{
subMenu = GetSubMenu(cdMenu, 0);
}
else
{
subMenu = GetSubMenu(mainMenu, 0);
if(m_pParent)
{
DeleteMenu(subMenu, ID_POPUP_ADDTRACK_PLAY, MF_BYCOMMAND);
}
if( IsItemSelected(m_hMyMusicItem) ||
IsItemSelected(m_hPlaylistItem) ||
IsItemSelected(m_hAllItem) ||
IsItemSelected(m_hUncatItem) ||
(IsItemSelected(m_hNewPlaylistItem) && !(playlistCount + trackCount)))
{
EnableMenuItem(subMenu,
ID_POPUP_REMOVE,
MF_BYCOMMAND|MF_GRAYED);
}
if( playlistCount > 1 ||
IsItemSelected(m_hMyMusicItem) ||
IsItemSelected(m_hPlaylistItem) ||
IsItemSelected(m_hAllItem) ||
IsItemSelected(m_hUncatItem) ||
(IsItemSelected(m_hNewPlaylistItem) && !(playlistCount + trackCount)))
{
EnableMenuItem(subMenu,
ID_POPUP_EDITINFO,
MF_BYCOMMAND|MF_GRAYED);
}
if( trackCount > 1 ||
playlistCount > 1 || (trackCount && playlistCount) ||
IsItemSelected(m_hMyMusicItem) ||
IsItemSelected(m_hPlaylistItem) ||
IsItemSelected(m_hAllItem) ||
IsItemSelected(m_hUncatItem) ||
IsItemSelected(m_hNewPlaylistItem))
{
EnableMenuItem(subMenu,
ID_POPUP_RENAME,
MF_BYCOMMAND|MF_GRAYED);
}
if(trackCount == 0)
{
EnableMenuItem(subMenu,
ID_POPUP_EDITINFO,
MF_BYCOMMAND|MF_GRAYED);
if( IsItemSelected(m_hNewPlaylistItem) &&
playlistCount == 1)
{
EnableMenuItem(subMenu,
ID_POPUP_ADDTRACK,
MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(subMenu,
ID_POPUP_ADDTRACK_PLAY,
MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(subMenu,
ID_POPUP_REMOVE,
MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(subMenu,
ID_POPUP_RENAME,
MF_BYCOMMAND|MF_GRAYED);
EnableMenuItem(subMenu,
ID_POPUP_EDITPLAYLIST,
MF_BYCOMMAND|MF_GRAYED);
}
}
if(!playlistCount || trackCount)
{
DeleteMenu(subMenu, ID_POPUP_EDITPLAYLIST, MF_BYCOMMAND);
}
}
TrackPopupMenu(subMenu,
TPM_LEFTALIGN|TPM_RIGHTBUTTON,
sPoint.x, sPoint.y,
0, m_hWnd, NULL);
DestroyMenu(mainMenu);
DestroyMenu(cdMenu);
DestroyMenu(streamMenu);
break;
}
/*case ??:
{
TV_HITTESTINFO sHit;
HTREEITEM hItem;
POINT sPoint;
sHit.flags = TVHT_ONITEM;
GetCursorPos(&sPoint);
ScreenToClient(m_hWnd, &sPoint);
ClientToWindow(m_hWnd, &sPoint);
sHit.pt = sPoint;
hItem = TreeView_HitTest(m_hMusicView, &sHit);
if (hItem == m_hPlaylistItem)
SendMessage(m_hStatus, SB_SETTEXT, 0,
(LPARAM)"This tree item contains all of your playlists.");
else
if (hItem == m_hMyMusicItem)
SendMessage(m_hStatus, SB_SETTEXT, 0,
(LPARAM)"This tree item contains all of your music.");
else
if (hItem == m_hAllItem)
SendMessage(m_hStatus, SB_SETTEXT, 0,
(LPARAM)"This tree item lists all of your music tracks.");
else
if (hItem == m_hUncatItem)
SendMessage(m_hStatus, SB_SETTEXT, 0,
(LPARAM)"This tree item lists all of your uncategorized music tracks.");
else
SendMessage(m_hStatus, SB_SETTEXT, 0, (LPARAM)"");
break;
}*/
}
}
else if(pHdr->idFrom == IDC_PLAYLISTBOX)
{
NM_LISTVIEW* pListView = (NM_LISTVIEW*)pHdr;
switch(pListView->hdr.code)
{
case LVN_BEGINDRAG:
{
LVBeginDrag(m_hPlaylistView, pListView);
break;
}
case NM_RCLICK:
{
HMENU menu;
HMENU subMenu;
POINT sPoint;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -