_ >   37 37
  38 38 namespace
  39 39 {
< >   40           template<class RuleList>
  41           void OnUpButton(RuleEditDlg* pDlg, CListCtrl& ctlList, RuleList& ruleList, std::function<void(RuleEditDlg*)> reloadList)
    40         int GetSelectedIndex(CListCtrl& ctlList)
42 41         {
  43 42                 POSITION pos = ctlList.GetFirstSelectedItemPosition();
  44 43                 if(pos == nullptr)
< >   45                           return;
    44                         return -1;
46 45
  47 46                 int iItem = ctlList.GetNextSelectedItem(pos);
< >     47                 return iItem;
    48         }
    49
    50         template<class RuleList>
    51         void OnUpButton(RuleEditDlg* pDlg, CListCtrl& ctlList, RuleList& ruleList, std::function<void(RuleEditDlg*)> reloadList)
    52         {
    53                 int iItem = GetSelectedIndex(ctlList);
48 54                 if(iItem < 1)
  49 55                         return;
  50 56
 
65 71         template<class RuleList>
  66 72         void OnDownButton(RuleEditDlg* pDlg, CListCtrl& ctlList, RuleList& ruleList, std::function<void(RuleEditDlg*)> reloadList)
  67 73         {
< >   68                   POSITION pos = ctlList.GetFirstSelectedItemPosition();
  69                   if(pos == nullptr)
  70                           return;
  71  
  72                   int iItem = ctlList.GetNextSelectedItem(pos);
    74                 int iItem = GetSelectedIndex(ctlList);
73 75                 if(iItem < 0 || iItem + 1 >= ctlList.GetItemCount())
  74 76                         return;
  75 77
 
90 92         template<class RuleList>
  91 93         void OnRemoveButton(CListCtrl& ctlList, RuleList& ruleList)
  92 94         {
< >   93                   POSITION pos = ctlList.GetFirstSelectedItemPosition();
  94                   if(pos == nullptr)
  95                           return;
  96  
  97                   int iItem = ctlList.GetNextSelectedItem(pos);
    95                 int iItem = GetSelectedIndex(ctlList);
98 96                 if(iItem < 0)
  99 97                         return;
  100 98
 
138 136         ON_BN_CLICKED(IDC_NOT_ENOUGH_SPACE_UP_BUTTON, OnNotEnoughSpaceUpButton)
  139 137         ON_BN_CLICKED(IDC_NOT_ENOUGH_SPACE_DOWN_BUTTON, OnNotEnoughSpaceDownButton)
  140 138
< >     139         ON_NOTIFY(LVN_ITEMCHANGED, IDC_FILE_ALREADY_EXISTS_RULES_LIST, OnAlreadyExistsItemChanged)
    140         ON_NOTIFY(LVN_ITEMCHANGED, IDC_FILE_ERROR_RULES_LIST, OnErrorItemChanged)
    141         ON_NOTIFY(LVN_ITEMCHANGED, IDC_NOT_ENOUGH_SPACE_RULES_LIST, OnNotEnoughSpaceItemChanged)
    142
141 143         ON_NOTIFY(NM_DBLCLK, IDC_FILE_ALREADY_EXISTS_RULES_LIST, OnDblclkAlreadyExistsList)
  142 144         ON_NOTIFY(NM_DBLCLK, IDC_FILE_ERROR_RULES_LIST, OnDblclkErrorList)
  143 145         ON_NOTIFY(NM_DBLCLK, IDC_NOT_ENOUGH_SPACE_RULES_LIST, OnDblclkNotEnoughSpaceList)
 
198 200         FillErrorList();
  199 201         FillNotEnoughSpaceList();
  200 202
< >     203         EnableControls();
    204
201 205         UpdateData(FALSE);
  202 206
  203 207         return TRUE;
 
595 599         FillAlreadyExistsList();
  596 600         FillErrorList();
  597 601         FillNotEnoughSpaceList();
< >     602
    603         EnableControls();
598 604 }
  599 605
  600 606 void RuleEditDlg::OnOK()
 
604 610         CLanguageDialog::OnOK();
  605 611 }
  606 612
< >     613 void RuleEditDlg::EnableControls()
    614 {
    615         EnableAlreadyExistsControls();
    616         EnableErrorControls();
    617         EnableNotEnoughSpaceControls();
    618 }
    619
    620 void RuleEditDlg::EnableAlreadyExistsControls()
    621 {
    622         int iCurrentSel = GetSelectedIndex(m_ctlAlreadyExistsRulesList);
    623         GetDlgItem(IDC_ALREADY_EXISTS_UP_BUTTON)->EnableWindow(iCurrentSel > 0);
    624         GetDlgItem(IDC_ALREADY_EXISTS_DOWN_BUTTON)->EnableWindow(iCurrentSel >= 0 && iCurrentSel + 1 < m_ctlAlreadyExistsRulesList.GetItemCount());
    625         GetDlgItem(IDC_ALREADY_EXISTS_CHANGE_BUTTON)->EnableWindow(iCurrentSel >= 0);
    626         GetDlgItem(IDC_ALREADY_EXISTS_REMOVE_BUTTON)->EnableWindow(iCurrentSel >= 0);
    627 }
    628
    629 void RuleEditDlg::EnableErrorControls()
    630 {
    631         int iCurrentSel = GetSelectedIndex(m_ctlErrorRulesList);
    632         GetDlgItem(IDC_FILE_ERROR_UP_BUTTON)->EnableWindow(iCurrentSel > 0);
    633         GetDlgItem(IDC_FILE_ERROR_DOWN_BUTTON)->EnableWindow(iCurrentSel >= 0 && iCurrentSel + 1 < m_ctlErrorRulesList.GetItemCount());
    634         GetDlgItem(IDC_FILE_ERROR_CHANGE_BUTTON)->EnableWindow(iCurrentSel >= 0);
    635         GetDlgItem(IDC_FILE_ERROR_REMOVE_BUTTON)->EnableWindow(iCurrentSel >= 0);
    636 }
    637
    638 void RuleEditDlg::EnableNotEnoughSpaceControls()
    639 {
    640         int iCurrentSel = GetSelectedIndex(m_ctlNotEnoughSpaceRulesList);
    641         GetDlgItem(IDC_NOT_ENOUGH_SPACE_UP_BUTTON)->EnableWindow(iCurrentSel > 0);
    642         GetDlgItem(IDC_NOT_ENOUGH_SPACE_DOWN_BUTTON)->EnableWindow(iCurrentSel >= 0 && iCurrentSel + 1 < m_ctlNotEnoughSpaceRulesList.GetItemCount());
    643         GetDlgItem(IDC_NOT_ENOUGH_SPACE_CHANGE_BUTTON)->EnableWindow(iCurrentSel >= 0);
    644         GetDlgItem(IDC_NOT_ENOUGH_SPACE_REMOVE_BUTTON)->EnableWindow(iCurrentSel >= 0);
    645 }
    646
    647 void RuleEditDlg::OnAlreadyExistsItemChanged(NMHDR* /*pNMHDR*/, LRESULT* /*pResult*/)
    648 {
    649         EnableAlreadyExistsControls();
    650 }
    651
    652 void RuleEditDlg::OnErrorItemChanged(NMHDR* /*pNMHDR*/, LRESULT* /*pResult*/)
    653 {
    654         EnableErrorControls();
    655 }
    656
    657 void RuleEditDlg::OnNotEnoughSpaceItemChanged(NMHDR* /*pNMHDR*/, LRESULT* /*pResult*/)
    658 {
    659         EnableNotEnoughSpaceControls();
    660 }
    661
607 662 void RuleEditDlg::OnDblclkAlreadyExistsList(NMHDR* /*pNMHDR*/, LRESULT* pResult)
  608 663 {
< >   609           OnAlreadyExistsChangeButton();
    664         int iItem = GetSelectedIndex(m_ctlAlreadyExistsRulesList);
    665         if(iItem < 0)
    666                 OnAlreadyExistsAddButton();
    667         else
    668                 OnAlreadyExistsChangeButton();
610 669         *pResult = 0;
  611 670 }
  612 671
  613 672 void RuleEditDlg::OnAlreadyExistsChangeButton()
  614 673 {
< >   615           POSITION pos = m_ctlAlreadyExistsRulesList.GetFirstSelectedItemPosition();
  616           if(pos != nullptr)
  617           {
  618                   FeedbackAlreadyExistsRuleList& rRules = m_rules.GetAlreadyExistsRules();
    674         int iItem = GetSelectedIndex(m_ctlAlreadyExistsRulesList);
    675         if(iItem < 0)
    676                 return;
619 677
< >   620                   int iItem = m_ctlAlreadyExistsRulesList.GetNextSelectedItem(pos);
  621                   if(iItem < 0)
  622                           return;
    678         FeedbackAlreadyExistsRuleList& rRules = m_rules.GetAlreadyExistsRules();
    679         auto& rRule = rRules.GetAt(iItem);
623 680
< >   624                   auto& rRule = rRules.GetAt(iItem);
    681         RuleEditAlreadyExistsDlg dlg(rRule);
    682         if(dlg.DoModal() == IDOK)
    683         {
    684                 // delete old element
    685                 m_ctlAlreadyExistsRulesList.DeleteItem(iItem);
625 686
< >   626                   RuleEditAlreadyExistsDlg dlg(rRule);
  627                   if(dlg.DoModal() == IDOK)
  628                   {
  629                           // delete old element
  630                           m_ctlAlreadyExistsRulesList.DeleteItem(iItem);
  631  
  632                           rRule = dlg.GetRule();
  633                           AddAlreadyExistsRule(rRule, iItem);
  634                   }
    687                 rRule = dlg.GetRule();
    688                 AddAlreadyExistsRule(rRule, iItem);
635 689         }
< >     690
    691         EnableAlreadyExistsControls();
636 692 }
  637 693
  638 694 void RuleEditDlg::OnAlreadyExistsAddButton()
 
646 702                 m_rules.GetAlreadyExistsRules().Add(rRule);
  647 703                 AddAlreadyExistsRule(rRule, -1);
  648 704         }
< >     705         EnableAlreadyExistsControls();
649 706 }
  650 707
  651 708 void RuleEditDlg::OnAlreadyExistsRemoveButton()
  652 709 {
  653 710         OnRemoveButton(m_ctlAlreadyExistsRulesList, m_rules.GetAlreadyExistsRules());
< >     711         EnableAlreadyExistsControls();
654 712 }
  655 713
  656 714 void RuleEditDlg::OnAlreadyExistsUpButton()
  657 715 {
  658 716         OnUpButton(this, m_ctlAlreadyExistsRulesList, m_rules.GetAlreadyExistsRules(), &RuleEditDlg::FillAlreadyExistsList);
< >     717         EnableAlreadyExistsControls();
659 718 }
  660 719
  661 720 void RuleEditDlg::OnAlreadyExistsDownButton()
  662 721 {
  663 722         OnDownButton(this, m_ctlAlreadyExistsRulesList, m_rules.GetAlreadyExistsRules(), &RuleEditDlg::FillAlreadyExistsList);
< >     723         EnableAlreadyExistsControls();
664 724 }
  665 725
  666 726 void RuleEditDlg::OnDblclkErrorList(NMHDR* /*pNMHDR*/, LRESULT* pResult)
  667 727 {
< >   668           OnErrorChangeButton();
    728         int iItem = GetSelectedIndex(m_ctlAlreadyExistsRulesList);
    729         if(iItem < 0)
    730                 OnErrorAddButton();
    731         else
    732                 OnErrorChangeButton();
669 733         *pResult = 0;
  670 734 }
  671 735
 
692 756                         AddErrorRule(rRule, iItem);
  693 757                 }
  694 758         }
< >     759         EnableErrorControls();
695 760 }
  696 761
  697 762 void RuleEditDlg::OnErrorAddButton()
 
705 770                 m_rules.GetErrorRules().Add(rRule);
  706 771                 AddErrorRule(rRule, -1);
  707 772         }
< >     773         EnableErrorControls();
708 774 }
  709 775
  710 776 void RuleEditDlg::OnErrorRemoveButton()
  711 777 {
  712 778         OnRemoveButton(m_ctlErrorRulesList, m_rules.GetErrorRules());
< >     779         EnableErrorControls();
713 780 }
  714 781
  715 782 void RuleEditDlg::OnErrorUpButton()
  716 783 {
  717 784         OnUpButton(this, m_ctlErrorRulesList, m_rules.GetErrorRules(), &RuleEditDlg::FillErrorList);
< >     785         EnableErrorControls();
718 786 }
  719 787
  720 788 void RuleEditDlg::OnErrorDownButton()
  721 789 {
  722 790         OnDownButton(this, m_ctlErrorRulesList, m_rules.GetErrorRules(), &RuleEditDlg::FillErrorList);
< >     791         EnableErrorControls();
723 792 }
  724 793
  725 794 void RuleEditDlg::OnDblclkNotEnoughSpaceList(NMHDR* /*pNMHDR*/, LRESULT* pResult)
  726 795 {
< >   727           OnNotEnoughSpaceChangeButton();
    796         int iItem = GetSelectedIndex(m_ctlAlreadyExistsRulesList);
    797         if(iItem < 0)
    798                 OnNotEnoughSpaceAddButton();
    799         else
    800                 OnNotEnoughSpaceChangeButton();
728 801         *pResult = 0;
  729 802 }
  730 803
 
751 824                         AddNotEnoughSpaceRule(rRule, iItem);
  752 825                 }
  753 826         }
< >     827         EnableNotEnoughSpaceControls();
754 828 }
  755 829
  756 830 void RuleEditDlg::OnNotEnoughSpaceAddButton()
 
764 838                 m_rules.GetNotEnoughSpaceRules().Add(rRule);
  765 839                 AddNotEnoughSpaceRule(rRule, -1);
  766 840         }
< >     841         EnableNotEnoughSpaceControls();
767 842 }
  768 843
  769 844 void RuleEditDlg::OnNotEnoughSpaceRemoveButton()
  770 845 {
  771 846         OnRemoveButton(m_ctlNotEnoughSpaceRulesList, m_rules.GetNotEnoughSpaceRules());
< >     847         EnableNotEnoughSpaceControls();
772 848 }
  773 849
  774 850 void RuleEditDlg::OnNotEnoughSpaceUpButton()
  775 851 {
  776 852         OnUpButton(this, m_ctlNotEnoughSpaceRulesList, m_rules.GetNotEnoughSpaceRules(), &RuleEditDlg::FillNotEnoughSpaceList);
< >     853         EnableNotEnoughSpaceControls();
777 854 }
  778 855
  779 856 void RuleEditDlg::OnNotEnoughSpaceDownButton()
  780 857 {
  781 858         OnDownButton(this, m_ctlNotEnoughSpaceRulesList, m_rules.GetNotEnoughSpaceRules(), &RuleEditDlg::FillNotEnoughSpaceList);
< >     859         EnableNotEnoughSpaceControls();
< _   782 860 }