Created simple gui for uploading a song and implemented the functionality. #1 and #2

This commit is contained in:
amazing-username
2019-03-23 21:17:24 -04:00
parent 99e35217eb
commit e81b4ecdb1
7 changed files with 90 additions and 37 deletions
+1
View File
@@ -51,6 +51,7 @@ set(SOURCES
set(HEADERS set(HEADERS
src/Managers/FileManager.h src/Managers/FileManager.h
src/Models/Song.h src/Models/Song.h
src/Models/UploadForm.h
src/Syncers/Download.h src/Syncers/Download.h
src/Syncers/Upload.h src/Syncers/Upload.h
src/UI/CommonWindow.h src/UI/CommonWindow.h
+16
View File
@@ -0,0 +1,16 @@
#ifndef UPLOADFORM_H_
#define UPLOADFORM_H_
#include<string>
namespace Models
{
struct UploadForm
{
std::string url;
std::string filePath;
};
}
#endif
+10 -6
View File
@@ -12,6 +12,9 @@ using std::string;
using json = nlohmann::json; using json = nlohmann::json;
using Managers::FileManager;
using Models::UploadForm;
using namespace cpr; using namespace cpr;
namespace Syncers namespace Syncers
@@ -20,22 +23,23 @@ namespace Syncers
Upload::Upload(string filePath) Upload::Upload(string filePath)
{ {
this->songPath = filePath; this->songPath = filePath;
this->fMgr = Managers::FileManager(songPath); this->fMgr = FileManager(songPath);
}
Upload::Upload(UploadForm formData)
{
this->url = formData.url;
this->songPath = formData.filePath;
} }
void Upload::uploadSong() void Upload::uploadSong()
{ {
configureSongDemo();
string url = apiUrl + ":" + std::to_string(port) + apiEndPoint;
try try
{ {
auto r = cpr::Post(cpr::Url{url}, auto r = cpr::Post(cpr::Url{url},
cpr::Multipart{{"key", "small value"}, cpr::Multipart{{"key", "small value"},
{"file", cpr::File{songPath}}}); {"file", cpr::File{songPath}}});
cout << r.text << std::endl; cout << r.status_code<< std::endl;
cout<<"Success"<<endl; cout<<"Success"<<endl;
} }
+3
View File
@@ -7,6 +7,7 @@
#include"Managers/FileManager.h" #include"Managers/FileManager.h"
#include"Models/Song.h" #include"Models/Song.h"
#include"Models/UploadForm.h"
namespace Syncers namespace Syncers
@@ -16,6 +17,7 @@ namespace Syncers
public: public:
Upload(); Upload();
Upload(std::string); Upload(std::string);
Upload(Models::UploadForm);
void uploadSong(); void uploadSong();
@@ -25,6 +27,7 @@ namespace Syncers
std::string apiUrl{"http://192.168.1.3"}; std::string apiUrl{"http://192.168.1.3"};
std::string apiEndPoint{"/api/song/data"}; std::string apiEndPoint{"/api/song/data"};
std::string songPath; std::string songPath;
std::string url;
int port{9349}; int port{9349};
void configureSongDemo(); void configureSongDemo();
+2 -2
View File
@@ -20,8 +20,8 @@ protected:
std::unique_ptr<QComboBox> selectionBoxQt; std::unique_ptr<QComboBox> selectionBoxQt;
std::unique_ptr<QPushButton> actionButtonQt; std::unique_ptr<QPushButton> actionButtonQt;
std::unique_ptr<QVBoxLayout> mainLayoutQt; std::unique_ptr<QVBoxLayout> mainLayoutQt;
std::unique_ptr<QHBoxLayout> subLayoutOneQt; std::unique_ptr<QVBoxLayout> subLayoutOneQt;
std::unique_ptr<QHBoxLayout> subLayoutTwoQt; std::unique_ptr<QVBoxLayout> subLayoutTwoQt;
int windowHeight, windowWidth; int windowHeight, windowWidth;
}; };
#endif #endif
+51 -25
View File
@@ -1,7 +1,19 @@
#include"MainWindow.h" #include"MainWindow.h"
#include<iostream>
#include<string>
#include"Models/UploadForm.h"
#include"Syncers/Upload.h"
using std::cout;
using std::endl;
using std::string;
using std::unique_ptr; using std::unique_ptr;
using Models::UploadForm;
using Syncers::Upload;
namespace UI namespace UI
{ {
MainWindow::MainWindow() MainWindow::MainWindow()
@@ -16,11 +28,20 @@ namespace UI
} }
void MainWindow::configureUploadSection() void MainWindow::configureUploadSection()
{ {
uploadSongQt = unique_ptr<QPushButton>{new QPushButton(tr("Upload"))};
urlQt = unique_ptr<QTextEdit>{new QTextEdit()};
sourceFilePathQt = unique_ptr<QTextEdit>{new QTextEdit()};
subLayoutOneQt = unique_ptr<QVBoxLayout>{new QVBoxLayout};
subLayoutOneQt.get()->addWidget(urlQt.get());
subLayoutOneQt.get()->addWidget(sourceFilePathQt.get());
subLayoutOneQt.get()->addWidget(uploadSongQt.get());
mainLayoutQt.get()->addLayout(subLayoutOneQt.get());
} }
void MainWindow::configureWindowDimensions() void MainWindow::configureWindowDimensions()
{ {
windowWidth = 600; windowWidth = 400;
windowHeight = 600; windowHeight = 400;
} }
void MainWindow::configureWindowProperties() void MainWindow::configureWindowProperties()
{ {
@@ -30,7 +51,7 @@ namespace UI
} }
void MainWindow::connections() void MainWindow::connections()
{ {
QObject::connect(uploadSongQt.get(), SIGNAL(clicked()), this, SLOT(uploadSong()));
} }
void MainWindow::createMenus() void MainWindow::createMenus()
{ {
@@ -41,11 +62,6 @@ namespace UI
closeApplicationQt.get()->setText("Exit Application"); closeApplicationQt.get()->setText("Exit Application");
/** /**
keyEdit = unique_ptr<QAction>{new QAction(new QObject(nullptr))};
keyEdit.get()->setText("Key Management");
passwordManage = unique_ptr<QAction>{new QAction{new QObject{nullptr}}};
passwordManage.get()->setText("PasswordManagement");
fileMenu.get()->addAction(closeApplication.get()); fileMenu.get()->addAction(closeApplication.get());
editMenu.get()->addAction(keyEdit.get()); editMenu.get()->addAction(keyEdit.get());
editMenu.get()->addAction(passwordManage.get()); editMenu.get()->addAction(passwordManage.get());
@@ -55,30 +71,40 @@ namespace UI
void MainWindow::setupMainWindow() void MainWindow::setupMainWindow()
{ {
configureWindowDimensions(); configureWindowDimensions();
actionButtonQt = unique_ptr<QPushButton>{new QPushButton(tr("upload"))}; mainLayoutQt = unique_ptr<QVBoxLayout>{new QVBoxLayout};
selectionBoxQt = unique_ptr<QComboBox>{new QComboBox{}};
buttonLayoutQt = unique_ptr<QVBoxLayout>{new QVBoxLayout}; configureUploadSection();
buttonWidgetQt = unique_ptr<QWidget>{new QWidget};
buttonDockWidgetQt = unique_ptr<QDockWidget>{new QDockWidget};
buttonDockWidgetQt.get()->setWindowTitle(tr("Music Manager"));
buttonLayoutQt.get()->addWidget(selectionBoxQt.get());
buttonLayoutQt.get()->addWidget(actionButtonQt.get());
buttonWidgetQt.get()->setLayout(buttonLayoutQt.get());
buttonDockWidgetQt.get()->setWidget(buttonWidgetQt.get());
buttonDockWidgetQt.get()->setFeatures(QDockWidget::NoDockWidgetFeatures);
setCentralWidget(buttonDockWidgetQt.get());
cryptionAreaQt = unique_ptr<QDockWidget>{new QDockWidget(tr("Cryption"))}; mainWidgetQt = unique_ptr<QWidget>{new QWidget};
cryptionAreaQt.get()->setFeatures(QDockWidget::NoDockWidgetFeatures); mainWidgetQt.get()->setLayout(mainLayoutQt.get());
addDockWidget(Qt::LeftDockWidgetArea, cryptionAreaQt.get());
MainDockWidgetQt = unique_ptr<QDockWidget>{new QDockWidget};
MainDockWidgetQt.get()->setWindowTitle(tr("Music Manager"));
MainDockWidgetQt.get()->setWidget(mainWidgetQt.get());
MainDockWidgetQt.get()->setFeatures(QDockWidget::NoDockWidgetFeatures);
setCentralWidget(MainDockWidgetQt.get());
createMenus(); createMenus();
configureWindowProperties(); configureWindowProperties();
actionButtonQt.get()->setEnabled(false);
connections(); connections();
} }
void MainWindow::uploadSong()
{
uploadSongQt->setEnabled(false);
string url = urlQt->toPlainText().toUtf8().constData();
string filePath = sourceFilePathQt->toPlainText().toUtf8().constData();
cout<<"URL endpoint: "<<url<<endl;
cout<<"Music file path: "<<filePath<<endl;
UploadForm formData{url, filePath};
Upload upld{formData};
upld.uploadSong();
uploadSongQt->setEnabled(true);
}
} }
+7 -4
View File
@@ -11,6 +11,7 @@
#include<QMenu> #include<QMenu>
#include<QMenuBar> #include<QMenuBar>
#include<QMainWindow> #include<QMainWindow>
#include<QPushButton>
#include<QTextEdit> #include<QTextEdit>
#include<QWidget> #include<QWidget>
@@ -33,13 +34,14 @@ namespace UI
void createMenus(); void createMenus();
void setupMainWindow(); void setupMainWindow();
std::unique_ptr<QVBoxLayout> buttonLayoutQt;
std::unique_ptr<QWidget> buttonWidgetQt; std::unique_ptr<QWidget> mainWidgetQt;
std::unique_ptr<QDockWidget> buttonDockWidgetQt; std::unique_ptr<QDockWidget> MainDockWidgetQt;
std::unique_ptr<QDockWidget> cryptionAreaQt;
std::unique_ptr<QPushButton> uploadSongQt;
std::unique_ptr<QTextEdit> urlQt;
std::unique_ptr<QTextEdit> sourceFilePathQt; std::unique_ptr<QTextEdit> sourceFilePathQt;
std::unique_ptr<QMenu> fileMenuQt; std::unique_ptr<QMenu> fileMenuQt;
@@ -47,6 +49,7 @@ namespace UI
std::unique_ptr<QAction> closeApplicationQt; std::unique_ptr<QAction> closeApplicationQt;
signals: signals:
private slots: private slots:
void uploadSong();
}; };
} }