Re: [Licq-devel] Qt5

2014-10-05 Thread Kevin Krammer
On Saturday, 2014-10-04, 10:27:12, Anders Olofsson wrote:
 Good!
 
 I had a quick look and the only thing I don't like is that you remove
 the kde-gui. Do you know if KDE will move to Qt5 as well before Jessie
 releases?

It is unlikely that Jessie will include the Qt5 based version of KDE Plasma, 
the workspace product, if that is what you mean with KDE.

Cheers,
Kevin


signature.asc
Description: This is a digitally signed message part.


Re: [Licq-devel] Announcing D-Bus plugin for Licq

2013-10-13 Thread Kevin Krammer
Am Sonntag, 2013-10-13, 22:17:42 schrieb Anders Olofsson:

   Each of these can be described in a separate XML file, each interface
   can be applicable to one or more object paths.
   I guess the first two are for a single object each, while the latter
   two apply to multiple objects.
 
 Yes, that is correct. But the only syntax I've seen is the introspect
 data which includes object paths. Could you point to an example for how
 the files should look if I only define interfaces without object paths?

The name attribute on the top level node element can be omitted.
Or you set it to /, it will usually be ignored anyway.
See for example org.freedesktop.UPower.Device which all device nodes of UPower 
implement independent of their actual object path:
http://cgit.freedesktop.org/upower/plain/src/org.freedesktop.UPower.Device.xml

 Although I'm slightly skeptic to having another file describing the API.
 Right now there are three copies: The implemented code, the introspect
 response in the code, and the examples in the README file.
 Adding XML files as well would be a fourth copy which is at least one
 too many to expect all of them to stay in sync.

Hmm. I haven't thought about that. Usually the XML file is the source and the 
implementation is generated by the respective binding's tools.
Have you considered using the C++ bindings?
http://dbus-cxx.sourceforge.net/quick_start_example_xml.html

Another option for reduction of redunancies might be to include the XML file 
into the binary at build so it can be served as the runtime introspection 
data.

Not sure how to best do that, usually also taken care of by the binding :-/

  I had a better look at the implementation now and I think it would improve
  maintainablity and extendability if handling of each interface were
  delegated to a respective implementation.
  
  E.g. something like an interface similar to DbusCallback but as a base for
  each interface implementation:
  
  And then registering an instance of each with the DbusCallback implementor
  such that it only needs to do a lookup based on iface and then delegate.
 
 This would require the plugin to instantiate objects for every contact
 in Licq which would make the plugin much larger (both code and memory
 usage).

No, sorry, I probably wasn't clear.
I meant having one instance of each interface handler, e.g. one for 
org.licq.Core, one for org.licq.ContactList, one for org.licq.Contact and so 
on.
Each interface's callback entry points would still get the object path and 
retrieve the respective C++ object just like you do now.

Flow would be like this
call to path=/some/contact/path iface=org.licq.Contact member=GetName comes in
  - main interface does a lookup, e.g. in a std::mapstring, 
DbusAbstractInterface*
- if !found = error
- else delegate to found object, pass path and member and other args
  - uses internal pointer to main interface to respond.
Cheers,
Kevin

signature.asc
Description: This is a digitally signed message part.


Re: [Licq-devel] Announcing D-Bus plugin for Licq

2013-10-12 Thread Kevin Krammer
On Saturday, 2013-10-12, Anders Olofsson wrote:
 It should just be a matter of implementing
 org.freedesktop.DBus.Introspectable. I think it should be pretty easy to
 add. I'll give it a try.

It is usually also a good idea to provide a D-Bus introspection XML file as 
part of the sources, potentially even installing it.

It is a way of documenting which interfaces are available as public API as 
opposed to D-Bus being used for an internal purpose (private API) or still 
experimental features (unstable API).

Cheers,
Kevin

 
 /Anders
 
 On 2013-10-12 12:30, Erik Johansson wrote:
  Nice work!
  
  I would be nice if you could add the features needed to make it possible
  to browse available licq methods using e.g. qdbusviewer.
  
  // Erik
  
  
  On Sat, Oct 12, 2013 at 11:34 AM, Anders Olofsson fl...@licq.org
  
  mailto:fl...@licq.org wrote:
  I've just pushed the first version of a D-Bus interface plugin for
  Licq.
  
  I mainly created this as a way to display notifications from Licq,
  like the osd plugins but in a separate process instead of having it
  as a plugin to Licq. I also added support for method calls to
  request information or control Licq in the hopes that others will be
  able to find further use for this plugin.
  The current API is very limited but should be relatively easy to
  extend depending on which use cases we want to support.
  
  More features or suggestions on what should be included are welcome.
  
  I'm not experienced with making D-Bus interfaces, so if anyone has
  better ideas for how the API should look please let me know.
  
  /Anders
  
  --
  
  --- You received this message because you are subscribed to the
  Google Groups Licq Development group.
  To unsubscribe from this group and stop receiving emails from it,
  send an email to licq-dev+unsubscribe@__googlegroups.com
  mailto:licq-dev%2bunsubscr...@googlegroups.com.
  For more options, visit https://groups.google.com/__groups/opt_out
  https://groups.google.com/groups/opt_out.
  
  --
  Erik Johansson
  Home Page: http://ejohansson.se/
  PGP Key: http://ejohansson.se/erik.asc


signature.asc
Description: This is a digitally signed message part.


Re: [Licq-devel] Announcing D-Bus plugin for Licq

2013-10-12 Thread Kevin Krammer
On Saturday, 2013-10-12, Anders Olofsson wrote:
 On 2013-10-12 15:15, Kevin Krammer wrote:
  On Saturday, 2013-10-12, Anders Olofsson wrote:
  It should just be a matter of implementing
  org.freedesktop.DBus.Introspectable. I think it should be pretty easy to
  add. I'll give it a try.
  
  It is usually also a good idea to provide a D-Bus introspection XML file
  as part of the sources, potentially even installing it.
  
  It is a way of documenting which interfaces are available as public API
  as opposed to D-Bus being used for an internal purpose (private API)
  or still experimental features (unstable API).
 
 It sounds like a good idea, but I have put all the contacts in the
 object tree so it's not a fixed structure and the examples I have seen
 for the introspective data is for a static structure only. Is it
 possible to describe a runtime dynamic tree in a static text file? I
 guess the interfaces could be documented but I haven't seen any example
 on how to write it.

I am not sure I fully understand you so please correct me if I am wrong :)

As far as I can tell after a quick look into the code is that you have the 
following interfaces:
org.licq.Core
org.licq.ContactList
org.licq.Contact
org.licq.Account

Each of these can be described in a separate XML file, each interface can be 
applicable to one or more object paths.
I guess the first two are for a single object each, while the latter two apply 
to multiple objects.

Both usages are fine, you don't have to document all possible object paths. It 
helps client developers to mention object path patterns though, e.g. 
Contact objects implement the org.licq.Contact interface and can be found on 
object paths /org/licq/ContactList/protocol/contactId

or even

...and can be listed by calling org.licq.ContactList.GetAccounts()

Cheers,
Kevin


signature.asc
Description: This is a digitally signed message part.


Re: [Licq-devel] Announcing D-Bus plugin for Licq

2013-10-12 Thread Kevin Krammer
On Saturday, 2013-10-12, Anders Olofsson wrote:
 I've just pushed the first version of a D-Bus interface plugin for Licq.
 
 I mainly created this as a way to display notifications from Licq, like
 the osd plugins but in a separate process instead of having it as a
 plugin to Licq. I also added support for method calls to request
 information or control Licq in the hopes that others will be able to
 find further use for this plugin.
 The current API is very limited but should be relatively easy to extend
 depending on which use cases we want to support.
 
 More features or suggestions on what should be included are welcome.
 
 I'm not experienced with making D-Bus interfaces, so if anyone has
 better ideas for how the API should look please let me know.

I had a better look at the implementation now and I think it would improve 
maintainablity and extendability if handling of each interface were delegated 
to a respective implementation.

E.g. something like an interface similar to DbusCallback but as a base for 
each interface implementation:

class DbusAbstractInterface
{
public:
  explicit DbusAbstractInterface(DbusInterface *conn);


  virtual in dbusMethod(const char *path, const char *member ...);
  ..
protected:
  DbusInterface *const m_conn;
};

And the implementations like
class DbusCoreInterface : public DbusAbstractInterface
{

};

And then registering an instance of each with the DbusCallback implementor 
such that it only needs to do a lookup based on iface and then delegate.

I think it would also be good to have GetAccounts() return an array of object 
paths, i.e. D-Bus type ao.
That allows clients to treat the values as opaque identifiers, allowing you 
to change the scheme, e.g. have them as a flat list instead of grouped by 
protocol, etc.

At some point it might be worthwhile to think about bulk notifications, e.g. 
a signal ContactsStatusChanged with D-Bus signature a{s(us)}.
I.e. a map, where the key (first s) would be the contact identifier (or object 
path if contacts are addressable individually) and the value would be the 
status value and status text.

That might be benefitial if for example an accounting changing offline/online 
status results in a whole set of contacts changing their status (only one 
signal to send, only one signal to process on the client side).

Not sure if your plugin interface enables you to detect that though.

Cheers,
Kevin

P.S.: a bonus of having introspection XML files is that you can test how code 
generators like qdbusxml2cpp or gdbus-codegen deal with them. If they fail to 
produce valid code it would be an indication that there is something that 
could be improved.


signature.asc
Description: This is a digitally signed message part.


[Licq-devel] Re: What will happen with Licq in 2009?

2009-01-07 Thread Kevin Krammer
On Tuesday 06 January 2009, Anders Olofsson wrote:

 I've looked around a bit for library implementations of ICQ and MSN
 protocol and I didn't find much. It seems most other IM clients have
 there own implementations for these protocols. The main exception is
 libpurple but there's not much documentation so I'm not sure how much it
 does, but it looks like it contains more that just the protocol
 implementation so if we use it we'll probably end up loosing more of our
 daemon. However it seems libpurple compiles to make a separate sub
 library for each protocol. If these have a standard interface, we could
 get support for all those protocols with just one api. (If someone knows
 more about libpurple, please correct me or fill in.)

 We could of course make a library ourselves in the hope that other
 (future) applications will also use it and help maintain it. However I
 think for this to happen we will have to have a good implementation
 that's up to date. Also if we're not careful we might end up with a
 library interface that isn't usable for anything but Licq.

 Another way would be to find another IM client to cooperate with and
 make a library together. This way we could take the best parts from both
 sides and then maintain it together. For MSN I guess it would mostly be
 a matter of convincing another project to move their code to a library.
 I don't have my hopes very high on this though since it would be asking
 another group to do a lot of work that will (in the short term) mostly
 be only for our benefit.

Some of the other clients are either being rebased on or getting support for 
protocol implementations provided through Telepathy [1] services.

 However, since Qt4 has a bit more desktop handling functions than Qt3 we
 actually have most of the Kde3-gui features in the Qt4-Gui without
 compiling it for Kde. What we're missing (that I know of) is spell
 checking and integration with the kde address book. I would like to see
 a non-kde spell checker it Qt4-Gui, I can live without the address book
 sync and then the difference will just a matter of using kde widgets to
 get the kde look and feel.

At the Qt Dev Days 2008 Qt Software (formerly Trolltech) indicated that they 
would increase work on platform integration, i.e. detecting which environment 
they are running in and dynamically loading specific backend implementations 
for certains aspects, e.g. dialogs.

So the need to a KDE GUI variant will probably become less relevant as Qt 
progresses on that mission.

Additionally quite some KDE features are actually provided by desktop session 
services and KDE Libs only provide convenience API for accessing them, i.e. a 
Qt-only GUI could potentially still access the same features through the 
services' D-Bus APIs.

As for spellchecking: KDE's spell checking API is mainly an abstraction over 
the handful of spell checking libraries, i.e. using one of them as a hard 
dependency might be viable instead.

Cheers,
Kevin

[1] http://telepathy.freedesktop.org/wiki/
-- 
Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring


signature.asc
Description: This is a digitally signed message part.


[Licq-devel] Re: Qt4-GUI application icon

2007-11-21 Thread Kevin Krammer
On Wednesday 21 November 2007, Arne Schmitz wrote:
 Am Freitag, 16. November 2007 19:51:32 schrieb Eugene Paskevich:
  I would like to set the default application icon for Qt4-GUI.

 I have another variant of this, see the attached files. The SVG was made
 with Inkscape. This is not very beautiful yet, but a starting point for
 more talented people. :-)

  BTW, what is the standard for application icon size?

 KDE 4 will have SVG support, but Qt 4 seems to have no SVG icon engine in
 it yet. So I would use something between 16x16 and 64x64 as the default
 size. The windowmanager can resize the icon anyway. For example, my KDE
 taskbar uses 24x24 and the task switcher uses 32x32.

KDE now uses SVG as sources for the icons but PNGs get installed.
IIRC because the Qt SVG renderer doesn't do all the effects yet which the 
artists wanted to have and I think also because it is faster to load and 
display a PNG than to render the SVG.

My guess is that at a future state the SVG source will be installed as well 
and be used for rendering sizes where no pre-rendered PNG could be found.

Cheers,
Kevin

-- 
Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring


signature.asc
Description: This is a digitally signed message part.