VSRipIndexingDlg.cpp

00001 /* 
00002  *      Copyright (C) 2003-2005 Gabest
00003  *      http://www.gabest.org
00004  *
00005  *  This Program is free software; you can redistribute it and/or modify
00006  *  it under the terms of the GNU General Public License as published by
00007  *  the Free Software Foundation; either version 2, or (at your option)
00008  *  any later version.
00009  *   
00010  *  This Program is distributed in the hope that it will be useful,
00011  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00013  *  GNU General Public License for more details.
00014  *   
00015  *  You should have received a copy of the GNU General Public License
00016  *  along with GNU Make; see the file COPYING.  If not, write to
00017  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
00018  *  http://www.gnu.org/copyleft/gpl.html
00019  *
00020  */
00021 
00022 // VSRipIndexingDlg.cpp : implementation file
00023 //
00024 
00025 #include "stdafx.h"
00026 #include <afxpriv.h>
00027 #include "VSRip.h"
00028 #include "VSRipIndexingDlg.h"
00029 
00030 // CVSRipIndexingDlg dialog
00031 
00032 IMPLEMENT_DYNAMIC(CVSRipIndexingDlg, CVSRipPage)
00033 CVSRipIndexingDlg::CVSRipIndexingDlg(IVSFRipper* pVSFRipper, CWnd* pParent /*=NULL*/)
00034         : CVSRipPage(pVSFRipper, CVSRipIndexingDlg::IDD, pParent)
00035         , m_bBeep(FALSE), m_bExit(FALSE)
00036         , m_fFinished(false)
00037         , m_fAuto(false)
00038 {
00039 }
00040 
00041 CVSRipIndexingDlg::~CVSRipIndexingDlg()
00042 {
00043 }
00044 
00045 void CVSRipIndexingDlg::DoDataExchange(CDataExchange* pDX)
00046 {
00047         CVSRipPage::DoDataExchange(pDX);
00048         DDX_Control(pDX, IDC_PROGRESS1, m_progress);
00049         DDX_Control(pDX, IDC_EDIT1, m_log);
00050         DDX_Check(pDX, IDC_CHECK1, m_bExit);
00051         DDX_Check(pDX, IDC_CHECK2, m_bBeep);
00052 }
00053 
00054 STDMETHODIMP CVSRipIndexingDlg::OnMessage(LPCTSTR msg)
00055 {
00056         if(CEdit* pLog = (CEdit*)CEdit::FromHandle(m_log.m_hWnd))
00057         {
00058                 CString str = msg;
00059                 str += _T("\r\n");
00060                 int len = pLog->GetWindowTextLength();
00061                 pLog->SetSel(len, len);
00062                 pLog->ReplaceSel(str);
00063         }
00064 
00065         return S_OK;
00066 }
00067 
00068 STDMETHODIMP CVSRipIndexingDlg::OnProgress(double progress)
00069 {
00070         if(CProgressCtrl* pProgress = (CProgressCtrl*)CProgressCtrl::FromHandle(m_progress.m_hWnd))
00071         {
00072                 pProgress->SetPos((int)(progress * 100));
00073         }
00074 
00075         return S_OK;
00076 }
00077 
00078 STDMETHODIMP CVSRipIndexingDlg::OnFinished(bool fSucceeded)
00079 {
00080         m_fFinished = fSucceeded;
00081 
00082         GetParent()->PostMessage(WM_KICKIDLE); // and kick it hard :)
00083 
00084         if(m_fFinished && m_bBeep) MessageBeep(-1);
00085         if(m_fFinished && m_bExit) GetParent()->PostMessage(WM_COMMAND, IDCANCEL);
00086 
00087         if(!fSucceeded)
00088         {
00089         VSFRipperData rd;
00090                 m_pVSFRipper->GetRipperData(rd);
00091                 if(rd.fCloseIgnoreError) GetParent()->PostMessage(WM_COMMAND, IDCANCEL);
00092         }
00093 
00094         return S_OK;
00095 }
00096 
00097 BEGIN_MESSAGE_MAP(CVSRipIndexingDlg, CVSRipPage)
00098         ON_BN_CLICKED(IDC_BUTTON1, OnIndex)
00099         ON_UPDATE_COMMAND_UI(IDC_BUTTON1, OnUpdateIndex)
00100         ON_WM_SHOWWINDOW()
00101         ON_BN_CLICKED(IDC_CHECK2, OnBnClickedCheck2)
00102         ON_BN_CLICKED(IDC_CHECK1, OnBnClickedCheck1)
00103 END_MESSAGE_MAP()
00104 
00105 
00106 // CVSRipIndexingDlg message handlers
00107 
00108 void CVSRipIndexingDlg::OnIndex()
00109 {
00110         if(S_OK == m_pVSFRipper->IsIndexing())
00111         {
00112                 m_pVSFRipper->Abort(false);
00113         }
00114         else
00115         {
00116                 m_progress.SetRange(0, 100);
00117                 m_progress.SetPos(0);
00118                 m_log.SetWindowText(_T(""));
00119                 m_log.SetMargins(0, 0);
00120 
00121                 m_pVSFRipper->Index();
00122         }
00123 
00124         GetParent()->PostMessage(WM_KICKIDLE); // and kick it hard :)
00125 }
00126 
00127 void CVSRipIndexingDlg::OnUpdateIndex(CCmdUI* pCmdUI)
00128 {
00129         pCmdUI->SetText(S_OK == m_pVSFRipper->IsIndexing() ? _T("&Stop") : _T("Re&start"));
00130 }
00131 
00132 void CVSRipIndexingDlg::OnShowWindow(BOOL bShow, UINT nStatus)
00133 {
00134         __super::OnShowWindow(bShow, nStatus);
00135 
00136         m_fFinished = false;
00137 
00138         if(bShow)
00139         {
00140         VSFRipperData rd;
00141                 m_pVSFRipper->GetRipperData(rd);
00142                 m_bBeep = rd.fBeep;
00143                 m_bExit = rd.fClose;
00144                 m_fAuto = rd.fAuto;
00145                 UpdateData(FALSE);
00146 
00147                 if(S_OK != m_pVSFRipper->IsIndexing())
00148                 {
00149                         if(!m_fAuto)
00150                         {
00151                                 m_progress.SetRange(0, 100);
00152                 m_progress.SetPos(0);
00153                                 m_log.SetWindowText(_T(""));
00154                                 m_log.SetMargins(0, 0);
00155                         }
00156 
00157                         m_pVSFRipper->Index();
00158                 }
00159         }
00160         else
00161         {
00162         VSFRipperData rd;
00163                 m_pVSFRipper->GetRipperData(rd);
00164                 UpdateData();
00165                 rd.fBeep = !m_bBeep;
00166                 rd.fClose = !!m_bExit;
00167                 m_pVSFRipper->UpdateRipperData(rd);
00168         }
00169 }
00170 
00171 void CVSRipIndexingDlg::OnBnClickedCheck2()
00172 {
00173         UpdateData();
00174 }
00175 
00176 void CVSRipIndexingDlg::OnBnClickedCheck1()
00177 {
00178         UpdateData();
00179 }

Generated on Tue Dec 13 14:47:05 2005 for guliverkli by  doxygen 1.4.5