1
0

More generic element swapping

This commit is contained in:
Scott E. Graves
2017-02-09 23:22:19 -06:00
parent 02f27488eb
commit d5f9125777
2 changed files with 66 additions and 69 deletions

View File

@@ -13,7 +13,7 @@
#endif
/* Home Test
whipped wizard hefty avatar gnome knuckle uptight jury ruling evenings urchins visited dating pioneer offend trying oyster setup maximum library mayor yearbook keep voyage excess bifocals kettle gutter aces
wept saxophone dialect depth update jaunt loincloth asleep lush gnome laptop upper olive itches essential neither feel fewest siblings brunt tasked upwards coal niece faked dating hedgehog magically abort
*/
// CAboutDlg dialog used for App About
@@ -305,16 +305,16 @@ bool CSiaDriveDlg::UpdateUi(const bool& refresh)
return ret;
}
HRESULT CSiaDriveDlg::GetDomElementById(const CString& id, CComPtr<IHTMLDOMNode>& node)
HRESULT CSiaDriveDlg::GetDomNodeById(const String& id, CComPtr<IHTMLDOMNode>& node)
{
CComPtr<IHTMLElement> elem;
return GetDomElementAndNodeById(id, node, elem);
return GetDomNodeAndElementById(id, node, elem);
}
HRESULT CSiaDriveDlg::GetDomElementAndNodeById(const CString& id, CComPtr<IHTMLDOMNode>& node, CComPtr<IHTMLElement>& elem)
HRESULT CSiaDriveDlg::GetDomNodeAndElementById(const String& id, CComPtr<IHTMLDOMNode>& node, CComPtr<IHTMLElement>& elem)
{
HRESULT hr;
if (SUCCEEDED((hr = GetElement(id, &elem))))
if (SUCCEEDED((hr = GetElement(id.c_str(), &elem))))
{
hr = elem->QueryInterface(IID_IHTMLDOMNode, reinterpret_cast<void**>(&node));
}
@@ -324,38 +324,13 @@ HRESULT CSiaDriveDlg::GetDomElementAndNodeById(const CString& id, CComPtr<IHTMLD
void CSiaDriveDlg::DisplayCreateWallet()
{
CComPtr<IHTMLDOMNode> mainNode;
if (SUCCEEDED(GetDomElementById(L"main_window", mainNode)))
{
CComPtr<IHTMLElement> div;
CComPtr<IHTMLDOMNode> walletCreateNode;
if (SUCCEEDED(GetDomElementAndNodeById(L"create_wallet", walletCreateNode, div)))
{
CComPtr<IHTMLDOMNode> parent;
if (SUCCEEDED(walletCreateNode->get_parentNode(&parent)))
{
CComPtr<IHTMLDOMNode> removedNode;
if (SUCCEEDED(parent->removeChild(walletCreateNode, &removedNode)))
{
CComPtr<IHTMLDOMNode> appendedNode;
if (SUCCEEDED(mainNode->appendChild(removedNode, &appendedNode)))
{
CComPtr<IHTMLStyle> style;
if (SUCCEEDED(div->get_style(&style)))
{
style->put_display(L"block");
}
}
}
}
}
}
SetMainWindow(L"create_wallet");
}
void CSiaDriveDlg::RemoveElementById(const String& id)
void CSiaDriveDlg::RemoveDomNodeById(const String& id)
{
CComPtr<IHTMLDOMNode> element;
if (SUCCEEDED(GetDomElementById(id.c_str(), element)))
if (SUCCEEDED(GetDomNodeById(id.c_str(), element)))
{
CComPtr<IHTMLDOMNode> parent;
if (SUCCEEDED(element->get_parentNode(&parent)))
@@ -366,24 +341,24 @@ void CSiaDriveDlg::RemoveElementById(const String& id)
}
}
void CSiaDriveDlg::ClearCreateElements()
void CSiaDriveDlg::RemoveCreateWalletItems()
{
RemoveElementById(L"create_wallet");
RemoveElementById(L"disp_wallet_seed");
RemoveDomNodeById(L"create_wallet");
RemoveDomNodeById(L"disp_wallet_seed");
}
void CSiaDriveDlg::DisplayWalletTab()
{
if (_siaApi.GetWallet()->GetCreated())
{
ClearCreateElements();
RemoveCreateWalletItems();
if (_siaApi.GetWallet()->GetLocked())
{
DisplayUnlockWallet();
}
else
{
}
}
else
@@ -392,39 +367,53 @@ void CSiaDriveDlg::DisplayWalletTab()
}
}
void CSiaDriveDlg::DisplaySeedCreated(const String& seed)
void CSiaDriveDlg::SetMainWindow(const String& name)
{
CComPtr<IHTMLDOMNode> mainNode;
if (SUCCEEDED(GetDomElementById(L"main_window", mainNode)))
if (SUCCEEDED(GetDomNodeById(L"main_window", mainNode)))
{
CComPtr<IHTMLElement> div;
CComPtr<IHTMLDOMNode> dispWalletSeedNode;
if (SUCCEEDED(GetDomElementAndNodeById(L"disp_wallet_seed", dispWalletSeedNode, div)))
CComPtr<IHTMLDOMNode> child;
if (SUCCEEDED(mainNode->get_firstChild(&child)))
{
CComPtr<IHTMLDOMNode> removed;
if (SUCCEEDED(mainNode->removeChild(child, &removed)))
{
CComPtr<IHTMLDOMNode> body;
if (SUCCEEDED(GetDomNodeById(L"CSiaDriveDlg", body)))
{
CComPtr<IHTMLElement> element;
if (SUCCEEDED(removed->QueryInterface(IID_IHTMLElement, reinterpret_cast<void**>(&element))))
{
CComPtr<IHTMLStyle> style;
if (SUCCEEDED(element->get_style(&style)))
{
style->put_display(L"none");
}
CComPtr<IHTMLDOMNode> added;
body->appendChild(removed, &added);
}
}
}
}
CComPtr<IHTMLDOMNode> divNode;
CComPtr<IHTMLElement> divElement;
if (SUCCEEDED(GetDomNodeAndElementById(name, divNode, divElement)))
{
CComPtr<IHTMLDOMNode> parent;
if (SUCCEEDED(dispWalletSeedNode->get_parentNode(&parent)))
if (SUCCEEDED(divNode->get_parentNode(&parent)))
{
CComPtr<IHTMLDOMNode> removedNode;
if (SUCCEEDED(parent->removeChild(dispWalletSeedNode, &removedNode)))
if (SUCCEEDED(parent->removeChild(divNode, &removedNode)))
{
CComPtr<IHTMLDOMNode> child;
if (SUCCEEDED(mainNode->get_firstChild(&child)))
CComPtr<IHTMLDOMNode> appendedNode;
if (SUCCEEDED(mainNode->appendChild(removedNode, &appendedNode)))
{
CComPtr<IHTMLDOMNode> removed;
if (SUCCEEDED(mainNode->removeChild(child, &removed)))
CComPtr<IHTMLStyle> style;
if (SUCCEEDED(divElement->get_style(&style)))
{
CComPtr<IHTMLDOMNode> appendedNode;
if (SUCCEEDED(mainNode->appendChild(removedNode, &appendedNode)))
{
_walletCreatedSeed = seed.c_str();
UpdateData(FALSE);
CComPtr<IHTMLStyle> style;
if (SUCCEEDED(div->get_style(&style)))
{
style->put_display(L"block");
}
}
style->put_display(L"block");
}
}
}
@@ -433,6 +422,13 @@ void CSiaDriveDlg::DisplaySeedCreated(const String& seed)
}
}
void CSiaDriveDlg::DisplaySeedCreated(const String& seed)
{
SetMainWindow(L"disp_wallet_seed");
_walletCreatedSeed = seed.c_str();
UpdateData(FALSE);
}
void CSiaDriveDlg::DisplayUnlockWallet()
{

View File

@@ -32,29 +32,30 @@ protected:
HICON m_hIcon;
// Generated message map functions
virtual BOOL OnInitDialog();
virtual void OnDocumentComplete(LPDISPATCH pDisp, LPCTSTR szUrl);
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnTimer(UINT_PTR nIDEvent);
DECLARE_MESSAGE_MAP()
DECLARE_DHTML_EVENT_MAP()
virtual HRESULT WINAPI TranslateAccelerator(MSG *message, const GUID *, DWORD) override;
virtual BOOL PreTranslateMessage(MSG* pMsg) override;
virtual HRESULT WINAPI TranslateAccelerator(MSG *message, const GUID *, DWORD) override;
private:
void ClearCreateElements();
void DisplayCreateWallet();
void DisplayWalletTab();
void DisplaySeedCreated(const String& seed);
bool DisplaySiaInfo();
void DisplayUnlockWallet();
void RemoveElementById(const String& id);
void DisplayWalletTab();
void RemoveCreateWalletItems();
void RemoveDomNodeById(const String& id);
void SetMainWindow(const String& name);
bool UpdateUi(const bool& refresh = true);
HRESULT GetDomElementById(const CString& id, CComPtr<IHTMLDOMNode>& node);
HRESULT GetDomElementAndNodeById(const CString& id, CComPtr<IHTMLDOMNode>& node, CComPtr<IHTMLElement>& elem);
HRESULT GetDomNodeAndElementById(const String& id, CComPtr<IHTMLDOMNode>& node, CComPtr<IHTMLElement>& elem);
HRESULT GetDomNodeById(const String& id, CComPtr<IHTMLDOMNode>& node);
private:
CSiaDriveConfig _siaConfig;