[prev in list] [next in list] [prev in thread] [next in thread] 

List:       calligra-devel
Subject:    Notes on porting to Qt5
From:       Boudewijn Rempt <boud () valdyas ! org>
Date:       2013-07-29 10:12:09
Message-ID: alpine.LNX.2.00.1307291211270.16243 () calcifer ! valdyas ! org
[Download RAW message or body]

Technical Issues when Porting Calligra to Qt5.1

* cmake

CMake for KF5 is in a state of flux. In my branch, I just copied what was 
needed to make Calligra work. That's not very clean -- but the "right" way 
to use cmake seems to keep changing all the time :-(.

* plugins

Sebastian Kuegler has a number of patches on reviewboard that make porting 
plugins from the old KDE style to the new Qt style a breeze. We need to 
investigate whether we can reuse that work without dragging in all of KF5 
or Qt 5.2.

* qt vs kde

There are a lot of places where we can port directly from a KDE class to a 
Qt class. In other places, we will lose some functionality if we go with a 
Qt-only solution (like file dialogs). On the other hand, in many cases 
that will improve portability of Calligra to Windows, OSX and Android. I 
am really in favour of going Qt-only as much as possible for that reason.

This means no new uses of KLineEdit, KComboBox etc.

* kdefakes

The kdefakes library as started by Sebastian Sauer needs be expanded to be 
more than a set of fake headers. for instance...

* xmlgui

Unless we re-implement (or clone from e.g. Qt Creator) the shortcut editor 
and menu merging parts of xmlgui, we will need the xmlgui framework. See 
my other mail for how much that drags in. Or we can copy the relevant 
classes to kokdefakes...

* kparts

Plan and Kexi really use KParts, it seems. This is a bit of a porting 
nightmare.

* Optional KDE dependencies:

  - kross: for optional scripting plugins
  - kdepim integration (the kdepim api's we use have been deprecated for 
half a decade, but we never fixed that...)
  - kio: heavily dependent on dbus to function, it's a problem already on 
Windows and OSX. It's integration with qwidget is a problem on all mobile 
platforms.  I propose to stop using kio.

* cleanup moc-includes


Appendix:

List of KDE headers included in Calligra (243 items)

#include <k3command.h>
#include <k3iconview.h>
#include <k3listbox.h>
#include <k3listview.h>
#include <kabc/addressbook.h>
#include <kabc/addressee.h>
#include <kabc/phonenumber.h>
#include <kabc/stdaddressbook.h>
#include <kabc/vcardconverter.h>
#include <kaboutdata.h>
#include <kabstractfilewidget.h>
#include <kacceleratormanager.h>
#include <kaccelgen.h>
#include <kactioncollection.h>
#include <kaction.h>
#include <kactionmenu.h>
#include <kactionselector.h>
#include <KActivities/ResourceInstance>
#include <kapplication.h>
#include <KArchiveDirectory>
#include <kassistantdialog.h>
#include <kcal/attachment.h>
#include <kcal/attendee.h>
#include <kcal/calendarlocal.h>
#include <kcal/calendarresources.h>
#include <kcalendarsystem.h>
#include <kcal/icalformat.h>
#include <kcal/todo.h>
#include <kcal/vcalformat.h>
#include <KCategorizedSortFilterProxyModel>
#include <KCategorizedView>
#include <KCategoryDrawer>
#include <kcharselect.h>
#include <kcharsets.h>
#include <kcmdlineargs.h>
#include <kcodecs.h>
#include <kcolorbutton.h>
#include <kcolorcombo.h>
#include <kcolordialog.h>
#include <kcolormimedata.h>
#include <kcolorscheme.h>
#include <kcolorutils.h>
#include <kcombobox.h>
#include <kcompletionbox.h>
#include <kcompletion.h>
#include <kcomponentdata.h>
#include <KConfigDialog>
#include <KConfigDialogManager>
#include <kconfiggroup.h>
#include <kconfig.h>
#include <KConfigSkeleton>
#include <kcursor.h>
#include <kdatepicker.h>
#include <kdatetable.h>
#include <kdatetime.h>
#include <kdatetimewidget.h>
#include <kdatewidget.h>
#include <kdebug.h>
#include <kdeclarative.h>
#include <kde_file.h>
#include <kdemacros.h>
#include <kdeprintdialog.h>
#include <kdesktopfile.h>
#include <kdeversion.h>
#include <kdewin_export.h>
#include <kdialogbase.h>
#include <kdialog.h>
#include <kdiroperator.h>
#include <kdirselectdialog.h>
#include <kdirwatch.h>
#include <KDoubleValidator>
#include <keditlistbox.h>
#include <kedittoolbar.h>
#include <kemailsettings.h>
#include <kencodingprober.h>
#include <KExtendableItemDelegate>
#include <KFadeWidgetEffect>
#include <kfiledialog.h>
#include <kfilefiltercombo.h>
#include <kfile.h>
#include <KFileItemDelegate>
#include <kfileitem.h>
#include <kfilewidget.h>
#include <kfilterdev.h>
#include <kfinddialog.h>
#include <kfind.h>
#include <kfontchooser.h>
#include <kfontdialog.h>
#include <kfontrequester.h>
#include <kformuladocument.h>
#include <kformulamimesource.h>
#include <kgenericfactory.h>
#include <kglobal.h>
#include <kglobalsettings.h>
#include <kguiitem.h>
#include <khbox.h>
#include <khelpmenu.h>
#include <khistorycombobox.h>
#include <khtml_part.h>
#include <khtmlview.h>
#include <kicondialog.h>
#include <kiconeffect.h>
#include <kicon.h>
#include <kiconloader.h>
#include <kicontheme.h>
#include <kimageio.h>
#include <kinputdialog.h>
#include <KIntNumInput>
#include <kio/copyjob.h>
#include <kio/deletejob.h>
#include <kio/global.h>
#include <kio/jobclasses.h>
#include <kio/job.h>
#include <kio/jobuidelegate.h>
#include <kio/netaccess.h>
#include <kio/previewjob.h>
#include <kio/renamedialog.h>
#include <kio/thumbcreator.h>
#include <KJob>
#include <klibloader.h>
#include <klineedit.h>
#include <klistwidget.h>
#include <klocale.h>
#include <klocalizedstring.h>
#include <kmainwindow.h>
#include <kmenubar.h>
#include <kmenu.h>
#include <kmessagebox.h>
#include <kmessage.h>
#include <kmimetype.h>
#include <kmimetypetrader.h>
#include <KMultiTabBar>
#include <knewpassworddialog.h>
#include <knewstuff3/downloaddialog.h>
#include <knewstuff3/uploaddialog.h>
#include <knewstuff/downloaddialog.h>
#include <knotification.h>
#include <knotifyconfigwidget.h>
#include <knuminput.h>
#include <knumvalidator.h>
#include <kpagedialog.h>
#include <kpagewidgetmodel.h>
#include <kparts/browserextension.h>
#include <kparts/componentfactory.h>
#include <kparts/event.h>
#include <kparts/factory.h>
#include <kparts/mainwindow.h>
#include <kparts/part.h>
#include <kparts/partmanager.h>
#include <kparts/plugin.h>
#include <kpassivepopup.h>
#include <kpassworddialog.h>
#include <kpluginfactory.h>
#include <KPluginInfo>
#include <KPluginLoader>
#include <KPluginSelector>
#include <kprocess.h>
#include <kprogressdialog.h>
#include <kpropertiesdialog.h>
#include <kpushbutton.h>
#include <krandom.h>
#include <krdetailsectiondata.h>
#include <krecentdirs.h>
#include <krecentdocument.h>
#include <krecentfilesaction.h>
#include <kreplacedialog.h>
#include <kreplace.h>
#include <KRichTextWidget>
#include <Kross/Action>
#include <kross/core/actioncollection.h>
#include <kross/core/action.h>
#include <kross/core/interpreter.h>
#include <kross/core/manager.h>
#include <kross/core/object.h>
#include <Kross/Manager>
#include <kross/ui/model.h>
#include <kross/ui/view.h>
#include <krpos.h>
#include <krreportdata.h>
#include <krsectiondata.h>
#include <krsize.h>
#include <krun.h>
#include <krutils.h>
#include <ksavefile.h>
#include <kselectaction.h>
#include <kselector.h>
#include <kseparator.h>
#include <kservice.h>
#include <kservicetype.h>
#include <kservicetypetrader.h>
#include <ksharedconfig.h>
#include <ksharedptr.h>
#include <KShell>
#include <kshortcut.h>
#include <kshortcutsdialog.h>
#include <ksplashscreen.h>
#include <ksqueezedtextlabel.h>
#include <kstandardaction.h>
#include <kstandarddirs.h>
#include <kstandardguiitem.h>
#include <kstandardshortcut.h>
#include <kstatusbar.h>
#include <kstdaccel.h>
#include <kstdaction.h>
#include <KStringHandler>
#include <kstyle.h>
#include <ksystemtimezone.h>
#include <KSystemTimeZones>
#include <KTabBar>
#include <ktabwidget.h>
#include <ktar.h>
#include <ktempdir.h>
#include <ktemporaryfile.h>
#include <ktextbrowser.h>
#include <ktextedit.h>
#include <ktexteditor/viewcursorinterface.h>
#include <ktexteditor/viewstatusmsginterface.h>
#include <ktimezone.h>
#include <ktip.h>
#include <KTitleWidget>
#include <ktoggleaction.h>
#include <ktogglefullscreenaction.h>
#include <ktoolbar.h>
#include <ktoolinvocation.h>
#include <ktrader.h>
#include <kuniqueapplication.h>
#include <kurlcombobox.h>
#include <kurlcompletion.h>
#include <kurl.h>
#include <kurlrequesterdialog.h>
#include <kurlrequester.h>
#include <kuser.h>
#include <kvbox.h>
#include <kwallet.h>
#include <kwidgetitemdelegate.h>
#include <kwindowsystem.h>
#include <kwordwrap.h>
#include <kxmlguibuilder.h>
#include <kxmlguiclient.h>
#include <kxmlguifactory.h>
#include <kxmlguiwindow.h>
#include <kxyselector.h>
#include <kzip.h>

_______________________________________________
calligra-devel mailing list
calligra-devel@kde.org
https://mail.kde.org/mailman/listinfo/calligra-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic