diff --git a/CMakeLists.txt b/CMakeLists.txt index 10a619df234fe045bb3e2976499da3be8bc6c8fc..fec0b324e8853d66b276ef75817f220389a19fdf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ find_package(Wt REQUIRED) find_package(Groove REQUIRED) find_package(TagLib REQUIRED) -add_executable(arbitrateor src/main.cpp src/WebInterface.cpp src/GroovePlayer.cpp src/ui/LoginInterface.cpp src/ui/PlayerInterface.cpp src/ui/TrackDetails.cpp) +add_executable(arbitrateor src/main.cpp src/WebInterface.cpp src/GroovePlayer.cpp src/ui/LoginInterface.cpp src/ui/PlayerInterface.cpp src/ui/TrackDetails.cpp src/ui/RequestInterface.cpp) target_link_libraries(arbitrateor ${Wt_LIBRARIES} ${GROOVE_LIBRARY} ${GROOVE_FINGERPRINT_LIBRARY} ${GROOVE_PLAYER_LIBRARY} ${TAGLIB_LIBRARY} pthread boost_system stdc++fs) #TODO get threading links based on platform. Remove gcc experimental fs when official c++17 exists. install(TARGETS arbitrateor RUNTIME DESTINATION bin) diff --git a/src/ui/PlayerInterface.cpp b/src/ui/PlayerInterface.cpp index be96cde3b71d1f96141215becaff487f77262fb3..8f18f99d5fd19d718501543bf4a9e0153635e412 100644 --- a/src/ui/PlayerInterface.cpp +++ b/src/ui/PlayerInterface.cpp @@ -66,6 +66,11 @@ PlayerInterface::PlayerInterface(WebInterface* app) skipControls->addWidget(skipRequest); skipControls->addWidget(skipDeny); + mainDisplay = new Wt::WTabWidget(); + + voteMetaContainer = new Wt::WContainerWidget(); + voteMetaLayout = new Wt::WVBoxLayout(); + voteMetaContainer->setLayout(voteMetaLayout); voteControlContainer = new Wt::WContainerWidget(); voteControlContainer->setMaximumSize(Wt::WLength(75,Wt::WLength::Percentage),Wt::WLength::Auto); voteControlContainer->decorationStyle().setBackgroundColor(Wt::WColor("lightsteelblue")); @@ -117,10 +122,12 @@ PlayerInterface::PlayerInterface(WebInterface* app) interfaceLayout->addWidget(playControlWidget); interfaceLayout->addWidget(currentTrackProgress); - interfaceLayout->addWidget(voteControlContainer,0,Wt::AlignmentFlag::AlignCenter); + interfaceLayout->addWidget(mainDisplay); + mainDisplay->addTab(voteMetaContainer,"Up Next",Wt::WTabWidget::PreLoading); playControlWidget->addStyleClass("panel"); playControlWidget->addStyleClass("panel-default"); playControlWidget->decorationStyle().setBackgroundColor(Wt::WColor("gainsboro")); + voteMetaLayout->addWidget(voteControlContainer,0,Wt::AlignmentFlag::AlignCenter); playControlLayout->addWidget(playpause,0,Wt::AlignmentFlag::AlignLeft | Wt::AlignmentFlag::AlignMiddle); playControlLayout->addWidget(currentTrackDetails,0,Wt::AlignmentFlag::AlignCenter | Wt::AlignmentFlag::AlignMiddle); playControlLayout->addWidget(skipControls,0,Wt::AlignmentFlag::AlignRight | Wt::AlignmentFlag::AlignMiddle); diff --git a/src/ui/PlayerInterface.h b/src/ui/PlayerInterface.h index 240d96157a4ddef38d37888263d7dd5294eadbdf..ab9e38685f1e572d11c9e2178a794e81d7e2e235 100644 --- a/src/ui/PlayerInterface.h +++ b/src/ui/PlayerInterface.h @@ -21,6 +21,7 @@ #define PLAYERINTERFACE_H #include +#include #include #include #include "../WebInterface.h" @@ -52,7 +53,12 @@ public: Wt::WPushButton* skipRequest; Wt::WPushButton* skipDeny; + //TabView + Wt::WTabWidget* mainDisplay; + //Vote Controls + Wt::WContainerWidget* voteMetaContainer; + Wt::WVBoxLayout* voteMetaLayout; Wt::WContainerWidget* voteControlContainer; Wt::WContainerWidget* voteTracksContainer; Wt::WText* voteHeader; diff --git a/src/ui/RequestInterface.cpp b/src/ui/RequestInterface.cpp new file mode 100644 index 0000000000000000000000000000000000000000..32638852a324bf047b881416b71a878c92afafd1 --- /dev/null +++ b/src/ui/RequestInterface.cpp @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2017 Kevin Whitaker + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include "RequestInterface.h" diff --git a/src/ui/RequestInterface.h b/src/ui/RequestInterface.h new file mode 100644 index 0000000000000000000000000000000000000000..8febc1b74701358c52e6f9c0491d883540358e2b --- /dev/null +++ b/src/ui/RequestInterface.h @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2017 Kevin Whitaker + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#ifndef REQUESTINTERFACE_H +#define REQUESTINTERFACE_H + +#include +#include "../WebInterface.h" + +class RequestInterface : public Wt::WContainerWidget +{ +public: + RequestInterface(WebInterface* app); + WebInterface* app; +}; + +#endif // REQUESTINTERFACE_H