home *** CD-ROM | disk | FTP | other *** search
/ PC World 2003 June / PCWorld_2003-06_cd.bin / KOMUNIK / MIRRORIT / SRC / SESSIONPROPERTIESSHEET.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1998-01-13  |  7.9 KB  |  281 lines

  1. // SessionPropertiesSheet.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "MirrorIt.h"
  6. #include "SessionPropertiesMainPage.h"
  7. #include "SessionPropertiesMirrorPage.h"
  8. #include "SessionPropertiesFileNamePage.h"
  9. #include "SessionPropertiesFileTypesPage.h"
  10. #include "SessionPropertiesLimitPage.h"
  11. #include "SessionPropertiesProxyPage.h"
  12. #include "SessionPropertiesPasswordPage.h"
  13. #include "SessionPropertiesAdvancedPage.h"
  14. #include "SessionPropertiesSheet.h"
  15. #include "Session.h"
  16.  
  17. #ifdef _DEBUG
  18. #define new DEBUG_NEW
  19. #undef THIS_FILE
  20. static char THIS_FILE[] = __FILE__;
  21. #endif
  22.  
  23. /////////////////////////////////////////////////////////////////////////////
  24. // CSessionPropertiesSheet
  25.  
  26. IMPLEMENT_DYNAMIC(CSessionPropertiesSheet, CPropertySheet)
  27.  
  28. CSessionPropertiesSheet::CSessionPropertiesSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
  29.     :CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
  30. {
  31. }
  32.  
  33. CSessionPropertiesSheet::CSessionPropertiesSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
  34.     :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
  35. {
  36. }
  37.  
  38. CSessionPropertiesSheet::~CSessionPropertiesSheet()
  39. {
  40.     if (page1) delete page1;
  41.     if (page2) delete page2;
  42.     if (page3) delete page3;
  43.     if (page4) delete page4;
  44.     if (page5) delete page5;
  45.     if (page6) delete page6;
  46.     if (page7) delete page7;
  47.     if (page8) delete page8;
  48. }
  49.  
  50.  
  51. BEGIN_MESSAGE_MAP(CSessionPropertiesSheet, CPropertySheet)
  52.     //{{AFX_MSG_MAP(CSessionPropertiesSheet)
  53.         // NOTE - the ClassWizard will add and remove mapping macros here.
  54.     //}}AFX_MSG_MAP
  55. END_MESSAGE_MAP()
  56.  
  57. /////////////////////////////////////////////////////////////////////////////
  58. // CSessionPropertiesSheet message handlers
  59.  
  60. CSessionPropertiesSheet::CSessionPropertiesSheet(BOOL bNew)
  61.     :CPropertySheet(bNew ? IDC_SESSIONADD : IDC_SESSIONPROPERTIES)
  62. {
  63.     page1 = new CSessionPropertiesMainPage;
  64.     AddPage(page1);
  65.     page1 -> m_psp.dwFlags &= ~(PSP_HASHELP);
  66.  
  67.     page2 = new CSessionPropertiesMirrorPage;
  68.     AddPage(page2);
  69.     page2 -> m_psp.dwFlags &= ~(PSP_HASHELP);
  70.  
  71.     page3 = new CSessionPropertiesFileNamePage;
  72.     AddPage(page3);
  73.     page3 -> m_psp.dwFlags &= ~(PSP_HASHELP);
  74.  
  75.     page4 = new CSessionPropertiesFileTypesPage;
  76.     AddPage(page4);
  77.     page4 -> m_psp.dwFlags &= ~(PSP_HASHELP);
  78.  
  79.     page5 = new CSessionPropertiesLimitPage;
  80.     AddPage(page5);
  81.     page5 -> m_psp.dwFlags &= ~(PSP_HASHELP);
  82.  
  83.     page6 = new CSessionPropertiesProxyPage;
  84.     AddPage(page6);
  85.     page6 -> m_psp.dwFlags &= ~(PSP_HASHELP);
  86.  
  87.     page7 = new CSessionPropertiesPasswordPage;
  88.     AddPage(page7);
  89.     page7 -> m_psp.dwFlags &= ~(PSP_HASHELP);
  90.  
  91.     page8 = new CSessionPropertiesAdvancedPage;
  92.     AddPage(page8);
  93.     page8 -> m_psp.dwFlags &= ~(PSP_HASHELP);
  94.  
  95.     m_psh.dwFlags |= (PSH_NOAPPLYNOW);
  96.     m_psh.dwFlags &= ~(PSH_HASHELP);
  97.  
  98. }
  99.  
  100. void CSessionPropertiesSheet::SetData(CSession & session)
  101. {
  102.     page1 -> m_BaseURL = session.m_BaseURL;
  103.     page1 -> m_SessionName = session.m_SessionName;
  104.     page1 -> m_Comment = session.m_Comment;
  105.     page1 -> m_Directory = session.m_Directory;
  106.  
  107.     page2 -> m_Mirror = session.m_Mirror;
  108.     page2 -> m_LocalURLs = session.m_LocalURLs;
  109.  
  110.     page3 -> m_LongFileName = session.m_LongFileName;
  111.     page3 -> m_FullNames = session.m_FullName;
  112.  
  113.     int i, j;
  114.     
  115.     POSITION item = session.m_MimeTypes.GetHeadPosition();
  116.     while (item != NULL)
  117.     {
  118.         page4 -> m_LMimeTypes.AddTail(session.m_MimeTypes.GetNext(item));
  119.     }
  120.  
  121.     page5 -> m_BNumberOfFiles = session.m_BNumberOfFiles;
  122.     page5 -> m_NumberOfFiles = session.m_NumberOfFiles;
  123.     page5 -> m_BNumberOfLevels = session.m_BNumberOfLevels;
  124.     page5 -> m_NumberOfLevels = session.m_NumberOfLevels;
  125.     page5 -> m_BNumberOfKBytes = session.m_BNumberOfKBytes;
  126.  
  127.     page6 -> m_BProxy = session.m_BProxy;
  128.     page6 -> m_ProxyServer = session.m_ProxyServer;
  129.     page6 -> m_ProxyPort = session.m_ProxyPort;
  130.     page6 -> m_NoProxy = session.m_NoProxy;
  131.  
  132.     SYSTEMTIME st;
  133.     st.wYear = session.m_TModifiedSince.GetYear();
  134.     st.wMonth = session.m_TModifiedSince.GetMonth();
  135.     st.wDayOfWeek = session.m_TModifiedSince.GetDayOfWeek();
  136.     st.wDay = session.m_TModifiedSince.GetDay();
  137.     st.wHour = session.m_TModifiedSince.GetHour();
  138.     st.wMinute = session.m_TModifiedSince.GetMinute();
  139.     st.wSecond = session.m_TModifiedSince.GetSecond();
  140.     st.wMilliseconds = 0;
  141.     page8 -> m_DateTime = st;
  142.     page8 -> m_BDate = session.m_ModifiedSince;
  143.     page8 -> m_Multiple = session.m_Multiple;
  144.     page8 -> m_Temporary = session.m_Temporary;
  145.     page8 -> m_Permanent = session.m_Permanent;
  146.     page8 -> m_Exclude = session.m_Exclude;
  147.  
  148.     page7 -> m_UserName = session.m_UserName;
  149.     page7 -> m_Password = session.m_Password;
  150.     
  151.     i = session.m_NumberOfBytes;
  152.     j = 0;
  153.  
  154.     while (i > UD_MAXVAL)
  155.     {
  156.         j++;
  157.         i >>= 10;
  158.     }
  159.     page5 -> m_NumberOfKBytes = i;
  160.     page5 -> m_KB = j;
  161. }
  162.  
  163. BOOL CSessionPropertiesSheet::GetData(CSession & session)
  164. {
  165.     BOOL result = FALSE;
  166.  
  167.     if (page1 -> m_Directory[page1 -> m_Directory.GetLength() - 1] != '\\')
  168.         page1 -> m_Directory += '\\';
  169.     SetString(session.m_BaseURL, page1 -> m_BaseURL, result);
  170.     SetString(session.m_SessionName, page1 -> m_SessionName, result);
  171.     SetString(session.m_Comment, page1 -> m_Comment, result);
  172.     SetString(session.m_Directory, page1 -> m_Directory, result);
  173.  
  174.     SetInt(session.m_Mirror, page2 -> m_Mirror, result);
  175.     SetBool(session.m_LocalURLs, page2 -> m_LocalURLs, result);
  176.  
  177.     SetInt(session.m_LongFileName, page3 -> m_LongFileName, result);
  178.     SetBool(session.m_FullName, page3 -> m_FullNames, result);
  179.  
  180.     BOOL b = session.m_MimeTypes.GetCount() == page4 -> m_LMimeTypes.GetCount();
  181.  
  182.     if (b)
  183.     {
  184.         POSITION item = session.m_MimeTypes.GetHeadPosition();
  185.         while (item != NULL)
  186.         {
  187.             CString temp = session.m_MimeTypes.GetNext(item);
  188.             b = b && (page4 -> m_LMimeTypes.Find(temp) != NULL);
  189.         }
  190.     }
  191.     if (!b)
  192.     {
  193.         result = TRUE;
  194.         session.m_MimeTypes.RemoveAll();
  195.  
  196.         POSITION item = page4 -> m_LMimeTypes.GetHeadPosition();
  197.         while (item != NULL)
  198.         {
  199.             session.m_MimeTypes.AddTail(page4 -> m_LMimeTypes.GetNext(item));
  200.         }
  201.  
  202.     }
  203.  
  204.     SetBool(session.m_BNumberOfFiles, page5 -> m_BNumberOfFiles, result);
  205.     SetUINT(session.m_NumberOfFiles, page5 -> m_NumberOfFiles, result);
  206.     SetBool(session.m_BNumberOfLevels, page5 -> m_BNumberOfLevels, result);
  207.     SetUINT(session.m_NumberOfLevels, page5 -> m_NumberOfLevels, result);
  208.     SetBool(session.m_BNumberOfKBytes, page5 -> m_BNumberOfKBytes, result);
  209.  
  210.     UINT i = page5 -> m_NumberOfKBytes, j = page5 -> m_KB;
  211.     while (j > 0)
  212.     {
  213.         i *= 1024;
  214.         j--;
  215.     }
  216.     SetUINT(session.m_NumberOfBytes, i, result);
  217.  
  218.     SetBool(session.m_BProxy, page6 -> m_BProxy, result);
  219.     SetString(session.m_ProxyServer, page6 -> m_ProxyServer, result);
  220.     SetUINT(session.m_ProxyPort, page6 -> m_ProxyPort, result);
  221.     SetString(session.m_NoProxy, page6 -> m_NoProxy, result);
  222.  
  223.     SetString(session.m_UserName, page7 -> m_UserName, result);
  224.     SetString(session.m_Password, page7 -> m_Password, result);
  225.  
  226.     CTime temptime(page8 -> m_DateTime.wYear, page8 -> m_DateTime.wMonth, 
  227.                    page8 -> m_DateTime.wDay, page8 -> m_DateTime.wHour, 
  228.                    page8 -> m_DateTime.wMinute, page8 -> m_DateTime.wSecond, 0);
  229.     if (temptime != session.m_TModifiedSince)
  230.     {
  231.         session.m_TModifiedSince = temptime;
  232.         result = 1;
  233.     }
  234.     SetBool(session.m_ModifiedSince, page8 -> m_BDate, result);
  235.     SetBool(session.m_Multiple, page8 -> m_Multiple, result);
  236.     SetBool(session.m_Permanent, page8 -> m_Permanent, result);
  237.     SetBool(session.m_Temporary, page8 -> m_Temporary, result);
  238.     SetString(session.m_Exclude, page8 -> m_Exclude, result);
  239.  
  240.     session.url.parse(session.m_BaseURL);
  241.  
  242.     return result;
  243. }
  244.  
  245. void CSessionPropertiesSheet::SetString(CString & s1, CString & s2, BOOL & b)
  246. {
  247.     if (s1.Compare(s2))
  248.     {
  249.         s1 = s2;
  250.         b = TRUE;
  251.     }
  252. }
  253.  
  254.  
  255. void CSessionPropertiesSheet::SetInt(int & i1, int & i2, BOOL & b)
  256. {
  257.     if (i1 != i2)
  258.     {
  259.         i1 = i2;
  260.         b = TRUE;
  261.     }
  262. }
  263.  
  264. void CSessionPropertiesSheet::SetBool(BOOL & b1, BOOL & b2, BOOL & b)
  265. {
  266.     if (b1 ^ b2)
  267.     {
  268.         b1 = b2;
  269.         b = TRUE;
  270.     }
  271. }
  272.  
  273. void CSessionPropertiesSheet::SetUINT(UINT & i1, UINT & i2, BOOL & b)
  274. {
  275.     if (i1 != i2)
  276.     {
  277.         i1 = i2;
  278.         b = TRUE;
  279.     }
  280. }
  281.