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; }