Moving libkfacebook to extragear

Kevin Krammer krammer at
Mon Oct 29 14:14:46 GMT 2012

On Sunday, 2012-10-28, Kevin Krammer wrote:
> On Sunday, 2012-10-28, Martin Klapetek wrote:
> > On Sat, Oct 27, 2012 at 6:05 PM, Kevin Krammer <krammer at> wrote:

> > > - the *Info classes seem to be normal data classes, IMHO they don't
> > > need to be
> > > QObjects but rather "value types"
> > 
> > This is for the parsing purposes - the library uses QJson parser/mapper,
> > which automagically maps the received json data to qobjects, otherwise
> > there would have to be manual parsing everywhere (and the facebook jsons
> > are huge), which means more code, more error possibilities, more
> > maintaining requirement and worse readability (compared to two lines
> > QJson mapper). So I'd like to leave this one as is.
> I haven't had a look at the QJson library internals (yet), but from its
> usage it looks like that it is only using instances of those QObject
> classes to provide a convenient mapper of map keys to conversion functions
> (the property setters).

I've checked QJson and its QObjectHelper indeed only uses the passed object as 
a setter/getter interface.

Those "info" classes can therefore easily be made non-public/non-exported and 
a single instance of each class to operate on respective instance of a proper 
value-type data class.

// appinfo.h
  // if applications do not need to set this, AppInfoParser could also be
  // a friend, etc
  void setId( const QString &id );
  QString id() const;

  // ...

  class Private;
  QSharedDataPointer<Private> d;

// appinfoparser_p.h
class AppInfoParser : public QObject
  Q_PROPERTY( QString, id READ id WRITE setId )

  void setData( const AppInfo &appInfo ) { m_appInfo = appInfo; }
  AppInfo data() const { return m_appInfo; }

  void setId( const QString &id ) { m_appInfo.setId( id ); }
  QString id() const { return }

  AppInfo m_appInfo;

Usage e.g. in PostInfo::setApplication(

void PostInfo::setApplication( const QVariantMap &application )
  AppInfoParser parser; // could be also be a member, etc
  QJSon::QObjectHelper::qvariant2qobject( application, &parser );

  m_application =;

Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <>

More information about the kde-core-devel mailing list