|  |  | 
 |  |  | #include <wobject/xstring.hpp> | 
 |  |  | #include <xcontrol/xtreeview.hpp> | 
 |  |  | #include <xcontrol/xdwgrid.hpp> | 
 |  |  | #include <xcontrol/xlayersheet.hpp> | 
 |  |  | #include <xcontrol/xcell.hpp> | 
 |  |  | #include <xcontrol/xlistview.hpp> | 
 |  |  |  | 
 |  |  | #include "vbusiness/vframe/maint.vframe.vbusiness.hpp" | 
 |  |  | #include "viewobject/view.base.hpp" | 
 |  |  |  | 
 |  |  | using xml = KXMLDOMDocument; | 
 |  |  | class __declspec(dllexport) TDocumentWin : public xframe | 
 |  |  | { | 
 |  |  | public: | 
 |  |  |    TDocumentWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} | 
 |  |  | public: | 
 |  |  |    static TDocumentWin* CreateInstance(void* implPtr, void* hWnd) | 
 |  |  |    { | 
 |  |  |       return  new TDocumentWin(implPtr, (HWND)hWnd); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  | public: | 
 |  |  |    //xdwgrid   dw_list; | 
 |  |  |    xtreeview tv_folder; | 
 |  |  |    xlistview  lv_view; | 
 |  |  |    xnode   m_agentNode;   //Agent Condition | 
 |  |  |    int columnCount; | 
 |  |  |  | 
 |  |  |    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 param) | 
 |  |  |    { | 
 |  |  |       //重置工具条 | 
 |  |  |       SetAgent(); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnListViewDoubleClicked(TEvent* evt,LPARAM param) | 
 |  |  |    { | 
 |  |  |       //重置工具条 | 
 |  |  |       //SetAgent(); | 
 |  |  |       return OnDocumentOpen(); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnDocumentOpen() | 
 |  |  |    { | 
 |  |  |       int  LVNI_ALL = 0x0000; | 
 |  |  |       int  LVNI_FOCUSED = 0x0001; | 
 |  |  |       int  LVNI_SELECTED = 0x0002; | 
 |  |  |       int  LVNI_CUT = 0x0004; | 
 |  |  |       int  LVNI_DROPHILITED = 0x0008; | 
 |  |  |  | 
 |  |  |       int nItem = lv_view.GetNextItem(-1, LVNI_FOCUSED); | 
 |  |  |       if (nItem < 0) return 1; | 
 |  |  |  | 
 |  |  |       int LVIF_PARAM = 0x0004; | 
 |  |  |  | 
 |  |  |       lvitem lvItem; | 
 |  |  |       lvItem.iItem = nItem; | 
 |  |  |       lvItem.iSubItem = 0; | 
 |  |  |       lvItem.mask = LVIF_PARAM; | 
 |  |  |  | 
 |  |  |       lv_view.GetItem( lvItem); | 
 |  |  |       KXMLDOMElement ele =lvItem.lParam; | 
 |  |  |  | 
 |  |  |       xstring src = ele.getAttribute(L"url"); | 
 |  |  |       xstring file = L""; | 
 |  |  |       if (src.find(L"/file/") > 0) file = src.mid(src.find(L"/file/") + 6, 9999); | 
 |  |  |       if (file.find(L"/file/") >= 0) file = file.mid(file.find(L"/file/") + 6, 9999); | 
 |  |  |       if (file.find(L"file/") >= 0) file = file.mid(file.find(L"file/") + 5, 9999); | 
 |  |  |       if (file == L"") return 1; | 
 |  |  |       //alert(file); | 
 |  |  |       xstring name = ele.getAttribute(L"caption"); | 
 |  |  |       /* | 
 |  |  |       const xstring d = m_Html.GetData(p.object); | 
 |  |  |       if(d == L"") return -1; | 
 |  |  |       xstring file = d.mid(0, d.find(L"|##@@|",0)); | 
 |  |  |       xstring name = d.mid(d.find(L"|##@@|",0)+6, d.length()); | 
 |  |  |       */ | 
 |  |  |  | 
 |  |  |       xaserver::CreateDirectory(L"C:/Temp"); | 
 |  |  |       xstring str = file.left(2); | 
 |  |  |       xstring ext = L""; | 
 |  |  |       if (name.find(L".") >= 0) ext = name.mid(name.find(L"."), name.length()); | 
 |  |  |       xstring sfile = file;// file.left(file.length() - 4); | 
 |  |  |       //trace(L"--"+ext +L" " + L"/business/attachment/"+str+L"/"+ file); | 
 |  |  |       //int openRet = xaserver::DownLoadFile(GetServerUrl(),L"/business/attachment/"+str+L"/"+ file,name,L"C:/Temp/"+name); | 
 |  |  |       int openRet = xaserver::DownLoadFile(GetServerUrl(), L"/business/attachment/" + str + L"/" + file + L".jpg", L"", L"C:/Temp/" + sfile + ext); | 
 |  |  |  | 
 |  |  |       //alert(L"/business/attachment/"+str+L"/"+ file+L".jpg"); | 
 |  |  |       if (openRet < 0) | 
 |  |  |       { | 
 |  |  |          alert(L"文件打开失败1!"); | 
 |  |  |          return -1; | 
 |  |  |       } | 
 |  |  |       //openRet =ShellExecute(0,L"open",L"C:/Temp/"+name,L"",L"",5);	 | 
 |  |  |       openRet =ShellExecuteW(0, L"open", L"C:/Temp/" + sfile + ext, L"", L"", 5); | 
 |  |  |       if (openRet < 32) | 
 |  |  |       { | 
 |  |  |          alert(L"文件打开失败2!"); | 
 |  |  |          return -1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       return -1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnAddAttachment() | 
 |  |  |    { | 
 |  |  |       xstring sguid = publiccode::GetGuid(); | 
 |  |  |       xstring sname = sguid; | 
 |  |  |       xstring str = sname.mid(0, 2); | 
 |  |  |       str = str.toUpper(); | 
 |  |  |       xstring suri = L"attachment" + str; | 
 |  |  |       xstring ret = xaserver::UploadFile(suri, sname + L".jpg", GetHWND(), L"", false); | 
 |  |  |       if (ret == L"-1") | 
 |  |  |       { | 
 |  |  |          alert(L"上传的文件没选择!"); | 
 |  |  |          return 0; | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          while (ret.find(L"\\", 0) >= 0) | 
 |  |  |             ret = ret.mid(ret.find(L"\\", 0) + 1, 9999); | 
 |  |  |  | 
 |  |  |          HTREEITEM h = tv_folder.GetSelectedItem(); | 
 |  |  |          KXMLDOMElement ele = tv_folder.GetItemData(h); | 
 |  |  |          xstring myurl = ele.getAttribute(L"url"); | 
 |  |  |          //alert(myurl); | 
 |  |  |  | 
 |  |  |          xml x ; | 
 |  |  |          xaserverarg args; | 
 |  |  |          args.AddArg(L"myurl", myurl); | 
 |  |  |          args.AddArg(L"name", ret); | 
 |  |  |          args.AddArg(L"filepath", sname); | 
 |  |  |          args.AddArg(L"fileext", L""); | 
 |  |  |          args.AddArg(L"filesource", ret); | 
 |  |  |  | 
 |  |  |          xml x1 = ViewObject::RetrieveData(L"/sale/data/TDocument3/attachment/GetFileFormat", L"Name", ret); | 
 |  |  |          KXMLDOMNodeList items = x1.selectNodes(L"data/Item"); | 
 |  |  |          KXMLDOMNode t = items.item(0); | 
 |  |  |          xstring FileFormat = L""; | 
 |  |  |          if (t.selectSingleNode(L"FileFormat"))FileFormat = t.selectSingleNode(L"FileFormat").text(); | 
 |  |  |          if (FileFormat != L"pdf" && FileFormat != L"PDF" && FileFormat != L"mp4" && FileFormat != L"avi" && FileFormat != L"wmv" && FileFormat != L"mpg" | 
 |  |  |             && FileFormat != L"mpeg" && FileFormat != L"mov" && FileFormat != L"rm" && FileFormat != L"ram" && FileFormat != L"swf" && FileFormat != L"flv") | 
 |  |  |          { | 
 |  |  |             alert(L"文件格式错误,请上传PDF文档或者视频!"); | 
 |  |  |             return 0; | 
 |  |  |          } | 
 |  |  |  | 
 |  |  |          if (xurl::get(L"/sale/data/TDocument3/attachment/add", args.GetString(), x) != 1) | 
 |  |  |          { | 
 |  |  |             alert(L"保存出错了!"); | 
 |  |  |             return 0; | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             alert(x.text()); | 
 |  |  |             //OnRetrieve(); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       return 0; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnDeleteFile() | 
 |  |  |    { | 
 |  |  |       int  LVNI_ALL = 0x0000; | 
 |  |  |       int  LVNI_FOCUSED = 0x0001; | 
 |  |  |       int  LVNI_SELECTED = 0x0002; | 
 |  |  |       int  LVNI_CUT = 0x0004; | 
 |  |  |       int  LVNI_DROPHILITED = 0x0008; | 
 |  |  |  | 
 |  |  |       int nItem = lv_view.GetNextItem( -1, LVNI_FOCUSED); | 
 |  |  |       if (nItem < 0) return 1; | 
 |  |  |  | 
 |  |  |       int LVIF_PARAM = 0x0004; | 
 |  |  |  | 
 |  |  |       lvitem lvItem; | 
 |  |  |       lvItem.iItem = nItem; | 
 |  |  |       lvItem.iSubItem = 0; | 
 |  |  |       lvItem.mask = LVIF_PARAM; | 
 |  |  |  | 
 |  |  |       lv_view.GetItem( lvItem); | 
 |  |  |       KXMLDOMElement ele =lvItem.lParam; | 
 |  |  |  | 
 |  |  |       xstring src = ele.getAttribute(L"url"); | 
 |  |  |       xstring file = L""; | 
 |  |  |       if (src.find(L"/file/") > 0) file = src.mid(src.find(L"/file/") + 6, 9999); | 
 |  |  |       if (file.find(L"/file/") >= 0) file = file.mid(file.find(L"/file/") + 6, 9999); | 
 |  |  |       if (file.find(L"file/") >= 0) file = file.mid(file.find(L"file/") + 5, 9999); | 
 |  |  |       if (file == L"") return 1; | 
 |  |  |  | 
 |  |  |       xstring name = ele.getAttribute(L"caption"); | 
 |  |  |       if (MessageBox(GetHWND(), L"确定要删除文件" + name + L"?", L"提示", 1) == 2) | 
 |  |  |          return 0; | 
 |  |  |  | 
 |  |  |       xaserverarg arg; | 
 |  |  |       arg.AddArg(L"filepath", file); | 
 |  |  |       xml x; | 
 |  |  |       if (xurl::get(L"/sale/data/TDocument3/file/delete", arg.GetString(), x) != 1) | 
 |  |  |       { | 
 |  |  |          alert(L"删除出错了!"); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          //alert(x.text); | 
 |  |  |          lv_view.DeleteItem(nItem); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //命令发布函数 | 
 |  |  |    int OnCmdDispatch(xstring comdid) | 
 |  |  |    { | 
 |  |  |       xstring  userno = publiccode::GetUser().no; | 
 |  |  |       HTREEITEM h = tv_folder.GetSelectedItem(); | 
 |  |  |       KXMLDOMElement ele = tv_folder.GetItemData(h); | 
 |  |  |       xstring caption = ele.getAttribute(L"caption"); | 
 |  |  |  | 
 |  |  | 		 | 
 |  |  |          if (comdid == L"xmUpload") | 
 |  |  |          { | 
 |  |  |  | 
 |  |  |             if (caption == L"办公室") | 
 |  |  |             { | 
 |  |  |  | 
 |  |  |                if (userno == L"00805" || userno == L"00804") | 
 |  |  |                { | 
 |  |  |                   OnAddAttachment(); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             if (caption == L"人事部") | 
 |  |  |             { | 
 |  |  |  | 
 |  |  |                if (userno == L"00804") | 
 |  |  |                { | 
 |  |  |                   OnAddAttachment(); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |             /*   if(caption =="业务部优秀案例" || caption =="采购部优秀案例" ) | 
 |  |  |                {*/ | 
 |  |  |  | 
 |  |  |             if (userno == L"admin" || userno == L"00301" || userno == L"00601" || userno == L"00701" || userno == L"00102" || userno == L"00201" || userno == L"00804") | 
 |  |  |             { | 
 |  |  |                OnAddAttachment(); | 
 |  |  |             } | 
 |  |  |             //} | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          if (comdid == L"xmOpen") | 
 |  |  |          { | 
 |  |  |             return OnDocumentOpen(); | 
 |  |  |          } | 
 |  |  |          if (comdid == L"xmDelete") | 
 |  |  |          { | 
 |  |  |             if (caption == L"办公室") | 
 |  |  |             { | 
 |  |  |  | 
 |  |  |                if (userno == L"00805" || userno == L"00804") | 
 |  |  |                { | 
 |  |  |                   OnDeleteFile(); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |             if (caption == L"人事部") | 
 |  |  |             { | 
 |  |  |  | 
 |  |  |                if (userno == L"00804") | 
 |  |  |                { | 
 |  |  |                   OnDeleteFile(); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |             if (userno == L"admin" || userno == L"00301" || userno == L"00601" || userno == L"00701" || userno == L"00102" || userno == L"00201" || userno == L"00804") | 
 |  |  |             { | 
 |  |  |                OnDeleteFile(); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          if (comdid == L"xmSearch") | 
 |  |  |          { | 
 |  |  |             OnRetrieve(); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  | 		 | 
 |  |  |       return 0; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnRetrieve() | 
 |  |  |    { | 
 |  |  |       xstring urlEx = L""; | 
 |  |  |       xcontrol xc = GetControl(L"frame:sle_search"); | 
 |  |  |       xstring Search = xc.GetText(); | 
 |  |  |       HTREEITEM h = tv_folder.GetSelectedItem(); | 
 |  |  |       KXMLDOMElement ele = tv_folder.GetItemData(h); | 
 |  |  |       urlEx = ele.getAttribute(L"url"); | 
 |  |  |  | 
 |  |  |       trace(Search + L"******" + urlEx); | 
 |  |  |       if (urlEx == L"") | 
 |  |  |       { | 
 |  |  |          alert(L"选择文件目录!"); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          xaserverarg arg ; | 
 |  |  |          arg.AddArg(L"url", urlEx); | 
 |  |  |          arg.AddArg(L"Search", Search); | 
 |  |  |          OpenWindow(L"dev:xpage[trade.helpEx.vx]", arg); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //命令处理事件 | 
 |  |  |    int OnXCommand(TEvent* evt, LPARAM param) | 
 |  |  |    { | 
 |  |  |       return OnCmdDispatch(evt->xcommand.pStrID); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnAttachEvent() | 
 |  |  |    { | 
 |  |  |       //绑定工具条点击事件 | 
 |  |  |       AttachEvent(L"WM_XCOMMAND", (FEvent)&TDocumentWin::OnXCommand); | 
 |  |  |       //获取焦点事件,用于重置工具条 | 
 |  |  |       AttachEvent(L"WM_SETFOCUS", (FEvent) & TDocumentWin::OnSetFocus); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int createSubTree(HTREEITEM h, KXMLDOMElement ele) | 
 |  |  |    { | 
 |  |  |       KXMLDOMNodeList nlist = ele.selectNodes(L"folder"); | 
 |  |  |       int i; | 
 |  |  |       int s = nlist.length(); | 
 |  |  |       if (s > 0) | 
 |  |  |       { | 
 |  |  |          for (i = 0; i < s; i++) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement e = nlist.item(i); | 
 |  |  |             xstring name = e.getAttribute(L"caption"); | 
 |  |  |             HTREEITEM hw = tv_folder.InsertChildItem(h, name, e, 15); | 
 |  |  |             createSubTree(hw, e); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnCreateTree() | 
 |  |  |    { | 
 |  |  |       xml x; | 
 |  |  |       if (xurl::get(L"/sale/data/TDocument3/folder/root", L"", x) != 1) | 
 |  |  |       { | 
 |  |  |          return -1; | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          KXMLDOMNodeList nlist = x.selectNodes(L"folders/folder"); | 
 |  |  |          int len = nlist.length(); | 
 |  |  |  | 
 |  |  |          if (len > 0) | 
 |  |  |          { | 
 |  |  |             int i; | 
 |  |  |             for (i = 0; i < len; i++) | 
 |  |  |             { | 
 |  |  |                KXMLDOMElement e = nlist.item(i); | 
 |  |  |                xstring name = e.getAttribute(L"caption"); | 
 |  |  |                HTREEITEM h =tv_folder.InsertChildItem( 0, name, e, 17); | 
 |  |  |                createSubTree(h, e); | 
 |  |  |                if (len == 1) tv_folder.ExpandItem(h); | 
 |  |  |             } | 
 |  |  |             tv_folder.ExpandItem(0); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //树选择 | 
 |  |  |    int OnTreeSelChanged(TEvent* evt, int p) | 
 |  |  |    { | 
 |  |  |       xstring name; | 
 |  |  |       lv_view.DeleteItemAll(); | 
 |  |  |  | 
 |  |  |       HTREEITEM h = tv_folder.GetSelectedItem(); | 
 |  |  |       KXMLDOMElement ele = tv_folder.GetItemData(h); | 
 |  |  |       KXMLDOMNodeList nlist = ele.selectNodes(L"folder"); | 
 |  |  |  | 
 |  |  |       int i; | 
 |  |  |       int s = nlist.length(); | 
 |  |  |       if (s > 0) | 
 |  |  |       { | 
 |  |  |          for (i = 0; i < s; i++) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement e = nlist.item(i); | 
 |  |  |             name = e.getAttribute(L"caption"); | 
 |  |  |             lv_view.InsertItemEx(0, name, 0, e); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       xstring src = ele.getAttribute(L"url"); | 
 |  |  |       trace(L"\r\n" + src); | 
 |  |  |       xml x = ViewObject::RetrieveData(L"/sale/data/TDocument3/folder/list", L"src", src); | 
 |  |  |       if (x) | 
 |  |  |       { | 
 |  |  |          //alert(x.GetXml()); | 
 |  |  |          nlist = x.documentElement().selectNodes(L"*"); | 
 |  |  |          s = nlist.length(); | 
 |  |  |          if (s > 0) | 
 |  |  |          { | 
 |  |  |             for (i = 0; i < s; i++) | 
 |  |  |             { | 
 |  |  |                KXMLDOMElement e = nlist.item(i); | 
 |  |  |                name = e.getAttribute(L"caption"); | 
 |  |  |                int nItem = lv_view.InsertItemEx( 0, name, 23, e); | 
 |  |  |  | 
 |  |  |                lv_view.SetItemText( nItem, 1, e.getAttribute(L"Creator")); | 
 |  |  |                lv_view.SetItemText( nItem, 2, e.getAttribute(L"CreateDate")); | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       lv_view.Redraw(); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int SetListViewHeaderColumn(xstring Url) | 
 |  |  |    { | 
 |  |  |       const int LVCFMT_LEFT = 0; | 
 |  |  |       for (int i = 0; i < 3; i++)  lv_view.DeleteColumn( 1); | 
 |  |  |       //if(Url==L"") | 
 |  |  |       //{ | 
 |  |  |       lv_view.InsertColumn(0, L"创建日期", LVCFMT_LEFT, 80, 0); | 
 |  |  |       lv_view.InsertColumn(0, L"创建人员", LVCFMT_LEFT, 80, 0); | 
 |  |  |       lv_view.InsertColumn(0, L"名称", 0, 180, 0); | 
 |  |  |       columnCount = 3; | 
 |  |  |       //} | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    /* | 
 |  |  |    int  OnRetrieve() | 
 |  |  |    { | 
 |  |  |       xml x = new xml; | 
 |  |  |       x.setNativePointer(xml::CreateInstance()); | 
 |  |  |       xaserverarg arg = new xaserverarg; | 
 |  |  |       arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |       arg.AddArg(L"xxx",L"xxx"); | 
 |  |  |       if (getUrl(L"",arg.GetString(),x)!=1) | 
 |  |  |       { | 
 |  |  |          trace(x.text); | 
 |  |  |          return -1; | 
 |  |  |       }else | 
 |  |  |       { | 
 |  |  |          //dw_list.Retrieve(x); | 
 |  |  |          //dw_list.Redraw(); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    */ | 
 |  |  |  | 
 |  |  |    int onload() | 
 |  |  |    { | 
 |  |  |       tv_folder = GetControl(L"tv_folder"); | 
 |  |  |       lv_view = GetControl(L"lv_view"); | 
 |  |  |  | 
 |  |  |       columnCount = 0; | 
 |  |  |       SetListViewHeaderColumn(L""); | 
 |  |  |  | 
 |  |  |       AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&TDocumentWin::OnTreeSelChanged); | 
 |  |  |       AttachEvent(L"lv_view", L"NM_DBLCLK", (FEvent)&TDocumentWin::OnListViewDoubleClicked); | 
 |  |  |  | 
 |  |  |       OnCreateTree(); | 
 |  |  |       OnAttachEvent(); | 
 |  |  |  | 
 |  |  |       tv_folder.ExpandItem(tv_folder.GetRootItem()); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int onloaded() | 
 |  |  |    { | 
 |  |  |       SetAgent(); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  | #include <wobject/xstring.hpp>
 | 
 |  |  | #include <xcontrol/xtreeview.hpp>
 | 
 |  |  | #include <xcontrol/xdwgrid.hpp>
 | 
 |  |  | #include <xcontrol/xlayersheet.hpp>
 | 
 |  |  | #include <xcontrol/xcell.hpp>
 | 
 |  |  | #include <xcontrol/xlistview.hpp>
 | 
 |  |  | 
 | 
 |  |  | #include "vbusiness/vframe/maint.vframe.vbusiness.hpp"
 | 
 |  |  | #include "viewobject/view.base.hpp"
 | 
 |  |  | 
 | 
 |  |  | using xml = KXMLDOMDocument;
 | 
 |  |  | class __declspec(dllexport) TDocumentWin : public xframe
 | 
 |  |  | {
 | 
 |  |  | public:
 | 
 |  |  |    TDocumentWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
 | 
 |  |  | public:
 | 
 |  |  |    static TDocumentWin* CreateInstance(void* implPtr, void* hWnd)
 | 
 |  |  |    {
 | 
 |  |  |       return  new TDocumentWin(implPtr, (HWND)hWnd);
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  | public:
 | 
 |  |  |    //xdwgrid   dw_list;
 | 
 |  |  |    xtreeview tv_folder;
 | 
 |  |  |    xlistview  lv_view;
 | 
 |  |  |    xnode   m_agentNode;   //Agent Condition
 | 
 |  |  |    int columnCount;
 | 
 |  |  | 
 | 
 |  |  |    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 param)
 | 
 |  |  |    {
 | 
 |  |  |       //重置工具条
 | 
 |  |  |       SetAgent();
 | 
 |  |  |       return 1;
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    int OnListViewDoubleClicked(TEvent* evt,LPARAM param)
 | 
 |  |  |    {
 | 
 |  |  |       //重置工具条
 | 
 |  |  |       //SetAgent();
 | 
 |  |  |       return OnDocumentOpen();
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    int OnDocumentOpen()
 | 
 |  |  |    {
 | 
 |  |  |       int  LVNI_ALL = 0x0000;
 | 
 |  |  |       int  LVNI_FOCUSED = 0x0001;
 | 
 |  |  |       int  LVNI_SELECTED = 0x0002;
 | 
 |  |  |       int  LVNI_CUT = 0x0004;
 | 
 |  |  |       int  LVNI_DROPHILITED = 0x0008;
 | 
 |  |  | 
 | 
 |  |  |       int nItem = lv_view.GetNextItem(-1, LVNI_FOCUSED);
 | 
 |  |  |       if (nItem < 0) return 1;
 | 
 |  |  | 
 | 
 |  |  |       int LVIF_PARAM = 0x0004;
 | 
 |  |  | 
 | 
 |  |  |       lvitem lvItem;
 | 
 |  |  |       lvItem.iItem = nItem;
 | 
 |  |  |       lvItem.iSubItem = 0;
 | 
 |  |  |       lvItem.mask = LVIF_PARAM;
 | 
 |  |  | 
 | 
 |  |  |       lv_view.GetItem( lvItem);
 | 
 |  |  |       KXMLDOMElement ele =lvItem.lParam;
 | 
 |  |  | 
 | 
 |  |  |       xstring src = ele.getAttribute(L"url");
 | 
 |  |  |       xstring file = L"";
 | 
 |  |  |       if (src.find(L"/file/") > 0) file = src.mid(src.find(L"/file/") + 6, 9999);
 | 
 |  |  |       if (file.find(L"/file/") >= 0) file = file.mid(file.find(L"/file/") + 6, 9999);
 | 
 |  |  |       if (file.find(L"file/") >= 0) file = file.mid(file.find(L"file/") + 5, 9999);
 | 
 |  |  |       if (file == L"") return 1;
 | 
 |  |  |       //alert(file);
 | 
 |  |  |       xstring name = ele.getAttribute(L"caption");
 | 
 |  |  |       /*
 | 
 |  |  |       const xstring d = m_Html.GetData(p.object);
 | 
 |  |  |       if(d == L"") return -1;
 | 
 |  |  |       xstring file = d.mid(0, d.find(L"|##@@|",0));
 | 
 |  |  |       xstring name = d.mid(d.find(L"|##@@|",0)+6, d.length());
 | 
 |  |  |       */
 | 
 |  |  | 
 | 
 |  |  |       xaserver::CreateDirectory(L"C:/Temp");
 | 
 |  |  |       xstring str = file.left(2);
 | 
 |  |  |       xstring ext = L"";
 | 
 |  |  |       if (name.find(L".") >= 0) ext = name.mid(name.find(L"."), name.length());
 | 
 |  |  |       xstring sfile = file;// file.left(file.length() - 4);
 | 
 |  |  |       //trace(L"--"+ext +L" " + L"/business/attachment/"+str+L"/"+ file);
 | 
 |  |  |       //int openRet = xaserver::DownLoadFile(GetServerUrl(),L"/business/attachment/"+str+L"/"+ file,name,L"C:/Temp/"+name);
 | 
 |  |  |       int openRet = xaserver::DownLoadFile(GetServerUrl(), L"/business/attachment/" + str + L"/" + file + L".jpg", L"", L"C:/Temp/" + sfile + ext);
 | 
 |  |  | 
 | 
 |  |  |       //alert(L"/business/attachment/"+str+L"/"+ file+L".jpg");
 | 
 |  |  |       if (openRet < 0)
 | 
 |  |  |       {
 | 
 |  |  |          alert(L"文件打开失败1!");
 | 
 |  |  |          return -1;
 | 
 |  |  |       }
 | 
 |  |  |       //openRet =ShellExecute(0,L"open",L"C:/Temp/"+name,L"",L"",5);	 | 
 |  |  |       openRet =ShellExecuteW(0, L"open", L"C:/Temp/" + sfile + ext, L"", L"", 5);
 | 
 |  |  |       if (openRet < 32)
 | 
 |  |  |       {
 | 
 |  |  |          alert(L"文件打开失败2!");
 | 
 |  |  |          return -1;
 | 
 |  |  |       }
 | 
 |  |  | 
 | 
 |  |  |       return -1;
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    int OnAddAttachment()
 | 
 |  |  |    {
 | 
 |  |  |       xstring sguid = publiccode::GetGuid();
 | 
 |  |  |       xstring sname = sguid;
 | 
 |  |  |       xstring str = sname.mid(0, 2);
 | 
 |  |  |       str = str.toUpper();
 | 
 |  |  |       xstring suri = L"attachment" + str;
 | 
 |  |  |       xstring ret = xaserver::UploadFile(suri, sname + L".jpg", GetHWND(), L"", false);
 | 
 |  |  |       if (ret == L"-1")
 | 
 |  |  |       {
 | 
 |  |  |          alert(L"上传的文件没选择!");
 | 
 |  |  |          return 0;
 | 
 |  |  |       }
 | 
 |  |  |       else
 | 
 |  |  |       {
 | 
 |  |  |          while (ret.find(L"\\", 0) >= 0)
 | 
 |  |  |             ret = ret.mid(ret.find(L"\\", 0) + 1, 9999);
 | 
 |  |  | 
 | 
 |  |  |          HTREEITEM h = tv_folder.GetSelectedItem();
 | 
 |  |  |          KXMLDOMElement ele = tv_folder.GetItemData(h);
 | 
 |  |  |          xstring myurl = ele.getAttribute(L"url");
 | 
 |  |  |          //alert(myurl);
 | 
 |  |  | 
 | 
 |  |  |          xml x ;
 | 
 |  |  |          xaserverarg args;
 | 
 |  |  |          args.AddArg(L"myurl", myurl);
 | 
 |  |  |          args.AddArg(L"name", ret);
 | 
 |  |  |          args.AddArg(L"filepath", sname);
 | 
 |  |  |          args.AddArg(L"fileext", L"");
 | 
 |  |  |          args.AddArg(L"filesource", ret);
 | 
 |  |  | 
 | 
 |  |  |          xml x1 = ViewObject::RetrieveData(L"/sale/data/TDocument3/attachment/GetFileFormat", L"Name", ret);
 | 
 |  |  |          KXMLDOMNodeList items = x1.selectNodes(L"data/Item");
 | 
 |  |  |          KXMLDOMNode t = items.item(0);
 | 
 |  |  |          xstring FileFormat = L"";
 | 
 |  |  |          if (t.selectSingleNode(L"FileFormat"))FileFormat = t.selectSingleNode(L"FileFormat").text();
 | 
 |  |  |          if (FileFormat != L"pdf" && FileFormat != L"PDF" && FileFormat != L"mp4" && FileFormat != L"avi" && FileFormat != L"wmv" && FileFormat != L"mpg"
 | 
 |  |  |             && FileFormat != L"mpeg" && FileFormat != L"mov" && FileFormat != L"rm" && FileFormat != L"ram" && FileFormat != L"swf" && FileFormat != L"flv")
 | 
 |  |  |          {
 | 
 |  |  |             alert(L"文件格式错误,请上传PDF文档或者视频!");
 | 
 |  |  |             return 0;
 | 
 |  |  |          }
 | 
 |  |  | 
 | 
 |  |  |          if (xurl::get(L"/sale/data/TDocument3/attachment/add", args.GetString(), x) != 1)
 | 
 |  |  |          {
 | 
 |  |  |             alert(L"保存出错了!");
 | 
 |  |  |             return 0;
 | 
 |  |  |          }
 | 
 |  |  |          else
 | 
 |  |  |          {
 | 
 |  |  |             alert(x.text());
 | 
 |  |  |             //OnRetrieve();
 | 
 |  |  |          }
 | 
 |  |  |       }
 | 
 |  |  |       return 0;
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    int OnDeleteFile()
 | 
 |  |  |    {
 | 
 |  |  |       int  LVNI_ALL = 0x0000;
 | 
 |  |  |       int  LVNI_FOCUSED = 0x0001;
 | 
 |  |  |       int  LVNI_SELECTED = 0x0002;
 | 
 |  |  |       int  LVNI_CUT = 0x0004;
 | 
 |  |  |       int  LVNI_DROPHILITED = 0x0008;
 | 
 |  |  | 
 | 
 |  |  |       int nItem = lv_view.GetNextItem( -1, LVNI_FOCUSED);
 | 
 |  |  |       if (nItem < 0) return 1;
 | 
 |  |  | 
 | 
 |  |  |       int LVIF_PARAM = 0x0004;
 | 
 |  |  | 
 | 
 |  |  |       lvitem lvItem;
 | 
 |  |  |       lvItem.iItem = nItem;
 | 
 |  |  |       lvItem.iSubItem = 0;
 | 
 |  |  |       lvItem.mask = LVIF_PARAM;
 | 
 |  |  | 
 | 
 |  |  |       lv_view.GetItem( lvItem);
 | 
 |  |  |       KXMLDOMElement ele =lvItem.lParam;
 | 
 |  |  | 
 | 
 |  |  |       xstring src = ele.getAttribute(L"url");
 | 
 |  |  |       xstring file = L"";
 | 
 |  |  |       if (src.find(L"/file/") > 0) file = src.mid(src.find(L"/file/") + 6, 9999);
 | 
 |  |  |       if (file.find(L"/file/") >= 0) file = file.mid(file.find(L"/file/") + 6, 9999);
 | 
 |  |  |       if (file.find(L"file/") >= 0) file = file.mid(file.find(L"file/") + 5, 9999);
 | 
 |  |  |       if (file == L"") return 1;
 | 
 |  |  | 
 | 
 |  |  |       xstring name = ele.getAttribute(L"caption");
 | 
 |  |  |       if (MessageBox(GetHWND(), L"确定要删除文件" + name + L"?", L"提示", 1) == 2)
 | 
 |  |  |          return 0;
 | 
 |  |  | 
 | 
 |  |  |       xaserverarg arg;
 | 
 |  |  |       arg.AddArg(L"filepath", file);
 | 
 |  |  |       xml x;
 | 
 |  |  |       if (xurl::get(L"/sale/data/TDocument3/file/delete", arg.GetString(), x) != 1)
 | 
 |  |  |       {
 | 
 |  |  |          alert(L"删除出错了!");
 | 
 |  |  |          return 1;
 | 
 |  |  |       }
 | 
 |  |  |       else
 | 
 |  |  |       {
 | 
 |  |  |          //alert(x.text);
 | 
 |  |  |          lv_view.DeleteItem(nItem);
 | 
 |  |  |       }
 | 
 |  |  | 
 | 
 |  |  |       return 1;
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    //命令发布函数
 | 
 |  |  |    int OnCmdDispatch(xstring comdid)
 | 
 |  |  |    {
 | 
 |  |  |       xstring  userno = publiccode::GetUser().no;
 | 
 |  |  |       HTREEITEM h = tv_folder.GetSelectedItem();
 | 
 |  |  |       KXMLDOMElement ele = tv_folder.GetItemData(h);
 | 
 |  |  |       xstring caption = ele.getAttribute(L"caption");
 | 
 |  |  | 
 | 
 |  |  | 		 | 
 |  |  |          if (comdid == L"xmUpload")
 | 
 |  |  |          {
 | 
 |  |  | 
 | 
 |  |  |             /*if (caption == L"办公室")
 | 
 |  |  |             {
 | 
 |  |  | 
 | 
 |  |  |                if (userno == L"00805" || userno == L"00804")
 | 
 |  |  |                {
 | 
 |  |  |                   OnAddAttachment();
 | 
 |  |  |                }
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             if (caption == L"人事部")
 | 
 |  |  |             {
 | 
 |  |  | 
 | 
 |  |  |                if (userno == L"00804")
 | 
 |  |  |                {
 | 
 |  |  |                   OnAddAttachment();
 | 
 |  |  |                }
 | 
 |  |  |             }*/
 | 
 |  |  |             /*   if(caption =="业务部优秀案例" || caption =="采购部优秀案例" )
 | 
 |  |  |                {*/
 | 
 |  |  | 
 | 
 |  |  |             if (userno == L"admin" || userno == L"00301" || userno == L"00601" || userno == L"00614" || userno == L"00701" || userno == L"00204" || userno == L"00206" || userno == L"00102" || userno == L"00103" )
 | 
 |  |  |             {
 | 
 |  |  |                OnAddAttachment();
 | 
 |  |  |             }
 | 
 |  |  |             //}
 | 
 |  |  |             return 1;
 | 
 |  |  |          }
 | 
 |  |  |          if (comdid == L"xmOpen")
 | 
 |  |  |          {
 | 
 |  |  |             return OnDocumentOpen();
 | 
 |  |  |          }
 | 
 |  |  |          if (comdid == L"xmDelete")
 | 
 |  |  |          {
 | 
 |  |  |             /*if (caption == L"办公室")
 | 
 |  |  |             {
 | 
 |  |  | 
 | 
 |  |  |                if (userno == L"00805" || userno == L"00804")
 | 
 |  |  |                {
 | 
 |  |  |                   OnDeleteFile();
 | 
 |  |  |                }
 | 
 |  |  |             }
 | 
 |  |  |             if (caption == L"人事部")
 | 
 |  |  |             {
 | 
 |  |  | 
 | 
 |  |  |                if (userno == L"00804")
 | 
 |  |  |                {
 | 
 |  |  |                   OnDeleteFile();
 | 
 |  |  |                }
 | 
 |  |  |             }*/
 | 
 |  |  |             if (userno == L"admin" || userno == L"00301" || userno == L"00601" || userno == L"00614" || userno == L"00701" || userno == L"00204" || userno == L"00206" || userno == L"00102" || userno == L"00103" )
 | 
 |  |  |             {
 | 
 |  |  |                OnDeleteFile();
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             return 1;
 | 
 |  |  |          }
 | 
 |  |  |          if (comdid == L"xmSearch")
 | 
 |  |  |          {
 | 
 |  |  |             OnRetrieve();
 | 
 |  |  |             return 1;
 | 
 |  |  |          }
 | 
 |  |  | 		 | 
 |  |  |       return 0;
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    int OnRetrieve()
 | 
 |  |  |    {
 | 
 |  |  |       xstring urlEx = L"";
 | 
 |  |  |       xcontrol xc = GetControl(L"frame:sle_search");
 | 
 |  |  |       xstring Search = xc.GetText();
 | 
 |  |  |       HTREEITEM h = tv_folder.GetSelectedItem();
 | 
 |  |  |       KXMLDOMElement ele = tv_folder.GetItemData(h);
 | 
 |  |  |       urlEx = ele.getAttribute(L"url");
 | 
 |  |  | 
 | 
 |  |  |       trace(Search + L"******" + urlEx);
 | 
 |  |  |       if (urlEx == L"")
 | 
 |  |  |       {
 | 
 |  |  |          alert(L"选择文件目录!");
 | 
 |  |  |          return 1;
 | 
 |  |  |       }
 | 
 |  |  |       else
 | 
 |  |  |       {
 | 
 |  |  |          xaserverarg arg ;
 | 
 |  |  |          arg.AddArg(L"url", urlEx);
 | 
 |  |  |          arg.AddArg(L"Search", Search);
 | 
 |  |  |          OpenWindow(L"dev:xpage[trade.helpEx.vx]", arg);
 | 
 |  |  |          return 1;
 | 
 |  |  |       }
 | 
 |  |  | 
 | 
 |  |  |       return 1;
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    //命令处理事件
 | 
 |  |  |    int OnXCommand(TEvent* evt, LPARAM param)
 | 
 |  |  |    {
 | 
 |  |  |       return OnCmdDispatch(evt->xcommand.pStrID);
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    int OnAttachEvent()
 | 
 |  |  |    {
 | 
 |  |  |       //绑定工具条点击事件
 | 
 |  |  |       AttachEvent(L"WM_XCOMMAND", (FEvent)&TDocumentWin::OnXCommand);
 | 
 |  |  |       //获取焦点事件,用于重置工具条
 | 
 |  |  |       AttachEvent(L"WM_SETFOCUS", (FEvent) & TDocumentWin::OnSetFocus);
 | 
 |  |  | 
 | 
 |  |  |       return 1;
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    int createSubTree(HTREEITEM h, KXMLDOMElement ele)
 | 
 |  |  |    {
 | 
 |  |  |       KXMLDOMNodeList nlist = ele.selectNodes(L"folder");
 | 
 |  |  |       int i;
 | 
 |  |  |       int s = nlist.length();
 | 
 |  |  |       if (s > 0)
 | 
 |  |  |       {
 | 
 |  |  |          for (i = 0; i < s; i++)
 | 
 |  |  |          {
 | 
 |  |  |             KXMLDOMElement e = nlist.item(i);
 | 
 |  |  |             xstring name = e.getAttribute(L"caption");
 | 
 |  |  |             HTREEITEM hw = tv_folder.InsertChildItem(h, name, e, 15);
 | 
 |  |  |             createSubTree(hw, e);
 | 
 |  |  |          }
 | 
 |  |  |       }
 | 
 |  |  |       return 1;
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    int OnCreateTree()
 | 
 |  |  |    {
 | 
 |  |  |       xml x;
 | 
 |  |  |       if (xurl::get(L"/sale/data/TDocument3/folder/root", L"", x) != 1)
 | 
 |  |  |       {
 | 
 |  |  |          return -1;
 | 
 |  |  |       }
 | 
 |  |  |       else
 | 
 |  |  |       {
 | 
 |  |  |          KXMLDOMNodeList nlist = x.selectNodes(L"folders/folder");
 | 
 |  |  |          int len = nlist.length();
 | 
 |  |  | 
 | 
 |  |  |          if (len > 0)
 | 
 |  |  |          {
 | 
 |  |  |             int i;
 | 
 |  |  |             for (i = 0; i < len; i++)
 | 
 |  |  |             {
 | 
 |  |  |                KXMLDOMElement e = nlist.item(i);
 | 
 |  |  |                xstring name = e.getAttribute(L"caption");
 | 
 |  |  |                HTREEITEM h =tv_folder.InsertChildItem( 0, name, e, 17);
 | 
 |  |  |                createSubTree(h, e);
 | 
 |  |  |                if (len == 1) tv_folder.ExpandItem(h);
 | 
 |  |  |             }
 | 
 |  |  |             tv_folder.ExpandItem(0);
 | 
 |  |  |          }
 | 
 |  |  |       }
 | 
 |  |  |       return 1;
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    //树选择
 | 
 |  |  |    int OnTreeSelChanged(TEvent* evt, int p)
 | 
 |  |  |    {
 | 
 |  |  |       xstring name;
 | 
 |  |  |       lv_view.DeleteItemAll();
 | 
 |  |  | 
 | 
 |  |  |       HTREEITEM h = tv_folder.GetSelectedItem();
 | 
 |  |  |       KXMLDOMElement ele = tv_folder.GetItemData(h);
 | 
 |  |  |       KXMLDOMNodeList nlist = ele.selectNodes(L"folder");
 | 
 |  |  | 
 | 
 |  |  |       int i;
 | 
 |  |  |       int s = nlist.length();
 | 
 |  |  |       if (s > 0)
 | 
 |  |  |       {
 | 
 |  |  |          for (i = 0; i < s; i++)
 | 
 |  |  |          {
 | 
 |  |  |             KXMLDOMElement e = nlist.item(i);
 | 
 |  |  |             name = e.getAttribute(L"caption");
 | 
 |  |  |             lv_view.InsertItemEx(0, name, 0, e);
 | 
 |  |  |          }
 | 
 |  |  |       }
 | 
 |  |  | 
 | 
 |  |  |       xstring src = ele.getAttribute(L"url");
 | 
 |  |  |       trace(L"\r\n" + src);
 | 
 |  |  |       xml x = ViewObject::RetrieveData(L"/sale/data/TDocument3/folder/list", L"src", src);
 | 
 |  |  |       if (x)
 | 
 |  |  |       {
 | 
 |  |  |          //alert(x.GetXml());
 | 
 |  |  |          nlist = x.documentElement().selectNodes(L"*");
 | 
 |  |  |          s = nlist.length();
 | 
 |  |  |          if (s > 0)
 | 
 |  |  |          {
 | 
 |  |  |             for (i = 0; i < s; i++)
 | 
 |  |  |             {
 | 
 |  |  |                KXMLDOMElement e = nlist.item(i);
 | 
 |  |  |                name = e.getAttribute(L"caption");
 | 
 |  |  |                int nItem = lv_view.InsertItemEx( 0, name, 23, e);
 | 
 |  |  | 
 | 
 |  |  |                lv_view.SetItemText( nItem, 1, e.getAttribute(L"Creator"));
 | 
 |  |  |                lv_view.SetItemText( nItem, 2, e.getAttribute(L"CreateDate"));
 | 
 |  |  |             }
 | 
 |  |  |          }
 | 
 |  |  |       }
 | 
 |  |  |       lv_view.Redraw();
 | 
 |  |  | 
 | 
 |  |  |       return 1;
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    int SetListViewHeaderColumn(xstring Url)
 | 
 |  |  |    {
 | 
 |  |  |       const int LVCFMT_LEFT = 0;
 | 
 |  |  |       for (int i = 0; i < 3; i++)  lv_view.DeleteColumn( 1);
 | 
 |  |  |       //if(Url==L"")
 | 
 |  |  |       //{
 | 
 |  |  |       lv_view.InsertColumn(0, L"创建日期", LVCFMT_LEFT, 80, 0);
 | 
 |  |  |       lv_view.InsertColumn(0, L"创建人员", LVCFMT_LEFT, 80, 0);
 | 
 |  |  |       lv_view.InsertColumn(0, L"名称", 0, 180, 0);
 | 
 |  |  |       columnCount = 3;
 | 
 |  |  |       //}
 | 
 |  |  |       return 1;
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    /*
 | 
 |  |  |    int  OnRetrieve()
 | 
 |  |  |    {
 | 
 |  |  |       xml x = new xml;
 | 
 |  |  |       x.setNativePointer(xml::CreateInstance());
 | 
 |  |  |       xaserverarg arg = new xaserverarg;
 | 
 |  |  |       arg.setNativePointer(arg.CreateInstance());
 | 
 |  |  |       arg.AddArg(L"xxx",L"xxx");
 | 
 |  |  |       if (getUrl(L"",arg.GetString(),x)!=1)
 | 
 |  |  |       {
 | 
 |  |  |          trace(x.text);
 | 
 |  |  |          return -1;
 | 
 |  |  |       }else
 | 
 |  |  |       {
 | 
 |  |  |          //dw_list.Retrieve(x);
 | 
 |  |  |          //dw_list.Redraw();
 | 
 |  |  |       }
 | 
 |  |  |       return 1;
 | 
 |  |  |    }
 | 
 |  |  |    */
 | 
 |  |  | 
 | 
 |  |  |    int onload()
 | 
 |  |  |    {
 | 
 |  |  |       tv_folder = GetControl(L"tv_folder");
 | 
 |  |  |       lv_view = GetControl(L"lv_view");
 | 
 |  |  | 
 | 
 |  |  |       columnCount = 0;
 | 
 |  |  |       SetListViewHeaderColumn(L"");
 | 
 |  |  | 
 | 
 |  |  |       AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&TDocumentWin::OnTreeSelChanged);
 | 
 |  |  |       AttachEvent(L"lv_view", L"NM_DBLCLK", (FEvent)&TDocumentWin::OnListViewDoubleClicked);
 | 
 |  |  | 
 | 
 |  |  |       OnCreateTree();
 | 
 |  |  |       OnAttachEvent();
 | 
 |  |  | 
 | 
 |  |  |       tv_folder.ExpandItem(tv_folder.GetRootItem());
 | 
 |  |  |       return 1;
 | 
 |  |  |    }
 | 
 |  |  | 
 | 
 |  |  |    int onloaded()
 | 
 |  |  |    {
 | 
 |  |  |       SetAgent();
 | 
 |  |  | 
 | 
 |  |  |       return 1;
 | 
 |  |  |    }
 | 
 |  |  | }; |