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

📄 edittrackinfodialog.cpp

📁 FreeAMP(MP3播放)程序源代码-用来研究MP3解码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
                        {
                            notJustWhiteSpace = true;
                            break;
                        }
                    }

                    if(notJustWhiteSpace)
                        ComboBox_AddString(hwndAlbum, (*i).c_str());
                }
            }

            ComboBox_SetText(hwndAlbum, m_editMetaData->Album().c_str());

            // add genres
            for(i = genres.begin(); i != genres.end(); i++)
            {
                uint32 length = (*i).size();

                if(length)
                {
                    bool notJustWhiteSpace = false;

                    for(uint32 index = 0; index < length; index++)
                    {
                        if(!isspace((*i)[index]))
                        {
                            notJustWhiteSpace = true;
                            break;
                        }
                    }

                    if(notJustWhiteSpace)
                        ComboBox_AddString(hwndGenre, (*i).c_str());
                }
            }

            ComboBox_SetText(hwndGenre, m_editMetaData->Genre().c_str());
  
            break;
        }      

        case WM_HELP:
        {
            ShowHelp(m_context, Edit_Info);
            result = TRUE;
            break;
        }

        case WM_COMMAND:
        {
            switch(LOWORD(wParam))
            {
			    case IDC_BUTTON_MB:
				{
					if (m_editMetaData->GUID() == "") 
					{
                        string caption = "No Signature Found";
                        string message = "This track does not have a Relatable Signature "
                                         "associated with it.  To look up this track on the "
                                         "MusicBrainz server, you need to enable a Relatable "
                                         "Profile and signature your music collection.";

                        MessageBox(NULL, message.c_str(), caption.c_str(), MB_OK|MB_SETFOREGROUND);
					}
					else {
                        string url = "http://www.musicbrainz.org/showguid.html?guid=";
   
                        char ascii_uuid[37];
                        uuid_t1 uu;

                        memset(uu, '\0', 17 * sizeof(unsigned char));
                        strncpy((char *)uu, m_editMetaData->GUID().c_str(), 16);
                        uuid_ascii(uu, ascii_uuid);

                        url += ascii_uuid;

                        ShellExecute(hwnd, "open", url.c_str(), NULL, NULL, SW_SHOWNORMAL);
					}
				    break;
				}
                case IDHELP:
                {
                    ShowHelp(m_context, Edit_Info);
                    break;
                }

                case IDCANCEL:
                    EndDialog(hwnd, FALSE);
                    break;

                case IDOK:
                {
                    HWND hwndArtist = GetDlgItem(hwnd, IDC_ARTIST);
                    HWND hwndAlbum = GetDlgItem(hwnd, IDC_ALBUM);
                    HWND hwndGenre = GetDlgItem(hwnd, IDC_GENRE);
                    HWND hwndTitle = GetDlgItem(hwnd, IDC_TITLE);
                    HWND hwndTrack = GetDlgItem(hwnd, IDC_TRACK);
                    HWND hwndYear = GetDlgItem(hwnd, IDC_YEAR);
                    HWND hwndComment = GetDlgItem(hwnd, IDC_COMMENT);
                    HWND hwndPlayCount = GetDlgItem(hwnd, IDC_PLAYCOUNT);
                    uint32 length;
                    char* data;
                    char number[64];

                    length = ComboBox_GetTextLength(hwndArtist) + 1;
                    data = new char[length];
                    ComboBox_GetText(hwndArtist, data, length);
                    m_editMetaData->SetArtist(data);
                    delete [] data;

                    length = ComboBox_GetTextLength(hwndAlbum) + 1;
                    data = new char[length];
                    ComboBox_GetText(hwndAlbum, data, length);
                    m_editMetaData->SetAlbum(data);
                    delete [] data;

                    length = ComboBox_GetTextLength(hwndGenre) + 1;
                    data = new char[length];
                    ComboBox_GetText(hwndGenre, data, length);
                    m_editMetaData->SetGenre(data);
                    delete [] data;

                    length = Edit_GetTextLength(hwndTitle) + 1;
                    data = new char[length];
                    Edit_GetText(hwndTitle, data, length);
                    m_editMetaData->SetTitle(data);
                    delete [] data;

                    length = Edit_GetTextLength(hwndComment) + 1;
                    data = new char[length];
                    Edit_GetText(hwndComment, data, length);
                    m_editMetaData->SetComment(data);
                    delete [] data;

                    Edit_GetText(hwndTrack, number, sizeof(number));

                    if(!strcmp(number, "Unknown"))
                        strcpy(number, "0");
                    else if(!strcmp(number, "<Multiple>"))
                        strcpy(number, "-1");

                    m_editMetaData->SetTrack(atoi(number));

                    Edit_GetText(hwndYear, number, sizeof(number));

                    if(!strcmp(number, "Unknown"))
                        strcpy(number, "0");
                    else if(!strcmp(number, "<Multiple>"))
                        strcpy(number, "-1");

                    m_editMetaData->SetYear(atoi(number));

                    // deal with playcount attribute
                    Edit_GetText(hwndPlayCount, number, sizeof(number));

                    if(!strcmp(number, "Unknown"))
                        strcpy(number, "0");
                    else if(!strcmp(number, "<Multiple>"))
                        strcpy(number, "-1");

                    m_editMetaData->SetPlayCount(atoi(number));
                    
                    EndDialog(hwnd, TRUE);
                    break;
                }

                case IDC_TRACK:
                case IDC_YEAR:
                {
                    if(HIWORD(wParam) == EN_CHANGE)
                    {
                        char track[6];

                        Edit_GetText( (HWND)lParam, 
                                      track,
                                      sizeof(track));

                        if(!strcmp(track, "0"))
                        {
                            Edit_SetText((HWND)lParam, "Unknown");
                        }
                    }
                    break;
                }                
            }
  
            break;
        }
    }

    return result;
}

void EditTrackInfoDialog::CreateEditInfoLists(set<string>& artists,
                                              set<string>& albums,
                                              set<string>& genres)
{
    vector<ArtistList*>::const_iterator   artist;    

    for(artist = m_artistList->begin(); 
        artist != m_artistList->end(); 
        artist++)
    {
        vector<AlbumList*>::iterator album;

        artists.insert((*artist)->name);

        for(album = (*artist)->m_albumList->begin();
            album != (*artist)->m_albumList->end();
            album++)
        {
            vector<PlaylistItem*>::iterator track;

            albums.insert((*album)->name);

            for(track = (*album)->m_trackList->begin();
                track != (*album)->m_trackList->end();
                track++)
            {
                MetaData metadata = (*track)->GetMetaData();

                genres.insert(metadata.Genre());
            }
        }
    }
}

⌨️ 快捷键说明

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