D8493: Make Folder View screen aware
Kai Uwe Broulik
noreply at phabricator.kde.org
Thu Oct 26 11:58:28 UTC 2017
broulik added a comment.
Regardless of whether this is the right way to go, I put some coding style and practise comments on the code, so you know what to look for in the future / in general :)
INLINE COMMENTS
> main.xml:40
>
> + <entry name="screenMapping" type="StringList" hidden="true">
> + <default></default>
What's the purpose of `hidden=true`?
> foldermodel.cpp:1310
> +
> + const QString name = item.url().toString();
> + if (m_usedByContainment) {
Why not store a `QUrl`?
> foldermodel.cpp:1314
> + if (m_screen != -1) {
> + if (screen == -1)
> + m_screenMapper->addMapping(name, m_screen);
This can never be reached
> foldermodel.cpp:1316
> + m_screenMapper->addMapping(name, m_screen);
> + else if (m_screen != screen)
> + return false;
Coding style: one space between `else` and `if`, also put braces even around one line statements.
> foldermodel.cpp:1659
> +{
> + const auto mapper = dynamic_cast<ScreenMapper*>(screenMapper);
> + if (!mapper || m_screenMapper == mapper)
Use `qobject_cast` (but this would not be neccessary, see my comment on the `Q_PROPERTY` above)
> foldermodel.h:100
> + Q_PROPERTY(int screen READ screen WRITE setScreen NOTIFY screenChanged)
> + Q_PROPERTY(QObject* screenMapper READ screenMapper WRITE setScreenMapper NOTIFY screenMapperChanged)
>
You can use `ScreenMapper *` as property type if you did `qmlRegisterType<ScreenMapper>()` on it.
Also note that QML engine sucks at resolving namespaces, so you might need to fully qualify it should it be in a namespace.
> foldermodel.h:190
> +
> + QObject* screenMapper() const;
> + void setScreenMapper(QObject* screenMapper);
Coding style: space //before// `*`, ie `QObject *foo()`
> folderplugin.cpp:66
>
> +void FolderPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
> +{
Using this is asking for trouble. Plasma uses shared engines for all applets, so this context property would be accessible to anyone. I would prefer that you used a singleton type.
> screenmapper.cpp:50
> +{
> + QStringList result;
> + auto it = m_screenUrlMap.constBegin();
Add `reserve()` call, ie `result.reserve(screenUrlMap.count() * 2)`
> screenmapper.cpp:51
> + QStringList result;
> + auto it = m_screenUrlMap.constBegin();
> + while (it != m_screenUrlMap.constEnd()) {
Range-for?
> screenmapper.cpp:79
> +{
> + if (m_screenUrlMap.contains(url)) {
> + return m_screenUrlMap[url];
Avoid double look-up:
return m_screenUrlMap.value(url, -1);
the second argument is the default value to return if the item does not exist.
> screenmapper.h:21
> + ***************************************************************************/
> +#ifndef SCREENMAPPER_H
> +#define SCREENMAPPER_H
You can use `#pragma once`
> screenmapper.h:34
> + explicit ScreenMapper(QObject *parent = nullptr);
> +
> + QStringList screenMapping() const;
We typically explicitly add a default destructor.
~ScreenMapper() override = default;
REPOSITORY
R119 Plasma Desktop
REVISION DETAIL
https://phabricator.kde.org/D8493
To: amantia, #plasma, ervin, mlaurent, dvratil, hein, aacid
Cc: broulik, mart, plasma-devel, ZrenBot, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20171026/bd2f1df8/attachment-0001.html>
More information about the Plasma-devel
mailing list