Interfaces Review Results: Part1
From KDevelop
1) figure out how import and parse really (should) work
2) change to IProject::buildSystemManager(), IProject::setManagerPlugin(), IProject::projectFileManager()
- (apaku) why should setManagerPlugin be exposed? This is something that is loaded from the project file and shouldn't be changed later on.
3) ask Hamish:
why we have 1 mutex per thread with parse job
can't we use semaphore to make sure all the parse job stopped when
we request that in ::projectClosing() and don't use
lockAllParseMutexes()
4) go through @todo's
5) change Sublime::View to QWidget in IDocument::activate
6) s/IDocument::activate/IDocument::performAdditionalActivation() ?
7) comment why we pass ICore to IDocument
- to let plugins and docs in plugins access Core::self
- to use notify...
8) more docs to IDocument - make sure every function that is supposed to
call notifyFoo() has that in the documentation
9) document how you would use document factories to create your own
documents
- (apaku) designer plugin can be used as reference for this
10) ask teatime about what encoding in documentcontroller does
11) s/IDocumentController::registerDocumentForMimetype/
registerDocumentFactory
12) prevent crashes with factories that no longer exist after a plugin
is unloaded:
- make IDocumentFactory a QObject and use a signal to catch deletion
13) open document without using plugin's doc factories (API/UI)
14) at least document the behavior of registering doc factories
(ala only the first one gets registered and it takes precedence
over default implementation - warning!)
15) check if we're not emitting documentActivated signal twice in
documentcontroller.cpp#257 and whether #256 is needed
16) give an example of contents change without state change in
IDocumentController::documentContentChanged
- text editor: doc is already modified but the new text is written
17) document the difference between ILanguage and ILanguageSupport
- ILanguage is what core uses and ILanguageSupport is a plugin
- basically both are the representation of the same "language"
one for core and another for plugin
18) don't react on part changed signal in LanguageControllerPrivate,
but react on IDocumentController::documentActivated signal
and get rid of casts to ro_part
19) move Language::activate/deactivate to LanguageSupport because
that's where they are going to be used and call that directly
from LanguageControllerPrivate
20) move Language::findByUrl and Language::findByName to the
ILanguageController
21) remove IPlugin::isCentralPlugin and dockWidgetAreaHint
22) s/IPlugin::unload/prepareToUnload ? cleanup? and write that
it's a good idea to remove views here
23) document iplugin.cpp#120 - a place for shared icons
24) change the API docs for IPlugin::iconLoader because it says
"global" when it should say "plugin"
25) do addAppDir after doing reconfigure in IPlugin::newIconLoader
26) s/IPlugin::newIconLoader/IPlugin::reconfigureIconLoader
and make it a private slot or d-pointer slot
27) s/kdevelop/kdevplatform in iplugin.cpp#120
28) PluginController::buildContextMenu has not to use QPair<>
because it already knows the plugin name from the KPluginInfo
so all the code should be simplified
29) plugincontroller.cpp#469 has a bug when it adds text to the
menu every time it got used
30) move IPlugin::extensionManager to dpointer if possible
31) IPluginController::unloadPlugin should take IPlugin or KPluginInfo
instead of the name
32) IPluginController::loadPluginInternal has to take KPluginInfo as
and argument
33) remove IPluginController::query
34) decide what we use in IPluginController for constraints
- QString
- QStringList
35) IPluginController::argumentsFromService should die
36) remove kdev3_to_kdev4 from the source
37) move IPluginController::engine to the shell (remove from iface)
38) move IPluginController::loadingPlugin and pluginLoaded
to the implementation
39) IPluginController::profileChanged() - decide whether we need that
40) remove IProject::relativeUrl
41) s/IProject::urlRelativeToProject/absoluteUrl
42) s/KDev4ProjectFile/projectFile in iprojectcontroller.h#52
43) plugin that initiates the context menu should not show
(plugin name) or use submenu
44) fix ui messages in subversion plugin
45) make sure toolview titles are localized
46) create a virtual method title() in IToolViewFactory
47) remove IUiController::ShowMode enum
48) see the paper for an improvements to IToolViewFactory
49) we probably don't need ILanguage::name because we can access it
through the language support
50) check enums for UserDefined=1024 types (seen in ibuildsystemm-r)
51) ask apaku about IBuildSystemManager::findMakefiles
- what it does
- why we have the one that does not return the list
- (apaku) /me has no idea, this existed before I started to work on kdev4