@@ -24,6 +24,7 @@ import QMenuModel 0.1
24import Utils 0.1 as Utils
24import Utils 0.1 as Utils
25import Ubuntu.Components.ListItems 0.1 as ListItems
25import Ubuntu.Components.ListItems 0.1 as ListItems
26import Ubuntu.Components 1.1
26import Ubuntu.Components 1.1
27+import "../../Greeter"
29 id: menuFactory
30 id: menuFactory
@@ -63,6 +64,14 @@ Item {
64 "indicator-messages" : {
65 "indicator-messages" : {
65 "com.canonical.indicator.button" : messagesButtonMenu
66 "com.canonical.indicator.button" : messagesButtonMenu
68+ "indicator-datetime" : {
69+ "com.canonical.indicator.calendar": calendarMenu,
70+ "com.canonical.indicator.location": timezoneMenu
72+ "indicator-session" : {
73+ "indicator.user-menu-item": userMenuItem,
74+ "indicator.guest-menu-item": userMenuItem
@@ -73,6 +82,8 @@ Item {
73 return defaultValue;
82 return defaultValue;
85+ LightDM {id: lightDM} // Provide backend access
76 Component {
87 Component {
77 id: separatorMenu;
88 id: separatorMenu;
@@ -422,6 +433,78 @@ Item {
439+ Menus.UserSessionMenu {
440+ objectName: "userSessionMenu"
441+ highlightWhenPressed: false
443+ property QtObject menuData: null
444+ property var menuModel: menuFactory.menuModel
445+ property int menuIndex: -1
446+ //property var extendedData: menuData && menuData.ext || undefined
448+ name: menuData && menuData.label || ""
449+ iconSource: menuData && menuData.icon || ""
450+ // active: true // TODO hook up with lightdm
453+ menuModel.activate(menuIndex);
461+ Menus.CalendarMenu {
462+ objectName: "calendarMenu"
463+ highlightWhenPressed: false
470+ Menus.TimeZoneMenu {
472+ objectName: "timezoneMenu"
474+ property QtObject menuData: null
475+ property var menuModel: menuFactory.menuModel
476+ property int menuIndex: -1
477+ property var extendedData: menuData && menuData.ext || undefined
478+ readonly property var tz: getExtendedProperty(extendedData, "xCanonicalTimezone", "UTC")
479+ property var tzFormatter: Utils.TimeFormatter {}
480+ property var updateTimer: Timer {
483+ onTriggered: tzMenuItem.time = tzMenuItem.tzFormatter.currentTimeInTimezone(tzMenuItem.tz)
486+ city: menuData && menuData.label || ""
487+ time: tzFormatter.currentTimeInTimezone(tz)
488+ enabled: menuData && menuData.sensitive || false
489+ highlightWhenPressed: false
491+ onMenuModelChanged: {
494+ onMenuIndexChanged: {
498+ menuModel.activate(menuIndex);
501+ function loadAttributes() {
502+ if (!menuModel || menuIndex == -1) return;
503+ menuModel.loadExtendedAttributes(menuIndex, {'x-canonical-timezone': 'string'});
425 Component {
508 Component {
426 id: wifiSection;
509 id: wifiSection;