Plasmoidの設定でハマってる・・・
引き続き、QMLの勉強中で、RSSやAtom等を取得してリスト表示するのは概ね出来そうなんだが、Plasmoidの設定関連でハマってる。
これはQtQuickとは別でKDEの情報探さないとダメみたいね。
Qtのリファレンス等の情報も不満だが、KDEの情報はもっと調べにくい。
/usr/share/plasma/plasmoids/ 以下にあるPlasmoidのコード参考にしたりとかして、
設定値を取得することはできたんだが、[適用]ボタン押した時にイベント駆動で処理する方法がわからない・・・
とりあえず、現時点でわかった情報。
contents/ui/main.qml
以外に、
contents/config/config.qml
contents/config/main.xml
contents/ui/xxxx.qml
が必要ぽい。
contents/config/config.qml
この場合、[General]カテゴリが追加され、sourceで指定した contents/ui/configGeneral.qml が[General]カテゴリの設定画面になる。
contents/ui/configGeneral.qml
TextFieldのidがtfなのでtf.textが文字列となるが、エイリアスで cfg_ で始まるプロパティと同一にする必要があるぽい。
contents/config/main.xml
ファイルがなくてもエラーにならないが、再起動すると消える。
ここで<entry>属性のnameが"tf"となっているが、これが設定画面用.qmlのcfg_tfの値になるぽい。
configGeneral.qmlのTextFieldの値ととcfg_tfをaliasにしているので、TextFieldを変更すると保存される模様。
contents/ui/main.qml
plasmoid.configuration.tf で設定値が取得できる模様。
ただし、[適用]ボタン押さなくてもすぐに反映しちゃうぽい。
で、[適用]ボタンを押した時にmain.qmlで処理したいんだが、その方法がわからない・・・
これはQtQuickとは別でKDEの情報探さないとダメみたいね。
Qtのリファレンス等の情報も不満だが、KDEの情報はもっと調べにくい。
/usr/share/plasma/plasmoids/ 以下にあるPlasmoidのコード参考にしたりとかして、
設定値を取得することはできたんだが、[適用]ボタン押した時にイベント駆動で処理する方法がわからない・・・
とりあえず、現時点でわかった情報。
contents/ui/main.qml
以外に、
contents/config/config.qml
contents/config/main.xml
contents/ui/xxxx.qml
が必要ぽい。
contents/config/config.qml
import org.kde.plasma.configuration 2.0
ConfigModel{
ConfigCategory{
name: "General"
icon: "plasma"
source: "configGeneral.qml"
}
}
Plasmoidの設定が呼びだされた場合は、このファイルに従って設定画面のカテゴリが追加される。ConfigModel{
ConfigCategory{
name: "General"
icon: "plasma"
source: "configGeneral.qml"
}
}
この場合、[General]カテゴリが追加され、sourceで指定した contents/ui/configGeneral.qml が[General]カテゴリの設定画面になる。
contents/ui/configGeneral.qml
import QtQuick 2.0
import QtQuick.Controls 1.4
Item {
property alias cfg_tf: tf.text
TextField{
id:tf
}
}
これでTextFieldが一個だけの設定画面になる。import QtQuick.Controls 1.4
Item {
property alias cfg_tf: tf.text
TextField{
id:tf
}
}
TextFieldのidがtfなのでtf.textが文字列となるが、エイリアスで cfg_ で始まるプロパティと同一にする必要があるぽい。
contents/config/main.xml
<?xml version="1.0" encoding="UTF-8"?>
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
<kcfgfile name=""/>
<group name="General">
<entry name="tf" type="String">
<default>test</default>
</entry>
</group>
</kcfg>
この.xmlファイルが設定ファイルになるぽい。<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
<kcfgfile name=""/>
<group name="General">
<entry name="tf" type="String">
<default>test</default>
</entry>
</group>
</kcfg>
ファイルがなくてもエラーにならないが、再起動すると消える。
ここで<entry>属性のnameが"tf"となっているが、これが設定画面用.qmlのcfg_tfの値になるぽい。
configGeneral.qmlのTextFieldの値ととcfg_tfをaliasにしているので、TextFieldを変更すると保存される模様。
contents/ui/main.qml
import QtQuick 2.0
import org.kde.plasma.plasmoid 2.0
Column{
id:root
width:640
height:480
property string tf: plasmoid.configuration.tf;
Text{
text:tf
}
}
いつものmain.qmlだが、org.kde.plasma.plasmoidをimportしている。import org.kde.plasma.plasmoid 2.0
Column{
id:root
width:640
height:480
property string tf: plasmoid.configuration.tf;
Text{
text:tf
}
}
plasmoid.configuration.tf で設定値が取得できる模様。
ただし、[適用]ボタン押さなくてもすぐに反映しちゃうぽい。
で、[適用]ボタンを押した時にmain.qmlで処理したいんだが、その方法がわからない・・・