BOOL CPPageFormats::OnApply() { UpdateData(); int iSelectedItem = m_list.GetSelectionMark(); if (iSelectedItem >= 0) { DWORD_PTR i = m_list.GetItemData(iSelectedItem); m_mf[i].SetExts(m_exts); m_exts = m_mf[i].GetExtsWithPeriod(); UpdateData(FALSE); } CFileAssoc::RegisterApp(); int fSetContextFiles = m_fContextFiles.GetCheck(); int fSetAssociatedWithIcon = m_fAssociatedWithIcons.GetCheck(); if (m_bFileExtChanged) { if (fSetAssociatedWithIcon && IsNeededIconsLib() && !CFileAssoc::LoadIconLib()) { AfxMessageBox(IDS_MISSING_ICONS_LIB, MB_ICONEXCLAMATION | MB_OK, 0); } for (int i = 0, cnt = m_list.GetItemCount(); i < cnt; i++) { int iChecked = IsCheckedMediaCategory(i); if (iChecked == 2) { continue; } CFileAssoc::Register(m_mf[m_list.GetItemData(i)], !!iChecked, !!fSetContextFiles, !!fSetAssociatedWithIcon); } m_bFileExtChanged = false; if (fSetAssociatedWithIcon) { CFileAssoc::FreeIconLib(); } } CFileAssoc::RegisterFolderContextMenuEntries(!!m_fContextDir.GetCheck()); UpdateMediaCategoryState(m_list.GetSelectionMark()); CFileAssoc::RegisterAutoPlay(CFileAssoc::AP_VIDEO, !!m_apvideo.GetCheck()); CFileAssoc::RegisterAutoPlay(CFileAssoc::AP_MUSIC, !!m_apmusic.GetCheck()); CFileAssoc::RegisterAutoPlay(CFileAssoc::AP_AUDIOCD, !!m_apaudiocd.GetCheck()); CFileAssoc::RegisterAutoPlay(CFileAssoc::AP_DVDMOVIE, !!m_apdvd.GetCheck()); m_mf.SetRtspHandler(m_iRtspHandler == 0 ? RealMedia : m_iRtspHandler == 1 ? QuickTime : DirectShow, !!m_fRtspFileExtFirst); CAppSettings& s = AfxGetAppSettings(); s.m_Formats = m_mf; s.fAssociatedWithIcons = !!m_fAssociatedWithIcons.GetCheck(); SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL); return __super::OnApply(); }
bool CPPageFormats::IsNeededIconsLib() { for (int i = 0, cnt = m_list.GetItemCount(); i < cnt; i++) { if (IsCheckedMediaCategory(i) == 1) { return true; } } return false; }
bool CPPageFormats::IsNeededIconsLib() { bool needIconsLib = false; int i = 0; while (!needIconsLib && i < m_list.GetItemCount()) { if (IsCheckedMediaCategory(i) == 1) { needIconsLib = true; } i++; } return needIconsLib; }
void CPPageFormats::OnMediaCategoryKeyDown(NMHDR* pNMHDR, LRESULT* pResult) { LPNMLVKEYDOWN lpkd = (LPNMLVKEYDOWN)pNMHDR; if (lpkd->wVKey == VK_SPACE) { if (m_bInsufficientPrivileges) { MessageBox(ResStr(IDS_CANNOT_CHANGE_FORMAT)); } else { int iItem = m_list.GetSelectionMark(); SetCheckedMediaCategory(iItem, (IsCheckedMediaCategory(iItem) != 1)); m_bFileExtChanged = true; SetModified(); } } *pResult = 0; }
void CPPageFormats::OnMediaCategoryClicked(NMHDR* pNMHDR, LRESULT* pResult) { LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)pNMHDR; // Check or uncheck the media category if (lpnmlv->iItem >= 0 && lpnmlv->iSubItem == COL_CATEGORY) { CRect r; m_list.GetItemRect(lpnmlv->iItem, r, LVIR_ICON); if (r.PtInRect(lpnmlv->ptAction)) { if (m_bInsufficientPrivileges) { MessageBox(ResStr(IDS_CANNOT_CHANGE_FORMAT)); } else { SetCheckedMediaCategory(lpnmlv->iItem, (IsCheckedMediaCategory(lpnmlv->iItem) != 1)); m_bFileExtChanged = true; SetModified(); } } } *pResult = 0; }