📄 musictree.cpp
字号:
TreeView_Expand(m_hMusicView, albumItem, TVE_EXPAND);
//trackItem = FindTrack(albumItem, oldItem);
}
}
}
}
/*
// is this in the uncatagorized section?
if(!oldArtist)
{
//trackItem = FindTrack(m_hUncatItem, newItem);
}
else
{
artistItem = FindArtist(newArtist);
if(artistItem)
{
if(artistState & TVIS_EXPANDED)
TreeView_Expand(m_hMusicView, artistItem, TVE_EXPAND);
albumItem = FindAlbum(artistItem, newAlbum);
if(albumItem)
{
if(albumState & TVIS_EXPANDED)
TreeView_Expand(m_hMusicView, albumItem, TVE_EXPAND);
//trackItem = FindTrack(albumItem, oldItem);
}
}
}
*/
}
void MusicBrowserUI::MusicCatalogTrackAdded(const ArtistList* artist,
const AlbumList* album,
const PlaylistItem* item)
{
const MetaData meta = item->GetMetaData();
HTREEITEM newItem = NULL;
// can we catagorize this track?
if(!artist)
{
if(m_hUncatItem)
{
// nope, stick in uncatagorized
TV_INSERTSTRUCT insert;
TreeData data;
MetaData metadata;
TV_ITEM tv_item;
tv_item.hItem = m_hUncatItem;
tv_item.mask = TVIF_CHILDREN;
tv_item.cChildren = 1;
TreeView_SetItem(m_hMusicView, &tv_item);
insert.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_CHILDREN |
TVIF_SELECTEDIMAGE | TVIF_PARAM;
data.m_iLevel = 3;
data.m_pArtist = NULL;
data.m_pAlbum = NULL;
data.m_pTrack = (PlaylistItem*)item;
metadata = item->GetMetaData();
if (metadata.Title() == string(" ") ||
metadata.Title().length() == 0)
insert.item.pszText = "Unknown";
else
insert.item.pszText = (char *)(metadata.Title().c_str());
insert.item.cchTextMax = metadata.Title().length();
insert.item.iImage = 4;
insert.item.iSelectedImage = 4;
insert.item.cChildren= 0;
insert.item.lParam = (LPARAM) new TreeData(data);
insert.hInsertAfter = TVI_SORT;
insert.hParent = m_hUncatItem;
newItem = TreeView_InsertItem(m_hMusicView, &insert);
}
}
else
{
// yep, search for it
HTREEITEM artistItem = NULL, albumItem = NULL;
artistItem = FindArtist(artist);
if(artistItem)
{
albumItem = FindAlbum(artistItem, album);
if(albumItem)
{
if(TreeView_GetChild(m_hMusicView, albumItem))
{
TV_INSERTSTRUCT insert;
TreeData data;
MetaData metadata;
insert.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_CHILDREN |
TVIF_SELECTEDIMAGE | TVIF_PARAM;
data.m_iLevel = 3;
data.m_pArtist = (ArtistList*)artist;
data.m_pAlbum = (AlbumList*)album;
data.m_pTrack = (PlaylistItem*)item;
metadata = item->GetMetaData();
ostringstream ost;
if(metadata.Track() == 0)
ost << "?. ";
else
ost << metadata.Track() << ". ";
ost << metadata.Title();
string title = ost.str();
if(metadata.Title() == string(" ") ||
metadata.Title().length() == 0)
insert.item.pszText = "Unknown";
else
insert.item.pszText = (char *)(title.c_str());
/*if (metadata.Title() == string(" ") ||
metadata.Title().length() == 0)
insert.item.pszText = "Unknown";
else
insert.item.pszText = (char *)(metadata.Title().c_str());*/
insert.item.cchTextMax = strlen(insert.item.pszText);
insert.item.iImage = 4;
insert.item.iSelectedImage = 4;
insert.item.cChildren= 0;
insert.item.lParam = (LPARAM) new TreeData(data);
insert.hInsertAfter = TVI_LAST;
insert.hParent = albumItem;
TV_ITEM tv_item;
HTREEITEM sibling = NULL;
tv_item.mask = TVIF_PARAM;
if(tv_item.hItem = TreeView_GetChild(m_hMusicView, albumItem))
{
BOOL success;
do
{
success = TreeView_GetItem(m_hMusicView, &tv_item);
if(success)
{
TreeData* treedata = (TreeData*)tv_item.lParam;
if(treedata)
{
if(metadata.Track())
{
if(treedata->m_pTrack->GetMetaData().Track() >
metadata.Track())
{
if(sibling)
insert.hInsertAfter = sibling;
else
insert.hInsertAfter = TVI_FIRST;
break;
}
}
else
{
if(treedata->m_pTrack->GetMetaData().Title() >
metadata.Title() )
{
if(sibling)
insert.hInsertAfter = sibling;
else
insert.hInsertAfter = TVI_FIRST;
break;
}
}
}
}
sibling = tv_item.hItem;
}while(success &&
(tv_item.hItem = TreeView_GetNextSibling(m_hMusicView,
tv_item.hItem)));
}
newItem = TreeView_InsertItem(m_hMusicView, &insert);
}
}
else // might need to add the album
{
if(TreeView_GetChild(m_hMusicView, artistItem))
{
TV_INSERTSTRUCT insert;
TreeData data;
insert.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_CHILDREN |
TVIF_SELECTEDIMAGE | TVIF_PARAM;
data.m_iLevel = 2;
data.m_pArtist = (ArtistList*)artist;
data.m_pAlbum = (AlbumList*)album;
if (album->name == string(" ") ||
album->name.length() == 0)
insert.item.pszText = "Unknown";
else
insert.item.pszText = (char *)album->name.c_str();
insert.item.cchTextMax = album->name.length();
insert.item.iImage = 3;
insert.item.iSelectedImage = 3;
insert.item.cChildren= 1;
insert.item.lParam = (LPARAM) new TreeData(data);
insert.hInsertAfter = TVI_SORT;
insert.hParent = artistItem;
newItem = TreeView_InsertItem(m_hMusicView, &insert);
}
}
}
else // might need to add the artist
{
HTREEITEM root = TreeView_GetRoot(m_hMusicView);
TV_ITEM tv_item;
tv_item.hItem = root;
tv_item.mask = TVIF_STATE;
tv_item.stateMask = TVIS_EXPANDEDONCE;
tv_item.state = 0;
TreeView_GetItem(m_hMusicView, &tv_item);
if(tv_item.state & TVIS_EXPANDEDONCE)
{
TV_INSERTSTRUCT insert;
TreeData data;
insert.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_CHILDREN |
TVIF_SELECTEDIMAGE | TVIF_PARAM;
data.m_iLevel = 1;
data.m_pArtist = (ArtistList*)artist;
insert.item.pszText = (char*)artist->name.c_str();
insert.item.cchTextMax = artist->name.length();
insert.item.iImage = 2;
insert.item.iSelectedImage = 2;
insert.item.cChildren= 1;
insert.item.lParam = (LPARAM) new TreeData(data);
insert.hInsertAfter = TVI_LAST;
insert.hParent = m_hMyMusicItem;
TV_ITEM tv_item;
HTREEITEM sibling = m_hUncatItem;
tv_item.mask = TVIF_PARAM;
if(tv_item.hItem = TreeView_GetNextSibling(m_hMusicView, m_hUncatItem))
{
BOOL success;
do
{
success = TreeView_GetItem(m_hMusicView, &tv_item);
if(success)
{
TreeData* treedata = (TreeData*)tv_item.lParam;
if(treedata)
{
ArtistList* artist2 = treedata->m_pArtist;
if(lstrcmp(artist2->name.c_str(), artist->name.c_str()) > 0)
{
insert.hInsertAfter = sibling;
break;
}
}
}
sibling = tv_item.hItem;
}while(success &&
(tv_item.hItem = TreeView_GetNextSibling(m_hMusicView,
tv_item.hItem)));
}
newItem = TreeView_InsertItem(m_hMusicView, &insert);
}
}
}
//TreeView_EnsureVisible(m_hMusicView, newItem);
// put it under "All Tracks"
if(TreeView_GetChild(m_hMusicView, m_hAllItem))
{
if(m_hAllItem)
{
TV_INSERTSTRUCT insert;
TreeData data;
MetaData metadata;
TV_ITEM tv_item;
tv_item.hItem = m_hAllItem;
tv_item.mask = TVIF_CHILDREN;
tv_item.cChildren = 1;
TreeView_SetItem(m_hMusicView, &tv_item);
insert.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_CHILDREN |
TVIF_SELECTEDIMAGE | TVIF_PARAM;
data.m_iLevel = 3;
data.m_pArtist = (ArtistList*)artist;
data.m_pAlbum = (AlbumList*)album;
data.m_pTrack = (PlaylistItem*)item;
metadata = item->GetMetaData();
if (metadata.Title() == string(" ") ||
metadata.Title().length() == 0)
insert.item.pszText = "Unknown";
else
insert.item.pszText = (char *)(metadata.Title().c_str());
insert.item.cchTextMax = metadata.Title().length();
insert.item.iImage = 4;
insert.item.iSelectedImage = 4;
insert.item.cChildren= 0;
insert.item.lParam = (LPARAM) new TreeData(data);
insert.hInsertAfter = TVI_SORT;
insert.hParent = m_hAllItem;
TreeView_InsertItem(m_hMusicView, &insert);
}
}
}
void MusicBrowserUI::MusicCatalogTrackRemoved(const ArtistList* artist,
const AlbumList* album,
const PlaylistItem* item)
{
HTREEITEM artistItem = NULL;
HTREEITEM albumItem = NULL;
HTREEITEM trackItem = NULL;
bool uncatagorized = false;
// is this in the uncatagorized section?
if(!artist)
{
trackItem = FindTrack(m_hUncatItem, item);
uncatagorized = true;
}
else
{
artistItem = FindArtist(artist);
if(artistItem)
{
albumItem = FindAlbum(artistItem, album);
if(albumItem)
{
trackItem = FindTrack(albumItem, item);
}
}
}
if(trackItem)
{
TreeView_DeleteItem(m_hMusicView, trackItem);
if(uncatagorized)
{
if(!TreeView_GetChild(m_hMusicView, m_hUncatItem))
{
TV_ITEM tv_item;
tv_item.hItem = m_hUncatItem;
tv_item.mask = TVIF_CHILDREN;
tv_item.cChildren = 0;
TreeView_SetItem(m_hMusicView, &tv_item);
}
}
}
if(albumItem && !TreeView_GetChild(m_hMusicView, albumItem)
/*!album->m_trackList->size()*/)
{
TreeView_DeleteItem(m_hMusicView, albumItem);
}
if(artistItem && !TreeView_GetChild(m_hMusicView, artistItem)
/*!artist->m_albumList->size()*/)
{
TreeView_DeleteItem(m_hMusicView, artistItem);
}
trackItem = FindTrack(m_hAllItem, item);
if(trackItem)
{
TreeView_DeleteItem(m_hMusicView, trackItem);
if(!TreeView_GetChild(m_hMusicView, m_hUncatItem))
{
TV_ITEM tv_item;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -