ホーム > 製品情報 > 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