From a60e2a0c3433060c9c1beb0b5cedebe7825d53c1 Mon Sep 17 00:00:00 2001 From: Kevin Whitaker <eyecreate@gmail.com> Date: Sat, 28 Jan 2017 00:56:22 -0500 Subject: [PATCH] Make GroovePlayer a singleton to avoid being created for each browser. Add login UI component to eventually hold landing screen. Actually start server with initial interface. --- CMakeLists.txt | 2 +- src/GroovePlayer.cpp | 5 +++++ src/GroovePlayer.h | 9 +++++++++ src/WebInterface.cpp | 22 ++++++++++++++++++++++ src/WebInterface.h | 7 +++++++ src/main.cpp | 26 ++++++++++++++++++++++++-- 6 files changed, 68 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c755f35..5ee701b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") find_package(Wt REQUIRED) find_package(Groove REQUIRED) -add_executable(arbitrateor src/main.cpp src/WebInterface.cpp src/GroovePlayer.cpp) +add_executable(arbitrateor src/main.cpp src/WebInterface.cpp src/GroovePlayer.cpp src/ui/LoginInterface.cpp) target_link_libraries(arbitrateor ${Wt_LIBRARIES} ${GROOVE_LIBRARY}) install(TARGETS arbitrateor RUNTIME DESTINATION bin) diff --git a/src/GroovePlayer.cpp b/src/GroovePlayer.cpp index aef1540..3f20b1d 100644 --- a/src/GroovePlayer.cpp +++ b/src/GroovePlayer.cpp @@ -18,3 +18,8 @@ */ #include "GroovePlayer.h" + +GroovePlayer::GroovePlayer() +{ +} + diff --git a/src/GroovePlayer.h b/src/GroovePlayer.h index 6150665..35e1233 100644 --- a/src/GroovePlayer.h +++ b/src/GroovePlayer.h @@ -22,6 +22,15 @@ class GroovePlayer { +public: + static GroovePlayer* getInstance() { + static GroovePlayer instance; + return &instance; + }; + GroovePlayer(GroovePlayer const&) = delete; + void operator=(GroovePlayer const&) = delete; +private: + GroovePlayer(); }; #endif // GROOVEPLAYER_H diff --git a/src/WebInterface.cpp b/src/WebInterface.cpp index 68b2f02..896ea69 100644 --- a/src/WebInterface.cpp +++ b/src/WebInterface.cpp @@ -18,3 +18,25 @@ */ #include "WebInterface.h" +#include "ui/LoginInterface.h" +#include <Wt/WText> + +struct WebInterface::internal +{ + LoginInterface* loginUI; +}; + +WebInterface::WebInterface(const Wt::WEnvironment& env) : Wt::WApplication(env) +{ + priv_int = new internal; + setTitle("Arbitrateor - Audio Jukebox"); + priv_int->loginUI = new LoginInterface(this); + root()->addWidget(priv_int->loginUI); +} + +void WebInterface::loginCompleted() +{ + //Login completed, now bring up main inteface. + root()->removeWidget(priv_int->loginUI); + root()->addWidget(new Wt::WText("you did it")); +} diff --git a/src/WebInterface.h b/src/WebInterface.h index 3a157e1..012b9d4 100644 --- a/src/WebInterface.h +++ b/src/WebInterface.h @@ -21,9 +21,16 @@ #define WEBINTERFACE_H #include <Wt/WApplication> +#include "GroovePlayer.h" class WebInterface : public Wt::WApplication { +public: + WebInterface(const Wt::WEnvironment& env); + void loginCompleted(); +private: + struct internal; + internal* priv_int = 0; }; #endif // WEBINTERFACE_H diff --git a/src/main.cpp b/src/main.cpp index 4a1cab3..2f6bf9d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,8 +1,30 @@ #include <iostream> #include "WebInterface.h" +#include <Wt/WServer> +#include <Wt/WConfig.h> +#include "GroovePlayer.h" + +Wt::WApplication* createApplication(const Wt::WEnvironment& env) +{ + return new WebInterface(env); +} int main ( int argc, char** argv ) { - std::cout << "Hello, world!" << std::endl; - return 0; + try { + Wt::WServer server(argv[0]); + server.setServerConfiguration(argc, argv, WTHTTP_CONFIGURATION); + server.addEntryPoint(Wt::Application, createApplication); + if(server.start()) + { + int sig = Wt::WServer::waitForShutdown(argv[0]); + server.stop(); + } + return 0; + } + catch (Wt::WServer::Exception& e) + { + std::cerr << e.what() << "\n"; + return 1; + } } -- GitLab