VSRipIndexingDlg.cpp
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:4k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2005 Gabest
  3.  * http://www.gabest.org
  4.  *
  5.  *  This Program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2, or (at your option)
  8.  *  any later version.
  9.  *   
  10.  *  This Program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  *  GNU General Public License for more details.
  14.  *   
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with GNU Make; see the file COPYING.  If not, write to
  17.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  18.  *  http://www.gnu.org/copyleft/gpl.html
  19.  *
  20.  */
  21. // VSRipIndexingDlg.cpp : implementation file
  22. //
  23. #include "stdafx.h"
  24. #include <afxpriv.h>
  25. #include "VSRip.h"
  26. #include "VSRipIndexingDlg.h"
  27. // CVSRipIndexingDlg dialog
  28. IMPLEMENT_DYNAMIC(CVSRipIndexingDlg, CVSRipPage)
  29. CVSRipIndexingDlg::CVSRipIndexingDlg(IVSFRipper* pVSFRipper, CWnd* pParent /*=NULL*/)
  30. : CVSRipPage(pVSFRipper, CVSRipIndexingDlg::IDD, pParent)
  31. , m_bBeep(FALSE), m_bExit(FALSE)
  32. , m_fFinished(false)
  33. , m_fAuto(false)
  34. {
  35. }
  36. CVSRipIndexingDlg::~CVSRipIndexingDlg()
  37. {
  38. }
  39. void CVSRipIndexingDlg::DoDataExchange(CDataExchange* pDX)
  40. {
  41. CVSRipPage::DoDataExchange(pDX);
  42. DDX_Control(pDX, IDC_PROGRESS1, m_progress);
  43. DDX_Control(pDX, IDC_EDIT1, m_log);
  44. DDX_Check(pDX, IDC_CHECK1, m_bExit);
  45. DDX_Check(pDX, IDC_CHECK2, m_bBeep);
  46. }
  47. STDMETHODIMP CVSRipIndexingDlg::OnMessage(LPCTSTR msg)
  48. {
  49. if(CEdit* pLog = (CEdit*)CEdit::FromHandle(m_log.m_hWnd))
  50. {
  51. CString str = msg;
  52. str += _T("rn");
  53. int len = pLog->GetWindowTextLength();
  54. pLog->SetSel(len, len);
  55. pLog->ReplaceSel(str);
  56. }
  57. return S_OK;
  58. }
  59. STDMETHODIMP CVSRipIndexingDlg::OnProgress(double progress)
  60. {
  61. if(CProgressCtrl* pProgress = (CProgressCtrl*)CProgressCtrl::FromHandle(m_progress.m_hWnd))
  62. {
  63. pProgress->SetPos((int)(progress * 100));
  64. }
  65. return S_OK;
  66. }
  67. STDMETHODIMP CVSRipIndexingDlg::OnFinished(bool fSucceeded)
  68. {
  69. m_fFinished = fSucceeded;
  70. GetParent()->PostMessage(WM_KICKIDLE); // and kick it hard :)
  71. if(m_fFinished && m_bBeep) MessageBeep(-1);
  72. if(m_fFinished && m_bExit) GetParent()->PostMessage(WM_COMMAND, IDCANCEL);
  73. if(!fSucceeded)
  74. {
  75.         VSFRipperData rd;
  76. m_pVSFRipper->GetRipperData(rd);
  77. if(rd.fCloseIgnoreError) GetParent()->PostMessage(WM_COMMAND, IDCANCEL);
  78. }
  79. return S_OK;
  80. }
  81. BEGIN_MESSAGE_MAP(CVSRipIndexingDlg, CVSRipPage)
  82. ON_BN_CLICKED(IDC_BUTTON1, OnIndex)
  83. ON_UPDATE_COMMAND_UI(IDC_BUTTON1, OnUpdateIndex)
  84. ON_WM_SHOWWINDOW()
  85. ON_BN_CLICKED(IDC_CHECK2, OnBnClickedCheck2)
  86. ON_BN_CLICKED(IDC_CHECK1, OnBnClickedCheck1)
  87. END_MESSAGE_MAP()
  88. // CVSRipIndexingDlg message handlers
  89. void CVSRipIndexingDlg::OnIndex()
  90. {
  91. if(S_OK == m_pVSFRipper->IsIndexing())
  92. {
  93. m_pVSFRipper->Abort(false);
  94. }
  95. else
  96. {
  97. m_progress.SetRange(0, 100);
  98. m_progress.SetPos(0);
  99. m_log.SetWindowText(_T(""));
  100. m_log.SetMargins(0, 0);
  101. m_pVSFRipper->Index();
  102. }
  103. GetParent()->PostMessage(WM_KICKIDLE); // and kick it hard :)
  104. }
  105. void CVSRipIndexingDlg::OnUpdateIndex(CCmdUI* pCmdUI)
  106. {
  107. pCmdUI->SetText(S_OK == m_pVSFRipper->IsIndexing() ? _T("&Stop") : _T("Re&start"));
  108. }
  109. void CVSRipIndexingDlg::OnShowWindow(BOOL bShow, UINT nStatus)
  110. {
  111. __super::OnShowWindow(bShow, nStatus);
  112. m_fFinished = false;
  113. if(bShow)
  114. {
  115.         VSFRipperData rd;
  116. m_pVSFRipper->GetRipperData(rd);
  117. m_bBeep = rd.fBeep;
  118. m_bExit = rd.fClose;
  119. m_fAuto = rd.fAuto;
  120. UpdateData(FALSE);
  121. if(S_OK != m_pVSFRipper->IsIndexing())
  122. {
  123. if(!m_fAuto)
  124. {
  125. m_progress.SetRange(0, 100);
  126.                 m_progress.SetPos(0);
  127. m_log.SetWindowText(_T(""));
  128. m_log.SetMargins(0, 0);
  129. }
  130. m_pVSFRipper->Index();
  131. }
  132. }
  133. else
  134. {
  135.         VSFRipperData rd;
  136. m_pVSFRipper->GetRipperData(rd);
  137. UpdateData();
  138. rd.fBeep = !m_bBeep;
  139. rd.fClose = !!m_bExit;
  140. m_pVSFRipper->UpdateRipperData(rd);
  141. }
  142. }
  143. void CVSRipIndexingDlg::OnBnClickedCheck2()
  144. {
  145. UpdateData();
  146. }
  147. void CVSRipIndexingDlg::OnBnClickedCheck1()
  148. {
  149. UpdateData();
  150. }