diff --git a/src/resources/ui/app-window.ui b/src/resources/ui/app-window.ui
index 186e3fc..efbfc8b 100644
--- a/src/resources/ui/app-window.ui
+++ b/src/resources/ui/app-window.ui
@@ -1,92 +1,111 @@
-
+
+
-
-
+
-
-
-
-
+
+
+
+
+
-
diff --git a/src/widgets/card.h b/src/widgets/card.h
index 72171af..c3e775b 100644
--- a/src/widgets/card.h
+++ b/src/widgets/card.h
@@ -19,18 +19,18 @@ class CardWidget : public Gtk::Box {
/**
* @brief CardWidget constructor
*
- * @param card_ptr a smart pointer pointing to a Card object.
+ * @param card a smart pointer pointing to a Card object.
* @param is_new flag indicating whether this object is being created from
* scratch rather than being loaded from a Progress board file. True means
* the Card did not come from a file otherwise False
*/
CardWidget(BaseObjectType* cobject,
const Glib::RefPtr& builder,
- std::shared_ptr card_refptr, bool is_new = false);
+ std::shared_ptr card, bool is_new = false);
- void set_label(const std::string& label);
+ void set_title(const std::string& label);
- std::string get_text() const;
+ std::string get_title() const;
/**
* @brief Removes itself from the associated CardlistWidget object.
@@ -41,9 +41,6 @@ class CardWidget : public Gtk::Box {
* @brief Sets a new parent to this card.
*
* @param cardlist_p pointer to a new CardlistWidget object (parent)
- *
- * @details Cards in Progress Tracker are the only ones that changes parents
- * with a certain frequency, that's why this method exists.
*/
void set_cardlist(ui::CardlistWidget* cardlist_p);
@@ -61,13 +58,38 @@ class CardWidget : public Gtk::Box {
*/
std::shared_ptr get_card();
+ /**
+ * @brief Gets the cardlist widget from which this widget is associated with
+ */
CardlistWidget const* get_cardlist_widget() const;
+ /**
+ * @brief Updates label informing the amount of tasks complete
+ */
void update_complete_tasks();
+
+ /**
+ * @brief Updates label informing due date for this card
+ */
void update_due_date();
+
+ /**
+ * @brief Changes due date label colour depending on the card's
+ * situation. Red if it is past due date, green if it is complete and plain
+ * colour if it is due but not yet complete
+ */
void update_due_date_label_style();
+
+ /**
+ * @brief Changes the complete tasks label colour depending on the amount of
+ * tasks complete. Green if all tasks are complete, Yellow if half of the
+ * tasks are complete and Red if less than half of the task are complete
+ */
void update_complete_tasks_style(unsigned long n_complete_tasks);
+ /**
+ * @brief Helper method for creating a tooltip text for the card widget
+ */
std::string create_details_text() const;
protected:
diff --git a/src/widgets/cardlist-widget.cpp b/src/widgets/cardlist-widget.cpp
index 6873999..632f4eb 100644
--- a/src/widgets/cardlist-widget.cpp
+++ b/src/widgets/cardlist-widget.cpp
@@ -11,7 +11,7 @@ ui::CardlistWidget::CardlistWidget(BoardWidget& board,
: Gtk::ListBox{},
add_card_button{_("Add card")},
root{Gtk::Orientation::VERTICAL},
- cards_tracker{},
+ card_widgets{},
board{board},
cardlist{cardlist_refptr},
is_new{is_new},
@@ -47,7 +47,7 @@ ui::CardlistWidget::CardlistWidget(BoardWidget& board,
add_card_button.set_halign(Gtk::Align::FILL);
add_card_button.set_hexpand(true);
add_card_button.signal_clicked().connect(
- [this]() { this->add_card(Card{_("New Card")}, true); });
+ [this]() { this->add(Card{_("New Card")}, true); });
root.append(add_card_button);
append(cardlist_header);
@@ -57,7 +57,7 @@ ui::CardlistWidget::CardlistWidget(BoardWidget& board,
auto cardwidget =
Gtk::manage(cur_builder->get_widget_derived(
cur_builder, "card-root", card));
- cards_tracker.push_back(cardwidget);
+ card_widgets.push_back(cardwidget);
cardwidget->set_cardlist(this);
root.append(*cardwidget);
root.reorder_child_after(add_card_button, *cardwidget);
@@ -83,15 +83,15 @@ ui::CardlistWidget::CardlistWidget(BoardWidget& board,
ui::CardlistWidget::~CardlistWidget() {}
-void ui::CardlistWidget::reorder_cardwidget(ui::CardWidget& next,
+void ui::CardlistWidget::reorder(ui::CardWidget& next,
ui::CardWidget& sibling) {
root.reorder_child_after(next, sibling);
cardlist->reorder(*next.get_card(), *sibling.get_card());
}
const std::vector&
-ui::CardlistWidget::get_cardwidget_vector() {
- return cards_tracker;
+ui::CardlistWidget::get_card_widgets() {
+ return card_widgets;
}
void ui::CardlistWidget::setup_drag_and_drop() {
@@ -168,7 +168,7 @@ void ui::CardlistWidget::setup_drag_and_drop() {
if (!this->is_child(dropped_card)) {
auto card_in_dropped = dropped_card->get_card();
dropped_card->remove_from_parent();
- this->add_card(*card_in_dropped);
+ this->add(*card_in_dropped);
}
return true;
}
@@ -178,18 +178,18 @@ void ui::CardlistWidget::setup_drag_and_drop() {
add_controller(drop_target_card);
}
-void ui::CardlistWidget::remove_card(ui::CardWidget* card) {
+void ui::CardlistWidget::remove(ui::CardWidget* card) {
root.remove(*card);
cardlist->remove(*card->get_card());
- for (size_t i = 0; i < cards_tracker.size(); i++) {
- if (cards_tracker[i] == card) {
- cards_tracker.erase(cards_tracker.begin() + i);
+ for (size_t i = 0; i < card_widgets.size(); i++) {
+ if (card_widgets[i] == card) {
+ card_widgets.erase(card_widgets.begin() + i);
}
}
}
-ui::CardWidget* ui::CardlistWidget::add_card(const Card& card,
+ui::CardWidget* ui::CardlistWidget::add(const Card& card,
bool editing_mode) {
auto card_builder = Gtk::Builder::create_from_resource(
"/io/github/smolblackcat/Progress/card-widget.ui");
@@ -197,7 +197,7 @@ ui::CardWidget* ui::CardlistWidget::add_card(const Card& card,
card_builder, "card-root", cardlist->add(card), editing_mode));
new_card->set_cardlist(this);
- cards_tracker.push_back(new_card);
+ card_widgets.push_back(new_card);
root.append(*new_card);
root.reorder_child_after(add_card_button, *new_card);
return new_card;
@@ -208,7 +208,7 @@ const std::shared_ptr& ui::CardlistWidget::get_cardlist() {
}
bool ui::CardlistWidget::is_child(ui::CardWidget* card) {
- for (auto& card_ : cards_tracker) {
+ for (auto& card_ : card_widgets) {
if (card == card_) return true;
}
return false;
diff --git a/src/widgets/cardlist-widget.h b/src/widgets/cardlist-widget.h
index de4d088..66914ea 100644
--- a/src/widgets/cardlist-widget.h
+++ b/src/widgets/cardlist-widget.h
@@ -26,7 +26,7 @@ class CardlistWidget : public Gtk::ListBox {
* @brief CardlistWidget's constructor
*
* @param board BoardWidget reference to where this widget belongs
- * @param cardlist_refptr CardList smart pointer that this widget is allowed
+ * @param cardlist CardList smart pointer that this widget is allowed
* to change
* @param is_new Indicates whether it's completely new, therefore giving the
* user the chance to cancel creation
@@ -39,20 +39,20 @@ class CardlistWidget : public Gtk::ListBox {
/**
* @brief Adds a CardWidget object based on the given Card
*
- * @param card Card object
+ * @param card Card object reference
* @param editing_mode Boolean indicating whether the card widget should
* start in editing mode. Default is false
*
* @return The created CardWidget object pointer
*/
- ui::CardWidget* add_card(const Card& card, bool editing_mode = false);
+ ui::CardWidget* add(const Card& card, bool editing_mode = false);
/**
* @brief Removes the specified CardWidget
*
* @param card Pointer to the CardWidget to be deleted.
*/
- void remove_card(ui::CardWidget* card);
+ void remove(ui::CardWidget* card);
/**
* @brief Retrieves the underlying CardList smart pointer.
@@ -72,11 +72,17 @@ class CardlistWidget : public Gtk::ListBox {
*/
bool is_child(ui::CardWidget* card);
- BoardWidget& board;
+ /**
+ * @brief Reorders card widget "next" after card widget "sibling"
+ */
+ void reorder(ui::CardWidget& next, ui::CardWidget& sibling);
- void reorder_cardwidget(ui::CardWidget& next, ui::CardWidget& sibling);
+ /**
+ * @brief Access the card widgets tracker vector
+ */
+ const std::vector& get_card_widgets();
- const std::vector& get_cardwidget_vector();
+ BoardWidget& board;
private:
void setup_drag_and_drop();
@@ -88,7 +94,7 @@ class CardlistWidget : public Gtk::ListBox {
// Data
std::shared_ptr cardlist;
- std::vector cards_tracker;
+ std::vector card_widgets;
bool is_new;
};
diff --git a/src/window.h b/src/window.h
index ee0faa5..081b26b 100644
--- a/src/window.h
+++ b/src/window.h
@@ -40,6 +40,9 @@ class ProgressWindow : public Gtk::ApplicationWindow {
Glib::RefPtr& progress_settings);
~ProgressWindow() override;
+ /**
+ * @brief Adds local boards from a given backend
+ */
void add_local_board(BoardBackend board_backend);
/**