Wacomtablet moved to kdereview
Aaron J. Seigo
aseigo at kde.org
Wed Sep 29 22:36:57 BST 2010
On Wednesday, September 29, 2010, Jörg Ehrichs wrote:
> I have moved my Wacomtablet configuration/set-up program into kdereview.
comments on the Plasma part:
if KDE is going to distribute this plugin, the plugin name in the .desktop
file should look like:
X-KDE-PluginInfo-Name=org.kde.WacomTabletSettings
this call in the ctor:
setMinimumSize(graphicsWidget()->minimumSize());
is almost certainly wrong. esp since there is a hardcoded minimum size on the
graphicsWidget() in TabletApplet::buildDialog(). this should probably be done
instead with size hints, based on the size hints of graphicsWidget.
QGraphicsLayout can sometimes be a real pain, so if you run into size problems
due to that, just ping us in #plasma
it would also be very nice if m_tabletInterface would be re-created when comes
or goes org.kde.Wacom; this can be done with a QDBusServiceWatcher. this wy,
the user will not need to remove/add the widget (or worse: think they need to
restart plasma-desktop, or worse yet log out/in) if the service stops/starts.
this also makes the advice in WacomTabletSettings::onTabletRemoved a bit less
scary, and makes the whole "just work" much better.
you need to connect the applyClicked signal from the dialog to your
configAccepted method.
m_tabletInterface = new QDBusInterface("org.kde.Wacom", "/Tablet",
"org.kde.Wacom");
is created in both TabletApplet and WacomTabbletSettings. might be nice to
share that between them.
Tablet::updateProfile opens tabletprofilerc directly only to read one setting
from it: the list of groups in m_deviceName->text(). it then queries the dbus
service for the rest of the information. perhaps it would make sense to add
that to the DBus service as well? (reading config files from within plasmoids
is generally discouraged as it tends to create maintenance issues; plasmoids
should be visualizations primarly, and only if possible; data fetching logic
usually belongs elsewhere)
speaking of DBus services, instead of making multiple calls to the service for
the profiles list, the current profile and the configuration ... it may make
sense to have a "get all" method in the dbus service to prevent multiple dbus
roundtrips. they still aren't the cheapest things in the world.
and i assume that none of the DBus methods in the services used has any
realistic chance of blocking for any significant period of time? (sync calls
in plasmoids are only Ok if they are reasonably guaranteed to return
"immediately")
it would probably also make a lot of sense to add all of that dbus-ery into
the hotplug dataengine. this is, after all, one more hot plug item, and that
would allow any widget to easily get at the information (not to mention
immediately make your config widget remotable :)
also looking at the DBus service, realize that this:
foreach(const Solid::Device &device, Solid::Device::allDevices()) {
is probably very slow (many seconds) on most systems that will have a tablet
connected to them. i would instead greatly recommend that you instead use:
Solid::Device::listFromType(<type>)
if at all possible. since this is expected to go into kded, such things are
fairly important as any stoppages cause everything to stop due to the single-
thread design.
p.s. it was moderately confusing at first to see that TabletApplet was not the
Plasma::Applet at all, and that WacomTabletSettings was actully the
Plasma::Applet. the settings are actually in TabletApplet, in fact. :)
--
Aaron J. Seigo
humru othro a kohnu se
GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA EE75 D6B7 2EB1 A7F1 DB43
KDE core developer sponsored by Qt Development Frameworks
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20100929/5557fd17/attachment.sig>
More information about the kde-core-devel
mailing list