Konqueror/embeddedをコンパイルして気になっていたのですが、アプリケーションとして登録してKonqueror/embeddedを起動するとタスクバーにアイコンが表示されるのですが、終了しても残ったままになってしまいました。おそらく、マルチスレッドに対応したQt-embeddedやQtopiaを別ライブラリで作成して、そちらを動的リンクしているからだと思ったのですが、よく分かりませんでした。
Qtopiaの1.5.0のソースを覗いても、6つぐらいアプリケーションのアイコンは残したままにして、古いものから自動で削除していくみたいな記述がされており、終了時に削除していそうな記述はありませんでした。
Qtopiaの1.6.0ですと終了時に削除していそうですが、かなり手が入っておりクラス体系も変化しているため、あまり当てになりませんでした。
結局、straceでqcopメッセージのソケットへのwriteを追っていくと、
qcoptest(http://www2.gol.com/users/ikezawa/zaurus/qcoptest.html)というアプリで試したら送信できましたが(引数の型が間違っていても送信してしまうみたい)、アプリケーション名が送信できずqpe自体が終了(Qtopia環境が終了)してしまいました。
最終的に、QPEApplicationクラスで、アプリケーションが終了するときに上記メッセージを送ったらアイコンが消えるようになりました。
ということで、以上メモ書きです。
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クラスで、アプリケーションが終了するときに上記メッセージを送ったらアイコンが消えるようになりました。
ということで、以上メモ書きです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます