Frameworks/Epics/Reduce class duplication: Difference between revisions

From KDE Community Wiki
 
(17 intermediate revisions by the same user not shown)
Line 16: Line 16:
!  width=250 | Comment
!  width=250 | Comment
|-
|-
{{FeatureInProgress|KApplication : public QApplication|kde4support is the plan, but we should check for specifics}}
{{FeatureDone|KApplication : public QApplication|kde4support is the plan, but we should check for specifics}}


{{FeatureInProgress|KComboBox : public QComboBox, public KCompletionBase|major features on top of Qt (completion), plus lots of small API things that should go into QComboBox (contains, ...). Final destination: a framework with the completion stuff?}}
{{FeatureDone|KComboBox : public QComboBox, public KCompletionBase|major features on top of Qt (completion), plus lots of small API things that should go into QComboBox (contains, ...). Final destination: a framework with the completion stuff?}}


{{FeatureDone|KLineEdit : public QLineEdit, public KCompletionBase|major features on top of Qt (completion), plus lots of small API or behaviors that should go into QLineEdit (see Qt 5.1 merging). Final destination: a framework with the completion stuff?}}
{{FeatureDone|KLineEdit : public QLineEdit, public KCompletionBase|major features on top of Qt (completion), plus lots of small API or behaviors that should go into QLineEdit (see Qt 5.1 merging). Final destination: a framework with the completion stuff?}}
Line 37: Line 37:
{{FeatureDone|KListWidget : public QListWidget|only adds auto-select support, which was mainly meant for filemanagers. Port kdelibs to QListWidget, then move KListWidget to kde4support.}}
{{FeatureDone|KListWidget : public QListWidget|only adds auto-select support, which was mainly meant for filemanagers. Port kdelibs to QListWidget, then move KListWidget to kde4support.}}


{{FeatureTodo|KMainWindow : public QMainWindow|??}}
{{FeatureDone|KMainWindow : public QMainWindow|Goes to kconfig-widgets except for the "setCaption" part which should be covered by the platform integration plugin in Qt}}


{{FeatureDone|KMenu : public QMenu|Title item support, and keyboard navigation. Could be added to QMenu.}}
{{FeatureDone|KMenu : public QMenu|Title item support, and keyboard navigation. Could be added to QMenu.}}


{{FeatureTodo|KMenuBar : public QMenuBar|??}}
{{FeatureDone|KMenuBar : public QMenuBar|This one goes straight to kde4support, it's only feature probably doesn't even work anymore on modern systems (top level menubar), and it's getting replaced through dbusmenu}}


{{FeatureTodo|KProcess : public QProcess|Code should be ported to QProcess (except kpty).}}
{{FeatureDone|KProcess : public QProcess|Code should be ported to QProcess (except kpty).}}


{{FeatureDone|KPushButton : public QPushButton|DnD support, only used in KUrlRequester in kdelibs -> create a helper class based on event filtering.  Auth support -> rename to KAuthPushButton. Delayed menu support -> add to Qt 5.1..}}
{{FeatureDone|KPushButton : public QPushButton|DnD support, only used in KUrlRequester in kdelibs -> create a helper class based on event filtering.  Auth support -> rename to KAuthPushButton. Delayed menu support -> add to Qt 5.1..}}
Line 49: Line 49:
{{FeatureDone|KSplashScreen : public QSplashScreen|Only exists for KDE Xinerama settings, which are gone. -> kde4support}}
{{FeatureDone|KSplashScreen : public QSplashScreen|Only exists for KDE Xinerama settings, which are gone. -> kde4support}}


{{FeatureInProgress|KStatusBar : public QStatusBar|KStatusBar adds convenience to QStatusBar by making items changeable by id (but the same could easily be done by keeping a pointer to the QLabel widgets passed in) and emitting a signal when items are clicked (Again keeping pointers to the QWidgets would give the same signals)}}
{{FeatureDone|KStatusBar : public QStatusBar|KStatusBar adds convenience to QStatusBar by making items changeable by id (but the same could easily be done by keeping a pointer to the QLabel widgets passed in) and emitting a signal when items are clicked (Again keeping pointers to the QWidgets would give the same signals)}}


{{FeatureInProgress|KSystemTrayIcon : public QSystemTrayIcon|KSystemTrayIcon is to be deprecated in favor of KStatusNotifierItem. Only additions are defaults (left click show main window, right click show KActionCollection, etc.) should go to kde4support.}}
{{FeatureDone|KSystemTrayIcon : public QSystemTrayIcon|KSystemTrayIcon is to be deprecated in favor of KStatusNotifierItem. Moved by aseigo already, he also took care of adding the important bit to KStatusNotifierLegacyIcon which now inherits from QSystemTrayIcon directly.}}


{{FeatureDone|KTabBar: public QTabBar| TODO added to cleanup page}}
{{FeatureDone|KTabBar: public QTabBar| TODO added to cleanup page}}
Line 57: Line 57:
{{FeatureDone|KTabWidget : public QTabWidget| TODO added to qt5.1 epic}}
{{FeatureDone|KTabWidget : public QTabWidget| TODO added to qt5.1 epic}}


{{FeatureTodo|KTextBrowser : public QTextBrowser|Adds icons in popup menu, support for clicking on mailto and http urls, user-configurable wheel event (zoom or scroll)}}
{{FeatureDone|KTextBrowser : public QTextBrowser|Adds icons in popup menu, support for clicking on mailto and http urls, user-configurable wheel event (zoom or scroll), then kde4support}}


{{FeatureTodo|KTextEdit : public QTextEdit|??}}
{{FeatureDone|KTextEdit : public QTextEdit|Background spellchecking in QTextEdit, then tier4/consistency}}


{{FeatureTodo|KToolBar : public QToolBar|??}}
{{FeatureDone|KToolBar : public QToolBar|Goes to kconfig-widgets except for the "loadKDESettings" part which should be covered by the platform integration plugin in Qt}}


{{FeatureDone|KUndoStack : public QUndoStack|Could become two methods in a namespace, no subclass needed.}}
{{FeatureDone|KUndoStack : public QUndoStack|Could become two methods in a namespace, no subclass needed.}}
Line 69: Line 69:
{{FeatureDone|KAction : public QWidgetAction|See spreadsheet by Valentin Rusu, on k-f-d}}
{{FeatureDone|KAction : public QWidgetAction|See spreadsheet by Valentin Rusu, on k-f-d}}


{{FeatureInProgress|KDateTime||Already part of jlayt's plans, I think}}
{{FeatureDone|KDateTime|Already part of jlayt's plans, I think}}


{{FeatureDone|KLocale|Already part of jlayt's plans}}
{{FeatureDone|KLocale|Already part of jlayt's plans}}


{{FeatureInProgress|KColorDialog|KColorDialog is almost identical to QColorDialog with slightly different api.  KColorDialog adds a web color lineedit and a dropper button.  Probably should go to kde4support}}
{{FeatureDone|KColorDialog|KColorDialog is almost identical to QColorDialog with slightly different api.  KColorDialog adds a web color lineedit and a dropper button.  Probably should go to kde4support}}


{{FeatureTodo|KMessageBox|??}}
{{FeatureDone|KMessageBox|Goes to tier4/consistency}}


{{FeatureTodo|KInputDialog|??}}
{{FeatureDone|KInputDialog|Some extra features in Qt, then goes to kde4support}}


{{FeatureTodo|KFileDialog|??}}
{{FeatureDone|KFileDialog|QUrl variants in QFileDialog then kde4support}}


{{FeatureTodo|KProgressDialog|??}}
{{FeatureDone|KProgressDialog|Goes to kde4support}}


|}
|}

Latest revision as of 09:57, 12 November 2012

Reducing class duplication with Qt

Some of the splitting for kdelibs are easily blocked by classes mentionned here. The goal of this epic, is to determine for each class what it will become. Possible solutions are:

  • go straight in hel^Wkde4support if it is obsoleted completely by a class in Qt;
  • have its features ported to the corresponding class in Qt 5, then moved to kde4support (in which case a corresponding task has to be opened in one of the Qt 5 epics;
  • if it provides a valid feature on its own on top of Qt (real novelty, not just some addon cramed into a subclass), decide on which framework it goes to;
  • if it's purely about integration among KDE applications, go straight to the upcoming kde "consistency" framework (Tier 4).

A row is marked as "done" when the investigation is done and TODOs have been added to the Qt-5.1 or kdelibs_cleanups pages. Not when the job itself is done.

Status Description Comment
DONE KApplication : public QApplication kde4support is the plan, but we should check for specifics


DONE KComboBox : public QComboBox, public KCompletionBase major features on top of Qt (completion), plus lots of small API things that should go into QComboBox (contains, ...). Final destination: a framework with the completion stuff?


DONE KLineEdit : public QLineEdit, public KCompletionBase major features on top of Qt (completion), plus lots of small API or behaviors that should go into QLineEdit (see Qt 5.1 merging). Final destination: a framework with the completion stuff?


DONE KRestrictedLine : public KLineEdit Move to kde4support. Very few users, and a validator can be used instead.


DONE KDialog : public QDialog Mostly convenience and consistency -> tier4, after porting the rest of kdelibs away from it (except tier4 and kde4support/kde3support)


DONE KDialogButtonBox : public QDialogButtonBox Deprecate, move to kde4support, using QDialogButtonBox directly takes 2 or 3 lines of code (when using KGuiItem).


DONE KDoubleValidator : public QDoubleValidator Deprecate, move to kde4support, the merging of the locale stuff makes it obsolete.


DONE KIcon : public QIcon Discussed on kde-frameworks-devel, replace with one method.


DONE KLibrary : public QLibrary Adds KF5 search paths, so moved to the kservice framework. Should become mostly internal, though...
DONE KPluginLoader : public QPluginLoader Adds KF5 search paths, so moved to the kservice framework.


DONE KListWidget : public QListWidget only adds auto-select support, which was mainly meant for filemanagers. Port kdelibs to QListWidget, then move KListWidget to kde4support.


DONE KMainWindow : public QMainWindow Goes to kconfig-widgets except for the "setCaption" part which should be covered by the platform integration plugin in Qt


DONE KMenu : public QMenu Title item support, and keyboard navigation. Could be added to QMenu.


DONE KMenuBar : public QMenuBar This one goes straight to kde4support, it's only feature probably doesn't even work anymore on modern systems (top level menubar), and it's getting replaced through dbusmenu


DONE KProcess : public QProcess Code should be ported to QProcess (except kpty).


DONE KPushButton : public QPushButton DnD support, only used in KUrlRequester in kdelibs -> create a helper class based on event filtering. Auth support -> rename to KAuthPushButton. Delayed menu support -> add to Qt 5.1..


DONE KSplashScreen : public QSplashScreen Only exists for KDE Xinerama settings, which are gone. -> kde4support


DONE KStatusBar : public QStatusBar KStatusBar adds convenience to QStatusBar by making items changeable by id (but the same could easily be done by keeping a pointer to the QLabel widgets passed in) and emitting a signal when items are clicked (Again keeping pointers to the QWidgets would give the same signals)


DONE KSystemTrayIcon : public QSystemTrayIcon KSystemTrayIcon is to be deprecated in favor of KStatusNotifierItem. Moved by aseigo already, he also took care of adding the important bit to KStatusNotifierLegacyIcon which now inherits from QSystemTrayIcon directly.


DONE KTabBar: public QTabBar TODO added to cleanup page


DONE KTabWidget : public QTabWidget TODO added to qt5.1 epic


DONE KTextBrowser : public QTextBrowser Adds icons in popup menu, support for clicking on mailto and http urls, user-configurable wheel event (zoom or scroll), then kde4support


DONE KTextEdit : public QTextEdit Background spellchecking in QTextEdit, then tier4/consistency


DONE KToolBar : public QToolBar Goes to kconfig-widgets except for the "loadKDESettings" part which should be covered by the platform integration plugin in Qt


DONE KUndoStack : public QUndoStack Could become two methods in a namespace, no subclass needed.


DONE KUrl : public QUrl Finish porting to QUrl, then move to kde4support


DONE KAction : public QWidgetAction See spreadsheet by Valentin Rusu, on k-f-d


DONE KDateTime Already part of jlayt's plans, I think


DONE KLocale Already part of jlayt's plans


DONE KColorDialog KColorDialog is almost identical to QColorDialog with slightly different api. KColorDialog adds a web color lineedit and a dropper button. Probably should go to kde4support


DONE KMessageBox Goes to tier4/consistency


DONE KInputDialog Some extra features in Qt, then goes to kde4support


DONE KFileDialog QUrl variants in QFileDialog then kde4support


DONE KProgressDialog Goes to kde4support