feat: save blog information

This commit is contained in:
kuchy 2022-04-05 00:26:36 +02:00
parent 5289bb6fb2
commit 460f633d08
25 changed files with 366 additions and 87 deletions

View File

@ -0,0 +1,27 @@
{
"5": {
"blogId": "5",
"ownerId": "6",
"title": "6"
},
"6": {
"blogId": "6",
"ownerId": "7",
"title": "5"
},
"Title": {
"content": "asdas",
"datetime": "00:25:30 Tue Apr 5 2022",
"title": "Title"
},
"blogtitle3": {
"content": "blogtitle3",
"datetime": "00:25:37 Tue Apr 5 2022",
"title": "blogtitle3"
},
"title": {
"content": "blogentry2",
"datetime": "00:24:53 Tue Apr 5 2022",
"title": "blogtitle2"
}
}

View File

@ -22,17 +22,28 @@ QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_blogEntry_t {
const uint offsetsAndSize[2];
char stringdata0[10];
const uint offsetsAndSize[20];
char stringdata0[98];
};
#define QT_MOC_LITERAL(ofs, len) \
uint(offsetof(qt_meta_stringdata_blogEntry_t, stringdata0) + ofs), len
static const qt_meta_stringdata_blogEntry_t qt_meta_stringdata_blogEntry = {
{
QT_MOC_LITERAL(0, 9) // "blogEntry"
QT_MOC_LITERAL(0, 9), // "blogEntry"
QT_MOC_LITERAL(10, 20), // "on_saveEntry_clicked"
QT_MOC_LITERAL(31, 0), // ""
QT_MOC_LITERAL(32, 9), // "saveEntry"
QT_MOC_LITERAL(42, 12), // "readJsonFile"
QT_MOC_LITERAL(55, 5), // "title"
QT_MOC_LITERAL(61, 12), // "saveJsonFile"
QT_MOC_LITERAL(74, 12), // "QJsonObject&"
QT_MOC_LITERAL(87, 5), // "users"
QT_MOC_LITERAL(93, 4) // "name"
},
"blogEntry"
"blogEntry\0on_saveEntry_clicked\0\0"
"saveEntry\0readJsonFile\0title\0saveJsonFile\0"
"QJsonObject&\0users\0name"
};
#undef QT_MOC_LITERAL
@ -42,22 +53,42 @@ static const uint qt_meta_data_blogEntry[] = {
10, // revision
0, // classname
0, 0, // classinfo
0, 0, // methods
4, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
// slots: name, argc, parameters, tag, flags, initial metatype offsets
1, 0, 38, 2, 0x08, 1 /* Private */,
3, 0, 39, 2, 0x08, 2 /* Private */,
4, 1, 40, 2, 0x08, 3 /* Private */,
6, 2, 43, 2, 0x108, 5 /* Private | MethodIsConst */,
// slots: parameters
QMetaType::Void,
QMetaType::Void,
QMetaType::QJsonObject, QMetaType::QString, 5,
QMetaType::Void, 0x80000000 | 7, QMetaType::QString, 8, 9,
0 // eod
};
void blogEntry::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
(void)_o;
(void)_id;
(void)_c;
(void)_a;
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<blogEntry *>(_o);
(void)_t;
switch (_id) {
case 0: _t->on_saveEntry_clicked(); break;
case 1: _t->saveEntry(); break;
case 2: { QJsonObject _r = _t->readJsonFile((*reinterpret_cast< std::add_pointer_t<QString>>(_a[1])));
if (_a[0]) *reinterpret_cast< QJsonObject*>(_a[0]) = std::move(_r); } break;
case 3: _t->saveJsonFile((*reinterpret_cast< std::add_pointer_t<QJsonObject&>>(_a[1])),(*reinterpret_cast< std::add_pointer_t<QString>>(_a[2]))); break;
default: ;
}
}
}
const QMetaObject blogEntry::staticMetaObject = { {
@ -68,7 +99,7 @@ const QMetaObject blogEntry::staticMetaObject = { {
nullptr,
qt_incomplete_metaTypeArray<qt_meta_stringdata_blogEntry_t
, QtPrivate::TypeAndForceComplete<blogEntry, std::true_type>
, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<QJsonObject, std::false_type>, QtPrivate::TypeAndForceComplete<const QString, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<QJsonObject &, std::false_type>, QtPrivate::TypeAndForceComplete<const QString, std::false_type>
>,
@ -92,6 +123,17 @@ void *blogEntry::qt_metacast(const char *_clname)
int blogEntry::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QWidget::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 4)
qt_static_metacall(this, _c, _id, _a);
_id -= 4;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 4)
*reinterpret_cast<QMetaType *>(_a[0]) = QMetaType();
_id -= 4;
}
return _id;
}
QT_WARNING_POP

View File

@ -22,8 +22,8 @@ QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_MainWindow_t {
const uint offsetsAndSize[24];
char stringdata0[163];
const uint offsetsAndSize[32];
char stringdata0[194];
};
#define QT_MOC_LITERAL(ofs, len) \
uint(offsetof(qt_meta_stringdata_MainWindow_t, stringdata0) + ofs), len
@ -34,20 +34,25 @@ QT_MOC_LITERAL(11, 18), // "saveRegisteredUser"
QT_MOC_LITERAL(30, 0), // ""
QT_MOC_LITERAL(31, 12), // "QJsonObject&"
QT_MOC_LITERAL(44, 5), // "users"
QT_MOC_LITERAL(50, 21), // "on_pushButton_clicked"
QT_MOC_LITERAL(72, 12), // "saveJsonFile"
QT_MOC_LITERAL(85, 16), // "readUserJsonFile"
QT_MOC_LITERAL(102, 13), // "thisIdIsTaken"
QT_MOC_LITERAL(116, 13), // "thisIdIsEmpty"
QT_MOC_LITERAL(130, 22), // "on_loginButton_clicked"
QT_MOC_LITERAL(153, 9) // "goToLogin"
QT_MOC_LITERAL(50, 5), // "blogs"
QT_MOC_LITERAL(56, 21), // "on_pushButton_clicked"
QT_MOC_LITERAL(78, 12), // "saveJsonFile"
QT_MOC_LITERAL(91, 4), // "name"
QT_MOC_LITERAL(96, 12), // "readJsonFile"
QT_MOC_LITERAL(109, 5), // "title"
QT_MOC_LITERAL(115, 13), // "thisIdIsTaken"
QT_MOC_LITERAL(129, 13), // "thisIdIsEmpty"
QT_MOC_LITERAL(143, 17), // "thisBlogIdIsTaken"
QT_MOC_LITERAL(161, 22), // "on_loginButton_clicked"
QT_MOC_LITERAL(184, 9) // "goToLogin"
},
"MainWindow\0saveRegisteredUser\0\0"
"QJsonObject&\0users\0on_pushButton_clicked\0"
"saveJsonFile\0readUserJsonFile\0"
"QJsonObject&\0users\0blogs\0on_pushButton_clicked\0"
"saveJsonFile\0name\0readJsonFile\0title\0"
"thisIdIsTaken\0thisIdIsEmpty\0"
"on_loginButton_clicked\0goToLogin"
"thisBlogIdIsTaken\0on_loginButton_clicked\0"
"goToLogin"
};
#undef QT_MOC_LITERAL
@ -57,7 +62,7 @@ static const uint qt_meta_data_MainWindow[] = {
10, // revision
0, // classname
0, 0, // classinfo
8, 14, // methods
9, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
@ -65,20 +70,22 @@ static const uint qt_meta_data_MainWindow[] = {
0, // signalCount
// slots: name, argc, parameters, tag, flags, initial metatype offsets
1, 1, 62, 2, 0x108, 1 /* Private | MethodIsConst */,
5, 0, 65, 2, 0x08, 3 /* Private */,
6, 1, 66, 2, 0x108, 4 /* Private | MethodIsConst */,
7, 0, 69, 2, 0x08, 6 /* Private */,
8, 0, 70, 2, 0x108, 7 /* Private | MethodIsConst */,
9, 0, 71, 2, 0x108, 8 /* Private | MethodIsConst */,
10, 0, 72, 2, 0x08, 9 /* Private */,
11, 0, 73, 2, 0x08, 10 /* Private */,
1, 2, 68, 2, 0x108, 1 /* Private | MethodIsConst */,
6, 0, 73, 2, 0x08, 4 /* Private */,
7, 2, 74, 2, 0x108, 5 /* Private | MethodIsConst */,
9, 1, 79, 2, 0x08, 8 /* Private */,
11, 0, 82, 2, 0x108, 10 /* Private | MethodIsConst */,
12, 0, 83, 2, 0x108, 11 /* Private | MethodIsConst */,
13, 0, 84, 2, 0x108, 12 /* Private | MethodIsConst */,
14, 0, 85, 2, 0x08, 13 /* Private */,
15, 0, 86, 2, 0x08, 14 /* Private */,
// slots: parameters
QMetaType::Void, 0x80000000 | 3, 4,
QMetaType::Void, 0x80000000 | 3, 0x80000000 | 3, 4, 5,
QMetaType::Void,
QMetaType::Void, 0x80000000 | 3, QMetaType::QString, 4, 8,
QMetaType::QJsonObject, QMetaType::QString, 10,
QMetaType::Void,
QMetaType::Void, 0x80000000 | 3, 4,
QMetaType::QJsonObject,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
@ -93,15 +100,16 @@ void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id,
auto *_t = static_cast<MainWindow *>(_o);
(void)_t;
switch (_id) {
case 0: _t->saveRegisteredUser((*reinterpret_cast< std::add_pointer_t<QJsonObject&>>(_a[1]))); break;
case 0: _t->saveRegisteredUser((*reinterpret_cast< std::add_pointer_t<QJsonObject&>>(_a[1])),(*reinterpret_cast< std::add_pointer_t<QJsonObject&>>(_a[2]))); break;
case 1: _t->on_pushButton_clicked(); break;
case 2: _t->saveJsonFile((*reinterpret_cast< std::add_pointer_t<QJsonObject&>>(_a[1]))); break;
case 3: { QJsonObject _r = _t->readUserJsonFile();
case 2: _t->saveJsonFile((*reinterpret_cast< std::add_pointer_t<QJsonObject&>>(_a[1])),(*reinterpret_cast< std::add_pointer_t<QString>>(_a[2]))); break;
case 3: { QJsonObject _r = _t->readJsonFile((*reinterpret_cast< std::add_pointer_t<QString>>(_a[1])));
if (_a[0]) *reinterpret_cast< QJsonObject*>(_a[0]) = std::move(_r); } break;
case 4: _t->thisIdIsTaken(); break;
case 5: _t->thisIdIsEmpty(); break;
case 6: _t->on_loginButton_clicked(); break;
case 7: _t->goToLogin(); break;
case 6: _t->thisBlogIdIsTaken(); break;
case 7: _t->on_loginButton_clicked(); break;
case 8: _t->goToLogin(); break;
default: ;
}
}
@ -115,7 +123,7 @@ const QMetaObject MainWindow::staticMetaObject = { {
nullptr,
qt_incomplete_metaTypeArray<qt_meta_stringdata_MainWindow_t
, QtPrivate::TypeAndForceComplete<MainWindow, std::true_type>
, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<QJsonObject &, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<QJsonObject &, std::false_type>, QtPrivate::TypeAndForceComplete<QJsonObject, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>
, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<QJsonObject &, std::false_type>, QtPrivate::TypeAndForceComplete<QJsonObject &, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<QJsonObject &, std::false_type>, QtPrivate::TypeAndForceComplete<const QString, std::false_type>, QtPrivate::TypeAndForceComplete<QJsonObject, std::false_type>, QtPrivate::TypeAndForceComplete<const QString, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>, QtPrivate::TypeAndForceComplete<void, std::false_type>
>,
@ -142,13 +150,13 @@ int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 8)
if (_id < 9)
qt_static_metacall(this, _c, _id, _a);
_id -= 8;
_id -= 9;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 8)
if (_id < 9)
*reinterpret_cast<QMetaType *>(_a[0]) = QMetaType();
_id -= 8;
_id -= 9;
}
return _id;
}

View File

@ -15,6 +15,7 @@
#include <QtWidgets/QFormLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QWidget>
@ -29,6 +30,7 @@ public:
QLabel *ownerID;
QLabel *dateTime;
QTextEdit *textEdit;
QPushButton *saveEntry;
void setupUi(QWidget *blogEntry)
{
@ -59,9 +61,15 @@ public:
textEdit = new QTextEdit(blogEntry);
textEdit->setObjectName(QString::fromUtf8("textEdit"));
textEdit->setReadOnly(false);
formLayout->setWidget(4, QFormLayout::FieldRole, textEdit);
saveEntry = new QPushButton(blogEntry);
saveEntry->setObjectName(QString::fromUtf8("saveEntry"));
formLayout->setWidget(5, QFormLayout::FieldRole, saveEntry);
retranslateUi(blogEntry);
@ -75,6 +83,7 @@ public:
lineEdit->setText(QCoreApplication::translate("blogEntry", "Title", nullptr));
ownerID->setText(QCoreApplication::translate("blogEntry", "ownerID", nullptr));
dateTime->setText(QCoreApplication::translate("blogEntry", "Date Time", nullptr));
saveEntry->setText(QCoreApplication::translate("blogEntry", "Save Entry", nullptr));
} // retranslateUi
};

View File

@ -35,6 +35,10 @@ public:
QLabel *label_2;
QLabel *label_4;
QPushButton *loginButton;
QLabel *label_5;
QLineEdit *inputBlogTitle;
QLineEdit *inputBlogID;
QLabel *label_6;
QMenuBar *menubar;
void setupUi(QMainWindow *MainWindow)
@ -54,43 +58,63 @@ public:
inputId = new QLineEdit(centralwidget);
inputId->setObjectName(QString::fromUtf8("inputId"));
formLayout->setWidget(3, QFormLayout::SpanningRole, inputId);
formLayout->setWidget(6, QFormLayout::SpanningRole, inputId);
inputMail = new QLineEdit(centralwidget);
inputMail->setObjectName(QString::fromUtf8("inputMail"));
formLayout->setWidget(5, QFormLayout::SpanningRole, inputMail);
formLayout->setWidget(8, QFormLayout::SpanningRole, inputMail);
label_3 = new QLabel(centralwidget);
label_3->setObjectName(QString::fromUtf8("label_3"));
formLayout->setWidget(6, QFormLayout::SpanningRole, label_3);
formLayout->setWidget(9, QFormLayout::SpanningRole, label_3);
inputPassword = new QLineEdit(centralwidget);
inputPassword->setObjectName(QString::fromUtf8("inputPassword"));
inputPassword->setEchoMode(QLineEdit::Password);
formLayout->setWidget(7, QFormLayout::SpanningRole, inputPassword);
formLayout->setWidget(10, QFormLayout::SpanningRole, inputPassword);
pushButton = new QPushButton(centralwidget);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
formLayout->setWidget(8, QFormLayout::SpanningRole, pushButton);
formLayout->setWidget(11, QFormLayout::SpanningRole, pushButton);
label_2 = new QLabel(centralwidget);
label_2->setObjectName(QString::fromUtf8("label_2"));
formLayout->setWidget(4, QFormLayout::SpanningRole, label_2);
formLayout->setWidget(7, QFormLayout::SpanningRole, label_2);
label_4 = new QLabel(centralwidget);
label_4->setObjectName(QString::fromUtf8("label_4"));
formLayout->setWidget(2, QFormLayout::SpanningRole, label_4);
formLayout->setWidget(5, QFormLayout::SpanningRole, label_4);
loginButton = new QPushButton(centralwidget);
loginButton->setObjectName(QString::fromUtf8("loginButton"));
formLayout->setWidget(9, QFormLayout::SpanningRole, loginButton);
formLayout->setWidget(12, QFormLayout::SpanningRole, loginButton);
label_5 = new QLabel(centralwidget);
label_5->setObjectName(QString::fromUtf8("label_5"));
formLayout->setWidget(3, QFormLayout::FieldRole, label_5);
inputBlogTitle = new QLineEdit(centralwidget);
inputBlogTitle->setObjectName(QString::fromUtf8("inputBlogTitle"));
formLayout->setWidget(4, QFormLayout::SpanningRole, inputBlogTitle);
inputBlogID = new QLineEdit(centralwidget);
inputBlogID->setObjectName(QString::fromUtf8("inputBlogID"));
formLayout->setWidget(2, QFormLayout::FieldRole, inputBlogID);
label_6 = new QLabel(centralwidget);
label_6->setObjectName(QString::fromUtf8("label_6"));
formLayout->setWidget(1, QFormLayout::FieldRole, label_6);
MainWindow->setCentralWidget(centralwidget);
menubar = new QMenuBar(MainWindow);
@ -106,14 +130,14 @@ public:
void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "MainWindow", nullptr));
label->setText(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:72pt;\">Register</span></p></body></html>", nullptr));
label->setText(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:48pt;\">Register</span></p></body></html>", nullptr));
#if QT_CONFIG(tooltip)
inputId->setToolTip(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:48pt;\">Input ID</span></p></body></html>", nullptr));
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(tooltip)
inputMail->setToolTip(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:48pt;\">Input Mail</span></p></body></html>", nullptr));
#endif // QT_CONFIG(tooltip)
label_3->setText(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt;\">Password</span></p></body></html>", nullptr));
label_3->setText(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:28pt;\">Password</span></p></body></html>", nullptr));
#if QT_CONFIG(tooltip)
inputPassword->setToolTip(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:48pt;\">Input Password</span></p></body></html>", nullptr));
#endif // QT_CONFIG(tooltip)
@ -125,9 +149,11 @@ public:
pushButton->setToolTip(QCoreApplication::translate("MainWindow", "<html><head/><body><p><span style=\" font-size:72pt;\">Register</span></p><p><br/></p></body></html>", nullptr));
#endif // QT_CONFIG(tooltip)
pushButton->setText(QCoreApplication::translate("MainWindow", "Register", nullptr));
label_2->setText(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt;\">Mail</span></p></body></html>", nullptr));
label_4->setText(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt;\">ID</span></p></body></html>", nullptr));
label_2->setText(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:28pt;\">Mail</span></p></body></html>", nullptr));
label_4->setText(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:28pt;\">ID</span></p></body></html>", nullptr));
loginButton->setText(QCoreApplication::translate("MainWindow", "Already Registered? Click here to Login!", nullptr));
label_5->setText(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:28pt;\">Blog Title</span></p></body></html>", nullptr));
label_6->setText(QCoreApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:28pt;\">Blog ID</span></p></body></html>", nullptr));
} // retranslateUi
};

View File

@ -13,5 +13,20 @@
"id": "2",
"mail": "",
"password": ""
},
"5": {
"email": "5",
"password": "",
"userId": "5"
},
"6": {
"email": "5",
"password": "",
"userId": "6"
},
"7": {
"email": "5",
"password": "5",
"userId": "7"
}
}

View File

@ -1,6 +1,9 @@
#include "blogentry.h"
#include "ui_blogentry.h"
#include <QDateTime>
#include <QJsonObject>
#include <QFile>
#include <QJsonDocument>
blogEntry::blogEntry(QWidget *parent) :
QWidget(parent),
@ -10,6 +13,8 @@ blogEntry::blogEntry(QWidget *parent) :
QString Time = QTime::currentTime().toString();
QString Date = QDate::currentDate().toString();
ui -> dateTime -> setText(Date + " " + Time);
qDebug() << "blogEntry id: " << userId;
qDebug() << Time;
}
@ -17,3 +22,61 @@ blogEntry::~blogEntry()
{
delete ui;
}
void blogEntry::setUserId(const QString &userId)
{
qDebug() << "blogEntry id: " << userId;
this->userId = userId;
ui -> ownerID -> setText("Owner ID: " + userId);
}
QJsonObject blogEntry::readJsonFile(const QString title)
{
QFile file(title);
file.open( QIODevice::ReadOnly);
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);
QJsonObject blogEntry;
blogEntry["content"] = ui -> textEdit -> toPlainText();
QString Time = QTime::currentTime().toString();
QString Date = QDate::currentDate().toString();
blogEntry["datetime"] = Time + " " + Date;
blogEntry["title"] = ui -> lineEdit -> text();
QJsonObject blogsFile = readJsonFile("blogs.json");
QJsonObject blogEntryJson;
blogEntryJson["title"] = ui -> lineEdit -> text();
blogEntryJson["datetime"] = Time + " " + Date;
blogEntryJson["content"] = ui -> textEdit -> toPlainText();
blogsFile.insert(ui -> lineEdit -> text(), blogEntryJson);
saveJsonFile(blogsFile, "blogs.json");
}
void blogEntry::on_saveEntry_clicked()
{
saveEntry();
}

View File

@ -2,6 +2,9 @@
#define BLOGENTRY_H
#include <QWidget>
#include <QJsonObject>
#include <QFile>
#include <QJsonDocument>
namespace Ui {
class blogEntry;
@ -14,9 +17,16 @@ class blogEntry : public QWidget
public:
explicit blogEntry(QWidget *parent = nullptr);
~blogEntry();
void setUserId(const QString &userId);
private slots:
void on_saveEntry_clicked();
void saveEntry();
QJsonObject readJsonFile(const QString title);
void saveJsonFile(QJsonObject &users, const QString name) const;
private:
Ui::blogEntry *ui;
QString userId;
};
#endif // BLOGENTRY_H

View File

@ -43,7 +43,18 @@
</widget>
</item>
<item row="4" column="1">
<widget class="QTextEdit" name="textEdit"/>
<widget class="QTextEdit" name="textEdit">
<property name="readOnly">
<bool>false</bool>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QPushButton" name="saveEntry">
<property name="text">
<string>Save Entry</string>
</property>
</widget>
</item>
</layout>
</widget>

View File

@ -2,6 +2,9 @@
#include "ui_blogsview.h"
#include "blogentry.h"
#include "ui_blogentry.h"
#include <QJsonObject>
#include <QFile>
#include <QJsonDocument>
blogsView::blogsView(QWidget *parent) :
QMainWindow(parent),
@ -15,9 +18,31 @@ blogsView::~blogsView()
delete ui;
}
void blogsView::setUserId(const QString &userId)
{
this->userId = userId;
}
QJsonObject blogsView::readJsonFile(const QString title)
{
QFile file(title);
file.open( QIODevice::ReadOnly);
QByteArray bytes = file.readAll();
file.close();
QJsonDocument document = QJsonDocument::fromJson( bytes );
return document.object();
}
void blogsView::createNewBlogEntry()
{
QJsonObject blogsFile = readJsonFile("blogs.json");
QJsonObject blogEntryJson;
blogEntryJson["title"];
blogEntryJson["datetime"];
blogEntryJson["content"];
qDebug() << "blogsView id: " << userId;
blogEntry *e = new blogEntry();
e -> setUserId(userId);
ui -> blogsLayout -> addWidget(e);
}

View File

@ -15,12 +15,16 @@ public:
explicit blogsView(QWidget *parent = nullptr);
~blogsView();
void createNewBlogEntry();
void setUserId(const QString &userId);
QJsonObject readJsonFile(const QString title);
private slots:
void on_actionCreate_new_Blog_entry_triggered();
private:
Ui::blogsView *ui;
QString userId;
};
#endif // BLOGSVIEW_H

View File

@ -34,9 +34,11 @@ void login::wrongPassword()
wrongPassword.exec();
}
void login::loginSuccessful()
void login::loginSuccessful(const QString &id)
{
qDebug() << "login id: " << id;
blogsView *b = new blogsView();
b -> setUserId(id);
b -> show();
hide();
}
@ -51,7 +53,7 @@ void login::loginUser(QJsonObject &users)
QString enteredPassword = ui->inputPassword->text();
if (user["password"] == enteredPassword)
{
loginSuccessful();
loginSuccessful(id);
}else wrongPassword();
}
}

View File

@ -18,7 +18,7 @@ public:
void loginUser(QJsonObject &users);
QJsonObject readUserJsonFile();
void wrongPassword();
void loginSuccessful();
void loginSuccessful(const QString &id);
private slots:

View File

@ -22,9 +22,9 @@ MainWindow::~MainWindow()
delete ui; // in the destructor, we delete the ui
}
QJsonObject MainWindow::readUserJsonFile()
QJsonObject MainWindow::readJsonFile(const QString title)
{
QFile file("user.json");
QFile file(title);
file.open( QIODevice::ReadOnly);
QByteArray bytes = file.readAll();
file.close();
@ -32,12 +32,9 @@ QJsonObject MainWindow::readUserJsonFile()
return document.object();
}
void MainWindow::saveJsonFile(QJsonObject &users) const
void MainWindow::saveJsonFile(QJsonObject &users, const QString name) const
{
qDebug() << QFile::exists(QStringLiteral(":/user.json"));
qDebug() << QFile::exists(QStringLiteral("./user.json"));
qDebug() << QFile::exists(QStringLiteral("user.json"));
QFile jsonFile(QStringLiteral("user.json"));
QFile jsonFile(name);
QJsonDocument document;
document.setObject( users );
QByteArray bytes = document.toJson( QJsonDocument::Indented );
@ -64,7 +61,14 @@ void MainWindow::thisIdIsTaken() const
idTaken.exec();
}
void MainWindow::saveRegisteredUser(QJsonObject &users) const
void MainWindow::thisBlogIdIsTaken() const
{
QMessageBox idTaken;
idTaken.setText("THIS BLOG ID IS ALREADY TAKEN!");
idTaken.exec();
}
void MainWindow::saveRegisteredUser(QJsonObject &users, QJsonObject &blogs) const
{
QString id = ui->inputId->text();
if(id == "")
@ -81,21 +85,33 @@ void MainWindow::saveRegisteredUser(QJsonObject &users) const
user["userId"] = id;
user["email"] = mail;
user["password"]=password;
users.insert(id, user);
/*
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
*/
users.insert(id, user);
saveJsonFile(users);
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();
}else thisIdIsTaken();
}
void MainWindow::on_pushButton_clicked()
{
QJsonObject users = readUserJsonFile();
saveRegisteredUser(users);
QJsonObject blogs = readJsonFile("blogs.json");
QJsonObject users = readJsonFile("user.json");
saveRegisteredUser(users, blogs);
}

View File

@ -29,13 +29,14 @@ public:
private slots:
void saveRegisteredUser(QJsonObject &users) const;
void saveRegisteredUser(QJsonObject &users, QJsonObject &blogs) const;
void on_pushButton_clicked();
void saveJsonFile(QJsonObject &users) const;
QJsonObject readUserJsonFile();
void saveJsonFile(QJsonObject &users, const QString name) const;
QJsonObject readJsonFile(const QString title);
void thisIdIsTaken() const;
void thisIdIsEmpty() const;
void thisBlogIdIsTaken() const;
void on_loginButton_clicked();
void goToLogin();

View File

@ -18,32 +18,32 @@
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:72pt;&quot;&gt;Register&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:48pt;&quot;&gt;Register&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<item row="6" column="0" colspan="2">
<widget class="QLineEdit" name="inputId">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:48pt;&quot;&gt;Input ID&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<item row="8" column="0" colspan="2">
<widget class="QLineEdit" name="inputMail">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:48pt;&quot;&gt;Input Mail&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<item row="9" column="0" colspan="2">
<widget class="QLabel" name="label_3">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:36pt;&quot;&gt;Password&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:28pt;&quot;&gt;Password&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="2">
<item row="10" column="0" colspan="2">
<widget class="QLineEdit" name="inputPassword">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:48pt;&quot;&gt;Input Password&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@ -59,7 +59,7 @@
</property>
</widget>
</item>
<item row="8" column="0" colspan="2">
<item row="11" column="0" colspan="2">
<widget class="QPushButton" name="pushButton">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:72pt;&quot;&gt;Register&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@ -69,27 +69,47 @@
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<item row="7" column="0" colspan="2">
<widget class="QLabel" name="label_2">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:36pt;&quot;&gt;Mail&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:28pt;&quot;&gt;Mail&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<item row="5" column="0" colspan="2">
<widget class="QLabel" name="label_4">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:36pt;&quot;&gt;ID&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:28pt;&quot;&gt;ID&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="9" column="0" colspan="2">
<item row="12" column="0" colspan="2">
<widget class="QPushButton" name="loginButton">
<property name="text">
<string>Already Registered? Click here to Login!</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="label_5">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:28pt;&quot;&gt;Blog Title&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QLineEdit" name="inputBlogTitle"/>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="inputBlogID"/>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_6">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:28pt;&quot;&gt;Blog ID&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">