⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 event.cpp

📁 FreeAMP(MP3播放)程序源代码-用来研究MP3解码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                        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 + -