w_email_set_list.srw 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600
  1. $PBExportHeader$w_email_set_list.srw
  2. forward
  3. global type w_email_set_list from w_publ_base
  4. end type
  5. type r_bar from rectangle within w_email_set_list
  6. end type
  7. type tv_1 from treeview within w_email_set_list
  8. end type
  9. type lv_1 from listview within w_email_set_list
  10. end type
  11. type cb_1 from uo_imflatbutton within w_email_set_list
  12. end type
  13. type cb_2 from uo_imflatbutton within w_email_set_list
  14. end type
  15. type cb_3 from uo_imflatbutton within w_email_set_list
  16. end type
  17. type cb_4 from uo_imflatbutton within w_email_set_list
  18. end type
  19. type ln_bar from line within w_email_set_list
  20. end type
  21. type ln_bar2 from line within w_email_set_list
  22. end type
  23. end forward
  24. global type w_email_set_list from w_publ_base
  25. integer width = 2747
  26. integer height = 1908
  27. string title = "邮箱账号管理"
  28. boolean maxbox = true
  29. boolean resizable = true
  30. windowstate windowstate = maximized!
  31. r_bar r_bar
  32. tv_1 tv_1
  33. lv_1 lv_1
  34. cb_1 cb_1
  35. cb_2 cb_2
  36. cb_3 cb_3
  37. cb_4 cb_4
  38. ln_bar ln_bar
  39. ln_bar2 ln_bar2
  40. end type
  41. global w_email_set_list w_email_set_list
  42. type variables
  43. private:
  44. long ins_can_see_other = 0
  45. long ins_can_edit = 0
  46. long ins_can_delete = 0
  47. transaction Commit_Tran // 帐号表所有数据库
  48. transaction fj_tran // 邮件附件数据库
  49. end variables
  50. forward prototypes
  51. private subroutine wf_make_tree ()
  52. public subroutine wf_listview_dblclk (integer index)
  53. private subroutine wf_retrieve_listview ()
  54. end prototypes
  55. private subroutine wf_make_tree ();long ll_root
  56. long ll_count,cnt
  57. treeviewitem l_tvi
  58. tv_1.setredraw(false)
  59. long ll_selected, ll_selectedValue = -2
  60. ll_selected = tv_1.Finditem(CurrentTreeItem!, 0)
  61. if ll_selected <> -1 then
  62. if tv_1.GetItem(ll_selected, l_tvi) = 1 then
  63. ll_selectedValue = l_tvi.data
  64. end if
  65. end if
  66. ll_selected = 0
  67. DO UNTIL tv_1.FindItem(RootTreeItem!, 0) = -1
  68. tv_1.DeleteItem(0)
  69. LOOP
  70. ll_root = tv_1.insertitemlast(0, '所有账号', 1)
  71. if tv_1.GetItem(ll_root, l_tvi) = 1 then
  72. l_tvi.data = -2
  73. if ll_selectedValue = l_tvi.data then
  74. ll_selected = ll_root
  75. end if
  76. tv_1.SetItem(ll_root, l_tvi)
  77. end if
  78. long ll_handle
  79. ll_handle = tv_1.insertitemlast(ll_root, '(公共账号)', 2)
  80. if tv_1.GetItem(ll_handle, l_tvi) = 1 then
  81. l_tvi.Data = -1
  82. if ll_selectedValue = l_tvi.data then
  83. ll_selected = ll_handle
  84. end if
  85. ll_count = 0
  86. SELECT count(0) INTO :ll_count
  87. FROM u_email_set
  88. WHERE ((mailtype = 1));
  89. l_tvi.label = '(公共账号)' + '(' + string(ll_count) + ')'
  90. tv_1.SetItem(ll_handle, l_tvi)
  91. end if
  92. tv_1.selectitem(ll_handle)
  93. long ll_empid
  94. long ll_id
  95. string ls_username
  96. // 可以编辑他人的权限
  97. if uo_email_power.can_see_other(sys_msg_pow) then
  98. ll_empid = -1
  99. else
  100. ll_empid = sys_empid
  101. end if
  102. long emplist[]
  103. emplist[1]=ll_empid
  104. f_get_empson(ll_empid, emplist)
  105. string ls_sql,emp_str=''
  106. for cnt=1 to upperbound(emplist)
  107. emp_str+=string(emplist[cnt])+','
  108. next
  109. emp_str=mid(emp_str,1,len(emp_str)-1)
  110. ls_sql='SELECT Empid, Username'&
  111. +' FROM u_user'&
  112. +' where (empid in('+emp_str+') or (-1= '+string(ll_empid)+'))'&
  113. +' order by Username;'
  114. //declare cursor_user cursor for
  115. // SELECT Empid, Username
  116. // FROM u_user
  117. // where (empid in(:ll_empid) or (-1= :ll_empid))
  118. // order by Username;
  119. //
  120. //open cursor_user;
  121. declare cursor_user dynamic cursor for SQLSA;
  122. prepare SQLSA from :ls_sql;
  123. open DYNAMIC cursor_user;
  124. fetch cursor_user INTO :ll_id, :ls_username;
  125. do while (sqlca.sqlcode = 0)
  126. ll_handle = tv_1.insertitemlast(ll_root, ls_username, 2)
  127. if tv_1.GetItem(ll_handle, l_tvi) = 1 then
  128. ll_count = 0
  129. SELECT count(0) INTO :ll_count
  130. FROM u_email_set
  131. WHERE ((mailtype = 0) and (empid = :ll_id));
  132. l_tvi.label = ls_username + '(' + string(ll_count) + ')'
  133. l_tvi.data = ll_id
  134. if ll_selectedValue = l_tvi.data then
  135. ll_selected = ll_handle
  136. end if
  137. tv_1.SetItem(ll_handle, l_tvi)
  138. end if
  139. fetch cursor_user INTO :ll_id, :ls_username;
  140. loop
  141. close cursor_user;
  142. tv_1.expandall(ll_root)
  143. tv_1.selectitem(ll_selected)
  144. tv_1.setredraw(true)
  145. end subroutine
  146. public subroutine wf_listview_dblclk (integer index);ListViewItem l_lvi
  147. s_email_set s_set
  148. if lv_1.GetItem(index, l_lvi) = 1 then
  149. s_set = l_lvi.data
  150. if uo_email_power.can_edit(sys_msg_pow) then
  151. s_set.flag = 1
  152. else
  153. s_set.flag = 0
  154. end if
  155. openWithParm(w_email_set_detail, s_set)
  156. wf_retrieve_listview()
  157. end if
  158. end subroutine
  159. private subroutine wf_retrieve_listview ();long ll_handle
  160. long arg_empid, arg_mailtype
  161. lv_1.setredraw(false)
  162. ll_handle = tv_1.finditem(CurrentTreeItem!, 0)
  163. if ll_handle = -1 then return
  164. treeviewitem l_tvi
  165. long ll_empid
  166. if tv_1.GetItem(ll_handle, l_tvi) = 1 then
  167. arg_empid = l_tvi.data
  168. if arg_empid = -1 then // 公共
  169. arg_mailtype = 1
  170. else // 私人
  171. arg_mailtype = 0
  172. end if
  173. end if
  174. lv_1.deleteitems()
  175. declare cursor1 cursor for
  176. SELECT mailID, mailuser, mailaddress, popset, popport, smtpset, smtpport, empid, mailtype
  177. FROM u_email_set
  178. WHERE ((1 = :arg_mailtype) and (mailtype = 1))
  179. OR ((0 = :arg_mailtype) AND (mailtype = 0) and (empid = :arg_empid));
  180. open cursor1;
  181. ListViewItem l_lvi
  182. s_email_set s_mailset
  183. fetch cursor1 INTO :s_mailset.mailid, :s_mailset.mailuser, :s_mailset.mailaddress,
  184. :s_mailset.popset, :s_mailset.popport, :s_mailset.smtpset, :s_mailset.smtpport,
  185. :s_mailset.empid, :s_mailset.viewtype;
  186. do while (sqlca.sqlcode = 0)
  187. l_lvi.label = s_mailset.mailuser + '<' + s_mailset.mailaddress + '>'
  188. l_lvi.pictureindex = 1
  189. l_lvi.data = s_mailset
  190. long ll_index
  191. ll_index = lv_1.additem(l_lvi)
  192. lv_1.Setitem(ll_index, 2, s_mailset.popset + ':' + string(s_mailset.popport))
  193. lv_1.Setitem(ll_index, 3, s_mailset.smtpset + ':' + string(s_mailset.smtpport))
  194. fetch cursor1 INTO :s_mailset.mailid, :s_mailset.mailuser, :s_mailset.mailaddress,
  195. :s_mailset.popset, :s_mailset.popport, :s_mailset.smtpset, :s_mailset.smtpport,
  196. :s_mailset.empid, :s_mailset.viewtype;
  197. loop
  198. close cursor1;
  199. lv_1.setredraw(true)
  200. end subroutine
  201. on w_email_set_list.create
  202. int iCurrent
  203. call super::create
  204. this.r_bar=create r_bar
  205. this.tv_1=create tv_1
  206. this.lv_1=create lv_1
  207. this.cb_1=create cb_1
  208. this.cb_2=create cb_2
  209. this.cb_3=create cb_3
  210. this.cb_4=create cb_4
  211. this.ln_bar=create ln_bar
  212. this.ln_bar2=create ln_bar2
  213. iCurrent=UpperBound(this.Control)
  214. this.Control[iCurrent+1]=this.r_bar
  215. this.Control[iCurrent+2]=this.tv_1
  216. this.Control[iCurrent+3]=this.lv_1
  217. this.Control[iCurrent+4]=this.cb_1
  218. this.Control[iCurrent+5]=this.cb_2
  219. this.Control[iCurrent+6]=this.cb_3
  220. this.Control[iCurrent+7]=this.cb_4
  221. this.Control[iCurrent+8]=this.ln_bar
  222. this.Control[iCurrent+9]=this.ln_bar2
  223. end on
  224. on w_email_set_list.destroy
  225. call super::destroy
  226. destroy(this.r_bar)
  227. destroy(this.tv_1)
  228. destroy(this.lv_1)
  229. destroy(this.cb_1)
  230. destroy(this.cb_2)
  231. destroy(this.cb_3)
  232. destroy(this.cb_4)
  233. destroy(this.ln_bar)
  234. destroy(this.ln_bar2)
  235. end on
  236. event open;call super::open;if sys_project = 0 then
  237. //L1权限
  238. ins_can_see_other = 2571
  239. ins_can_edit = 2572
  240. ins_can_delete = 2573
  241. elseif sys_project = 1 then
  242. // ecl权限
  243. ins_can_see_other =1411 //2571可以看其它人的
  244. ins_can_edit = 1412 //可以修改的
  245. ins_can_delete = 1444 //可以删除的
  246. end if
  247. commit_tran = sqlca
  248. Long ll_ConnectionID
  249. String arg_msg
  250. Int li_ifexit = 0
  251. IF sys_email_sqlca.DBHandle() > 0 THEN
  252. fj_tran = sys_email_sqlca
  253. ELSE
  254. MessageBox('系统提示','要使用邮件功能,请先定义邮件数据库')
  255. li_ifexit = 1
  256. END IF
  257. IF li_ifexit = 0 THEN
  258. wf_make_tree()
  259. tv_1.SetFocus( )
  260. ELSE
  261. cb_exit.PostEvent(Clicked!)
  262. END IF
  263. end event
  264. event resize;call super::resize;r_bar.width = this.width
  265. tv_1.height = newheight - tv_1.y - 8
  266. lv_1.height = tv_1.height
  267. lv_1.width = newwidth - lv_1.x - 8
  268. ln_bar.endx = newwidth
  269. ln_bar2.endx = newwidth
  270. end event
  271. event close;call super::close;if isvalid(w_email_view) then // 刷新邮件界面
  272. string ls_msg
  273. w_email_view.wf_init(ls_msg)
  274. end if
  275. end event
  276. type cb_func from w_publ_base`cb_func within w_email_set_list
  277. boolean visible = false
  278. integer x = 1888
  279. integer y = 1600
  280. integer width = 311
  281. integer height = 96
  282. string text = "功能"
  283. string normalpicname = ""
  284. integer picsize = 0
  285. toolbaralignment pic_align = alignatleft!
  286. boolean border = true
  287. end type
  288. type cb_exit from w_publ_base`cb_exit within w_email_set_list
  289. integer x = 965
  290. integer width = 192
  291. integer height = 164
  292. integer picsize = 16
  293. toolbaralignment pic_align = alignattop!
  294. boolean border = false
  295. end type
  296. type r_bar from rectangle within w_email_set_list
  297. long linecolor = 16777215
  298. integer linethickness = 4
  299. long fillcolor = 1073741824
  300. integer x = 1166
  301. integer width = 229
  302. integer height = 92
  303. end type
  304. event constructor;this.fillcolor = 14215660
  305. this.linecolor = 14215660
  306. this.x = -1
  307. this.y = -1
  308. this.height = ln_bar.beginy - 5
  309. end event
  310. type tv_1 from treeview within w_email_set_list
  311. integer y = 176
  312. integer width = 869
  313. integer height = 1604
  314. integer taborder = 10
  315. boolean bringtotop = true
  316. integer textsize = -9
  317. integer weight = 400
  318. fontcharset fontcharset = gb2312charset!
  319. fontpitch fontpitch = variable!
  320. string facename = "宋体"
  321. long textcolor = 33554432
  322. borderstyle borderstyle = stylelowered!
  323. string picturename[] = {"email_all.bmp","email_one.bmp"}
  324. long picturemaskcolor = 536870912
  325. long statepicturemaskcolor = 536870912
  326. end type
  327. event selectionchanged;wf_retrieve_listView()
  328. end event
  329. type lv_1 from listview within w_email_set_list
  330. integer x = 873
  331. integer y = 180
  332. integer width = 1819
  333. integer height = 1592
  334. integer taborder = 10
  335. boolean bringtotop = true
  336. integer textsize = -9
  337. integer weight = 400
  338. fontcharset fontcharset = gb2312charset!
  339. fontpitch fontpitch = variable!
  340. string facename = "宋体"
  341. long textcolor = 33554432
  342. borderstyle borderstyle = stylelowered!
  343. boolean extendedselect = true
  344. boolean fullrowselect = true
  345. listviewview view = listviewreport!
  346. string largepicturename[] = {"email_one.bmp"}
  347. long largepicturemaskcolor = 536870912
  348. string smallpicturename[] = {"email_one.bmp"}
  349. long smallpicturemaskcolor = 536870912
  350. long statepicturemaskcolor = 536870912
  351. end type
  352. event constructor;This.AddColumn("账号" , Left! , 1000)
  353. This.AddColumn("POP服务" , Left! , 600)
  354. This.AddColumn("SMTP服务" , Left! , 600)
  355. end event
  356. event doubleclicked;wf_listview_dblclk(index)
  357. end event
  358. type cb_1 from uo_imflatbutton within w_email_set_list
  359. integer width = 192
  360. integer height = 164
  361. integer taborder = 10
  362. boolean bringtotop = true
  363. string text = "添加"
  364. string normalpicname = "new.bmp"
  365. integer picsize = 16
  366. toolbaralignment pic_align = alignattop!
  367. boolean border = false
  368. end type
  369. event clicked;call super::clicked;if not uo_email_power.can_edit(sys_msg_pow) then
  370. MessageBox(publ_operator,'你没有添加邮箱账号的权限')
  371. return
  372. end if
  373. long ll_handle
  374. ll_handle = tv_1.findItem(CurrentTreeItem!, 0)
  375. if ll_handle = -1 then
  376. Messagebox('提示', '请先选择账号所属')
  377. tv_1.setfocus( )
  378. return
  379. end if
  380. treeviewitem l_tvi
  381. s_email_set s_set
  382. long ll_empid
  383. if tv_1.GetItem(ll_handle, l_tvi) = 1 then
  384. ll_empid = l_tvi.data
  385. if ll_empid = -2 then
  386. Messagebox('提示', '请先选择账号所属')
  387. tv_1.setfocus( )
  388. return
  389. elseif ll_empid = -1 then
  390. s_set.mailid = 0
  391. s_set.empid = 0
  392. s_set.viewtype = 1
  393. elseif ll_empid >= 0 then
  394. s_set.mailid = 0
  395. s_set.empid = ll_empid
  396. s_set.viewtype = 0
  397. end if
  398. s_set.flag = 1
  399. openwithparm(w_email_set_detail, s_set)
  400. wf_make_tree()
  401. // wf_retrieve_listView()
  402. end if
  403. end event
  404. type cb_2 from uo_imflatbutton within w_email_set_list
  405. integer x = 192
  406. integer width = 192
  407. integer height = 164
  408. integer taborder = 20
  409. boolean bringtotop = true
  410. string text = "修改"
  411. string normalpicname = "open.bmp"
  412. integer picsize = 16
  413. toolbaralignment pic_align = alignattop!
  414. boolean border = false
  415. end type
  416. event clicked;call super::clicked;if not uo_email_power.can_edit(sys_msg_pow) then
  417. MessageBox(publ_operator,'你没有修改邮箱账号的权限')
  418. return
  419. end if
  420. if lv_1.totalselected( ) < 1 then
  421. MessageBox('提示', '请先选择要修改的账号')
  422. return
  423. elseif lv_1.totalselected( ) > 1 then
  424. MessageBox('提示', '多选状态下不能修改')
  425. return
  426. end if
  427. wf_listView_dblclk(lv_1.selectedindex( ))
  428. end event
  429. type cb_3 from uo_imflatbutton within w_email_set_list
  430. integer x = 384
  431. integer width = 192
  432. integer height = 164
  433. integer taborder = 30
  434. boolean bringtotop = true
  435. string text = "删除"
  436. string normalpicname = "delete.bmp"
  437. integer picsize = 16
  438. toolbaralignment pic_align = alignattop!
  439. boolean border = false
  440. end type
  441. event clicked;call super::clicked;if not uo_email_power.can_delete(sys_msg_pow) then
  442. MessageBox(publ_operator,sys_msg_pow)
  443. return
  444. end if
  445. if lv_1.totalselected( ) <= 0 then
  446. Messagebox('提示', '请选择要删除的账号')
  447. return
  448. end if
  449. IF MessageBox ("询问","是否确定要删除选中的邮箱账号?(选择确定后记录将不可恢复)",Question!,YesNo! ) = 2 THEN
  450. RETURN
  451. END IF
  452. uo_email_set uo_set
  453. uo_set.commit_tran = commit_tran
  454. uo_set.fj_tran = fj_tran
  455. s_email_set s_set
  456. listViewItem l_lvi
  457. string ls_msg, ls_sum = ''
  458. long ll_handle = 0
  459. ll_handle = lv_1.finditem(ll_handle, DirectionAll!, false, true, false, false)
  460. do while (ll_handle > 0)
  461. if lv_1.GetItem(ll_handle, l_lvi) = 1 then
  462. s_set = l_lvi.data
  463. if uo_set.uf_del(s_set.mailid, ls_msg) <> 1 then
  464. ls_sum = ls_sum + '删除' + s_set.mailaddress + '失败~t' + ls_msg + '~r~n'
  465. end if
  466. end if
  467. ll_handle = lv_1.finditem(ll_handle, DirectionAll!, false, true, false, false)
  468. loop
  469. if ls_msg <> '' then
  470. MessageBox('错误', ls_sum)
  471. end if
  472. wf_make_tree()
  473. //wf_retrieve_listview()
  474. end event
  475. type cb_4 from uo_imflatbutton within w_email_set_list
  476. integer x = 576
  477. integer width = 384
  478. integer height = 164
  479. integer taborder = 20
  480. boolean bringtotop = true
  481. string text = "邮箱类型转换"
  482. string normalpicname = "imexport.bmp"
  483. integer picsize = 16
  484. toolbaralignment pic_align = alignattop!
  485. boolean border = false
  486. end type
  487. event clicked;call super::clicked;//
  488. //if not f_power_ind(3351,sys_msg_pow) then
  489. // MessageBox(publ_operator,'你没有修改邮箱类型的权限')
  490. // return
  491. //end if
  492. if lv_1.totalselected( ) < 1 then
  493. MessageBox('提示', '请先选择要修改的账号')
  494. return
  495. elseif lv_1.totalselected( ) > 1 then
  496. MessageBox('提示', '多选状态下不能修改')
  497. return
  498. end if
  499. long index
  500. index=lv_1.selectedindex( )
  501. ListViewItem l_lvi
  502. s_email_set s_set
  503. if lv_1.GetItem(index, l_lvi) = 1 then
  504. s_set = l_lvi.data
  505. openWithParm(w_email_set_mailtype, s_set.mailid)
  506. wf_retrieve_listview()
  507. end if
  508. end event
  509. type ln_bar from line within w_email_set_list
  510. long linecolor = 268435456
  511. integer linethickness = 4
  512. integer beginy = 172
  513. integer endx = 1961
  514. integer endy = 172
  515. end type
  516. type ln_bar2 from line within w_email_set_list
  517. long linecolor = 16777215
  518. integer linethickness = 4
  519. integer beginy = 176
  520. integer endx = 1993
  521. integer endy = 176
  522. end type