Monday, March 25, 2013

PerPageHTML Calendar 不會換日問題修正

From Evernote:

PerPageHTML Calendar 不會換日問題修正

剛接手了一支 iPhone 4,發現 JB 後可以安裝 PerPageHTML 就能有類似 hTc 時鐘的 widget!


嗯,畫面果然不錯~
除了 hTc 時鐘,還有Calendar widget。


但是,過了一天就發現 Calendar 不會自動換日,但是時鐘卻很正常。

用 iFile 檢查了 Calendar code 後,發現這不知道從哪裡拿來用的 Calendar (會不會是直接拿 dashboard widget?),本來就都有用 setTimer 寫好 update timer 在換日時作用,只是不知道為什麼在 PerPageHTML 下不會作用。但是 hTc 時鐘卻告訴我們,在 PerPageHTML 下 setInterval 是正常的。

作了幾個簡單的測試,發現
  • setTimer 沒有作用
  • setInterval 30min 也不會動作
  • 但是 setInterval 1sec 卻可以正常動作
既然有了這個測試結果,我也懶得去深究原因。(雖然猜測大概是 PerPageHTML 的 Renderer 並沒有一直在執行 Calendar widget)簡單改了一下 Calendar 後,發現會正確換日了,實測也沒有耗電的現象。

所以,在此做個紀錄、收工~

我修改了
     1. 在 Widget.html body 加入 setInterval 呼叫 updateDate

<span id='date'>
<script language="JavaScript">setInterval('updateDate()', 1000)</script>
</span>

     2. 修改 Canlendar.js 的 updateDate

function updateDate ()
{
     gDate = new Date();
     var currentEqualDate = gDate.getMonth() == gBrowsingMonth &&
                                gDate.getFullYear() == gBrowsingYear &&
                                gDate.getDate() == gBrowsingDate;
 
     if (!currentEqualDate)
     {
          gBrowsingMonth = gDate.getMonth();
          gBrowsingYear = gDate.getFullYear();
          gBrowsingDate = gDate.getDate();
 
          drawGrid (gBrowsingMonth, gBrowsingYear);
          drawHiliteTodayInGrid ();
          drawText ();
     }
}