ホーム > 製品情報 > SophiaFramework UNIVERSE > BREW Tab Browser

BREW タブ ブラウザ

はじめに

SophiaFramework UNIVERSE による、BREW 携帯電話向けタブブラウザに関するプログラミング解説です。

※Tab Browser のソースコードは SophiaFramework UNIVERSE 無料評価版に付属しています。

※ ソフィア・クレイドルは本ソフトウェアの使用または使用不能に関する、サポートを一切実施いたしません。 また、本ソフトウェアの使用によるいかなる障害や問題に対しても、一切の責任を負いません。

Tab Browser アプリの概要

Tab Browser 画面

Tab Browser は、SophiaFramework のサンプルアプリです。

以下の SophiaFramework 標準 コントロールを使用しています。

Tab Browser の制約

  1. Tab Browser のコードにある SFRBrowserControl クラスは、HTML 文書の処理に標準 BREW インターフェース IHtmlViewer を使用しています。 IHtmlViewer には、画像フォーマットやファイルパス、テキストエンコーディング(Shift-JIS だけ)に制約があります。
  2. ページ操作メニューの表示のタイミングは、キーを長押し後、放した瞬間です。
  3. お気に入りを編集する機能はありません。お気に入りを消去するには、アプレットローダで favorite.dat ファイルを削除してください。

Tab Browser の操作方法

Tab Browser は、以下のキーを使用して操作します。

  1. 左ソフトキー:一つ左のタブを選択
  2. 右ソフトキー:一つ右のタブを選択
  3. 電源キー:アプリケーションを終了
  4. セレクトキー:フォーカスされている UI オブジェクトを選択
  5. 左矢印キー:ブラウザ操作中→履歴を一つ戻る
    / タブ操作中→一つ左のタブを選択
  6. 右矢印キー:ブラウザ操作中→履歴を一つ進める
    / タブ操作中→一つ右のタブを選択
  7. 上矢印キー:ブラウザ操作中→上スクロール
    / それ以外→ UI オブジェクトのフォーカスを一つ戻す
  8. 下矢印キー:ブラウザ操作中→下スクロール
    / それ以外→ UI オブジェクトのフォーカスを一つ進める
  9. キャンセルキー:ブラウザ操作中→ブラウザ外部へ操作対象を変更

初めて Tab Browserを起動した時、お気に入りには "** URL 入力**" と "example page" という項目があります。"** URL 入力**" を選択すると、URL が入力できます。"example page" を選択すると、ソフィア・クレイドル社のデモサイトが表示されます。

ブラウザ内部を操作中に、リンク箇所でセレクトキーを押すとリンクされているページへ飛びます。リンク箇所でキーを長押しして放すと、ページ操作メニューが表示されます。

ブラウザウィンドウの各コントロールの名称と解説

ブラウザウィンドウの各コントロールの名称と解説写真
  1. リロードボタン: 最前面のブラウザのリロード
    ( SFRButtonControl )
  2. クローズボタン: 最前面のブラウザのクローズ
    ( SFRButtonControl )
  3. お気に入りメニュー: お気に入りの表示
    ( SFRComboboxControl )
  4. オプション設定ボタン: オプション設定の表示
    ( SFRButtonControl )
  5. ブラウザタブ: ブラウザタブの表示
    ( SFRTabControl )

Tab Browser 開発画面


開発画面 1    開発画面 2

※クリックすると拡大した開発画面が表示されます

Tab Browser サンプルコード

Tab Browser サンプルコード 1

//
// タブ コントロールでセレクト キーが押されたときのハンドラ
//
HANDLER_IMPLEMENT_VOIDVOID(BrowserWindow, TabHandler)
{
    BrowserPanePtr pane;

    // 最前面のブラウザ ペインを取得
    pane = static_cast<BrowserPanePtr>(_tab->GetFront());

    // 取得できたとき
    if (pane != null) {

        // 該当ブラウザ ペインにフォーカスを設定
        pane->SetFocusTarget(true);
    }
    return;
}

Tab Browser サンプルコード 2

//
// ソフト キー 1 かソフト キー 2 が押された時のハンドラ
//
HANDLER_IMPLEMENT_VOIDEVENT(BrowserWindow, SoftKeyHandler, event)
{
    BrowserPanePtr pane;

    // 最前面のブラウザ ペインを取得
    pane = static_cast<BrowserPanePtr>(_tab->GetFront());

    // 取得できたとき
    if (pane != null) {

        // ブラウザ ペインのフォーカスを解除
        pane->SetFocusTarget(false);

        // キー コードによる振り分け
        switch (event.GetP16()) {
            case AVK_SOFT1:

                // 1つ左のブラウザ ペインを取得
                pane = static_cast<BrowserPanePtr>(pane->GetLeft());
                break;
            case AVK_SOFT2:

                // 1つ右のブラウザ ペインを取得
                pane = static_cast<BrowserPanePtr>(pane->GetRight());
                break;
            default:
                break;
        }

        // 新たに取得したブラウザ ペインが存在する時
        if (pane != null) {

            // 新たに取得したブラウザ ペインを選択
            pane->Select();
        }
    }

    // タブ コントロールにフォーカス設定
    _tab->SetStatusFocus(true);
    return;
}

Tab Browser サンプルコード 3

// 絵文字の文字番号を表す定数
#define     ICONWORD_CHECKEREDFLAG      0x92F6  // チェッカー フラグ
#define     ICONWORD_CHECKMARK          0x73F7  // チェック マーク
#define     ICONWORD_CAUTIONMARK        0x59F6  // 警告マーク

//
// コンストラクタ
// 親クラスのコンストラクタの呼び出しと初期設定
//
BrowserPane::BrowserPane
    (SFRTabControlPtr control, SFXWideStringConstRef title, SFXWideStringConstRef url)
    : SFRTabPane(control, "")
{
    // 親クラスでエラーが発生していない時
    if (static_try()) {

        // ブラウザ コントロールを生成
        _browser = ::new BrowserControl(this, GetVirtualWorld());

        // 左矢印キーと右矢印キーにハンドラを登録
        _browser->RegisterHandler
        (SFEVT_KEY, AVK_RIGHT, HANDLER_AFTER, HANDLER_FUNCTION(NextHandler));
        _browser->RegisterHandler
        (SFEVT_KEY, AVK_LEFT, HANDLER_AFTER, HANDLER_FUNCTION(PreviousHandler));

        // ブラウザ コントロールのスクロール バーを表示
        _browser->SetScrollbarEnable(true);

        // URL オープン関数を呼び出す
        Open(title, url);
    }
    return;
}

Tab Browser サンプルコード 4

//
// デストラクタ
// 何もしない
//
BrowserPane::~BrowserPane(Void)
{
    return;
}

Tab Browser スクリーンショット

Tab Browser スクリーンショット 1 : SFRComboboxControl

Tab Browser スクリーンショット 2 : OptionPane