diff --git a/src/app/puzzle/puzzlemainwindow.cpp b/src/app/puzzle/puzzlemainwindow.cpp
index 4c529dac3..37061660b 100644
--- a/src/app/puzzle/puzzlemainwindow.cpp
+++ b/src/app/puzzle/puzzlemainwindow.cpp
@@ -38,7 +38,8 @@ PuzzleMainWindow::PuzzleMainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::PuzzleMainWindow),
pieceCarrousel(new VPieceCarrousel),
- m_layout (nullptr)
+ m_layout (nullptr),
+ m_selectedPiece (nullptr)
{
ui->setupUi(this);
@@ -46,13 +47,14 @@ PuzzleMainWindow::PuzzleMainWindow(QWidget *parent) :
InitProperties();
InitPieceCarrousel();
-
// ----- for test purposes, to be removed------------------
m_layout = new VPuzzleLayout();
m_layout->SetLayoutMarginsConverted(1.5, 2.00, 4.21, 0.25);
- m_layout->SetLayoutSizeConverted(21.0, 29.7);
- m_layout->SetPiecesGapConverted(1);
+ m_layout->SetLayoutSizeConverted(30.0, 29.7);
+ m_layout->SetPiecesGapConverted(1.27);
m_layout->SetUnit(Unit::Cm);
+ m_layout->SetWarningSuperpositionOfPieces(true);
+
SetPropertiesData();
}
@@ -290,6 +292,16 @@ void PuzzleMainWindow::SetPropertyTabLayoutData()
SetDoubleSpinBoxValue(ui->doubleSpinBoxLayoutWidth, size.width());
SetDoubleSpinBoxValue(ui->doubleSpinBoxLayoutLength, size.height());
+ // Set Orientation
+ if(size.width() <= size.height())
+ {
+ ui->radioButtonLayoutPortrait->setChecked(true);
+ }
+ else
+ {
+ ui->radioButtonLayoutLandscape->setChecked(true);
+ }
+
// set margins
QMarginsF margins = m_layout->GetLayoutMarginsConverted();
SetDoubleSpinBoxValue(ui->doubleSpinBoxLayoutMarginLeft, margins.left());
@@ -299,6 +311,11 @@ void PuzzleMainWindow::SetPropertyTabLayoutData()
// set pieces gap
SetDoubleSpinBoxValue(ui->doubleSpinBoxLayoutPiecesGap, m_layout->GetPiecesGapConverted());
+
+ // set the checkboxes
+ SetCheckBoxValue(ui->checkBoxLayoutWarningPiecesOutOfBound, m_layout->GetWarningPiecesOutOfBound());
+ SetCheckBoxValue(ui->checkBoxLayoutWarningPiecesSuperposition, m_layout->GetWarningSuperpositionOfPieces());
+ SetCheckBoxValue(ui->checkBoxLayoutStickyEdges, m_layout->GetStickyEdges());
}
//---------------------------------------------------------------------------------------------------------------------
@@ -322,6 +339,15 @@ void PuzzleMainWindow::SetDoubleSpinBoxValue(QDoubleSpinBox *spinBox, qreal valu
spinBox->blockSignals(false);
}
+//---------------------------------------------------------------------------------------------------------------------
+void PuzzleMainWindow::SetCheckBoxValue(QCheckBox *checkbox, bool value)
+{
+ checkbox->blockSignals(true);
+ checkbox->setChecked(value);
+ checkbox->blockSignals(false);
+}
+
+
//---------------------------------------------------------------------------------------------------------------------
void PuzzleMainWindow::New()
@@ -430,17 +456,24 @@ void PuzzleMainWindow::AboutPuzzle()
//---------------------------------------------------------------------------------------------------------------------
void PuzzleMainWindow::LayoutUnitChanged(int index)
{
-
- // just for test purpuses, to be removed:
- QMessageBox msgBox;
- msgBox.setText("TODO PuzzleMainWindow::LayoutUnitChanged");
- int ret = msgBox.exec();
-
Q_UNUSED(index);
- Q_UNUSED(ret);
+ QVariant comboBoxValue = ui->comboBoxLayoutUnit->currentData();
+ if(comboBoxValue == QVariant(UnitsToStr(Unit::Cm)))
+ {
+ m_layout->SetUnit(Unit::Cm);
+ }
+ else if(comboBoxValue == QVariant(UnitsToStr(Unit::Mm)))
+ {
+ m_layout->SetUnit(Unit::Mm);
+ }
+ else if(comboBoxValue == QVariant(UnitsToStr(Unit::Inch)))
+ {
+ m_layout->SetUnit(Unit::Inch);
+ }
- // TODO
+ SetPropertyTabLayoutData();
+ SetPropertyTabCurrentPieceData();
}
//---------------------------------------------------------------------------------------------------------------------
@@ -461,27 +494,36 @@ void PuzzleMainWindow::LayoutTemplateChanged(int index)
//---------------------------------------------------------------------------------------------------------------------
void PuzzleMainWindow::LayoutSizeChanged()
{
- // just for test purpuses, to be removed:
- QMessageBox msgBox;
- msgBox.setText("TODO PuzzleMainWindow::LayoutSizeChanged");
- int ret = msgBox.exec();
+ m_layout->SetLayoutSizeConverted(ui->doubleSpinBoxLayoutWidth->value(), ui->doubleSpinBoxLayoutLength->value());
- Q_UNUSED(ret);
+ // updates orientation - no need to block signals because the signal reacts on "clicked"
+ if(ui->doubleSpinBoxLayoutWidth->value() <= ui->doubleSpinBoxLayoutLength->value())
+ {
+ //portrait
+ ui->radioButtonLayoutPortrait->setChecked(true);
+ }
+ else
+ {
+ //landscape
+ ui->radioButtonLayoutLandscape->setChecked(true);
+ }
- // TODO
+ // TODO Undo / Redo
+ // TODO update the QGraphicView
}
//---------------------------------------------------------------------------------------------------------------------
void PuzzleMainWindow::LayoutOrientationChanged()
{
- // just for test purpuses, to be removed:
- QMessageBox msgBox;
- msgBox.setText("TODO PuzzleMainWindow::LayoutOrientationChanged");
- int ret = msgBox.exec();
+ // swap the width and length
+ qreal width_before = ui->doubleSpinBoxLayoutWidth->value();
+ qreal length_before = ui->doubleSpinBoxLayoutLength->value();
- Q_UNUSED(ret);
+ SetDoubleSpinBoxValue(ui->doubleSpinBoxLayoutWidth, length_before);
+ SetDoubleSpinBoxValue(ui->doubleSpinBoxLayoutLength, width_before);
- // TODO
+ // TODO Undo / Redo
+ // TODO update the QGraphicView
}
//---------------------------------------------------------------------------------------------------------------------
@@ -501,14 +543,15 @@ void PuzzleMainWindow::LayoutRemoveUnusedLength()
//---------------------------------------------------------------------------------------------------------------------
void PuzzleMainWindow::LayoutMarginChanged()
{
- // just for test purpuses, to be removed:
- QMessageBox msgBox;
- msgBox.setText("TODO PuzzleMainWindow::LayoutMarginChanged");
- int ret = msgBox.exec();
+ m_layout->SetLayoutMarginsConverted(
+ ui->doubleSpinBoxLayoutMarginLeft->value(),
+ ui->doubleSpinBoxLayoutMarginTop->value(),
+ ui->doubleSpinBoxLayoutMarginRight->value(),
+ ui->doubleSpinBoxLayoutMarginBottom->value()
+ );
- Q_UNUSED(ret);
-
- // TODO
+ // TODO Undo / Redo
+ // TODO update the QGraphicView
}
@@ -529,60 +572,37 @@ void PuzzleMainWindow::LayoutFollowGrainlineChanged()
//---------------------------------------------------------------------------------------------------------------------
void PuzzleMainWindow::LayoutPiecesGapChanged(double value)
{
- // just for test purpuses, to be removed:
- QMessageBox msgBox;
- msgBox.setText("TODO PuzzleMainWindow::LayoutPieceGapChanged");
- int ret = msgBox.exec();
+ m_layout->SetPiecesGapConverted(value);
- Q_UNUSED(value);
- Q_UNUSED(ret);
-
- // TODO
+ // TODO Undo / Redo
+ // TODO update the QGraphicView
}
//---------------------------------------------------------------------------------------------------------------------
void PuzzleMainWindow::LayoutWarningPiecesSuperpositionChanged(bool checked)
{
- // just for test purpuses, to be removed:
- QMessageBox msgBox;
- msgBox.setText("TODO PuzzleMainWindow::LayoutWarningPiecesSuperpositionChanged");
- int ret = msgBox.exec();
+ m_layout->SetWarningSuperpositionOfPieces(checked);
- Q_UNUSED(checked);
- Q_UNUSED(ret);
-
- // TODO
+ // TODO Undo / Redo
+ // TODO update the QGraphicView
}
//---------------------------------------------------------------------------------------------------------------------
void PuzzleMainWindow::LayoutWarningPiecesOutOfBoundChanged(bool checked)
{
- // just for test purpuses, to be removed:
- QMessageBox msgBox;
- msgBox.setText("TODO PuzzleMainWindow::LayoutWarningPiecesOutOfBoundChanged");
- int ret = msgBox.exec();
-
- Q_UNUSED(checked);
- Q_UNUSED(ret);
-
- // TODO
+ m_layout->SetWarningPiecesOutOfBound(checked);
+ // TODO Undo / Redo
+ // TODO update the QGraphicView
}
//---------------------------------------------------------------------------------------------------------------------
void PuzzleMainWindow::LayoutStickyEdgesChanged(bool checked)
{
- // just for test purpuses, to be removed:
- QMessageBox msgBox;
- msgBox.setText("TODO PuzzleMainWindow::LayoutStickyEdgesChanged");
- int ret = msgBox.exec();
-
- Q_UNUSED(checked);
- Q_UNUSED(ret);
-
-
- // TODO
+ m_layout->SetStickyEdges(checked);
+ // TODO Undo / Redo
+ // TODO update the QGraphicView
}
diff --git a/src/app/puzzle/puzzlemainwindow.h b/src/app/puzzle/puzzlemainwindow.h
index a991176df..8c0f9edf7 100644
--- a/src/app/puzzle/puzzlemainwindow.h
+++ b/src/app/puzzle/puzzlemainwindow.h
@@ -76,20 +76,52 @@ private:
void InitPieceCarrousel();
+ /**
+ * @brief SetPropertiesData Sets the values of UI elements
+ * in all the property tabs to the values saved in m_layout
+ */
void SetPropertiesData();
+
+ /**
+ * @brief SetPropertyTabCurrentPieceData Sets the values of UI elements
+ * in the Current Piece Tab to the values saved in m_layout
+ */
void SetPropertyTabCurrentPieceData();
+
+ /**
+ * @brief SetPropertyTabLayoutData Sets the values of UI elements
+ * in the Layout Tab to the values saved in m_layout
+ */
void SetPropertyTabLayoutData();
+
+ /**
+ * @brief SetPropertyTabTilesData Sets the values of UI elements
+ * in the Tiles Tab to the values saved in m_layout
+ */
void SetPropertyTabTilesData();
+
+ /**
+ * @brief SetPropertyTabLayersData Sets the values of UI elements
+ * in the Layers Tab to the values saved in m_layout
+ */
void SetPropertyTabLayersData();
/**
- * @brief SetDoubleSpinBoxValue sets the given spinbox to the given value
+ * @brief SetDoubleSpinBoxValue sets the given spinbox to the given value.
* the signals are blocked before changing the value and unblocked after
* @param spinbox
* @param value
*/
void SetDoubleSpinBoxValue(QDoubleSpinBox *spinBox, qreal value);
+ /**
+ * @brief SetCheckBoxValue sets the given checkbox to the given value.
+ * the signals are blocked before changing the value and unblocked after
+ * @param checkbox
+ * @param value
+ */
+ void SetCheckBoxValue(QCheckBox *checkbox, bool value);
+
private slots:
void Open();
void Save();
diff --git a/src/app/puzzle/puzzlemainwindow.ui b/src/app/puzzle/puzzlemainwindow.ui
index 7855f9b00..d8516accc 100644
--- a/src/app/puzzle/puzzlemainwindow.ui
+++ b/src/app/puzzle/puzzlemainwindow.ui
@@ -228,8 +228,8 @@
0
0
- 356
- 760
+ 170
+ 452
@@ -495,10 +495,18 @@
-
-
+
+
+ 100000.000000000000000
+
+
-
-
+
+
+ 100000.000000000000000
+
+
-
@@ -850,8 +858,8 @@
0
0
- 356
- 760
+ 98
+ 41
@@ -930,8 +938,8 @@
0
0
- 356
- 760
+ 98
+ 41
@@ -1064,6 +1072,7 @@
+