2009/12/01

[gadget]最後に選択したタブを画面オープン時に選択する

iGoogleをいったん閉じて、再度オープンした場合、最後に選択したタブが選択されている状態でオープンしてほしい場合があります。

そんな時は、下のように組めば復元できます。

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Test"
directory_title=""
title_url="http://widgmedia.com/"
description=""
author="maito.kuwahara"
author_location="Japan"
author_affiliation=""
author_email="mai.musicfactory+gadgetfactory@gmail.com"
author_link="http://temping-amagramer.blogspot.com/"
screenshot=""
thumbnail=""
author_photo="http://widgmedia.com/gadget/my_profile_photo.png"
height="350"
>
<Require feature="setprefs" />
<Require feature="tabs" />
</ModulePrefs>
<UserPref name="selectedTabIndex" datatype="hidden" default_value="0" />
<Content type="html">
<![CDATA[
<style type="text/css">
</style>
<div id="id_meiji" style="display:none;"></div>
<div id="id_taisho" style="display:none;"></div>
<div id="id_showa" style="display:none;"></div>
<div id="id_heisei" style="display:none;"></div>


<script type="text/javascript">
var tabs = new gadgets.TabSet(__MODULE_ID__,"id_meiji");
var prefs = new gadgets.Prefs();

gadgets.util.registerOnLoadHandler(lf_init);

function lf_init(){

tabs.addTab("明治","id_meiji",lf_selected);
tabs.addTab("大正","id_taisho",lf_selected);
tabs.addTab("昭和","id_showa",lf_selected);
tabs.addTab("平成","id_heisei",lf_selected);

tabs.setSelectedTab(prefs.getInt("selectedTabIndex"));

}

function lf_selected(){
var selectedindex = tabs.getSelectedTab();
selectedindex = selectedindex.getIndex();
prefs.set("selectedTabIndex",selectedindex);
}
</script>
]]>
</Content>
</Module>

最後に選択されたタブのindexを保持するために、<Require feature="setprefs" />というタグを追加します。

このタグを追加することで、様々なデータタイプを保持することができます。

リファレンスを参照すると、データタイプには、

string
bool
enum
hidden
list

があります。

そこで、今回は、hiddenを選択して、ModulePrefsタグの後に<UserPref name="selectedTabIndex" datatype="hidden" default_value="0" />というタグを追加します。

nameは、任意でオッケーです。(今回は、selectedTabIndexとしました。)

default_value属性は、初期値です。
設定されてしまえば、この値が使われることはありません。

JavaScriptに、var prefs = new gadgets.Prefs();がありますが、これを書くことによって、保存した値を参照したり設定したりすることができます。

prefs.getInt("selectedTabIndex")では、UserPrefのselectedTabIndexという名前の値をInt型として解釈して取りにいけーという指示を出しています。

他にもFloat型、String型として値を取りにいけーと指示することができます。

解釈できる値はリファレンスを参考にしてください。

prefs.getInt("selectedTabIndex")で値を取得した後、tabs.setSelectedTabメソッドで引数に指定されたindexのタブを選択します。

逆に選択されたtabのindexを保存するのは、prefs.set("selectedTabIndex",selectedindex)で行なっています。

これは何かというと、UserPrefタグのselectedTabIndexという名前の値をselectedindexに設定してくださいと指示をだしています。

タブが選択される都度、lf_selectedがコールされるので、その時に、選択されたタブのindexを保存しておけば問題ありません。

これで問題なく状態を保持しておけるかなーっと。

0 コメント:

コメントを投稿