From fb8b43dbce8bc310718614384297aeaabb9a3cbb Mon Sep 17 00:00:00 2001 From: Michael Krelin Date: Mon, 05 Jul 2004 01:53:09 +0000 Subject: initial commit into svn repository git-svn-id: http://svn.klever.net/kin/bigbrother/trunk@1 fe716a7a-6dde-0310-88d9-d003556173a8 --- (limited to 'GeneralPage.cpp') diff --git a/GeneralPage.cpp b/GeneralPage.cpp new file mode 100644 index 0000000..58ebe74 --- a/dev/null +++ b/GeneralPage.cpp @@ -0,0 +1,168 @@ +// GeneralPage.cpp : implementation file +// + +#include "stdafx.h" +#include "BigBrother.h" +#include "GeneralPage.h" +#include "HostPropertyPages.h" +#include "BigBrotherDoc.h" +#include "BigBrotherView.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CGeneralPage property page + +IMPLEMENT_DYNCREATE(CGeneralPage, CPropertyPage) + +CGeneralPage::CGeneralPage() : CPropertyPage(CGeneralPage::IDD) +{ + //{{AFX_DATA_INIT(CGeneralPage) + m_Desc = _T(""); + m_Host = _T(""); + m_LogActivity = FALSE; + //}}AFX_DATA_INIT +} + +CGeneralPage::~CGeneralPage() +{ +} + +void CGeneralPage::DoDataExchange(CDataExchange* pDX) +{ + CPropertyPage::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CGeneralPage) + DDX_Control(pDX, IDC_LOG_ACTIVITY, m_LogActivityCtl); + DDX_Control(pDX, IDC_HOST, m_HostCtl); + DDX_Control(pDX, IDC_DESC, m_DescCtl); + DDX_Text(pDX, IDC_DESC, m_Desc); + DDX_Text(pDX, IDC_HOST, m_Host); + DDX_Check(pDX, IDC_LOG_ACTIVITY, m_LogActivity); + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CGeneralPage, CPropertyPage) + //{{AFX_MSG_MAP(CGeneralPage) + ON_EN_CHANGE(IDC_HOST, OnChangeHost) + ON_BN_CLICKED(IDC_LOG_ACTIVITY, OnLogActivity) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CGeneralPage message handlers + +void CGeneralPage::OnChangeHost() +{ +CString h,d; + m_HostCtl.GetWindowText(h); + m_DescCtl.GetWindowText(d); + if(d==m_Host){ + m_Desc=h; + m_Host=h; + m_DescCtl.SetWindowText(m_Desc); + } +} + +void CGeneralPage::OnLogActivity() +{ + ASSERT(m_dad->m_Brother); + if(!m_dad->m_Brother->m_Daddy){ + int tmp = m_LogActivityCtl.GetCheck(); + if(tmp==2){ + if(m_LogActivity) + tmp=0; + else + tmp=1; + } + m_LogActivity=tmp; + }else + m_LogActivity=m_LogActivityCtl.GetCheck(); + m_LogActivityCtl.SetCheck(m_LogActivity); + SetupControls(); +} + +void CGeneralPage::UpdatePage() +{ + if(!m_dad->m_Brother) + return; + m_Host=m_dad->m_Brother->m_Host; + m_Desc=m_dad->m_Brother->m_Desc; + m_LogActivity=(m_dad->m_Brother->flags&CBrother::flagsOverrideLogging)?(m_dad->m_Brother->m_bLog?1:0):2; + if(::IsWindow(m_hWnd)){ + UpdateData(FALSE); + SetupControls(); + } +} + +BOOL CGeneralPage::OnSetActive() +{ + UpdatePage(); + + return CPropertyPage::OnSetActive(); +} + +void CGeneralPage::UpdateBrother() +{ + if(!m_dad->m_Brother){ + TRACE0("No brother on update\n"); + return; + } + if(::IsWindow(m_hWnd)) + UpdateData(); +CBrother toCompare; + toCompare = *m_dad->m_Brother; + m_dad->m_Brother->m_Host=m_Host; + m_dad->m_Brother->m_Desc=m_Desc; + switch(m_LogActivity){ + case 0: + m_dad->m_Brother->m_bLog=FALSE; + m_dad->m_Brother->flags|=CBrother::flagsOverrideLogging; + break; + case 1: + m_dad->m_Brother->m_bLog=TRUE; + m_dad->m_Brother->flags|=CBrother::flagsOverrideLogging; + break; + default: + m_dad->m_Brother->flags&=~CBrother::flagsOverrideLogging; + break; + } + m_dad->m_Brother->ParentalAdjust(); + if(toCompare!=(*m_dad->m_Brother)){ + CDocument *pDoc = m_dad->m_Daddy->GetDocument(); + ASSERT(pDoc); + pDoc->SetModifiedFlag(); + } + if(::IsWindow(m_hWnd)){ + UpdateData(FALSE); + SetupControls(); + } + m_dad->m_Daddy->UpdateBrother(m_dad->m_Brother); +} + +void CGeneralPage::SetupControls() +{ +CString tmp; + switch(m_LogActivity){ + case 0: + tmp.LoadString(IDS_LOG_DONTLOG); + break; + case 1: + tmp.LoadString(IDS_LOG_DOLOG); + break; + default: + tmp.LoadString(IDS_LOG_ASKBIGBROTHER); + break; + } + m_LogActivityCtl.SetWindowText(tmp); +} + +BOOL CGeneralPage::OnKillActive() +{ + UpdateBrother(); + return CPropertyPage::OnKillActive(); +} -- cgit v0.9.0.2