| |
261 |
261 |
lvc.iSubItem=2; |
| |
262 |
262 |
lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_HDRDATE_STRING); |
| |
263 |
263 |
lvc.cchTextMax=lstrlen(lvc.pszText); |
| |
264 |
264 |
lvc.cx=static_cast<int>(0.3*rc.Width()); |
| |
265 |
265 |
m_ctlFilters.InsertColumn(4, &lvc); |
| |
266 |
266 |
|
| |
267 |
267 |
|
| |
268 |
268 |
lvc.iSubItem=3; |
| |
269 |
269 |
lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_HDRATTRIB_STRING); |
| |
270 |
270 |
lvc.cchTextMax=lstrlen(lvc.pszText); |
| |
271 |
271 |
lvc.cx=static_cast<int>(0.1*rc.Width()); |
| |
272 |
272 |
m_ctlFilters.InsertColumn(5, &lvc); |
| |
273 |
273 |
|
| |
274 |
274 |
|
| |
275 |
275 |
lvc.iSubItem=4; |
| |
276 |
276 |
lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_HDREXCLUDEATTRIB_STRING); |
| |
277 |
277 |
lvc.cchTextMax=lstrlen(lvc.pszText); |
| |
278 |
278 |
lvc.cx=static_cast<int>(0.1*rc.Width()); |
| |
279 |
279 |
m_ctlFilters.InsertColumn(6, &lvc); |
| |
280 |
280 |
|
| |
281 |
|
chcore::TFileFiltersArray afFilters; |
| |
282 |
|
chcore::GetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration(), afFilters); |
| |
|
281 |
m_bFilters = !m_tTaskDefinition.GetFilters().IsEmpty(); |
| |
283 |
282 |
|
| |
284 |
|
m_bFilters = !afFilters.IsEmpty(); |
| |
285 |
|
|
| |
286 |
283 |
|
| |
287 |
284 |
m_bIgnoreFolders = chcore::GetTaskPropValue<chcore::eTO_IgnoreDirectories>(m_tTaskDefinition.GetConfiguration()); |
| |
288 |
285 |
m_bForceDirectories = chcore::GetTaskPropValue<chcore::eTO_CreateDirectoriesRelativeToRoot>(m_tTaskDefinition.GetConfiguration()); |
| |
289 |
286 |
m_bOnlyCreate = chcore::GetTaskPropValue<chcore::eTO_CreateEmptyFiles>(m_tTaskDefinition.GetConfiguration()); |
| |
290 |
287 |
m_bAdvanced = (m_bIgnoreFolders | m_bForceDirectories | m_bOnlyCreate); |
| |
291 |
288 |
|
| |
292 |
289 |
UpdateData(FALSE); |
| |
293 |
290 |
|
| |
294 |
291 |
EnableControls(); |
| |
295 |
292 |
|
| |
296 |
293 |
return TRUE; |
| |
297 |
294 |
} |
| |
298 |
295 |
|
| |
299 |
296 |
void CCustomCopyDlg::OnLanguageChanged() |
| |
300 |
297 |
{ |
| |
301 |
298 |
UpdateData(TRUE); |
| |
302 |
299 |
|
| |
303 |
300 |
|
| |
304 |
301 |
CRect rc; |
| |
305 |
302 |
m_ctlFiles.GetWindowRect(&rc); |
|
| |
362 |
359 |
lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_HDRDATE_STRING); |
| |
363 |
360 |
lvc.cchTextMax=lstrlen(lvc.pszText); |
| |
364 |
361 |
lvc.cx=static_cast<int>(0.3*rc.Width()); |
| |
365 |
362 |
m_ctlFilters.InsertColumn(4, &lvc); |
| |
366 |
363 |
|
| |
367 |
364 |
|
| |
368 |
365 |
lvc.iSubItem=3; |
| |
369 |
366 |
lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_HDRATTRIB_STRING); |
| |
370 |
367 |
lvc.cchTextMax=lstrlen(lvc.pszText); |
| |
371 |
368 |
lvc.cx=static_cast<int>(0.1*rc.Width()); |
| |
372 |
369 |
m_ctlFilters.InsertColumn(5, &lvc); |
| |
373 |
370 |
|
| |
374 |
371 |
|
| |
375 |
372 |
lvc.iSubItem=4; |
| |
376 |
373 |
lvc.pszText=(PTSTR)GetResManager().LoadString(IDS_HDREXCLUDEATTRIB_STRING); |
| |
377 |
374 |
lvc.cchTextMax=lstrlen(lvc.pszText); |
| |
378 |
375 |
lvc.cx=static_cast<int>(0.1*rc.Width()); |
| |
379 |
376 |
m_ctlFilters.InsertColumn(6, &lvc); |
| |
380 |
377 |
|
| |
381 |
378 |
|
| |
382 |
|
chcore::TFileFiltersArray afFilters = chcore::GetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration()); |
| |
|
379 |
const chcore::TFileFiltersArray& afFilters = m_tTaskDefinition.GetFilters(); |
| |
383 |
380 |
m_ctlFilters.DeleteAllItems(); |
| |
384 |
381 |
for(size_t stIndex = 0; stIndex < afFilters.GetSize(); ++stIndex) |
| |
385 |
382 |
{ |
| |
386 |
383 |
const chcore::TFileFilter* pFilter = afFilters.GetAt(stIndex); |
| |
387 |
384 |
if(pFilter) |
| |
388 |
385 |
AddFilter(*pFilter, boost::numeric_cast<int>(stIndex)); |
| |
389 |
386 |
} |
| |
390 |
387 |
} |
| |
391 |
388 |
|
| |
392 |
389 |
void CCustomCopyDlg::OnAddDirectoryButton() |
| |
393 |
390 |
{ |
| |
394 |
391 |
CString strPath; |
| |
395 |
392 |
if (BrowseForFolder(GetResManager().LoadString(IDS_BROWSE_STRING), &strPath)) |
| |
396 |
393 |
AddPath(strPath); |
| |
397 |
394 |
} |
| |
398 |
395 |
|
| |
399 |
396 |
void CCustomCopyDlg::OnAddFilesButton() |
| |
400 |
397 |
{ |
| |
401 |
398 |
CFileDialog dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT | OFN_ENABLESIZING | OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_NODEREFERENCELINKS | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, GetResManager().LoadString(IDS_FILEDLGALLFILTER_STRING), this); |
| |
402 |
399 |
|
|
| |
574 |
571 |
lvi.mask=LVIF_TEXT | LVIF_IMAGE; |
| |
575 |
572 |
lvi.iItem=m_ctlFiles.GetItemCount(); |
| |
576 |
573 |
lvi.iSubItem=0; |
| |
577 |
574 |
|
| |
578 |
575 |
|
| |
579 |
576 |
SHFILEINFO sfi; |
| |
580 |
577 |
SHGetFileInfo(strPath, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(SHFILEINFO), |
| |
581 |
578 |
SHGFI_SYSICONINDEX | SHGFI_SMALLICON); |
| |
582 |
579 |
|
| |
583 |
580 |
|
| |
584 |
581 |
lvi.pszText=strPath.GetBuffer(0); |
| |
585 |
582 |
strPath.ReleaseBuffer(); |
| |
586 |
583 |
lvi.cchTextMax=lstrlen(lvi.pszText); |
| |
587 |
584 |
lvi.iImage=sfi.iIcon; |
| |
588 |
585 |
m_ctlFiles.InsertItem(&lvi); |
| |
589 |
586 |
} |
| |
590 |
587 |
|
| |
591 |
588 |
void CCustomCopyDlg::OnAddfilterButton() |
| |
592 |
589 |
{ |
| |
593 |
590 |
CFilterDlg dlg; |
| |
594 |
|
chcore::TString strData; |
| |
595 |
591 |
|
| |
596 |
|
chcore::TFileFiltersArray afFilters = chcore::GetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration()); |
| |
|
592 |
chcore::TFileFiltersArray& afFilters = m_tTaskDefinition.GetFilters(); |
| |
597 |
593 |
for (size_t i = 0; i < afFilters.GetSize(); i++) |
| |
598 |
594 |
{ |
| |
599 |
595 |
const chcore::TFileFilter* pFilter = afFilters.GetAt(i); |
| |
600 |
596 |
BOOST_ASSERT(pFilter); |
| |
601 |
597 |
if(pFilter) |
| |
602 |
598 |
{ |
| |
603 |
599 |
if(pFilter->GetUseMask()) |
| |
604 |
|
dlg.m_astrAddMask.Add(pFilter->GetCombinedMask(strData)); |
| |
|
600 |
dlg.m_astrAddMask.Add(pFilter->GetCombinedMask()); |
| |
605 |
601 |
if(pFilter->GetUseExcludeMask()) |
| |
606 |
|
dlg.m_astrAddExcludeMask.Add(pFilter->GetCombinedExcludeMask(strData)); |
| |
|
602 |
dlg.m_astrAddExcludeMask.Add(pFilter->GetCombinedExcludeMask()); |
| |
607 |
603 |
} |
| |
608 |
604 |
} |
| |
609 |
605 |
|
| |
610 |
606 |
if(dlg.DoModal() == IDOK) |
| |
611 |
607 |
{ |
| |
612 |
608 |
if(dlg.m_ffFilter.GetUseMask() || dlg.m_ffFilter.GetUseExcludeMask() || dlg.m_ffFilter.GetUseSize1() || dlg.m_ffFilter.GetUseDateTime1() || dlg.m_ffFilter.GetUseAttributes()) |
| |
613 |
609 |
{ |
| |
614 |
610 |
afFilters.Add(dlg.m_ffFilter); |
| |
615 |
|
chcore::SetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration(), afFilters); |
| |
616 |
611 |
AddFilter(dlg.m_ffFilter); |
| |
617 |
612 |
} |
| |
618 |
613 |
else |
| |
619 |
614 |
MsgBox(IDS_EMPTYFILTER_STRING, MB_OK | MB_ICONINFORMATION); |
| |
620 |
615 |
} |
| |
621 |
616 |
} |
| |
622 |
617 |
|
| |
623 |
618 |
void CCustomCopyDlg::AddFilter(const chcore::TFileFilter &rFilter, int iPos) |
| |
624 |
619 |
{ |
| |
625 |
620 |
LVITEM lvi; |
| |
626 |
621 |
TCHAR szLoaded[1024]; |
| |
627 |
622 |
TCHAR szData[64]; |
| |
628 |
623 |
|
| |
629 |
624 |
lvi.mask=LVIF_TEXT; |
| |
630 |
625 |
lvi.iItem=(iPos == -1) ? m_ctlFilters.GetItemCount() : iPos; |
| |
631 |
626 |
|
| |
632 |
627 |
|
| |
633 |
628 |
lvi.iSubItem=0; |
| |
634 |
629 |
|
| |
635 |
630 |
if (rFilter.GetUseMask()) |
| |
636 |
631 |
{ |
| |
637 |
|
chcore::TString strData; |
| |
638 |
|
rFilter.GetCombinedMask(strData); |
| |
|
632 |
chcore::TString strData = rFilter.GetCombinedMask(); |
| |
639 |
633 |
_tcscpy(szLoaded, strData); |
| |
640 |
634 |
} |
| |
641 |
635 |
else |
| |
642 |
636 |
_tcscpy(szLoaded, GetResManager().LoadString(IDS_FILTERMASKEMPTY_STRING)); |
| |
643 |
637 |
|
| |
644 |
638 |
lvi.pszText=szLoaded; |
| |
645 |
639 |
lvi.cchTextMax=lstrlen(lvi.pszText); |
| |
646 |
640 |
m_ctlFilters.InsertItem(&lvi); |
| |
647 |
641 |
|
| |
648 |
642 |
|
| |
649 |
643 |
lvi.iSubItem=1; |
| |
650 |
644 |
|
| |
651 |
645 |
if (rFilter.GetUseExcludeMask()) |
| |
652 |
646 |
{ |
| |
653 |
|
chcore::TString strData; |
| |
654 |
|
rFilter.GetCombinedExcludeMask(strData); |
| |
|
647 |
chcore::TString strData = rFilter.GetCombinedExcludeMask(); |
| |
655 |
648 |
_tcscpy(szLoaded, strData); |
| |
656 |
649 |
} |
| |
657 |
650 |
else |
| |
658 |
651 |
_tcscpy(szLoaded, GetResManager().LoadString(IDS_FILTERMASKEMPTY_STRING)); |
| |
659 |
652 |
|
| |
660 |
653 |
lvi.pszText=szLoaded; |
| |
661 |
654 |
lvi.cchTextMax=lstrlen(lvi.pszText); |
| |
662 |
655 |
m_ctlFilters.SetItem(&lvi); |
| |
663 |
656 |
|
| |
664 |
657 |
|
| |
665 |
658 |
lvi.iSubItem=2; |
| |
666 |
659 |
|
| |
667 |
660 |
if (rFilter.GetUseSize1()) |
| |
668 |
661 |
{ |
| |
669 |
662 |
_sntprintf(szLoaded, 1024, _T("%s %s"), GetResManager().LoadString(IDS_LT_STRING+rFilter.GetSizeType1()), GetSizeString(rFilter.GetSize1(), szData, 64, true)); |
| |
670 |
663 |
szLoaded[1023] = _T('\0'); |
| |
671 |
664 |
if (rFilter.GetUseSize2()) |
| |
672 |
665 |
{ |
| |
673 |
666 |
_tcscat(szLoaded, GetResManager().LoadString(IDS_AND_STRING)); |
| |
674 |
667 |
CString strLoaded2; |
|
| |
743 |
736 |
if(rFilter.GetReadOnly() == 0) |
| |
744 |
737 |
_tcscat(szLoaded, _T("R")); |
| |
745 |
738 |
if(rFilter.GetHidden() == 0) |
| |
746 |
739 |
_tcscat(szLoaded, _T("H")); |
| |
747 |
740 |
if(rFilter.GetSystem() == 0) |
| |
748 |
741 |
_tcscat(szLoaded, _T("S")); |
| |
749 |
742 |
if(rFilter.GetDirectory() == 0) |
| |
750 |
743 |
_tcscat(szLoaded, _T("D")); |
| |
751 |
744 |
} |
| |
752 |
745 |
|
| |
753 |
746 |
if(!rFilter.GetUseAttributes() || szLoaded[0] == _T('0')) |
| |
754 |
747 |
_tcscpy(szLoaded, GetResManager().LoadString(IDS_FILTERATTRIB_STRING)); |
| |
755 |
748 |
|
| |
756 |
749 |
lvi.pszText=szLoaded; |
| |
757 |
750 |
lvi.cchTextMax=lstrlen(lvi.pszText); |
| |
758 |
751 |
m_ctlFilters.SetItem(&lvi); |
| |
759 |
752 |
} |
| |
760 |
753 |
|
| |
761 |
754 |
void CCustomCopyDlg::OnRemovefilterButton() |
| |
762 |
755 |
{ |
| |
763 |
|
chcore::TFileFiltersArray afFilters = chcore::GetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration()); |
| |
|
756 |
chcore::TFileFiltersArray& afFilters = m_tTaskDefinition.GetFilters(); |
| |
764 |
757 |
|
| |
765 |
758 |
POSITION pos; |
| |
766 |
759 |
int iItem; |
| |
767 |
760 |
while(true) |
| |
768 |
761 |
{ |
| |
769 |
762 |
pos=m_ctlFilters.GetFirstSelectedItemPosition(); |
| |
770 |
763 |
if (pos == NULL) |
| |
771 |
764 |
break; |
| |
772 |
765 |
else |
| |
773 |
766 |
{ |
| |
774 |
767 |
iItem=m_ctlFilters.GetNextSelectedItem(pos); |
| |
775 |
768 |
m_ctlFilters.DeleteItem(iItem); |
| |
776 |
769 |
afFilters.RemoveAt(iItem); |
| |
777 |
|
|
| |
778 |
|
chcore::SetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration(), afFilters); |
| |
779 |
770 |
} |
| |
780 |
771 |
} |
| |
781 |
772 |
} |
| |
782 |
773 |
|
| |
783 |
774 |
void CCustomCopyDlg::OnDestroy() |
| |
784 |
775 |
{ |
| |
785 |
776 |
m_ctlFiles.SetImageList(NULL, LVSIL_SMALL); |
| |
786 |
777 |
m_ilImages.Detach(); |
| |
787 |
778 |
|
| |
788 |
779 |
CLanguageDialog::OnDestroy(); |
| |
789 |
780 |
} |
| |
790 |
781 |
|
| |
791 |
782 |
void CCustomCopyDlg::EnableControls() |
| |
792 |
783 |
{ |
| |
793 |
784 |
UpdateData(TRUE); |
| |
794 |
785 |
|
| |
795 |
786 |
m_ctlFilters.EnableWindow(m_bFilters); |
| |
796 |
787 |
GetDlgItem(IDC_ADDFILTER_BUTTON)->EnableWindow(m_bFilters); |
| |
797 |
788 |
GetDlgItem(IDC_REMOVEFILTER_BUTTON)->EnableWindow(m_bFilters); |
| |
798 |
789 |
|
|
| |
804 |
795 |
void CCustomCopyDlg::OnFiltersCheck() |
| |
805 |
796 |
{ |
| |
806 |
797 |
EnableControls(); |
| |
807 |
798 |
} |
| |
808 |
799 |
|
| |
809 |
800 |
void CCustomCopyDlg::OnStandardCheck() |
| |
810 |
801 |
{ |
| |
811 |
802 |
EnableControls(); |
| |
812 |
803 |
} |
| |
813 |
804 |
|
| |
814 |
805 |
void CCustomCopyDlg::OnAdvancedCheck() |
| |
815 |
806 |
{ |
| |
816 |
807 |
EnableControls(); |
| |
817 |
808 |
} |
| |
818 |
809 |
|
| |
819 |
810 |
void CCustomCopyDlg::OnDblclkFiltersList(NMHDR* , LRESULT* pResult) |
| |
820 |
811 |
{ |
| |
821 |
812 |
POSITION pos = m_ctlFilters.GetFirstSelectedItemPosition(); |
| |
822 |
813 |
if(pos != NULL) |
| |
823 |
814 |
{ |
| |
824 |
|
chcore::TFileFiltersArray afFilters = chcore::GetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration()); |
| |
|
815 |
chcore::TFileFiltersArray& afFilters = m_tTaskDefinition.GetFilters(); |
| |
825 |
816 |
|
| |
826 |
817 |
int iItem = m_ctlFilters.GetNextSelectedItem(pos); |
| |
827 |
818 |
CFilterDlg dlg; |
| |
828 |
819 |
const chcore::TFileFilter* pFilter = afFilters.GetAt(iItem); |
| |
829 |
820 |
BOOST_ASSERT(pFilter); |
| |
830 |
821 |
if(pFilter) |
| |
831 |
822 |
dlg.m_ffFilter = *pFilter; |
| |
832 |
823 |
|
| |
833 |
|
chcore::TString strData; |
| |
834 |
824 |
for(size_t stIndex = 0; stIndex < afFilters.GetSize(); ++stIndex) |
| |
835 |
825 |
{ |
| |
836 |
826 |
pFilter = afFilters.GetAt(stIndex); |
| |
837 |
827 |
BOOST_ASSERT(pFilter); |
| |
838 |
828 |
if(pFilter) |
| |
839 |
829 |
{ |
| |
840 |
830 |
if(pFilter->GetUseMask() && boost::numeric_cast<int>(stIndex) != iItem) |
| |
841 |
|
dlg.m_astrAddMask.Add(pFilter->GetCombinedMask(strData)); |
| |
|
831 |
dlg.m_astrAddMask.Add(pFilter->GetCombinedMask()); |
| |
842 |
832 |
if (pFilter->GetUseExcludeMask() && boost::numeric_cast<int>(stIndex) != iItem) |
| |
843 |
|
dlg.m_astrAddExcludeMask.Add(pFilter->GetCombinedExcludeMask(strData)); |
| |
|
833 |
dlg.m_astrAddExcludeMask.Add(pFilter->GetCombinedExcludeMask()); |
| |
844 |
834 |
} |
| |
845 |
835 |
} |
| |
846 |
836 |
|
| |
847 |
837 |
if (dlg.DoModal() == IDOK) |
| |
848 |
838 |
{ |
| |
849 |
839 |
|
| |
850 |
840 |
m_ctlFilters.DeleteItem(iItem); |
| |
851 |
841 |
|
| |
852 |
842 |
|
| |
853 |
843 |
|
| |
854 |
844 |
if (dlg.m_ffFilter.GetUseMask() || dlg.m_ffFilter.GetUseExcludeMask() || dlg.m_ffFilter.GetUseSize1() |
| |
855 |
845 |
|| dlg.m_ffFilter.GetUseDateTime1() || dlg.m_ffFilter.GetUseAttributes()) |
| |
856 |
846 |
{ |
| |
857 |
847 |
afFilters.SetAt(iItem, dlg.m_ffFilter); |
| |
858 |
|
chcore::SetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration(), afFilters); |
| |
859 |
848 |
AddFilter(dlg.m_ffFilter, iItem); |
| |
860 |
849 |
} |
| |
861 |
850 |
} |
| |
862 |
851 |
} |
| |
863 |
852 |
|
| |
864 |
853 |
*pResult = 0; |
| |
865 |
854 |
} |
| |
866 |
855 |
|
| |
867 |
856 |
void CCustomCopyDlg::OnDblclkBuffersizesList() |
| |
868 |
857 |
{ |
| |
869 |
858 |
int iItem = m_ctlBufferSizes.GetCurSel(); |
| |
870 |
859 |
if(iItem != LB_ERR) |
| |
871 |
860 |
{ |
| |
872 |
861 |
CBufferSizeDlg dlg; |
| |
873 |
862 |
|
| |
874 |
863 |
dlg.m_bsSizes.SetOnlyDefault(chcore::GetTaskPropValue<chcore::eTO_UseOnlyDefaultBuffer>(m_tTaskDefinition.GetConfiguration())); |
| |
875 |
864 |
dlg.m_bsSizes.SetDefaultSize(chcore::GetTaskPropValue<chcore::eTO_DefaultBufferSize>(m_tTaskDefinition.GetConfiguration())); |
| |
876 |
865 |
dlg.m_bsSizes.SetOneDiskSize(chcore::GetTaskPropValue<chcore::eTO_OneDiskBufferSize>(m_tTaskDefinition.GetConfiguration())); |
| |
877 |
866 |
dlg.m_bsSizes.SetTwoDisksSize(chcore::GetTaskPropValue<chcore::eTO_TwoDisksBufferSize>(m_tTaskDefinition.GetConfiguration())); |
| |
878 |
867 |
dlg.m_bsSizes.SetCDSize(chcore::GetTaskPropValue<chcore::eTO_CDBufferSize>(m_tTaskDefinition.GetConfiguration())); |