diff --git a/EGUI/lab1/blogentry.cpp b/EGUI/lab1/blogentry.cpp index 1eea5a4e..db001d5a 100644 --- a/EGUI/lab1/blogentry.cpp +++ b/EGUI/lab1/blogentry.cpp @@ -10,18 +10,24 @@ blogEntry::blogEntry(QWidget *parent) : QWidget(parent), ui(new Ui::blogEntry) { + editMode = false; ui->setupUi(this); + ui -> editEntryButton -> setDisabled(true); } void blogEntry::setUpBlogEntryFromJson(const QJsonObject entry) { + dateTime = entry["datetime"].toString(); 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); + ui -> saveEntry -> setDisabled(true); + ui -> editEntryButton -> setDisabled(false); + } blogEntry::~blogEntry() @@ -77,8 +83,8 @@ void blogEntry::saveEntry() entry["title"] = ui -> lineEdit -> text(); QString Time = QTime::currentTime().toString(); QString Date = QDate::currentDate().toString(); - entry["datetime"] = Time + " " + Date; + dateTime = Time + " " + Date; ui -> dateTime -> setText( Time + " " + Date); entry["content"] = ui -> textEdit -> toPlainText(); QJsonArray items = blogEntryJson["items"].toArray(); @@ -86,6 +92,8 @@ void blogEntry::saveEntry() blogEntryJson.insert("items", items); blogsFile.insert(blogId, blogEntryJson); saveJsonFile(blogsFile, "blogs.json"); + ui -> saveEntry -> setDisabled(true); + ui -> editEntryButton -> setDisabled(false); } @@ -99,7 +107,7 @@ void blogEntry::removeEntry() QJsonObject currentItem = items[i].toObject(); qDebug() << currentItem["datetime"].toString(); qDebug() << ui -> dateTime -> text(); - if(currentItem["datetime"].toString() == ui -> dateTime -> text()) + if(currentItem["datetime"].toString() == dateTime) { items.removeAt(i); break; @@ -111,6 +119,15 @@ void blogEntry::removeEntry() this -> ~blogEntry(); } +void blogEntry::editEntry() +{ + editMode = true; + ui -> textEdit -> setReadOnly(false); + ui -> lineEdit -> setReadOnly(false); + ui -> saveEntry -> setDisabled(true); + ui -> editEntryButton -> setText("Save edit"); +} + void blogEntry::on_saveEntry_clicked() { saveEntry(); @@ -122,3 +139,39 @@ void blogEntry::on_pushButton_clicked() removeEntry(); } +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(); +} + diff --git a/EGUI/lab1/blogentry.h b/EGUI/lab1/blogentry.h index 93763f22..eb5516ef 100644 --- a/EGUI/lab1/blogentry.h +++ b/EGUI/lab1/blogentry.h @@ -29,11 +29,16 @@ private slots: void removeEntry(); void on_pushButton_clicked(); + void on_editEntryButton_clicked(); + void editEntry(); + void saveEditedEntry(); + private: Ui::blogEntry *ui; QString userId; QString blogId; - + QString dateTime; + bool editMode; }; #endif // BLOGENTRY_H diff --git a/EGUI/lab1/blogentry.ui b/EGUI/lab1/blogentry.ui index a17aef06..aa037cd9 100644 --- a/EGUI/lab1/blogentry.ui +++ b/EGUI/lab1/blogentry.ui @@ -47,6 +47,9 @@ Save Entry + + false + @@ -56,6 +59,13 @@ + + + + Edit Entry + + +