diff --git a/SiaDrive/SiaDrive.htm b/SiaDrive/SiaDrive.htm
index 3050721..02e8883 100644
--- a/SiaDrive/SiaDrive.htm
+++ b/SiaDrive/SiaDrive.htm
@@ -31,18 +31,7 @@
@@ -57,6 +46,25 @@
+
+
+
Create New Wallet
+
+
+
diff --git a/SiaDrive/SiaDriveDlg.cpp b/SiaDrive/SiaDriveDlg.cpp
index 34c4df2..c5510bf 100644
--- a/SiaDrive/SiaDriveDlg.cpp
+++ b/SiaDrive/SiaDriveDlg.cpp
@@ -178,9 +178,18 @@ HRESULT CSiaDriveDlg::OnButtonCancel(IHTMLElement* /*pElement*/)
void CSiaDriveDlg::OnDocumentComplete(LPDISPATCH, LPCTSTR)
{
+ UpdateUi();
+
+ switch (_siaConfig.GetUI_Main_TabIndex())
+ {
+ case WALLET_TAB:
+ {
+ DisplayWalletTab();
+ }
+ break;
+ }
+
SetTimer(IDT_UPDATE, 1000, nullptr);
-
- UpdateData(FALSE);
}
void CSiaDriveDlg::OnTimer(UINT_PTR nIDEvent)
@@ -215,16 +224,54 @@ void CSiaDriveDlg::UpdateUi()
_serverVersion = _siaApi.GetServerVersion().c_str();
SetWalletInfo();
- switch (_siaConfig.GetUI_Main_TabIndex())
+ UpdateData(FALSE);
+}
+
+HRESULT CSiaDriveDlg::GetDomElementById(const CString& id, CComPtr& node)
+{
+ CComPtr elem;
+ return GetDomElementAndNodeById(id, node, elem);
+}
+
+HRESULT CSiaDriveDlg::GetDomElementAndNodeById(const CString& id, CComPtr& node, CComPtr& elem)
+{
+ HRESULT hr;
+ if (SUCCEEDED((hr = GetElement(id, &elem))))
{
- case WALLET_TAB:
- {
- DisplayWalletTab();
- }
- break;
+ hr = elem->QueryInterface(IID_IHTMLDOMNode, reinterpret_cast(&node));
}
- UpdateData(FALSE);
+ return hr;
+}
+
+void CSiaDriveDlg::DisplayCreateWallet()
+{
+ CComPtr mainNode;
+ if (SUCCEEDED(GetDomElementById(L"main_window", mainNode)))
+ {
+ CComPtr div;
+ CComPtr walletCreateNode;
+ if (SUCCEEDED(GetDomElementAndNodeById(L"create_wallet", walletCreateNode, div)))
+ {
+ CComPtr parent;
+ if (SUCCEEDED(walletCreateNode->get_parentNode(&parent)))
+ {
+ CComPtr removedNode;
+ if (SUCCEEDED(parent->removeChild(walletCreateNode, &removedNode)))
+ {
+ CComPtr appendedNode;
+ if (SUCCEEDED(parent->appendChild(removedNode, &appendedNode)))
+ {
+ CComPtr style;
+ if (SUCCEEDED(div->get_style(&style)))
+ {
+ style->put_display(L"block");
+ }
+ }
+ }
+ }
+ }
+ }
}
void CSiaDriveDlg::DisplayWalletTab()
@@ -234,6 +281,6 @@ void CSiaDriveDlg::DisplayWalletTab()
}
else
{
-
+ DisplayCreateWallet();
}
}
diff --git a/SiaDrive/SiaDriveDlg.h b/SiaDrive/SiaDriveDlg.h
index 071867c..4f2194e 100644
--- a/SiaDrive/SiaDriveDlg.h
+++ b/SiaDrive/SiaDriveDlg.h
@@ -41,9 +41,12 @@ protected:
DECLARE_DHTML_EVENT_MAP()
private:
+ void DisplayCreateWallet();
void DisplayWalletTab();
void SetWalletInfo();
void UpdateUi();
+ HRESULT GetDomElementById(const CString& id, CComPtr& node);
+ HRESULT GetDomElementAndNodeById(const CString& id, CComPtr& node, CComPtr& elem);
private:
CSiaDriveConfig _siaConfig;