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

📄 win32musicbrowser.cpp

📁 FreeAMP(MP3播放)程序源代码-用来研究MP3解码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
                    {
                        (*i)->PlaylistListItemAdded(pie->Item());
                        break;
                    }
                }
            }
            
            break; 
        }

        case INFO_PlaylistItemsUpdated:
        {
            PlaylistItemsUpdatedEvent* pie = (PlaylistItemsUpdatedEvent*)event;

            if(pie->Manager() == m_plm)
                PlaylistListItemsUpdated(pie->Items());
            else
            {
                vector<MusicBrowserUI *>::iterator i;

                for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
                {
                    if((*i)->PLManager() == pie->Manager())
                    {
                        (*i)->PlaylistListItemsUpdated(pie->Items());
                        break;
                    }
                }
            }
            
            break; 
        }

        case INFO_PlaylistItemMoved:
        {
            PlaylistItemMovedEvent* pie = (PlaylistItemMovedEvent*)event;

            if(pie->Manager() == m_plm)
                PlaylistListItemMoved(pie->Item(), pie->OldIndex(), pie->NewIndex());
            else
            {
                vector<MusicBrowserUI *>::iterator i;

                for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
                {
                    if((*i)->PLManager() == pie->Manager())
                    {
                        (*i)->PlaylistListItemMoved(pie->Item(), pie->OldIndex(), pie->NewIndex());
                        break;
                    }
                }
            }
          
            break; 
        }

        case INFO_PlaylistItemRemoved:
        {
            PlaylistItemRemovedEvent* pie = (PlaylistItemRemovedEvent*)event;

            if(pie->Manager() == m_plm)
                PlaylistListItemRemoved(pie->Items(), pie->Indices());
            else
            {
                vector<MusicBrowserUI *>::iterator i;

                for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
                {
                    if((*i)->PLManager() == pie->Manager())
                    {
                        (*i)->PlaylistListItemRemoved(pie->Items(), pie->Indices());
                        break;
                    }
                }
            }
          
            break; 
        }
        
        case INFO_PlaylistSorted:
        {
            PlaylistSortedEvent* pie = (PlaylistSortedEvent*)event;

            if(pie->Manager() == m_plm)
                PlaylistListSorted();
            else
            {
                vector<MusicBrowserUI *>::iterator i;

                for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
                {
                    if((*i)->PLManager() == pie->Manager())
                    {
                        (*i)->PlaylistListSorted();
                        break;
                    }
                }
            }
          
            break; 
        }

        case INFO_PlaylistCurrentItemInfo:
        {
            ListView_RedrawItems(m_hPlaylistView, 
                                 m_currentplaying,
                                 m_currentplaying);

            m_currentplaying = m_plm->GetCurrentIndex();

            ListView_RedrawItems(m_hPlaylistView, 
                                 m_currentplaying,
                                 m_currentplaying);
            break; 
        }

        case INFO_SearchMusicDone: 
        {
            vector<MusicBrowserUI *>::iterator i;

            for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
            {
                (*i)->MusicSearchDone();
            }

            MusicSearchDone();
            break; 
        }

        case INFO_BrowserMessage: 
        {
            const char* cancelMsg = "(Press ESC to Cancel)  ";
            string message;

            if(m_bSearchInProgress)
            {
                message = cancelMsg;
            }

            message += ((BrowserMessageEvent *)event)->GetBrowserMessage();

            vector<MusicBrowserUI *>::iterator i;

            for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
            {
                (*i)->DisplayBrowserMessage(message.c_str());
            }

            DisplayBrowserMessage(message.c_str());

            break; 
        }

        case CMD_TogglePlaylistUI: 
        {
            if(m_initialized && isVisible)
            {
                isVisible = false;
            }
            else 
            {
                isVisible = true;

                if(m_initialized)
                {
					ShowBrowser(true);
                }
            }

            if (m_state == STATE_EXPANDED)
                ExpandCollapseEvent();

            break; 
        }

        case CMD_ToggleMusicBrowserUI: 
        {
			if ( isVisible )
			    HideBrowser();
            else
                ShowBrowser(true);
			break; 
        }

        case INFO_PlaylistRepeat:
		{
            PlaylistRepeatEvent* plre = (PlaylistRepeatEvent*)event;

            vector<MusicBrowserUI *>::iterator i;

            for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
            {
                (*i)->ChangeRepeatMode(plre->GetRepeatMode());
            }

            ChangeRepeatMode(plre->GetRepeatMode());
			break;
		}

		case INFO_PlaylistShuffle:
		{
            PlaylistShuffleEvent* plse = (PlaylistShuffleEvent*)event;            

            vector<MusicBrowserUI *>::iterator i;

            for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
            {
                (*i)->ChangeShuffleMode(plse->GetShuffleMode());
            }

            ChangeShuffleMode(plse->GetShuffleMode());
            
			break;
		}

        case INFO_Playing: 
        case INFO_Paused: 
        case INFO_Stopped: 
        {   
            vector<MusicBrowserUI *>::iterator i;

            for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
            {
                (*i)->ChangePlayerState(event->Type());
            }

            ChangePlayerState(event->Type());
                        
	        break; 
        }

        case CMD_AddFiles:
        {
            Int32PropValue *prop;

            if(IsntError(m_context->props->GetProperty("MainWindow", (PropValue **)&prop)))
            {
                HWND hwnd = (HWND)prop->GetInt32();
                bool playNow;

                m_context->prefs->GetPrefBoolean(kPlayImmediatelyPref, &playNow);

                AddFileEvent(hwnd, playNow);
            }
            
            break;
        }

        case CMD_EditCurrentPlaylistItemInfo:
        {
            Int32PropValue *prop;

            if(IsntError(m_context->props->GetProperty("MainWindow", (PropValue **)&prop)))
            {
                HWND hwnd = (HWND)prop->GetInt32();
    
                PlaylistItem* item = m_plm->GetCurrentItem();

                if(item)
                {
                    vector<PlaylistItem*> list;

                    list.push_back(item);

                    EditInfo(list, hwnd);
                }
            }

            break;
        }

        case CMD_GeneratePlaylist:
        {
            GeneratePlaylistEvent *gpe = (GeneratePlaylistEvent *)event;

            vector<PlaylistItem *> SeedList;
            if (gpe->Item() != NULL)
            {
                PlaylistItem plTemp(gpe->Item()->URL().c_str(),
                                    &(gpe->Item()->GetMetaData()));
                SeedList.push_back(&plTemp);
                GenPlaylistEvent(&SeedList);
            }
            else
            {
                GenPlaylistEvent(NULL);
            }
            break;
        }
        case INFO_UnsignaturedTracksExist:
        {
            if (m_context->catalog->GetNumNeedingSigs() > 0) {
                m_sigsExist = true;

                UpdateMenuStates();
                AskSignatureDialog();

                vector<MusicBrowserUI *>::iterator i;
                for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
                    (*i)->AcceptEvent(event);
            }
            break;
        }
        case INFO_SignaturingStarted:
        {
            m_sigsExist = true;
            m_sigsStart = false;

            UpdateMenuStates();

            vector<MusicBrowserUI *>::iterator i;
            for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
                (*i)->AcceptEvent(event);

            break;
        }
        case INFO_SignaturingStopped:
        {
            if (m_context->catalog->GetNumNeedingSigs() > 0)
                m_sigsExist = true;
            else
                m_sigsExist = false;
            m_sigsStart = true;

            UpdateMenuStates();

            vector<MusicBrowserUI *>::iterator i;
            for(i = m_oWindowList.begin(); i != m_oWindowList.end(); i++)
                (*i)->AcceptEvent(event);

            break;
        }
        case INFO_CDNotFound: {
            CDNotFoundEvent *ev = (CDNotFoundEvent *)event;

            if (MessageBox(m_hWnd, mbcdNotFoundMessage, "CD Not Found", 
                MB_YESNO|MB_SETFOREGROUND) == IDYES)
            {
                ShellExecute(m_hParent, "open", ev->URL().c_str(), NULL,
                             NULL, SW_SHOWNORMAL);
            }

            break; } 
        case INFO_DatabaseUpgraded: {
            MessageBox(m_hWnd, dbaseUpgradedMessage, "Database Upgraded",
                       MB_OK|MB_SETFOREGROUND);
            break; }
        default:
            break;
    }
    return kError_NoErr;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -