We currently have two "dumping ground" repositories: libkdepim and pimcommon, with each of them containing random code that is used by multiple PIM applications. Historically, libkdepim seems to be the older one, but pimcommon seems to contain more things these days, so I think it makes more sense to clean up and eventually kill libkdepim, and keep just pimcommon repo.
We had a wikipage with some analysis of the contents of the repo, but I can no longer find it and it's likely obsolete, so here's an updated list that doesn't get lost that easily :)
libkdepim is split into two libraries - libkdepim (Akonadi-free stuff) and libkdepimakonadi (Akonadi-based stuff). Below is a list of things in both, description and potential action what I think we could do with it:
**libkdepim**
- [ ] `addressline`
- Contains some "utils" code and two classes for "recent addresses" feature.
- Used exclusively by the `libkdepimakonadi/addressline` (the rest of the addressline implementation).
- Move to `libkdepimakonadi/addressline` to have a single "addressline" library.
- [ ] `ldap`
- Contains LDAP KCM and related widgets and tools.
- Move the `AddHostWidgets` and other well-reusable pieces to KLDAP.
- Move the KCM to kdepim-runtime (since it's a runtime thing).
- [ ] `misc/broadcaststatus`
- Singleton for setting status messages from anywhere in an application and handling it in a single place.
- Widely used.
- Move it to `pimcommon`.
- [ ] `misc/emailvalidator`
- A QValidator for email addresses.
- Depends on `KEmailValidator` from KCodecs.
- Move to ??? (`pimcommon/misc`?) Can't think of a good Framework to move it to.
- [ ] `misc/kcursorsaver`
- RAII class for setting and restoring mouse cursor.
- Use here and there.
- Move to KWidgetsAddons.
- [ ] `misc/lineeditcatchreturnkey`
- When attached to a QLineEdit, emits `returnPressed()` when Enter/Return key is pressed.
- Seems to be for behavior compatibility with KLineEdit.
- What does HIG say about this non-standard behavior of QLineEdit? Should we just kill this?
- [ ] `misc/maillistdrag`
- Handling drag&drop of a list of MIME messages onto the app icon in Kontact :-O
- It appears that there's no PIM application that could generate mimedata of `x-kmail-drag/message-list` mimetype.
- Could likely be removed completely.
- [ ] `misc/uistatesaver`
- Saves and restores state for `QSplitter`, `QTabWidget`, `QTreeView` and `QComboBox`
- Could be in KWidgetsAddons? Depends on KConfig, though.
- [ ] `multiplyingline`
- Generic widget for adding/removing lines of a widget.
- Could be in KWidgetsAddons
- [ ] `prefs`
- Looks like legacy pre-KConfig stuff.
- Still in use in KOrganizer.
- Port away from it and kill it.
- [ ] `progresswidget`
- Generic status bar widget for tracking progress of multiple operations.
- KDevelop has its own fork of this.
- Move to KWidgetsAddons
- [X] `widgets/customlogwidget`
- A PIM logging widget, widely used.
- Move to pimcommon.
- [ ] `widgets/kcheckcombobox`
- `QComboBox` with checkable items.
- Move to KWidgetsAddons.
- [ ] `widgets/kdatepickerpopup`
- QMenu with "Today", "Tomorrow", etc. items.
- Only used in calendaring apps move to CalendarSupport.
- [X] `widgets/kweekdaycheckcombo`
- `KCheckCombobox` prepopulated with weekdays.
- Only used in IncidenceEditor, move it there.
- [ ] `widgets/kwidgetlister`
- Manages a list of widgets with "More", "Fewer" and "Clear" buttons.
- AkonadiContacts has its own copy of this.
- Used here and there.
- Is there some relation/duplication between this and the MultiplyingLine widget?
- [ ] `widgets/overlaywidget`
- Generic dialog/window overlay widget, used only in single place.
- Can be removed.
- [ ] `widgets/pimmessagebox`
- `QMessageBox` with four buttons.
- Used in only three places, I think the code can be duplicated there.
- Kill.
- [ ] `widgets/progressindicatorlabel`
- `KBusyIndicatorWidget` with a `QLabel`
- Improve the `KBusyIndicatorWidget`, remove this.
**libkdepimakonadi**
- [ ] `addressline`
- Complex widget with for entering contacts/email addresses with auto-completion from Akonadi and LDAP.
- Move to pimcommon.
- [ ] `job`
- Various jobs to add/search/edit contacts in Akonadi.
- Move to akonadi-contacts.
- [ ] `progresswidget`
- Akonadi integration for the generic `progresswidget` from libkdepim.
- Move to pimcommon (or Akonadi, if the generic `progresswidget` widget gets moved to Frameworks.