BREW タブ ブラウザ
はじめに
SophiaFramework UNIVERSE による、BREW 携帯電話向けタブブラウザに関するプログラミング解説です。
※Tab Browser のソースコードは SophiaFramework UNIVERSE 無料評価版に付属しています。
Tab Browser アプリの概要
![]() |
Tab Browser は、SophiaFramework のサンプルアプリです。 以下の SophiaFramework 標準 コントロールを使用しています。 |
|---|
Tab Browser の制約
- Tab Browser のコードにある SFRBrowserControl クラスは、HTML 文書の処理に標準 BREW インターフェース IHtmlViewer を使用しています。 IHtmlViewer には、画像フォーマットやファイルパス、テキストエンコーディング(Shift-JIS だけ)に制約があります。
- ページ操作メニューの表示のタイミングは、キーを長押し後、放した瞬間です。
- お気に入りを編集する機能はありません。お気に入りを消去するには、アプレットローダで favorite.dat ファイルを削除してください。
Tab Browser の操作方法
|
Tab Browser は、以下のキーを使用して操作します。
初めて Tab Browserを起動した時、お気に入りには "** URL 入力**" と "example page" という項目があります。"** URL 入力**" を選択すると、URL が入力できます。"example page" を選択すると、ソフィア・クレイドル社のデモサイトが表示されます。 ブラウザ内部を操作中に、リンク箇所でセレクトキーを押すとリンクされているページへ飛びます。リンク箇所でキーを長押しして放すと、ページ操作メニューが表示されます。 |
ブラウザウィンドウの各コントロールの名称と解説

-
- リロードボタン:
最前面のブラウザのリロード
( SFRButtonControl ) - クローズボタン:
最前面のブラウザのクローズ
( SFRButtonControl ) - お気に入りメニュー:
お気に入りの表示
( SFRComboboxControl ) - オプション設定ボタン:
オプション設定の表示
( SFRButtonControl ) - ブラウザタブ:
ブラウザタブの表示
( SFRTabControl )
- リロードボタン:
最前面のブラウザのリロード
Tab Browser 開発画面
※クリックすると拡大した開発画面が表示されます
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
















