import social_views
import user_views
-redef class App
- redef fun on_create
- do
- if debug then print "App::on_create"
-
- # Create the main window
- show_home
- super
- end
-
- # Show the home/main windows
- fun show_home
- do
- var window = new HomeWindow
- window.refresh
- push_window window
- end
+redef fun root_window do return new HomeWindow
+redef class App
redef fun on_log_in
do
super
# Cut-point for the iOS adaptation
var layout_user = new VerticalLayout(parent=layout)
- private var layout_login = new HorizontalLayout(parent=layout_user)
- private var lbl_login_status = new Label(parent=layout_login, text="Welcome".t, size=1.5)
- private var but_login = new Button(parent=layout_login, text="Login or signup".t)
- private var but_preferences = new Button(parent=layout_login, text="Preferences".t)
+ private var layout_login = new SectionHeader(parent=layout_user)
+ private var but_preferences: nullable Button = null
+ private var but_login: nullable Button = null
private var layout_beers = new VerticalLayout(parent=layout)
- var layout_beers_title = new HorizontalLayout(parent=layout_beers)
+ var layout_beers_title = new SectionHeader(parent=layout_beers)
var title_beers = new SectionTitle(parent=layout_beers_title, text="Beer Menu".t, size=1.5)
private var beer_button = new Button(parent=layout_beers_title, text="View all".t)
private var beer_list = new VerticalLayout(parent=layout_beers)
private var beer_temp_lbl = new Label(parent=beer_list, text="Loading...".t)
private var layout_social = new VerticalLayout(parent=layout)
- private var social_header = new HorizontalLayout(parent=layout_social)
+ private var social_header = new SectionHeader(parent=layout_social)
private var social_title = new SectionTitle(parent=social_header, text="Friends".t, size=1.5)
private var social_button = new Button(parent=social_header, text="Manage".t)
private var social_list = new VerticalLayout(parent=layout_social)
private var social_temp_lbl = new Label(parent=social_list, text="Loading...".t)
private var layout_news = new VerticalLayout(parent=layout)
- private var news_header = new HorizontalLayout(parent=layout_news)
+ var news_header = new SectionHeader(parent=layout_news)
private var news_title = new SectionTitle(parent=news_header, text="Events".t, size=1.5)
#private var news_button = new Button(parent=news_header, text="Open website") # TODO
- private var news_label = new Label(parent=layout_news, text="Bière en cask le jeudi!")
-
- init
- do
- for c in [but_login, but_preferences, beer_button, social_button] do
- c.observers.add self
- end
- end
+ private var news_cask = new EventView(parent=layout_news, text="Bière en cask le jeudi!")
redef fun on_resume do refresh
layout_login.clear
if app.user != null then
# Logged in
- lbl_login_status.parent = layout_login
- but_preferences.parent = layout_login
+ var lbl_login_status = new SectionTitle(parent=layout_login, text="Welcome".t, size=1.5)
lbl_login_status.set_welcome
else
- but_login.parent = layout_login
- but_preferences.parent = layout_login
+ self.but_login = new Button(parent=layout_login, text="Login or signup".t)
end
+ self.but_preferences = new Button(parent=layout_login, text="Preferences".t)
# Fill beers
(new ListDiffAction(self, "rest/since?token={app.token}")).start
(new HomeListPeopleAction(self, "rest/friends?token={app.token}")).start
# Check if token is still valid
- (new CheckTokenAction(self, "rest/check_token?token={app.token}")).start
+ if app.token != "none" then (new CheckTokenAction(self, "rest/check_token?token={app.token}")).start
end
redef fun on_event(event)
end
end
-# `Label` used in section headers
-class SectionTitle super Label end
+private class EventView
+ super VerticalLayout
+ super ItemView
+
+ var text: Text
+
+ var lbl = new Label(parent=self, text=text) is lazy
+ init do lbl
+end
# Async request to update the beer list on the home screen
class ListDiffAction
redef fun on_load(res, status) do intercept_error(res)
end
+redef class BenitluxHttpRequest
+ redef fun intercept_error(res)
+ do
+ var r = super
+ if res isa BenitluxTokenError then
+ var window = app.window
+ if window isa HomeWindow then window.refresh
+ end
+ return r
+ end
+end
+
# Today's date as a `String`
fun today: String
do