templateInfo.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include "./templateInfo.h"
  2. #include "./pageInfo.h"
  3. #include "./common.h"
  4. LoginTemplateInfo::LoginTemplateInfo()
  5. : ref(1), title(NULL), message(NULL)
  6. {
  7. }
  8. LoginTemplateInfo::~LoginTemplateInfo()
  9. {
  10. LoginBox_FreeString(title);
  11. LoginBox_FreeString(message);
  12. }
  13. HRESULT LoginTemplateInfo::CreateInstance(LoginTemplateInfo **instance)
  14. {
  15. if (NULL == instance) return E_POINTER;
  16. *instance = new LoginTemplateInfo();
  17. if (NULL == *instance) return E_OUTOFMEMORY;
  18. return S_OK;
  19. }
  20. ULONG LoginTemplateInfo::AddRef()
  21. {
  22. return InterlockedIncrement((LONG*)&ref);
  23. }
  24. ULONG LoginTemplateInfo::Release()
  25. {
  26. if (0 == ref)
  27. return ref;
  28. LONG r = InterlockedDecrement((LONG*)&ref);
  29. if (0 == r)
  30. delete(this);
  31. return r;
  32. }
  33. HRESULT LoginTemplateInfo::GetType(GUID *templateUid)
  34. {
  35. if (NULL == templateUid) return E_INVALIDARG;
  36. *templateUid = LTUID_INFO;
  37. return S_OK;
  38. }
  39. HRESULT LoginTemplateInfo::SetParameter(LPCWSTR pszKey, LPCWSTR pszValue)
  40. {
  41. if (S_OK == LoginBox_IsStrEqInvI(pszKey, L"title"))
  42. {
  43. LoginBox_FreeString(title);
  44. title = LoginBox_CopyString(pszValue);
  45. }
  46. else if (S_OK == LoginBox_IsStrEqInvI(pszKey, L"message"))
  47. {
  48. LoginBox_FreeString(message);
  49. message = LoginBox_CopyString(pszValue);
  50. }
  51. return S_OK;
  52. }
  53. HRESULT LoginTemplateInfo::IsValid()
  54. {
  55. return S_OK;
  56. }
  57. HRESULT LoginTemplateInfo::IsIdentical(LoginTemplate *test)
  58. {
  59. if (NULL == test)
  60. return E_INVALIDARG;
  61. GUID typeId;
  62. if (FAILED(test->GetType(&typeId)) || FALSE == IsEqualGUID(LTUID_INFO, typeId))
  63. return S_FALSE;
  64. LoginTemplateInfo *testInfo = (LoginTemplateInfo*)test;
  65. if(S_OK != LoginBox_IsStrEq(title, testInfo->title) ||
  66. S_OK != LoginBox_IsStrEq(message, testInfo->message))
  67. {
  68. return S_FALSE;
  69. }
  70. return S_OK;
  71. }
  72. HWND LoginTemplateInfo::CreatePage(HWND hLoginbox, HWND hParent)
  73. {
  74. HWND hPage = LoginPageInfo::CreatePage(hLoginbox, hParent);
  75. if (NULL == hPage) return NULL;
  76. if (NULL != title)
  77. LoginPage_SetTitle(hPage, title);
  78. if (NULL != message)
  79. LoginPageInfo_SetMessage(hPage, message);
  80. return hPage;
  81. }