#include "recentprojectwidget.h" #include "ui_recentprojectwidget.h" namespace Ember { RecentProjectWidget::RecentProjectWidget(RecentProject project, QWidget *parent) : QWidget(parent), ui(new Ui::RecentProjectWidget), m_project(project), m_selected(false) { ui->setupUi(this); setupActions(); setSelected(false); } RecentProjectWidget::~RecentProjectWidget() { delete ui; } void RecentProjectWidget::setupUi() { ui->text->setText(QString::fromStdString(m_project.name)); ui->buttonPin->setChecked(m_project.pinned); } void RecentProjectWidget::setupActions() { connect(ui->buttonDelete, &QToolButton::clicked, this, &RecentProjectWidget::onDeleteClicked); connect(ui->buttonPin, &QToolButton::toggled, this, &RecentProjectWidget::onPinToggled); } const RecentProject& RecentProjectWidget::project() const { return m_project; } void RecentProjectWidget::setSelected(bool selected) { m_selected = selected; ui->buttonPin->setVisible(selected); ui->buttonDelete->setVisible(selected); ui->textPin->setVisible(!selected && ui->buttonPin->isChecked()); } void RecentProjectWidget::onDeleteClicked() { emit deleted(m_project); } void RecentProjectWidget::onPinToggled(bool pinned) { ui->textPin->setVisible(!m_selected && pinned); if (m_project.pinned != pinned) { m_project.pinned = pinned; emit pinToggled(m_project, pinned); } } }