2009/12/16

[gadget]ある特定の情報をガジェット内で保持|保存する方法(その1)

ガジェット上である特定の情報を保持|保存したい場合があります。
(例、郵便番号、血液型、誕生日などなど)

書いても伝わりにくいと思うので、実際にプログラムをちょっと書いてみました。

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="test"
directory_title="test"
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="310"
>
<Require feature="setprefs" />
</ModulePrefs>
<UserPref name="youage"
display_name="年齢は?"
datatype="String"
required="true" />
<Content type="html" view="home,canvas">
<![CDATA[
<script type="text/javascript">

gadgets.util.registerOnLoadHandler(function(){
var prefs = new gadgets.Prefs();
alert(prefs.getInt("youage"));
return;
});
</script>
]]>
</Content>
</Module>

これは何かというと、ガジェット追加時に、まず始めに下のようにガジェット表示時にテキストボックスが表示されます。
Photobucket
で、このようにテキストボックスを表示するにためには、

ModulePrefsタグの中で、<Require feature="setprefs" />を追加し、

<UserPref name="youage" display_name="年齢は?" datatype="String" required="true" />をModulePrefsタグの終了後に追加することによって実現できます。

上の画像にある左側に表示される文言の設定は、UserPrefタグのdisplay_name属性で設定します。

datatypeは今回はStringとします。
(ちなみに、hiddenの場合は、テキストボックスが表示されないのですが、その場合については、こちらを参照。)

必須入力としたい場合は、required属性をtrueに設定します。(必須入力と設定した場合、赤文字で「必須」と表示されます。)
逆に任意入力の場合は、falseとします。
name属性は、後でJavaScriptで参照する時に使う名前なので、英文字に設定してください。

また、今回は使いませんでしたが、デフォルト値を設定することもできて、その場合は、UserPrefタグの中でdefault_value属性に値を設定すればオッケーです。

話が長くなってしまいましたが、27と入力し、「保存」ボタンを押します。

すると、そこで始めてガジェットがロードされ下記のように数字を表示することができます。
Photobucket

入力された数字は、下記のJavaScriptのように実装することで取得することができます。

var prefs = new gadgets.Prefs();
alert(prefs.getInt("youage"));

var prefs = new gadgets.Prefs();
でUserPrefタグの中身を使いますよーという宣言をします。

そして次のprefs.getInt("youage")の部分ですが、これは、UserPrefタグのname属性がyouageという値のvalue値をIntとしてゲットしますよーっと指示を出しています。

ちなみに、Intということは数字で取得するという意味なのですが、テキストボックスに数字以外を入力した場合はどうなるのでしょうか?

実は、0になります。

実際にhogeと入力してみます。
Photobucket

で、値はどうなるのか?というと、やはり0となります。
Photobucket
他にも、String型で取得したり、Float型で取得したりすることができます。

詳しいことはリファレンスに記載されています。

ちなみに、保存できるデータ量に上限があるっぽくリファレンスを覗くと2Kとなっているみたいです。

あまりでかいデータを保存しないように注意したいっす。

0 コメント:

コメントを投稿