From 4c2c8bc81df55ab2f0112d16bfd1a9d236b51e6d Mon Sep 17 00:00:00 2001 From: Louie S Date: Fri, 15 Mar 2024 16:12:05 -0400 Subject: Load and apply rules to entries --- src/assignmentList.cpp | 2 +- src/backend/db_sqlite.cpp | 4 +--- src/entryLayout.cpp | 22 +++++++++++++++++++++- src/entryLayout.h | 4 ++++ 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/assignmentList.cpp b/src/assignmentList.cpp index 673e0b5..a883523 100644 --- a/src/assignmentList.cpp +++ b/src/assignmentList.cpp @@ -103,10 +103,10 @@ QVBoxLayout *AssignmentList::drawEntries(int parent_id) { // styling output->setContentsMargins(5, 0, 0, 0); + // TODO sort entries for(i = 0; i < entries.size(); ++i) { // skip if this entry is set to hidden if(entries[i]->hidden) continue; - // TODO set right click behavior output->addLayout(new EntryLayout(*entries[i])); } diff --git a/src/backend/db_sqlite.cpp b/src/backend/db_sqlite.cpp index f48089b..4e62153 100644 --- a/src/backend/db_sqlite.cpp +++ b/src/backend/db_sqlite.cpp @@ -358,7 +358,6 @@ int BackendDB::removeEntry(const Entry &entry) { query.bindValue(0, entry.id); query.exec(); - // FIXME not sure if this also needs to be called after the first query... output = query.numRowsAffected(); } @@ -378,7 +377,6 @@ int BackendDB::removeRule(const Rule &rule) { query.bindValue(0, rule.id); query.exec(); - // FIXME not sure if this also needs to be called after the first query... output = query.numRowsAffected(); } @@ -418,7 +416,7 @@ QSqlDatabase BackendDB::openDB() { database.open(); if(database.isOpenError()) { - // FIXME end-user friendly error message + // TODO end-user friendly error message qDebug() << database.lastError(); std::exit(1); } diff --git a/src/entryLayout.cpp b/src/entryLayout.cpp index 54aa5f8..349a102 100644 --- a/src/entryLayout.cpp +++ b/src/entryLayout.cpp @@ -14,6 +14,7 @@ EntryLayout::EntryLayout(const Entry &e) : { QLabel *bullet = new QLabel(); QLabel *body = new QLabel(); + int i; // set styling this->setContentsMargins(2, 2, 2, 2); @@ -34,7 +35,20 @@ EntryLayout::EntryLayout(const Entry &e) : SLOT(showContextMenu())); // Check rules - // TODO + QList rules = this->loadRules(); + for(i = 0; i < rules.size(); ++i) { + if( + (rules[i]->when == Rule::before && + rules[i]->date > QDateTime::currentDateTime()) || + (rules[i]->when == Rule::after && + rules[i]->date <= QDateTime::currentDateTime()) + ) { + if(!rules[i]->color.isEmpty()) + this->entry.color = rules[i]->color; + if(!rules[i]->highlight.isEmpty()) + this->entry.highlight = rules[i]->highlight; + } + } // set conditional styling if(this->entry.done) { @@ -87,6 +101,12 @@ EntryLayout::EntryLayout(const Entry &e) : this->addWidget(body); } +QList EntryLayout::loadRules() { + BackendDB database; + + return database.loadRules(this->entry.id); +} + void EntryLayout::showContextMenu() { QMenu menu; diff --git a/src/entryLayout.h b/src/entryLayout.h index 1a4146b..df19a18 100644 --- a/src/entryLayout.h +++ b/src/entryLayout.h @@ -7,6 +7,7 @@ #include #include "entry.h" +#include "rule.h" class EntryLayout : public QHBoxLayout { Q_OBJECT @@ -16,6 +17,9 @@ class EntryLayout : public QHBoxLayout { EntryLayout(const Entry &e); + private: + QList loadRules(); + private slots: void showContextMenu(); void editEntry(); -- cgit