Proposal for component/framework structure
Closed, ResolvedPublic

Description

Components:

Components are the highest-level building-blocks in Kube. Components are individually loadable, always contain a main.qml and have a purpose. Typical components could be:

  • Kube.Components.Main: The complete application
  • Kube.Components.Mail: The mail view only.
  • Kube.Components.Calendar: The calendar view only
  • Kube.Components.CalendarView: A calendar view (as in the monthview itself).
  • Kube.Components.MailView: View of an individual mail
  • Kube.Components.PersonView: View of an individual person.

Components can provide different versions for different formfactors (mechanism is yet to be defined though).

Components are loadable by external applications as well.

Framework:

The framework provides the building blocks to create the components.
It consists of QML files, C++ qml plugins and additional C++ code to support those plugins.

The framework is always imported as "Kube" in all qml code.

Things the framework provides:

  • Kube.Theme
  • Kube.Icon
  • Kube.Button
  • Kube.Maillist
  • Kube.Folderlist
  • Kube.Action
  • Kube.Notification

The framework doesn't contain additional structure because it is largely useless:

  • Differentiating between different domains (mail/calendar/...) is not overly useful as we want to move a model where we differentiate less between them, and we will inevitably run into situations where we have parts that fit into any of them.
  • A controls component could work, but doesn't provide any additional useful information. The buttons, icons, ... are by definition kube specific and Kube.Controls.Button doesn't add anything over Kube.Button (except more import statements)
  • Unless we have large parts of functionality that we only want to load conditionally we can just as well have everything in on blob.
cmollekopf updated the task description. (Show Details)

%s/KubeFramework/Kube/g
%s/KubeAccounts/Kube/g
%s/KubeComponents/Kube/g
%s/KubeTheme/Kube/g
%g/org.kube.framework.accounts/d
%g/org.kube.components.theme/d

cmollekopf moved this task from Backlog to 0.2 on the Kube board.Apr 5 2017, 2:32 PM
cmollekopf edited projects, added Kube (0.2); removed Kube.
cmollekopf lowered the priority of this task from Normal to Low.
cmollekopf closed this task as Resolved.Apr 5 2017, 2:34 PM
cmollekopf claimed this task.

I did all the moving around and we now have a single framework plugin. The one thing I did not yet do is move button etc to a controls subdirectory. I don't think it's necessary right now, but I'm open to follow up on that if that's wanted.