トップ «前の日記(2004-02-12 (Thu)) 最新 次の日記(2004-02-24 (Tue))» 編集   RSS 1.0 FEED  

Journal InTime


2004-02-20 (Fri) [長年日記]

_ [SL-C860] Konqueror Embedded

起動中のKonqueror Embeddedに指定したURLを開かせる必要があったのだ が、どうもローカルのファイルを開かせることしかできないようだ。

たとえば、

$ qcop QPE/Application/konqueror 'setDocument(QString)' \
    '/home/zaurus/foo.html'

などとすると、そのファイルが存在すれば、ファイル名に'file:'を付加し たURLを開くようになっている。 (ファイルが存在しないと、'file:'というURLを開こうとしてエラーになる。)

しかも毎回新しいビューを作成するので、上記のコマンドを実行するた びにどんどんビューが増えて行ってしまう。

結局、ソースに手を入れることにしたのだが、クロスコンパイル自体が はじめてなので、ただビルドするだけに丸二日もかかってしまった。

ハマったのは以下の三点。

  1. なぜかconfigure時にlibqtのリンクのテストに失敗する。

    リンク時に-lqpeが指定されないせいのようだ。 configureの

    LIBS="$LIBS $LIBQT $KDE_MT_LIBS"

    という部分を、

    LIBS="$LIBS $LIBQT $LIB_QPE $KDE_MT_LIBS"

    のように変更したらパスした。

  2. make時にlibjpeg.soのリンクに失敗する。 どうも、libtoolが/usr/lib/libjpeg.so(こいつは当然x86用のバイ ナリ)をリンクしようとしてしまうようだ。

    面倒なので、

    # ln -s /opt/Qtopia/sharp/lib/libjpeg.so.62 /usr/lib/libjpeg.so

    としてしまった。

  3. 実行ファイルを生成する時点で、なぜかundefined symbolの嵐。 どうも一部のオブジェクトファイルがうまくリンクされないらしい。

    automake-1.4を使っていたのだが、automake-1.7にしたら解決した。 たまたまかもしれない。

これでビルドはできたのだが、どうも動作がおかしい(スタイラス操作 に反応しなくなったりする)。 zaurus-jaのバイナリはうまく動作するので、同じ日付のものをcvsから 取って来た(-D '2002-12-15'付きでupdate)らうまく動作した。

で、結局起動中のKonquerorに指定したURLを開かせるには、

diff -u -r1.22 mainwindow_qpe.cc
--- konq-embed/src/mainwindow_qpe.cc	24 Jul 2001 16:46:41 -0000	1.22
+++ konq-embed/src/mainwindow_qpe.cc	20 Feb 2004 15:46:15 -0000
@@ -110,8 +110,7 @@

 void MainWindowQPE::setDocument( const QString &document )
 {
-    DocLnk lnk( document );
-    createNewView( lnk.file().prepend( "file:" ) );
+    urlEntered( document );
 }

 #include "mainwindow_qpe.moc"

のような変更でよいようだ。

$ qcop QPE/Application/konqueror 'setDocument(QString)' \
    'http://shugo.net/'

で、それまでさんざん苦労したわりに、あっさり動いた。