#include <wobject/xstring.hpp>
|
#include <xcontrol/xtreeview.hpp>
|
#include <xcontrol/xdwgrid.hpp>
|
#include <wobject/xdouble.hpp>
|
#include <xcontrol/xlayersheet.hpp>
|
|
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
|
#include "viewobject/view.base.hpp"
|
|
using xml = KXMLDOMDocument;
|
|
class __declspec(dllexport) SimpleMenuConfig : public xframe
|
{
|
public:
|
xdwgrid dw_list;
|
xtreeview tv_gs;
|
xnode m_agentNode;
|
public:
|
SimpleMenuConfig(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
|
public:
|
static SimpleMenuConfig* CreateInstance(void* implPtr, void* hWnd)
|
{
|
SimpleMenuConfig* pWin = new SimpleMenuConfig(implPtr, (HWND)hWnd);
|
return pWin;
|
}
|
int AddRow()
|
{
|
dw_list.InsertRow(0);
|
return 1;
|
}
|
|
int InsertRow()
|
{
|
dw_list.AcceptText();
|
int row = dw_list.GetRow();
|
if(row < 1 || row >dw_list.GetRowCount())
|
AddRow();
|
else
|
dw_list.InsertRow(row);
|
return 1;
|
}
|
|
int DeleteRow()
|
{
|
dw_list.AcceptText();
|
int row = dw_list.GetRow();
|
if(row < 1 || row >dw_list.GetRowCount())
|
return 1;
|
dw_list.DeleteRow(row);
|
return 1;
|
}
|
|
int Save()
|
{
|
dw_list.AcceptText();
|
int i=0;
|
for(i=1; i<=dw_list.GetRowCount();i++)
|
{
|
xstring seq = dw_list.GetItemString(i, L"SeqNo");
|
if(seq != xstring(i))
|
dw_list.SetItemString(i, L"SeqNo", xstring(i));
|
}
|
|
xml x;
|
|
xaserverarg arg;
|
|
dw_list.DwUpdateAllToEx(x);
|
arg.AddArg(L"content", x.xml());
|
if(getUrl(L"/workflow/action/ItemPictureMenu.dbmap/bill.update", arg.GetString(), x) != 1)
|
alert(L"±£´æÊ§°Ü!");
|
else
|
{
|
xstring str = x.xml();
|
//alert(str);
|
if(str.find(L"ʧ°Ü", 0) > 0)
|
alert(L"±£´æÊ§°Ü!");
|
else
|
{
|
//alert(L"±£´æ³É¹¦!");
|
dw_list.ResetUpdateStatus();
|
dw_list.DwUpdateAllToEx(x);
|
HTREEITEM hItem =tv_gs.GetSelectedItem();
|
if(hItem)
|
{
|
KXMLDOMElement e = x.documentElement();
|
tv_gs.SetItemData(hItem, e);
|
|
while(tv_gs.GetChildItem( hItem))
|
tv_gs.DeleteItem(tv_gs.GetChildItem( hItem));
|
|
KXMLDOMNodeList li = x.selectNodes(L"item/item");
|
int s = li.length();
|
for(i=0;i<s;i++)
|
{
|
KXMLDOMElement ele = li.item(i);
|
xstring name = ele.selectSingleNode(L"Name").text();
|
HTREEITEM cItem =tv_gs.InsertChildItem( hItem, name, ele, 15);
|
if(ele.selectSingleNode(L"item"))
|
tv_gs.SetItemChild1(cItem, 1);
|
}
|
}
|
|
}
|
}
|
return 1;
|
}
|
|
int UpRow()
|
{
|
dw_list.AcceptText();
|
int row = dw_list.GetRow();
|
if(row < 2 || row > dw_list.GetRowCount())
|
return 1;
|
dw_list.SetRowMove(row, -1);
|
dw_list.SetRow(row - 1);
|
dw_list.Redraw();
|
return 1;
|
}
|
|
int DownRow()
|
{
|
dw_list.AcceptText();
|
int row = dw_list.GetRow();
|
if(row < 1 || row > dw_list.GetRowCount() - 1)
|
return 1;
|
dw_list.SetRowMove(row, 1);
|
dw_list.SetRow(row + 1);
|
dw_list.Redraw();
|
return 1;
|
}
|
|
int OnCmdDispatch(xstring comdid)
|
{
|
HCURSOR hCursor = xutil::SetCursorWait();
|
if(comdid == L"AddRow") AddRow();
|
else if(comdid == L"InsertRow") InsertRow();
|
else if(comdid == L"DeleteRow") DeleteRow();
|
else if(comdid == L"Save") Save();
|
else if(comdid == L"UpRow") UpRow();
|
else if(comdid == L"DownRow") DownRow();
|
xutil::RestoreCursor(hCursor);
|
return 0;
|
}
|
|
int SetAgent()
|
{
|
xstring xfNodeAgentArea = L"agentarea";
|
xnode anode = GetAgentNode(xfNodeAgentArea);
|
if (m_agentNode)
|
{
|
SetAgentNode(anode, m_agentNode);
|
}
|
else
|
{
|
KXMLDOMElement xframeElement = GetElement();
|
KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*");
|
if (agent)
|
{
|
xstring s = agent.xml();
|
m_agentNode = SetAgentNode(anode, s);
|
}
|
}
|
return 1;
|
}
|
|
int OnSetFocus(TEvent* evt, LPARAM p)
|
{
|
SetAgent() ;
|
return 1;
|
}
|
|
int OnXCommand(TEvent* evt, LPARAM param)
|
{
|
return OnCmdDispatch(evt->xcommand.pStrID);
|
}
|
|
int OnTreeSelChanged(TEvent* evt, LPARAM p)
|
{
|
|
NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
|
HTREEITEM hItem = nmtv.itemNew.hItem;
|
KXMLDOMElement e = tv_gs.GetItemData(hItem);
|
//trace(L"%s", e.xml);
|
//xstring id = e.selectSingleNode(L"MenuID").text();
|
dw_list.AcceptText();
|
dw_list.Retrieve(e);
|
dw_list.Redraw();
|
return 1;
|
}
|
|
int OnTreeMoveNode(TEvent* evt, LPARAM p)
|
{
|
TVNNMHDR& nmtv = *(TVNNMHDR*)evt->notify.pnmh;
|
HTREEITEM xfrom = nmtv.FromItem;
|
HTREEITEM xto = nmtv.ToItem;
|
|
int ret = MessageBox(GetHWND(), L"È·¶¨Òƶ¯½Úµã£¡",L"Ìáʾ£º",1);
|
//trace(ret);
|
if(ret == 2)
|
{
|
tv_gs.DeleteItem(xto);
|
return -1;
|
}
|
KXMLDOMElement fid = tv_gs.GetItemData(xto);
|
HTREEITEM xpto =tv_gs.GetParentItem(xto);
|
KXMLDOMElement tid = tv_gs.GetItemData(xto);
|
//trace(L"%s-------------------------%s",fid.xml,tid.xml);
|
xml x ;
|
|
xaserverarg arg;
|
|
|
xstring id1 = fid.selectSingleNode(L"@guid").text();
|
xstring id2 = tid.selectSingleNode(L"@guid").text();
|
//trace(L"%s-------------------------%s",id1,id2);
|
xstring str = L"update ItemPictureMenu set parentid='"+id2+L"' where menuid='"+id1+L"' ";
|
str += L" select 1 for xml path('root')L";
|
|
arg.AddArg(L"sql", str);
|
if(getSql(arg.GetString(),x)!=1)
|
{
|
trace(L"error:"+(xstring)x.xml());
|
alert(L"ÒÆ¶¯½Úµã³ö´í!");
|
tv_gs.DeleteItem(xto);
|
return 0;
|
}
|
//trace(L"================L");
|
//
|
HTREEITEM xpfrom =tv_gs.GetParentItem(xfrom);
|
//trace(L"%d", xpfrom);
|
KXMLDOMElement fe = tv_gs.GetItemData(xpfrom);
|
//trace(L"%s-------------------------%s",fe.xml,tid.xml);
|
KXMLDOMElement fe1 = fe.selectSingleNode(L"item[@guid='"+id1+L"']");
|
fe.removeChild(fe1);
|
tid.appendChild(fid);
|
|
tv_gs.DeleteItem(xfrom);
|
return 1;
|
}
|
|
int OnInitial()
|
{
|
HTREEITEM rItem =tv_gs.GetRootItem();
|
tv_gs.ExpandItemEx( rItem);
|
tv_gs.ItemFocus(rItem);
|
return 1;
|
}
|
|
int OnAttachEvent()
|
{
|
AttachEvent(L"WM_XCOMMAND", (FEvent)&SimpleMenuConfig::OnXCommand);
|
AttachEvent(L"WM_SETFOCUS", (FEvent)&SimpleMenuConfig::OnSetFocus);
|
AttachEvent(L"tv_gs",L"TVN_SELCHANGED", (FEvent)&SimpleMenuConfig::OnTreeSelChanged);
|
AttachEvent(L"tv_gs", L"TVN_ENDDRAG", (FEvent)&SimpleMenuConfig::OnTreeMoveNode);
|
return 1;
|
}
|
|
int onload()
|
{
|
dw_list = GetControl(L"dw_list");
|
dw_list.openUrl(L"/sale/view/SimpleProduct/template/Simple/Menu");
|
dw_list.SetColumnState(L"SeqNo", false);
|
|
tv_gs = GetControl(L"tv_gs");
|
|
SetAgent();
|
OnAttachEvent();
|
|
OnInitial();
|
|
return 1;
|
}
|
};
|