Exemple #1
0
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;
}
Exemple #3
0
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;
}