From 8c4cece3b5d98a83f933ed47da7cdd370a23e7a0 Mon Sep 17 00:00:00 2001 From: Nick Bisby Date: Wed, 6 Mar 2019 21:14:52 -0600 Subject: [PATCH] Break out functions into their own files --- source/HelperUtils.brs | 12 ++++ source/Main.brs | 14 ---- source/ShowScenes.brs | 149 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 161 insertions(+), 14 deletions(-) create mode 100644 source/HelperUtils.brs create mode 100644 source/ShowScenes.brs diff --git a/source/HelperUtils.brs b/source/HelperUtils.brs new file mode 100644 index 00000000..bd50668f --- /dev/null +++ b/source/HelperUtils.brs @@ -0,0 +1,12 @@ +sub itemSelectedQ(msg) as boolean + ' "Q" stands for "Question mark" since itemSelected? wasn't acceptable + ' Probably needs a better name, but unique for now + return type(msg) = "roSGNodeEvent" and msg.getField() = "itemSelected" +end sub + +sub getMsgRowTarget(msg) as object + node = msg.getRoSGNode() + coords = node.rowItemSelected + target = node.content.getChild(coords[0]).getChild(coords[1]) + return target +end sub diff --git a/source/Main.brs b/source/Main.brs index 1a6bd2c3..d3ee91d2 100644 --- a/source/Main.brs +++ b/source/Main.brs @@ -24,17 +24,3 @@ sub Main() ShowLibrarySelect() end sub - - -sub itemSelectedQ(msg) as boolean - ' "Q" stands for "Question mark" since itemSelected? wasn't acceptable - ' Probably needs a better name, but unique for now - return type(msg) = "roSGNodeEvent" and msg.getField() = "itemSelected" -end sub - -sub getMsgRowTarget(msg) as object - node = msg.getRoSGNode() - coords = node.rowItemSelected - target = node.content.getChild(coords[0]).getChild(coords[1]) - return target -end sub diff --git a/source/ShowScenes.brs b/source/ShowScenes.brs new file mode 100644 index 00000000..4dc24f1e --- /dev/null +++ b/source/ShowScenes.brs @@ -0,0 +1,149 @@ +sub ShowServerSelect() + port = CreateObject("roMessagePort") + screen = CreateObject("roSGScreen") + screen.setMessagePort(port) + scene = screen.CreateScene("ConfigScene") + screen.show() + + scene.findNode("prompt").text = "Connect to Serviette" + + config = scene.findNode("configOptions") + items = [ + {"field": "server", "label": "Host", "type": "string"}, + {"field": "port", "label": "Port", "type": "string"} + ] + config.callfunc("setData", items) + + button = scene.findNode("submit") + button.observeField("buttonSelected", port) + + server_hostname = config.content.getChild(0) + server_port = config.content.getChild(1) + + while(true) + msg = wait(0, port) + if type(msg) = "roSGScreenEvent" and msg.isScreenClosed() + return + else if type(msg) = "roSGNodeEvent" + node = msg.getNode() + if node = "submit" + set_setting("server", server_hostname.value) + set_setting("port", server_port.value) + return + end if + end if + end while +end sub + +sub ShowSignInSelect() + port = CreateObject("roMessagePort") + screen = CreateObject("roSGScreen") + screen.setMessagePort(port) + scene = screen.CreateScene("ConfigScene") + screen.show() + + scene.findNode("prompt").text = "Sign In" + + config = scene.findNode("configOptions") + items = [ + {"field": "username", "label": "Username", "type": "string"}, + {"field": "password", "label": "Password", "type": "password"} + ] + config.callfunc("setData", items) + + button = scene.findNode("submit") + button.observeField("buttonSelected", port) + + config = scene.findNode("configOptions") + + username = config.content.getChild(0) + password = config.content.getChild(1) + + while(true) + msg = wait(0, port) + if type(msg) = "roSGScreenEvent" and msg.isScreenClosed() + return + else if type(msg) = "roSGNodeEvent" + node = msg.getNode() + if node = "submit" + ' Validate credentials + get_token(username.value, password.value) + if get_setting("active_user") <> invalid then return + print "Login attempt failed..." + end if + end if + end while +end sub + +sub ShowLibrarySelect() + port = CreateObject("roMessagePort") + screen = CreateObject("roSGScreen") + screen.setMessagePort(port) + scene = screen.CreateScene("Library") + + screen.show() + + library = scene.findNode("LibrarySelect") + libs = LibraryList() + library.libList = libs + + library.observeField("itemSelected", port) + + while(true) + msg = wait(0, port) + if type(msg) = "roSGScreenEvent" and msg.isScreenClosed() then + exit while + else if itemSelectedQ(msg) + target = getMsgRowTarget(msg) + if target.libraryType = "movies" + ShowMovieOptions(target.libraryID) + else + print "Library type is not yet implemented" + end if + end if + end while +end sub + +sub ShowMovieOptions(library_id) + port = CreateObject("roMessagePort") + screen = CreateObject("roSGScreen") + screen.setMessagePort(port) + scene = screen.CreateScene("Movies") + + screen.show() + + options = scene.findNode("MovieSelect") + options_list = ItemList(library_id) + options.movieData = options_list + + options.observeField("itemSelected", port) + + while true + msg = wait(0, port) + if type(msg) = "roSGScreenEvent" and msg.isScreenClosed() then + return + else if itemSelectedQ(msg) + target = getMsgRowTarget(msg) + showVideoPlayer(target.movieID) + end if + end while +end sub + +sub showVideoPlayer(id) + port = CreateObject("roMessagePort") + screen = CreateObject("roSGScreen") + screen.setMessagePort(port) + scene = screen.CreateScene("Scene") + + screen.show() + + VideoPlayer(scene, id) + + while true + msg = wait(0, port) + if type(msg) = "roSGScreenEvent" and msg.isScreenClosed() then + return + end if + end while + +end sub