From b6e91d0c180435c7a348c4545e37607c368f4878 Mon Sep 17 00:00:00 2001 From: amazing-username Date: Sun, 12 May 2019 13:53:38 -0400 Subject: [PATCH] Changed central widget to be a stacked widget that will contain multiple widget which can be travered through a combobox --- CMakeLists.txt | 3 ++ src/UI/MainWindow.cpp | 66 ++++++++++++++++++++++++++++------- src/UI/MainWindow.h | 20 ++++++++--- src/Utilities/Conversions.cpp | 48 +++++++++++++++++++++++++ src/Utilities/Conversions.h | 30 ++++++++++++++++ 5 files changed, 150 insertions(+), 17 deletions(-) create mode 100644 src/Utilities/Conversions.cpp create mode 100644 src/Utilities/Conversions.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cf6d29..afea991 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,6 +38,7 @@ set(CMAKE_AUTOUIC ON) find_package(Qt5Widgets CONFIG REQUIRED) +find_package(nlohmann_json 3.6.1 REQUIRED) add_subdirectory(cpr) @@ -48,6 +49,7 @@ set(SOURCES src/Syncers/Upload.cpp src/UI/MainWindow.cpp src/UI/AboutWindow.cpp + src/Utilities/Conversions.cpp ) set(HEADERS src/Managers/FileManager.h @@ -58,6 +60,7 @@ set(HEADERS src/UI/CommonWindow.h src/UI/MainWindow.h src/UI/AboutWindow.h + src/Utilities/Conversions.h ) add_executable(icd ${SOURCES} ${HEADERS}) diff --git a/src/UI/MainWindow.cpp b/src/UI/MainWindow.cpp index 7d260b4..a7f4bdc 100644 --- a/src/UI/MainWindow.cpp +++ b/src/UI/MainWindow.cpp @@ -5,6 +5,7 @@ #include"Models/UploadForm.h" #include"Syncers/Upload.h" +#include"Utilities/Conversions.h" using std::cout; using std::endl; @@ -32,21 +33,21 @@ namespace UI urlQt = unique_ptr{new QTextEdit()}; sourceFilePathQt = unique_ptr{new QTextEdit()}; - urlLabel = unique_ptr{new QLabel(tr("URL"))}; - songPath = unique_ptr{new QLabel(tr("Song Path"))}; + urlLabel = unique_ptr{new QLabel(tr("URL"))}; + songPath = unique_ptr{new QLabel(tr("Song Path"))}; - urlPortion = unique_ptr{new QHBoxLayout}; - songPathPortion = unique_ptr{new QHBoxLayout}; + urlPortion = unique_ptr{new QHBoxLayout}; + songPathPortion = unique_ptr{new QHBoxLayout}; - urlPortion.get()->addWidget(urlLabel.get()); - urlPortion.get()->addWidget(urlQt.get()); + urlPortion.get()->addWidget(urlLabel.get()); + urlPortion.get()->addWidget(urlQt.get()); - songPathPortion->addWidget(songPath.get()); - songPathPortion->addWidget(sourceFilePathQt.get()); + songPathPortion->addWidget(songPath.get()); + songPathPortion->addWidget(sourceFilePathQt.get()); subLayoutOneQt = unique_ptr{new QVBoxLayout}; - subLayoutOneQt.get()->addLayout(urlPortion.get()); - subLayoutOneQt->addLayout(songPathPortion.get()); + subLayoutOneQt.get()->addLayout(urlPortion.get()); + subLayoutOneQt->addLayout(songPathPortion.get()); mainLayoutQt.get()->addLayout(subLayoutOneQt.get()); } void MainWindow::configureWindowDimensions() @@ -67,6 +68,8 @@ namespace UI SLOT(exitApplication())); QObject::connect(aboutApplicationQt.get(), SIGNAL(triggered()), this, SLOT(displaySoftwareInformation())); + QObject::connect(windowComboBox.get(), SIGNAL(activated(int)), + this, SLOT(setCurrentIndex(int))); } void MainWindow::createMenus() { @@ -84,20 +87,42 @@ namespace UI helpMenuQt->addAction(aboutApplicationQt.get()); } + void MainWindow::setupMainWidget() + { + mainWidgetQt = unique_ptr{new QWidget}; + + windowComboBox = unique_ptr{new QComboBox}; + setupWindowLists(); + + + stackLayout = unique_ptr{new QVBoxLayout}; + stackLayout->addWidget(windowComboBox.get()); + + uploadSongWidgetQt = unique_ptr{new QWidget}; + uploadSongWidgetQt->setLayout(mainLayoutQt.get()); + + stackLayout->addWidget(uploadSongWidgetQt.get()); + + mainWidgetQt->setLayout(stackLayout.get()); + } void MainWindow::setupMainWindow() { configureWindowDimensions(); + mainLayoutQt = unique_ptr{new QVBoxLayout}; + widgetStack = unique_ptr{new QStackedWidget}; configureUploadSection(); - mainWidgetQt = unique_ptr{new QWidget}; - mainWidgetQt.get()->setLayout(mainLayoutQt.get()); + setupMainWidget(); + + widgetStack->addWidget(mainWidgetQt.get()); MainDockWidgetQt = unique_ptr{new QDockWidget}; MainDockWidgetQt.get()->setWindowTitle(tr("Music Manager")); - MainDockWidgetQt.get()->setWidget(mainWidgetQt.get()); + MainDockWidgetQt->setWidget(widgetStack.get()); MainDockWidgetQt.get()->setFeatures(QDockWidget::NoDockWidgetFeatures); + setCentralWidget(MainDockWidgetQt.get()); createMenus(); @@ -106,6 +131,13 @@ namespace UI connections(); } + void MainWindow::setupWindowLists() + { + windowComboBox->addItem(tr("Upload song")); + windowComboBox->addItem(tr("Download song")); + windowComboBox->addItem(tr("Display all songs")); + windowComboBox->addItem(tr("Display songs")); + } void MainWindow::exitApplication() @@ -116,6 +148,14 @@ namespace UI { aboutWindow->show(); } + void MainWindow::setCurrentIndex(int index) + { + cout<<"index "<itemText(index); + auto cnvert = Utilities::Conversions(qText); + auto convertedStr = cnvert.convertQStringToString(); + cout<<"item text"<setEnabled(false); diff --git a/src/UI/MainWindow.h b/src/UI/MainWindow.h index 8ab576f..2ea41db 100644 --- a/src/UI/MainWindow.h +++ b/src/UI/MainWindow.h @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -12,6 +13,7 @@ #include #include #include +#include #include #include @@ -33,23 +35,32 @@ namespace UI void configureWindowProperties(); void connections(); void createMenus(); + void setupMainWidget(); void setupMainWindow(); + void setupWindowLists(); - std::unique_ptr urlPortion; - std::unique_ptr songPathPortion; + std::unique_ptr widgetStack; + + std::unique_ptr stackLayout; + + std::unique_ptr urlPortion; + std::unique_ptr songPathPortion; std::unique_ptr mainWidgetQt; + std::unique_ptr uploadSongWidgetQt; std::unique_ptr MainDockWidgetQt; + std::unique_ptr windowComboBox; + std::unique_ptr uploadSongQt; std::unique_ptr urlQt; std::unique_ptr sourceFilePathQt; - std::unique_ptr urlLabel; - std::unique_ptr songPath; + std::unique_ptr urlLabel; + std::unique_ptr songPath; std::unique_ptr fileMenuQt; std::unique_ptr editMenuQt; @@ -64,6 +75,7 @@ namespace UI void uploadSong(); void exitApplication(); void displaySoftwareInformation(); + void setCurrentIndex(int); }; } diff --git a/src/Utilities/Conversions.cpp b/src/Utilities/Conversions.cpp new file mode 100644 index 0000000..173f1a2 --- /dev/null +++ b/src/Utilities/Conversions.cpp @@ -0,0 +1,48 @@ +#include"Conversions.h" + +#include + +using std::string; +using std::unique_ptr; + +namespace Utilities +{ + Conversions::Conversions() + { + initializeValues(); + } + Conversions::Conversions(QString val) + { + // TODO: assign QString to unique pointer + // The line below is causing the build to fail + qStrVal = unique_ptr(std::copy(val)}; + } + Conversions::Conversions(QString* val) + { + qStrVal = unique_ptr{std::move(val)}; + } + + + void Conversions::initializeValues() + { + } + template + void Conversions::printValue(T val) + { + std::cout<<"going to print value"<toUtf8().constData(); + + printValue(val); + + return qStrVal->toUtf8().constData(); + } + string Conversions::convertQStringToString(QString* val) + { + return ""; + } +} diff --git a/src/Utilities/Conversions.h b/src/Utilities/Conversions.h new file mode 100644 index 0000000..5b9f36f --- /dev/null +++ b/src/Utilities/Conversions.h @@ -0,0 +1,30 @@ +#ifndef CONVERSIONS_H_ +#define CONVERSIONS_H_ + +#include +#include + +#include + +namespace Utilities +{ + class Conversions + { + public: + Conversions(); + Conversions(QString); + Conversions(QString*); + + void initializeValues(); + + template + void printValue(T); + + std::string convertQStringToString(); + std::string convertQStringToString(QString*); + private: + std::unique_ptr qStrVal; + }; +} + +#endif