BOOL CALLBACK MediaPropProc_SimpleTag(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { #if 0 //TRACE("Simple Tag Tab Msg: %X wParam: %i lParam: %i \n", uMsg, wParam, lParam); CRASH_PROTECT_START; //Get the dialog data MatroskaPages *pageData = (MatroskaPages *)GetWindowLong(hwndDlg, DWL_USER); switch(uMsg) { case WM_INITDIALOG: { INITCOMMONCONTROLSEX common; common.dwICC = ICC_DATE_CLASSES; common.dwSize = sizeof(common); InitCommonControlsEx(&common); SendDlgItemMessage(hwndDlg, IDC_SPIN_TAG_RATING, UDM_SETRANGE, 0, (LPARAM)MAKELONG((short)10, (short)-10)); //Store the MatroskaPages struct in the DWL_USER SetWindowLong(hwndDlg, DWL_USER, (LONG)lParam); pageData = (MatroskaPages *)lParam; #ifdef MATROSKA_PROP MoreData *pm; // When the shell creates a dialog box for a property sheet page, // it passes the pointer to the PROPSHEETPAGE data structure as // lParam. The dialog procedures of extensions typically store it // in the DWL_USER of the dialog box window. SetWindowLong(hwndDlg, DWL_USER, lParam); pm = (MoreData *)lParam; pageData = pm->pObjPageData; pageData->AddRef(); //Store the Matroska Infomation dialog handle pageData->g_hSimpleTagDialog = hwndDlg; //Store the MatroskaPages struct in the DWL_USER SetWindowLong(hwndDlg, DWL_USER, (LONG)pageData); ODS("Displaying Tag Tab"); if ((pageData->parser == NULL) || !pageData->parser->found_tags) { delete pageData->parser; pageData->parser = new MatroskaInfoParser(pm->pObjPageData->szFile); pageData->parser->m_parseSeekHead = true; pageData->parser->m_parseAttachments = true; pageData->parser->m_parseTags = true; ParseFileMT(pageData, hwndDlg); //pageData->parser->ParseFile(); } DisplaySimpleTagTrackList(pageData->g_hSimpleTagDialog, pageData->parser); // Update the tabs if (pageData->g_hInfoDialog != NULL) DisplayMainTrackList(pageData->g_hInfoDialog, pageData->parser); if (pageData->g_hAttachmentDialog != NULL) DisplayAttachmentList(pageData->g_hAttachmentDialog, pageData->parser); if (pageData->g_hTagDialog != NULL) DisplayTagEntryList(pageData->g_hTagDialog, pageData->parser); #endif return TRUE; break; } case WM_DESTROY: { #ifdef MATROSKA_PROP pageData->Release(); #endif // MATROSKA_PROP break; } case WM_COMMAND: { switch (LOWORD(wParam)) { /* Find which control the message applies to */ case IDC_COMBO_TAG_SIMPLE_TRACKS: { switch (HIWORD(wParam)) { case CBN_SELCHANGE: { HWND hwndTrackCombo; int nItem = 0; MatroskaTrackInfo *selected_track = NULL; hwndTrackCombo = GetDlgItem(hwndDlg, IDC_COMBO_TAG_SIMPLE_TRACKS); nItem = SendMessage(hwndTrackCombo, CB_GETCURSEL, 0, 0); selected_track = reinterpret_cast<MatroskaTrackInfo *>(SendMessage(hwndTrackCombo, CB_GETITEMDATA, (nItem), 0)); if ((selected_track != NULL) && (nItem != -1)) { JString tagString; tagString.clear(); //Fill out the Track Info fields tagString = JString(_W("Track UID")) + JString::Format(L": %u", selected_track->GetTrackUID()); SetDlgItemText(hwndDlg, IDC_STATIC_TRACK_UID, tagString.t_str()); tagString = pageData->parser->GetTagAlbum(selected_track->GetTagInfo()); SetDlgItemText(hwndDlg, IDC_EDIT_TAG_ALBUM, tagString.t_str()); tagString = pageData->parser->GetTagArtist(selected_track->GetTagInfo()); SetDlgItemText(hwndDlg, IDC_EDIT_TAG_ARTIST, tagString.t_str()); tagString = JString::Format("%f", pageData->parser->GetTagBPM(selected_track->GetTagInfo())); SetDlgItemText(hwndDlg, IDC_EDIT_TAG_BPM, tagString.t_str()); tagString = JString::Format("%u", pageData->parser->GetTagDiscTrack(selected_track->GetTagInfo())); SetDlgItemText(hwndDlg, IDC_EDIT_TAG_TRACKNO, tagString.t_str()); tagString = pageData->parser->GetTagGenre(selected_track->GetTagInfo()).c_str(); SetDlgItemText(hwndDlg, IDC_COMBO_TAG_GENRE, tagString.t_str()); tagString = JString::Format("%i", pageData->parser->GetTagRating(selected_track->GetTagInfo())); SetDlgItemText(hwndDlg, IDC_EDIT_TAG_RATING, tagString.t_str()); tagString = pageData->parser->GetTagTitle(selected_track->GetTagInfo()); SetDlgItemText(hwndDlg, IDC_EDIT_TAG_TITLE, tagString.t_str()); tagString = JString::Format("%i", pageData->parser->GetTagYear(selected_track->GetTagInfo())); SetDlgItemText(hwndDlg, IDC_EDIT_TAG_YEAR, tagString.t_str()); } break; } } break; } case IDC_EDIT_TAG_TITLE: { switch (HIWORD(wParam)) { case EN_CHANGE: { HWND hwndTrackCombo; int nItem = 0; MatroskaTrackInfo *selected_track = NULL; hwndTrackCombo = GetDlgItem(hwndDlg, IDC_COMBO_TAG_SIMPLE_TRACKS); nItem = SendMessage(hwndTrackCombo, CB_GETCURSEL, 0, 0); selected_track = reinterpret_cast<MatroskaTrackInfo *>(SendMessage(hwndTrackCombo, CB_GETITEMDATA, (nItem), 0)); if ((selected_track != NULL) && (nItem != -1)) { int txt_length = SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_TITLE, WM_GETTEXTLENGTH, 0, 0)+1; TCHAR *tag_txt = new TCHAR[txt_length+sizeof(TCHAR)]; memset(tag_txt, 0, txt_length+sizeof(TCHAR)); SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_TITLE, WM_GETTEXT, txt_length, (LPARAM)tag_txt); JString tag_string(tag_txt); delete tag_txt; pageData->parser->SetTagTitle(tag_string.c_str(), selected_track->GetTagInfo()); } break; } } break; } case IDC_EDIT_TAG_ARTIST: { switch (HIWORD(wParam)) { case EN_CHANGE: { HWND hwndTrackCombo; int nItem = 0; MatroskaTrackInfo *selected_track = NULL; hwndTrackCombo = GetDlgItem(hwndDlg, IDC_COMBO_TAG_SIMPLE_TRACKS); nItem = SendMessage(hwndTrackCombo, CB_GETCURSEL, 0, 0); selected_track = reinterpret_cast<MatroskaTrackInfo *>(SendMessage(hwndTrackCombo, CB_GETITEMDATA, (nItem), 0)); if ((selected_track != NULL) && (nItem != -1)) { int txt_length = SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_ARTIST, WM_GETTEXTLENGTH, 0, 0)+1; TCHAR *tag_txt = new TCHAR[txt_length+sizeof(TCHAR)]; memset(tag_txt, 0, txt_length+sizeof(TCHAR)); SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_ARTIST, WM_GETTEXT, txt_length, (LPARAM)tag_txt); JString tag_string(tag_txt); delete tag_txt; pageData->parser->SetTagArtist(tag_string.c_str(), selected_track->GetTagInfo()); } break; } } break; } case IDC_EDIT_TAG_ALBUM: { switch (HIWORD(wParam)) { case EN_CHANGE: { HWND hwndTrackCombo; int nItem = 0; MatroskaTrackInfo *selected_track = NULL; hwndTrackCombo = GetDlgItem(hwndDlg, IDC_COMBO_TAG_SIMPLE_TRACKS); nItem = SendMessage(hwndTrackCombo, CB_GETCURSEL, 0, 0); selected_track = reinterpret_cast<MatroskaTrackInfo *>(SendMessage(hwndTrackCombo, CB_GETITEMDATA, (nItem), 0)); if ((selected_track != NULL) && (nItem != -1)) { int txt_length = SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_ALBUM, WM_GETTEXTLENGTH, 0, 0)+1; TCHAR *tag_txt = new TCHAR[txt_length+sizeof(TCHAR)]; memset(tag_txt, 0, txt_length+sizeof(TCHAR)); SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_ALBUM, WM_GETTEXT, txt_length, (LPARAM)tag_txt); JString tag_string(tag_txt); delete tag_txt; pageData->parser->SetTagAlbum(tag_string.c_str(), selected_track->GetTagInfo()); } break; } } break; } case IDC_EDIT_TAG_BPM: { switch (HIWORD(wParam)) { case EN_CHANGE: { HWND hwndTrackCombo; int nItem = 0; MatroskaTrackInfo *selected_track = NULL; hwndTrackCombo = GetDlgItem(hwndDlg, IDC_COMBO_TAG_SIMPLE_TRACKS); nItem = SendMessage(hwndTrackCombo, CB_GETCURSEL, 0, 0); selected_track = reinterpret_cast<MatroskaTrackInfo *>(SendMessage(hwndTrackCombo, CB_GETITEMDATA, (nItem), 0)); if ((selected_track != NULL) && (nItem != -1)) { int txt_length = SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_BPM, WM_GETTEXTLENGTH, 0, 0)+1; TCHAR *tag_txt = new TCHAR[txt_length+sizeof(TCHAR)]; memset(tag_txt, 0, txt_length+sizeof(TCHAR)); SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_BPM, WM_GETTEXT, txt_length, (LPARAM)tag_txt); JString tag_string(tag_txt); delete tag_txt; pageData->parser->SetTagBPM(tag_string.toDouble(), selected_track->GetTagInfo()); } break; } } break; } case IDC_EDIT_TAG_RATING: { switch (HIWORD(wParam)) { case EN_CHANGE: { HWND hwndTrackCombo; int nItem = 0; MatroskaTrackInfo *selected_track = NULL; hwndTrackCombo = GetDlgItem(hwndDlg, IDC_COMBO_TAG_SIMPLE_TRACKS); nItem = SendMessage(hwndTrackCombo, CB_GETCURSEL, 0, 0); selected_track = reinterpret_cast<MatroskaTrackInfo *>(SendMessage(hwndTrackCombo, CB_GETITEMDATA, (nItem), 0)); if ((selected_track != NULL) && (nItem != -1)) { int txt_length = SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_RATING, WM_GETTEXTLENGTH, 0, 0)+1; TCHAR *tag_txt = new TCHAR[txt_length+sizeof(TCHAR)]; memset(tag_txt, 0, txt_length+sizeof(TCHAR)); SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_RATING, WM_GETTEXT, txt_length, (LPARAM)tag_txt); JString tag_string(tag_txt); delete tag_txt; pageData->parser->SetTagRating(tag_string.toLong(), selected_track->GetTagInfo()); } break; } } break; } case IDC_EDIT_TAG_YEAR: { switch (HIWORD(wParam)) { case EN_CHANGE: { HWND hwndTrackCombo; int nItem = 0; MatroskaTrackInfo *selected_track = NULL; hwndTrackCombo = GetDlgItem(hwndDlg, IDC_COMBO_TAG_SIMPLE_TRACKS); nItem = SendMessage(hwndTrackCombo, CB_GETCURSEL, 0, 0); selected_track = reinterpret_cast<MatroskaTrackInfo *>(SendMessage(hwndTrackCombo, CB_GETITEMDATA, (nItem), 0)); if ((selected_track != NULL) && (nItem != -1)) { int txt_length = SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_YEAR, WM_GETTEXTLENGTH, 0, 0)+1; TCHAR *tag_txt = new TCHAR[txt_length+sizeof(TCHAR)]; memset(tag_txt, 0, txt_length+sizeof(TCHAR)); SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_YEAR, WM_GETTEXT, txt_length, (LPARAM)tag_txt); JString tag_string(tag_txt); delete tag_txt; pageData->parser->SetTagYear(tag_string.toLong(), selected_track->GetTagInfo()); } break; } } break; } case IDC_EDIT_TAG_TRACKNO: { switch (HIWORD(wParam)) { case EN_CHANGE: { HWND hwndTrackCombo; int nItem = 0; MatroskaTrackInfo *selected_track = NULL; hwndTrackCombo = GetDlgItem(hwndDlg, IDC_COMBO_TAG_SIMPLE_TRACKS); nItem = SendMessage(hwndTrackCombo, CB_GETCURSEL, 0, 0); selected_track = reinterpret_cast<MatroskaTrackInfo *>(SendMessage(hwndTrackCombo, CB_GETITEMDATA, (nItem), 0)); if ((selected_track != NULL) && (nItem != -1)) { int txt_length = SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_TRACKNO, WM_GETTEXTLENGTH, 0, 0)+1; TCHAR *tag_txt = new TCHAR[txt_length+sizeof(TCHAR)]; memset(tag_txt, 0, txt_length+sizeof(TCHAR)); SendDlgItemMessage(hwndDlg, IDC_EDIT_TAG_TRACKNO, WM_GETTEXT, txt_length, (LPARAM)tag_txt); JString tag_string(tag_txt); delete tag_txt; pageData->parser->SetTagDiscTrack(tag_string.toLong(), selected_track->GetTagInfo()); } break; } } break; } case IDC_BUTTON_SIMPLE_TAG_SAVE: { switch (HIWORD(wParam)) { case BN_CLICKED: { /*EDITBALLOONTIP bTip; bTip.cbStruct = sizeof(bTip); bTip.pszTitle = L"Test"; bTip.pszText = L"This is only a simple test."; bTip.ttiIcon = TTI_INFO; Edit_ShowBalloonTip(GetDlgItem(hwndDlg, IDC_EDIT_TAG_ALBUM), &bTip);*/ if (pageData->parser->WriteTags() == 2) MessageBox(hwndDlg, _W("Unable to write tags. Please check that the file isn't open in another program. If you are watching the file please stop it and try again"), _W("Unable to write tags"), 0); break; } } break; } } break; } default: return FALSE; } CRASH_PROTECT_END; #endif return FALSE; }