WUT_Computer_Science/EGUI/lab1/blogentry.cpp

178 lines
4.8 KiB
C++
Raw Normal View History

2022-04-04 21:22:50 +02:00
#include "blogentry.h"
#include "ui_blogentry.h"
2022-04-04 21:56:57 +02:00
#include <QDateTime>
2022-04-05 00:26:36 +02:00
#include <QJsonObject>
#include <QFile>
#include <QJsonDocument>
2022-04-06 01:06:01 +02:00
#include <QJsonArray>
2022-04-04 21:22:50 +02:00
blogEntry::blogEntry(QWidget *parent) :
QWidget(parent),
ui(new Ui::blogEntry)
{
2022-04-06 03:20:04 +02:00
editMode = false;
2022-04-04 21:22:50 +02:00
ui->setupUi(this);
2022-04-06 03:20:04 +02:00
ui -> editEntryButton -> setDisabled(true);
2022-04-05 00:26:36 +02:00
2022-04-06 02:20:29 +02:00
}
void blogEntry::setUpBlogEntryFromJson(const QJsonObject entry)
{
2022-04-06 03:20:04 +02:00
dateTime = entry["datetime"].toString();
2022-04-06 02:20:29 +02:00
ui -> lineEdit-> setText(entry["title"].toString());
ui -> textEdit -> setText(entry["content"].toString());
ui -> dateTime -> setText(entry["datetime"].toString());
ui -> ownerID -> setText("Owner ID: " + userId);
ui -> textEdit -> setReadOnly(true);
ui -> lineEdit -> setReadOnly(true);
2022-04-06 03:20:04 +02:00
ui -> saveEntry -> setDisabled(true);
ui -> editEntryButton -> setDisabled(false);
2022-04-04 21:22:50 +02:00
}
blogEntry::~blogEntry()
{
delete ui;
}
2022-04-05 00:26:36 +02:00
void blogEntry::setUserId(const QString &userId)
{
qDebug() << "blogEntry id: " << userId;
this->userId = userId;
ui -> ownerID -> setText("Owner ID: " + userId);
}
2022-04-06 01:06:01 +02:00
void blogEntry::setBlogId(const QString &blogId)
{
this->blogId = blogId;
}
2022-04-05 00:26:36 +02:00
QJsonObject blogEntry::readJsonFile(const QString title)
{
QFile file(title);
2022-04-06 01:06:01 +02:00
file.open( QIODevice::ReadWrite);
2022-04-05 00:26:36 +02:00
QByteArray bytes = file.readAll();
file.close();
QJsonDocument document = QJsonDocument::fromJson( bytes );
return document.object();
}
void blogEntry::saveJsonFile(QJsonObject &users, const QString name) const
{
QFile jsonFile(name);
QJsonDocument document;
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();
}
void blogEntry::saveEntry()
{
ui -> textEdit -> setReadOnly(true);
ui -> lineEdit -> setReadOnly(true);
2022-04-06 01:06:01 +02:00
QJsonObject blogsFile = readJsonFile("blogs.json");
QJsonObject blogEntryJson = blogsFile[blogId].toObject();
QJsonObject entry;
entry["title"] = ui -> lineEdit -> text();
2022-04-05 00:26:36 +02:00
QString Time = QTime::currentTime().toString();
QString Date = QDate::currentDate().toString();
2022-04-06 01:06:01 +02:00
entry["datetime"] = Time + " " + Date;
2022-04-06 03:20:04 +02:00
dateTime = Time + " " + Date;
2022-04-06 02:20:29 +02:00
ui -> dateTime -> setText( Time + " " + Date);
2022-04-06 01:06:01 +02:00
entry["content"] = ui -> textEdit -> toPlainText();
QJsonArray items = blogEntryJson["items"].toArray();
items.append(entry);
blogEntryJson.insert("items", items);
blogsFile.insert(blogId, blogEntryJson);
2022-04-05 00:26:36 +02:00
saveJsonFile(blogsFile, "blogs.json");
2022-04-06 03:20:04 +02:00
ui -> saveEntry -> setDisabled(true);
ui -> editEntryButton -> setDisabled(false);
2022-04-05 00:26:36 +02:00
}
2022-04-06 02:20:29 +02:00
void blogEntry::removeEntry()
{
QJsonObject blogsFile = readJsonFile("blogs.json");
QJsonObject blogEntryJson = blogsFile[blogId].toObject();
QJsonArray items = blogEntryJson["items"].toArray();
for(int i = 0; i < items.size(); i++)
{
QJsonObject currentItem = items[i].toObject();
qDebug() << currentItem["datetime"].toString();
qDebug() << ui -> dateTime -> text();
2022-04-06 03:20:04 +02:00
if(currentItem["datetime"].toString() == dateTime)
2022-04-06 02:20:29 +02:00
{
items.removeAt(i);
break;
}
}
blogEntryJson.insert("items", items);
blogsFile.insert(blogId, blogEntryJson);
saveJsonFile(blogsFile, "blogs.json");
this -> ~blogEntry();
}
2022-04-06 03:20:04 +02:00
void blogEntry::editEntry()
{
editMode = true;
ui -> textEdit -> setReadOnly(false);
ui -> lineEdit -> setReadOnly(false);
ui -> saveEntry -> setDisabled(true);
ui -> editEntryButton -> setText("Save edit");
}
2022-04-05 00:26:36 +02:00
void blogEntry::on_saveEntry_clicked()
{
saveEntry();
}
2022-04-06 02:20:29 +02:00
void blogEntry::on_pushButton_clicked()
{
removeEntry();
}
2022-04-06 03:20:04 +02:00
void blogEntry::saveEditedEntry()
{
ui -> textEdit -> setReadOnly(true);
ui -> lineEdit -> setReadOnly(true);
editMode = false;
ui -> editEntryButton -> setText("Edit Entry");
QJsonObject blogsFile = readJsonFile("blogs.json");
QJsonObject blogEntryJson = blogsFile[blogId].toObject();
QJsonArray items = blogEntryJson["items"].toArray();
for(int i = 0; i < items.size(); i++)
{
QJsonObject currentItem = items[i].toObject();
qDebug() << currentItem["datetime"].toString();
qDebug() << ui -> dateTime -> text();
if(currentItem["datetime"].toString() == dateTime)
{
currentItem["title"] = ui -> lineEdit -> text();
currentItem["content"] = ui -> textEdit -> toPlainText();
items.removeAt(i);
items.append(currentItem);
break;
}
}
blogEntryJson.insert("items", items);
blogsFile.insert(blogId, blogEntryJson);
saveJsonFile(blogsFile, "blogs.json");
}
void blogEntry::on_editEntryButton_clicked()
{
if(!editMode) editEntry();
else saveEditedEntry();
}