“時計アプリ”で見るWindows LiveガジェットのインパクトWindows Liveが魅せる次世代マッシュアップ(3/5 ページ)

» 2006年12月08日 08時00分 公開
[大澤文孝,ITmedia]

ユーザー設定値を保存する

 さて、画面1に示したLiveガジェットだが、当然のことながら、入力したテキストは、ログオフしてから後日、Windows Liveにログインしたときには失われている。

 次回ログインしたときにも失わないようにするには、ユーザーが入力したテキストを保存しておくようにすればよい。

 Liveガジェットにおいて、値を保存するには、ModuleオブジェクトのsetPreferenceメソッドを用いよう。Moduleオブジェクトは、コンストラクタのp_args変数のmoduleプロパティとして得ることができる。


ITmedia.Gadget.Example.MyGadget = 
  function(p_elSource, p_args, p_namespace)
  {
    // モジュールオブジェクト
    var m_module = p_args.module;
  }

 setPreferenceメソッドでは、第1引数に適当なキーを、第2引数に保存したい値を渡す。


m_module.setPreference(キー, 値);

 値は文字列や数値である必要はなく、どんなオブジェクトでも引き渡すことができる。ただし保存できる最大サイズは、約1000文字(シリアル化されたあとの文字数であり、元のデータ数はそれより少ない)までだ。

 LiveガジェットSDKによると、今後、もっと多くのデータを保存できるAPIが提供されるとのことだ。

 setPreferenceメソッドで保存した値は、getPreferenceメソッドを使って取得できる。


m_module.getPreference(キー);

 getPreferenceメソッドは、もし、該当するキーに値がまだ保存されていないときにはnullを返す。そしてdeletePreferenceメソッドを呼び出すと、該当の保存値を削除することができる。


m_module.deletePreference(キー);

 実際に、画面1に示したプログラムにおいて、ユーザーがテキストボックスに入力した値を保存して残しておくには、次に挙げるリスト3のようにすればよい。

 リスト3では、画面1に示した[設定]ボタンがクリックされたときに呼び出されるOnClick関数において、次のようにして「myvalue」というキーで、入力されたテキストを保存している。


m_args.module.setPreference(
  'myvalue', $('mytextbox').value);

 そしてガジェットが読み込まれるときに呼び出されるinitializeメソッドにおいて、次のようにして、前回保存した値を取り出して、テキストボックスやdivタグ要素に再設定している。


var initval = 
  m_args.module.getPreference('myvalue');
if (initval != null)
{
  $('mytextbox').value = initval;
  $('result').innerText = initval;
}

リスト3:値を保存する例

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ