It's not my personal preference either, but more important is to keep consistency between the apis. As lp:unity-api has been defined with this namespace structure, we need to adopt it. Note that you don't need to use them in the actual implementation. Just "using namespace unity::shell:application" once in your header should be enough to not have to care about it all any more. Check out the launcher implementation in lp:unity8 plugins/Unity/Launcher/.
>
> + ApplicationInfoInterface
>
> First off I think we can be ruthless and get rid of deprecated stuff.
>
> Launcher doesn't care if application is fullscreen, and technically a surface
> is fullscreen, not an application. Please leave that out until I decide what
> to do there. Also screenshots are made available by an image loader, with URI
> based on the appId - so that 'screenshot' API is going away
>
> So I'd propose simplifying this interface to include only those things we both
> need to share: appId, name, comment, icon, stage, state, focused.
Done.
>
> Next I think these properties should be read only. I expect to implement this
> interface by adding a constructor which takes app_id and then sets these
> properties from the correct desktop file. I don't see these needing to be set
> by shell. But if the desktop file changes, want to notify shell of those
> property changes.
Done.
>
> Q_PROPERTY(QString icon READ icon WRITE setIcon NOTIFY iconChanged)
> QUrl better? Will this will return things like
> file:///usr/share/icons/whatever.png or gicon:///network-enabled, if so I'd
> like to use QUrl.
Done.
>
> States enum will also need "Suspended", "Stopped" for process management
> (Stopped means process killed, but its state was written to disk, so can be
> respawned and resume itself). Maybe also desktop-y things like "Wants
> Attention" ?
Added Suspended and Stopped. I don't think "Wants Attention" or the like belongs in here. Just because an app wants attention it is still one of the other states (e.g. running). I'd probably even create a separate boolean property for "Wants attention".
>
> + ApplicationListModelInterface
>
> The only reason ApplicationListModelInterface was useful was for when we had 2
> separate lists for main stage and side stage applications. But we agreed it is
> best to combine these into one master list. So is it worth having this class
> at all, we could instead making the ApplicationManager class an
> QAbstractListModel?
Done. This matches the Launcher api now very closely :)
>
> Pet peeve: QAbstractListModel doesn't have a "count" property, unlike
> javascript models. It would be nice to add it :)
added.
>
>
> + ApplicationManagerInterface
>
> + Application* startProcess(QString desktopFile, ExecFlags flags, QStringList
> arguments)
> your correct in your comment that this needs to change a lot. Yes it should
> use appId. Flags should go away too. Thus can remove that enum.
done
>
> + void unfocusCurrentApplication(StageHint stageHint);
> I think this best replaced with unfocusCurrentApplication()
done
>
>
> +Q_SIGNALS:
> 415 + // TODO: needed?
> 416 + void mainStageFocusedApplicationChanged();
> 417 + void sideStageFocusedApplicationChanged();
>
> Can combine these into one focusedApplicationChanged() signal
done.
>
> 418 + void focusRequested(FavoriteApplication favoriteApplication)
> I believe upstart will handle this, so shell won't need to care. Can leave it
> out completely.
> 3 nested namespaces, can't we reduce that?
It's not my personal preference either, but more important is to keep consistency between the apis. As lp:unity-api has been defined with this namespace structure, we need to adopt it. Note that you don't need to use them in the actual implementation. Just "using namespace unity:: shell:applicati on" once in your header should be enough to not have to care about it all any more. Check out the launcher implementation in lp:unity8 plugins/ Unity/Launcher/ .
> Interface
> + ApplicationInfo
>
> First off I think we can be ruthless and get rid of deprecated stuff.
>
> Launcher doesn't care if application is fullscreen, and technically a surface
> is fullscreen, not an application. Please leave that out until I decide what
> to do there. Also screenshots are made available by an image loader, with URI
> based on the appId - so that 'screenshot' API is going away
>
> So I'd propose simplifying this interface to include only those things we both
> need to share: appId, name, comment, icon, stage, state, focused.
Done.
>
> Next I think these properties should be read only. I expect to implement this
> interface by adding a constructor which takes app_id and then sets these
> properties from the correct desktop file. I don't see these needing to be set
> by shell. But if the desktop file changes, want to notify shell of those
> property changes.
Done.
> /usr/share/ icons/whatever. png or gicon:/ //network- enabled, if so I'd
> Q_PROPERTY(QString icon READ icon WRITE setIcon NOTIFY iconChanged)
> QUrl better? Will this will return things like
> file://
> like to use QUrl.
Done.
>
> States enum will also need "Suspended", "Stopped" for process management
> (Stopped means process killed, but its state was written to disk, so can be
> respawned and resume itself). Maybe also desktop-y things like "Wants
> Attention" ?
Added Suspended and Stopped. I don't think "Wants Attention" or the like belongs in here. Just because an app wants attention it is still one of the other states (e.g. running). I'd probably even create a separate boolean property for "Wants attention".
> ModelInterface ModelInterface was useful was for when we had 2
> + ApplicationList
>
> The only reason ApplicationList
> separate lists for main stage and side stage applications. But we agreed it is
> best to combine these into one master list. So is it worth having this class
> at all, we could instead making the ApplicationManager class an
> QAbstractListModel?
Done. This matches the Launcher api now very closely :)
>
> Pet peeve: QAbstractListModel doesn't have a "count" property, unlike
> javascript models. It would be nice to add it :)
added.
> gerInterface QString desktopFile, ExecFlags flags, QStringList
>
> + ApplicationMana
>
> + Application* startProcess(
> arguments)
> your correct in your comment that this needs to change a lot. Yes it should
> use appId. Flags should go away too. Thus can remove that enum.
done
> pplication( StageHint stageHint); pplication( )
> + void unfocusCurrentA
> I think this best replaced with unfocusCurrentA
done
> dApplicationCha nged(); dApplicationCha nged(); ionChanged( ) signal
>
> +Q_SIGNALS:
> 415 + // TODO: needed?
> 416 + void mainStageFocuse
> 417 + void sideStageFocuse
>
> Can combine these into one focusedApplicat
done.
> FavoriteApplica tion favoriteApplica tion)
> 418 + void focusRequested(
> I believe upstart will handle this, so shell won't need to care. Can leave it
> out completely.
done.