Program Listing for File maestrodrawingarea.cpp¶
↰ Return to documentation for file (src/drawingarea/maestrodrawingarea.cpp
)
#include <QApplication>
#include "core/maestro.h"
#include "maestrodrawingarea.h"
#include "dialog/preferencesdialog.h"
#include <QElapsedTimer>
#include <QGridLayout>
#include <QTimer>
using namespace PixelMaestro;
namespace PixelMaestroStudio {
MaestroDrawingArea::MaestroDrawingArea(QWidget* parent, MaestroController& maestro_controller) : QFrame(parent), maestro_controller_(maestro_controller) {
section_layout_ = new QGridLayout(this);
// Hide frame by default
this->setFrameStyle(QFrame::Box | QFrame::Plain);
this->setStyleSheet("color: #333333;");
}
SectionDrawingArea* MaestroDrawingArea::add_section_drawing_area(Section& section, const uint8_t section_id) {
section_drawing_areas_.push_back(
QSharedPointer<SectionDrawingArea>(
new SectionDrawingArea(this, section, section_id)
)
);
QWidget* drawing_area = section_drawing_areas_.last().data();
QSettings settings;
int grid_width = settings.value(PreferencesDialog::num_sections_per_row, 1).toInt();
int row_num = section_id / grid_width;
int column_num = section_id % grid_width;
section_layout_->addWidget(drawing_area, row_num, column_num);
return dynamic_cast<SectionDrawingArea*>(drawing_area);
}
MaestroControlWidget* MaestroDrawingArea::get_maestro_control_widget() const {
return maestro_control_widget_;
}
void MaestroDrawingArea::frame_active_section(Section& section) {
if (maestro_control_widget_ == nullptr) return;
int section_id = maestro_control_widget_->section_control_widget_->get_section_index(section);
for (uint8_t i = 0; i < section_drawing_areas_.size(); i++) {
if (i == section_id) {
section_drawing_areas_[i]->draw_frame(SectionDrawingArea::FrameType::Active);
}
else {
section_drawing_areas_[i]->draw_frame(SectionDrawingArea::FrameType::Inactive);
}
}
}
void MaestroDrawingArea::remove_section_drawing_areas() {
section_drawing_areas_.clear();
}
void MaestroDrawingArea::set_locked(bool locked) {
if (locked) {
QColor highlight_color = qApp->palette().highlight().color();
this->setStyleSheet(QString("color: rgb(%1, %2, %3);").arg(highlight_color.red()).arg(highlight_color.green()).arg(highlight_color.blue()));
}
else {
this->setStyleSheet("color: #333333;");
}
}
void MaestroDrawingArea::set_maestro_control_widget(MaestroControlWidget *widget) {
this->maestro_control_widget_ = widget;
}
void MaestroDrawingArea::update() {
// Update all DrawingAreas
for (uint16_t i = 0; i < section_drawing_areas_.size(); i++) {
section_drawing_areas_[i]->update();
}
}
}