#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; 
 | 
    } 
 | 
}; 
 |