zy_icache.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /**
  2. *
  3. */
  4. var zy_dl_opid=1000;
  5. var zy_dl_session=new Object;
  6. var zy_dl_taskcount=0;
  7. var zy_muticount=3;
  8. var lstor=(window.localStorage?window.localStorage:(new Object));
  9. function zy_initcache(cb)
  10. {
  11. uexFileMgr.cbGetFileRealPath = function(opCode, dataType, path) {
  12. zy_dl_session.rp = path;
  13. if (cb)
  14. cb();
  15. }
  16. uexFileMgr.getFileRealPath("wgt://");
  17. }
  18. function zy_imgcache(sel,key,url,cb,err,dest,ext)
  19. {
  20. uexDownloaderMgr.onStatus = function(opCode, fileSize, percent, status) {
  21. switch (status) {
  22. case 0 :
  23. break;
  24. case 1 :
  25. var s = zy_dl_session[opCode];
  26. uexDownloaderMgr.closeDownloader(opCode);
  27. uexDownloaderMgr.clearTask(s.rul);
  28. lstor[s.key] = s.dest.replace("wgt://", zy_dl_session.rp);
  29. setTimeout(function(){
  30. if (s.cb)
  31. s.cb(s.sel, lstor[s.key]);
  32. else
  33. $$(s.sel).style.backgroundImage = "url(" + lstor[s.key] + ")";
  34. zy_cleartask(opCode);
  35. },100);
  36. break;
  37. case 2 :
  38. uexDownloaderMgr.closeDownloader(opCode);
  39. if (zy_dl_session[opCode].err)
  40. zy_dl_session[opCode].err();
  41. zy_cleartask(opCode);
  42. return;
  43. }
  44. };
  45. uexDownloaderMgr.cbCreateDownloader = function(opCode, dataType, data) {
  46. if (data == 0) {
  47. var s = zy_dl_session[opCode];
  48. if (!s.dest) {
  49. var d = new Date();
  50. s.dest = "wgt://data/icache/" + d.valueOf() + opCode + "."
  51. + (s.ext ? s.ext : "jpg");
  52. }
  53. else
  54. s.dest = "wgt://data/icache/"+s.dest;
  55. uexDownloaderMgr.download(opCode, s.url, s.dest, '0');
  56. } else {
  57. uexDownloaderMgr.closeDownloader(opCode);
  58. if (zy_dl_session[opCode].err)
  59. zy_dl_session[opCode].err();
  60. zy_cleartask(opId);
  61. }
  62. };
  63. uexFileMgr.cbIsFileExistByPath=function(opId,dataType,data)
  64. {
  65. if(parseInt(data,10))
  66. {
  67. var s = zy_dl_session[opId];
  68. setTimeout(function(){
  69. if (s.cb)
  70. s.cb(s.sel,s.rp);
  71. else
  72. $$(s.sel).style.backgroundImage = "url(" + s.rp + ")";
  73. zy_cleartask(opId);
  74. },100);
  75. }
  76. else{
  77. uexDownloaderMgr.createDownloader(opId);
  78. }
  79. }
  80. {
  81. zy_dl_opid++;
  82. zy_dl_session[zy_dl_opid] = new Object;
  83. zy_dl_session[zy_dl_opid].sel = sel;
  84. zy_dl_session[zy_dl_opid].key = key;
  85. zy_dl_session[zy_dl_opid].cb = cb;
  86. zy_dl_session[zy_dl_opid].err = err;
  87. zy_dl_session[zy_dl_opid].url = url;
  88. zy_dl_session[zy_dl_opid].dest = dest;
  89. zy_dl_session[zy_dl_opid].ext = ext;
  90. zy_dl_session[zy_dl_opid].state=0;
  91. zy_runcache();
  92. }
  93. if(lstor[key])
  94. return lstor[key];
  95. else
  96. return "";
  97. }
  98. function zy_cleartask(id)
  99. {
  100. delete zy_dl_session[id];
  101. zy_dl_taskcount--;
  102. zy_runcache();
  103. }
  104. function zy_runcache(){
  105. if (zy_dl_taskcount < zy_muticount) {
  106. for (var i in zy_dl_session) {
  107. var s=zy_dl_session[i];
  108. if (s.state == 0) {
  109. s.state = 1;
  110. zy_dl_taskcount++;
  111. s.rp = lstor[s.key];
  112. if (s.rp)
  113. uexFileMgr.isFileExistByPath("" + i, s.rp);
  114. else
  115. uexDownloaderMgr.createDownloader(i);
  116. return;
  117. }
  118. }
  119. }
  120. }
  121. function zy_clearcache()
  122. {
  123. lstor.clear();
  124. uexFileMgr.deleteFileByPath("wgt://data/icache");
  125. }