Clone
ixen
committed
on 14 Nov 20
Added "custom rules" button on "already exists" dialog box. Fixed problems with sqlite data storage. Auto-selection of data in rule edit com… Show more
Added "custom rules" button on "already exists" dialog box. Fixed problems with sqlite data storage. Auto-selection of data in rule edit combos.

Show less

src/ch/FeedbackReplaceDlg.cpp (+13 -0)
1 1 // FeedbackReplaceDlg.cpp : implementation file
2 2 //
3 3
4 4 #include "stdafx.h"
5 5 #include "ch.h"
6 6 #include "FeedbackReplaceDlg.h"
7 7 #include "../libictranslate/ResourceManager.h"
8 8 #include "FeedbackHandler.h"
9 9 #include "resource.h"
10 10 #include "../libchengine/TFileInfo.h"
11 11 #include "StringHelpers.h"
12 12 #include "../libchengine/FeedbackPredefinedRules.h"
  13 #include "RuleEditDlg.h"
13 14
14 15 using namespace chengine;
15 16 using namespace string;
16 17
17 18 IMPLEMENT_DYNAMIC(CFeedbackReplaceDlg, ictranslate::CLanguageDialog)
18 19
19 20 CFeedbackReplaceDlg::CFeedbackReplaceDlg(chengine::FeedbackRules& currentRules, const chengine::TFileInfo& spSrcFile, const chengine::TFileInfo& spDstFile, const TString& strSuggestedName, CWnd* pParent /*=nullptr*/)
20 21         : ictranslate::CLanguageDialog(IDD_FEEDBACK_REPLACE_DIALOG, pParent),
21 22         m_rules(currentRules),
22 23         m_rSrcFile(spSrcFile),
23 24         m_rDstFile(spDstFile),
24 25         m_strNewName(strSuggestedName)
25 26 {
26 27 }
27 28
28 29 CFeedbackReplaceDlg::~CFeedbackReplaceDlg()
29 30 {
30 31 }
31 32
32 33 void CFeedbackReplaceDlg::DoDataExchange(CDataExchange* pDX)
 
35 36         DDX_Control(pDX, IDC_SRC_ICON_STATIC, m_ctlSrcIcon);
36 37         DDX_Control(pDX, IDC_DST_ICON_STATIC, m_ctlDstIcon);
37 38
38 39         DDX_Control(pDX, IDC_SRC_FILENAME_EDIT, m_ctlSrcName);
39 40         DDX_Control(pDX, IDC_SRC_PATH_EDIT, m_ctlSrcPath);
40 41         DDX_Control(pDX, IDC_SRC_MODIFIEDDATE_EDIT, m_ctlSrcDate);
41 42         DDX_Control(pDX, IDC_SRC_FILESIZE_EDIT, m_ctlSrcSize);
42 43
43 44         DDX_Control(pDX, IDC_DST_FILENAME_EDIT, m_ctlDstName);
44 45         DDX_Control(pDX, IDC_DST_RENAME_EDIT, m_ctlDstRename);
45 46         DDX_Control(pDX, IDC_DST_PATH_EDIT, m_ctlDstPath);
46 47         DDX_Control(pDX, IDC_DST_MODIFIEDDATE_EDIT, m_ctlDstDate);
47 48         DDX_Control(pDX, IDC_DST_FILESIZE_EDIT, m_ctlDstSize);
48 49
49 50         DDX_Control(pDX, IDC_REPLACE_BUTTON, m_btnReplace);
50 51         DDX_Control(pDX, IDC_RENAME_BUTTON, m_btnRename);
51 52         DDX_Control(pDX, IDC_RESUME_BUTTON, m_btnResume);
52 53         DDX_Control(pDX, IDC_SKIP_BUTTON, m_btnSkip);
53 54         DDX_Control(pDX, IDC_PAUSE_BUTTON, m_btnPause);
54 55         DDX_Control(pDX, IDC_CANCEL_BUTTON, m_btnCancel);
  56
  57         DDX_Control(pDX, IDC_CUSTOM_RULES_BUTTON, m_btnCustomRules);
55 58 }
56 59
57 60 BEGIN_MESSAGE_MAP(CFeedbackReplaceDlg, ictranslate::CLanguageDialog)
58 61         ON_BN_CLICKED(IDC_REPLACE_BUTTON, &CFeedbackReplaceDlg::OnBnClickedReplaceButton)
59 62         ON_BN_CLICKED(IDC_RENAME_BUTTON, &CFeedbackReplaceDlg::OnBnClickedRenameButton)
60 63         ON_BN_CLICKED(IDC_RESUME_BUTTON, &CFeedbackReplaceDlg::OnBnClickedCopyRestButton)
61 64         ON_BN_CLICKED(IDC_SKIP_BUTTON, &CFeedbackReplaceDlg::OnBnClickedSkipButton)
62 65         ON_BN_CLICKED(IDC_PAUSE_BUTTON, &CFeedbackReplaceDlg::OnBnClickedPauseButton)
63 66         ON_BN_CLICKED(IDC_CANCEL_BUTTON, &CFeedbackReplaceDlg::OnBnClickedCancelButton)
  67         ON_BN_CLICKED(IDC_CUSTOM_RULES_BUTTON, &CFeedbackReplaceDlg::OnBnCustomRulesButton)
64 68         ON_WM_GETMINMAXINFO()
65 69 END_MESSAGE_MAP()
66 70
67 71
68 72 // CFeedbackReplaceDlg message handlers
69 73
70 74 BOOL CFeedbackReplaceDlg::OnInitDialog()
71 75 {
72 76         CLanguageDialog::OnInitDialog();
73 77
74 78         GetWindowRect(&m_rcInitial);
75 79
76 80         // set dialog icon
77 81         HICON hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
78 82         SetIcon(hIcon, FALSE);
79 83
80 84         AddResizableControl(IDC_INFO_STATIC, 0.0, 0.0, 1.0, 0.0);
81 85
82 86         AddResizableControl(IDC_SRC_ICON_STATIC, 0.0, 0.0, 0.0, 0.0);
83 87
 
288 292         case ID_FEEDBACK_SKIP_FILESTHATARENEWERTHANDESTINATION:
289 293                 m_rules.GetAlreadyExistsRules().Merge(FeedbackPredefinedRules::CreateAlreadyExistsRule(EPredefinedRuleCondition::eCondition_WhenNewerThanDst, eResult_Skip));
290 294                 break;
291 295         }
292 296
293 297         EndDialog(chengine::EFeedbackResult::eResult_Skip);
294 298 }
295 299
296 300 void CFeedbackReplaceDlg::OnBnClickedPauseButton()
297 301 {
298 302         UpdateData(TRUE);
299 303         EndDialog(chengine::EFeedbackResult::eResult_Pause);
300 304 }
301 305
302 306 void CFeedbackReplaceDlg::OnBnClickedCancelButton()
303 307 {
304 308         UpdateData(TRUE);
305 309         EndDialog(chengine::EFeedbackResult::eResult_Cancel);
306 310 }
307 311
  312 void CFeedbackReplaceDlg::OnBnCustomRulesButton()
  313 {
  314         RuleEditDlg dlg(m_rules);
  315         if(dlg.DoModal() == IDOK)
  316         {
  317                 // todo: apply modified rules
  318         }
  319 }
  320
308 321 void CFeedbackReplaceDlg::OnCancel()
309 322 {
310 323         UpdateData(TRUE);
311 324         EndDialog(chengine::EFeedbackResult::eResult_Cancel);
312 325 }
313 326
314 327 const chengine::FeedbackRules& CFeedbackReplaceDlg::GetRules() const
315 328 {
316 329         return m_rules;
317 330 }
318 331
319 332 void CFeedbackReplaceDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
320 333 {
321 334         if (m_rcInitial.Width() != 0 && m_rcInitial.Height() != 0)
322 335         {
323 336                 lpMMI->ptMinTrackSize.y = m_rcInitial.Height();
324 337                 lpMMI->ptMaxTrackSize.y = m_rcInitial.Height();
325 338         }
326 339 }