WUT_Computer_Science/EGUI/lab1/mainwindow.cpp

130 lines
3.5 KiB
C++
Raw Normal View History

#include "mainwindow.h" // Notepad class header file that was generated by the wizard
2022-04-03 21:23:02 +02:00
#include "ui_mainwindow.h"// UI header file that was generated by the uic tool
#include "login.h"
#include <QFileDialog>
#include <QMessageBox>
#include <iostream>
#include <QJsonObject>
#include <QJsonDocument>
#include <QTextStream>
2022-03-26 12:43:58 +01:00
MainWindow::MainWindow(QWidget *parent) // class definition, constructor
: QMainWindow(parent) // calls qmainwindow parent constructor we have,
// base class for the MainWindow class:
, ui(new Ui::MainWindow) // create ui class and assign to ui member
// creates the UI class instance and assigns it to the ui member:
2022-03-26 12:43:58 +01:00
{
ui->setupUi(this); // setup user interface
2022-03-26 12:43:58 +01:00
}
MainWindow::~MainWindow()
{
delete ui; // in the destructor, we delete the ui
}
2022-04-05 00:26:36 +02:00
QJsonObject MainWindow::readJsonFile(const QString title)
{
2022-04-05 00:26:36 +02:00
QFile file(title);
2022-04-03 21:23:02 +02:00
file.open( QIODevice::ReadOnly);
QByteArray bytes = file.readAll();
file.close();
QJsonDocument document = QJsonDocument::fromJson( bytes );
return document.object();
}
2022-04-05 00:26:36 +02:00
void MainWindow::saveJsonFile(QJsonObject &users, const QString name) const
2022-04-03 21:23:02 +02:00
{
2022-04-05 00:26:36 +02:00
QFile jsonFile(name);
QJsonDocument document;
2022-04-03 21:23:02 +02:00
document.setObject( users );
QByteArray bytes = document.toJson( QJsonDocument::Indented );
jsonFile.open( QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate );
QTextStream iStream( &jsonFile );
// iStream.setCodec( "utf-8" );
iStream << bytes;
jsonFile.close();
}
2022-04-03 21:23:02 +02:00
// You cannot create a user without an id
void MainWindow::thisIdIsEmpty() const
{
QMessageBox idEmpty;
idEmpty.setText("THIS ID IS EMPTY!");
idEmpty.exec();
}
// You cannot create a user with id similar to an existing one
void MainWindow::thisIdIsTaken() const
{
2022-04-03 21:23:02 +02:00
QMessageBox idTaken;
idTaken.setText("THIS ID IS ALREADY TAKEN!");
idTaken.exec();
}
2022-04-05 00:26:36 +02:00
void MainWindow::thisBlogIdIsTaken() const
{
QMessageBox idTaken;
idTaken.setText("THIS BLOG ID IS ALREADY TAKEN!");
idTaken.exec();
}
void MainWindow::saveRegisteredUser(QJsonObject &users, QJsonObject &blogs) const
2022-04-03 21:23:02 +02:00
{
QString id = ui->inputId->text();
if(id == "")
{
thisIdIsEmpty();
return;
}
if(users.find(id) == users.end())
{
QString mail = ui->inputMail->text();
QString password = ui->inputPassword->text();
qDebug() << mail << " " << password;
QJsonObject user;
user["userId"] = id;
user["email"] = mail;
user["password"]=password;
2022-04-05 00:26:36 +02:00
users.insert(id, user);
2022-04-03 21:23:02 +02:00
/*
userId - unique user id - text obtained from the user during user registration
email - e-mail address of the user
password - password provided by the user
*/
2022-04-05 00:26:36 +02:00
QJsonObject blog;
QString blogTitle = ui -> inputBlogTitle->text();
QString blogId = ui -> inputBlogID->text();
if(blogs.find(blogId) == blogs.end())
{
blog["ownerId"] = id;
blog["title"] = blogTitle;
blog["blogId"] = blogId;
blogs.insert(blogId, blog);
saveJsonFile(blogs, "blogs.json");
saveJsonFile(users, "user.json");
}else thisBlogIdIsTaken();
2022-04-03 21:23:02 +02:00
}else thisIdIsTaken();
}
void MainWindow::on_pushButton_clicked()
{
2022-04-05 00:26:36 +02:00
QJsonObject blogs = readJsonFile("blogs.json");
QJsonObject users = readJsonFile("user.json");
saveRegisteredUser(users, blogs);
2022-04-03 21:23:02 +02:00
}
void MainWindow::goToLogin()
{
login *l = new login();
l -> show();
hide();
}
void MainWindow::on_loginButton_clicked()
{
goToLogin();
2022-03-26 12:43:58 +01:00
}