aboutsummaryrefslogtreecommitdiff
path: root/Src/auth/Loginbox/templateAddress.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/auth/Loginbox/templateAddress.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/auth/Loginbox/templateAddress.cpp')
-rw-r--r--Src/auth/Loginbox/templateAddress.cpp148
1 files changed, 148 insertions, 0 deletions
diff --git a/Src/auth/Loginbox/templateAddress.cpp b/Src/auth/Loginbox/templateAddress.cpp
new file mode 100644
index 00000000..81b51f80
--- /dev/null
+++ b/Src/auth/Loginbox/templateAddress.cpp
@@ -0,0 +1,148 @@
+#include "./templateAddress.h"
+#include "./pageAddress.h"
+#include "./common.h"
+
+#include <shlwapi.h>
+#include <strsafe.h>
+
+LoginTemplateAddress::LoginTemplateAddress()
+ : ref(1), title(NULL), message(NULL), address(NULL), addressTitle(NULL),
+ replaceUsername(FALSE)
+{
+}
+
+LoginTemplateAddress::~LoginTemplateAddress()
+{
+ LoginBox_FreeString(title);
+ LoginBox_FreeString(message);
+ LoginBox_FreeString(address);
+ LoginBox_FreeString(addressTitle);
+}
+
+HRESULT LoginTemplateAddress::CreateInstance(LoginTemplateAddress **instance)
+{
+ if (NULL == instance) return E_POINTER;
+ *instance = new LoginTemplateAddress();
+ if (NULL == *instance) return E_OUTOFMEMORY;
+ return S_OK;
+}
+
+ULONG LoginTemplateAddress::AddRef()
+{
+ return InterlockedIncrement((LONG*)&ref);
+}
+
+ULONG LoginTemplateAddress::Release()
+{
+ if (0 == ref)
+ return ref;
+
+ LONG r = InterlockedDecrement((LONG*)&ref);
+ if (0 == r)
+ delete(this);
+
+ return r;
+}
+
+HRESULT LoginTemplateAddress::GetType(GUID *templateUid)
+{
+ if (NULL == templateUid) return E_INVALIDARG;
+ *templateUid = LTUID_ADDRESS;
+ return S_OK;
+}
+
+HRESULT LoginTemplateAddress::SetParameter(LPCWSTR pszKey, LPCWSTR pszValue)
+{
+
+ if (S_OK == LoginBox_IsStrEqInvI(pszKey, L"title"))
+ {
+ LoginBox_FreeString(title);
+ title = LoginBox_CopyString(pszValue);
+ }
+ else if (S_OK == LoginBox_IsStrEqInvI(pszKey, L"message"))
+ {
+ LoginBox_FreeString(message);
+ message = LoginBox_CopyString(pszValue);
+ }
+ else if (S_OK == LoginBox_IsStrEqInvI(pszKey, L"address"))
+ {
+ LoginBox_FreeString(address);
+ address = LoginBox_CopyString(pszValue);
+ }
+ else if (S_OK == LoginBox_IsStrEqInvI(pszKey, L"addressTitle"))
+ {
+ LoginBox_FreeString(addressTitle);
+ addressTitle = LoginBox_CopyString(pszValue);
+ }
+ else if (S_OK == LoginBox_IsStrEqInvI(pszKey, L"replaceUsername"))
+ {
+ if (NULL != pszValue)
+ {
+ WORD charType;
+ LPCWSTR p = pszValue;
+ while(L'\0' != *p)
+ {
+ if (FALSE == GetStringTypeW(CT_CTYPE1, p, 1, &charType) ||
+ 0 != ((C1_DIGIT | C1_XDIGIT) & charType))
+ {
+ break;
+ }
+ p = CharNext(p);
+ }
+ INT r;
+ if (FALSE != StrToIntEx(p, STIF_SUPPORT_HEX, &r) && 0 != r)
+ replaceUsername = TRUE;
+
+ }
+ }
+ return S_OK;
+}
+
+HRESULT LoginTemplateAddress::IsValid()
+{
+ return S_OK;
+}
+
+HRESULT LoginTemplateAddress::IsIdentical(LoginTemplate *test)
+{
+ if (NULL == test)
+ return E_INVALIDARG;
+
+ GUID typeId;
+ if (FAILED(test->GetType(&typeId)) || FALSE == IsEqualGUID(LTUID_ADDRESS, typeId))
+ return S_FALSE;
+
+ LoginTemplateAddress *testAddr = (LoginTemplateAddress*)test;
+
+ if(S_OK != LoginBox_IsStrEq(title, testAddr->title) ||
+ S_OK != LoginBox_IsStrEq(message, testAddr->message) ||
+ S_OK != LoginBox_IsStrEqInvI(address, testAddr->address) ||
+ S_OK != LoginBox_IsStrEq(addressTitle, testAddr->addressTitle) ||
+ replaceUsername != testAddr->replaceUsername)
+ {
+ return S_FALSE;
+ }
+
+ return S_OK;
+}
+
+
+HWND LoginTemplateAddress::CreatePage(HWND hLoginbox, HWND hParent)
+{
+ HWND hPage = LoginPageAddress::CreatePage(hLoginbox, hParent);
+ if (NULL == hPage) return NULL;
+
+ if (NULL != title)
+ LoginPage_SetTitle(hPage, title);
+
+ if (NULL != message)
+ LoginPageAddress_SetMessage(hPage, message);
+
+ if (NULL != address)
+ LoginPageAddress_SetAddress(hPage, address, replaceUsername);
+
+ if (NULL != addressTitle)
+ LoginPageAddress_SetAddressTitle(hPage, addressTitle);
+
+ return hPage;
+} \ No newline at end of file