Masatoshi Ito の備忘録

旧Blog(goo blog)のアーカイブです。
goo blogの閉鎖に伴い、アーカイブとして移行することにしました。
古い情報やリンク切れなどがあると思いますが、ご了承ください。

SHARP純正Qtopia環境のタスクバーのアイコンについて

(2010年07月02日 07時00分00秒|Zaurus

Konqueror/embeddedをコンパイルして気になっていたのですが、アプリケーションとして登録してKonqueror/embeddedを起動するとタスクバーにアイコンが表示されるのですが、終了しても残ったままになってしまいました。おそらく、マルチスレッドに対応したQt-embeddedやQtopiaを別ライブラリで作成して、そちらを動的リンクしているからだと思ったのですが、よく分かりませんでした。

Qtopiaの1.5.0のソースを覗いても、6つぐらいアプリケーションのアイコンは残したままにして、古いものから自動で削除していくみたいな記述がされており、終了時に削除していそうな記述はありませんでした。

Qtopiaの1.6.0ですと終了時に削除していそうですが、かなり手が入っておりクラス体系も変化しているため、あまり当てになりませんでした。

結局、straceでqcopメッセージのソケットへのwriteを追っていくと、
QPE/Applicaiton/qpe
removeTask(const QString&) 'アプリケーション名'
というメッセージを送ってそうなのを発見しました。しかもメッセージの関数?の引数の型が「const QString&」となっているため、C++で書けば送信できますがqcopコマンドでは送信できません。多分、SHARP独自のQtopia-1.5への機能追加だと思います。

qcoptest(http://www2.gol.com/users/ikezawa/zaurus/qcoptest.html)というアプリで試したら送信できましたが(引数の型が間違っていても送信してしまうみたい)、アプリケーション名が送信できずqpe自体が終了(Qtopia環境が終了)してしまいました。

最終的に、QPEApplicationクラスで、アプリケーションが終了するときに上記メッセージを送ったらアイコンが消えるようになりました。

ということで、以上メモ書きです。