« 2015年6月 | トップページ | 2015年8月 »

2015年7月

2015年7月31日 (金)

タッチパネル向けの実装 その7

ダイアログに載せて行ったソフトウェア・キーボード/ボタンの機能テストはなんとなく動いていそうなので、次にこれらをデスクトップにオーバラップさせる仕組みの実装について検討しました。

Qt Designerを起動してウィジェットボックスで扱える部品を眺めてみました。GUI部品を重ねるということを考えると、パッと思いつくのは「Containers」のところにある部品ですね。「Stacked Widget」は同時には表示できなさそうですし…、「Dock Widget」は…これが使えるかも…。

というわけで、暫定でダイアログに載せて表示していた部分をQDockWidgetに載せ替えました。
デスクトップを表示しているMainWindow(QMainWindowのサブクラス)にaddDockWidget()で上記の2つのDock Widgetを追加します。キーボードは下部、ボタンは上部に置いてみました。これらは別ウィンドウに分離する(フローティング状態にする)こともできます。

Ws000006

Ubuntuだとこんな感じです。

Ubuntu_1404_main20150731110131


仕組みとしてはこれで大丈夫そうです。Dock Widgetの属性設定はもう少し検討が必要そうですけど。

2015年7月28日 (火)

タッチパネル向けの実装 その6

機能的にはソフトウェア・キーボード/ボタンが動作しているようなので、ソフトウェア・キーボードの英語レイアウトを作りました。日本語レイアウト部品のソースコードをコピーして、差分を手直しするだけです。

「サーバへの接続」ダイアログで選んだキーボードタイプに連動して、どちらかのレイアウト部品を生成して設定します。デバッグのため、サーバに接続しなくても動作するように暫定修正してテストしました。

Ws000004

一部のキーは英語レイアウトになると無効になるのですが、今は表示させたままです。

そういえばKeroRemote(KeroKeyboard)は英語の場合英語レイアウトになるんでしょうか…確認してませんでしたが。

2015年7月27日 (月)

タッチパネル向けの実装 その5

マウスボタン、その他用の部品を作ろうとしたのですが、メニューに追加したところで基本的なことに気づきました。

ダイアログを表示させようとメニューを選ぼうとすると、マウスカーソルが付いてくるのです(当然ですが)。これでは希望の場所でクリックしたりはできません。どうすればいいかなぁと少し悩んだのですが、タッチパネルだとマウスのように連続的にカーソルを移動するようなことはなく、タッチした場所にカーソルが移動する方が自然ですよね。

というわけで、ソフトウェア・ボタンを表示した時は、マウスの位置情報、ボタンクリックの情報などをブロックして、送信しないようにしました。ただし、デスクトップ上で右クリックもしくは右ダブルクリックした時はカーソル位置を移動するための情報を送信するようにします。これでマウスカーソルの移動に関するタッチパネル相当の動きを再現できるはず…

Ws000001


マウスカーソルがメニューから少し離れているところにあるので確認できると思います。もちろん、PC上で右クリックで移動しているところはタッチパネルの場合には変更する必要がありますが、テスト用途には問題無いと思います。

さて、ソフトウェア・ボタンの部品をQt Designerで作るとしますか…

(数時間後・・・)

レイアウト制御を放置したソフトウェア・ボタンを作りました。 KeroRemoteのようにボタンを隠しておいて動的に表示/非表示するような制御も入れていないので、最初からすべてのボタンが表示されてます。

一部ボタンを日本語化してみましたが、無理に日本語化しないほうがよいかもしれませんね。

Ws000002


Ubuntuだとこんな感じです。

Ubuntu_1404_main20150727204017


2015年7月26日 (日)

タッチパネル向けの実装 その4

ソフトウェア・キーボードはレイアウトの細かい実装は放っておいて、機能的な部分を先に実装しました。

キーボードのキーレイアウト及び動作仕様はKeroRemote(KeroKeyboard)をお手本にしました。とりあえず日本語キーボードを実装しましたが、日本語キーボード仕様のソースコードをコピーして手直しすれば英語キーボードの実装もそんなに手間ではないはずです。

テスト用にダイアログを作って、メインウィンドウに表示していたソフトウェア・キーボードの部品を載せ替えました。これでデスクトップを見ながらテストできます。

Ws000000_2


Ubuntuだとこんな感じです。

Ubuntu_1404_main20150726165157_2


今後の流れとしては以下の様な感じでしょうか。

1, マウスボタン、その他用の部品の実装 (テスト用のダイアログに載せてテスト)

2, デスクトップにオーバラップさせる仕組みの実装 (動的にレイアウトを変更すればよさそう)

3, レイアウト調整の仕組みの実装

4, 実機での調整


デバッグプリント盛りだくさんのソースを push してみました…
 (ブランチ名は"porting-for-android")

2015年7月24日 (金)

タッチパネル向けの実装 その3

前回はQFrameの中にボタンを並べてキーボードっぽいものを試しに作ってみましたが、Qt Assistantで調べてみるとQFrameはQWidgetという基本クラスにスクロールエリアやスプリッターなどの機能が追加されたものらしいので、キーボードをシミュレートする基本部品を作るという意味ではQWidgetをベースにした方がよさそうです。

ということで、Qt Designerを立ち上げなおして、まず前回作ったQFrameベースの保存ファイルを開きます。で、「ファイル」メニューから「新規」を選んで次に"templates\forms"から"Widget"を選んで新たなFormを作成します。

ここで前回作ったQFrameベース上の部品を全選択してから今回新しく作ったWidgetベースのFormへコピー&ペーストしました。

上がQFrameベース、下がQWidgetベースです。

Ws000001

新たに作ったFormを保存します。名前はGUI\software_keyboard.uiとしました。

これをQt Brynhildrに組み込んで使えるようにするために、プロジェクトファイルであるqtbrynhildr.proに追加します。

FORMS += GUI/software_keyboard.ui

で、qmakeを実行してからmakeを実行すると

ui_software_keyboard.h

というファイルが新たに出来上がりました。これがソフトウェアキーボード実装に必要な大元のファイルとなります。
ただし、実際に表示するにはもう一手間かかりますけど。

まだレイアウトに関しては初期値なのでそこも要検討なのですが、それ以外にも検討が必要そうな点が幾つかありますね。細かいレイアウトは後で調整できるので、機能的に必要な部分を先に検討します。


1. キー(ボタン)が押された時の振る舞い(signal/slotの定義)

簡単にいうとキーが押された時にどういう名前の関数が呼ばれるか、でしょうか。名前を決めるだけ、という気がしないでもないですが。

2. キーボードのキーレイアウトの切り替え

日本語キーボードレイアウトと英語キーボードレイアウトとか、あとシフトキーを押した状態と押していない状態などの切り替えとかも仕組みが必要ですね。


Qtが生成してくれたui_software_keyboard.hというファイルの中身を読むとなんかヒントになりそうです。

まずは作ったソフトウェアキーボードのプロトタイプをQt Brynhildrにオーバーラップ表示できるようにしてみましょうか。(不要な時は非表示にできるようにしたいですね)

と思いましたが、オーバラップ表示させる前にとりあえずデスクトップ表示用ウィジェットの代わりに暫定版ソフトウェアキーボードを載せてみました。

Ws000000

デスクトップ表示用ウィジェットを外したので画面は見えませんが、ソフトウェアキーボードの動作テストはこれでできそうです。(キー(ボタン)と背景色が同じなので分かりにくいですね…)

2015年7月18日 (土)

タッチパネル向けの実装 その2

ここ一ヶ月、リリースの記事しか書いていないような気がするので、本来の開発日記に戻りたいと思います。

Andoird向けのポーティングというブランチを作ったのですが、大きな修正はキーボード、マウスを持たないデバイスで使えるようにするというところなのでこれはAndoridに限ったことでなく、iPhone/iPadなどへの対応へ通じるところでもあります。

まず実装方法検討の参考のためiPhoneでKeroRemoteを使ってみました。

マウスボタンのパネルはこんな感じで動的に現れます。

Img_0206

さらに、ソフトウェアキーボードを表示させるとこんな感じです。

Img_0207

さて、Qt Brynhildrもこんな感じに普段はデスクトップの画面だけが表示されていて、特定のスワイプ動作でキーボードを表示するようにしたいです。いきなり実際のタッチパネルでテストするのは大変なので、Windows上のテスト用メニューからソフトウェア・キーボード及びマウス・ボタン機能を表示/非表示できるようにしてテストしましょうか。

まず、ソフトウェア・キーボードの実現方法ですが、パッと思いつくのは各キーに対応するボタンを並べてキーボードをかたどったGUI部品を作り、ボタンが押されたり/離されたりした時に、対応する仮想キーコードの情報を送るという方法です。

実際にプロトタイプを作ってみないと詳細が検討できないと思うので、Qt Designerで大雑把なデザインを作ってみました。

QFrameの中に水平レイアウトでボタンを並べただけの段階がこんな感じです。とりあえず、わかりやすさのためキートップラベルは日本語キーボードレイアウトです。

Keyboard_prtotype1

各行を垂直レイアウトで並べてみます。

Keyboard_prototype2

「フォーム」メニューから「プレビュー」を選ぶと編集中のデザインがプレビューできます。今はこんな感じ。

Keyboard_prototype3

今はレイアウトのパラメータがほぼ初期値なので、お世辞にもキーボードっぽくはありませんね。いろいろといじってみないとキーボードっぽくなるのかはまだ分からないですね。

どんな調整をすればよいのかはまだ分かりません(^-^;

2015年7月16日 (木)

Ver.1.1.1 リリース

Ver.1.1.1 をリリースしました。

以下からダウンロードできます。

https://github.com/funfun-dc5/qtbrynhildr/releases

主な変更はQt5.5.0からQt5.4.2へバージョンダウンなので機能的には1.1.0と変わりありません。
事実上Ver.1.1.0をQt5.4.2で作り直しただけの版です。

いくつかの改善を確認したので5.5.0に移行する方がよいと判断したのですが、時期尚早でした。

Qtは5.4.2で固定して、その他の作業を優先しようかと思います。

-----------------------------------------------------------------------------------
Ver.1.1.1
-----------------------------------------------------------------------------------
[不具合修正]
・他のサウンド再生アプリケーションと同時に利用できない不具合への対応
(Ubuntu x86版のみ)

[その他変更]
・サウンド再生の安定性の確保のためQtの環境を5.5.0からQt5.4.2へバージョンダウン
(*) Ver.1.1.0の[その他変更] (1), (2)は再度無効となる
・ドキュメント修正

-----------------------------------------------------------------------------------
[SHA256SUM]
-----------------------------------------------------------------------------------
12c5f5bdbe288fe11c51c1873ed74fd7ddf0451697eb72d07e20d077bbac344b *qtbrynhildr-ubuntu_x64-v111.run

498f89084a116765cee4e44937455538547234e3fb212f122f494fa4d0e1279f *qtbrynhildr-ubuntu_x86-v111.run

bc63812d32a836aa0b0d47831d7f349e97e549ac5a5dfdcf62cac9b2a1bce7a4 *qtbrynhildr-windows-v111.exe

2015年7月 8日 (水)

Ver.1.1.0 リリース

Ver.1.1.0 をリリースしました。

以下からダウンロードできます。

https://github.com/funfun-dc5/qtbrynhildr/releases

1. Qt5.4.1 -> Qt5.5.0へ変更

staticリンク版Qt5.5.0 が Windows 8.1 update でビルドに失敗するので結局ノートPC(Windows 7)でビルドしました。
Qt5.5ではサウンド関係のサポートが改善されたようで、サーバのサウンドの再生デバイスプロパティのスピーカー周波数を「16ビット、44100Hz(CDの音質)」に変更しなくても、例えば「16ビット、48000Hz(DVDの音質)」でも各音質を再生できるようになったようです。

またWindows版Qt5.4では、キーボードニーモニックが正しく表示されないという不具合があったそうですが、Qt5.5では修正されているらしく正しく表示されます。

2. タッチパネルデバイス用の修正のマージ

Android用の修正を一部取り込みました。ただし「メニューバー表示/非表示」は無効化しています。

-----------------------------------------------------------------------------------
Ver.1.1.0
-----------------------------------------------------------------------------------
[新規機能]
・「表示」メニューを追加
・メニューバー表示/非表示(「表示」メニュー)
・ステータスバー表示/非表示(「表示」メニュー)

[その他変更]
・「最前面に表示」を「表示」メニューへ移動
・フレームレスウィンドウ化のフラグ追加 (タッチパネルデバイス用)
・Qtの環境を5.4.1からQt5.5.0へ更新
(1) キーボードニーモニックが正しく表示されるようになった (Windows版)
(2) サウンドの音質のサポートが改善された
(3) ランタイムライブラリを Visual C++ 2013 へ変更 (Windows版)

-----------------------------------------------------------------------------------
[SHA256SUM]
-----------------------------------------------------------------------------------
4905f834883fff35e8b7ccba126bdc195c6db2193f26aab95fb9b6331e898da1 *qtbrynhildr-ubuntu_x64-v110.run

a8063de5845043a6e89298f89f8d88483d255119bb9eb104135db382a402392f *qtbrynhildr-ubuntu_x86-v110.run

daa52a8a5532e43045c81df0d4a30fcc73b5487050b5b00a6313cb0920d69a16 *qtbrynhildr-windows-v110.exe

« 2015年6月 | トップページ | 2015年8月 »

無料ブログはココログ
2017年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30