Review Request: Convert libplasma to new qt4.4 technologies.

Dan Meltzer parallelgrapefruit at gmail.com
Fri Feb 29 21:01:42 CET 2008


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://mattr.info/r/187/
-----------------------------------------------------------

(Updated 2008-02-29 14:01:42.446188)


Review request for Plasma.


Summary
-------

This patch converts libplasma to use the new technologies found in Qt 4.4.  It does the following things:

1) Makes Plasma::Widget descend from QGraphicsWidget:  This change allows for a lot of code simplification, widget.cpp shrinks by about 200 lines after removing redundant code.  We cannot replace Plasma::Widget with QGraphicsWidget everywhere directly, as there still are some things in widget that we need.  This patch also removes Widget::expandingDirections in favor of using sizePolicies.

2) Removes Plasma::Layout and Plasma::LayoutItem:  These have been replaced by QGraphicsLayout and QGraphicsLayoutItem respectivly.  All layouts with the exception of boxlayout have been converted to use QGraphicsLayout.

3) Removes Boxlayout.  QGraphicsLinearLayout replaces BoxLayout at this time.  There are a few things that boxlayout had that QGraphicsLayout does not at this point, but they are not entirly important on a wide scale I do not believe.

4) Disables LayoutAnimator.  This is going to need to be ported to work with the new layouting concepts and classes.  When I last spoke with aseigo it sounded like LayoutAnimator needed some rethinking anyways, so I have just disabled it for now.

A few notes:  This patch is only the section of the patch applying to libplasma.  I have another equally big patch that I need to clean up that converts workspace/plasma.  I hope to post that in the next few days.  Also, there are some bugs either in my changes or in qt4.4 (I have not been able to determine which, and reguardless they appear in the applets part of the patch, not the libs.  

A number of the issues have been resolved with the qt4.4 beta.  The code can now be found in svn:

branches/work/woc/libplasma
branches/work/woc/kdebase-plasma

I have not ported extragear or playground at this time.


The request here is for review of the idea and changes made, with the understanding that there may be more review necessary once the second part of the changes get posted.


Diffs
-----

  trunk/KDE/kdebase/workspace/libs/plasma/CMakeLists.txt
  trunk/KDE/kdebase/workspace/libs/plasma/applet.h
  trunk/KDE/kdebase/workspace/libs/plasma/applet.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/containment.h
  trunk/KDE/kdebase/workspace/libs/plasma/containment.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/corona.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/borderlayout.h
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/borderlayout.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/boxlayout.h
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/boxlayout.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/fliplayout.h
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/flowlayout.h
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/flowlayout.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/freelayout.h
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/freelayout.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/layout.h
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/layout.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/layoutitem.h
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/layoutitem.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/nodelayout.h
  trunk/KDE/kdebase/workspace/libs/plasma/layouts/nodelayout.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/uiloader.h
  trunk/KDE/kdebase/workspace/libs/plasma/uiloader.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/icon.h
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/icon.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/label.h
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/label.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/lineedit.h
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/lineedit.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/meter.h
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/meter.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/progressbar.h
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/progressbar.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/pushbutton.h
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/pushbutton.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/rectangle.h
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/rectangle.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/signalplotter.h
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/signalplotter.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/tests/testLayouts.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/tests/testProgressBar.cpp
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/widget.h
  trunk/KDE/kdebase/workspace/libs/plasma/widgets/widget.cpp

Diff: http://mattr.info/r/187/diff


Testing
-------

Been using this patch for the past few days. There are still a number of crashes in what appears to be qt4.4 code, but these changes seem sound.


Thanks,

Dan



More information about the Panel-devel mailing list