Refactoring.

This commit is contained in:
Roman Telezhynskyi 2022-08-12 18:50:13 +03:00
parent 8dafc0e157
commit 0ab0edc654
595 changed files with 8727 additions and 8081 deletions

View file

@ -32,7 +32,9 @@
#include <QScrollBar> #include <QScrollBar>
#include <QFontMetrics> #include <QFontMetrics>
#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
#include "../vmisc/backport/qoverload.h" #include "../vmisc/backport/qoverload.h"
#endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
#include "../layout/vpsheet.h" #include "../layout/vpsheet.h"
#include "../layout/vplayout.h" #include "../layout/vplayout.h"
@ -40,7 +42,13 @@
#include <QMenu> #include <QMenu>
#include <QPainter> #include <QPainter>
Q_LOGGING_CATEGORY(pCarrousel, "p.carrousel") QT_WARNING_PUSH
QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes")
QT_WARNING_DISABLE_INTEL(1418)
Q_LOGGING_CATEGORY(pCarrousel, "p.carrousel") // NOLINT
QT_WARNING_POP
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VPCarrousel::VPCarrousel(const VPLayoutPtr &layout, QWidget *parent) : VPCarrousel::VPCarrousel(const VPLayoutPtr &layout, QWidget *parent) :
@ -108,7 +116,7 @@ void VPCarrousel::Refresh()
ui->comboBoxPieceList->blockSignals(true); ui->comboBoxPieceList->blockSignals(true);
for (const auto& sheet: m_pieceLists) for (const auto& sheet: qAsConst(m_pieceLists))
{ {
ui->comboBoxPieceList->addItem(GetSheetName(sheet), sheet.sheetUuid); ui->comboBoxPieceList->addItem(GetSheetName(sheet), sheet.sheetUuid);
} }
@ -227,7 +235,7 @@ void VPCarrousel::on_ActivePieceListChanged(int index)
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VPLayoutWeakPtr VPCarrousel::Layout() const auto VPCarrousel::Layout() const -> VPLayoutWeakPtr
{ {
return m_layout; return m_layout;
} }

View file

@ -32,8 +32,10 @@
#include <QWidget> #include <QWidget>
#include <QComboBox> #include <QComboBox>
#include <QScrollArea> #include <QScrollArea>
#include "../layout/vppiece.h" #include <QUuid>
#include "../layout/layoutdef.h" #include "../layout/layoutdef.h"
#include "../vmisc/defglobal.h"
namespace Ui namespace Ui
{ {
@ -51,10 +53,10 @@ struct VPCarrouselSheet
class VPCarrousel : public QWidget class VPCarrousel : public QWidget
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VPCarrousel(const VPLayoutPtr &layout, QWidget *parent = nullptr); explicit VPCarrousel(const VPLayoutPtr &layout, QWidget *parent = nullptr);
virtual ~VPCarrousel() = default; ~VPCarrousel() override = default;
/** /**
* @brief SetOrientation Sets the orientation to the given value and refreshes * @brief SetOrientation Sets the orientation to the given value and refreshes
@ -76,7 +78,7 @@ public:
*/ */
void Clear(); void Clear();
VPLayoutWeakPtr Layout() const; auto Layout() const -> VPLayoutWeakPtr;
public slots: public slots:
/** /**
@ -86,7 +88,7 @@ public slots:
void on_ActiveSheetChanged(const VPSheetPtr &sheet); void on_ActiveSheetChanged(const VPSheetPtr &sheet);
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
private slots: private slots:
@ -97,7 +99,8 @@ private slots:
void on_ActivePieceListChanged(int index); void on_ActivePieceListChanged(int index);
private: private:
Q_DISABLE_COPY(VPCarrousel) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(VPCarrousel) // NOLINT
Ui::VPCarrousel *ui; Ui::VPCarrousel *ui;
VPLayoutWeakPtr m_layout{}; VPLayoutWeakPtr m_layout{};

View file

@ -32,15 +32,17 @@
#include <QMenu> #include <QMenu>
#include <QPainter> #include <QPainter>
#include "vpmimedatapiece.h"
#include "vpcarrouselpiecelist.h"
#include "vpcarrousel.h"
#include "../layout/vpsheet.h"
#include "../layout/vppiece.h" #include "../layout/vppiece.h"
#include <QLoggingCategory> #include <QLoggingCategory>
Q_LOGGING_CATEGORY(pCarrouselPiece, "p.carrouselPiece") QT_WARNING_PUSH
QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes")
QT_WARNING_DISABLE_INTEL(1418)
Q_LOGGING_CATEGORY(pCarrouselPiece, "p.carrouselPiece") // NOLINT
QT_WARNING_POP
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -32,6 +32,7 @@
#include <QListWidgetItem> #include <QListWidgetItem>
#include "../layout/layoutdef.h" #include "../layout/layoutdef.h"
#include "../vmisc/defglobal.h"
class VPCarrouselPiece : public QListWidgetItem class VPCarrouselPiece : public QListWidgetItem
{ {
@ -39,7 +40,7 @@ public:
enum { Type = UserType + 1}; enum { Type = UserType + 1};
explicit VPCarrouselPiece(const VPPiecePtr &piece, QListWidget* parent); explicit VPCarrouselPiece(const VPPiecePtr &piece, QListWidget* parent);
virtual ~VPCarrouselPiece() = default; ~VPCarrouselPiece() override = default;
/** /**
* @brief GetPiece Returns the corresponding layout piece * @brief GetPiece Returns the corresponding layout piece
@ -61,7 +62,8 @@ public:
private: private:
Q_DISABLE_COPY(VPCarrouselPiece) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(VPCarrouselPiece) // NOLINT
VPPieceWeakPtr m_piece; VPPieceWeakPtr m_piece;
}; };

View file

@ -35,15 +35,24 @@
#include "vpcarrousel.h" #include "vpcarrousel.h"
#include "vpcarrouselpiece.h" #include "vpcarrouselpiece.h"
#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
#include "../vmisc/backport/qoverload.h" #include "../vmisc/backport/qoverload.h"
#endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
#include "vpmimedatapiece.h" #include "vpmimedatapiece.h"
#include "../layout/vpsheet.h" #include "../layout/vpsheet.h"
#include "../layout/vplayout.h" #include "../layout/vplayout.h"
#include "../undocommands/vpundomovepieceonsheet.h" #include "../undocommands/vpundomovepieceonsheet.h"
#include "../layout/vppiece.h"
#include <QLoggingCategory> #include <QLoggingCategory>
Q_LOGGING_CATEGORY(pCarrouselPieceList, "p.carrouselPieceList") QT_WARNING_PUSH
QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes")
QT_WARNING_DISABLE_INTEL(1418)
Q_LOGGING_CATEGORY(pCarrouselPieceList, "p.carrouselPieceList") // NOLINT
QT_WARNING_POP
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VPCarrouselPieceList::VPCarrouselPieceList(QWidget* parent) : VPCarrouselPieceList::VPCarrouselPieceList(QWidget* parent) :
@ -70,7 +79,7 @@ void VPCarrouselPieceList::Refresh()
if(not m_pieceList.isEmpty()) if(not m_pieceList.isEmpty())
{ {
// create the corresponding carrousel pieces // create the corresponding carrousel pieces
for (auto piece : m_pieceList) for (const auto &piece : qAsConst(m_pieceList)) // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
{ {
if (not piece.isNull()) if (not piece.isNull())
{ {
@ -102,7 +111,8 @@ void VPCarrouselPieceList::mousePressEvent(QMouseEvent *event)
if (!(event->modifiers() & Qt::ControlModifier)) if (!(event->modifiers() & Qt::ControlModifier))
{ {
// clearSelection doesn't work properly here so we go through the elements. // clearSelection doesn't work properly here so we go through the elements.
for(auto *item: selectedItems()) const QList<QListWidgetItem*> items = selectedItems();
for(auto *item: items)
{ {
item->setSelected(false); item->setSelected(false);
} }
@ -135,7 +145,8 @@ void VPCarrouselPieceList::startDrag(Qt::DropActions supportedActions)
QListWidgetItem* _item = currentItem(); QListWidgetItem* _item = currentItem();
if(_item->type() == VPCarrouselPiece::Type) if(_item->type() == VPCarrouselPiece::Type)
{ {
auto *pieceItem = static_cast<VPCarrouselPiece *> (_item); auto *pieceItem = dynamic_cast<VPCarrouselPiece *> (_item);
SCASSERT(pieceItem != nullptr)
if (m_carrousel == nullptr) if (m_carrousel == nullptr)
{ {
@ -183,94 +194,97 @@ void VPCarrouselPieceList::dragMoveEvent(QDragMoveEvent* e)
void VPCarrouselPieceList::contextMenuEvent(QContextMenuEvent *event) void VPCarrouselPieceList::contextMenuEvent(QContextMenuEvent *event)
{ {
QListWidgetItem* _item = currentItem(); QListWidgetItem* _item = currentItem();
if(_item != nullptr && _item->type() == VPCarrouselPiece::Type) if(_item == nullptr || _item->type() != VPCarrouselPiece::Type)
{ {
auto *pieceItem = static_cast<VPCarrouselPiece *> (_item); return;
}
VPPiecePtr piece = pieceItem->GetPiece(); auto *pieceItem = dynamic_cast<VPCarrouselPiece *> (_item);
VPLayoutPtr layout = piece->Layout(); SCASSERT(pieceItem != nullptr)
if (piece.isNull() || layout.isNull()) VPPiecePtr piece = pieceItem->GetPiece();
VPLayoutPtr layout = piece->Layout();
if (piece.isNull() || layout.isNull())
{
return;
}
QMenu menu;
QVector<QAction*> moveToActions;
if (not piece->Sheet().isNull())
{
QList<VPSheetPtr> sheets = layout->GetSheets();
sheets.removeAll(piece->Sheet());
if (not sheets.isEmpty())
{ {
return; QMenu *moveMenu = menu.addMenu(tr("Move to"));
}
QMenu menu; for (const auto &sheet : sheets)
QVector<QAction*> moveToActions;
if (not piece->Sheet().isNull())
{
QList<VPSheetPtr> sheets = layout->GetSheets();
sheets.removeAll(piece->Sheet());
if (not sheets.isEmpty())
{ {
QMenu *moveMenu = menu.addMenu(tr("Move to")); if (not sheet.isNull())
for (const auto &sheet : sheets)
{ {
if (not sheet.isNull()) QAction* moveToSheet = moveMenu->addAction(sheet->GetName());
{ moveToSheet->setData(QVariant::fromValue(sheet));
QAction* moveToSheet = moveMenu->addAction(sheet->GetName()); moveToActions.append(moveToSheet);
moveToSheet->setData(QVariant::fromValue(sheet));
moveToActions.append(moveToSheet);
}
} }
} }
} }
}
QAction *moveAction = menu.addAction(tr("Move to Sheet")); QAction *moveAction = menu.addAction(tr("Move to Sheet"));
moveAction->setVisible(false); moveAction->setVisible(false);
QAction *deleteAction = menu.addAction(tr("Delete")); QAction *deleteAction = menu.addAction(tr("Delete"));
deleteAction->setVisible(false); deleteAction->setVisible(false);
QAction *removeAction = menu.addAction(tr("Remove from Sheet")); QAction *removeAction = menu.addAction(tr("Remove from Sheet"));
removeAction->setVisible(false); removeAction->setVisible(false);
if(not m_pieceList.isEmpty() && ConstFirst(m_pieceList)->Sheet() == nullptr) if(not m_pieceList.isEmpty() && ConstFirst(m_pieceList)->Sheet() == nullptr)
{
moveAction->setVisible(true);
deleteAction->setVisible(true);
}
if(not m_pieceList.isEmpty() && ConstFirst(m_pieceList)->Sheet() != nullptr)
{
removeAction->setVisible(true);
}
QAction *selectedAction = menu.exec(event->globalPos());
if (selectedAction == moveAction)
{
VPSheetPtr sheet = layout->GetFocusedSheet();
if (not sheet.isNull())
{ {
moveAction->setVisible(true); piece->ClearTransformations();
deleteAction->setVisible(true); QRectF rect = sheet->GetMarginsRect();
} piece->SetPosition(QPointF(rect.topLeft().x() + 1, rect.topLeft().y() + 1));
piece->SetZValue(1.0);
if(not m_pieceList.isEmpty() && ConstFirst(m_pieceList)->Sheet() != nullptr) auto *command = new VPUndoMovePieceOnSheet(layout->GetFocusedSheet(), piece);
{
removeAction->setVisible(true);
}
QAction *selectedAction = menu.exec(event->globalPos());
if (selectedAction == moveAction)
{
VPSheetPtr sheet = layout->GetFocusedSheet();
if (not sheet.isNull())
{
piece->ClearTransformations();
QRectF rect = sheet->GetMarginsRect();
piece->SetPosition(QPointF(rect.topLeft().x() + 1, rect.topLeft().y() + 1));
piece->SetZValue(1.0);
auto *command = new VPUndoMovePieceOnSheet(layout->GetFocusedSheet(), piece);
layout->UndoStack()->push(command);
}
}
else if (selectedAction == deleteAction)
{
auto *command = new VPUndoMovePieceOnSheet(layout->GetTrashSheet(), piece);
layout->UndoStack()->push(command);
}
else if (selectedAction == removeAction)
{
auto *command = new VPUndoMovePieceOnSheet(VPSheetPtr(), piece);
layout->UndoStack()->push(command);
}
else if (moveToActions.contains(selectedAction))
{
auto *command = new VPUndoMovePieceOnSheet(qvariant_cast<VPSheetPtr>(selectedAction->data()), piece);
layout->UndoStack()->push(command); layout->UndoStack()->push(command);
} }
} }
else if (selectedAction == deleteAction)
{
auto *command = new VPUndoMovePieceOnSheet(layout->GetTrashSheet(), piece);
layout->UndoStack()->push(command);
}
else if (selectedAction == removeAction)
{
auto *command = new VPUndoMovePieceOnSheet(VPSheetPtr(), piece);
layout->UndoStack()->push(command);
}
else if (moveToActions.contains(selectedAction))
{
auto *command = new VPUndoMovePieceOnSheet(qvariant_cast<VPSheetPtr>(selectedAction->data()), piece);
layout->UndoStack()->push(command);
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -282,7 +296,8 @@ void VPCarrouselPieceList::on_SelectionChangedExternal()
QListWidgetItem* _item = item(i); QListWidgetItem* _item = item(i);
if(_item->type() == VPCarrouselPiece::Type) if(_item->type() == VPCarrouselPiece::Type)
{ {
auto *itemPiece = static_cast<VPCarrouselPiece *> (_item); auto *itemPiece = dynamic_cast<VPCarrouselPiece *> (_item);
SCASSERT(itemPiece != nullptr)
itemPiece->RefreshSelection(); itemPiece->RefreshSelection();
} }
} }

View file

@ -36,10 +36,10 @@
class VPCarrouselPieceList : public QListWidget class VPCarrouselPieceList : public QListWidget
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VPCarrouselPieceList(QWidget* parent); explicit VPCarrouselPieceList(QWidget* parent);
virtual ~VPCarrouselPieceList() = default; ~VPCarrouselPieceList() override = default;
/** /**
* @brief Refresh refreshes the items of the carrousel piece list * @brief Refresh refreshes the items of the carrousel piece list
@ -74,7 +74,7 @@ protected:
void contextMenuEvent(QContextMenuEvent *event) override; void contextMenuEvent(QContextMenuEvent *event) override;
private: private:
Q_DISABLE_COPY(VPCarrouselPieceList) Q_DISABLE_COPY_MOVE(VPCarrouselPieceList) // NOLINT
QList<VPPiecePtr> m_pieceList{}; QList<VPPiecePtr> m_pieceList{};
QPoint m_dragStart{}; QPoint m_dragStart{};

View file

@ -33,7 +33,7 @@
#include "../layout/vppiece.h" #include "../layout/vppiece.h"
const QString VPMimeDataPiece::mineFormatPiecePtr = QStringLiteral("application/vnd.puzzle.piece.ptr"); const QString VPMimeDataPiece::mineFormatPiecePtr = QStringLiteral("application/vnd.puzzle.piece.ptr"); // NOLINT(cert-err58-cpp)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VPMimeDataPiece::VPMimeDataPiece(const QUuid &layoutUuid) VPMimeDataPiece::VPMimeDataPiece(const QUuid &layoutUuid)
@ -65,14 +65,14 @@ auto VPMimeDataPiece::DragCursor(const QPixmap &piecePixmap) -> QPixmap
dragCursor.fill(Qt::transparent); dragCursor.fill(Qt::transparent);
QPainter painter(&dragCursor); QPainter painter(&dragCursor);
painter.drawPixmap(dragCursor.width()/2, dragCursor.height()/2, piecePixmap); painter.drawPixmap(dragCursor.width()/2, dragCursor.height()/2, piecePixmap);
QPixmap cursor = QPixmap("://cursor/collect.png"); QPixmap cursor(QStringLiteral("://cursor/collect.png"));
painter.drawPixmap(dragCursor.width()/2 - cursor.width()/2, dragCursor.height()/2 - cursor.height()/2, cursor); painter.drawPixmap(dragCursor.width()/2 - cursor.width()/2, dragCursor.height()/2 - cursor.height()/2, cursor);
painter.end(); painter.end();
return dragCursor; return dragCursor;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
const QUuid &VPMimeDataPiece::LayoutUuid() const auto VPMimeDataPiece::LayoutUuid() const -> const QUuid &
{ {
return m_layoutUuid; return m_layoutUuid;
} }

View file

@ -34,16 +34,17 @@
#include <QUuid> #include <QUuid>
#include "../layout/layoutdef.h" #include "../layout/layoutdef.h"
#include "../vmisc/defglobal.h"
class VPMimeDataPiece : public QMimeData class VPMimeDataPiece : public QMimeData
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VPMimeDataPiece(const QUuid &layoutUuid); explicit VPMimeDataPiece(const QUuid &layoutUuid);
virtual ~VPMimeDataPiece() = default; ~VPMimeDataPiece() override = default;
virtual auto formats() const -> QStringList override; auto formats() const -> QStringList override;
/** /**
* @brief GetPiecePtr Returns the piece pointer of the mime data * @brief GetPiecePtr Returns the piece pointer of the mime data
@ -61,10 +62,11 @@ public:
static const QString mineFormatPiecePtr; static const QString mineFormatPiecePtr;
const QUuid &LayoutUuid() const; auto LayoutUuid() const -> const QUuid &;
private: private:
Q_DISABLE_COPY(VPMimeDataPiece) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(VPMimeDataPiece) // NOLINT
VPPieceWeakPtr m_piece{}; VPPieceWeakPtr m_piece{};

View file

@ -113,12 +113,12 @@ auto PuzzlePreferencesConfigurationPage::Apply() -> QStringList
if (m_langChanged) if (m_langChanged)
{ {
const QString locale = qvariant_cast<QString>(ui->langCombo->currentData()); const auto locale = qvariant_cast<QString>(ui->langCombo->currentData());
settings->SetLocale(locale); settings->SetLocale(locale);
m_langChanged = false; m_langChanged = false;
VAbstractApplication::VApp()->LoadTranslation(locale); VAbstractApplication::VApp()->LoadTranslation(locale);
qApp->processEvents();// force to call changeEvent QCoreApplication::processEvents();// force to call changeEvent
} }
/* Maximum number of commands in undo stack may only be set when the undo stack is empty, since setting it on a /* Maximum number of commands in undo stack may only be set when the undo stack is empty, since setting it on a

View file

@ -30,6 +30,8 @@
#include <QWidget> #include <QWidget>
#include "../vmisc/defglobal.h"
namespace Ui namespace Ui
{ {
class PuzzlePreferencesConfigurationPage; class PuzzlePreferencesConfigurationPage;
@ -37,19 +39,20 @@ namespace Ui
class PuzzlePreferencesConfigurationPage : public QWidget class PuzzlePreferencesConfigurationPage : public QWidget
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit PuzzlePreferencesConfigurationPage(QWidget *parent = nullptr); explicit PuzzlePreferencesConfigurationPage(QWidget *parent = nullptr);
virtual ~PuzzlePreferencesConfigurationPage(); ~PuzzlePreferencesConfigurationPage() override;
QStringList Apply(); auto Apply() -> QStringList;
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
private: private:
Q_DISABLE_COPY(PuzzlePreferencesConfigurationPage) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(PuzzlePreferencesConfigurationPage) // NOLINT
Ui::PuzzlePreferencesConfigurationPage *ui; Ui::PuzzlePreferencesConfigurationPage *ui;
bool m_langChanged{false}; bool m_langChanged{false};
}; };

View file

@ -399,7 +399,7 @@ void PuzzlePreferencesLayoutPage::InitLayoutUnits()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QSizeF PuzzlePreferencesLayoutPage::Template(VAbstractLayoutDialog::PaperSizeTemplate t) const auto PuzzlePreferencesLayoutPage::Template(VAbstractLayoutDialog::PaperSizeTemplate t) const -> QSizeF
{ {
const Unit layoutUnit = LayoutUnit(); const Unit layoutUnit = LayoutUnit();
@ -413,7 +413,6 @@ QSizeF PuzzlePreferencesLayoutPage::Template(VAbstractLayoutDialog::PaperSizeTem
case VAbstractLayoutDialog::PaperSizeTemplate::Letter: case VAbstractLayoutDialog::PaperSizeTemplate::Letter:
case VAbstractLayoutDialog::PaperSizeTemplate::Legal: case VAbstractLayoutDialog::PaperSizeTemplate::Legal:
case VAbstractLayoutDialog::PaperSizeTemplate::Tabloid: case VAbstractLayoutDialog::PaperSizeTemplate::Tabloid:
return VAbstractLayoutDialog::GetTemplateSize(t, layoutUnit);
case VAbstractLayoutDialog::PaperSizeTemplate::Roll24in: case VAbstractLayoutDialog::PaperSizeTemplate::Roll24in:
case VAbstractLayoutDialog::PaperSizeTemplate::Roll30in: case VAbstractLayoutDialog::PaperSizeTemplate::Roll30in:
case VAbstractLayoutDialog::PaperSizeTemplate::Roll36in: case VAbstractLayoutDialog::PaperSizeTemplate::Roll36in:
@ -422,13 +421,12 @@ QSizeF PuzzlePreferencesLayoutPage::Template(VAbstractLayoutDialog::PaperSizeTem
case VAbstractLayoutDialog::PaperSizeTemplate::Roll48in: case VAbstractLayoutDialog::PaperSizeTemplate::Roll48in:
case VAbstractLayoutDialog::PaperSizeTemplate::Roll62in: case VAbstractLayoutDialog::PaperSizeTemplate::Roll62in:
case VAbstractLayoutDialog::PaperSizeTemplate::Roll72in: case VAbstractLayoutDialog::PaperSizeTemplate::Roll72in:
return VAbstractLayoutDialog::GetTemplateSize(t, layoutUnit);
case VAbstractLayoutDialog::PaperSizeTemplate::Custom: case VAbstractLayoutDialog::PaperSizeTemplate::Custom:
return VAbstractLayoutDialog::GetTemplateSize(t, layoutUnit); return VAbstractLayoutDialog::GetTemplateSize(t, layoutUnit);
default: default:
break; break;
} }
return QSizeF(); return {};
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -40,16 +40,16 @@ namespace Ui
class PuzzlePreferencesLayoutPage : public QWidget class PuzzlePreferencesLayoutPage : public QWidget
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit PuzzlePreferencesLayoutPage(QWidget *parent = nullptr); explicit PuzzlePreferencesLayoutPage(QWidget *parent = nullptr);
~PuzzlePreferencesLayoutPage(); ~PuzzlePreferencesLayoutPage() override;
QStringList Apply(); auto Apply() -> QStringList;
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
private slots: private slots:
void ConvertPaperSize(); void ConvertPaperSize();
@ -62,21 +62,22 @@ private slots:
void SwapTileOrientation(bool checked); void SwapTileOrientation(bool checked);
private: private:
Q_DISABLE_COPY(PuzzlePreferencesLayoutPage) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(PuzzlePreferencesLayoutPage) // NOLINT
Ui::PuzzlePreferencesLayoutPage *ui; Ui::PuzzlePreferencesLayoutPage *ui;
Unit m_oldLayoutUnit{Unit::Mm}; Unit m_oldLayoutUnit{Unit::Mm};
bool m_settingsChanged{false}; bool m_settingsChanged{false};
void InitLayoutUnits(); void InitLayoutUnits();
QSizeF Template(VAbstractLayoutDialog::PaperSizeTemplate t) const; auto Template(VAbstractLayoutDialog::PaperSizeTemplate t) const -> QSizeF;
QSizeF SheetTemplate() const; auto SheetTemplate() const -> QSizeF;
QSizeF TileTemplate() const; auto TileTemplate() const -> QSizeF;
void MinimumSheetPaperSize(); void MinimumSheetPaperSize();
void MinimumTilePaperSize(); void MinimumTilePaperSize();
Unit LayoutUnit() const; auto LayoutUnit() const -> Unit;
void SetLayoutUnit(Unit unit); void SetLayoutUnit(Unit unit);
void SheetSize(const QSizeF &size); void SheetSize(const QSizeF &size);
@ -87,10 +88,10 @@ private:
void SheetPaperSizeChanged(); void SheetPaperSizeChanged();
void TilePaperSizeChanged(); void TilePaperSizeChanged();
QMarginsF GetSheetMargins() const; auto GetSheetMargins() const -> QMarginsF;
void SetSheetMargins(const QMarginsF &value); void SetSheetMargins(const QMarginsF &value);
QMarginsF GetTileMargins() const; auto GetTileMargins() const -> QMarginsF;
void SetTileMargins(const QMarginsF &value); void SetTileMargins(const QMarginsF &value);
void SetPieceGap(qreal gap); void SetPieceGap(qreal gap);

View file

@ -180,35 +180,35 @@ void PuzzlePreferencesPathPage::InitTable()
{ {
ui->pathTable->setItem(0, 0, new QTableWidgetItem(tr("My Individual Measurements"))); ui->pathTable->setItem(0, 0, new QTableWidgetItem(tr("My Individual Measurements")));
QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathIndividualMeasurements()); auto *item = new QTableWidgetItem(settings->GetPathIndividualMeasurements());
item->setToolTip(settings->GetPathIndividualMeasurements()); item->setToolTip(settings->GetPathIndividualMeasurements());
ui->pathTable->setItem(0, 1, item); ui->pathTable->setItem(0, 1, item);
} }
{ {
ui->pathTable->setItem(1, 0, new QTableWidgetItem(tr("My Multisize Measurements"))); ui->pathTable->setItem(1, 0, new QTableWidgetItem(tr("My Multisize Measurements")));
QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathMultisizeMeasurements()); auto *item = new QTableWidgetItem(settings->GetPathMultisizeMeasurements());
item->setToolTip(settings->GetPathMultisizeMeasurements()); item->setToolTip(settings->GetPathMultisizeMeasurements());
ui->pathTable->setItem(1, 1, item); ui->pathTable->setItem(1, 1, item);
} }
{ {
ui->pathTable->setItem(2, 0, new QTableWidgetItem(tr("My Patterns"))); ui->pathTable->setItem(2, 0, new QTableWidgetItem(tr("My Patterns")));
QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathPattern()); auto *item = new QTableWidgetItem(settings->GetPathPattern());
item->setToolTip(settings->GetPathPattern()); item->setToolTip(settings->GetPathPattern());
ui->pathTable->setItem(2, 1, item); ui->pathTable->setItem(2, 1, item);
} }
{ {
ui->pathTable->setItem(3, 0, new QTableWidgetItem(tr("My Templates"))); ui->pathTable->setItem(3, 0, new QTableWidgetItem(tr("My Templates")));
QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathTemplate()); auto *item = new QTableWidgetItem(settings->GetPathTemplate());
item->setToolTip(settings->GetPathTemplate()); item->setToolTip(settings->GetPathTemplate());
ui->pathTable->setItem(3, 1, item); ui->pathTable->setItem(3, 1, item);
} }
{ {
ui->pathTable->setItem(4, 0, new QTableWidgetItem(tr("My Layouts"))); ui->pathTable->setItem(4, 0, new QTableWidgetItem(tr("My Layouts")));
QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathManualLayouts()); auto *item = new QTableWidgetItem(settings->GetPathManualLayouts());
item->setToolTip(settings->GetPathManualLayouts()); item->setToolTip(settings->GetPathManualLayouts());
ui->pathTable->setItem(4, 1, item); ui->pathTable->setItem(4, 1, item);
} }

View file

@ -30,6 +30,8 @@
#include <QWidget> #include <QWidget>
#include "../vmisc/defglobal.h"
namespace Ui namespace Ui
{ {
class PuzzlePreferencesPathPage; class PuzzlePreferencesPathPage;
@ -37,23 +39,24 @@ namespace Ui
class PuzzlePreferencesPathPage : public QWidget class PuzzlePreferencesPathPage : public QWidget
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit PuzzlePreferencesPathPage(QWidget *parent = nullptr); explicit PuzzlePreferencesPathPage(QWidget *parent = nullptr);
virtual ~PuzzlePreferencesPathPage(); ~PuzzlePreferencesPathPage() override;
void Apply(); void Apply();
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
private slots: private slots:
void DefaultPath(); void DefaultPath();
void EditPath(); void EditPath();
private: private:
Q_DISABLE_COPY(PuzzlePreferencesPathPage) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(PuzzlePreferencesPathPage) // NOLINT
Ui::PuzzlePreferencesPathPage *ui; Ui::PuzzlePreferencesPathPage *ui;
void InitTable(); void InitTable();

View file

@ -30,6 +30,8 @@
#include <QDialog> #include <QDialog>
#include "../vmisc/defglobal.h"
namespace Ui namespace Ui
{ {
class DialogPuzzlePreferences; class DialogPuzzlePreferences;
@ -42,19 +44,19 @@ class PuzzlePreferencesLayoutPage;
class DialogPuzzlePreferences : public QDialog class DialogPuzzlePreferences : public QDialog
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit DialogPuzzlePreferences(QWidget *parent = nullptr); explicit DialogPuzzlePreferences(QWidget *parent = nullptr);
virtual ~DialogPuzzlePreferences(); ~DialogPuzzlePreferences() override;
signals: signals:
void UpdateProperties(); void UpdateProperties();
protected: protected:
virtual void showEvent(QShowEvent *event) override; void showEvent(QShowEvent *event) override;
virtual void resizeEvent(QResizeEvent *event) override; void resizeEvent(QResizeEvent *event) override;
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
private slots: private slots:
void Apply(); void Apply();
@ -62,7 +64,8 @@ private slots:
void PageChanged(QListWidgetItem *current, QListWidgetItem *previous); void PageChanged(QListWidgetItem *current, QListWidgetItem *previous);
private: private:
Q_DISABLE_COPY(DialogPuzzlePreferences) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(DialogPuzzlePreferences) // NOLINT
Ui::DialogPuzzlePreferences *ui; Ui::DialogPuzzlePreferences *ui;
bool m_isInitialized{false}; bool m_isInitialized{false};
PuzzlePreferencesConfigurationPage *m_configurationPage; PuzzlePreferencesConfigurationPage *m_configurationPage;

View file

@ -36,14 +36,11 @@
#include <QtDebug> #include <QtDebug>
#ifndef Q_OS_WIN #ifndef Q_OS_WIN
Q_GLOBAL_STATIC_WITH_ARGS(const QString, baseFilenameRegExp, (QLatin1String("^[^\\/]+$"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, baseFilenameRegExp, (QLatin1String("^[^\\/]+$"))) // NOLINT
#else #else
Q_GLOBAL_STATIC_WITH_ARGS(const QString, baseFilenameRegExp, (QLatin1String("^[^\\:?\"*|\\/<>]+$"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, baseFilenameRegExp, (QLatin1String("^[^\\:?\"*|\\/<>]+$"))) // NOLINT
#endif #endif
bool DialogSaveManualLayout::havePdf = false;
bool DialogSaveManualLayout::tested = false;
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
DialogSaveManualLayout::DialogSaveManualLayout(int count, bool consoleExport, const QString &fileName, QWidget *parent) DialogSaveManualLayout::DialogSaveManualLayout(int count, bool consoleExport, const QString &fileName, QWidget *parent)
: VAbstractLayoutDialog(parent), : VAbstractLayoutDialog(parent),
@ -334,7 +331,7 @@ void DialogSaveManualLayout::SetTilesScheme(bool value)
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool DialogSaveManualLayout::IsTilesScheme() const auto DialogSaveManualLayout::IsTilesScheme() const -> bool
{ {
switch(Format()) switch(Format())
{ {
@ -500,6 +497,8 @@ void DialogSaveManualLayout::ShowExample()
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
auto DialogSaveManualLayout::SupportPSTest() -> bool auto DialogSaveManualLayout::SupportPSTest() -> bool
{ {
static bool havePdf = false;
static bool tested = false;
if (!tested) if (!tested)
{ {
havePdf = VLayoutExporter::SupportPDFConversion(); havePdf = VLayoutExporter::SupportPDFConversion();

View file

@ -38,12 +38,12 @@ class DialogSaveManualLayout;
class DialogSaveManualLayout : public VAbstractLayoutDialog class DialogSaveManualLayout : public VAbstractLayoutDialog
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit DialogSaveManualLayout(int count, bool consoleExport, const QString &fileName = QString(), explicit DialogSaveManualLayout(int count, bool consoleExport, const QString &fileName = QString(),
QWidget *parent = nullptr); QWidget *parent = nullptr);
virtual ~DialogSaveManualLayout(); ~DialogSaveManualLayout() override;
auto Path() const -> QString; auto Path() const -> QString;
auto FileName() const -> QString; auto FileName() const -> QString;
@ -66,7 +66,7 @@ public:
auto IsTilesScheme() const -> bool; auto IsTilesScheme() const -> bool;
protected: protected:
virtual void showEvent(QShowEvent *event) override; void showEvent(QShowEvent *event) override;
private slots: private slots:
void Save(); void Save();
@ -74,17 +74,16 @@ private slots:
void ShowExample(); void ShowExample();
private: private:
Q_DISABLE_COPY(DialogSaveManualLayout) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(DialogSaveManualLayout) // NOLINT
Ui::DialogSaveManualLayout *ui; Ui::DialogSaveManualLayout *ui;
int m_count; int m_count;
bool m_isInitialized{false}; bool m_isInitialized{false};
bool m_scaleConnected{true}; bool m_scaleConnected{true};
bool m_consoleExport; bool m_consoleExport;
static bool havePdf; static auto SupportPSTest() -> bool;
static bool tested; static auto InitFormats() -> QVector<std::pair<QString, LayoutExportFormats> >;
static bool SupportPSTest();
static QVector<std::pair<QString, LayoutExportFormats> > InitFormats();
void RemoveFormatFromList(LayoutExportFormats format); void RemoveFormatFromList(LayoutExportFormats format);

View file

@ -28,7 +28,7 @@
#include "vpdialogabout.h" #include "vpdialogabout.h"
#include "ui_vpdialogabout.h" #include "ui_vpdialogabout.h"
#include "../version.h" #include "../vmisc/projectversion.h"
#include "../vmisc/def.h" #include "../vmisc/def.h"
#include "../fervor/fvupdater.h" #include "../fervor/fvupdater.h"
@ -43,7 +43,7 @@
VPDialogAbout::VPDialogAbout(QWidget *parent) VPDialogAbout::VPDialogAbout(QWidget *parent)
:QDialog(parent), :QDialog(parent),
ui(new Ui::VPDialogAbout), ui(new Ui::VPDialogAbout),
isInitialized(false) m_isInitialized(false)
{ {
ui->setupUi(this); ui->setupUi(this);
@ -52,7 +52,7 @@ VPDialogAbout::VPDialogAbout(QWidget *parent)
RetranslateUi(); RetranslateUi();
connect(ui->pushButton_Web_Site, &QPushButton::clicked, this, []() connect(ui->pushButton_Web_Site, &QPushButton::clicked, this, []()
{ {
if ( not QDesktopServices::openUrl(QUrl(VER_COMPANYDOMAIN_STR))) if ( not QDesktopServices::openUrl(QUrl(QStringLiteral(VER_COMPANYDOMAIN_STR))))
{ {
qWarning() << tr("Cannot open your default browser"); qWarning() << tr("Cannot open your default browser");
} }
@ -100,7 +100,7 @@ void VPDialogAbout::showEvent(QShowEvent *event)
return; return;
} }
if (isInitialized) if (m_isInitialized)
{ {
return; return;
} }
@ -109,7 +109,7 @@ void VPDialogAbout::showEvent(QShowEvent *event)
setMaximumSize(size()); setMaximumSize(size());
setMinimumSize(size()); setMinimumSize(size());
isInitialized = true;//first show windows are held m_isInitialized = true;//first show windows are held
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -125,17 +125,17 @@ void VPDialogAbout::FontPointSize(QWidget *w, int pointSize)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPDialogAbout::RetranslateUi() void VPDialogAbout::RetranslateUi()
{ {
ui->label_Puzzle_Version->setText(QString("Puzzle %1").arg(APP_VERSION_STR)); ui->label_Puzzle_Version->setText(QStringLiteral("Puzzle %1").arg(APP_VERSION_STR));
ui->labelBuildRevision->setText(tr("Build revision: %1").arg(BUILD_REVISION)); ui->labelBuildRevision->setText(tr("Build revision: %1").arg(QStringLiteral(BUILD_REVISION)));
ui->label_QT_Version->setText(buildCompatibilityString()); ui->label_QT_Version->setText(buildCompatibilityString());
const QDate date = QLocale::c().toDate(QString(__DATE__).simplified(), QLatin1String("MMM d yyyy")); const QDate date = QLocale::c().toDate(QStringLiteral(__DATE__).simplified(), QStringLiteral("MMM d yyyy"));
ui->label_Puzzle_Built->setText(tr("Built on %1 at %2").arg(date.toString(), __TIME__)); ui->label_Puzzle_Built->setText(tr("Built on %1 at %2").arg(date.toString(), QStringLiteral(__TIME__)));
ui->label_Legal_Stuff->setText(QApplication::translate("InternalStrings", ui->label_Legal_Stuff->setText(QApplication::translate("InternalStrings",
"The program is provided AS IS with NO WARRANTY OF ANY " "The program is provided AS IS with NO WARRANTY OF ANY "
"KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY " "KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY "
"AND FITNESS FOR A PARTICULAR PURPOSE.")); "AND FITNESS FOR A PARTICULAR PURPOSE."));
ui->pushButton_Web_Site->setText(tr("Web site : %1").arg(VER_COMPANYDOMAIN_STR)); ui->pushButton_Web_Site->setText(tr("Web site : %1").arg(QStringLiteral(VER_COMPANYDOMAIN_STR)));
} }

View file

@ -31,6 +31,8 @@
#include <QDialog> #include <QDialog>
#include "../vmisc/defglobal.h"
namespace Ui namespace Ui
{ {
class VPDialogAbout; class VPDialogAbout;
@ -38,22 +40,23 @@ namespace Ui
class VPDialogAbout : public QDialog class VPDialogAbout : public QDialog
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VPDialogAbout(QWidget *parent = nullptr); explicit VPDialogAbout(QWidget *parent = nullptr);
virtual ~VPDialogAbout(); ~VPDialogAbout() override;
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
virtual void showEvent(QShowEvent *event) override; void showEvent(QShowEvent *event) override;
private: private:
Q_DISABLE_COPY(VPDialogAbout) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(VPDialogAbout) // NOLINT
Ui::VPDialogAbout *ui; Ui::VPDialogAbout *ui;
bool isInitialized; bool m_isInitialized;
void FontPointSize(QWidget *w, int pointSize); static void FontPointSize(QWidget *w, int pointSize);
void RetranslateUi(); void RetranslateUi();
}; };

View file

@ -80,13 +80,13 @@ auto StrToGrainlineType(const QString &string) -> GrainlineType
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VPTransformationOrigon::operator==(const VPTransformationOrigon &origin) const auto VPTransformationOrigon::operator==(const VPTransformationOrigon &origin) const -> bool
{ {
return this->origin == origin.origin && custom == origin.custom; return this->origin == origin.origin && custom == origin.custom;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VPTransformationOrigon::operator!=(const VPTransformationOrigon &origin) const auto VPTransformationOrigon::operator!=(const VPTransformationOrigon &origin) const -> bool
{ {
return !VPTransformationOrigon::operator==(origin); return !VPTransformationOrigon::operator==(origin);
} }

View file

@ -55,11 +55,11 @@ auto StrToGrainlineType(const QString &string) -> GrainlineType;
struct VPTransformationOrigon struct VPTransformationOrigon
{ {
QPointF origin{}; QPointF origin{}; // NOLINT(misc-non-private-member-variables-in-classes)
bool custom{false}; bool custom{false}; // NOLINT(misc-non-private-member-variables-in-classes)
bool operator==(const VPTransformationOrigon &origin) const; auto operator==(const VPTransformationOrigon &origin) const -> bool;
bool operator!=(const VPTransformationOrigon &origin) const; auto operator!=(const VPTransformationOrigon &origin) const -> bool;
}; };
#endif // LAYOUTDEF_H #endif // LAYOUTDEF_H

View file

@ -39,7 +39,13 @@
#include <QUndoStack> #include <QUndoStack>
#include <QPixmapCache> #include <QPixmapCache>
Q_LOGGING_CATEGORY(pLayout, "p.layout") QT_WARNING_PUSH
QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes")
QT_WARNING_DISABLE_INTEL(1418)
Q_LOGGING_CATEGORY(pLayout, "p.layout") // NOLINT
QT_WARNING_POP
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VPLayout::VPLayout(QUndoStack *undoStack) : VPLayout::VPLayout(QUndoStack *undoStack) :
@ -118,13 +124,13 @@ void VPLayout::AddPiece(const VPPiecePtr &piece)
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
const QUuid &VPLayout::Uuid() const auto VPLayout::Uuid() const -> const QUuid &
{ {
return m_uuid; return m_uuid;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VPTileFactory *VPLayout::TileFactory() const auto VPLayout::TileFactory() const -> VPTileFactory *
{ {
return m_tileFactory; return m_tileFactory;
} }
@ -166,7 +172,7 @@ auto VPLayout::WatermarkData() const -> VWatermarkData
data.invalidFile = true; data.invalidFile = true;
data.opacity = 20; data.opacity = 20;
data.showImage = true; data.showImage = true;
data.path = "fake.png"; data.path = QStringLiteral("fake.png");
data.showText = false; data.showText = false;
return data; return data;
} }
@ -254,7 +260,7 @@ auto VPLayout::AddSheet(const VPSheetPtr &sheet) -> VPSheetPtr
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QList<VPSheetPtr> VPLayout::GetAllSheets() const auto VPLayout::GetAllSheets() const -> QList<VPSheetPtr>
{ {
return m_sheets; return m_sheets;
} }

View file

@ -32,7 +32,6 @@
#include <QMap> #include <QMap>
#include <QUuid> #include <QUuid>
#include "def.h"
#include "vplayoutsettings.h" #include "vplayoutsettings.h"
#include "layoutdef.h" #include "layoutdef.h"
@ -44,9 +43,9 @@ struct VWatermarkData;
class VPLayout : public QObject class VPLayout : public QObject
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
virtual ~VPLayout() = default; ~VPLayout() override = default;
static auto CreateLayout(QUndoStack *undoStack) -> VPLayoutPtr; static auto CreateLayout(QUndoStack *undoStack) -> VPLayoutPtr;
static void AddPiece(const VPLayoutPtr &layout, const VPPiecePtr &piece); static void AddPiece(const VPLayoutPtr &layout, const VPPiecePtr &piece);
@ -83,7 +82,7 @@ public:
auto PiecesForSheet(const VPSheetPtr &sheet) const -> QList<VPPiecePtr>; auto PiecesForSheet(const VPSheetPtr &sheet) const -> QList<VPPiecePtr>;
auto PiecesForSheet(const QUuid &uuid) const -> QList<VPPiecePtr>; auto PiecesForSheet(const QUuid &uuid) const -> QList<VPPiecePtr>;
QUndoStack *UndoStack() const; auto UndoStack() const -> QUndoStack *;
void SetUndoStack(QUndoStack *newUndoStack); void SetUndoStack(QUndoStack *newUndoStack);
@ -100,7 +99,7 @@ public:
auto IsSheetsUniform() const -> bool; auto IsSheetsUniform() const -> bool;
const QUuid &Uuid() const; auto Uuid() const -> const QUuid &;
signals: signals:
void PieceSheetChanged(const VPPiecePtr &piece); void PieceSheetChanged(const VPPiecePtr &piece);
@ -119,7 +118,8 @@ protected:
void AddPiece(const VPPiecePtr &piece); void AddPiece(const VPPiecePtr &piece);
private: private:
Q_DISABLE_COPY(VPLayout) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(VPLayout) // NOLINT
QMap<QString, VPPiecePtr> m_pieces{}; QMap<QString, VPPiecePtr> m_pieces{};
@ -137,6 +137,6 @@ private:
QUuid m_uuid{QUuid::createUuid()}; QUuid m_uuid{QUuid::createUuid()};
}; };
Q_DECLARE_METATYPE(VPLayoutPtr) Q_DECLARE_METATYPE(VPLayoutPtr) // NOLINT
#endif // VPLAYOUT_H #endif // VPLAYOUT_H

View file

@ -29,7 +29,6 @@
#include <QtMath> #include <QtMath>
#include "../vmisc/def.h"
#include "vpsheet.h" #include "vpsheet.h"
#include "vplayout.h" #include "vplayout.h"
#include "../vlayout/vtextmanager.h" #include "../vlayout/vtextmanager.h"
@ -40,7 +39,13 @@
#include <QPainter> #include <QPainter>
#include <QPainterPath> #include <QPainterPath>
Q_LOGGING_CATEGORY(pPiece, "p.piece") QT_WARNING_PUSH
QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes")
QT_WARNING_DISABLE_INTEL(1418)
Q_LOGGING_CATEGORY(pPiece, "p.piece") // NOLINT
QT_WARNING_POP
namespace namespace
{ {
@ -207,7 +212,7 @@ void VPPiece::SetPosition(QPointF point)
auto VPPiece::GetPosition() -> QPointF auto VPPiece::GetPosition() -> QPointF
{ {
QTransform matrix = GetMatrix(); QTransform matrix = GetMatrix();
return QPointF(matrix.dx(), matrix.dy()); return {matrix.dx(), matrix.dy()};
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -30,8 +30,6 @@
#include <QTimer> #include <QTimer>
#include "vpapplication.h" #include "vpapplication.h"
#include "../fervor/fvupdater.h"
#include "../vmisc/vsysexits.h"
#include "../vmisc/def.h" #include "../vmisc/def.h"
@ -44,7 +42,7 @@
# include "../vmisc/appimage.h" # include "../vmisc/appimage.h"
#endif // defined(APPIMAGE) && defined(Q_OS_LINUX) #endif // defined(APPIMAGE) && defined(Q_OS_LINUX)
int main(int argc, char *argv[]) auto main(int argc, char *argv[]) -> int
{ {
#if defined(APPIMAGE) && defined(Q_OS_LINUX) #if defined(APPIMAGE) && defined(Q_OS_LINUX)
/* Fix path to ICU_DATA when run AppImage.*/ /* Fix path to ICU_DATA when run AppImage.*/
@ -52,15 +50,15 @@ int main(int argc, char *argv[])
auto FreeMemory = qScopeGuard([exe_dir] {free(exe_dir);}); auto FreeMemory = qScopeGuard([exe_dir] {free(exe_dir);});
#endif // defined(APPIMAGE) && defined(Q_OS_LINUX) #endif // defined(APPIMAGE) && defined(Q_OS_LINUX)
Q_INIT_RESOURCE(puzzleicon); Q_INIT_RESOURCE(puzzleicon); // NOLINT
Q_INIT_RESOURCE(theme); Q_INIT_RESOURCE(theme); // NOLINT
Q_INIT_RESOURCE(icon); Q_INIT_RESOURCE(icon); // NOLINT
Q_INIT_RESOURCE(schema); Q_INIT_RESOURCE(schema); // NOLINT
Q_INIT_RESOURCE(flags); Q_INIT_RESOURCE(flags); // NOLINT
Q_INIT_RESOURCE(style); Q_INIT_RESOURCE(style); // NOLINT
Q_INIT_RESOURCE(cursor); Q_INIT_RESOURCE(cursor); // NOLINT
QT_REQUIRE_VERSION(argc, argv, "5.4.0")// clazy:exclude=qstring-arg,qstring-allocations QT_REQUIRE_VERSION(argc, argv, "5.4.0")// clazy:exclude=qstring-arg,qstring-allocations NOLINT
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN)
VAbstractApplication::WinAttachConsole(); VAbstractApplication::WinAttachConsole();
@ -82,5 +80,5 @@ int main(int argc, char *argv[])
} }
#endif // defined(APPIMAGE) && defined(Q_OS_LINUX) #endif // defined(APPIMAGE) && defined(Q_OS_LINUX)
return app.exec(); return VPApplication::exec();
} }

View file

@ -55,12 +55,19 @@
#include "undocommands/vpundomovepieceonsheet.h" #include "undocommands/vpundomovepieceonsheet.h"
#include <QLoggingCategory> #include <QLoggingCategory>
Q_LOGGING_CATEGORY(pGraphicsPiece, "p.graphicsPiece")
QT_WARNING_PUSH
QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes")
QT_WARNING_DISABLE_INTEL(1418)
Q_LOGGING_CATEGORY(pGraphicsPiece, "p.graphicsPiece") // NOLINT
QT_WARNING_POP
namespace namespace
{ {
QColor mainColor = Qt::black; Q_GLOBAL_STATIC_WITH_ARGS(QColor, mainColor, (Qt::black)) // NOLINT
QColor errorColor = Qt::red; Q_GLOBAL_STATIC_WITH_ARGS(QColor, errorColor, (Qt::red)) // NOLINT
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
inline auto LineMatrix(const VPPiecePtr &piece, const QPointF &topLeft, qreal angle, const QPointF &linePos, inline auto LineMatrix(const VPPiecePtr &piece, const QPointF &topLeft, qreal angle, const QPointF &linePos,
@ -135,6 +142,12 @@ inline auto LineAlign(const TextLine& tl, const QString &text, const QFontMetric
return dX; return dX;
} }
//---------------------------------------------------------------------------------------------------------------------
inline auto SelectionBrush() -> QBrush
{
return {QColor(255, 160, 160, 60)};
}
} // namespace } // namespace
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -229,7 +242,7 @@ void VPGraphicsPiece::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
GroupMove(event->pos()); GroupMove(event->pos());
m_moveStartPoint = event->pos(); m_moveStartPoint = event->pos();
allowChangeMerge = true; m_allowChangeMerge = true;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -253,7 +266,7 @@ void VPGraphicsPiece::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
if (layout->LayoutSettings().GetStickyEdges() && m_hasStickyPosition) if (layout->LayoutSettings().GetStickyEdges() && m_hasStickyPosition)
{ {
auto *command = new VPUndoPieceMove(piece, m_stickyTranslateX, m_stickyTranslateY, auto *command = new VPUndoPieceMove(piece, m_stickyTranslateX, m_stickyTranslateY,
allowChangeMerge); m_allowChangeMerge);
layout->UndoStack()->push(command); layout->UndoStack()->push(command);
SetStickyPoints(QVector<QPointF>()); SetStickyPoints(QVector<QPointF>());
@ -261,7 +274,7 @@ void VPGraphicsPiece::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
} }
} }
allowChangeMerge = false; m_allowChangeMerge = false;
m_hasStickyPosition = false; m_hasStickyPosition = false;
} }
} }
@ -441,9 +454,6 @@ void VPGraphicsPiece::InitPieceLabel(const QVector<QPointF> &labelShape, const V
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPGraphicsPiece::PaintPiece(QPainter *painter) void VPGraphicsPiece::PaintPiece(QPainter *painter)
{ {
QBrush noBrush = m_hoverMode ? QBrush(QColor(199, 244, 249, 60)) : QBrush(Qt::NoBrush);
QBrush selectionBrush(QColor(255, 160, 160, 60));
m_seamLine = QPainterPath(); m_seamLine = QPainterPath();
m_cuttingLine = QPainterPath(); m_cuttingLine = QPainterPath();
m_grainline = QPainterPath(); m_grainline = QPainterPath();
@ -459,6 +469,29 @@ void VPGraphicsPiece::PaintPiece(QPainter *painter)
} }
// initialises the seam line // initialises the seam line
PaintSeamLine(painter, piece);
// initiliases the cutting line
PaintCuttingLine(painter, piece);
// initialises the grainline
PaintGrainline(painter, piece);
// initialises the internal paths
PaintInternalPaths(painter, piece);
// initialises the passmarks
PaintPassmarks(painter, piece);
// initialises the place labels (buttons etc)
PaintPlaceLabels(painter, piece);
PaintStickyPath(painter);
}
//---------------------------------------------------------------------------------------------------------------------
void VPGraphicsPiece::PaintSeamLine(QPainter *painter, const VPPiecePtr &piece)
{
if (not piece->IsHideMainPath() || not piece->IsSeamAllowance()) if (not piece->IsHideMainPath() || not piece->IsSeamAllowance())
{ {
QVector<QPointF> seamLinePoints = piece->GetMappedContourPoints(); QVector<QPointF> seamLinePoints = piece->GetMappedContourPoints();
@ -473,14 +506,17 @@ void VPGraphicsPiece::PaintPiece(QPainter *painter)
if (painter != nullptr) if (painter != nullptr)
{ {
painter->save(); painter->save();
painter->setBrush(piece->IsSelected() ? selectionBrush : noBrush); painter->setBrush(piece->IsSelected() ? SelectionBrush() : NoBrush());
painter->drawPath(m_seamLine); painter->drawPath(m_seamLine);
painter->restore(); painter->restore();
} }
} }
} }
}
// initiliases the cutting line //---------------------------------------------------------------------------------------------------------------------
void VPGraphicsPiece::PaintCuttingLine(QPainter *painter, const VPPiecePtr &piece)
{
if (piece->IsSeamAllowance() && not piece->IsSeamAllowanceBuiltIn()) if (piece->IsSeamAllowance() && not piece->IsSeamAllowanceBuiltIn())
{ {
QVector<QPointF> cuttingLinepoints = piece->GetMappedSeamAllowancePoints(); QVector<QPointF> cuttingLinepoints = piece->GetMappedSeamAllowancePoints();
@ -495,14 +531,17 @@ void VPGraphicsPiece::PaintPiece(QPainter *painter)
if (painter != nullptr) if (painter != nullptr)
{ {
painter->save(); painter->save();
painter->setBrush(piece->IsSelected() ? selectionBrush : noBrush); painter->setBrush(piece->IsSelected() ? SelectionBrush() : NoBrush());
painter->drawPath(m_cuttingLine); painter->drawPath(m_cuttingLine);
painter->restore(); painter->restore();
} }
} }
} }
}
// initialises the grainline //---------------------------------------------------------------------------------------------------------------------
void VPGraphicsPiece::PaintGrainline(QPainter *painter, const VPPiecePtr &piece)
{
if(piece->IsGrainlineEnabled()) if(piece->IsGrainlineEnabled())
{ {
QVector<QPointF> grainLinepoints = piece->GetMappedGrainline(); QVector<QPointF> grainLinepoints = piece->GetMappedGrainline();
@ -519,16 +558,19 @@ void VPGraphicsPiece::PaintPiece(QPainter *painter)
painter->save(); painter->save();
// here to fill the grainlines arrow. Not wanted for mvp // here to fill the grainlines arrow. Not wanted for mvp
// later maybe if it's configurable // later maybe if it's configurable
// painter->setBrush(blackBrush); // painter->setBrush(blackBrush);
painter->setBrush(noBrush); painter->setBrush(NoBrush());
painter->drawPath(m_grainline); painter->drawPath(m_grainline);
painter->restore(); painter->restore();
} }
} }
} }
}
// initialises the internal paths //---------------------------------------------------------------------------------------------------------------------
void VPGraphicsPiece::PaintInternalPaths(QPainter *painter, const VPPiecePtr &piece)
{
QVector<VLayoutPiecePath> internalPaths = piece->GetInternalPaths(); QVector<VLayoutPiecePath> internalPaths = piece->GetInternalPaths();
for (const auto& piecePath : internalPaths) for (const auto& piecePath : internalPaths)
{ {
@ -545,8 +587,11 @@ void VPGraphicsPiece::PaintPiece(QPainter *painter)
} }
m_internalPaths.addPath(path); m_internalPaths.addPath(path);
} }
}
// initialises the passmarks //---------------------------------------------------------------------------------------------------------------------
void VPGraphicsPiece::PaintPassmarks(QPainter *painter, const VPPiecePtr &piece)
{
QVector<VLayoutPassmark> passmarks = piece->GetMappedPassmarks(); QVector<VLayoutPassmark> passmarks = piece->GetMappedPassmarks();
for(auto &passmark : passmarks) for(auto &passmark : passmarks)
{ {
@ -560,15 +605,18 @@ void VPGraphicsPiece::PaintPiece(QPainter *painter)
if (painter != nullptr) if (painter != nullptr)
{ {
painter->save(); painter->save();
painter->setBrush(noBrush); painter->setBrush(NoBrush());
painter->drawPath(passmarkPath); painter->drawPath(passmarkPath);
painter->restore(); painter->restore();
} }
m_passmarks.addPath(passmarkPath); m_passmarks.addPath(passmarkPath);
} }
}
// initialises the place labels (buttons etc) //---------------------------------------------------------------------------------------------------------------------
void VPGraphicsPiece::PaintPlaceLabels(QPainter *painter, const VPPiecePtr &piece)
{
QVector<VLayoutPlaceLabel> placeLabels = piece->GetMappedPlaceLabels(); QVector<VLayoutPlaceLabel> placeLabels = piece->GetMappedPlaceLabels();
for(auto &placeLabel : placeLabels) for(auto &placeLabel : placeLabels)
{ {
@ -577,14 +625,18 @@ void VPGraphicsPiece::PaintPiece(QPainter *painter)
if (painter != nullptr) if (painter != nullptr)
{ {
painter->save(); painter->save();
painter->setBrush(noBrush); painter->setBrush(NoBrush());
painter->drawPath(path); painter->drawPath(path);
painter->restore(); painter->restore();
} }
m_placeLabels.addPath(path); m_placeLabels.addPath(path);
} }
}
//---------------------------------------------------------------------------------------------------------------------
void VPGraphicsPiece::PaintStickyPath(QPainter *painter)
{
if (not m_stickyPoints.isEmpty()) if (not m_stickyPoints.isEmpty())
{ {
m_stickyPath.moveTo(ConstFirst(m_stickyPoints)); m_stickyPath.moveTo(ConstFirst(m_stickyPoints));
@ -600,7 +652,7 @@ void VPGraphicsPiece::PaintPiece(QPainter *painter)
QPen pen = painter->pen(); QPen pen = painter->pen();
pen.setStyle(Qt::DashLine); pen.setStyle(Qt::DashLine);
pen.setColor(mainColor); pen.setColor(*mainColor);
painter->setPen(pen); painter->setPen(pen);
painter->drawPath(m_stickyPath); painter->drawPath(m_stickyPath);
@ -648,7 +700,7 @@ void VPGraphicsPiece::GroupMove(const QPointF &pos)
if (pieces.size() == 1) if (pieces.size() == 1)
{ {
const VPPiecePtr &p = ConstFirst(pieces); const VPPiecePtr &p = ConstFirst(pieces);
auto *command = new VPUndoPieceMove(piece, newPos.x(), newPos.y(), allowChangeMerge); auto *command = new VPUndoPieceMove(piece, newPos.x(), newPos.y(), m_allowChangeMerge);
layout->UndoStack()->push(command); layout->UndoStack()->push(command);
if (layout->LayoutSettings().GetStickyEdges()) if (layout->LayoutSettings().GetStickyEdges())
@ -672,7 +724,7 @@ void VPGraphicsPiece::GroupMove(const QPointF &pos)
} }
else if (pieces.size() > 1) else if (pieces.size() > 1)
{ {
auto *command = new VPUndoPiecesMove(pieces, newPos.x(), newPos.y(), allowChangeMerge); auto *command = new VPUndoPiecesMove(pieces, newPos.x(), newPos.y(), m_allowChangeMerge);
layout->UndoStack()->push(command); layout->UndoStack()->push(command);
} }
} }
@ -683,13 +735,13 @@ auto VPGraphicsPiece::PieceColor() const -> QColor
VPPiecePtr piece = m_piece.toStrongRef(); VPPiecePtr piece = m_piece.toStrongRef();
if (piece.isNull()) if (piece.isNull())
{ {
return mainColor; return *mainColor;
} }
VPLayoutPtr layout = piece->Layout(); VPLayoutPtr layout = piece->Layout();
if (layout.isNull()) if (layout.isNull())
{ {
return mainColor; return *mainColor;
} }
bool outOfBound = false; bool outOfBound = false;
@ -706,10 +758,16 @@ auto VPGraphicsPiece::PieceColor() const -> QColor
if (outOfBound || superposition) if (outOfBound || superposition)
{ {
return errorColor; return *errorColor;
} }
return mainColor; return *mainColor;
}
//---------------------------------------------------------------------------------------------------------------------
auto VPGraphicsPiece::NoBrush() const -> QBrush
{
return m_hoverMode ? QBrush(QColor(199, 244, 249, 60)) : QBrush(Qt::NoBrush);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -100,7 +100,7 @@ private:
QPointF m_moveStartPoint{}; QPointF m_moveStartPoint{};
QPointF m_rotationStartPoint{}; QPointF m_rotationStartPoint{};
bool allowChangeMerge{false}; bool m_allowChangeMerge{false};
QVector<QPointF> m_stickyPoints{}; QVector<QPointF> m_stickyPoints{};
QPainterPath m_stickyPath{}; QPainterPath m_stickyPath{};
@ -119,10 +119,19 @@ private:
void InitLabels(); void InitLabels();
void InitPieceLabel(const QVector<QPointF> &labelShape, const VTextManager &tm); void InitPieceLabel(const QVector<QPointF> &labelShape, const VTextManager &tm);
void PaintPiece(QPainter *painter=nullptr); void PaintPiece(QPainter *painter=nullptr);
void PaintSeamLine(QPainter *painter, const VPPiecePtr &piece);
void PaintCuttingLine(QPainter *painter, const VPPiecePtr &piece);
void PaintGrainline(QPainter *painter, const VPPiecePtr &piece);
void PaintInternalPaths(QPainter *painter, const VPPiecePtr &piece);
void PaintPassmarks(QPainter *painter, const VPPiecePtr &piece);
void PaintPlaceLabels(QPainter *painter, const VPPiecePtr &piece);
void PaintStickyPath(QPainter *painter);
void GroupMove(const QPointF &pos); void GroupMove(const QPointF &pos);
auto PieceColor() const -> QColor; auto PieceColor() const -> QColor;
auto NoBrush() const -> QBrush;
}; };
#endif // VPGRAPHICSPIECE_H #endif // VPGRAPHICSPIECE_H

View file

@ -40,6 +40,7 @@
#include "../vwidgets/global.h" #include "../vwidgets/global.h"
#include "../layout/vplayout.h" #include "../layout/vplayout.h"
#include "../layout/vppiece.h" #include "../layout/vppiece.h"
#include "../layout/vpsheet.h"
#include "../undocommands/vpundopiecerotate.h" #include "../undocommands/vpundopiecerotate.h"
#include "../undocommands/vpundooriginmove.h" #include "../undocommands/vpundooriginmove.h"
#include "qgraphicsscene.h" #include "qgraphicsscene.h"
@ -53,8 +54,8 @@ constexpr qreal penWidth = 2;
const qreal centerRadius1 = 5; const qreal centerRadius1 = 5;
const qreal centerRadius2 = 10; const qreal centerRadius2 = 10;
const QColor defaultColor = Qt::black; Q_GLOBAL_STATIC_WITH_ARGS(const QColor, defaultColor, (Qt::black)) // NOLINT
const QColor hoverColor = Qt::green; Q_GLOBAL_STATIC_WITH_ARGS(const QColor, hoverColor, (Qt::green)) // NOLINT
auto TransformationOrigin(const VPLayoutPtr &layout, const QRectF &boundingRect) -> VPTransformationOrigon auto TransformationOrigin(const VPLayoutPtr &layout, const QRectF &boundingRect) -> VPTransformationOrigon
{ {
@ -83,7 +84,7 @@ auto TransformationOrigin(const VPLayoutPtr &layout, const QRectF &boundingRect)
VPGraphicsTransformationOrigin::VPGraphicsTransformationOrigin(const VPLayoutPtr &layout, QGraphicsItem *parent) VPGraphicsTransformationOrigin::VPGraphicsTransformationOrigin(const VPLayoutPtr &layout, QGraphicsItem *parent)
: QGraphicsObject(parent), : QGraphicsObject(parent),
m_layout(layout), m_layout(layout),
m_color(defaultColor) m_color(*defaultColor)
{ {
SCASSERT(m_layout != nullptr) SCASSERT(m_layout != nullptr)
setCursor(Qt::OpenHandCursor); setCursor(Qt::OpenHandCursor);
@ -209,14 +210,14 @@ void VPGraphicsTransformationOrigin::mouseReleaseEvent(QGraphicsSceneMouseEvent
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPGraphicsTransformationOrigin::hoverEnterEvent(QGraphicsSceneHoverEvent *event) void VPGraphicsTransformationOrigin::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
{ {
m_color = hoverColor; m_color = *hoverColor;
QGraphicsObject::hoverEnterEvent(event); QGraphicsObject::hoverEnterEvent(event);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPGraphicsTransformationOrigin::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) void VPGraphicsTransformationOrigin::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{ {
m_color = defaultColor; m_color = *defaultColor;
QGraphicsObject::hoverEnterEvent(event); QGraphicsObject::hoverEnterEvent(event);
} }
@ -419,7 +420,7 @@ void VPGraphicsPieceControls::mousePressEvent(QGraphicsSceneMouseEvent *event)
QGraphicsView *view = ItemView(); QGraphicsView *view = ItemView();
if (view != nullptr) if (view != nullptr)
{ {
setCursor(view->viewport()->cursor()); setCursor(view->viewport()->cursor()); // clazy:exclude=clazy-qt6-deprecated-api-fixes
} }
event->ignore(); event->ignore();
} }
@ -502,7 +503,7 @@ void VPGraphicsPieceControls::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
QGraphicsView *view = ItemView(); QGraphicsView *view = ItemView();
if (view != nullptr) if (view != nullptr)
{ {
setCursor(view->viewport()->cursor()); setCursor(view->viewport()->cursor()); // clazy:exclude=clazy-qt6-deprecated-api-fixes
} }
} }
@ -782,7 +783,7 @@ void VPGraphicsPieceControls::UpdateCursor(VPHandleCorner corner)
QGraphicsView *view = ItemView(); QGraphicsView *view = ItemView();
if (view != nullptr) if (view != nullptr)
{ {
setCursor(view->viewport()->cursor()); setCursor(view->viewport()->cursor()); // clazy:exclude=clazy-qt6-deprecated-api-fixes
} }
} }
} }

View file

@ -32,7 +32,7 @@
#include <QGraphicsObject> #include <QGraphicsObject>
#include "scenedef.h" #include "scenedef.h"
#include "../layout/vpsheet.h" #include "../layout/layoutdef.h"
#if QT_VERSION < QT_VERSION_CHECK(5, 13, 0) #if QT_VERSION < QT_VERSION_CHECK(5, 13, 0)
#include "../vmisc/defglobal.h" #include "../vmisc/defglobal.h"
@ -64,6 +64,7 @@ class VPGraphicsTransformationOrigin : public QGraphicsObject
Q_OBJECT // NOLINT Q_OBJECT // NOLINT
public: public:
explicit VPGraphicsTransformationOrigin(const VPLayoutPtr &layout, QGraphicsItem * parent = nullptr); explicit VPGraphicsTransformationOrigin(const VPLayoutPtr &layout, QGraphicsItem * parent = nullptr);
~VPGraphicsTransformationOrigin() override = default;
auto type() const -> int override {return Type;} auto type() const -> int override {return Type;}
enum { Type = UserType + static_cast<int>(PGraphicsItem::TransformationOrigin)}; enum { Type = UserType + static_cast<int>(PGraphicsItem::TransformationOrigin)};
@ -86,6 +87,7 @@ protected:
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override; void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override;
private: private:
// cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(VPGraphicsTransformationOrigin) // NOLINT Q_DISABLE_COPY_MOVE(VPGraphicsTransformationOrigin) // NOLINT
bool m_originVisible{true}; bool m_originVisible{true};
@ -103,6 +105,7 @@ class VPGraphicsPieceControls : public QGraphicsObject
Q_OBJECT // NOLINT Q_OBJECT // NOLINT
public: public:
explicit VPGraphicsPieceControls(const VPLayoutPtr &layout, QGraphicsItem * parent = nullptr); explicit VPGraphicsPieceControls(const VPLayoutPtr &layout, QGraphicsItem * parent = nullptr);
~VPGraphicsPieceControls() override = default;
auto type() const -> int override {return Type;} auto type() const -> int override {return Type;}
enum { Type = UserType + static_cast<int>(PGraphicsItem::Handles)}; enum { Type = UserType + static_cast<int>(PGraphicsItem::Handles)};

View file

@ -33,6 +33,7 @@
#include <QPainter> #include <QPainter>
#include "../layout/layoutdef.h" #include "../layout/layoutdef.h"
#include "../vmisc/defglobal.h"
class VPLayout; class VPLayout;
@ -40,7 +41,7 @@ class VPGraphicsSheet : public QGraphicsItem
{ {
public: public:
explicit VPGraphicsSheet(const VPLayoutPtr &layout, QGraphicsItem *parent = nullptr); explicit VPGraphicsSheet(const VPLayoutPtr &layout, QGraphicsItem *parent = nullptr);
~VPGraphicsSheet()=default; ~VPGraphicsSheet() override =default;
auto boundingRect() const -> QRectF override; auto boundingRect() const -> QRectF override;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
@ -63,7 +64,8 @@ public:
void RefreshBoundingRect(); void RefreshBoundingRect();
private: private:
Q_DISABLE_COPY(VPGraphicsSheet) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(VPGraphicsSheet) // NOLINT
VPLayoutWeakPtr m_layout{}; VPLayoutWeakPtr m_layout{};

View file

@ -34,14 +34,12 @@
#include <QMenu> #include <QMenu>
#include <QUndoStack> #include <QUndoStack>
#include "../vptilefactory.h"
#include "../carousel/vpmimedatapiece.h" #include "../carousel/vpmimedatapiece.h"
#include "../layout/vplayout.h" #include "../layout/vplayout.h"
#include "../layout/vpsheet.h" #include "../layout/vpsheet.h"
#include "../layout/vppiece.h" #include "../layout/vppiece.h"
#include "../vwidgets/vmaingraphicsscene.h" #include "../vwidgets/vmaingraphicsscene.h"
#include "undocommands/vpundopiecezvaluemove.h" #include "undocommands/vpundopiecezvaluemove.h"
#include "vptilefactory.h"
#include "vpgraphicspiece.h" #include "vpgraphicspiece.h"
#include "vpgraphicspiececontrols.h" #include "vpgraphicspiececontrols.h"
@ -53,14 +51,21 @@
#include <QLoggingCategory> #include <QLoggingCategory>
Q_LOGGING_CATEGORY(pMainGraphicsView, "p.mainGraphicsView") QT_WARNING_PUSH
QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes")
QT_WARNING_DISABLE_INTEL(1418)
Q_LOGGING_CATEGORY(pMainGraphicsView, "p.mainGraphicsView") // NOLINT
QT_WARNING_POP
namespace namespace
{ {
QT_WARNING_PUSH QT_WARNING_PUSH
QT_WARNING_DISABLE_CLANG("-Wenum-enum-conversion") QT_WARNING_DISABLE_CLANG("-Wenum-enum-conversion")
const QKeySequence restoreOriginShortcut = QKeySequence(Qt::ControlModifier + Qt::Key_Asterisk); Q_GLOBAL_STATIC_WITH_ARGS(const QKeySequence, restoreOriginShortcut, // NOLINT
(QKeySequence(Qt::ControlModifier + Qt::Key_Asterisk)))
QT_WARNING_POP QT_WARNING_POP
} }
@ -82,7 +87,7 @@ VPMainGraphicsView::VPMainGraphicsView(const VPLayoutPtr &layout, QWidget *paren
connect(layout.data(), &VPLayout::ActiveSheetChanged, this, &VPMainGraphicsView::on_ActiveSheetChanged); connect(layout.data(), &VPLayout::ActiveSheetChanged, this, &VPMainGraphicsView::on_ActiveSheetChanged);
auto *restoreOrigin = new QAction(this); auto *restoreOrigin = new QAction(this);
restoreOrigin->setShortcut(restoreOriginShortcut); restoreOrigin->setShortcut(*restoreOriginShortcut);
connect(restoreOrigin, &QAction::triggered, this, &VPMainGraphicsView::RestoreOrigin); connect(restoreOrigin, &QAction::triggered, this, &VPMainGraphicsView::RestoreOrigin);
this->addAction(restoreOrigin); this->addAction(restoreOrigin);
} }
@ -205,194 +210,88 @@ void VPMainGraphicsView::dropEvent(QDropEvent *event)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPMainGraphicsView::keyPressEvent(QKeyEvent *event) void VPMainGraphicsView::keyPressEvent(QKeyEvent *event)
{ {
if(event->key() == Qt::Key_Backspace || event->key() == Qt::Key_Delete) const bool shiftModifier = (event->modifiers() & Qt::ShiftModifier) != 0U;
const bool controlModifier = (event->modifiers() & Qt::ControlModifier) != 0U;
const bool altModifier = (event->modifiers() & Qt::AltModifier) != 0U;
switch(event->key())
{ {
VPLayoutPtr layout = m_layout.toStrongRef(); case Qt::Key_Backspace:
if (layout.isNull()) case Qt::Key_Delete:
{ RemovePiece();
return; break;
} case Qt::Key_Left:
shiftModifier ? TranslatePiecesOn(-10, 0) : TranslatePiecesOn(-1, 0);
VPSheetPtr sheet = layout->GetFocusedSheet(); break;
if (sheet.isNull()) case Qt::Key_Right:
{ shiftModifier ? TranslatePiecesOn(10, 0) : TranslatePiecesOn(1, 0);
return ; break;
} case Qt::Key_Up:
shiftModifier ? TranslatePiecesOn(0, -10) : TranslatePiecesOn(0, -1);
const QList<VPGraphicsPiece *> &graphicsPieces = sheet->SceneData()->GraphicsPieces(); break;
for(auto *graphicsPiece : graphicsPieces) case Qt::Key_Down:
{ shiftModifier ? TranslatePiecesOn(0, 10) : TranslatePiecesOn(0, 1);
VPPiecePtr piece = graphicsPiece->GetPiece(); break;
case Qt::Key_BracketLeft:
if(not piece.isNull() && piece->IsSelected()) if(controlModifier)
{ {
piece->SetSelected(false); RotatePiecesByAngle(90);
VPLayoutPtr layout = m_layout.toStrongRef();
if (not layout.isNull())
{
emit layout->PieceSelectionChanged(piece);
auto *command = new VPUndoMovePieceOnSheet(VPSheetPtr(), piece);
layout->UndoStack()->push(command);
}
} }
} else if(altModifier)
} {
else if (event->key() == Qt::Key_Left) RotatePiecesByAngle(1);
{ }
if((event->modifiers() & Qt::ShiftModifier) != 0U) else
{ {
TranslatePiecesOn(-10, 0); RotatePiecesByAngle(15);
} }
else break;
{ case Qt::Key_BracketRight:
TranslatePiecesOn(-1, 0); if(controlModifier)
} {
} RotatePiecesByAngle(-90);
else if (event->key() == Qt::Key_Right) }
{ else if(altModifier)
if((event->modifiers() & Qt::ShiftModifier) != 0U) {
{ RotatePiecesByAngle(-1);
TranslatePiecesOn(10, 0); }
} else
else {
{ RotatePiecesByAngle(-15);
TranslatePiecesOn(1, 0); }
} break;
} case Qt::Key_Home:
else if (event->key() == Qt::Key_Up) ZValueMove(static_cast<int>(ML::ZValueMove::Top));
{ break;
if((event->modifiers() & Qt::ShiftModifier) != 0U) case Qt::Key_PageUp:
{ ZValueMove(static_cast<int>(ML::ZValueMove::Up));
TranslatePiecesOn(0, -10); break;
} case Qt::Key_PageDown:
else ZValueMove(static_cast<int>(ML::ZValueMove::Down));
{ break;
TranslatePiecesOn(0, -1); case Qt::Key_End:
} ZValueMove(static_cast<int>(ML::ZValueMove::Bottom));
} break;
else if (event->key() == Qt::Key_Down) default:
{ break;
if((event->modifiers() & Qt::ShiftModifier) != 0U)
{
TranslatePiecesOn(0, 10);
}
else
{
TranslatePiecesOn(0, 1);
}
}
else if (event->key() == Qt::Key_BracketLeft)
{
if((event->modifiers() & Qt::ControlModifier) != 0U)
{
RotatePiecesByAngle(90);
}
else if((event->modifiers() & Qt::AltModifier) != 0U)
{
RotatePiecesByAngle(1);
}
else
{
RotatePiecesByAngle(15);
}
}
else if (event->key() == Qt::Key_BracketRight)
{
if((event->modifiers() & Qt::ControlModifier) != 0U)
{
RotatePiecesByAngle(-90);
}
else if((event->modifiers() & Qt::AltModifier) != 0U)
{
RotatePiecesByAngle(-1);
}
else
{
RotatePiecesByAngle(-15);
}
}
else if (event->key() == Qt::Key_Home)
{
ZValueMove(static_cast<int>(ML::ZValueMove::Top));
}
else if (event->key() == Qt::Key_PageUp)
{
ZValueMove(static_cast<int>(ML::ZValueMove::Up));
}
else if (event->key() == Qt::Key_PageDown)
{
ZValueMove(static_cast<int>(ML::ZValueMove::Down));
}
else if (event->key() == Qt::Key_End)
{
ZValueMove(static_cast<int>(ML::ZValueMove::Bottom));
} }
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPMainGraphicsView::keyReleaseEvent(QKeyEvent *event) void VPMainGraphicsView::keyReleaseEvent(QKeyEvent *event)
{ {
if (event->key() == Qt::Key_Left || switch(event->key())
event->key() == Qt::Key_Right ||
event->key() == Qt::Key_Up ||
event->key() == Qt::Key_Down ||
event->key() == Qt::Key_BracketLeft ||
event->key() == Qt::Key_BracketRight)
{ {
if (not event->isAutoRepeat()) case Qt::Key_Left:
{ case Qt::Key_Right:
VPLayoutPtr layout = m_layout.toStrongRef(); case Qt::Key_Up:
if (layout.isNull()) case Qt::Key_Down:
{ case Qt::Key_BracketLeft:
return; case Qt::Key_BracketRight:
} MovePiece(event);
break;
VPSheetPtr sheet = layout->GetFocusedSheet(); default:
if (sheet.isNull()) break;
{
return;
}
const QList<VPGraphicsPiece *> &graphicsPieces = sheet->SceneData()->GraphicsPieces();
if (m_hasStickyPosition && not graphicsPieces.isEmpty())
{
if (layout->LayoutSettings().GetStickyEdges())
{
auto PreparePieces = [layout]()
{
QList<VPPiecePtr> pieces;
VPSheetPtr sheet = layout->GetFocusedSheet();
if (not sheet.isNull())
{
pieces = sheet->GetSelectedPieces();
}
return pieces;
};
QList<VPPiecePtr> pieces = PreparePieces();
if (pieces.size() == 1)
{
const VPPiecePtr &p = ConstFirst(pieces);
auto *command = new VPUndoPieceMove(p, m_stickyTranslateX, m_stickyTranslateY,
m_allowChangeMerge);
layout->UndoStack()->push(command);
VPGraphicsPiece * gPiece = sheet->SceneData()->ScenePiece(p);
if (gPiece != nullptr)
{
gPiece->SetStickyPoints(QVector<QPointF>());
}
}
}
}
m_allowChangeMerge = false;
m_hasStickyPosition = false;
}
} }
if (event->key() == Qt::Key_BracketLeft || event->key() == Qt::Key_BracketRight) if (event->key() == Qt::Key_BracketLeft || event->key() == Qt::Key_BracketRight)
@ -440,7 +339,7 @@ void VPMainGraphicsView::contextMenuEvent(QContextMenuEvent *event)
QMenu menu; QMenu menu;
QAction *restoreOriginAction = menu.addAction(tr("Restore transformation origin")); QAction *restoreOriginAction = menu.addAction(tr("Restore transformation origin"));
restoreOriginAction->setShortcut(restoreOriginShortcut); restoreOriginAction->setShortcut(*restoreOriginShortcut);
restoreOriginAction->setEnabled(not sheet.isNull() && sheet->TransformationOrigin().custom); restoreOriginAction->setEnabled(not sheet.isNull() && sheet->TransformationOrigin().custom);
QAction *removeSheetAction = menu.addAction(QIcon::fromTheme(QStringLiteral("edit-delete")), tr("Remove sheet")); QAction *removeSheetAction = menu.addAction(QIcon::fromTheme(QStringLiteral("edit-delete")), tr("Remove sheet"));
@ -723,6 +622,99 @@ void VPMainGraphicsView::ZValueMove(int move)
} }
} }
//---------------------------------------------------------------------------------------------------------------------
void VPMainGraphicsView::RemovePiece() const
{
VPLayoutPtr layout = m_layout.toStrongRef();
if (layout.isNull())
{
return;
}
VPSheetPtr sheet = layout->GetFocusedSheet();
if (sheet.isNull())
{
return ;
}
const QList<VPGraphicsPiece *> &graphicsPieces = sheet->SceneData()->GraphicsPieces();
for(auto *graphicsPiece : graphicsPieces)
{
VPPiecePtr piece = graphicsPiece->GetPiece();
if(not piece.isNull() && piece->IsSelected())
{
piece->SetSelected(false);
VPLayoutPtr layout = m_layout.toStrongRef();
if (not layout.isNull())
{
emit layout->PieceSelectionChanged(piece);
auto *command = new VPUndoMovePieceOnSheet(VPSheetPtr(), piece);
layout->UndoStack()->push(command);
}
}
}
}
//---------------------------------------------------------------------------------------------------------------------
void VPMainGraphicsView::MovePiece(QKeyEvent *event)
{
if (not event->isAutoRepeat())
{
VPLayoutPtr layout = m_layout.toStrongRef();
if (layout.isNull())
{
return;
}
VPSheetPtr sheet = layout->GetFocusedSheet();
if (sheet.isNull())
{
return;
}
const QList<VPGraphicsPiece *> &graphicsPieces = sheet->SceneData()->GraphicsPieces();
if (m_hasStickyPosition && not graphicsPieces.isEmpty())
{
if (layout->LayoutSettings().GetStickyEdges())
{
auto PreparePieces = [layout]()
{
QList<VPPiecePtr> pieces;
VPSheetPtr sheet = layout->GetFocusedSheet();
if (not sheet.isNull())
{
pieces = sheet->GetSelectedPieces();
}
return pieces;
};
QList<VPPiecePtr> pieces = PreparePieces();
if (pieces.size() == 1)
{
const VPPiecePtr &p = ConstFirst(pieces);
auto *command = new VPUndoPieceMove(p, m_stickyTranslateX, m_stickyTranslateY,
m_allowChangeMerge);
layout->UndoStack()->push(command);
VPGraphicsPiece * gPiece = sheet->SceneData()->ScenePiece(p);
if (gPiece != nullptr)
{
gPiece->SetStickyPoints(QVector<QPointF>());
}
}
}
}
m_allowChangeMerge = false;
m_hasStickyPosition = false;
}
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VPMainGraphicsView::on_PieceSheetChanged(const VPPiecePtr &piece) void VPMainGraphicsView::on_PieceSheetChanged(const VPPiecePtr &piece)
{ {

View file

@ -44,10 +44,10 @@ class VPPiece;
class VPMainGraphicsView : public VMainGraphicsView class VPMainGraphicsView : public VMainGraphicsView
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
VPMainGraphicsView(const VPLayoutPtr &layout, QWidget *parent); VPMainGraphicsView(const VPLayoutPtr &layout, QWidget *parent);
~VPMainGraphicsView() = default; ~VPMainGraphicsView() override = default;
/** /**
* @brief RefreshLayout Refreshes the rectangles for the layout border and the margin * @brief RefreshLayout Refreshes the rectangles for the layout border and the margin
@ -91,7 +91,8 @@ private slots:
void on_SceneMouseMove(const QPointF &scenePos); void on_SceneMouseMove(const QPointF &scenePos);
private: private:
Q_DISABLE_COPY(VPMainGraphicsView) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(VPMainGraphicsView) // NOLINT
VPLayoutWeakPtr m_layout; VPLayoutWeakPtr m_layout;
@ -110,6 +111,9 @@ private:
void ClearSelection(); void ClearSelection();
void ZValueMove(int move); void ZValueMove(int move);
void RemovePiece() const;
void MovePiece(QKeyEvent *event);
}; };
#endif // VPMAINGRAPHICSVIEW_H #endif // VPMAINGRAPHICSVIEW_H

View file

@ -34,17 +34,17 @@
class VPUndoAddSheet : public VPUndoCommand class VPUndoAddSheet : public VPUndoCommand
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VPUndoAddSheet(const VPSheetPtr &sheet, QUndoCommand *parent = nullptr); explicit VPUndoAddSheet(const VPSheetPtr &sheet, QUndoCommand *parent = nullptr);
virtual ~VPUndoAddSheet()=default; ~VPUndoAddSheet() override =default;
virtual void undo() override; void undo() override;
virtual void redo() override; void redo() override;
virtual auto id() const -> int override; auto id() const -> int override;
private: private:
Q_DISABLE_COPY(VPUndoAddSheet) Q_DISABLE_COPY_MOVE(VPUndoAddSheet) // NOLINT
VPSheetWeakPtr m_sheet; VPSheetWeakPtr m_sheet;
}; };

View file

@ -27,7 +27,13 @@
*************************************************************************/ *************************************************************************/
#include "vpundocommand.h" #include "vpundocommand.h"
Q_LOGGING_CATEGORY(vpUndo, "vp.undo") QT_WARNING_PUSH
QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes")
QT_WARNING_DISABLE_INTEL(1418)
Q_LOGGING_CATEGORY(vpUndo, "vp.undo") // NOLINT
QT_WARNING_POP
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VPUndoCommand::VPUndoCommand(QUndoCommand *parent) VPUndoCommand::VPUndoCommand(QUndoCommand *parent)

View file

@ -34,17 +34,17 @@
class VPUndoMovePieceOnSheet : public VPUndoCommand class VPUndoMovePieceOnSheet : public VPUndoCommand
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
VPUndoMovePieceOnSheet(const VPSheetPtr &sheet, const VPPiecePtr &piece, QUndoCommand *parent = nullptr); VPUndoMovePieceOnSheet(const VPSheetPtr &sheet, const VPPiecePtr &piece, QUndoCommand *parent = nullptr);
virtual ~VPUndoMovePieceOnSheet()=default; ~VPUndoMovePieceOnSheet() override =default;
virtual void undo() override; void undo() override;
virtual void redo() override; void redo() override;
virtual auto id() const -> int override; auto id() const -> int override;
private: private:
Q_DISABLE_COPY(VPUndoMovePieceOnSheet) Q_DISABLE_COPY_MOVE(VPUndoMovePieceOnSheet) // NOLINT
VPSheetWeakPtr m_oldSheet{}; VPSheetWeakPtr m_oldSheet{};
VPSheetWeakPtr m_sheet; VPSheetWeakPtr m_sheet;

View file

@ -65,7 +65,7 @@ void VPUndoOriginMove::undo()
} }
sheet->SetTransformationOrigin(m_oldOrigin); sheet->SetTransformationOrigin(m_oldOrigin);
layout->TransformationOriginChanged(); emit layout->TransformationOriginChanged();
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -34,23 +34,23 @@
class VPUndoOriginMove : public VPUndoCommand class VPUndoOriginMove : public VPUndoCommand
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
VPUndoOriginMove(const VPSheetPtr &sheet, const VPTransformationOrigon &origin, bool allowMerge = false, VPUndoOriginMove(const VPSheetPtr &sheet, const VPTransformationOrigon &origin, bool allowMerge = false,
QUndoCommand *parent = nullptr); QUndoCommand *parent = nullptr);
virtual ~VPUndoOriginMove()=default; ~VPUndoOriginMove() override =default;
virtual void undo() override; void undo() override;
virtual void redo() override; void redo() override;
// cppcheck-suppress unusedFunction // cppcheck-suppress unusedFunction
virtual auto mergeWith(const QUndoCommand *command) -> bool override; auto mergeWith(const QUndoCommand *command) -> bool override;
virtual auto id() const -> int override; auto id() const -> int override;
auto Sheet() const -> VPSheetWeakPtr; auto Sheet() const -> VPSheetWeakPtr;
auto Origin() const -> const VPTransformationOrigon &; auto Origin() const -> const VPTransformationOrigon &;
private: private:
Q_DISABLE_COPY(VPUndoOriginMove) Q_DISABLE_COPY_MOVE(VPUndoOriginMove) // NOLINT
VPSheetWeakPtr m_sheet; VPSheetWeakPtr m_sheet;
VPTransformationOrigon m_oldOrigin{}; VPTransformationOrigon m_oldOrigin{};

View file

@ -162,7 +162,7 @@ void VPUndoPiecesMove::undo()
layout->SetFocusedSheet(sheet); layout->SetFocusedSheet(sheet);
} }
for (const auto& piece : m_pieces) for (const auto& piece : qAsConst(m_pieces))
{ {
VPPiecePtr p = piece.toStrongRef(); VPPiecePtr p = piece.toStrongRef();
if (not p.isNull()) if (not p.isNull())
@ -196,7 +196,7 @@ void VPUndoPiecesMove::redo()
layout->SetFocusedSheet(sheet); layout->SetFocusedSheet(sheet);
} }
for (const auto& piece : m_pieces) for (const auto& piece : qAsConst(m_pieces))
{ {
VPPiecePtr p = piece.toStrongRef(); VPPiecePtr p = piece.toStrongRef();
if (not p.isNull()) if (not p.isNull())

View file

@ -36,24 +36,24 @@
class VPUndoPieceMove : public VPUndoCommand class VPUndoPieceMove : public VPUndoCommand
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VPUndoPieceMove(const VPPiecePtr &piece, qreal dx, qreal dy, bool allowMerge = false, explicit VPUndoPieceMove(const VPPiecePtr &piece, qreal dx, qreal dy, bool allowMerge = false,
QUndoCommand *parent = nullptr); QUndoCommand *parent = nullptr);
virtual ~VPUndoPieceMove()=default; ~VPUndoPieceMove() override =default;
virtual void undo() override; void undo() override;
virtual void redo() override; void redo() override;
// cppcheck-suppress unusedFunction // cppcheck-suppress unusedFunction
virtual auto mergeWith(const QUndoCommand *command) -> bool override; auto mergeWith(const QUndoCommand *command) -> bool override;
virtual auto id() const -> int override ; auto id() const -> int override;
auto Piece() const -> VPPiecePtr; auto Piece() const -> VPPiecePtr;
auto Dx() const -> qreal; auto Dx() const -> qreal;
auto Dy() const -> qreal; auto Dy() const -> qreal;
private: private:
Q_DISABLE_COPY(VPUndoPieceMove) Q_DISABLE_COPY_MOVE(VPUndoPieceMove) // NOLINT
VPPieceWeakPtr m_piece; VPPieceWeakPtr m_piece;
QTransform m_oldTransform{}; QTransform m_oldTransform{};
@ -82,24 +82,24 @@ inline auto VPUndoPieceMove::Dy() const -> qreal
// Move pieces // Move pieces
class VPUndoPiecesMove : public VPUndoCommand class VPUndoPiecesMove : public VPUndoCommand
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VPUndoPiecesMove(const QList<VPPiecePtr> &pieces, qreal dx, qreal dy, bool allowMerge = false, explicit VPUndoPiecesMove(const QList<VPPiecePtr> &pieces, qreal dx, qreal dy, bool allowMerge = false,
QUndoCommand *parent = nullptr); QUndoCommand *parent = nullptr);
virtual ~VPUndoPiecesMove()=default; ~VPUndoPiecesMove() override =default;
virtual void undo() override; void undo() override;
virtual void redo() override; void redo() override;
// cppcheck-suppress unusedFunction // cppcheck-suppress unusedFunction
virtual auto mergeWith(const QUndoCommand *command) -> bool override; auto mergeWith(const QUndoCommand *command) -> bool override;
virtual auto id() const -> int override ; auto id() const -> int override ;
auto PieceIds() const -> QSet<QString>; auto PieceIds() const -> QSet<QString>;
auto Dx() const -> qreal; auto Dx() const -> qreal;
auto Dy() const -> qreal; auto Dy() const -> qreal;
private: private:
Q_DISABLE_COPY(VPUndoPiecesMove) Q_DISABLE_COPY_MOVE(VPUndoPiecesMove) // NOLINT
QVector<VPPieceWeakPtr> m_pieces{}; QVector<VPPieceWeakPtr> m_pieces{};
QMap<QString, QTransform> m_oldTransforms{}; QMap<QString, QTransform> m_oldTransforms{};

View file

@ -213,7 +213,7 @@ void VPUndoPiecesRotate::undo()
layout->SetFocusedSheet(sheet); layout->SetFocusedSheet(sheet);
} }
for (const auto& piece : m_pieces) for (const auto& piece : qAsConst(m_pieces))
{ {
VPPiecePtr p = piece.toStrongRef(); VPPiecePtr p = piece.toStrongRef();
if (not p.isNull()) if (not p.isNull())
@ -247,7 +247,7 @@ void VPUndoPiecesRotate::redo()
layout->SetFocusedSheet(sheet); layout->SetFocusedSheet(sheet);
} }
for (const auto& piece : m_pieces) for (const auto& piece : qAsConst(m_pieces))
{ {
VPPiecePtr p = piece.toStrongRef(); VPPiecePtr p = piece.toStrongRef();
if (not p.isNull()) if (not p.isNull())

View file

@ -36,27 +36,27 @@
class VPUndoPieceRotate : public VPUndoCommand class VPUndoPieceRotate : public VPUndoCommand
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
VPUndoPieceRotate(const VPPiecePtr &piece, const VPTransformationOrigon &origin, qreal angle, qreal angleSum, VPUndoPieceRotate(const VPPiecePtr &piece, const VPTransformationOrigon &origin, qreal angle, qreal angleSum,
bool allowMerge = false, QUndoCommand *parent = nullptr); bool allowMerge = false, QUndoCommand *parent = nullptr);
virtual ~VPUndoPieceRotate()=default; ~VPUndoPieceRotate() override =default;
virtual void undo() override; void undo() override;
virtual void redo() override; void redo() override;
// cppcheck-suppress unusedFunction // cppcheck-suppress unusedFunction
virtual auto mergeWith(const QUndoCommand *command) -> bool override; auto mergeWith(const QUndoCommand *command) -> bool override;
virtual auto id() const -> int override ; auto id() const -> int override;
auto Piece() const -> VPPiecePtr; auto Piece() const -> VPPiecePtr;
auto Origin() const -> VPTransformationOrigon; auto Origin() const -> VPTransformationOrigon;
auto Angle() const -> qreal; auto Angle() const -> qreal;
bool FollowGrainline() const; auto FollowGrainline() const -> bool;
private: private:
Q_DISABLE_COPY(VPUndoPieceRotate) Q_DISABLE_COPY_MOVE(VPUndoPieceRotate) // NOLINT
bool m_firstCall{true}; bool m_firstCall{true};
VPPieceWeakPtr m_piece; VPPieceWeakPtr m_piece;
@ -94,17 +94,17 @@ inline auto VPUndoPieceRotate::FollowGrainline() const -> bool
// Rotate pieces // Rotate pieces
class VPUndoPiecesRotate : public VPUndoCommand class VPUndoPiecesRotate : public VPUndoCommand
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VPUndoPiecesRotate(const QList<VPPiecePtr> &pieces, const VPTransformationOrigon &origin, qreal angle, explicit VPUndoPiecesRotate(const QList<VPPiecePtr> &pieces, const VPTransformationOrigon &origin, qreal angle,
qreal angleSum, bool allowMerge = false, QUndoCommand *parent = nullptr); qreal angleSum, bool allowMerge = false, QUndoCommand *parent = nullptr);
virtual ~VPUndoPiecesRotate()=default; ~VPUndoPiecesRotate() override =default;
virtual void undo() override; void undo() override;
virtual void redo() override; void redo() override;
// cppcheck-suppress unusedFunction // cppcheck-suppress unusedFunction
virtual auto mergeWith(const QUndoCommand *command) -> bool override; auto mergeWith(const QUndoCommand *command) -> bool override;
virtual auto id() const -> int override ; auto id() const -> int override;
auto PieceIds() const -> QSet<QString>; auto PieceIds() const -> QSet<QString>;
auto Origin() const -> VPTransformationOrigon; auto Origin() const -> VPTransformationOrigon;
@ -112,7 +112,7 @@ public:
auto FollowGrainline() const -> bool; auto FollowGrainline() const -> bool;
private: private:
Q_DISABLE_COPY(VPUndoPiecesRotate) Q_DISABLE_COPY_MOVE(VPUndoPiecesRotate) // NOLINT
bool m_firstCall{true}; bool m_firstCall{true};
QVector<VPPieceWeakPtr> m_pieces{}; QVector<VPPieceWeakPtr> m_pieces{};

View file

@ -254,7 +254,7 @@ auto VPUndoPieceZValueMove::Levels(const QList<VPPiecePtr> &pieces, bool skip) c
} }
} }
return levels.values(); return levels.values(); // clazy:exclude=clazy-qt6-deprecated-api-fixes
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -497,11 +497,11 @@ auto VPUndoPiecesZValueMove::Levels(const QList<VPPiecePtr> &allPieces, const QV
} }
} }
return levels.values(); return levels.values(); // clazy:exclude=clazy-qt6-deprecated-api-fixes
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
auto VPUndoPiecesZValueMove::LevelStep(const QList<VPPiecePtr> &pieces) const -> qreal auto VPUndoPiecesZValueMove::LevelStep(const QList<VPPiecePtr> &pieces) -> qreal
{ {
QList<QVector<QString>> levels = Levels(pieces, QVector<QString>(), false); QList<QVector<QString>> levels = Levels(pieces, QVector<QString>(), false);
if (levels.isEmpty()) if (levels.isEmpty())

View file

@ -48,6 +48,7 @@ enum class ZValueMove
class VPUndoPieceZValueMove : public VPUndoCommand class VPUndoPieceZValueMove : public VPUndoCommand
{ {
Q_OBJECT // NOLINT
public: public:
VPUndoPieceZValueMove(const VPPiecePtr &piece, ML::ZValueMove move, QUndoCommand *parent = nullptr); VPUndoPieceZValueMove(const VPPiecePtr &piece, ML::ZValueMove move, QUndoCommand *parent = nullptr);
~VPUndoPieceZValueMove() override =default; ~VPUndoPieceZValueMove() override =default;
@ -72,6 +73,7 @@ private:
class VPUndoPiecesZValueMove : public VPUndoCommand class VPUndoPiecesZValueMove : public VPUndoCommand
{ {
Q_OBJECT // NOLINT
public: public:
VPUndoPiecesZValueMove(const QList<VPPiecePtr> &pieces, ML::ZValueMove move, QUndoCommand *parent = nullptr); VPUndoPiecesZValueMove(const QList<VPPiecePtr> &pieces, ML::ZValueMove move, QUndoCommand *parent = nullptr);
~VPUndoPiecesZValueMove() override =default; ~VPUndoPiecesZValueMove() override =default;
@ -93,7 +95,7 @@ private:
auto PieceIds() const -> QVector<QString>; auto PieceIds() const -> QVector<QString>;
static auto Levels(const QList<VPPiecePtr> &allPieces, const QVector<QString> &skipPieces, static auto Levels(const QList<VPPiecePtr> &allPieces, const QVector<QString> &skipPieces,
bool skip) -> QList<QVector<QString>>; bool skip) -> QList<QVector<QString>>;
auto LevelStep(const QList<VPPiecePtr> &pieces) const -> qreal; static auto LevelStep(const QList<VPPiecePtr> &pieces) -> qreal;
}; };
#endif // VPUNDOPIECEZVALUEMOVE_H #endif // VPUNDOPIECEZVALUEMOVE_H

View file

@ -39,7 +39,8 @@ VPUndoRemoveSheet::VPUndoRemoveSheet(const VPSheetPtr &sheet, QUndoCommand *pare
SCASSERT(not sheet.isNull()) SCASSERT(not sheet.isNull())
QList<VPPiecePtr> pieces = sheet->GetPieces(); QList<VPPiecePtr> pieces = sheet->GetPieces();
for (auto piece : pieces) m_pieces.reserve(pieces.size());
for (const auto &piece : pieces)
{ {
m_pieces.append(piece); m_pieces.append(piece);
} }
@ -60,7 +61,7 @@ void VPUndoRemoveSheet::undo()
{ {
sheet->SetVisible(true); sheet->SetVisible(true);
for (const auto &piece : m_pieces) for (const auto &piece : qAsConst(m_pieces))
{ {
VPPiecePtr p = piece.toStrongRef(); VPPiecePtr p = piece.toStrongRef();
if (not p.isNull()) if (not p.isNull())
@ -93,7 +94,7 @@ void VPUndoRemoveSheet::redo()
{ {
sheet->SetVisible(false); sheet->SetVisible(false);
for (const auto &piece : m_pieces) for (const auto &piece : qAsConst(m_pieces))
{ {
VPPiecePtr p = piece.toStrongRef(); VPPiecePtr p = piece.toStrongRef();
if (not p.isNull()) if (not p.isNull())

View file

@ -34,17 +34,17 @@
class VPUndoRemoveSheet : public VPUndoCommand class VPUndoRemoveSheet : public VPUndoCommand
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VPUndoRemoveSheet(const VPSheetPtr &sheet, QUndoCommand *parent = nullptr); explicit VPUndoRemoveSheet(const VPSheetPtr &sheet, QUndoCommand *parent = nullptr);
virtual ~VPUndoRemoveSheet()=default; ~VPUndoRemoveSheet() override =default;
virtual void undo() override; void undo() override;
virtual void redo() override; void redo() override;
virtual auto id() const -> int override; auto id() const -> int override;
private: private:
Q_DISABLE_COPY(VPUndoRemoveSheet) Q_DISABLE_COPY_MOVE(VPUndoRemoveSheet) // NOLINT
QList<VPPieceWeakPtr> m_pieces{}; QList<VPPieceWeakPtr> m_pieces{};
VPSheetWeakPtr m_sheet; VPSheetWeakPtr m_sheet;

View file

@ -61,7 +61,7 @@ QT_WARNING_POP
#include <QPixmapCache> #include <QPixmapCache>
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) // NOLINT(readability-function-cognitive-complexity)
{ {
// only the GUI thread should display message boxes. If you are // only the GUI thread should display message boxes. If you are
// writing a multithreaded application and the error happens on // writing a multithreaded application and the error happens on
@ -315,7 +315,7 @@ auto VPApplication::notify(QObject *receiver, QEvent *event) -> bool
catch (const VExceptionToolWasDeleted &e) catch (const VExceptionToolWasDeleted &e)
{ {
qCCritical(pApp, "%s\n\n%s\n\n%s", qCCritical(pApp, "%s\n\n%s\n\n%s",
qUtf8Printable("Unhadled deleting tool. Continue use object after deleting!"), qUtf8Printable(QStringLiteral("Unhadled deleting tool. Continue use object after deleting!")),
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation())); qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
exit(V_EX_DATAERR); exit(V_EX_DATAERR);
} }
@ -534,7 +534,7 @@ auto VPApplication::event(QEvent *e) -> bool
// Mac specific). // Mac specific).
case QEvent::FileOpen: case QEvent::FileOpen:
{ {
auto *fileOpenEvent = static_cast<QFileOpenEvent *>(e); auto *fileOpenEvent = static_cast<QFileOpenEvent *>(e); // NOLINT(cppcoreguidelines-pro-type-static-cast-downcast)
const QString macFileOpen = fileOpenEvent->file(); const QString macFileOpen = fileOpenEvent->file();
if(not macFileOpen.isEmpty()) if(not macFileOpen.isEmpty())
{ {
@ -670,7 +670,7 @@ auto VPApplication::StartWithFiles(const VPCommandLinePtr &cmd, const QStringLis
cmd.get()->parser.showHelp(V_EX_USAGE); cmd.get()->parser.showHelp(V_EX_USAGE);
} }
for (const auto &arg : args) for (const auto &arg : args) // NOLINT(readability-use-anyofallof)
{ {
NewMainWindow(cmd); NewMainWindow(cmd);
if (not MainWindow()->LoadFile(arg)) if (not MainWindow()->LoadFile(arg))

View file

@ -31,12 +31,12 @@
#include "../vmisc/literals.h" #include "../vmisc/literals.h"
#include <QDebug> #include <QDebug>
std::shared_ptr<VPCommandLine> VPCommandLine::instance = nullptr; std::shared_ptr<VPCommandLine> VPCommandLine::instance = nullptr; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
#define translate(context, source) QCoreApplication::translate((context), source) #define translate(context, source) QCoreApplication::translate((context), source)// NOLINT(cppcoreguidelines-macro-usage)
//------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------
bool VPCommandLine::IsExportEnabled() const auto VPCommandLine::IsExportEnabled() const -> bool
{ {
const bool result = IsOptionSet(LONG_OPTION_EXPORT_FILE); const bool result = IsOptionSet(LONG_OPTION_EXPORT_FILE);
int argSize = parser.positionalArguments().size(); int argSize = parser.positionalArguments().size();
@ -49,7 +49,7 @@ bool VPCommandLine::IsExportEnabled() const
} }
//---------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------
QString VPCommandLine::OptionExportFile() const auto VPCommandLine::OptionExportFile() const -> QString
{ {
QString path; QString path;
if (IsExportEnabled()) if (IsExportEnabled())
@ -61,13 +61,13 @@ QString VPCommandLine::OptionExportFile() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QStringList VPCommandLine::OptionRawLayouts() const auto VPCommandLine::OptionRawLayouts() const -> QStringList
{ {
return OptionValues(LONG_OPTION_RAW_LAYOUT); return OptionValues(LONG_OPTION_RAW_LAYOUT);
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
bool VPCommandLine::IsTestModeEnabled() const auto VPCommandLine::IsTestModeEnabled() const -> bool
{ {
const bool r = IsOptionSet(LONG_OPTION_TEST); const bool r = IsOptionSet(LONG_OPTION_TEST);
if (r && parser.positionalArguments().size() != 1) if (r && parser.positionalArguments().size() != 1)
@ -79,19 +79,19 @@ bool VPCommandLine::IsTestModeEnabled() const
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
bool VPCommandLine::IsGuiEnabled() const auto VPCommandLine::IsGuiEnabled() const -> bool
{ {
return isGuiEnabled; return isGuiEnabled;
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
QStringList VPCommandLine::OptionFileNames() const auto VPCommandLine::OptionFileNames() const -> QStringList
{ {
return parser.positionalArguments(); return parser.positionalArguments();
} }
//------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------
bool VPCommandLine::IsNoScalingEnabled() const auto VPCommandLine::IsNoScalingEnabled() const -> bool
{ {
return IsOptionSet(LONG_OPTION_NO_HDPI_SCALING); return IsOptionSet(LONG_OPTION_NO_HDPI_SCALING);
} }
@ -103,9 +103,7 @@ void VPCommandLine::ShowHelp(int exitCode)
} }
//---------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------
VPCommandLine::VPCommandLine(): VPCommandLine::VPCommandLine()
parser(),
isGuiEnabled(false)
{ {
parser.setApplicationDescription(translate("Puzzle", "Valentina's manual layout editor.")); parser.setApplicationDescription(translate("Puzzle", "Valentina's manual layout editor."));
parser.addHelpOption(); parser.addHelpOption();
@ -116,7 +114,7 @@ VPCommandLine::VPCommandLine():
} }
//------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------
VPCommandLinePtr VPCommandLine::Instance() auto VPCommandLine::Instance() -> VPCommandLinePtr
{ {
VPCommandLine::ProcessInstance(instance, QCoreApplication::arguments()); VPCommandLine::ProcessInstance(instance, QCoreApplication::arguments());
return instance; return instance;
@ -193,19 +191,19 @@ void VPCommandLine::InitCommandLineOptions()
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
bool VPCommandLine::IsOptionSet(const QString &option) const auto VPCommandLine::IsOptionSet(const QString &option) const -> bool
{ {
return parser.isSet(option); return parser.isSet(option);
} }
//------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------
QString VPCommandLine::OptionValue(const QString &option) const auto VPCommandLine::OptionValue(const QString &option) const -> QString
{ {
return parser.value(option); return parser.value(option);
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
QStringList VPCommandLine::OptionValues(const QString &option) const auto VPCommandLine::OptionValues(const QString &option) const -> QStringList
{ {
return parser.values(option); return parser.values(option);
} }

View file

@ -33,56 +33,59 @@
#include <QCommandLineParser> #include <QCommandLineParser>
#include <ciso646> #include <ciso646>
#include "../vmisc/defglobal.h"
class VPCommandLine; class VPCommandLine;
using VPCommandLinePtr = std::shared_ptr<VPCommandLine>; using VPCommandLinePtr = std::shared_ptr<VPCommandLine>;
class VPCommandLine: public QObject class VPCommandLine: public QObject
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
virtual ~VPCommandLine() = default; ~VPCommandLine() override = default;
/** @brief if user enabled export from cmd */ /** @brief if user enabled export from cmd */
bool IsExportEnabled() const; auto IsExportEnabled() const -> bool;
/** @brief path to export file or empty string if not */ /** @brief path to export file or empty string if not */
QString OptionExportFile() const; auto OptionExportFile() const -> QString;
/** @brief list with paths to the raw layout data files */ /** @brief list with paths to the raw layout data files */
QStringList OptionRawLayouts() const; auto OptionRawLayouts() const -> QStringList;
/** @brief if user enabled test mode from cmd */ /** @brief if user enabled test mode from cmd */
bool IsTestModeEnabled() const; auto IsTestModeEnabled() const -> bool;
/** @brief if gui enabled or not */ /** @brief if gui enabled or not */
bool IsGuiEnabled() const; auto IsGuiEnabled() const -> bool;
/** @brief the file name which should be loaded */ /** @brief the file name which should be loaded */
QStringList OptionFileNames() const; auto OptionFileNames() const -> QStringList;
/** @brief if high dpi scaling is enabled */ /** @brief if high dpi scaling is enabled */
bool IsNoScalingEnabled() const; auto IsNoScalingEnabled() const -> bool;
Q_NORETURN void ShowHelp(int exitCode = 0); Q_NORETURN void ShowHelp(int exitCode = 0);
protected: protected:
VPCommandLine(); VPCommandLine();
/** @brief create the single instance of the class inside vpapplication */ /** @brief create the single instance of the class inside vpapplication */
static VPCommandLinePtr Instance(); static auto Instance() -> VPCommandLinePtr;
static void ProcessInstance(VPCommandLinePtr &instance, const QStringList &arguments); static void ProcessInstance(VPCommandLinePtr &instance, const QStringList &arguments);
private: private:
Q_DISABLE_COPY(VPCommandLine) // cppcheck-suppress unknownMacro
static VPCommandLinePtr instance; Q_DISABLE_COPY_MOVE(VPCommandLine) // NOLINT
QCommandLineParser parser; static VPCommandLinePtr instance; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
bool isGuiEnabled; QCommandLineParser parser{};
bool isGuiEnabled{false};
friend class VPApplication; friend class VPApplication;
/** @brief add options to the QCommandLineParser that there are in the cmd can be */ /** @brief add options to the QCommandLineParser that there are in the cmd can be */
void InitCommandLineOptions(); void InitCommandLineOptions();
bool IsOptionSet(const QString &option)const; auto IsOptionSet(const QString &option)const -> bool;
QString OptionValue(const QString &option) const; auto OptionValue(const QString &option) const -> QString;
QStringList OptionValues(const QString &option) const; auto OptionValues(const QString &option) const -> QStringList;
}; };
#endif // VPCOMMANDLINE_H #endif // VPCOMMANDLINE_H

View file

@ -29,41 +29,41 @@
#include <QStringList> #include <QStringList>
const QString LONG_OPTION_EXPORT_FILE = QStringLiteral("exportFile"); const QString LONG_OPTION_EXPORT_FILE = QStringLiteral("exportFile"); // NOLINT
const QString SINGLE_OPTION_EXPORT_FILE = QStringLiteral("e"); const QString SINGLE_OPTION_EXPORT_FILE = QStringLiteral("e"); // NOLINT
const QString LONG_OPTION_TEST = QStringLiteral("test"); const QString LONG_OPTION_TEST = QStringLiteral("test"); // NOLINT
const QString SINGLE_OPTION_TEST = QStringLiteral("t"); const QString SINGLE_OPTION_TEST = QStringLiteral("t"); // NOLINT
const QString LONG_OPTION_RAW_LAYOUT = QStringLiteral("rawLayout"); const QString LONG_OPTION_RAW_LAYOUT = QStringLiteral("rawLayout"); // NOLINT
const QString SINGLE_OPTION_RAW_LAYOUT = QStringLiteral("r"); const QString SINGLE_OPTION_RAW_LAYOUT = QStringLiteral("r"); // NOLINT
const QString LONG_OPTION_EXP2FORMAT = QStringLiteral("format"); const QString LONG_OPTION_EXP2FORMAT = QStringLiteral("format"); // NOLINT
const QString SINGLE_OPTION_EXP2FORMAT = QStringLiteral("f"); const QString SINGLE_OPTION_EXP2FORMAT = QStringLiteral("f"); // NOLINT
const QString LONG_OPTION_BINARYDXF = QStringLiteral("bdxf"); const QString LONG_OPTION_BINARYDXF = QStringLiteral("bdxf"); // NOLINT
const QString LONG_OPTION_TEXT2PATHS = QStringLiteral("text2paths"); const QString LONG_OPTION_TEXT2PATHS = QStringLiteral("text2paths"); // NOLINT
const QString LONG_OPTION_CROP_LENGTH = QStringLiteral("crop"); const QString LONG_OPTION_CROP_LENGTH = QStringLiteral("crop"); // NOLINT
const QString SINGLE_OPTION_CROP_LENGTH = QStringLiteral("c"); const QString SINGLE_OPTION_CROP_LENGTH = QStringLiteral("c"); // NOLINT
const QString LONG_OPTION_CROP_WIDTH = QStringLiteral("cropWidth"); const QString LONG_OPTION_CROP_WIDTH = QStringLiteral("cropWidth"); // NOLINT
const QString LONG_OPTION_TILED_PDF_PAGE_TEMPLATE = QStringLiteral("tiledPageformat"); const QString LONG_OPTION_TILED_PDF_PAGE_TEMPLATE = QStringLiteral("tiledPageformat"); // NOLINT
const QString LONG_OPTION_TILED_PDF_LEFT_MARGIN = QStringLiteral("tiledlmargin"); const QString LONG_OPTION_TILED_PDF_LEFT_MARGIN = QStringLiteral("tiledlmargin"); // NOLINT
const QString LONG_OPTION_TILED_PDF_RIGHT_MARGIN = QStringLiteral("tiledrmargin"); const QString LONG_OPTION_TILED_PDF_RIGHT_MARGIN = QStringLiteral("tiledrmargin"); // NOLINT
const QString LONG_OPTION_TILED_PDF_TOP_MARGIN = QStringLiteral("tiledtmargin"); const QString LONG_OPTION_TILED_PDF_TOP_MARGIN = QStringLiteral("tiledtmargin"); // NOLINT
const QString LONG_OPTION_TILED_PDF_BOTTOM_MARGIN = QStringLiteral("tiledbmargin"); const QString LONG_OPTION_TILED_PDF_BOTTOM_MARGIN = QStringLiteral("tiledbmargin"); // NOLINT
const QString LONG_OPTION_TILED_PDF_LANDSCAPE = QStringLiteral("tiledLandscape"); const QString LONG_OPTION_TILED_PDF_LANDSCAPE = QStringLiteral("tiledLandscape"); // NOLINT
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
* @brief AllKeys return list with all command line keys (short and long forms). Used for testing on conflicts. * @brief AllKeys return list with all command line keys (short and long forms). Used for testing on conflicts.
* @return list with all command line keys * @return list with all command line keys
*/ */
QStringList AllKeys() auto AllKeys() -> QStringList
{ {
return QStringList return
{ {
LONG_OPTION_EXPORT_FILE, LONG_OPTION_EXPORT_FILE,
SINGLE_OPTION_EXPORT_FILE, SINGLE_OPTION_EXPORT_FILE,

View file

@ -58,6 +58,6 @@ extern const QString LONG_OPTION_TILED_PDF_TOP_MARGIN;
extern const QString LONG_OPTION_TILED_PDF_BOTTOM_MARGIN; extern const QString LONG_OPTION_TILED_PDF_BOTTOM_MARGIN;
extern const QString LONG_OPTION_TILED_PDF_LANDSCAPE; extern const QString LONG_OPTION_TILED_PDF_LANDSCAPE;
QStringList AllKeys(); auto AllKeys() -> QStringList;
#endif // VPCOMMANDS_H #endif // VPCOMMANDS_H

File diff suppressed because it is too large Load diff

View file

@ -37,11 +37,8 @@
#include "carousel/vpcarrousel.h" #include "carousel/vpcarrousel.h"
#include "scene/vpmaingraphicsview.h" #include "scene/vpmaingraphicsview.h"
#include "layout/vplayout.h" #include "layout/vplayout.h"
#include "layout/vppiece.h"
#include "../vlayout/vlayoutpiece.h" #include "../vlayout/vlayoutpiece.h"
#include "vptilefactory.h"
#include "vpcommandline.h" #include "vpcommandline.h"
#include "../vlayout/vlayoutdef.h"
#include "../vwidgets/vabstractmainwindow.h" #include "../vwidgets/vabstractmainwindow.h"
#include "../vmisc/vlockguard.h" #include "../vmisc/vlockguard.h"
#include "../vlayout/dialogs/vabstractlayoutdialog.h" #include "../vlayout/dialogs/vabstractlayoutdialog.h"
@ -59,13 +56,13 @@ class WatermarkWindow;
class VPMainWindow : public VAbstractMainWindow class VPMainWindow : public VAbstractMainWindow
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent = nullptr); explicit VPMainWindow(const VPCommandLinePtr &cmd, QWidget *parent = nullptr);
virtual ~VPMainWindow(); ~VPMainWindow() override;
QString CurrentFile() const; auto CurrentFile() const -> QString;
/** /**
* @brief LoadFile Loads the layout file of given path in m_layout. * @brief LoadFile Loads the layout file of given path in m_layout.
@ -73,7 +70,7 @@ public:
* @param path path to layout * @param path path to layout
* @return true if success * @return true if success
*/ */
bool LoadFile(QString path); auto LoadFile(const QString& path) -> bool;
void LayoutWasSaved(bool saved); void LayoutWasSaved(bool saved);
void SetCurrentFile(const QString &fileName); void SetCurrentFile(const QString &fileName);
@ -83,7 +80,7 @@ public:
* @param path path to layout file * @param path path to layout file
* @return true if success * @return true if success
*/ */
bool SaveLayout(const QString &path, QString &error); auto SaveLayout(const QString &path, QString &error) -> bool;
/** /**
* @brief ImportRawLayouts The function imports the raw layouts of given paths * @brief ImportRawLayouts The function imports the raw layouts of given paths
@ -105,12 +102,12 @@ public slots:
*/ */
void on_actionNew_triggered(); void on_actionNew_triggered();
virtual void ShowToolTip(const QString &toolTip) override; void ShowToolTip(const QString &toolTip) override;
protected: protected:
virtual void closeEvent(QCloseEvent *event) override; void closeEvent(QCloseEvent *event) override;
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
virtual QStringList RecentFileList() const override; auto RecentFileList() const -> QStringList override;
private slots: private slots:
/** /**
@ -125,14 +122,14 @@ private slots:
* triggered. * triggered.
* The slot is automatically connected through name convention. * The slot is automatically connected through name convention.
*/ */
bool on_actionSave_triggered(); bool on_actionSave_triggered(); //NOLINT(modernize-use-trailing-return-type)
/** /**
* @brief on_actionSaveAs_triggered When the menu action File > Save As * @brief on_actionSaveAs_triggered When the menu action File > Save As
* is triggered. * is triggered.
* The slot is automatically connected through name convention. * The slot is automatically connected through name convention.
*/ */
bool on_actionSaveAs_triggered(); bool on_actionSaveAs_triggered(); //NOLINT(modernize-use-trailing-return-type)
/** /**
* @brief on_actionImportRawLayout_triggered When the menu action * @brief on_actionImportRawLayout_triggered When the menu action
@ -291,8 +288,14 @@ private slots:
void SetDefaultGUILanguage(); void SetDefaultGUILanguage();
void HorizontalScaleChanged(double value);
void VerticalScaleChanged(double value);
void LayoutWarningPiecesSuperposition_toggled(bool checked);
void LayoutWarningPiecesOutOfBound_toggled(bool checked);
private: private:
Q_DISABLE_COPY(VPMainWindow) Q_DISABLE_COPY_MOVE(VPMainWindow) // NOLINT
Ui::VPMainWindow *ui; Ui::VPMainWindow *ui;
VPCarrousel *m_carrousel{nullptr}; VPCarrousel *m_carrousel{nullptr};
@ -336,6 +339,14 @@ private:
QFileSystemWatcher *m_watermarkWatcher{nullptr}; QFileSystemWatcher *m_watermarkWatcher{nullptr};
struct VPLayoutPrinterPage
{
VPSheetPtr sheet{};
bool tilesScheme{false};
int tileRow{-1};
int tileCol{-1};
};
/** /**
* @brief InitMenuBar Inits the menu bar (File, Edit, Help ...) * @brief InitMenuBar Inits the menu bar (File, Edit, Help ...)
*/ */
@ -356,6 +367,9 @@ private:
*/ */
void InitPropertyTabCurrentSheet(); void InitPropertyTabCurrentSheet();
void InitPaperSizeData(const QString &suffix);
void InitMarginsData(const QString &suffix);
/** /**
* @brief InitPropertyTabLayout Inits the layout tab in the properties * @brief InitPropertyTabLayout Inits the layout tab in the properties
*/ */
@ -432,9 +446,9 @@ private:
auto TranslateUnit() const -> Unit; auto TranslateUnit() const -> Unit;
auto LayoutUnit() const -> Unit; auto LayoutUnit() const -> Unit;
QSizeF Template(VAbstractLayoutDialog::PaperSizeTemplate t) const; auto Template(VAbstractLayoutDialog::PaperSizeTemplate t) const -> QSizeF;
QSizeF SheetTemplate() const; auto SheetTemplate() const -> QSizeF;
QSizeF TileTemplate() const; auto TileTemplate() const -> QSizeF;
void SheetSize(const QSizeF &size); void SheetSize(const QSizeF &size);
void TileSize(const QSizeF &size); void TileSize(const QSizeF &size);
@ -458,12 +472,12 @@ private:
void RotatePiecesToGrainline(); void RotatePiecesToGrainline();
void ExportData(const VPExportData &data); void ExportData(const VPExportData &data);
void ExportApparelLayout(const VPExportData &data, const QVector<VLayoutPiece> &details, const QString &name, static void ExportApparelLayout(const VPExportData &data, const QVector<VLayoutPiece> &details, const QString &name,
const QSize &size) const; const QSize &size) ;
void ExportFlatLayout(const VPExportData &data); void ExportFlatLayout(const VPExportData &data);
void ExportScene(const VPExportData &data); void ExportScene(const VPExportData &data);
void ExportUnifiedPdfFile(const VPExportData &data); static void ExportUnifiedPdfFile(const VPExportData &data);
void GenerateUnifiedPdfFile(const VPExportData &data, const QString &name); static void GenerateUnifiedPdfFile(const VPExportData &data, const QString &name);
void ExportPdfTiledFile(const VPExportData &data); void ExportPdfTiledFile(const VPExportData &data);
void GeneratePdfTiledFile(const VPSheetPtr &sheet, bool showTilesScheme, QPainter *painter, void GeneratePdfTiledFile(const VPSheetPtr &sheet, bool showTilesScheme, QPainter *painter,
const QSharedPointer<QPrinter> &printer, bool &firstPage); const QSharedPointer<QPrinter> &printer, bool &firstPage);
@ -473,14 +487,28 @@ private:
void OpenWatermark(const QString &path = QString()); void OpenWatermark(const QString &path = QString());
void CleanWaterkmarkEditors(); void CleanWaterkmarkEditors();
void DrawTilesScheme(QPrinter *printer, QPainter *painter, const VPSheetPtr &sheet, bool &firstPage); auto DrawTilesScheme(QPrinter *printer, QPainter *painter, const VPSheetPtr &sheet, bool firstPage) -> bool;
auto AskLayoutIsInvalid(const QList<VPSheetPtr> &sheets) -> bool; auto AskLayoutIsInvalid(const QList<VPSheetPtr> &sheets) -> bool;
auto CheckPiecesOutOfBound(const VPPiecePtr &piece, bool &outOfBoundChecked) -> bool;
auto CheckSuperpositionOfPieces(const VPPiecePtr &piece, bool &pieceSuperpositionChecked) -> bool;
void PrintLayoutSheets(QPrinter *printer, const QList<VPSheetPtr> &sheets); void PrintLayoutSheets(QPrinter *printer, const QList<VPSheetPtr> &sheets);
static auto PrintLayoutSheetPage(QPrinter *printer, QPainter &painter, const VPSheetPtr& sheet) -> bool;
void PrintLayoutTiledSheets(QPrinter *printer, const QList<VPSheetPtr> &sheets); void PrintLayoutTiledSheets(QPrinter *printer, const QList<VPSheetPtr> &sheets);
auto PrepareLayoutTilePages(const QList<VPSheetPtr> &sheets) -> QVector<VPLayoutPrinterPage>;
auto PrintLayoutTiledSheetPage(QPrinter *printer, QPainter &painter, const VPLayoutPrinterPage &page,
bool firstPage) -> bool;
void ZValueMove(int move); void ZValueMove(int move);
auto ImportRawLayout(const QString &rawLayout) -> bool;
auto AddLayoutPieces(const QVector<VLayoutPiece> &pieces) -> bool;
void TranslatePieces();
void TranslatePieceRelatively(const VPPiecePtr &piece, const QRectF &rect, int selectedPiecesCount, qreal dx,
qreal dy);
void RotatePieces();
}; };
#endif // VPMAINWINDOW_H #endif // VPMAINWINDOW_H

View file

@ -26,34 +26,33 @@
** **
*************************************************************************/ *************************************************************************/
#include "vpsettings.h" #include "vpsettings.h"
#include "qglobal.h"
#include <QMarginsF> #include <QMarginsF>
namespace namespace
{ {
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDockWidgetPropertiesActive, (QLatin1String("dockWidget/properties"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDockWidgetPropertiesActive, (QLatin1String("dockWidget/properties"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDockPropertiesContentsActive, (QLatin1String("dockWidget/contents"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDockPropertiesContentsActive, (QLatin1String("dockWidget/contents"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutUnit, (QLatin1String("layout/unit"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutUnit, (QLatin1String("layout/unit"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSheetPaperWidth, (QLatin1String("layout/sheetPaperWidth"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSheetPaperWidth, (QLatin1String("layout/sheetPaperWidth"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSheetPaperHeight, (QLatin1String("layout/sheetPaperHeight"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSheetPaperHeight, (QLatin1String("layout/sheetPaperHeight"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutTilePaperWidth, (QLatin1String("layout/tilePaperWidth"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutTilePaperWidth, (QLatin1String("layout/tilePaperWidth"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutTilePaperHeight, (QLatin1String("layout/tilePaperHeight"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutTilePaperHeight, (QLatin1String("layout/tilePaperHeight"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSheetMargins, (QLatin1String("layout/sheetMargins"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSheetMargins, (QLatin1String("layout/sheetMargins"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutTileMargins, (QLatin1String("layout/tileMargins"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutTileMargins, (QLatin1String("layout/tileMargins"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSheetIgnoreMargins, (QLatin1String("layout/sheetIgnoreMargins"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutSheetIgnoreMargins, (QLatin1String("layout/sheetIgnoreMargins"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutTileIgnoreMargins, (QLatin1String("layout/tileIgnoreMargins"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutTileIgnoreMargins, (QLatin1String("layout/tileIgnoreMargins"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutTileShowTiles, (QLatin1String("layout/tileShowTiles"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutTileShowTiles, (QLatin1String("layout/tileShowTiles"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutTileShowWatermark, (QLatin1String("layout/tileShowWatermark"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutTileShowWatermark, (QLatin1String("layout/tileShowWatermark"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutWarningPiecesSuperposition, Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutWarningPiecesSuperposition, // NOLINT
(QLatin1String("layout/warningPiecesSuperposition"))) (QLatin1String("layout/warningPiecesSuperposition")))
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutStickyEdges, (QLatin1String("layout/stickyEdges"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutStickyEdges, (QLatin1String("layout/stickyEdges"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutWarningPiecesOutOfBound, Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutWarningPiecesOutOfBound, // NOLINT
(QLatin1String("layout/warningPiecesOutOfBound"))) (QLatin1String("layout/warningPiecesOutOfBound")))
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutFollowGrainline, (QLatin1String("layout/followGrainline"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutFollowGrainline, (QLatin1String("layout/followGrainline"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutPieceGap, (QLatin1String("layout/pieceGap"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutPieceGap, (QLatin1String("layout/pieceGap"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutExportFormat, (QLatin1String("layout/exportFormat"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutExportFormat, (QLatin1String("layout/exportFormat"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutLineWidth, (QLatin1String("layout/lineWidth"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingLayoutLineWidth, (QLatin1String("layout/lineWidth"))) // NOLINT
int cachedLineWidth = -1; int cachedLineWidth = -1;
} // namespace } // namespace

View file

@ -34,7 +34,7 @@
class VPSettings : public VCommonSettings class VPSettings : public VCommonSettings
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
VPSettings(Format format, Scope scope, const QString &organization, const QString &application = QString(), VPSettings(Format format, Scope scope, const QString &organization, const QString &application = QString(),
QObject *parent = nullptr); QObject *parent = nullptr);
@ -104,7 +104,7 @@ public:
void SetLayoutLineWidth(int width); void SetLayoutLineWidth(int width);
private: private:
Q_DISABLE_COPY(VPSettings) Q_DISABLE_COPY_MOVE(VPSettings) // NOLINT
}; };
#endif // VPSETTINGS_H #endif // VPSETTINGS_H

View file

@ -31,19 +31,22 @@
#include <QXmlStreamAttributes> #include <QXmlStreamAttributes>
#include <ciso646> #include <ciso646>
#include "vplayoutfilereader.h" #include "vplayoutfilereader.h"
#include "vplayoutfilewriter.h"
#include "vplayoutliterals.h" #include "vplayoutliterals.h"
#include "../layout/vpsheet.h" #include "../layout/vpsheet.h"
#include "../vlayout/vlayoutpiecepath.h" #include "../vlayout/vlayoutpiecepath.h"
#include "../vlayout/vtextmanager.h" #include "../vlayout/vtextmanager.h"
#include "../ifc/exception/vexception.h" #include "../ifc/exception/vexception.h"
#include "../ifc/exception/vexceptionconversionerror.h" #include "../ifc/exception/vexceptionconversionerror.h"
#include "../vpatterndb/floatItemData/floatitemdef.h"
#include "../vgeometry/vgeometrydef.h"
#include "../layout/vplayout.h"
#include "../layout/vppiece.h"
QT_WARNING_PUSH QT_WARNING_PUSH
QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes") QT_WARNING_DISABLE_CLANG("-Wmissing-prototypes")
QT_WARNING_DISABLE_INTEL(1418) QT_WARNING_DISABLE_INTEL(1418)
Q_LOGGING_CATEGORY(MLReader, "mlReader") Q_LOGGING_CATEGORY(MLReader, "mlReader") // NOLINT
QT_WARNING_POP QT_WARNING_POP
@ -88,6 +91,7 @@ auto StringToPath(const QString &path) -> QVector<QPointF>
{ {
QVector<QPointF> p; QVector<QPointF> p;
QStringList points = path.split(ML::pointsSep); QStringList points = path.split(ML::pointsSep);
p.reserve(points.size());
for (const auto& point : points) for (const auto& point : points)
{ {
p.append(StringToPoint(point)); p.append(StringToPoint(point));
@ -140,6 +144,7 @@ auto StringToLines(const QString &string) -> QVector<QLineF>
{ {
QStringList lines = string.split(ML::itemsSep); QStringList lines = string.split(ML::itemsSep);
QVector<QLineF> path; QVector<QLineF> path;
path.reserve(lines.size());
for (const auto& line : lines) for (const auto& line : lines)
{ {
@ -170,6 +175,7 @@ auto StringToMarkerShape(const QString &string) -> PlaceLabelImg
{ {
PlaceLabelImg shape; PlaceLabelImg shape;
QStringList paths = string.split(ML::itemsSep); QStringList paths = string.split(ML::itemsSep);
shape.reserve(paths.size());
for (const auto& path : paths) for (const auto& path : paths)
{ {
shape.append(StringToPath(path)); shape.append(StringToPath(path));
@ -956,7 +962,7 @@ auto VPLayoutFileReader::ReadAttributeBool(const QXmlStreamAttributes &attribs,
{ {
VExceptionConversionError excep(message, name); VExceptionConversionError excep(message, name);
excep.AddMoreInformation(e.ErrorMessage()); excep.AddMoreInformation(e.ErrorMessage());
throw excep; throw excep; // NOLINT(cert-err09-cpp)
} }
return val; return val;
@ -983,7 +989,7 @@ auto VPLayoutFileReader::ReadAttributeDouble(const QXmlStreamAttributes &attribs
{ {
VExceptionConversionError excep(message, name); VExceptionConversionError excep(message, name);
excep.AddMoreInformation(e.ErrorMessage()); excep.AddMoreInformation(e.ErrorMessage());
throw excep; throw excep; // NOLINT(cert-err09-cpp)
} }
return param; return param;
} }
@ -1009,7 +1015,7 @@ auto VPLayoutFileReader::ReadAttributeUInt(const QXmlStreamAttributes &attribs,
{ {
VExceptionConversionError excep(message, name); VExceptionConversionError excep(message, name);
excep.AddMoreInformation(e.ErrorMessage()); excep.AddMoreInformation(e.ErrorMessage());
throw excep; throw excep; // NOLINT(cert-err09-cpp)
} }
return param; return param;
} }
@ -1035,7 +1041,7 @@ auto VPLayoutFileReader::ReadAttributeInt(const QXmlStreamAttributes &attribs, c
{ {
VExceptionConversionError excep(message, name); VExceptionConversionError excep(message, name);
excep.AddMoreInformation(e.ErrorMessage()); excep.AddMoreInformation(e.ErrorMessage());
throw excep; throw excep; // NOLINT(cert-err09-cpp)
} }
return param; return param;
} }

View file

@ -31,18 +31,22 @@
#include <QXmlStreamReader> #include <QXmlStreamReader>
#include "../ifc/xml/vabstractconverter.h" #include "../ifc/xml/vabstractconverter.h"
#include "../layout/vplayout.h" #include "../layout/layoutdef.h"
#include "../layout/vppiece.h" #include "../vmisc/defglobal.h"
#include <QLoggingCategory> #include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(MLReader) Q_DECLARE_LOGGING_CATEGORY(MLReader) // NOLINT
struct TextLine; struct TextLine;
struct VLayoutPassmark;
struct VLayoutPlaceLabel;
class VLayoutPiecePath;
class VTextManager;
class VPLayoutFileReader : public QXmlStreamReader class VPLayoutFileReader : public QXmlStreamReader
{ {
Q_DECLARE_TR_FUNCTIONS(VPLayoutFileReader) Q_DECLARE_TR_FUNCTIONS(VPLayoutFileReader) // NOLINT
public: public:
VPLayoutFileReader()=default; VPLayoutFileReader()=default;
~VPLayoutFileReader()=default; ~VPLayoutFileReader()=default;
@ -50,7 +54,8 @@ public:
auto ReadFile(const VPLayoutPtr &layout, QFile *file) -> bool; auto ReadFile(const VPLayoutPtr &layout, QFile *file) -> bool;
private: private:
Q_DISABLE_COPY(VPLayoutFileReader) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(VPLayoutFileReader) // NOLINT
void ReadLayout(const VPLayoutPtr &layout); void ReadLayout(const VPLayoutPtr &layout);
void ReadProperties(const VPLayoutPtr &layout); void ReadProperties(const VPLayoutPtr &layout);

View file

@ -74,6 +74,7 @@ auto PointToString(const QPointF &p) -> QString
auto PathToString(const QVector<QPointF> &pathPoints) -> QString auto PathToString(const QVector<QPointF> &pathPoints) -> QString
{ {
QStringList path; QStringList path;
path.reserve(pathPoints.size());
for (auto point : pathPoints) for (auto point : pathPoints)
{ {
@ -96,6 +97,7 @@ auto RectToString(const QRectF &r) -> QString
auto MarkerShapeToString(const PlaceLabelImg &shape) -> QString auto MarkerShapeToString(const PlaceLabelImg &shape) -> QString
{ {
QStringList s; QStringList s;
s.reserve(shape.size());
for (const auto& path : shape) for (const auto& path : shape)
{ {
s.append(PathToString(path)); s.append(PathToString(path));
@ -113,6 +115,7 @@ auto LineToString(const QLineF &line) -> QString
auto LinesToString(const QVector<QLineF> &lines) -> QString auto LinesToString(const QVector<QLineF> &lines) -> QString
{ {
QStringList l; QStringList l;
l.reserve(lines.size());
for (auto line : lines) for (auto line : lines)
{ {
l.append(LineToString(line)); l.append(LineToString(line));

View file

@ -36,6 +36,7 @@
#include <ciso646> #include <ciso646>
#include "../vmisc/literals.h" #include "../vmisc/literals.h"
#include "../vmisc/defglobal.h"
#include "../layout/layoutdef.h" #include "../layout/layoutdef.h"
class VPLayout; class VPLayout;
@ -48,7 +49,7 @@ class VTextManager;
class VPLayoutFileWriter : public QXmlStreamWriter class VPLayoutFileWriter : public QXmlStreamWriter
{ {
Q_DECLARE_TR_FUNCTIONS(VPLayoutFileWriter) Q_DECLARE_TR_FUNCTIONS(VPLayoutFileWriter) // NOLINT
public: public:
VPLayoutFileWriter()= default; VPLayoutFileWriter()= default;
~VPLayoutFileWriter()= default; ~VPLayoutFileWriter()= default;
@ -56,6 +57,8 @@ public:
void WriteFile(const VPLayoutPtr &layout, QIODevice *file); void WriteFile(const VPLayoutPtr &layout, QIODevice *file);
private: private:
// cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(VPLayoutFileWriter) // NOLINT
void WriteLayout(const VPLayoutPtr &layout); void WriteLayout(const VPLayoutPtr &layout);
void WriteLayoutProperties(const VPLayoutPtr &layout); void WriteLayoutProperties(const VPLayoutPtr &layout);
void WriteSheets(const VPLayoutPtr &layout); void WriteSheets(const VPLayoutPtr &layout);
@ -73,7 +76,7 @@ private:
void SetAttribute(const QString &name, const T &value); void SetAttribute(const QString &name, const T &value);
template <size_t N> template <size_t N>
void SetAttribute(const QString &name, const char (&value)[N]); void SetAttribute(const QString &name, const char (&value)[N]); //NOLINT(cppcoreguidelines-avoid-c-arrays) NOLINT(hicpp-avoid-c-arrays) NOLINT(modernize-avoid-c-arrays)
template <typename T> template <typename T>
void SetAttributeOrRemoveIf(const QString &name, const T &value, void SetAttributeOrRemoveIf(const QString &name, const T &value,
@ -112,7 +115,7 @@ inline void VPLayoutFileWriter::SetAttribute<bool>(const QString &name, const bo
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
template <size_t N> template <size_t N>
inline void VPLayoutFileWriter::SetAttribute(const QString &name, const char (&value)[N]) inline void VPLayoutFileWriter::SetAttribute(const QString &name, const char (&value)[N]) //NOLINT(cppcoreguidelines-avoid-c-arrays) NOLINT(hicpp-avoid-c-arrays) NOLINT(modernize-avoid-c-arrays)
{ {
writeAttribute(name, QString(value)); writeAttribute(name, QString(value));
} }

View file

@ -29,89 +29,89 @@
namespace ML // Manual layout namespace ML // Manual layout
{ {
const QString TagLayout = QStringLiteral("layout"); const QString TagLayout = QStringLiteral("layout"); // NOLINT(cert-err58-cpp)
const QString TagProperties = QStringLiteral("properties"); const QString TagProperties = QStringLiteral("properties"); // NOLINT(cert-err58-cpp)
const QString TagUnit = QStringLiteral("unit"); const QString TagUnit = QStringLiteral("unit"); // NOLINT(cert-err58-cpp)
const QString TagTitle = QStringLiteral("title"); const QString TagTitle = QStringLiteral("title"); // NOLINT(cert-err58-cpp)
const QString TagDescription = QStringLiteral("description"); const QString TagDescription = QStringLiteral("description"); // NOLINT(cert-err58-cpp)
const QString TagSize = QStringLiteral("size"); const QString TagSize = QStringLiteral("size"); // NOLINT(cert-err58-cpp)
const QString TagMargin = QStringLiteral("margin"); const QString TagMargin = QStringLiteral("margin"); // NOLINT(cert-err58-cpp)
const QString TagControl = QStringLiteral("control"); const QString TagControl = QStringLiteral("control"); // NOLINT(cert-err58-cpp)
const QString TagTiles = QStringLiteral("tiles"); const QString TagTiles = QStringLiteral("tiles"); // NOLINT(cert-err58-cpp)
const QString TagUnplacedPieces = QStringLiteral("unplacedPieces"); const QString TagUnplacedPieces = QStringLiteral("unplacedPieces"); // NOLINT(cert-err58-cpp)
const QString TagPieces = QStringLiteral("pieces"); const QString TagPieces = QStringLiteral("pieces"); // NOLINT(cert-err58-cpp)
const QString TagPiece = QStringLiteral("piece"); const QString TagPiece = QStringLiteral("piece"); // NOLINT(cert-err58-cpp)
const QString TagSheets = QStringLiteral("sheets"); const QString TagSheets = QStringLiteral("sheets"); // NOLINT(cert-err58-cpp)
const QString TagSheet = QStringLiteral("sheet"); const QString TagSheet = QStringLiteral("sheet"); // NOLINT(cert-err58-cpp)
const QString TagName = QStringLiteral("name"); const QString TagName = QStringLiteral("name"); // NOLINT(cert-err58-cpp)
const QString TagSeamLine = QStringLiteral("seamLine"); const QString TagSeamLine = QStringLiteral("seamLine"); // NOLINT(cert-err58-cpp)
const QString TagSeamAllowance = QStringLiteral("seamAllowance"); const QString TagSeamAllowance = QStringLiteral("seamAllowance"); // NOLINT(cert-err58-cpp)
const QString TagGrainline = QStringLiteral("grainline"); const QString TagGrainline = QStringLiteral("grainline"); // NOLINT(cert-err58-cpp)
const QString TagNotches = QStringLiteral("notches"); const QString TagNotches = QStringLiteral("notches"); // NOLINT(cert-err58-cpp)
const QString TagNotch = QStringLiteral("notch"); const QString TagNotch = QStringLiteral("notch"); // NOLINT(cert-err58-cpp)
const QString TagInternalPaths = QStringLiteral("internalPaths"); const QString TagInternalPaths = QStringLiteral("internalPaths"); // NOLINT(cert-err58-cpp)
const QString TagInternalPath = QStringLiteral("internalPath"); const QString TagInternalPath = QStringLiteral("internalPath"); // NOLINT(cert-err58-cpp)
const QString TagMarkers = QStringLiteral("markers"); const QString TagMarkers = QStringLiteral("markers"); // NOLINT(cert-err58-cpp)
const QString TagMarker = QStringLiteral("marker"); const QString TagMarker = QStringLiteral("marker"); // NOLINT(cert-err58-cpp)
const QString TagLabels = QStringLiteral("labels"); const QString TagLabels = QStringLiteral("labels"); // NOLINT(cert-err58-cpp)
const QString TagPieceLabel = QStringLiteral("pieceLabel"); const QString TagPieceLabel = QStringLiteral("pieceLabel"); // NOLINT(cert-err58-cpp)
const QString TagPatternLabel = QStringLiteral("patternLabel"); const QString TagPatternLabel = QStringLiteral("patternLabel"); // NOLINT(cert-err58-cpp)
const QString TagLines = QStringLiteral("lines"); const QString TagLines = QStringLiteral("lines"); // NOLINT(cert-err58-cpp)
const QString TagLine = QStringLiteral("line"); const QString TagLine = QStringLiteral("line"); // NOLINT(cert-err58-cpp)
const QString TagScale = QStringLiteral("scale"); const QString TagScale = QStringLiteral("scale"); // NOLINT(cert-err58-cpp)
const QString TagWatermark = QStringLiteral("watermark"); const QString TagWatermark = QStringLiteral("watermark"); // NOLINT(cert-err58-cpp)
const QString AttrWarningSuperposition = QStringLiteral("warningSuperposition"); const QString AttrWarningSuperposition = QStringLiteral("warningSuperposition"); // NOLINT(cert-err58-cpp)
const QString AttrWarningOutOfBound = QStringLiteral("warningOutOfBound"); const QString AttrWarningOutOfBound = QStringLiteral("warningOutOfBound"); // NOLINT(cert-err58-cpp)
const QString AttrStickyEdges = QStringLiteral("stickyEdges"); const QString AttrStickyEdges = QStringLiteral("stickyEdges"); // NOLINT(cert-err58-cpp)
const QString AttrPiecesGap = QStringLiteral("piecesGap"); const QString AttrPiecesGap = QStringLiteral("piecesGap"); // NOLINT(cert-err58-cpp)
const QString AttrVisible = QStringLiteral("visible"); const QString AttrVisible = QStringLiteral("visible"); // NOLINT(cert-err58-cpp)
const QString AttrMatchingMarks = QStringLiteral("matchingMarks"); const QString AttrMatchingMarks = QStringLiteral("matchingMarks"); // NOLINT(cert-err58-cpp)
const QString AttrName = QStringLiteral("name"); const QString AttrName = QStringLiteral("name"); // NOLINT(cert-err58-cpp)
const QString AttrLeft = QStringLiteral("left"); const QString AttrLeft = QStringLiteral("left"); // NOLINT(cert-err58-cpp)
const QString AttrTop = QStringLiteral("top"); const QString AttrTop = QStringLiteral("top"); // NOLINT(cert-err58-cpp)
const QString AttrRight = QStringLiteral("right"); const QString AttrRight = QStringLiteral("right"); // NOLINT(cert-err58-cpp)
const QString AttrBottom = QStringLiteral("bottom"); const QString AttrBottom = QStringLiteral("bottom"); // NOLINT(cert-err58-cpp)
const QString AttrWidth = QStringLiteral("width"); const QString AttrWidth = QStringLiteral("width"); // NOLINT(cert-err58-cpp)
const QString AttrLength = QStringLiteral("length"); const QString AttrLength = QStringLiteral("length"); // NOLINT(cert-err58-cpp)
const QString AttrFollowGrainline = QStringLiteral("followGrainline"); const QString AttrFollowGrainline = QStringLiteral("followGrainline"); // NOLINT(cert-err58-cpp)
const QString AttrID = QStringLiteral("id"); const QString AttrID = QStringLiteral("id"); // NOLINT(cert-err58-cpp)
const QString AttrMirrored = QStringLiteral("mirrored"); const QString AttrMirrored = QStringLiteral("mirrored"); // NOLINT(cert-err58-cpp)
const QString AttrForbidFlipping = QStringLiteral("forbidFlipping"); const QString AttrForbidFlipping = QStringLiteral("forbidFlipping"); // NOLINT(cert-err58-cpp)
const QString AttrForceFlipping = QStringLiteral("forceFlipping"); const QString AttrForceFlipping = QStringLiteral("forceFlipping"); // NOLINT(cert-err58-cpp)
const QString AttrTransform = QStringLiteral("transform"); const QString AttrTransform = QStringLiteral("transform"); // NOLINT(cert-err58-cpp)
const QString AttrShowSeamline = QStringLiteral("showSeamline"); const QString AttrShowSeamline = QStringLiteral("showSeamline"); // NOLINT(cert-err58-cpp)
const QString AttrEnabled = QStringLiteral("enabled"); const QString AttrEnabled = QStringLiteral("enabled"); // NOLINT(cert-err58-cpp)
const QString AttrBuiltIn = QStringLiteral("builtIn"); const QString AttrBuiltIn = QStringLiteral("builtIn"); // NOLINT(cert-err58-cpp)
const QString AttrAngle = QStringLiteral("angle"); const QString AttrAngle = QStringLiteral("angle"); // NOLINT(cert-err58-cpp)
const QString AttrArrowDirection = QStringLiteral("arrowDirection"); const QString AttrArrowDirection = QStringLiteral("arrowDirection"); // NOLINT(cert-err58-cpp)
const QString AttrType = QStringLiteral("type"); const QString AttrType = QStringLiteral("type"); // NOLINT(cert-err58-cpp)
const QString AttrBaseLine = QStringLiteral("baseLine"); const QString AttrBaseLine = QStringLiteral("baseLine"); // NOLINT(cert-err58-cpp)
const QString AttrPath = QStringLiteral("path"); const QString AttrPath = QStringLiteral("path"); // NOLINT(cert-err58-cpp)
const QString AttrCut = QStringLiteral("cut"); const QString AttrCut = QStringLiteral("cut"); // NOLINT(cert-err58-cpp)
const QString AttrPenStyle = QStringLiteral("penStyle"); const QString AttrPenStyle = QStringLiteral("penStyle"); // NOLINT(cert-err58-cpp)
const QString AttrCenter = QStringLiteral("center"); const QString AttrCenter = QStringLiteral("center"); // NOLINT(cert-err58-cpp)
const QString AttrBox = QStringLiteral("box"); const QString AttrBox = QStringLiteral("box"); // NOLINT(cert-err58-cpp)
const QString AttrShape = QStringLiteral("shape"); const QString AttrShape = QStringLiteral("shape"); // NOLINT(cert-err58-cpp)
const QString AttrFont = QStringLiteral("font"); const QString AttrFont = QStringLiteral("font"); // NOLINT(cert-err58-cpp)
const QString AttrFontSize = QStringLiteral("fontSize"); const QString AttrFontSize = QStringLiteral("fontSize"); // NOLINT(cert-err58-cpp)
const QString AttrBold = QStringLiteral("bold"); const QString AttrBold = QStringLiteral("bold"); // NOLINT(cert-err58-cpp)
const QString AttrItalic = QStringLiteral("italic"); const QString AttrItalic = QStringLiteral("italic"); // NOLINT(cert-err58-cpp)
const QString AttrAlignment = QStringLiteral("alignment"); const QString AttrAlignment = QStringLiteral("alignment"); // NOLINT(cert-err58-cpp)
const QString AttrGradationLabel = QStringLiteral("gradationLabel"); const QString AttrGradationLabel = QStringLiteral("gradationLabel"); // NOLINT(cert-err58-cpp)
const QString AttrCopyNumber = QStringLiteral("copyNumber"); const QString AttrCopyNumber = QStringLiteral("copyNumber"); // NOLINT(cert-err58-cpp)
const QString AttrGrainlineType = QStringLiteral("grainlineType"); const QString AttrGrainlineType = QStringLiteral("grainlineType"); // NOLINT(cert-err58-cpp)
const QString AttrXScale = QStringLiteral("xScale"); const QString AttrXScale = QStringLiteral("xScale"); // NOLINT(cert-err58-cpp)
const QString AttrYScale = QStringLiteral("yScale"); const QString AttrYScale = QStringLiteral("yScale"); // NOLINT(cert-err58-cpp)
const QString AttrIgnoreMargins = QStringLiteral("ignoreMargins"); const QString AttrIgnoreMargins = QStringLiteral("ignoreMargins"); // NOLINT(cert-err58-cpp)
const QString AttrShowPreview = QStringLiteral("showPreview"); const QString AttrShowPreview = QStringLiteral("showPreview"); // NOLINT(cert-err58-cpp)
const QString AttrPrintScheme = QStringLiteral("printScheme"); const QString AttrPrintScheme = QStringLiteral("printScheme"); // NOLINT(cert-err58-cpp)
const QString AttrTileNumber = QStringLiteral("tileNumber"); const QString AttrTileNumber = QStringLiteral("tileNumber"); // NOLINT(cert-err58-cpp)
const QString AttrZValue = QStringLiteral("zValue"); const QString AttrZValue = QStringLiteral("zValue"); // NOLINT(cert-err58-cpp)
const QString atFrontStr = QStringLiteral("atFront"); const QString atFrontStr = QStringLiteral("atFront"); // NOLINT(cert-err58-cpp)
const QString atRearStr = QStringLiteral("atRear"); const QString atRearStr = QStringLiteral("atRear"); // NOLINT(cert-err58-cpp)
const QString atBothStr = QStringLiteral("atBoth"); const QString atBothStr = QStringLiteral("atBoth"); // NOLINT(cert-err58-cpp)
const QChar groupSep = QLatin1Char(';'); const QChar groupSep = QLatin1Char(';');
const QChar coordintatesSep = QLatin1Char(','); const QChar coordintatesSep = QLatin1Char(',');

View file

@ -122,7 +122,7 @@ extern const QChar groupSep;
extern const QChar coordintatesSep; extern const QChar coordintatesSep;
extern const QChar pointsSep; extern const QChar pointsSep;
extern const QChar itemsSep; extern const QChar itemsSep;
} } // namespace ML
#endif // VPLAYOUTLITERALS_H #endif // VPLAYOUTLITERALS_H

View file

@ -30,7 +30,6 @@
#include "ui_tapepreferencesconfigurationpage.h" #include "ui_tapepreferencesconfigurationpage.h"
#include "../../mapplication.h" #include "../../mapplication.h"
#include "../../vtapesettings.h" #include "../../vtapesettings.h"
#include "../vpatterndb/variables/vmeasurement.h"
#include "../vpatterndb/pmsystems.h" #include "../vpatterndb/pmsystems.h"
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -100,7 +99,7 @@ TapePreferencesConfigurationPage::~TapePreferencesConfigurationPage()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QStringList TapePreferencesConfigurationPage::Apply() auto TapePreferencesConfigurationPage::Apply() -> QStringList
{ {
QStringList preferences; QStringList preferences;
VTapeSettings *settings = MApplication::VApp()->TapeSettings(); VTapeSettings *settings = MApplication::VApp()->TapeSettings();
@ -121,16 +120,16 @@ QStringList TapePreferencesConfigurationPage::Apply()
if (m_langChanged || m_systemChanged) if (m_langChanged || m_systemChanged)
{ {
const QString locale = qvariant_cast<QString>(ui->langCombo->currentData()); const auto locale = qvariant_cast<QString>(ui->langCombo->currentData());
settings->SetLocale(locale); settings->SetLocale(locale);
m_langChanged = false; m_langChanged = false;
const QString code = qvariant_cast<QString>(ui->systemCombo->currentData()); const auto code = qvariant_cast<QString>(ui->systemCombo->currentData());
settings->SetPMSystemCode(code); settings->SetPMSystemCode(code);
m_systemChanged = false; m_systemChanged = false;
VAbstractApplication::VApp()->LoadTranslation(locale); VAbstractApplication::VApp()->LoadTranslation(locale);
qApp->processEvents();// force to call changeEvent QCoreApplication::processEvents();// force to call changeEvent
// Part about measurments will not be updated automatically // Part about measurments will not be updated automatically
MApplication::VApp()->RetranslateTables(); MApplication::VApp()->RetranslateTables();
@ -164,7 +163,7 @@ void TapePreferencesConfigurationPage::RetranslateUi()
ui->osOptionCheck->setText(tr("With OS options") + QStringLiteral(" (%1)").arg(QLocale().decimalPoint())); ui->osOptionCheck->setText(tr("With OS options") + QStringLiteral(" (%1)").arg(QLocale().decimalPoint()));
{ {
const QString code = qvariant_cast<QString>(ui->systemCombo->currentData()); const auto code = qvariant_cast<QString>(ui->systemCombo->currentData());
ui->systemCombo->blockSignals(true); ui->systemCombo->blockSignals(true);
ui->systemCombo->clear(); ui->systemCombo->clear();
InitPMSystems(ui->systemCombo); InitPMSystems(ui->systemCombo);

View file

@ -31,6 +31,8 @@
#include <QWidget> #include <QWidget>
#include "../vmisc/defglobal.h"
namespace Ui namespace Ui
{ {
class TapePreferencesConfigurationPage; class TapePreferencesConfigurationPage;
@ -38,17 +40,18 @@ namespace Ui
class TapePreferencesConfigurationPage : public QWidget class TapePreferencesConfigurationPage : public QWidget
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit TapePreferencesConfigurationPage(QWidget *parent = nullptr); explicit TapePreferencesConfigurationPage(QWidget *parent = nullptr);
virtual ~TapePreferencesConfigurationPage(); ~TapePreferencesConfigurationPage() override;
QStringList Apply(); auto Apply() -> QStringList;
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
private: private:
Q_DISABLE_COPY(TapePreferencesConfigurationPage) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(TapePreferencesConfigurationPage) // NOLINT
Ui::TapePreferencesConfigurationPage *ui; Ui::TapePreferencesConfigurationPage *ui;
bool m_langChanged; bool m_langChanged;
bool m_systemChanged; bool m_systemChanged;

View file

@ -185,35 +185,35 @@ void TapePreferencesPathPage::InitTable()
{ {
ui->pathTable->setItem(0, 0, new QTableWidgetItem(tr("My Individual Measurements"))); ui->pathTable->setItem(0, 0, new QTableWidgetItem(tr("My Individual Measurements")));
QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathIndividualMeasurements()); auto *item = new QTableWidgetItem(settings->GetPathIndividualMeasurements());
item->setToolTip(settings->GetPathIndividualMeasurements()); item->setToolTip(settings->GetPathIndividualMeasurements());
ui->pathTable->setItem(0, 1, item); ui->pathTable->setItem(0, 1, item);
} }
{ {
ui->pathTable->setItem(1, 0, new QTableWidgetItem(tr("My Multisize Measurements"))); ui->pathTable->setItem(1, 0, new QTableWidgetItem(tr("My Multisize Measurements")));
QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathMultisizeMeasurements()); auto *item = new QTableWidgetItem(settings->GetPathMultisizeMeasurements());
item->setToolTip(settings->GetPathMultisizeMeasurements()); item->setToolTip(settings->GetPathMultisizeMeasurements());
ui->pathTable->setItem(1, 1, item); ui->pathTable->setItem(1, 1, item);
} }
{ {
ui->pathTable->setItem(2, 0, new QTableWidgetItem(tr("My Patterns"))); ui->pathTable->setItem(2, 0, new QTableWidgetItem(tr("My Patterns")));
QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathPattern()); auto *item = new QTableWidgetItem(settings->GetPathPattern());
item->setToolTip(settings->GetPathPattern()); item->setToolTip(settings->GetPathPattern());
ui->pathTable->setItem(2, 1, item); ui->pathTable->setItem(2, 1, item);
} }
{ {
ui->pathTable->setItem(3, 0, new QTableWidgetItem(tr("My Templates"))); ui->pathTable->setItem(3, 0, new QTableWidgetItem(tr("My Templates")));
QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathTemplate()); auto *item = new QTableWidgetItem(settings->GetPathTemplate());
item->setToolTip(settings->GetPathTemplate()); item->setToolTip(settings->GetPathTemplate());
ui->pathTable->setItem(3, 1, item); ui->pathTable->setItem(3, 1, item);
} }
{ {
ui->pathTable->setItem(4, 0, new QTableWidgetItem(tr("My Layouts"))); ui->pathTable->setItem(4, 0, new QTableWidgetItem(tr("My Layouts")));
QTableWidgetItem *item = new QTableWidgetItem(settings->GetPathManualLayouts()); auto *item = new QTableWidgetItem(settings->GetPathManualLayouts());
item->setToolTip(settings->GetPathManualLayouts()); item->setToolTip(settings->GetPathManualLayouts());
ui->pathTable->setItem(4, 1, item); ui->pathTable->setItem(4, 1, item);
} }

View file

@ -31,6 +31,8 @@
#include <QWidget> #include <QWidget>
#include "../vmisc/defglobal.h"
namespace Ui namespace Ui
{ {
class TapePreferencesPathPage; class TapePreferencesPathPage;
@ -38,20 +40,21 @@ namespace Ui
class TapePreferencesPathPage : public QWidget class TapePreferencesPathPage : public QWidget
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit TapePreferencesPathPage(QWidget *parent = nullptr); explicit TapePreferencesPathPage(QWidget *parent = nullptr);
virtual ~TapePreferencesPathPage(); ~TapePreferencesPathPage() override;
void Apply(); void Apply();
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
private slots: private slots:
void DefaultPath(); void DefaultPath();
void EditPath(); void EditPath();
private: private:
Q_DISABLE_COPY(TapePreferencesPathPage) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(TapePreferencesPathPage) // NOLINT
Ui::TapePreferencesPathPage *ui; Ui::TapePreferencesPathPage *ui;
void InitTable(); void InitTable();

View file

@ -28,8 +28,8 @@
#include "dialogabouttape.h" #include "dialogabouttape.h"
#include "ui_dialogabouttape.h" #include "ui_dialogabouttape.h"
#include "../version.h"
#include "../vmisc/def.h" #include "../vmisc/def.h"
#include "../vmisc/projectversion.h"
#include "../fervor/fvupdater.h" #include "../fervor/fvupdater.h"
#include <QDate> #include <QDate>
@ -43,7 +43,7 @@
DialogAboutTape::DialogAboutTape(QWidget *parent) DialogAboutTape::DialogAboutTape(QWidget *parent)
:QDialog(parent), :QDialog(parent),
ui(new Ui::DialogAboutTape), ui(new Ui::DialogAboutTape),
isInitialized(false) m_isInitialized(false)
{ {
ui->setupUi(this); ui->setupUi(this);
@ -52,7 +52,8 @@ DialogAboutTape::DialogAboutTape(QWidget *parent)
RetranslateUi(); RetranslateUi();
connect(ui->pushButton_Web_Site, &QPushButton::clicked, this, []() connect(ui->pushButton_Web_Site, &QPushButton::clicked, this, []()
{ {
if (not QDesktopServices::openUrl(QUrl(QStringLiteral("https://%1").arg(VER_COMPANYDOMAIN_STR)))) if (not QDesktopServices::openUrl(
QUrl(QStringLiteral("https://%1").arg(QStringLiteral(VER_COMPANYDOMAIN_STR)))))
{ {
qWarning() << tr("Cannot open your default browser"); qWarning() << tr("Cannot open your default browser");
} }
@ -100,7 +101,7 @@ void DialogAboutTape::showEvent(QShowEvent *event)
return; return;
} }
if (isInitialized) if (m_isInitialized)
{ {
return; return;
} }
@ -109,7 +110,7 @@ void DialogAboutTape::showEvent(QShowEvent *event)
setMaximumSize(size()); setMaximumSize(size());
setMinimumSize(size()); setMinimumSize(size());
isInitialized = true;//first show windows are held m_isInitialized = true;//first show windows are held
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -125,17 +126,17 @@ void DialogAboutTape::FontPointSize(QWidget *w, int pointSize)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void DialogAboutTape::RetranslateUi() void DialogAboutTape::RetranslateUi()
{ {
ui->label_Tape_Version->setText(QString("Tape %1").arg(APP_VERSION_STR)); ui->label_Tape_Version->setText(QStringLiteral("Tape %1").arg(APP_VERSION_STR));
ui->labelBuildRevision->setText(tr("Build revision: %1").arg(BUILD_REVISION)); ui->labelBuildRevision->setText(tr("Build revision: %1").arg(QStringLiteral(BUILD_REVISION)));
ui->label_QT_Version->setText(buildCompatibilityString()); ui->label_QT_Version->setText(buildCompatibilityString());
const QDate date = QLocale::c().toDate(QString(__DATE__).simplified(), QLatin1String("MMM d yyyy")); const QDate date = QLocale::c().toDate(QStringLiteral(__DATE__).simplified(), QStringLiteral("MMM d yyyy"));
ui->label_Tape_Built->setText(tr("Built on %1 at %2").arg(date.toString(), __TIME__)); ui->label_Tape_Built->setText(tr("Built on %1 at %2").arg(date.toString(), QStringLiteral(__TIME__)));
ui->label_Legal_Stuff->setText(QApplication::translate("InternalStrings", ui->label_Legal_Stuff->setText(QApplication::translate("InternalStrings",
"The program is provided AS IS with NO WARRANTY OF ANY " "The program is provided AS IS with NO WARRANTY OF ANY "
"KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY " "KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY "
"AND FITNESS FOR A PARTICULAR PURPOSE.")); "AND FITNESS FOR A PARTICULAR PURPOSE."));
ui->pushButton_Web_Site->setText(tr("Web site : %1").arg(VER_COMPANYDOMAIN_STR)); ui->pushButton_Web_Site->setText(tr("Web site : %1").arg(QStringLiteral(VER_COMPANYDOMAIN_STR)));
} }

View file

@ -31,6 +31,8 @@
#include <QDialog> #include <QDialog>
#include "../vmisc/defglobal.h"
namespace Ui namespace Ui
{ {
class DialogAboutTape; class DialogAboutTape;
@ -38,22 +40,23 @@ namespace Ui
class DialogAboutTape : public QDialog class DialogAboutTape : public QDialog
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit DialogAboutTape(QWidget *parent = nullptr); explicit DialogAboutTape(QWidget *parent = nullptr);
virtual ~DialogAboutTape(); ~DialogAboutTape() override;
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
virtual void showEvent(QShowEvent *event) override; void showEvent(QShowEvent *event) override;
private: private:
Q_DISABLE_COPY(DialogAboutTape) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(DialogAboutTape) // NOLINT
Ui::DialogAboutTape *ui; Ui::DialogAboutTape *ui;
bool isInitialized; bool m_isInitialized;
void FontPointSize(QWidget *w, int pointSize); static void FontPointSize(QWidget *w, int pointSize);
void RetranslateUi(); void RetranslateUi();
}; };

View file

@ -46,7 +46,7 @@ DialogDimensionCustomNames::~DialogDimensionCustomNames()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QMap<MeasurementDimension, QString> DialogDimensionCustomNames::CustomNames() const auto DialogDimensionCustomNames::CustomNames() const -> QMap<MeasurementDimension, QString>
{ {
QMap<MeasurementDimension, QString> names; QMap<MeasurementDimension, QString> names;

View file

@ -42,24 +42,25 @@ class QTableWidgetItem;
class DialogDimensionLabels : public QDialog class DialogDimensionLabels : public QDialog
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit DialogDimensionLabels(const QMap<MeasurementDimension, MeasurementDimension_p > &dimensions, explicit DialogDimensionLabels(const QMap<MeasurementDimension, MeasurementDimension_p > &dimensions,
bool fullCircumference, QWidget *parent = nullptr); bool fullCircumference, QWidget *parent = nullptr);
virtual ~DialogDimensionLabels(); ~DialogDimensionLabels() override;
auto Labels() const -> QMap<MeasurementDimension, DimesionLabels>; auto Labels() const -> QMap<MeasurementDimension, DimesionLabels>;
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
private slots: private slots:
void DimensionChanged(); void DimensionChanged();
void LabelChanged(QTableWidgetItem *item); void LabelChanged(QTableWidgetItem *item);
private: private:
Q_DISABLE_COPY(DialogDimensionLabels) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(DialogDimensionLabels) // NOLINT
Ui::DialogDimensionLabels *ui; Ui::DialogDimensionLabels *ui;
QMap<MeasurementDimension, MeasurementDimension_p > m_dimensions; QMap<MeasurementDimension, MeasurementDimension_p > m_dimensions;

View file

@ -41,25 +41,7 @@
DialogMDataBase::DialogMDataBase(const QStringList &list, QWidget *parent) DialogMDataBase::DialogMDataBase(const QStringList &list, QWidget *parent)
:QDialog(parent), :QDialog(parent),
ui(new Ui::DialogMDataBase), ui(new Ui::DialogMDataBase),
selectMode(true), m_selectMode(true)
list(list),
groupA(nullptr),
groupB(nullptr),
groupC(nullptr),
groupD(nullptr),
groupE(nullptr),
groupF(nullptr),
groupG(nullptr),
groupH(nullptr),
groupI(nullptr),
groupJ(nullptr),
groupK(nullptr),
groupL(nullptr),
groupM(nullptr),
groupN(nullptr),
groupO(nullptr),
groupP(nullptr),
groupQ(nullptr)
{ {
ui->setupUi(this); ui->setupUi(this);
@ -83,26 +65,7 @@ DialogMDataBase::DialogMDataBase(const QStringList &list, QWidget *parent)
DialogMDataBase::DialogMDataBase(QWidget *parent) DialogMDataBase::DialogMDataBase(QWidget *parent)
:QDialog(parent), :QDialog(parent),
ui(new Ui::DialogMDataBase), ui(new Ui::DialogMDataBase),
selectMode(false), m_selectMode(false)
list(),
groupA(nullptr),
groupB(nullptr),
groupC(nullptr),
groupD(nullptr),
groupE(nullptr),
groupF(nullptr),
groupG(nullptr),
groupH(nullptr),
groupI(nullptr),
groupJ(nullptr),
groupK(nullptr),
groupL(nullptr),
groupM(nullptr),
groupN(nullptr),
groupO(nullptr),
groupP(nullptr),
groupQ(nullptr)
{ {
ui->setupUi(this); ui->setupUi(this);
@ -130,9 +93,9 @@ DialogMDataBase::~DialogMDataBase()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QStringList DialogMDataBase::GetNewNames() const auto DialogMDataBase::GetNewNames() const -> QStringList
{ {
if (selectMode) if (m_selectMode)
{ {
QStringList newNames; QStringList newNames;
QTreeWidgetItemIterator it(ui->treeWidget, QTreeWidgetItemIterator it(ui->treeWidget,
@ -140,7 +103,7 @@ QStringList DialogMDataBase::GetNewNames() const
while (*it) while (*it)
{ {
const QString name = (*it)->data(0, Qt::UserRole).toString(); const QString name = (*it)->data(0, Qt::UserRole).toString();
if (not list.contains(name)) if (not m_list.contains(name))
{ {
newNames.append(name); newNames.append(name);
} }
@ -148,41 +111,39 @@ QStringList DialogMDataBase::GetNewNames() const
} }
return newNames; return newNames;
} }
else
{ return {};
return QStringList();
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void DialogMDataBase::RetranslateGroups() void DialogMDataBase::RetranslateGroups()
{ {
RetranslateGroup(groupA, "A. " + tr("Direct Height", "Measurement section"), ListGroupA()); RetranslateGroup(m_groupA, "A. " + tr("Direct Height", "Measurement section"), ListGroupA());
RetranslateGroup(groupB, "B. " + tr("Direct Width", "Measurement section"), ListGroupB()); RetranslateGroup(m_groupB, "B. " + tr("Direct Width", "Measurement section"), ListGroupB());
RetranslateGroup(groupC, "C. " + tr("Indentation", "Measurement section"), ListGroupC()); RetranslateGroup(m_groupC, "C. " + tr("Indentation", "Measurement section"), ListGroupC());
RetranslateGroup(groupD, "D. " + tr("Hand", "Measurement section"), ListGroupD()); RetranslateGroup(m_groupD, "D. " + tr("Hand", "Measurement section"), ListGroupD());
RetranslateGroup(groupE, "E. " + tr("Foot", "Measurement section"), ListGroupE()); RetranslateGroup(m_groupE, "E. " + tr("Foot", "Measurement section"), ListGroupE());
RetranslateGroup(groupF, "F. " + tr("Head", "Measurement section"), ListGroupF()); RetranslateGroup(m_groupF, "F. " + tr("Head", "Measurement section"), ListGroupF());
RetranslateGroup(groupG, "G. " + tr("Circumference and Arc", "Measurement section"), ListGroupG()); RetranslateGroup(m_groupG, "G. " + tr("Circumference and Arc", "Measurement section"), ListGroupG());
RetranslateGroup(groupH, "H. " + tr("Vertical", "Measurement section"), ListGroupH()); RetranslateGroup(m_groupH, "H. " + tr("Vertical", "Measurement section"), ListGroupH());
RetranslateGroup(groupI, "I. " + tr("Horizontal", "Measurement section"), ListGroupI()); RetranslateGroup(m_groupI, "I. " + tr("Horizontal", "Measurement section"), ListGroupI());
RetranslateGroup(groupJ, "J. " + tr("Bust", "Measurement section"), ListGroupJ()); RetranslateGroup(m_groupJ, "J. " + tr("Bust", "Measurement section"), ListGroupJ());
RetranslateGroup(groupK, "K. " + tr("Balance", "Measurement section"), ListGroupK()); RetranslateGroup(m_groupK, "K. " + tr("Balance", "Measurement section"), ListGroupK());
RetranslateGroup(groupL, "L. " + tr("Arm", "Measurement section"), ListGroupL()); RetranslateGroup(m_groupL, "L. " + tr("Arm", "Measurement section"), ListGroupL());
RetranslateGroup(groupM, "M. " + tr("Leg", "Measurement section"), ListGroupM()); RetranslateGroup(m_groupM, "M. " + tr("Leg", "Measurement section"), ListGroupM());
RetranslateGroup(groupN, "N. " + tr("Crotch and Rise", "Measurement section"), ListGroupN()); RetranslateGroup(m_groupN, "N. " + tr("Crotch and Rise", "Measurement section"), ListGroupN());
RetranslateGroup(groupO, "O. " + tr("Men & Tailoring", "Measurement section"), ListGroupO()); RetranslateGroup(m_groupO, "O. " + tr("Men & Tailoring", "Measurement section"), ListGroupO());
RetranslateGroup(groupP, "P. " + tr("Historical & Specialty", "Measurement section"), ListGroupP()); RetranslateGroup(m_groupP, "P. " + tr("Historical & Specialty", "Measurement section"), ListGroupP());
RetranslateGroup(groupQ, "Q. " + tr("Patternmaking measurements", "Measurement section"), ListGroupQ()); RetranslateGroup(m_groupQ, "Q. " + tr("Patternmaking measurements", "Measurement section"), ListGroupQ());
ShowDescription(ui->treeWidget->currentItem(), 0); ShowDescription(ui->treeWidget->currentItem(), 0);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString DialogMDataBase::ImgTag(const QString &number) auto DialogMDataBase::ImgTag(const QString &number) -> QString
{ {
QString imgUrl("<img src=\"wrong.png\" align=\"center\"/>"); // In case of error QString imgUrl(QStringLiteral("<img src=\"wrong.png\" align=\"center\"/>")); // In case of error
const QString filePath = QString("://diagrams/%1.svg") const QString filePath = QStringLiteral("://diagrams/%1.svg")
.arg(MapDiagrams(VAbstractApplication::VApp()->TrVars(), number)); .arg(MapDiagrams(VAbstractApplication::VApp()->TrVars(), number));
if (QFileInfo::exists(filePath)) if (QFileInfo::exists(filePath))
{ {
@ -213,7 +174,8 @@ QString DialogMDataBase::ImgTag(const QString &number)
QByteArray byteArray; QByteArray byteArray;
QBuffer buffer(&byteArray); QBuffer buffer(&byteArray);
scaledImg.save(&buffer, "PNG"); scaledImg.save(&buffer, "PNG");
imgUrl = QString("<img src=\"data:image/png;base64,") + byteArray.toBase64() + "\" align=\"center\"/>"; imgUrl = QStringLiteral("<img src=\"data:image/png;base64,") + byteArray.toBase64() +
QStringLiteral("\" align=\"center\"/>");
} }
} }
} }
@ -235,11 +197,11 @@ void DialogMDataBase::changeEvent(QEvent *event)
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool DialogMDataBase::eventFilter(QObject *target, QEvent *event) auto DialogMDataBase::eventFilter(QObject *target, QEvent *event) -> bool
{ {
if (target == ui->treeWidget && event->type() == QEvent::KeyPress) if (target == ui->treeWidget && event->type() == QEvent::KeyPress)
{ {
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); auto *keyEvent = static_cast<QKeyEvent *>(event); // NOLINT(cppcoreguidelines-pro-type-static-cast-downcast)
switch(keyEvent->key()) switch(keyEvent->key())
{ {
case Qt::Key_Up: case Qt::Key_Up:
@ -278,13 +240,13 @@ void DialogMDataBase::UpdateChecks(QTreeWidgetItem *item, int column)
Qt::CheckState checkState = item->checkState(0); Qt::CheckState checkState = item->checkState(0);
for (int i = 0; i < item->childCount(); ++i) for (int i = 0; i < item->childCount(); ++i)
{ {
if (not list.contains(item->child(i)->data(0, Qt::UserRole).toString())) if (not m_list.contains(item->child(i)->data(0, Qt::UserRole).toString()))
{ {
item->child(i)->setCheckState(0, checkState); item->child(i)->setCheckState(0, checkState);
flag = true; flag = true;
} }
if (flag == false) // All child in the list if (not flag) // All child in the list
{ {
item->setCheckState(0, Qt::Checked); item->setCheckState(0, Qt::Checked);
} }
@ -338,22 +300,22 @@ void DialogMDataBase::TreeMenu(const QPoint &pos)
QTreeWidgetItem *item = ui->treeWidget->currentItem(); QTreeWidgetItem *item = ui->treeWidget->currentItem();
ShowDescription(item, model.column()); ShowDescription(item, model.column());
QAction *actionCollapseAll = new QAction(tr("Collapse All"), this); auto *actionCollapseAll = new QAction(tr("Collapse All"), this);
connect(actionCollapseAll, &QAction::triggered, ui->treeWidget, &QTreeWidget::collapseAll); connect(actionCollapseAll, &QAction::triggered, ui->treeWidget, &QTreeWidget::collapseAll);
QAction *actionExpandeAll = new QAction(tr("Expand All"), this); auto *actionExpandeAll = new QAction(tr("Expand All"), this);
connect(actionExpandeAll, &QAction::triggered, ui->treeWidget, &QTreeWidget::expandAll); connect(actionExpandeAll, &QAction::triggered, ui->treeWidget, &QTreeWidget::expandAll);
QMenu menu(this); QMenu menu(this);
menu.addAction(actionCollapseAll); menu.addAction(actionCollapseAll);
menu.addAction(actionExpandeAll); menu.addAction(actionExpandeAll);
if (selectMode) if (m_selectMode)
{ {
QString actionName; QString actionName;
GlobalCheckState() == Qt::Checked ? actionName = tr("Check all") : actionName = tr("Uncheck all"); GlobalCheckState() == Qt::Checked ? actionName = tr("Check all") : actionName = tr("Uncheck all");
QAction *actionRecheck = new QAction(actionName, this); auto *actionRecheck = new QAction(actionName, this);
connect(actionRecheck, &QAction::triggered, this, &DialogMDataBase::Recheck); connect(actionRecheck, &QAction::triggered, this, &DialogMDataBase::Recheck);
menu.addAction(actionRecheck); menu.addAction(actionRecheck);
@ -364,50 +326,50 @@ void DialogMDataBase::TreeMenu(const QPoint &pos)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void DialogMDataBase::Recheck() void DialogMDataBase::Recheck()
{ {
if (selectMode) if (m_selectMode)
{ {
const Qt::CheckState check = GlobalCheckState(); const Qt::CheckState check = GlobalCheckState();
ChangeCheckState(groupA, check); ChangeCheckState(m_groupA, check);
ChangeCheckState(groupB, check); ChangeCheckState(m_groupB, check);
ChangeCheckState(groupC, check); ChangeCheckState(m_groupC, check);
ChangeCheckState(groupD, check); ChangeCheckState(m_groupD, check);
ChangeCheckState(groupE, check); ChangeCheckState(m_groupE, check);
ChangeCheckState(groupF, check); ChangeCheckState(m_groupF, check);
ChangeCheckState(groupG, check); ChangeCheckState(m_groupG, check);
ChangeCheckState(groupH, check); ChangeCheckState(m_groupH, check);
ChangeCheckState(groupI, check); ChangeCheckState(m_groupI, check);
ChangeCheckState(groupJ, check); ChangeCheckState(m_groupJ, check);
ChangeCheckState(groupK, check); ChangeCheckState(m_groupK, check);
ChangeCheckState(groupL, check); ChangeCheckState(m_groupL, check);
ChangeCheckState(groupM, check); ChangeCheckState(m_groupM, check);
ChangeCheckState(groupN, check); ChangeCheckState(m_groupN, check);
ChangeCheckState(groupO, check); ChangeCheckState(m_groupO, check);
ChangeCheckState(groupP, check); ChangeCheckState(m_groupP, check);
ChangeCheckState(groupQ, check); ChangeCheckState(m_groupQ, check);
} }
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void DialogMDataBase::FilterMeasurements(const QString &search) void DialogMDataBase::FilterMeasurements(const QString &search)
{ {
FilterGroup(groupA, search); FilterGroup(m_groupA, search);
FilterGroup(groupB, search); FilterGroup(m_groupB, search);
FilterGroup(groupC, search); FilterGroup(m_groupC, search);
FilterGroup(groupD, search); FilterGroup(m_groupD, search);
FilterGroup(groupE, search); FilterGroup(m_groupE, search);
FilterGroup(groupF, search); FilterGroup(m_groupF, search);
FilterGroup(groupG, search); FilterGroup(m_groupG, search);
FilterGroup(groupH, search); FilterGroup(m_groupH, search);
FilterGroup(groupI, search); FilterGroup(m_groupI, search);
FilterGroup(groupJ, search); FilterGroup(m_groupJ, search);
FilterGroup(groupK, search); FilterGroup(m_groupK, search);
FilterGroup(groupL, search); FilterGroup(m_groupL, search);
FilterGroup(groupM, search); FilterGroup(m_groupM, search);
FilterGroup(groupN, search); FilterGroup(m_groupN, search);
FilterGroup(groupO, search); FilterGroup(m_groupO, search);
FilterGroup(groupP, search); FilterGroup(m_groupP, search);
FilterGroup(groupQ, search); FilterGroup(m_groupQ, search);
const QList<QTreeWidgetItem *> list = ui->treeWidget->selectedItems(); const QList<QTreeWidgetItem *> list = ui->treeWidget->selectedItems();
list.isEmpty() ? ShowDescription(nullptr, -1) : ShowDescription(ConstFirst(list), 0); list.isEmpty() ? ShowDescription(nullptr, -1) : ShowDescription(ConstFirst(list), 0);
@ -416,23 +378,23 @@ void DialogMDataBase::FilterMeasurements(const QString &search)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void DialogMDataBase::InitDataBase(const QStringList &list) void DialogMDataBase::InitDataBase(const QStringList &list)
{ {
InitGroup(&groupA, "A. " + tr("Direct Height", "Measurement section"), ListGroupA(), list); InitGroup(&m_groupA, "A. " + tr("Direct Height", "Measurement section"), ListGroupA(), list);
InitGroup(&groupB, "B. " + tr("Direct Width", "Measurement section"), ListGroupB(), list); InitGroup(&m_groupB, "B. " + tr("Direct Width", "Measurement section"), ListGroupB(), list);
InitGroup(&groupC, "C. " + tr("Indentation", "Measurement section"), ListGroupC(), list); InitGroup(&m_groupC, "C. " + tr("Indentation", "Measurement section"), ListGroupC(), list);
InitGroup(&groupD, "D. " + tr("Hand", "Measurement section"), ListGroupD(), list); InitGroup(&m_groupD, "D. " + tr("Hand", "Measurement section"), ListGroupD(), list);
InitGroup(&groupE, "E. " + tr("Foot", "Measurement section"), ListGroupE(), list); InitGroup(&m_groupE, "E. " + tr("Foot", "Measurement section"), ListGroupE(), list);
InitGroup(&groupF, "F. " + tr("Head", "Measurement section"), ListGroupF(), list); InitGroup(&m_groupF, "F. " + tr("Head", "Measurement section"), ListGroupF(), list);
InitGroup(&groupG, "G. " + tr("Circumference and Arc", "Measurement section"), ListGroupG(), list); InitGroup(&m_groupG, "G. " + tr("Circumference and Arc", "Measurement section"), ListGroupG(), list);
InitGroup(&groupH, "H. " + tr("Vertical", "Measurement section"), ListGroupH(), list); InitGroup(&m_groupH, "H. " + tr("Vertical", "Measurement section"), ListGroupH(), list);
InitGroup(&groupI, "I. " + tr("Horizontal", "Measurement section"), ListGroupI(), list); InitGroup(&m_groupI, "I. " + tr("Horizontal", "Measurement section"), ListGroupI(), list);
InitGroup(&groupJ, "J. " + tr("Bust", "Measurement section"), ListGroupJ(), list); InitGroup(&m_groupJ, "J. " + tr("Bust", "Measurement section"), ListGroupJ(), list);
InitGroup(&groupK, "K. " + tr("Balance", "Measurement section"), ListGroupK(), list); InitGroup(&m_groupK, "K. " + tr("Balance", "Measurement section"), ListGroupK(), list);
InitGroup(&groupL, "L. " + tr("Arm", "Measurement section"), ListGroupL(), list); InitGroup(&m_groupL, "L. " + tr("Arm", "Measurement section"), ListGroupL(), list);
InitGroup(&groupM, "M. " + tr("Leg", "Measurement section"), ListGroupM(), list); InitGroup(&m_groupM, "M. " + tr("Leg", "Measurement section"), ListGroupM(), list);
InitGroup(&groupN, "N. " + tr("Crotch and Rise", "Measurement section"), ListGroupN(), list); InitGroup(&m_groupN, "N. " + tr("Crotch and Rise", "Measurement section"), ListGroupN(), list);
InitGroup(&groupO, "O. " + tr("Men & Tailoring", "Measurement section"), ListGroupO(), list); InitGroup(&m_groupO, "O. " + tr("Men & Tailoring", "Measurement section"), ListGroupO(), list);
InitGroup(&groupP, "P. " + tr("Historical & Specialty", "Measurement section"), ListGroupP(), list); InitGroup(&m_groupP, "P. " + tr("Historical & Specialty", "Measurement section"), ListGroupP(), list);
InitGroup(&groupQ, "Q. " + tr("Patternmaking measurements", "Measurement section"), ListGroupQ(), list); InitGroup(&m_groupQ, "Q. " + tr("Patternmaking measurements", "Measurement section"), ListGroupQ(), list);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -440,7 +402,7 @@ void DialogMDataBase::InitGroup(QTreeWidgetItem **group, const QString &groupNam
const QStringList &list) const QStringList &list)
{ {
*group = AddGroup(groupName); *group = AddGroup(groupName);
for (auto &m : mList) for (const auto &m : mList)
{ {
AddMeasurement(*group, m, list); AddMeasurement(*group, m, list);
} }
@ -472,13 +434,13 @@ void DialogMDataBase::FilterGroup(QTreeWidgetItem *group, const QString &search)
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QTreeWidgetItem *DialogMDataBase::AddGroup(const QString &text) auto DialogMDataBase::AddGroup(const QString &text) -> QTreeWidgetItem *
{ {
QTreeWidgetItem *group = new QTreeWidgetItem(ui->treeWidget); auto *group = new QTreeWidgetItem(ui->treeWidget);
group->setText(0, text); group->setText(0, text);
group->setToolTip(0, text); group->setToolTip(0, text);
group->setExpanded(true); group->setExpanded(true);
if (selectMode) if (m_selectMode)
{ {
group->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); group->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
group->setCheckState(0, Qt::Unchecked); group->setCheckState(0, Qt::Unchecked);
@ -492,9 +454,9 @@ void DialogMDataBase::AddMeasurement(QTreeWidgetItem *group, const QString &name
{ {
SCASSERT(group != nullptr) SCASSERT(group != nullptr)
QTreeWidgetItem *m = new QTreeWidgetItem(group); auto *m = new QTreeWidgetItem(group);
if (selectMode) if (m_selectMode)
{ {
if (list.contains(name)) if (list.contains(name))
{ {
@ -530,17 +492,17 @@ void DialogMDataBase::WriteSettings()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString DialogMDataBase::ItemFullDescription(QTreeWidgetItem *item, bool showImage) const auto DialogMDataBase::ItemFullDescription(QTreeWidgetItem *item, bool showImage) -> QString
{ {
if (item == nullptr || item->childCount() != 0) if (item == nullptr || item->childCount() != 0)
{ {
return QString(); return {};
} }
const QString name = item->data(0, Qt::UserRole).toString(); const QString name = item->data(0, Qt::UserRole).toString();
if (name.isEmpty()) if (name.isEmpty())
{ {
return QString(); return {};
} }
const QString number = VAbstractApplication::VApp()->TrVars()->MNumber(name); const QString number = VAbstractApplication::VApp()->TrVars()->MNumber(name);
@ -592,65 +554,66 @@ void DialogMDataBase::ChangeCheckState(QTreeWidgetItem *group, Qt::CheckState ch
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
Qt::CheckState DialogMDataBase::GlobalCheckState() const auto DialogMDataBase::GlobalCheckState() const -> Qt::CheckState
{ {
SCASSERT(groupA != nullptr) SCASSERT(m_groupA != nullptr)
SCASSERT(groupB != nullptr) SCASSERT(m_groupB != nullptr)
SCASSERT(groupC != nullptr) SCASSERT(m_groupC != nullptr)
SCASSERT(groupD != nullptr) SCASSERT(m_groupD != nullptr)
SCASSERT(groupE != nullptr) SCASSERT(m_groupE != nullptr)
SCASSERT(groupF != nullptr) SCASSERT(m_groupF != nullptr)
SCASSERT(groupG != nullptr) SCASSERT(m_groupG != nullptr)
SCASSERT(groupH != nullptr) SCASSERT(m_groupH != nullptr)
SCASSERT(groupI != nullptr) SCASSERT(m_groupI != nullptr)
SCASSERT(groupJ != nullptr) SCASSERT(m_groupJ != nullptr)
SCASSERT(groupK != nullptr) SCASSERT(m_groupK != nullptr)
SCASSERT(groupL != nullptr) SCASSERT(m_groupL != nullptr)
SCASSERT(groupM != nullptr) SCASSERT(m_groupM != nullptr)
SCASSERT(groupN != nullptr) SCASSERT(m_groupN != nullptr)
SCASSERT(groupO != nullptr) SCASSERT(m_groupO != nullptr)
SCASSERT(groupP != nullptr) SCASSERT(m_groupP != nullptr)
SCASSERT(groupQ != nullptr) SCASSERT(m_groupQ != nullptr)
if (selectMode) if (m_selectMode)
{ {
if (groupA->checkState(0) == Qt::Unchecked && if (m_groupA->checkState(0) == Qt::Unchecked &&
groupB->checkState(0) == Qt::Unchecked && m_groupB->checkState(0) == Qt::Unchecked &&
groupC->checkState(0) == Qt::Unchecked && m_groupC->checkState(0) == Qt::Unchecked &&
groupD->checkState(0) == Qt::Unchecked && m_groupD->checkState(0) == Qt::Unchecked &&
groupE->checkState(0) == Qt::Unchecked && m_groupE->checkState(0) == Qt::Unchecked &&
groupF->checkState(0) == Qt::Unchecked && m_groupF->checkState(0) == Qt::Unchecked &&
groupG->checkState(0) == Qt::Unchecked && m_groupG->checkState(0) == Qt::Unchecked &&
groupH->checkState(0) == Qt::Unchecked && m_groupH->checkState(0) == Qt::Unchecked &&
groupI->checkState(0) == Qt::Unchecked && m_groupI->checkState(0) == Qt::Unchecked &&
groupJ->checkState(0) == Qt::Unchecked && m_groupJ->checkState(0) == Qt::Unchecked &&
groupK->checkState(0) == Qt::Unchecked && m_groupK->checkState(0) == Qt::Unchecked &&
groupL->checkState(0) == Qt::Unchecked && m_groupL->checkState(0) == Qt::Unchecked &&
groupM->checkState(0) == Qt::Unchecked && m_groupM->checkState(0) == Qt::Unchecked &&
groupN->checkState(0) == Qt::Unchecked && m_groupN->checkState(0) == Qt::Unchecked &&
groupO->checkState(0) == Qt::Unchecked && m_groupO->checkState(0) == Qt::Unchecked &&
groupP->checkState(0) == Qt::Unchecked && m_groupP->checkState(0) == Qt::Unchecked &&
groupQ->checkState(0) == Qt::Unchecked) m_groupQ->checkState(0) == Qt::Unchecked)
{ {
return Qt::Checked; return Qt::Checked;
} }
else if (groupA->checkState(0) == Qt::Checked &&
groupB->checkState(0) == Qt::Checked && if (m_groupA->checkState(0) == Qt::Checked &&
groupC->checkState(0) == Qt::Checked && m_groupB->checkState(0) == Qt::Checked &&
groupD->checkState(0) == Qt::Checked && m_groupC->checkState(0) == Qt::Checked &&
groupE->checkState(0) == Qt::Checked && m_groupD->checkState(0) == Qt::Checked &&
groupF->checkState(0) == Qt::Checked && m_groupE->checkState(0) == Qt::Checked &&
groupG->checkState(0) == Qt::Checked && m_groupF->checkState(0) == Qt::Checked &&
groupH->checkState(0) == Qt::Checked && m_groupG->checkState(0) == Qt::Checked &&
groupI->checkState(0) == Qt::Checked && m_groupH->checkState(0) == Qt::Checked &&
groupJ->checkState(0) == Qt::Checked && m_groupI->checkState(0) == Qt::Checked &&
groupK->checkState(0) == Qt::Checked && m_groupJ->checkState(0) == Qt::Checked &&
groupL->checkState(0) == Qt::Checked && m_groupK->checkState(0) == Qt::Checked &&
groupM->checkState(0) == Qt::Checked && m_groupL->checkState(0) == Qt::Checked &&
groupN->checkState(0) == Qt::Checked && m_groupM->checkState(0) == Qt::Checked &&
groupO->checkState(0) == Qt::Checked && m_groupN->checkState(0) == Qt::Checked &&
groupP->checkState(0) == Qt::Checked && m_groupO->checkState(0) == Qt::Checked &&
groupQ->checkState(0) == Qt::Checked) m_groupP->checkState(0) == Qt::Checked &&
m_groupQ->checkState(0) == Qt::Checked)
{ {
return Qt::Unchecked; return Qt::Unchecked;
} }

View file

@ -31,6 +31,8 @@
#include <QDialog> #include <QDialog>
#include "../vmisc/defglobal.h"
namespace Ui namespace Ui
{ {
class DialogMDataBase; class DialogMDataBase;
@ -40,22 +42,22 @@ class QTreeWidgetItem;
class DialogMDataBase : public QDialog class DialogMDataBase : public QDialog
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit DialogMDataBase(const QStringList &list, QWidget *parent = nullptr); explicit DialogMDataBase(const QStringList &list, QWidget *parent = nullptr);
explicit DialogMDataBase(QWidget *parent = nullptr); explicit DialogMDataBase(QWidget *parent = nullptr);
virtual ~DialogMDataBase() override; ~DialogMDataBase() override;
QStringList GetNewNames() const; auto GetNewNames() const -> QStringList;
void RetranslateGroups(); void RetranslateGroups();
static QString ImgTag(const QString &number); static auto ImgTag(const QString &number) -> QString;
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
virtual bool eventFilter(QObject *target, QEvent *event) override; auto eventFilter(QObject *target, QEvent *event) -> bool override;
private slots: private slots:
void UpdateChecks(QTreeWidgetItem *item, int column); void UpdateChecks(QTreeWidgetItem *item, int column);
@ -65,48 +67,49 @@ private slots:
void FilterMeasurements(const QString &search); void FilterMeasurements(const QString &search);
private: private:
Q_DISABLE_COPY(DialogMDataBase) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(DialogMDataBase) // NOLINT
Ui::DialogMDataBase *ui; Ui::DialogMDataBase *ui;
bool selectMode; bool m_selectMode;
QStringList list; QStringList m_list{};
QTreeWidgetItem *groupA; QTreeWidgetItem *m_groupA{nullptr};
QTreeWidgetItem *groupB; QTreeWidgetItem *m_groupB{nullptr};
QTreeWidgetItem *groupC; QTreeWidgetItem *m_groupC{nullptr};
QTreeWidgetItem *groupD; QTreeWidgetItem *m_groupD{nullptr};
QTreeWidgetItem *groupE; QTreeWidgetItem *m_groupE{nullptr};
QTreeWidgetItem *groupF; QTreeWidgetItem *m_groupF{nullptr};
QTreeWidgetItem *groupG; QTreeWidgetItem *m_groupG{nullptr};
QTreeWidgetItem *groupH; QTreeWidgetItem *m_groupH{nullptr};
QTreeWidgetItem *groupI; QTreeWidgetItem *m_groupI{nullptr};
QTreeWidgetItem *groupJ; QTreeWidgetItem *m_groupJ{nullptr};
QTreeWidgetItem *groupK; QTreeWidgetItem *m_groupK{nullptr};
QTreeWidgetItem *groupL; QTreeWidgetItem *m_groupL{nullptr};
QTreeWidgetItem *groupM; QTreeWidgetItem *m_groupM{nullptr};
QTreeWidgetItem *groupN; QTreeWidgetItem *m_groupN{nullptr};
QTreeWidgetItem *groupO; QTreeWidgetItem *m_groupO{nullptr};
QTreeWidgetItem *groupP; QTreeWidgetItem *m_groupP{nullptr};
QTreeWidgetItem *groupQ; QTreeWidgetItem *m_groupQ{nullptr};
void InitDataBase(const QStringList &list = QStringList()); void InitDataBase(const QStringList &list = QStringList());
void InitGroup(QTreeWidgetItem **group, const QString &groupName, const QStringList &mList, void InitGroup(QTreeWidgetItem **group, const QString &groupName, const QStringList &mList,
const QStringList &list = QStringList()); const QStringList &list = QStringList());
void FilterGroup(QTreeWidgetItem *group, const QString &search); static void FilterGroup(QTreeWidgetItem *group, const QString &search);
Q_REQUIRED_RESULT QTreeWidgetItem *AddGroup(const QString &text); Q_REQUIRED_RESULT auto AddGroup(const QString &text) -> QTreeWidgetItem *;
void AddMeasurement(QTreeWidgetItem *group, const QString &name, const QStringList &list); void AddMeasurement(QTreeWidgetItem *group, const QString &name, const QStringList &list);
void ReadSettings(); void ReadSettings();
void WriteSettings(); void WriteSettings();
QString ItemFullDescription(QTreeWidgetItem *item, bool showImage = true) const; static auto ItemFullDescription(QTreeWidgetItem *item, bool showImage = true) -> QString;
void RetranslateGroup(QTreeWidgetItem *group, const QString &groupText, const QStringList &list); static void RetranslateGroup(QTreeWidgetItem *group, const QString &groupText, const QStringList &list);
void RetranslateMeasurement(QTreeWidgetItem *group, int index, const QString &name); static void RetranslateMeasurement(QTreeWidgetItem *group, int index, const QString &name);
void ChangeCheckState(QTreeWidgetItem *group, Qt::CheckState check); static void ChangeCheckState(QTreeWidgetItem *group, Qt::CheckState check);
Qt::CheckState GlobalCheckState() const; auto GlobalCheckState() const -> Qt::CheckState;
}; };
#endif // DIALOGMDATABASE_H #endif // DIALOGMDATABASE_H

View file

@ -120,7 +120,7 @@ void DialogMeasurementsCSVColumns::showEvent(QShowEvent *event)
if (m_type == MeasurementsType::Multisize) if (m_type == MeasurementsType::Multisize)
{ {
if (m_dimensions.size() > 0) if (not m_dimensions.empty())
{ {
connect(ui->comboBoxShiftA, QOverload<int>::of(&QComboBox::currentIndexChanged), connect(ui->comboBoxShiftA, QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &DialogMeasurementsCSVColumns::ColumnChanged); this, &DialogMeasurementsCSVColumns::ColumnChanged);
@ -203,27 +203,25 @@ void DialogMeasurementsCSVColumns::ColumnChanged()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool DialogMeasurementsCSVColumns::ColumnMandatory(int column) const auto DialogMeasurementsCSVColumns::ColumnMandatory(int column) const -> bool
{ {
if (m_type == MeasurementsType::Individual) if (m_type == MeasurementsType::Individual)
{ {
return column < static_cast<int>(IndividualMeasurementsColumns::FullName); return column < static_cast<int>(IndividualMeasurementsColumns::FullName);
} }
else
int mandatory = 3;
if (m_dimensions.size() > 1)
{ {
int mandatory = 3; mandatory += qMin(m_dimensions.size(), 2);
if (m_dimensions.size() > 1)
{
mandatory += qMin(m_dimensions.size(), 2);
}
return static_cast<int>(column) < mandatory;
} }
return static_cast<int>(column) < mandatory;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString DialogMeasurementsCSVColumns::ColumnHeader(int column) const auto DialogMeasurementsCSVColumns::ColumnHeader(int column) const -> QString
{ {
if (m_type == MeasurementsType::Individual) if (m_type == MeasurementsType::Individual)
{ {
@ -239,7 +237,7 @@ QString DialogMeasurementsCSVColumns::ColumnHeader(int column) const
case IndividualMeasurementsColumns::Description: case IndividualMeasurementsColumns::Description:
return tr("Description", "measurement column"); return tr("Description", "measurement column");
default: default:
return QString(); return {};
} }
} }
else else
@ -252,14 +250,14 @@ QString DialogMeasurementsCSVColumns::ColumnHeader(int column) const
case MultisizeMeasurementsColumns::BaseValue: case MultisizeMeasurementsColumns::BaseValue:
return tr("Base value", "measurement column"); return tr("Base value", "measurement column");
case MultisizeMeasurementsColumns::ShiftA: case MultisizeMeasurementsColumns::ShiftA:
if (m_dimensions.size() > 0) if (not m_dimensions.empty())
{ {
MeasurementDimension_p dimension = m_dimensions.at(0); MeasurementDimension_p dimension = m_dimensions.at(0);
return tr("Shift (%1):", "measurement column").arg(dimension->Name()); return tr("Shift (%1):", "measurement column").arg(dimension->Name());
} }
else else
{ {
return "Shift A"; return QStringLiteral("Shift A");
} }
case MultisizeMeasurementsColumns::ShiftB: case MultisizeMeasurementsColumns::ShiftB:
if (m_dimensions.size() > 1) if (m_dimensions.size() > 1)
@ -269,7 +267,7 @@ QString DialogMeasurementsCSVColumns::ColumnHeader(int column) const
} }
else else
{ {
return "Shift B"; return QStringLiteral("Shift B");
} }
case MultisizeMeasurementsColumns::ShiftC: case MultisizeMeasurementsColumns::ShiftC:
if (m_dimensions.size() > 2) if (m_dimensions.size() > 2)
@ -279,7 +277,7 @@ QString DialogMeasurementsCSVColumns::ColumnHeader(int column) const
} }
else else
{ {
return "Shift C"; return QStringLiteral("Shift C");
} }
case MultisizeMeasurementsColumns::FullName: case MultisizeMeasurementsColumns::FullName:
return tr("Full name", "measurement column"); return tr("Full name", "measurement column");
@ -292,62 +290,38 @@ QString DialogMeasurementsCSVColumns::ColumnHeader(int column) const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
int DialogMeasurementsCSVColumns::ImportColumnCount() const auto DialogMeasurementsCSVColumns::ImportColumnCount() const -> int
{ {
if (m_type == MeasurementsType::Individual) if (m_type == MeasurementsType::Individual)
{ {
return static_cast<int>(IndividualMeasurementsColumns::LAST_DO_NOT_USE); return static_cast<int>(IndividualMeasurementsColumns::LAST_DO_NOT_USE);
} }
else
{ return static_cast<int>(MultisizeMeasurementsColumns::LAST_DO_NOT_USE);
return static_cast<int>(MultisizeMeasurementsColumns::LAST_DO_NOT_USE);
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
int DialogMeasurementsCSVColumns::MinimumColumns() const auto DialogMeasurementsCSVColumns::MinimumColumns() const -> int
{ {
if (m_type == MeasurementsType::Individual) if (m_type == MeasurementsType::Individual)
{ {
return 2; return 2;
} }
else
int mandatory = 3;
if (m_dimensions.size() > 1)
{ {
int mandatory = 3; mandatory += qMin(m_dimensions.size(), 2);
if (m_dimensions.size() > 1)
{
mandatory += qMin(m_dimensions.size(), 2);
}
return mandatory;
} }
return mandatory;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
auto DialogMeasurementsCSVColumns::ColumnsValid() -> bool auto DialogMeasurementsCSVColumns::ColumnsValid() -> bool
{ {
ChangeColor(ui->labelName, OkColor(this)); ClearColumnCollor();
ChangeColor(ui->labelValue, OkColor(this));
if (m_type == MeasurementsType::Multisize)
{
if (not m_dimensions.empty())
{
ChangeColor(ui->labelShiftA, OkColor(this));
}
if (m_dimensions.size() > 1)
{
ChangeColor(ui->labelShiftB, OkColor(this));
}
if (m_dimensions.size() > 2)
{
ChangeColor(ui->labelShiftC, OkColor(this));
}
}
ChangeColor(ui->labelFullName, OkColor(this));
ChangeColor(ui->labelDescription, OkColor(this));
bool columnNameFlag = true; bool columnNameFlag = true;
bool columnValueFlag = true; bool columnValueFlag = true;
@ -359,20 +333,22 @@ auto DialogMeasurementsCSVColumns::ColumnsValid() -> bool
const QColor errorColor = Qt::red; const QColor errorColor = Qt::red;
if (m_type == MeasurementsType::Multisize ? not ColumnValid(MultisizeMeasurementsColumns::Name) auto ChangeColumnColor = [this, errorColor]
: not ColumnValid(IndividualMeasurementsColumns::Name)) (QLabel *label, bool &columnFlag, MultisizeMeasurementsColumns multisizeColumn,
IndividualMeasurementsColumns individualColumn)
{ {
ChangeColor(ui->labelName, errorColor); if (m_type == MeasurementsType::Multisize ? not ColumnValid(multisizeColumn)
columnNameFlag = false; : not ColumnValid(individualColumn))
} {
ChangeColor(label, errorColor);
columnFlag = false;
}
};
ChangeColumnColor(ui->labelName, columnNameFlag, MultisizeMeasurementsColumns::Name,
if (m_type == MeasurementsType::Multisize ? not ColumnValid(MultisizeMeasurementsColumns::BaseValue) IndividualMeasurementsColumns::Name);
: not ColumnValid(IndividualMeasurementsColumns::Value)) ChangeColumnColor(ui->labelValue, columnValueFlag, MultisizeMeasurementsColumns::BaseValue,
{ IndividualMeasurementsColumns::Value);
ChangeColor(ui->labelValue, errorColor);
columnValueFlag = false;
}
if (m_type == MeasurementsType::Multisize) if (m_type == MeasurementsType::Multisize)
{ {
@ -404,24 +380,41 @@ auto DialogMeasurementsCSVColumns::ColumnsValid() -> bool
} }
} }
if (m_type == MeasurementsType::Multisize ? not ColumnValid(MultisizeMeasurementsColumns::FullName) ChangeColumnColor(ui->labelFullName, columnFullNameFlag, MultisizeMeasurementsColumns::FullName,
: not ColumnValid(IndividualMeasurementsColumns::FullName)) IndividualMeasurementsColumns::FullName);
{ ChangeColumnColor(ui->labelDescription, columnDescriptionFlag, MultisizeMeasurementsColumns::Description,
ChangeColor(ui->labelFullName, errorColor); IndividualMeasurementsColumns::Description);
columnFullNameFlag = false;
}
if (m_type == MeasurementsType::Multisize ? not ColumnValid(MultisizeMeasurementsColumns::Description)
: not ColumnValid(IndividualMeasurementsColumns::Description))
{
ChangeColor(ui->labelDescription, errorColor);
columnDescriptionFlag = false;
}
return columnNameFlag && columnValueFlag && columnShiftAFlag && columnShiftBFlag && columnShiftCFlag && return columnNameFlag && columnValueFlag && columnShiftAFlag && columnShiftBFlag && columnShiftCFlag &&
columnFullNameFlag && columnDescriptionFlag; columnFullNameFlag && columnDescriptionFlag;
} }
//---------------------------------------------------------------------------------------------------------------------
void DialogMeasurementsCSVColumns::ClearColumnCollor()
{
ChangeColor(ui->labelName, OkColor(this));
ChangeColor(ui->labelValue, OkColor(this));
if (m_type == MeasurementsType::Multisize)
{
if (not m_dimensions.empty())
{
ChangeColor(ui->labelShiftA, OkColor(this));
}
if (m_dimensions.size() > 1)
{
ChangeColor(ui->labelShiftB, OkColor(this));
}
if (m_dimensions.size() > 2)
{
ChangeColor(ui->labelShiftC, OkColor(this));
}
}
ChangeColor(ui->labelFullName, OkColor(this));
ChangeColor(ui->labelDescription, OkColor(this));
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void DialogMeasurementsCSVColumns::InitColumnsMap() void DialogMeasurementsCSVColumns::InitColumnsMap()
{ {
@ -537,7 +530,7 @@ void DialogMeasurementsCSVColumns::InitColumnsControls()
InitControl(ui->comboBoxName, static_cast<int>(MultisizeMeasurementsColumns::Name)); InitControl(ui->comboBoxName, static_cast<int>(MultisizeMeasurementsColumns::Name));
InitControl(ui->comboBoxValue, static_cast<int>(MultisizeMeasurementsColumns::BaseValue)); InitControl(ui->comboBoxValue, static_cast<int>(MultisizeMeasurementsColumns::BaseValue));
if (m_dimensions.size() > 0) if (not m_dimensions.empty())
{ {
InitControl(ui->comboBoxShiftA, static_cast<int>(MultisizeMeasurementsColumns::ShiftA)); InitControl(ui->comboBoxShiftA, static_cast<int>(MultisizeMeasurementsColumns::ShiftA));
} }
@ -572,7 +565,7 @@ void DialogMeasurementsCSVColumns::InitImportHeaders()
auto AddHeader = [this](int column, bool visible=true) auto AddHeader = [this](int column, bool visible=true)
{ {
QTableWidgetItem *header = new QTableWidgetItem(ColumnHeader(column)); auto *header = new QTableWidgetItem(ColumnHeader(column));
ui->tableWidgetImport->setHorizontalHeaderItem(column, header); ui->tableWidgetImport->setHorizontalHeaderItem(column, header);
ui->tableWidgetImport->setColumnHidden(column, not visible); ui->tableWidgetImport->setColumnHidden(column, not visible);
}; };
@ -588,7 +581,7 @@ void DialogMeasurementsCSVColumns::InitImportHeaders()
{ {
AddHeader(static_cast<int>(MultisizeMeasurementsColumns::Name)); AddHeader(static_cast<int>(MultisizeMeasurementsColumns::Name));
AddHeader(static_cast<int>(MultisizeMeasurementsColumns::BaseValue)); AddHeader(static_cast<int>(MultisizeMeasurementsColumns::BaseValue));
AddHeader(static_cast<int>(MultisizeMeasurementsColumns::ShiftA), m_dimensions.size() > 0); AddHeader(static_cast<int>(MultisizeMeasurementsColumns::ShiftA), not m_dimensions.empty());
AddHeader(static_cast<int>(MultisizeMeasurementsColumns::ShiftB), m_dimensions.size() > 1); AddHeader(static_cast<int>(MultisizeMeasurementsColumns::ShiftB), m_dimensions.size() > 1);
AddHeader(static_cast<int>(MultisizeMeasurementsColumns::ShiftC), m_dimensions.size() > 2); AddHeader(static_cast<int>(MultisizeMeasurementsColumns::ShiftC), m_dimensions.size() > 2);
AddHeader(static_cast<int>(MultisizeMeasurementsColumns::FullName)); AddHeader(static_cast<int>(MultisizeMeasurementsColumns::FullName));
@ -597,7 +590,7 @@ void DialogMeasurementsCSVColumns::InitImportHeaders()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QSharedPointer<QxtCsvModel> DialogMeasurementsCSVColumns::CSVModel() const auto DialogMeasurementsCSVColumns::CSVModel() const -> QSharedPointer<QxtCsvModel>
{ {
return QSharedPointer<QxtCsvModel>::create(m_fileName, nullptr, m_withHeader, m_separator, m_codec); return QSharedPointer<QxtCsvModel>::create(m_fileName, nullptr, m_withHeader, m_separator, m_codec);
} }
@ -624,7 +617,7 @@ void DialogMeasurementsCSVColumns::ShowInputPreview()
{ {
for(int column=0; column<columns; ++column) for(int column=0; column<columns; ++column)
{ {
QTableWidgetItem *header = new QTableWidgetItem(csv->headerText(column)); auto *header = new QTableWidgetItem(csv->headerText(column));
header->setToolTip(QString::number(column+1)); header->setToolTip(QString::number(column+1));
ui->tableWidgetInput->setHorizontalHeaderItem(column, header); ui->tableWidgetInput->setHorizontalHeaderItem(column, header);
} }
@ -635,7 +628,7 @@ void DialogMeasurementsCSVColumns::ShowInputPreview()
for(int column=0; column<columns; ++column) for(int column=0; column<columns; ++column)
{ {
const QString text = csv->text(row, column); const QString text = csv->text(row, column);
QTableWidgetItem *item = new QTableWidgetItem(text); auto *item = new QTableWidgetItem(text);
item->setToolTip(text); item->setToolTip(text);
// set the item non-editable (view only), and non-selectable // set the item non-editable (view only), and non-selectable
@ -676,7 +669,7 @@ void DialogMeasurementsCSVColumns::ShowImportPreview()
if (tableColumn >= 0 && tableColumn < columns) if (tableColumn >= 0 && tableColumn < columns)
{ {
const QString text = csv->text(row, tableColumn); const QString text = csv->text(row, tableColumn);
QTableWidgetItem *item = new QTableWidgetItem(text); auto *item = new QTableWidgetItem(text);
item->setToolTip(text); item->setToolTip(text);
// set the item non-editable (view only), and non-selectable // set the item non-editable (view only), and non-selectable
@ -735,7 +728,7 @@ void DialogMeasurementsCSVColumns::RetranslateLabels()
{ {
ui->labelValue->setText(tr("Base value") + "*:"); ui->labelValue->setText(tr("Base value") + "*:");
if (m_dimensions.size() > 0) if (not m_dimensions.empty())
{ {
MeasurementDimension_p dimension = m_dimensions.at(0); MeasurementDimension_p dimension = m_dimensions.at(0);
ui->labelShiftA->setText(tr("Shift (%1)*:").arg(dimension->Name())); ui->labelShiftA->setText(tr("Shift (%1)*:").arg(dimension->Name()));
@ -781,7 +774,7 @@ void DialogMeasurementsCSVColumns::SetDefaultColumns()
SetDefault(ui->comboBoxName, static_cast<int>(MultisizeMeasurementsColumns::Name)); SetDefault(ui->comboBoxName, static_cast<int>(MultisizeMeasurementsColumns::Name));
SetDefault(ui->comboBoxValue, static_cast<int>(MultisizeMeasurementsColumns::BaseValue)); SetDefault(ui->comboBoxValue, static_cast<int>(MultisizeMeasurementsColumns::BaseValue));
if (m_dimensions.size() > 0) if (not m_dimensions.empty())
{ {
SetDefault(ui->comboBoxShiftA, static_cast<int>(MultisizeMeasurementsColumns::ShiftA)); SetDefault(ui->comboBoxShiftA, static_cast<int>(MultisizeMeasurementsColumns::ShiftA));
} }

View file

@ -62,29 +62,30 @@ class DialogMeasurementsCSVColumns;
class DialogMeasurementsCSVColumns : public QDialog class DialogMeasurementsCSVColumns : public QDialog
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
DialogMeasurementsCSVColumns(const QString &filename, MeasurementsType type, QWidget *parent = nullptr); DialogMeasurementsCSVColumns(const QString &filename, MeasurementsType type, QWidget *parent = nullptr);
DialogMeasurementsCSVColumns(const QString &filename, MeasurementsType type, DialogMeasurementsCSVColumns(const QString &filename, MeasurementsType type,
const QList<MeasurementDimension_p> &dimensions, QWidget *parent = nullptr); const QList<MeasurementDimension_p> &dimensions, QWidget *parent = nullptr);
virtual ~DialogMeasurementsCSVColumns(); ~DialogMeasurementsCSVColumns() override;
QVector<int> ColumnsMap() const; auto ColumnsMap() const -> QVector<int>;
void SetWithHeader(bool withHeader); void SetWithHeader(bool withHeader);
void SetSeparator(const QChar &separator); void SetSeparator(const QChar &separator);
void SetCodec(QTextCodec *codec); void SetCodec(QTextCodec *codec);
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
virtual void showEvent(QShowEvent *event) override; void showEvent(QShowEvent *event) override;
private slots: private slots:
void ColumnChanged(); void ColumnChanged();
private: private:
Q_DISABLE_COPY(DialogMeasurementsCSVColumns) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(DialogMeasurementsCSVColumns) // NOLINT
Ui::DialogMeasurementsCSVColumns *ui; Ui::DialogMeasurementsCSVColumns *ui;
bool m_isInitialized{false}; bool m_isInitialized{false};
QString m_fileName; QString m_fileName;
@ -96,17 +97,18 @@ private:
QList<MeasurementDimension_p> m_dimensions{}; QList<MeasurementDimension_p> m_dimensions{};
QVector<QObject *> m_hackedWidgets{}; QVector<QObject *> m_hackedWidgets{};
bool ColumnMandatory(int column) const; auto ColumnMandatory(int column) const -> bool;
QString ColumnHeader(int column) const; auto ColumnHeader(int column) const -> QString;
int ImportColumnCount() const; auto ImportColumnCount() const -> int;
int MinimumColumns() const; auto MinimumColumns() const -> int;
bool ColumnsValid(); auto ColumnsValid() -> bool;
void ClearColumnCollor();
void InitColumnsMap(); void InitColumnsMap();
void InitColumnsControls(); void InitColumnsControls();
void InitImportHeaders(); void InitImportHeaders();
QSharedPointer<QxtCsvModel> CSVModel() const; auto CSVModel() const -> QSharedPointer<QxtCsvModel>;
void ShowInputPreview(); void ShowInputPreview();
void ShowImportPreview(); void ShowImportPreview();
@ -129,7 +131,7 @@ private:
}; };
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
inline QVector<int> DialogMeasurementsCSVColumns::ColumnsMap() const inline auto DialogMeasurementsCSVColumns::ColumnsMap() const -> QVector<int>
{ {
return m_columnsMap; return m_columnsMap;
} }

View file

@ -29,17 +29,13 @@
#include "dialognewmeasurements.h" #include "dialognewmeasurements.h"
#include "ui_dialognewmeasurements.h" #include "ui_dialognewmeasurements.h"
#include "../vpatterndb/variables/vmeasurement.h"
#include "../vtapesettings.h"
#include "../mapplication.h"
#include <QShowEvent> #include <QShowEvent>
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
DialogNewMeasurements::DialogNewMeasurements(QWidget *parent) DialogNewMeasurements::DialogNewMeasurements(QWidget *parent)
:QDialog(parent), :QDialog(parent),
ui(new Ui::DialogNewMeasurements), ui(new Ui::DialogNewMeasurements),
isInitialized(false) m_isInitialized(false)
{ {
ui->setupUi(this); ui->setupUi(this);
@ -54,13 +50,13 @@ DialogNewMeasurements::~DialogNewMeasurements()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
MeasurementsType DialogNewMeasurements::Type() const auto DialogNewMeasurements::Type() const -> MeasurementsType
{ {
return static_cast<MeasurementsType>(ui->comboBoxMType->currentData().toInt()); return static_cast<MeasurementsType>(ui->comboBoxMType->currentData().toInt());
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
Unit DialogNewMeasurements::MUnit() const auto DialogNewMeasurements::MUnit() const -> Unit
{ {
return static_cast<Unit>(ui->comboBoxUnit->currentData().toInt()); return static_cast<Unit>(ui->comboBoxUnit->currentData().toInt());
} }
@ -89,7 +85,7 @@ void DialogNewMeasurements::showEvent(QShowEvent *event)
return; return;
} }
if (isInitialized) if (m_isInitialized)
{ {
return; return;
} }
@ -98,7 +94,7 @@ void DialogNewMeasurements::showEvent(QShowEvent *event)
setMaximumSize(size()); setMaximumSize(size());
setMinimumSize(size()); setMinimumSize(size());
isInitialized = true;//first show windows are held m_isInitialized = true;//first show windows are held
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -40,23 +40,24 @@ namespace Ui
class DialogNewMeasurements : public QDialog class DialogNewMeasurements : public QDialog
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit DialogNewMeasurements(QWidget *parent = nullptr); explicit DialogNewMeasurements(QWidget *parent = nullptr);
~DialogNewMeasurements(); ~DialogNewMeasurements() override;
MeasurementsType Type() const; auto Type() const -> MeasurementsType;
Unit MUnit() const; auto MUnit() const -> Unit;
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
virtual void showEvent(QShowEvent *event) override; void showEvent(QShowEvent *event) override;
private: private:
Q_DISABLE_COPY(DialogNewMeasurements) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(DialogNewMeasurements) // NOLINT
Ui::DialogNewMeasurements *ui; Ui::DialogNewMeasurements *ui;
bool isInitialized; bool m_isInitialized;
void InitMTypes(); void InitMTypes();
void InitUnits(); void InitUnits();

View file

@ -76,6 +76,53 @@ auto FilterByMaximum(const QVector<qreal> &base, qreal restriction) -> QVector<q
} }
return filtered; return filtered;
} }
//---------------------------------------------------------------------------------------------------------------------
void InitMinMax(qreal &min, qreal &max, const MeasurementDimension_p &dimension, const QVector<qreal> &bases,
const VDimensionRestriction &restriction)
{
if (not dimension.isNull())
{
min = bases.indexOf(restriction.GetMin()) != -1 ? restriction.GetMin() : dimension->MinValue();
max = bases.indexOf(restriction.GetMax()) != -1 ? restriction.GetMax() : dimension->MaxValue();
if (max < min)
{
min = dimension->MinValue();
max = dimension->MaxValue();
}
}
}
//---------------------------------------------------------------------------------------------------------------------
void SetCellIcon(QTableWidgetItem *item, const QVector<qreal> &validRows, qreal rowValue, qreal columnValue,
const VDimensionRestriction &restriction, qreal min, qreal max)
{
if (validRows.contains(rowValue))
{
const bool leftRestriction = columnValue >= min;
const bool rightRestriction = columnValue <= max;
if (leftRestriction && rightRestriction)
{
item->setIcon(QIcon(restriction.GetExcludeValues().contains(columnValue)
? QStringLiteral("://icon/24x24/close.png")
: QStringLiteral("://icon/24x24/star.png")));
}
else
{
item->setIcon(QIcon(QStringLiteral("://icon/24x24/close.png")));
}
}
else
{
item->setIcon(QIcon(QStringLiteral("://icon/24x24/close.png")));
Qt::ItemFlags flags = item->flags();
flags &= ~(Qt::ItemIsEnabled);
item->setFlags(flags);
}
}
} // namespace } // namespace
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
@ -299,104 +346,94 @@ void DialogRestrictDimension::MaxRestrictionChanged()
void DialogRestrictDimension::CellContextMenu(QPoint pos) void DialogRestrictDimension::CellContextMenu(QPoint pos)
{ {
QTableWidgetItem *item = ui->tableWidget->itemAt(pos); QTableWidgetItem *item = ui->tableWidget->itemAt(pos);
if (item != nullptr && (item->flags() & Qt::ItemIsEnabled) != 0U) if (item == nullptr || not static_cast<bool>((item->flags() & Qt::ItemIsEnabled)))
{ {
qreal columnValue = 0; return;
QString coordinates; }
MeasurementDimension_p dimension;
if (m_restrictionType == RestrictDimension::First) qreal columnValue = 0;
{ QString coordinates;
if (not m_dimensions.empty()) MeasurementDimension_p dimension;
{
columnValue = m_dimensions.at(0)->ValidBases().at(item->column()); if (m_restrictionType == RestrictDimension::First)
coordinates = QChar('0'); {
} if (m_dimensions.empty())
else
{
return;
}
}
else if (m_restrictionType == RestrictDimension::Second)
{
if (m_dimensions.size() >= 2)
{
dimension = m_dimensions.at(1);
columnValue = dimension->ValidBases().at(item->column());
qreal base1 = m_dimensions.at(0)->ValidBases().at(item->row());
coordinates = VMeasurement::CorrectionHash(base1);
}
else
{
return;
}
}
else if (m_restrictionType == RestrictDimension::Third)
{
if (m_dimensions.size() >= 3)
{
dimension = m_dimensions.at(2);
columnValue = dimension->ValidBases().at(item->column());
qreal base1 = ui->comboBoxDimensionA->currentData().toDouble();
qreal base2 = m_dimensions.at(1)->ValidBases().at(item->row());
coordinates = VMeasurement::CorrectionHash(base1, base2);
}
else
{
return;
}
}
else
{ {
return; return;
} }
VDimensionRestriction restriction = m_restrictions.value(coordinates); columnValue = m_dimensions.at(0)->ValidBases().at(item->column());
bool exclude = not restriction.GetExcludeValues().contains(columnValue); coordinates = QChar('0');
QScopedPointer<QMenu> menu(new QMenu()); }
QAction *actionExclude = menu->addAction(exclude ? tr("Exclude") : tr("Include")); else if (m_restrictionType == RestrictDimension::Second)
{
if (m_restrictionType == RestrictDimension::Second || m_restrictionType == RestrictDimension::Third) if (m_dimensions.size() < 2)
{ {
if (dimension != nullptr) return;
{
qreal min = restriction.GetMin();
if (qFuzzyIsNull(min))
{
min = dimension->MinValue();
}
qreal max = restriction.GetMax();
if (qFuzzyIsNull(max))
{
max = dimension->MaxValue();
}
actionExclude->setEnabled(columnValue >= min && columnValue <= max);
}
else
{
return;
}
} }
QAction *selectedAction = menu->exec(ui->tableWidget->viewport()->mapToGlobal(pos)); dimension = m_dimensions.at(1);
if (selectedAction == actionExclude) columnValue = dimension->ValidBases().at(item->column());
qreal base1 = m_dimensions.at(0)->ValidBases().at(item->row());
coordinates = VMeasurement::CorrectionHash(base1);
}
else if (m_restrictionType == RestrictDimension::Third)
{
if (m_dimensions.size() < 3)
{ {
QSet<qreal> list = restriction.GetExcludeValues(); return;
if (exclude)
{
list.insert(columnValue);
item->setIcon(QIcon(QStringLiteral("://icon/24x24/close.png")));
}
else
{
list.remove(columnValue);
item->setIcon(QIcon(QStringLiteral("://icon/24x24/star.png")));
}
restriction.SetExcludeValues(list);
m_restrictions[coordinates] = restriction;
} }
dimension = m_dimensions.at(2);
columnValue = dimension->ValidBases().at(item->column());
qreal base1 = ui->comboBoxDimensionA->currentData().toDouble();
qreal base2 = m_dimensions.at(1)->ValidBases().at(item->row());
coordinates = VMeasurement::CorrectionHash(base1, base2);
}
VDimensionRestriction restriction = m_restrictions.value(coordinates);
bool exclude = not restriction.GetExcludeValues().contains(columnValue);
QScopedPointer<QMenu> menu(new QMenu());
QAction *actionExclude = menu->addAction(exclude ? tr("Exclude") : tr("Include"));
if (m_restrictionType == RestrictDimension::Second || m_restrictionType == RestrictDimension::Third)
{
if (dimension.isNull())
{
return;
}
qreal min = restriction.GetMin();
if (qFuzzyIsNull(min))
{
min = dimension->MinValue();
}
qreal max = restriction.GetMax();
if (qFuzzyIsNull(max))
{
max = dimension->MaxValue();
}
actionExclude->setEnabled(columnValue >= min && columnValue <= max);
}
QAction *selectedAction = menu->exec(ui->tableWidget->viewport()->mapToGlobal(pos));
if (selectedAction == actionExclude)
{
QSet<qreal> list = restriction.GetExcludeValues();
if (exclude)
{
list.insert(columnValue);
item->setIcon(QIcon(QStringLiteral("://icon/24x24/close.png")));
}
else
{
list.remove(columnValue);
item->setIcon(QIcon(QStringLiteral("://icon/24x24/star.png")));
}
restriction.SetExcludeValues(list);
m_restrictions[coordinates] = restriction;
} }
} }
@ -611,14 +648,9 @@ void DialogRestrictDimension::AddCell(int row, int column, qreal rowValue, qreal
if (m_restrictionType == RestrictDimension::First) if (m_restrictionType == RestrictDimension::First)
{ {
VDimensionRestriction restriction = m_restrictions.value(QChar('0')); VDimensionRestriction restriction = m_restrictions.value(QChar('0'));
if (restriction.GetExcludeValues().contains(columnValue)) item->setIcon(QIcon(restriction.GetExcludeValues().contains(columnValue)
{ ? QStringLiteral("://icon/24x24/close.png")
item->setIcon(QIcon(QStringLiteral("://icon/24x24/close.png"))); : QStringLiteral("://icon/24x24/star.png")));
}
else
{
item->setIcon(QIcon(QStringLiteral("://icon/24x24/star.png")));
}
} }
else else
{ {
@ -656,47 +688,8 @@ void DialogRestrictDimension::AddCell(int row, int column, qreal rowValue, qreal
qreal min = INT32_MIN; qreal min = INT32_MIN;
qreal max = INT32_MAX; qreal max = INT32_MAX;
if (not dimension.isNull()) InitMinMax(min, max, dimension, bases, restriction);
{ SetCellIcon(item, validRows, rowValue, columnValue, restriction, min, max);
min = bases.indexOf(restriction.GetMin()) != -1 ? restriction.GetMin() : dimension->MinValue();
max = bases.indexOf(restriction.GetMax()) != -1 ? restriction.GetMax() : dimension->MaxValue();
if (max < min)
{
min = dimension->MinValue();
max = dimension->MaxValue();
}
}
if (validRows.contains(rowValue))
{
const bool leftRestriction = columnValue >= min;
const bool rightRestriction = columnValue <= max;
if (leftRestriction && rightRestriction)
{
if (restriction.GetExcludeValues().contains(columnValue))
{
item->setIcon(QIcon(QStringLiteral("://icon/24x24/close.png")));
}
else
{
item->setIcon(QIcon(QStringLiteral("://icon/24x24/star.png")));
}
}
else
{
item->setIcon(QIcon(QStringLiteral("://icon/24x24/close.png")));
}
}
else
{
item->setIcon(QIcon(QStringLiteral("://icon/24x24/close.png")));
Qt::ItemFlags flags = item->flags();
flags &= ~(Qt::ItemIsEnabled);
item->setFlags(flags);
}
} }
// set the item non-editable (view only), and non-selectable // set the item non-editable (view only), and non-selectable
@ -784,6 +777,88 @@ void DialogRestrictDimension::FillBases(const QVector<qreal> &bases, const Measu
} }
} }
//---------------------------------------------------------------------------------------------------------------------
auto DialogRestrictDimension::FillDimensionXBases(const QVector<qreal> &bases,
const MeasurementDimension_p &dimension) -> QStringList
{
const bool showUnits = dimension->IsBodyMeasurement() || dimension->Type() == MeasurementDimension::X;
const QString units = showUnits ? UnitsToStr(dimension->Units(), true) : QString();
const DimesionLabels dimensionLabels = dimension->Labels();
QStringList labels;
for(auto base : bases)
{
if (dimensionLabels.contains(base) && not dimensionLabels.value(base).isEmpty())
{
labels.append(dimensionLabels.value(base));
}
else
{
labels.append(QStringLiteral("%1 %2").arg(base).arg(units));
}
}
return labels;
}
//---------------------------------------------------------------------------------------------------------------------
auto DialogRestrictDimension::FillDimensionYBases(const QVector<qreal> &bases,
const MeasurementDimension_p &dimension) const -> QStringList
{
const bool showUnits = dimension->IsBodyMeasurement() || dimension->Type() == MeasurementDimension::X;
const QString units = showUnits ? UnitsToStr(dimension->Units(), true) : QString();
const DimesionLabels dimensionLabels = dimension->Labels();
QStringList labels;
for(auto base : bases)
{
if (dimensionLabels.contains(base) && not dimensionLabels.value(base).isEmpty())
{
labels.append(dimensionLabels.value(base));
}
else
{
if (dimension->IsBodyMeasurement())
{
labels.append(QStringLiteral("%1 %2").arg(m_fullCircumference ? base*2 : base).arg(units));
}
else
{
labels.append(QString::number(base));
}
}
}
return labels;
}
//---------------------------------------------------------------------------------------------------------------------
auto DialogRestrictDimension::FillDimensionWZBases(const QVector<qreal> &bases,
const MeasurementDimension_p &dimension) const -> QStringList
{
const bool showUnits = dimension->IsBodyMeasurement() || dimension->Type() == MeasurementDimension::X;
const QString units = showUnits ? UnitsToStr(dimension->Units(), true) : QString();
const DimesionLabels dimensionLabels = dimension->Labels();
QStringList labels;
for(auto base : bases)
{
if (dimensionLabels.contains(base) && not dimensionLabels.value(base).isEmpty())
{
labels.append(dimensionLabels.value(base));
}
else
{
labels.append(QStringLiteral("%1 %2").arg(m_fullCircumference ? base*2 : base).arg(units));
}
}
return labels;
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
auto DialogRestrictDimension::DimensionLabels(const QVector<qreal> &bases, auto DialogRestrictDimension::DimensionLabels(const QVector<qreal> &bases,
const MeasurementDimension_p &dimension) const -> QStringList const MeasurementDimension_p &dimension) const -> QStringList
@ -796,52 +871,15 @@ auto DialogRestrictDimension::DimensionLabels(const QVector<qreal> &bases,
if (dimension->Type() == MeasurementDimension::X) if (dimension->Type() == MeasurementDimension::X)
{ {
for(auto base : bases) labels = FillDimensionXBases(bases, dimension);
{
if (dimensionLabels.contains(base) && not dimensionLabels.value(base).isEmpty())
{
labels.append(dimensionLabels.value(base));
}
else
{
labels.append(QStringLiteral("%1 %2").arg(base).arg(units));
}
}
} }
else if (dimension->Type() == MeasurementDimension::Y) else if (dimension->Type() == MeasurementDimension::Y)
{ {
for(auto base : bases) labels = FillDimensionYBases(bases, dimension);
{
if (dimensionLabels.contains(base) && not dimensionLabels.value(base).isEmpty())
{
labels.append(dimensionLabels.value(base));
}
else
{
if (dimension->IsBodyMeasurement())
{
labels.append(QStringLiteral("%1 %2").arg(m_fullCircumference ? base*2 : base).arg(units));
}
else
{
labels.append(QString::number(base));
}
}
}
} }
else if (dimension->Type() == MeasurementDimension::W || dimension->Type() == MeasurementDimension::Z) else if (dimension->Type() == MeasurementDimension::W || dimension->Type() == MeasurementDimension::Z)
{ {
for(auto base : bases) labels = FillDimensionWZBases(bases, dimension);
{
if (dimensionLabels.contains(base) && not dimensionLabels.value(base).isEmpty())
{
labels.append(dimensionLabels.value(base));
}
else
{
labels.append(QStringLiteral("%1 %2").arg(m_fullCircumference ? base*2 : base).arg(units));
}
}
} }
return labels; return labels;

View file

@ -50,18 +50,18 @@ enum class RestrictDimension: qint8
class DialogRestrictDimension : public QDialog class DialogRestrictDimension : public QDialog
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
DialogRestrictDimension(const QList<MeasurementDimension_p> &dimensions, DialogRestrictDimension(const QList<MeasurementDimension_p> &dimensions,
const QMap<QString, VDimensionRestriction> &restrictions, RestrictDimension restrictionType, const QMap<QString, VDimensionRestriction> &restrictions, RestrictDimension restrictionType,
bool fullCircumference, QWidget *parent = nullptr); bool fullCircumference, QWidget *parent = nullptr);
virtual ~DialogRestrictDimension(); ~DialogRestrictDimension() override;
auto Restrictions() const -> QMap<QString, VDimensionRestriction>; auto Restrictions() const -> QMap<QString, VDimensionRestriction>;
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
protected slots: protected slots:
void RowSelected(); void RowSelected();
@ -73,7 +73,8 @@ private slots:
void CellContextMenu(QPoint pos); void CellContextMenu(QPoint pos);
private: private:
Q_DISABLE_COPY(DialogRestrictDimension) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(DialogRestrictDimension) // NOLINT
Ui::DialogRestrictDimension *ui; Ui::DialogRestrictDimension *ui;
RestrictDimension m_restrictionType; RestrictDimension m_restrictionType;
@ -92,6 +93,11 @@ private:
void EnableRestrictionControls(bool enable); void EnableRestrictionControls(bool enable);
void FillBases(const QVector<qreal> &bases, const MeasurementDimension_p &dimension, QComboBox *control) const; void FillBases(const QVector<qreal> &bases, const MeasurementDimension_p &dimension, QComboBox *control) const;
static auto FillDimensionXBases(const QVector<qreal> &bases,
const MeasurementDimension_p &dimension) -> QStringList;
auto FillDimensionYBases(const QVector<qreal> &bases, const MeasurementDimension_p &dimension) const -> QStringList;
auto FillDimensionWZBases(const QVector<qreal> &bases,
const MeasurementDimension_p &dimension) const -> QStringList;
auto DimensionLabels(const QVector<qreal> &bases, const MeasurementDimension_p &dimension) const -> QStringList; auto DimensionLabels(const QVector<qreal> &bases, const MeasurementDimension_p &dimension) const -> QStringList;
auto DimensionRestrictedValues(const MeasurementDimension_p &dimension) const -> QVector<qreal>; auto DimensionRestrictedValues(const MeasurementDimension_p &dimension) const -> QVector<qreal>;

View file

@ -32,7 +32,9 @@
#include <QShowEvent> #include <QShowEvent>
#include "../mapplication.h" #include "../mapplication.h"
#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
#include "../vmisc/backport/qoverload.h" #include "../vmisc/backport/qoverload.h"
#endif // QT_VERSION < QT_VERSION_CHECK(5, 7, 0)
namespace namespace
{ {

View file

@ -40,7 +40,6 @@
DialogTapePreferences::DialogTapePreferences(QWidget *parent) DialogTapePreferences::DialogTapePreferences(QWidget *parent)
:QDialog(parent), :QDialog(parent),
ui(new Ui::DialogTapePreferences), ui(new Ui::DialogTapePreferences),
m_isInitialized(false),
m_configurationPage(new TapePreferencesConfigurationPage), m_configurationPage(new TapePreferencesConfigurationPage),
m_pathPage(new TapePreferencesPathPage) m_pathPage(new TapePreferencesPathPage)
{ {

View file

@ -31,6 +31,8 @@
#include <QDialog> #include <QDialog>
#include "../vmisc/defglobal.h"
namespace Ui namespace Ui
{ {
class DialogTapePreferences; class DialogTapePreferences;
@ -42,25 +44,26 @@ class QListWidgetItem;
class DialogTapePreferences : public QDialog class DialogTapePreferences : public QDialog
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit DialogTapePreferences(QWidget *parent = nullptr); explicit DialogTapePreferences(QWidget *parent = nullptr);
virtual ~DialogTapePreferences(); ~DialogTapePreferences() override;
signals: signals:
void UpdateProperties(); void UpdateProperties();
protected: protected:
virtual void showEvent(QShowEvent *event) override; void showEvent(QShowEvent *event) override;
virtual void resizeEvent(QResizeEvent *event) override; void resizeEvent(QResizeEvent *event) override;
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
private slots: private slots:
void Apply(); void Apply();
void Ok(); void Ok();
void PageChanged(QListWidgetItem *current, QListWidgetItem *previous); void PageChanged(QListWidgetItem *current, QListWidgetItem *previous);
private: private:
Q_DISABLE_COPY(DialogTapePreferences) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(DialogTapePreferences) // NOLINT
Ui::DialogTapePreferences *ui; Ui::DialogTapePreferences *ui;
bool m_isInitialized; bool m_isInitialized{false};
TapePreferencesConfigurationPage *m_configurationPage; TapePreferencesConfigurationPage *m_configurationPage;
TapePreferencesPathPage *m_pathPage; TapePreferencesPathPage *m_pathPage;
}; };

View file

@ -26,10 +26,7 @@
** **
*************************************************************************/ *************************************************************************/
#include "tmainwindow.h"
#include "mapplication.h" #include "mapplication.h"
#include "../fervor/fvupdater.h"
#include "../vmisc/vsysexits.h"
#include <QMessageBox> // For QT_REQUIRE_VERSION #include <QMessageBox> // For QT_REQUIRE_VERSION
#include <QTimer> #include <QTimer>
@ -43,7 +40,7 @@
# include "../vmisc/appimage.h" # include "../vmisc/appimage.h"
#endif // defined(APPIMAGE) && defined(Q_OS_LINUX) #endif // defined(APPIMAGE) && defined(Q_OS_LINUX)
int main(int argc, char *argv[]) auto main(int argc, char *argv[]) -> int
{ {
#if defined(APPIMAGE) && defined(Q_OS_LINUX) #if defined(APPIMAGE) && defined(Q_OS_LINUX)
/* Fix path to ICU_DATA when run AppImage.*/ /* Fix path to ICU_DATA when run AppImage.*/
@ -51,14 +48,14 @@ int main(int argc, char *argv[])
auto FreeMemory = qScopeGuard([exe_dir] {free(exe_dir);}); auto FreeMemory = qScopeGuard([exe_dir] {free(exe_dir);});
#endif // defined(APPIMAGE) && defined(Q_OS_LINUX) #endif // defined(APPIMAGE) && defined(Q_OS_LINUX)
Q_INIT_RESOURCE(tapeicon); Q_INIT_RESOURCE(tapeicon); // NOLINT
Q_INIT_RESOURCE(theme); Q_INIT_RESOURCE(theme); // NOLINT
Q_INIT_RESOURCE(icon); Q_INIT_RESOURCE(icon); // NOLINT
Q_INIT_RESOURCE(schema); Q_INIT_RESOURCE(schema); // NOLINT
Q_INIT_RESOURCE(flags); Q_INIT_RESOURCE(flags); // NOLINT
Q_INIT_RESOURCE(style); Q_INIT_RESOURCE(style); // NOLINT
QT_REQUIRE_VERSION(argc, argv, "5.4.0")// clazy:exclude=qstring-arg,qstring-allocations QT_REQUIRE_VERSION(argc, argv, "5.4.0")// clazy:exclude=qstring-arg,qstring-allocations NOLINT
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN)
VAbstractApplication::WinAttachConsole(); VAbstractApplication::WinAttachConsole();
@ -80,5 +77,5 @@ int main(int argc, char *argv[])
} }
#endif // defined(APPIMAGE) && defined(Q_OS_LINUX) #endif // defined(APPIMAGE) && defined(Q_OS_LINUX)
return app.exec(); return MApplication::exec();
} }

View file

@ -35,6 +35,7 @@
#include "../ifc/exception/vexceptionemptyparameter.h" #include "../ifc/exception/vexceptionemptyparameter.h"
#include "../ifc/exception/vexceptionwrongid.h" #include "../ifc/exception/vexceptionwrongid.h"
#include "../vmisc/vsysexits.h" #include "../vmisc/vsysexits.h"
#include "../vmisc/projectversion.h"
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
#include "../vmisc/diagnostic.h" #include "../vmisc/diagnostic.h"
@ -357,7 +358,7 @@ auto MApplication::notify(QObject *receiver, QEvent *event) -> bool
catch (const VExceptionToolWasDeleted &e) catch (const VExceptionToolWasDeleted &e)
{ {
qCCritical(mApp, "%s\n\n%s\n\n%s", qCCritical(mApp, "%s\n\n%s\n\n%s",
qUtf8Printable("Unhadled deleting tool. Continue use object after deleting!"), qUtf8Printable(QStringLiteral("Unhadled deleting tool. Continue use object after deleting!")),
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation())); qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
exit(V_EX_DATAERR); exit(V_EX_DATAERR);
} }
@ -473,7 +474,7 @@ void MApplication::ActivateDarkMode()
{ {
f.open(QFile::ReadOnly | QFile::Text); f.open(QFile::ReadOnly | QFile::Text);
QTextStream ts(&f); QTextStream ts(&f);
qApp->setStyleSheet(ts.readAll()); qApp->setStyleSheet(ts.readAll()); // NOLINT(cppcoreguidelines-pro-type-static-cast-downcast)
} }
} }
@ -501,7 +502,7 @@ auto MApplication::event(QEvent *e) -> bool
// Mac specific). // Mac specific).
case QEvent::FileOpen: case QEvent::FileOpen:
{ {
auto *fileOpenEvent = static_cast<QFileOpenEvent *>(e); auto *fileOpenEvent = static_cast<QFileOpenEvent *>(e); // NOLINT(cppcoreguidelines-pro-type-static-cast-downcast)
const QString macFileOpen = fileOpenEvent->file(); const QString macFileOpen = fileOpenEvent->file();
if(not macFileOpen.isEmpty()) if(not macFileOpen.isEmpty())
{ {

File diff suppressed because it is too large Load diff

View file

@ -48,32 +48,31 @@ class VMeasurement;
class TMainWindow : public VAbstractMainWindow class TMainWindow : public VAbstractMainWindow
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit TMainWindow(QWidget *parent = nullptr); explicit TMainWindow(QWidget *parent = nullptr);
virtual ~TMainWindow() override; ~TMainWindow() override;
QString CurrentFile() const; auto CurrentFile() const -> QString;
void RetranslateTable(); void RetranslateTable();
bool SetDimensionABase(int base); auto SetDimensionABase(int base) -> bool;
bool SetDimensionBBase(int base); auto SetDimensionBBase(int base) -> bool;
bool SetDimensionCBase(int base); auto SetDimensionCBase(int base) -> bool;
void SetPUnit(Unit unit); void SetPUnit(Unit unit);
bool LoadFile(const QString &path); auto LoadFile(const QString &path) -> bool;
void UpdateWindowTitle(); void UpdateWindowTitle();
protected: protected:
virtual void closeEvent(QCloseEvent *event) override; void closeEvent(QCloseEvent *event) override;
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
virtual bool eventFilter(QObject *object, QEvent *event) override; auto eventFilter(QObject *object, QEvent *event) -> bool override;
virtual void ExportToCSVData(const QString &fileName, bool withHeader, int mib, void ExportToCSVData(const QString &fileName, bool withHeader, int mib, const QChar &separator) final;
const QChar &separator) final; auto RecentFileList() const -> QStringList override;
virtual QStringList RecentFileList() const override;
private slots: private slots:
void FileNew(); void FileNew();
@ -84,8 +83,8 @@ private slots:
void Preferences(); void Preferences();
void ToolBarStyles(); void ToolBarStyles();
bool FileSave(); bool FileSave(); // NOLINT(modernize-use-trailing-return-type)
bool FileSaveAs(); bool FileSaveAs(); // NOLINT(modernize-use-trailing-return-type)
void AboutToShowWindowMenu(); void AboutToShowWindowMenu();
void ShowWindow() const; void ShowWindow() const;
void ImportDataFromCSV(); void ImportDataFromCSV();
@ -150,34 +149,48 @@ private slots:
void SetDefaultGUILanguage(); void SetDefaultGUILanguage();
private: private:
Q_DISABLE_COPY(TMainWindow) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(TMainWindow) // NOLINT
Ui::TMainWindow *ui; Ui::TMainWindow *ui;
VMeasurements *m{nullptr}; VMeasurements *m_m{nullptr};
VContainer *data{nullptr}; VContainer *m_data{nullptr};
Unit mUnit{Unit::Cm}; Unit m_mUnit{Unit::Cm};
Unit pUnit{Unit::Cm}; Unit m_pUnit{Unit::Cm};
MeasurementsType mType{MeasurementsType::Individual}; MeasurementsType m_mType{MeasurementsType::Individual};
qreal currentDimensionA{0}; qreal m_currentDimensionA{0};
qreal currentDimensionB{0}; qreal m_currentDimensionB{0};
qreal currentDimensionC{0}; qreal m_currentDimensionC{0};
QString curFile{}; QString m_curFile{};
QComboBox *gradationDimensionA{nullptr}; QComboBox *m_gradationDimensionA{nullptr};
QComboBox *gradationDimensionB{nullptr}; QComboBox *m_gradationDimensionB{nullptr};
QComboBox *gradationDimensionC{nullptr}; QComboBox *m_gradationDimensionC{nullptr};
QComboBox *comboBoxUnits{nullptr}; QComboBox *m_comboBoxUnits{nullptr};
int formulaBaseHeight; int m_formulaBaseHeight;
QSharedPointer<VLockGuard<char>> lock{nullptr}; QSharedPointer<VLockGuard<char>> m_lock{nullptr};
QSharedPointer<VTableSearch> m_search{}; QSharedPointer<VTableSearch> m_search{};
QLabel *labelGradationDimensionA{nullptr}; QLabel *m_labelGradationDimensionA{nullptr};
QLabel *labelGradationDimensionB{nullptr}; QLabel *m_labelGradationDimensionB{nullptr};
QLabel *labelGradationDimensionC{nullptr}; QLabel *m_labelGradationDimensionC{nullptr};
QLabel *labelPatternUnit{nullptr}; QLabel *m_labelPatternUnit{nullptr};
bool isInitialized{false}; bool m_isInitialized{false};
bool mIsReadOnly{false}; bool m_mIsReadOnly{false};
QTimer *gradation; QTimer *m_gradation;
QMenu *m_searchHistory; QMenu *m_searchHistory;
QVector<QObject *> hackedWidgets{}; QVector<QObject *> m_hackedWidgets{};
struct MultisizeMeasurement
{
MultisizeMeasurement() = default;
QString name{}; // NOLINT(misc-non-private-member-variables-in-classes)
qreal base{0}; // NOLINT(misc-non-private-member-variables-in-classes)
qreal shiftA{0}; // NOLINT(misc-non-private-member-variables-in-classes)
qreal shiftB{0}; // NOLINT(misc-non-private-member-variables-in-classes)
qreal shiftC{0}; // NOLINT(misc-non-private-member-variables-in-classes)
QString fullName{}; // NOLINT(misc-non-private-member-variables-in-classes)
QString description{}; // NOLINT(misc-non-private-member-variables-in-classes)
};
void SetupMenu(); void SetupMenu();
void InitWindow(); void InitWindow();
@ -191,7 +204,7 @@ private:
void InitPatternUnits(); void InitPatternUnits();
void InitComboBoxUnits(); void InitComboBoxUnits();
void InitMeasurementUnits(); void InitMeasurementUnits();
void InitGender(QComboBox *gender); static void InitGender(QComboBox *gender);
void InitMeasurementDimension(); void InitMeasurementDimension();
void InitSearch(); void InitSearch();
@ -203,24 +216,25 @@ private:
void ShowNewMData(bool fresh); void ShowNewMData(bool fresh);
void ShowUnits(); void ShowUnits();
void ShowHeaderUnits(QTableWidget *table, int column, const QString &unit); static void ShowHeaderUnits(QTableWidget *table, int column, const QString &unit);
void MeasurementsWereSaved(bool saved); void MeasurementsWereSaved(bool saved);
void SetCurrentFile(const QString &fileName); void SetCurrentFile(const QString &fileName);
bool SaveMeasurements(const QString &fileName, QString &error); auto SaveMeasurements(const QString &fileName, QString &error) -> bool;
bool MaybeSave(); auto MaybeSave() -> bool;
QTableWidgetItem *AddCell(const QString &text, int row, int column, int aligment, bool ok = true); auto AddCell(const QString &text, int row, int column, int aligment, bool ok = true) -> QTableWidgetItem *;
QTableWidgetItem* AddSeparatorCell(const QString &text, int row, int column, int aligment, bool ok = true); auto AddSeparatorCell(const QString &text, int row, int column, int aligment, bool ok = true) -> QTableWidgetItem*;
void RefreshData(bool freshCall = false); void RefreshData(bool freshCall = false);
void RefreshTable(bool freshCall = false); void RefreshTable(bool freshCall = false);
void RefreshMeasurementData(const QSharedPointer<VMeasurement> &meash, qint32 currentRow);
QString GetCustomName() const; auto GetCustomName() const -> QString;
QString ClearCustomName(const QString &name) const; static auto ClearCustomName(const QString &name) -> QString;
bool EvalFormula(const QString &formula, bool fromUser, VContainer *data, QLabel *label, bool specialUnits); auto EvalFormula(const QString &formula, bool fromUser, VContainer *data, QLabel *label, bool specialUnits) -> bool;
void ShowMDiagram(const QString &name); void ShowMDiagram(const QString &name);
void Open(const QString &pathTo, const QString &filter); void Open(const QString &pathTo, const QString &filter);
@ -232,11 +246,11 @@ private:
void ReadSettings(); void ReadSettings();
void WriteSettings(); void WriteSettings();
QStringList FilterMeasurements(const QStringList &mNew, const QStringList &mFilter); static auto FilterMeasurements(const QStringList &mNew, const QStringList &mFilter) -> QStringList;
void UpdatePatternUnit(); void UpdatePatternUnit();
bool LoadFromExistingFile(const QString &path); auto LoadFromExistingFile(const QString &path) -> bool;
void CreateWindowMenu(QMenu *menu); void CreateWindowMenu(QMenu *menu);
@ -245,12 +259,14 @@ private:
void HackDimensionBaseValue(); void HackDimensionBaseValue();
void HackDimensionShifts(); void HackDimensionShifts();
QString CheckMName(const QString &name, const QSet<QString> &importedNames) const; auto CheckMName(const QString &name, const QSet<QString> &importedNames) const -> QString;
void ShowError(const QString &text); void ShowError(const QString &text);
void RefreshDataAfterImport(); void RefreshDataAfterImport();
void ImportIndividualMeasurements(const QxtCsvModel &csv, const QVector<int> &map); void ImportIndividualMeasurements(const QxtCsvModel &csv, const QVector<int> &map);
void ImportMultisizeMeasurements(const QxtCsvModel &csv, const QVector<int> &map); void ImportMultisizeMeasurements(const QxtCsvModel &csv, const QVector<int> &map);
auto ImportMultisizeMeasurement(const QxtCsvModel &csv, int i, const QVector<int> &map,
int dimensionsCount, QSet<QString> &importedNames) -> MultisizeMeasurement;
void SetCurrentPatternUnit(); void SetCurrentPatternUnit();
@ -258,9 +274,9 @@ private:
void SetDimensionBases(); void SetDimensionBases();
void SetCurrentDimensionValues(); void SetCurrentDimensionValues();
QVector<double> DimensionRestrictedValues(int index, const MeasurementDimension_p &dimension); auto DimensionRestrictedValues(int index, const MeasurementDimension_p &dimension) -> QVector<double>;
QMap<int, QSharedPointer<VMeasurement> > OrderedMeasurments() const; auto OrderedMeasurments() const -> QMap<int, QSharedPointer<VMeasurement> >;
}; };
#endif // TMAINWINDOW_H #endif // TMAINWINDOW_H

View file

@ -29,11 +29,9 @@
#ifndef VERSION_H #ifndef VERSION_H
#define VERSION_H #define VERSION_H
#include "../../libs/vmisc/projectversion.h" #define VER_INTERNALNAME_STR "Tape" // NOLINT(cppcoreguidelines-macro-usage)
#define VER_ORIGINALFILENAME_STR "tape.exe" // NOLINT(cppcoreguidelines-macro-usage)
#define VER_INTERNALNAME_STR "Tape" #define VER_PRODUCTNAME_STR "Tape" // NOLINT(cppcoreguidelines-macro-usage)
#define VER_ORIGINALFILENAME_STR "tape.exe" #define VER_FILEDESCRIPTION_STR "Valentina's measurements editor." // NOLINT(cppcoreguidelines-macro-usage)
#define VER_PRODUCTNAME_STR "Tape"
#define VER_FILEDESCRIPTION_STR "Valentina's measurements editor."
#endif // VERSION_H #endif // VERSION_H

View file

@ -52,17 +52,17 @@ void VLitePattern::DecrementReferens(quint32 id) const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString VLitePattern::GenerateLabel(const LabelType &type, const QString &reservedName) const auto VLitePattern::GenerateLabel(const LabelType &type, const QString &reservedName) const -> QString
{ {
Q_UNUSED(type) Q_UNUSED(type)
Q_UNUSED(reservedName) Q_UNUSED(reservedName)
return QString(); return {};
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString VLitePattern::GenerateSuffix() const auto VLitePattern::GenerateSuffix() const -> QString
{ {
return QString(); return {};
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -33,25 +33,26 @@
class VLitePattern : public VAbstractPattern class VLitePattern : public VAbstractPattern
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VLitePattern(QObject *parent = nullptr); explicit VLitePattern(QObject *parent = nullptr);
~VLitePattern() override = default;
virtual void CreateEmptyFile() override; void CreateEmptyFile() override;
virtual void IncrementReferens(quint32 id) const override; void IncrementReferens(quint32 id) const override;
virtual void DecrementReferens(quint32 id) const override; void DecrementReferens(quint32 id) const override;
virtual QString GenerateLabel(const LabelType &type, const QString &reservedName = QString())const override; auto GenerateLabel(const LabelType &type, const QString &reservedName = QString())const -> QString override;
virtual QString GenerateSuffix() const override; auto GenerateSuffix() const -> QString override;
virtual void UpdateToolData(const quint32 &id, VContainer *data) override; void UpdateToolData(const quint32 &id, VContainer *data) override;
public slots: public slots:
virtual void LiteParseTree(const Document &parse) override; void LiteParseTree(const Document &parse) override;
private: private:
Q_DISABLE_COPY(VLitePattern) Q_DISABLE_COPY_MOVE(VLitePattern) // NOLINT
}; };
#endif // VLITEPATTERN_H #endif // VLITEPATTERN_H

View file

@ -36,15 +36,15 @@
namespace namespace
{ {
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDataBaseGeometry, (QLatin1String("database/geometry"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingDataBaseGeometry, (QLatin1String("database/geometry"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingSearchHistoryTape, (QLatin1String("searchHistory/tape"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingSearchHistoryTape, (QLatin1String("searchHistory/tape"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingSearchOptionsTapeUseUnicodeProperties, Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingSearchOptionsTapeUseUnicodeProperties, // NOLINT
(QLatin1String("searchOptions/tapeUseUnicodeProperties"))) (QLatin1String("searchOptions/tapeUseUnicodeProperties")))
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingSearchOptionsTapeWholeWord, Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingSearchOptionsTapeWholeWord, // NOLINT
(QLatin1String("searchOptions/tapeWholeWord"))) (QLatin1String("searchOptions/tapeWholeWord")))
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingSearchOptionsTapeRegexp, (QLatin1String("searchOptions/tapeRegexp"))) Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingSearchOptionsTapeRegexp, (QLatin1String("searchOptions/tapeRegexp"))) // NOLINT
Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingSearchOptionsTapeMatchCase, Q_GLOBAL_STATIC_WITH_ARGS(const QString, settingSearchOptionsTapeMatchCase, // NOLINT
(QLatin1String("searchOptions/tapeMatchCase"))) (QLatin1String("searchOptions/tapeMatchCase")))
} // namespace } // namespace
@ -56,7 +56,7 @@ VTapeSettings::VTapeSettings(Format format, Scope scope, const QString &organiza
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QByteArray VTapeSettings::GetDataBaseGeometry() const auto VTapeSettings::GetDataBaseGeometry() const -> QByteArray
{ {
return value(*settingDataBaseGeometry).toByteArray(); return value(*settingDataBaseGeometry).toByteArray();
} }

View file

@ -41,12 +41,13 @@
class VTapeSettings : public VCommonSettings class VTapeSettings : public VCommonSettings
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
VTapeSettings(Format format, Scope scope, const QString &organization, const QString &application = QString(), VTapeSettings(Format format, Scope scope, const QString &organization, const QString &application = QString(),
QObject *parent = nullptr); QObject *parent = nullptr);
~VTapeSettings() override = default;
QByteArray GetDataBaseGeometry() const; auto GetDataBaseGeometry() const -> QByteArray;
void SetDataBaseGeometry(const QByteArray &value); void SetDataBaseGeometry(const QByteArray &value);
auto GetTapeSearchHistory() const -> QStringList; auto GetTapeSearchHistory() const -> QStringList;
@ -65,7 +66,7 @@ public:
void SetTapeSearchOptionMatchCase(bool value); void SetTapeSearchOptionMatchCase(bool value);
private: private:
Q_DISABLE_COPY(VTapeSettings) Q_DISABLE_COPY_MOVE(VTapeSettings) // NOLINT
}; };
#endif // VTAPESETTINGS_H #endif // VTAPESETTINGS_H

View file

@ -37,6 +37,7 @@
#include "../qmuparser/qmuparsererror.h" #include "../qmuparser/qmuparsererror.h"
#include "../mainwindow.h" #include "../mainwindow.h"
#include "../vmisc/qt_dispatch/qt_dispatch.h" #include "../vmisc/qt_dispatch/qt_dispatch.h"
#include "../vmisc/vsysexits.h"
#include "vvalentinasettings.h" #include "vvalentinasettings.h"
#include <QtDebug> #include <QtDebug>
@ -66,7 +67,7 @@ namespace
{ {
auto AppFilePath(const QString &appName) -> QString auto AppFilePath(const QString &appName) -> QString
{ {
QString appNameExe = appName; QString appNameExe = appName; // NOLINT(performance-unnecessary-copy-initialization)
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
appNameExe += ".exe"; appNameExe += ".exe";
#endif #endif
@ -417,7 +418,7 @@ auto VApplication::notify(QObject *receiver, QEvent *event) -> bool
catch (const VExceptionToolWasDeleted &e) catch (const VExceptionToolWasDeleted &e)
{ {
qCCritical(vApp, "%s\n\n%s\n\n%s", qCCritical(vApp, "%s\n\n%s\n\n%s",
qUtf8Printable("Unhadled deleting tool. Continue use object after deleting"), qUtf8Printable(QStringLiteral("Unhadled deleting tool. Continue use object after deleting")),
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation())); qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
exit(V_EX_DATAERR); exit(V_EX_DATAERR);
} }
@ -469,7 +470,7 @@ void VApplication::ActivateDarkMode()
{ {
f.open(QFile::ReadOnly | QFile::Text); f.open(QFile::ReadOnly | QFile::Text);
QTextStream ts(&f); QTextStream ts(&f);
qApp->setStyleSheet(ts.readAll()); qApp->setStyleSheet(ts.readAll()); // NOLINT(cppcoreguidelines-pro-type-static-cast-downcast)
} }
} }
} }
@ -550,45 +551,45 @@ void VApplication::ClearOldLogs()
logsDir.setNameFilters(QStringList(QStringLiteral("*.log"))); logsDir.setNameFilters(QStringList(QStringLiteral("*.log")));
QDir::setCurrent(LogDirPath()); QDir::setCurrent(LogDirPath());
// Restore working directory
auto restore = qScopeGuard([workingDirectory] { QDir::setCurrent(workingDirectory); });
const QStringList allFiles = logsDir.entryList(QDir::NoDotAndDotDot | QDir::Files); const QStringList allFiles = logsDir.entryList(QDir::NoDotAndDotDot | QDir::Files);
if (not allFiles.isEmpty()) if (allFiles.isEmpty())
{ {
qCDebug(vApp, "Clearing old logs"); qCDebug(vApp, "There are no old logs.");
for (const auto &fn : allFiles) return;
{ }
QFileInfo info(fn);
qCDebug(vApp, "Clearing old logs");
for (const auto &fn : allFiles)
{
QFileInfo info(fn);
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) #if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
const QDateTime created = info.birthTime(); const QDateTime created = info.birthTime();
#else #else
const QDateTime created = info.created(); const QDateTime created = info.created();
#endif #endif
if (created.daysTo(QDateTime::currentDateTime()) >= DAYS_TO_KEEP_LOGS) if (created.daysTo(QDateTime::currentDateTime()) >= DAYS_TO_KEEP_LOGS)
{
VLockGuard<QFile> tmp(info.absoluteFilePath(), [&fn](){return new QFile(fn);});
if (tmp.GetProtected() != nullptr)
{ {
VLockGuard<QFile> tmp(info.absoluteFilePath(), [&fn](){return new QFile(fn);}); if (tmp.GetProtected()->remove())
if (tmp.GetProtected() != nullptr)
{ {
if (tmp.GetProtected()->remove()) qCDebug(vApp, "Deleted %s", qUtf8Printable(info.absoluteFilePath()));
{
qCDebug(vApp, "Deleted %s", qUtf8Printable(info.absoluteFilePath()));
}
else
{
qCDebug(vApp, "Could not delete %s", qUtf8Printable(info.absoluteFilePath()));
}
} }
else else
{ {
qCDebug(vApp, "Failed to lock %s", qUtf8Printable(info.absoluteFilePath())); qCDebug(vApp, "Could not delete %s", qUtf8Printable(info.absoluteFilePath()));
} }
} }
else
{
qCDebug(vApp, "Failed to lock %s", qUtf8Printable(info.absoluteFilePath()));
}
} }
} }
else
{
qCDebug(vApp, "There are no old logs.");
}
QDir::setCurrent(workingDirectory); // Restore working directory
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

@ -43,7 +43,6 @@ class VApplication : public VAbstractValApplication
{ {
Q_OBJECT // NOLINT Q_OBJECT // NOLINT
public: public:
VApplication(int &argc, char ** argv); VApplication(int &argc, char ** argv);
~VApplication() override; ~VApplication() override;

View file

@ -30,36 +30,35 @@
#include "../dialogs/dialoglayoutsettings.h" #include "../dialogs/dialoglayoutsettings.h"
#include "../dialogs/dialogsavelayout.h" #include "../dialogs/dialogsavelayout.h"
#include "../ifc/xml/vdomdocument.h" #include "../ifc/xml/vdomdocument.h"
#include "../vformat/vmeasurements.h"
#include "../vmisc/commandoptions.h" #include "../vmisc/commandoptions.h"
#include "../vmisc/vsysexits.h"
#include "vvalentinasettings.h" #include "vvalentinasettings.h"
#include "../vmisc/dialogs/dialogexporttocsv.h" #include "../vmisc/dialogs/dialogexporttocsv.h"
#include "../vlayout/vlayoutgenerator.h" #include "../vlayout/vlayoutgenerator.h"
#include "../vpatterndb/variables/vmeasurement.h"
#include <QDebug> #include <QDebug>
#include <QTextCodec> #include <QTextCodec>
VCommandLinePtr VCommandLine::instance = nullptr; VCommandLinePtr VCommandLine::instance = nullptr; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
#define translate(context, source) QCoreApplication::translate((context), (source)) #define translate(context, source) QCoreApplication::translate((context), (source)) // NOLINT(cppcoreguidelines-macro-usage)
namespace namespace
{ {
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
qreal Lo2Px(const QString &src, const DialogLayoutSettings &converter, bool *ok) auto Lo2Px(const QString &src, const DialogLayoutSettings &converter, bool *ok) -> qreal
{ {
return converter.LayoutToPixels(src.toDouble(ok)); return converter.LayoutToPixels(src.toDouble(ok));
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
qreal Pg2Px(const QString& src, const DialogLayoutSettings& converter, bool *ok) auto Pg2Px(const QString& src, const DialogLayoutSettings& converter, bool *ok) -> qreal
{ {
return converter.PageToPixels(src.toDouble(ok)); return converter.PageToPixels(src.toDouble(ok));
} }
} // anonymous namespace } // anonymous namespace
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VCommandLine::VCommandLine() : parser(), isGuiEnabled(false) VCommandLine::VCommandLine()
{ {
parser.setApplicationDescription(translate("VCommandLine", "Pattern making program.")); parser.setApplicationDescription(translate("VCommandLine", "Pattern making program."));
parser.addHelpOption(); parser.addHelpOption();
@ -70,7 +69,7 @@ VCommandLine::VCommandLine() : parser(), isGuiEnabled(false)
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VAbstractLayoutDialog::PaperSizeTemplate VCommandLine::FormatSize(const QString &key) const auto VCommandLine::FormatSize(const QString &key) const -> VAbstractLayoutDialog::PaperSizeTemplate
{ {
int ppsize = 0; int ppsize = 0;
if (IsOptionSet(key)) if (IsOptionSet(key))
@ -81,83 +80,16 @@ VAbstractLayoutDialog::PaperSizeTemplate VCommandLine::FormatSize(const QString
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VLayoutGeneratorPtr VCommandLine::DefaultGenerator() const auto VCommandLine::DefaultGenerator() const -> VLayoutGeneratorPtr
{ {
//this functions covers all options found into layout setup dialog, nothing to add here, unless dialog extended //this functions covers all options found into layout setup dialog, nothing to add here, unless dialog extended
VLayoutGeneratorPtr res(new VLayoutGenerator()); VLayoutGeneratorPtr res(new VLayoutGenerator());
DialogLayoutSettings diag(res.get(), nullptr, true); DialogLayoutSettings diag(res.get(), nullptr, true);
{ TestPageformat();
//just anonymous namespace ...don' like to have a,b,c,d everywhere defined TestGapWidth();
bool x = IsOptionSet(LONG_OPTION_PAGETEMPLATE); TestMargins();
bool a = IsOptionSet(LONG_OPTION_PAGEH);
bool b = IsOptionSet(LONG_OPTION_PAGEW);
bool c = IsOptionSet(LONG_OPTION_PAGEUNITS);
if ((a || b) && x)
{
qCritical() << translate("VCommandLine", "Cannot use pageformat and page explicit size together.")
<< "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
if ((a || b || c) && !(a && b && c))
{
qCritical() << translate("VCommandLine", "Page height, width, units must be used all 3 at once.") << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
}
{
//just anonymous namespace ...don' like to have a,b,c,d everywhere defined
bool a = IsOptionSet(LONG_OPTION_GAPWIDTH);
bool b = IsOptionSet(LONG_OPTION_SHIFTUNITS);
if ((a || b) && !(a && b))
{
qCritical() << translate("VCommandLine", "Gap width must be used together with shift units.") << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
}
auto CheckKey = [this](const QString &key, const QString &message)
{
bool a = IsOptionSet(key);
bool b = IsOptionSet(LONG_OPTION_PAGEUNITS);
if (a && !(a && b))
{
qCritical() << message << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
};
if (not IsOptionSet(LONG_OPTION_IGNORE_MARGINS))
{
CheckKey(LONG_OPTION_LEFT_MARGIN,
translate("VCommandLine", "Left margin must be used together with page units."));
CheckKey(LONG_OPTION_RIGHT_MARGIN,
translate("VCommandLine", "Right margin must be used together with page units."));
CheckKey(LONG_OPTION_TOP_MARGIN,
translate("VCommandLine", "Top margin must be used together with page units."));
CheckKey(LONG_OPTION_BOTTOM_MARGIN,
translate("VCommandLine", "Bottom margin must be used together with page units."));
}
if (static_cast<LayoutExportFormats>(OptExportType()) == LayoutExportFormats::PDFTiled)
{
CheckKey(LONG_OPTION_TILED_PDF_LEFT_MARGIN,
translate("VCommandLine", "Tiled left margin must be used together with page units."));
CheckKey(LONG_OPTION_TILED_PDF_RIGHT_MARGIN,
translate("VCommandLine", "Tiled right margin must be used together with page units."));
CheckKey(LONG_OPTION_TILED_PDF_TOP_MARGIN,
translate("VCommandLine", "Tiled top margin must be used together with page units."));
CheckKey(LONG_OPTION_TILED_PDF_BOTTOM_MARGIN,
translate("VCommandLine", "Tiled bottom margin must be used together with page units."));
}
// if present units MUST be set before any other to keep conversions correct // if present units MUST be set before any other to keep conversions correct
if (!diag.SelectTemplate(OptPaperSize())) if (!diag.SelectTemplate(OptPaperSize()))
@ -234,57 +166,7 @@ VLayoutGeneratorPtr VCommandLine::DefaultGenerator() const
diag.SetIgnoreAllFields(true); diag.SetIgnoreAllFields(true);
} }
QMarginsF margins = diag.GetFields(); diag.SetFields(ParseMargins(diag));
if (IsOptionSet(LONG_OPTION_LEFT_MARGIN))
{
bool ok = false;
qreal margin = Pg2Px(OptionValue(LONG_OPTION_LEFT_MARGIN), diag, &ok);
if (not ok)
{
qCritical() << translate("VCommandLine", "Invalid layout page left margin.") << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
margins.setLeft(margin);
}
if (IsOptionSet(LONG_OPTION_RIGHT_MARGIN))
{
bool ok = false;
qreal margin = Pg2Px(OptionValue(LONG_OPTION_RIGHT_MARGIN), diag, &ok);
if (not ok)
{
qCritical() << translate("VCommandLine", "Invalid layout page right margin.") << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
margins.setRight(margin);
}
if (IsOptionSet(LONG_OPTION_TOP_MARGIN))
{
bool ok = false;
qreal margin = Pg2Px(OptionValue(LONG_OPTION_TOP_MARGIN), diag, &ok);
if (not ok)
{
qCritical() << translate("VCommandLine", "Invalid layout page top margin.") << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
margins.setTop(margin);
}
if (IsOptionSet(LONG_OPTION_BOTTOM_MARGIN))
{
bool ok = false;
qreal margin = Pg2Px(OptionValue(LONG_OPTION_BOTTOM_MARGIN), diag, &ok);
if (not ok)
{
qCritical() << translate("VCommandLine", "Invalid layout page bottom margin.") << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
margins.setBottom(margin);
}
diag.SetFields(margins);
diag.SetFollowGrainline(IsOptionSet(LONG_OPTION_FOLLOW_GRAINLINE)); diag.SetFollowGrainline(IsOptionSet(LONG_OPTION_FOLLOW_GRAINLINE));
diag.SetManualPriority(IsOptionSet(LONG_OPTION_MANUAL_PRIORITY)); diag.SetManualPriority(IsOptionSet(LONG_OPTION_MANUAL_PRIORITY));
diag.SetNestQuantity(IsOptionSet(LONG_OPTION_NEST_QUANTITY)); diag.SetNestQuantity(IsOptionSet(LONG_OPTION_NEST_QUANTITY));
@ -296,8 +178,8 @@ VLayoutGeneratorPtr VCommandLine::DefaultGenerator() const
return res; return res;
} }
//------------------------------------------------------------------------------------------------------ //---------------------------------------------------------------------------------------------------------------------
VCommandLinePtr VCommandLine::Get(const QCoreApplication& app) auto VCommandLine::Get(const QCoreApplication& app) -> VCommandLinePtr
{ {
if (instance == nullptr) if (instance == nullptr)
{ {
@ -313,14 +195,14 @@ VCommandLinePtr VCommandLine::Get(const QCoreApplication& app)
return instance; return instance;
} }
//------------------------------------------------------------------------------------------------------ //---------------------------------------------------------------------------------------------------------------------
void VCommandLine::Reset() void VCommandLine::Reset()
{ {
instance.reset(); instance.reset();
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsTestModeEnabled() const auto VCommandLine::IsTestModeEnabled() const -> bool
{ {
const bool r = IsOptionSet(LONG_OPTION_TEST); const bool r = IsOptionSet(LONG_OPTION_TEST);
if (r && parser.positionalArguments().size() != 1) if (r && parser.positionalArguments().size() != 1)
@ -332,20 +214,20 @@ bool VCommandLine::IsTestModeEnabled() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsPedantic() const auto VCommandLine::IsPedantic() const -> bool
{ {
// Pedantic doesn't work in GUI mode // Pedantic doesn't work in GUI mode
return IsGuiEnabled() ? false : IsOptionSet(LONG_OPTION_PENDANTIC); return IsGuiEnabled() ? false : IsOptionSet(LONG_OPTION_PENDANTIC);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsNoScalingEnabled() const auto VCommandLine::IsNoScalingEnabled() const -> bool
{ {
return IsOptionSet(LONG_OPTION_NO_HDPI_SCALING); return IsOptionSet(LONG_OPTION_NO_HDPI_SCALING);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsExportEnabled() const auto VCommandLine::IsExportEnabled() const -> bool
{ {
const bool r = IsOptionSet(LONG_OPTION_BASENAME); const bool r = IsOptionSet(LONG_OPTION_BASENAME);
if (r && parser.positionalArguments().size() != 1) if (r && parser.positionalArguments().size() != 1)
@ -357,7 +239,7 @@ bool VCommandLine::IsExportEnabled() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsExportFMEnabled() const auto VCommandLine::IsExportFMEnabled() const -> bool
{ {
const bool r = IsOptionSet(LONG_OPTION_CSVEXPORTFM); const bool r = IsOptionSet(LONG_OPTION_CSVEXPORTFM);
if (r && parser.positionalArguments().size() != 1) if (r && parser.positionalArguments().size() != 1)
@ -368,14 +250,14 @@ bool VCommandLine::IsExportFMEnabled() const
return r; return r;
} }
//------------------------------------------------------------------------------------------------------ //---------------------------------------------------------------------------------------------------------------------
VAbstractLayoutDialog::PaperSizeTemplate VCommandLine::OptPaperSize() const auto VCommandLine::OptPaperSize() const -> VAbstractLayoutDialog::PaperSizeTemplate
{ {
return FormatSize(LONG_OPTION_PAGETEMPLATE); return FormatSize(LONG_OPTION_PAGETEMPLATE);
} }
//------------------------------------------------------------------------------------------------------ //---------------------------------------------------------------------------------------------------------------------
Cases VCommandLine::OptGroup() const auto VCommandLine::OptGroup() const -> Cases
{ {
int r = OptionValue(LONG_OPTION_GROUPPING).toInt(); int r = OptionValue(LONG_OPTION_GROUPPING).toInt();
if ( r < 0 || r >= static_cast<int>(Cases::UnknownCase)) if ( r < 0 || r >= static_cast<int>(Cases::UnknownCase))
@ -385,8 +267,8 @@ Cases VCommandLine::OptGroup() const
return static_cast<Cases>(r); return static_cast<Cases>(r);
} }
//------------------------------------------------------------------------------------------------------ //---------------------------------------------------------------------------------------------------------------------
QString VCommandLine::OptMeasurePath() const auto VCommandLine::OptMeasurePath() const -> QString
{ {
QString measure; QString measure;
if (IsOptionSet(LONG_OPTION_MEASUREFILE) if (IsOptionSet(LONG_OPTION_MEASUREFILE)
@ -401,7 +283,7 @@ QString VCommandLine::OptMeasurePath() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString VCommandLine::OptBaseName() const auto VCommandLine::OptBaseName() const -> QString
{ {
QString path; QString path;
if (IsExportEnabled()) if (IsExportEnabled())
@ -413,7 +295,7 @@ QString VCommandLine::OptBaseName() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString VCommandLine::OptDestinationPath() const auto VCommandLine::OptDestinationPath() const -> QString
{ {
QString path; QString path;
if (IsExportEnabled()) if (IsExportEnabled())
@ -425,7 +307,7 @@ QString VCommandLine::OptDestinationPath() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
int VCommandLine::OptExportType() const auto VCommandLine::OptExportType() const -> int
{ {
int r = 0; int r = 0;
if (IsOptionSet(LONG_OPTION_EXP2FORMAT)) if (IsOptionSet(LONG_OPTION_EXP2FORMAT))
@ -436,31 +318,31 @@ int VCommandLine::OptExportType() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsBinaryDXF() const auto VCommandLine::IsBinaryDXF() const -> bool
{ {
return IsOptionSet(LONG_OPTION_BINARYDXF); return IsOptionSet(LONG_OPTION_BINARYDXF);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsTextAsPaths() const auto VCommandLine::IsTextAsPaths() const -> bool
{ {
return IsOptionSet(LONG_OPTION_TEXT2PATHS); return IsOptionSet(LONG_OPTION_TEXT2PATHS);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsExportOnlyDetails() const auto VCommandLine::IsExportOnlyDetails() const -> bool
{ {
return IsOptionSet(LONG_OPTION_EXPORTONLYDETAILS); return IsOptionSet(LONG_OPTION_EXPORTONLYDETAILS);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsCSVWithHeader() const auto VCommandLine::IsCSVWithHeader() const -> bool
{ {
return IsOptionSet(LONG_OPTION_CSVWITHHEADER); return IsOptionSet(LONG_OPTION_CSVWITHHEADER);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
qreal VCommandLine::ExportXScale() const auto VCommandLine::ExportXScale() const -> qreal
{ {
qreal xs = 1; qreal xs = 1;
if (IsOptionSet(LONG_OPTION_EXPXSCALE)) if (IsOptionSet(LONG_OPTION_EXPXSCALE))
@ -471,7 +353,7 @@ qreal VCommandLine::ExportXScale() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
qreal VCommandLine::ExportYScale() const auto VCommandLine::ExportYScale() const -> qreal
{ {
qreal ys = 1; qreal ys = 1;
if (IsOptionSet(LONG_OPTION_EXPYSCALE)) if (IsOptionSet(LONG_OPTION_EXPYSCALE))
@ -482,7 +364,7 @@ qreal VCommandLine::ExportYScale() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString VCommandLine::OptExportSuchDetails() const auto VCommandLine::OptExportSuchDetails() const -> QString
{ {
QString path; QString path;
if (IsExportEnabled()) if (IsExportEnabled())
@ -494,30 +376,30 @@ QString VCommandLine::OptExportSuchDetails() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString VCommandLine::OptCSVCodecName() const auto VCommandLine::OptCSVCodecName() const -> QString
{ {
return OptionValue(LONG_OPTION_CSVCODEC); return OptionValue(LONG_OPTION_CSVCODEC);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QChar VCommandLine::OptCSVSeparator() const auto VCommandLine::OptCSVSeparator() const -> QChar
{ {
const QString value = OptionValue(LONG_OPTION_CSVSEPARATOR); const QString value = OptionValue(LONG_OPTION_CSVSEPARATOR);
return not value.isEmpty() ? value.at(0) : QChar(); return not value.isEmpty() ? value.at(0) : QChar();
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString VCommandLine::OptExportFMTo() const auto VCommandLine::OptExportFMTo() const -> QString
{ {
return OptionValue(LONG_OPTION_CSVEXPORTFM); return OptionValue(LONG_OPTION_CSVEXPORTFM);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QMap<int, QString> VCommandLine::OptUserMaterials() const auto VCommandLine::OptUserMaterials() const -> QMap<int, QString>
{ {
QMap<int, QString> userMaterials; QMap<int, QString> userMaterials;
const QStringList values = OptionValues(LONG_OPTION_USER_MATERIAL); const QStringList values = OptionValues(LONG_OPTION_USER_MATERIAL);
for(auto &value : values) for(const auto &value : values)
{ {
const QStringList parts = value.split('@'); const QStringList parts = value.split('@');
if (parts.size() != 2) if (parts.size() != 2)
@ -544,37 +426,37 @@ QMap<int, QString> VCommandLine::OptUserMaterials() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QStringList VCommandLine::OptInputFileNames() const auto VCommandLine::OptInputFileNames() const -> QStringList
{ {
return parser.positionalArguments(); return parser.positionalArguments();
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsGuiEnabled() const auto VCommandLine::IsGuiEnabled() const -> bool
{ {
return isGuiEnabled; return isGuiEnabled;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsSetDimensionA() const auto VCommandLine::IsSetDimensionA() const -> bool
{ {
return IsOptionSet(LONG_OPTION_DIMENSION_A); return IsOptionSet(LONG_OPTION_DIMENSION_A);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsSetDimensionB() const auto VCommandLine::IsSetDimensionB() const -> bool
{ {
return IsOptionSet(LONG_OPTION_DIMENSION_B); return IsOptionSet(LONG_OPTION_DIMENSION_B);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsSetDimensionC() const auto VCommandLine::IsSetDimensionC() const -> bool
{ {
return IsOptionSet(LONG_OPTION_DIMENSION_C); return IsOptionSet(LONG_OPTION_DIMENSION_C);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
int VCommandLine::OptDimensionA() const auto VCommandLine::OptDimensionA() const -> int
{ {
const QString value = OptionValue(LONG_OPTION_DIMENSION_A); const QString value = OptionValue(LONG_OPTION_DIMENSION_A);
@ -590,7 +472,7 @@ int VCommandLine::OptDimensionA() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
int VCommandLine::OptDimensionB() const auto VCommandLine::OptDimensionB() const -> int
{ {
const QString value = OptionValue(LONG_OPTION_DIMENSION_B); const QString value = OptionValue(LONG_OPTION_DIMENSION_B);
@ -606,7 +488,7 @@ int VCommandLine::OptDimensionB() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
int VCommandLine::OptDimensionC() const auto VCommandLine::OptDimensionC() const -> int
{ {
const QString value = OptionValue(LONG_OPTION_DIMENSION_C); const QString value = OptionValue(LONG_OPTION_DIMENSION_C);
@ -692,13 +574,13 @@ auto VCommandLine::TiledPageMargins() const -> QMarginsF
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VAbstractLayoutDialog::PaperSizeTemplate VCommandLine::OptTiledPaperSize() const auto VCommandLine::OptTiledPaperSize() const -> VAbstractLayoutDialog::PaperSizeTemplate
{ {
return FormatSize(LONG_OPTION_TILED_PDF_PAGE_TEMPLATE); return FormatSize(LONG_OPTION_TILED_PDF_PAGE_TEMPLATE);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
PageOrientation VCommandLine::OptTiledPageOrientation() const auto VCommandLine::OptTiledPageOrientation() const -> PageOrientation
{ {
return static_cast<PageOrientation>(not IsOptionSet(LONG_OPTION_TILED_PDF_LANDSCAPE)); return static_cast<PageOrientation>(not IsOptionSet(LONG_OPTION_TILED_PDF_LANDSCAPE));
} }
@ -892,25 +774,25 @@ void VCommandLine::InitCommandLineOptions()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VCommandLine::IsOptionSet(const QString &option) const auto VCommandLine::IsOptionSet(const QString &option) const -> bool
{ {
return parser.isSet(option); return parser.isSet(option);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString VCommandLine::OptionValue(const QString &option) const auto VCommandLine::OptionValue(const QString &option) const -> QString
{ {
return parser.value(option); return parser.value(option);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QStringList VCommandLine::OptionValues(const QString &option) const auto VCommandLine::OptionValues(const QString &option) const -> QStringList
{ {
return parser.values(option); return parser.values(option);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
int VCommandLine::OptNestingTime() const auto VCommandLine::OptNestingTime() const -> int
{ {
int time = VValentinaSettings::GetDefNestingTime(); int time = VValentinaSettings::GetDefNestingTime();
if (IsOptionSet(LONG_OPTION_NESTING_TIME)) if (IsOptionSet(LONG_OPTION_NESTING_TIME))
@ -930,7 +812,7 @@ int VCommandLine::OptNestingTime() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
qreal VCommandLine::OptEfficiencyCoefficient() const auto VCommandLine::OptEfficiencyCoefficient() const -> qreal
{ {
qreal coefficient = VValentinaSettings::GetDefEfficiencyCoefficient(); qreal coefficient = VValentinaSettings::GetDefEfficiencyCoefficient();
if (IsOptionSet(LONG_OPTION_EFFICIENCY_COEFFICIENT)) if (IsOptionSet(LONG_OPTION_EFFICIENCY_COEFFICIENT))
@ -949,4 +831,136 @@ qreal VCommandLine::OptEfficiencyCoefficient() const
return coefficient; return coefficient;
} }
//---------------------------------------------------------------------------------------------------------------------
void VCommandLine::TestPageformat() const
{
bool x = IsOptionSet(LONG_OPTION_PAGETEMPLATE);
bool a = IsOptionSet(LONG_OPTION_PAGEH);
bool b = IsOptionSet(LONG_OPTION_PAGEW);
bool c = IsOptionSet(LONG_OPTION_PAGEUNITS);
if ((a || b) && x)
{
qCritical() << translate("VCommandLine", "Cannot use pageformat and page explicit size together.")
<< "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
if ((a || b || c) && !(a && b && c))
{
qCritical() << translate("VCommandLine", "Page height, width, units must be used all 3 at once.") << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
}
//---------------------------------------------------------------------------------------------------------------------
void VCommandLine::TestGapWidth() const
{
bool a = IsOptionSet(LONG_OPTION_GAPWIDTH);
bool b = IsOptionSet(LONG_OPTION_SHIFTUNITS);
if ((a || b) && !(a && b))
{
qCritical() << translate("VCommandLine", "Gap width must be used together with shift units.") << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
}
//---------------------------------------------------------------------------------------------------------------------
void VCommandLine::TestMargins() const
{
auto CheckKey = [this](const QString &key, const QString &message)
{
bool a = IsOptionSet(key);
bool b = IsOptionSet(LONG_OPTION_PAGEUNITS);
if (a && !(a && b))
{
qCritical() << message << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
};
if (not IsOptionSet(LONG_OPTION_IGNORE_MARGINS))
{
CheckKey(LONG_OPTION_LEFT_MARGIN,
translate("VCommandLine", "Left margin must be used together with page units."));
CheckKey(LONG_OPTION_RIGHT_MARGIN,
translate("VCommandLine", "Right margin must be used together with page units."));
CheckKey(LONG_OPTION_TOP_MARGIN,
translate("VCommandLine", "Top margin must be used together with page units."));
CheckKey(LONG_OPTION_BOTTOM_MARGIN,
translate("VCommandLine", "Bottom margin must be used together with page units."));
}
if (static_cast<LayoutExportFormats>(OptExportType()) == LayoutExportFormats::PDFTiled)
{
CheckKey(LONG_OPTION_TILED_PDF_LEFT_MARGIN,
translate("VCommandLine", "Tiled left margin must be used together with page units."));
CheckKey(LONG_OPTION_TILED_PDF_RIGHT_MARGIN,
translate("VCommandLine", "Tiled right margin must be used together with page units."));
CheckKey(LONG_OPTION_TILED_PDF_TOP_MARGIN,
translate("VCommandLine", "Tiled top margin must be used together with page units."));
CheckKey(LONG_OPTION_TILED_PDF_BOTTOM_MARGIN,
translate("VCommandLine", "Tiled bottom margin must be used together with page units."));
}
}
//---------------------------------------------------------------------------------------------------------------------
auto VCommandLine::ParseMargins(const DialogLayoutSettings &diag) const -> QMarginsF
{
QMarginsF margins = diag.GetFields();
if (IsOptionSet(LONG_OPTION_LEFT_MARGIN))
{
bool ok = false;
qreal margin = Pg2Px(OptionValue(LONG_OPTION_LEFT_MARGIN), diag, &ok);
if (not ok)
{
qCritical() << translate("VCommandLine", "Invalid layout page left margin.") << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
margins.setLeft(margin);
}
if (IsOptionSet(LONG_OPTION_RIGHT_MARGIN))
{
bool ok = false;
qreal margin = Pg2Px(OptionValue(LONG_OPTION_RIGHT_MARGIN), diag, &ok);
if (not ok)
{
qCritical() << translate("VCommandLine", "Invalid layout page right margin.") << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
margins.setRight(margin);
}
if (IsOptionSet(LONG_OPTION_TOP_MARGIN))
{
bool ok = false;
qreal margin = Pg2Px(OptionValue(LONG_OPTION_TOP_MARGIN), diag, &ok);
if (not ok)
{
qCritical() << translate("VCommandLine", "Invalid layout page top margin.") << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
margins.setTop(margin);
}
if (IsOptionSet(LONG_OPTION_BOTTOM_MARGIN))
{
bool ok = false;
qreal margin = Pg2Px(OptionValue(LONG_OPTION_BOTTOM_MARGIN), diag, &ok);
if (not ok)
{
qCritical() << translate("VCommandLine", "Invalid layout page bottom margin.") << "\n";
const_cast<VCommandLine*>(this)->parser.showHelp(V_EX_USAGE);
}
margins.setBottom(margin);
}
return margins;
}
#undef translate #undef translate

View file

@ -36,7 +36,6 @@
#include <QCommandLineParser> #include <QCommandLineParser>
#include "../dialogs/dialoglayoutsettings.h" #include "../dialogs/dialoglayoutsettings.h"
#include "../vmisc/vsysexits.h"
class VCommandLine; class VCommandLine;
using VCommandLinePtr = std::shared_ptr<VCommandLine>; using VCommandLinePtr = std::shared_ptr<VCommandLine>;
@ -54,110 +53,116 @@ public:
//@brief tests if user enabled test mode from cmd, throws exception if not exactly 1 input VAL file supplied in //@brief tests if user enabled test mode from cmd, throws exception if not exactly 1 input VAL file supplied in
//case test mode enabled //case test mode enabled
bool IsTestModeEnabled() const; auto IsTestModeEnabled() const -> bool;
//@brief Make all parsing warnings into errors. Have effect only in console mode. Use to force Valentina to //@brief Make all parsing warnings into errors. Have effect only in console mode. Use to force Valentina to
//immediately terminate if a pattern contains a parsing warning. //immediately terminate if a pattern contains a parsing warning.
bool IsPedantic() const; auto IsPedantic() const -> bool;
bool IsNoScalingEnabled() const; auto IsNoScalingEnabled() const -> bool;
//@brief tests if user enabled export from cmd, throws exception if not exactly 1 input VAL file supplied in case //@brief tests if user enabled export from cmd, throws exception if not exactly 1 input VAL file supplied in case
//export enabled //export enabled
bool IsExportEnabled() const; auto IsExportEnabled() const -> bool;
//@brief tests if user enabled export final measurements from cmd, throws exception if not exactly 1 input VAL //@brief tests if user enabled export final measurements from cmd, throws exception if not exactly 1 input VAL
//file supplied in case export enabled //file supplied in case export enabled
bool IsExportFMEnabled() const; auto IsExportFMEnabled() const -> bool;
//@brief returns path to custom measure file or empty string //@brief returns path to custom measure file or empty string
QString OptMeasurePath() const; auto OptMeasurePath() const -> QString;
//@brief returns the base name of layout files or empty string if not set //@brief returns the base name of layout files or empty string if not set
QString OptBaseName() const; auto OptBaseName() const -> QString;
//@brief returns the absolute path to output destination directory or path to application's current directory if //@brief returns the absolute path to output destination directory or path to application's current directory if
//not set //not set
QString OptDestinationPath() const; auto OptDestinationPath() const -> QString;
//@brief returns export type set, defaults 0 - svg //@brief returns export type set, defaults 0 - svg
int OptExportType() const; auto OptExportType() const -> int;
bool IsBinaryDXF() const; auto IsBinaryDXF() const -> bool;
bool IsTextAsPaths() const; auto IsTextAsPaths() const -> bool;
bool IsExportOnlyDetails() const; auto IsExportOnlyDetails() const -> bool;
bool IsCSVWithHeader() const; auto IsCSVWithHeader() const -> bool;
qreal ExportXScale() const; auto ExportXScale() const -> qreal;
qreal ExportYScale() const; auto ExportYScale() const -> qreal;
//@brief returns the piece name regex or empty string if not set //@brief returns the piece name regex or empty string if not set
QString OptExportSuchDetails() const; auto OptExportSuchDetails() const -> QString;
//@brief returns user selected csv codec or empty string if not set //@brief returns user selected csv codec or empty string if not set
QString OptCSVCodecName() const; auto OptCSVCodecName() const -> QString;
//@brief returns user selected csv separator or empty string if not set //@brief returns user selected csv separator or empty string if not set
QChar OptCSVSeparator() const; auto OptCSVSeparator() const -> QChar;
//@brief returns the destination path for export final measurements or empty string if not set //@brief returns the destination path for export final measurements or empty string if not set
QString OptExportFMTo() const; auto OptExportFMTo() const -> QString;
//@brief returns list of user defined materials //@brief returns list of user defined materials
QMap<int, QString> OptUserMaterials() const; auto OptUserMaterials() const -> QMap<int, QString>;
//generator creation is moved here ... because most options are for it only, so no need to create extra getters... //generator creation is moved here ... because most options are for it only, so no need to create extra getters...
//@brief creates VLayoutGenerator //@brief creates VLayoutGenerator
VLayoutGeneratorPtr DefaultGenerator() const; auto DefaultGenerator() const -> VLayoutGeneratorPtr;
//@brief gets filenames which should be loaded //@brief gets filenames which should be loaded
QStringList OptInputFileNames() const; auto OptInputFileNames() const -> QStringList;
bool IsGuiEnabled()const; auto IsGuiEnabled()const -> bool;
bool IsSetDimensionA() const; auto IsSetDimensionA() const -> bool;
bool IsSetDimensionB() const; auto IsSetDimensionB() const -> bool;
bool IsSetDimensionC() const; auto IsSetDimensionC() const -> bool;
int OptDimensionA() const; auto OptDimensionA() const -> int;
int OptDimensionB() const; auto OptDimensionB() const -> int;
int OptDimensionC() const; auto OptDimensionC() const -> int;
QMarginsF TiledPageMargins() const; auto TiledPageMargins() const -> QMarginsF;
VAbstractLayoutDialog::PaperSizeTemplate OptTiledPaperSize() const; auto OptTiledPaperSize() const -> VAbstractLayoutDialog::PaperSizeTemplate;
PageOrientation OptTiledPageOrientation() const; auto OptTiledPageOrientation() const -> PageOrientation;
protected: protected:
VCommandLine(); VCommandLine();
//@brief returns VAbstractLayoutDialog::PaperSizeTemplate //@brief returns VAbstractLayoutDialog::PaperSizeTemplate
VAbstractLayoutDialog::PaperSizeTemplate OptPaperSize() const; auto OptPaperSize() const -> VAbstractLayoutDialog::PaperSizeTemplate;
Cases OptGroup() const; auto OptGroup() const -> Cases;
//@brief: called in destructor of application, so instance destroyed and new maybe created (never happen scenario though) //@brief: called in destructor of application, so instance destroyed and new maybe created (never happen scenario though)
static void Reset(); static void Reset();
//@brief called to create single object, by VApplication only //@brief called to create single object, by VApplication only
static VCommandLinePtr Get(const QCoreApplication& app); static auto Get(const QCoreApplication& app) -> VCommandLinePtr;
private: private:
Q_DISABLE_COPY(VCommandLine) Q_DISABLE_COPY_MOVE(VCommandLine) // NOLINT
static VCommandLinePtr instance; static VCommandLinePtr instance; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
QCommandLineParser parser; QCommandLineParser parser{};
bool isGuiEnabled; bool isGuiEnabled{false};
friend class VApplication; friend class VApplication;
VAbstractLayoutDialog::PaperSizeTemplate FormatSize(const QString &key) const; auto FormatSize(const QString &key) const -> VAbstractLayoutDialog::PaperSizeTemplate;
void InitCommandLineOptions(); void InitCommandLineOptions();
bool IsOptionSet(const QString &option) const; auto IsOptionSet(const QString &option) const -> bool;
QString OptionValue(const QString &option) const; auto OptionValue(const QString &option) const -> QString;
QStringList OptionValues(const QString &option) const; auto OptionValues(const QString &option) const -> QStringList;
int OptNestingTime() const; auto OptNestingTime() const -> int;
qreal OptEfficiencyCoefficient() const; auto OptEfficiencyCoefficient() const -> qreal;
void TestPageformat() const;
void TestGapWidth() const;
void TestMargins() const;
auto ParseMargins(const DialogLayoutSettings &diag) const -> QMarginsF;
}; };
#endif // VCMDEXPORT_H #endif // VCMDEXPORT_H

View file

@ -30,8 +30,8 @@
#include "vformulapropertyeditor.h" #include "vformulapropertyeditor.h"
#include "../vpropertyexplorer/vproperty_p.h" #include "../vpropertyexplorer/vproperty_p.h"
#include "../vpropertyexplorer/plugins/vstringproperty.h"
#include "vformulapropertyeditor.h" #include "vformulapropertyeditor.h"
#include "../vpropertyexplorer/vproperties.h"
#include "../vpatterndb/vformula.h" #include "../vpatterndb/vformula.h"
#include "../vmisc/vabstractapplication.h" #include "../vmisc/vabstractapplication.h"
@ -41,7 +41,7 @@ VFormulaProperty::VFormulaProperty(const QString &name)
{ {
d_ptr->type = VPE::Property::Complex; d_ptr->type = VPE::Property::Complex;
VPE::VStringProperty* tmpFormula = new VPE::VStringProperty(tr("Formula")); auto* tmpFormula = new VPE::VStringProperty(tr("Formula"));
addChild(tmpFormula); addChild(tmpFormula);
tmpFormula->setClearButtonEnable(true); tmpFormula->setClearButtonEnable(true);
tmpFormula->setUpdateBehaviour(true, false); tmpFormula->setUpdateBehaviour(true, false);
@ -53,41 +53,37 @@ VFormulaProperty::VFormulaProperty(const QString &name)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
//! Get the data how it should be displayed //! Get the data how it should be displayed
QVariant VFormulaProperty::data (int column, int role) const auto VFormulaProperty::data (int column, int role) const -> QVariant
{ {
if (column == DPC_Data && (Qt::DisplayRole == role || Qt::EditRole == role)) if (column == DPC_Data && (Qt::DisplayRole == role || Qt::EditRole == role))
{ {
return getValue(); return getValue();
} }
else
{ return VProperty::data(column, role);
return VProperty::data(column, role);
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
Qt::ItemFlags VFormulaProperty::flags(int column) const auto VFormulaProperty::flags(int column) const -> Qt::ItemFlags
{ {
if (column == DPC_Name || column == DPC_Data) if (column == DPC_Name || column == DPC_Data)
{ {
return Qt::ItemIsEnabled | Qt::ItemIsSelectable; return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
} }
else
{ return Qt::NoItemFlags;
return Qt::NoItemFlags;
}
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
//! Returns an editor widget, or NULL if it doesn't supply one //! Returns an editor widget, or NULL if it doesn't supply one
QWidget* VFormulaProperty::createEditor(QWidget* parent, const QStyleOptionViewItem& options, auto VFormulaProperty::createEditor(QWidget* parent, const QStyleOptionViewItem& options,
const QAbstractItemDelegate* delegate) const QAbstractItemDelegate* delegate) -> QWidget*
{ {
Q_UNUSED(options) Q_UNUSED(options)
Q_UNUSED(delegate) Q_UNUSED(delegate)
VFormula formula = VProperty::d_ptr->VariantValue.value<VFormula>(); auto formula = VProperty::d_ptr->VariantValue.value<VFormula>();
VFormulaPropertyEditor* tmpEditor = new VFormulaPropertyEditor(parent); auto* tmpEditor = new VFormulaPropertyEditor(parent);
tmpEditor->setLocale(parent->locale()); tmpEditor->setLocale(parent->locale());
tmpEditor->SetFormula(formula); tmpEditor->SetFormula(formula);
VProperty::d_ptr->editor = tmpEditor; VProperty::d_ptr->editor = tmpEditor;
@ -96,25 +92,27 @@ QWidget* VFormulaProperty::createEditor(QWidget* parent, const QStyleOptionViewI
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
//! Sets the property's data to the editor (returns false, if the standard delegate should do that) //! Sets the property's data to the editor (returns false, if the standard delegate should do that)
bool VFormulaProperty::setEditorData(QWidget* editor) auto VFormulaProperty::setEditorData(QWidget* editor) -> bool
{ {
VFormulaPropertyEditor* tmpWidget = qobject_cast<VFormulaPropertyEditor*>(editor); auto* tmpWidget = qobject_cast<VFormulaPropertyEditor*>(editor);
if (tmpWidget) if (tmpWidget)
{ {
VFormula formula = VProperty::d_ptr->VariantValue.value<VFormula>(); auto formula = VProperty::d_ptr->VariantValue.value<VFormula>();
tmpWidget->SetFormula(formula); tmpWidget->SetFormula(formula);
} }
else else
{
return false; return false;
}
return true; return true;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
//! Gets the data from the widget //! Gets the data from the widget
QVariant VFormulaProperty::getEditorData(const QWidget *editor) const auto VFormulaProperty::getEditorData(const QWidget *editor) const -> QVariant
{ {
const VFormulaPropertyEditor* tmpWidget = qobject_cast<const VFormulaPropertyEditor*>(editor); const auto* tmpWidget = qobject_cast<const VFormulaPropertyEditor*>(editor);
if (tmpWidget) if (tmpWidget)
{ {
QVariant value; QVariant value;
@ -122,17 +120,17 @@ QVariant VFormulaProperty::getEditorData(const QWidget *editor) const
return value; return value;
} }
return QVariant(); return {};
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QString VFormulaProperty::type() const auto VFormulaProperty::type() const -> QString
{ {
return "formula"; return QStringLiteral("formula");
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VPE::VProperty *VFormulaProperty::clone(bool include_children, VProperty *container) const auto VFormulaProperty::clone(bool include_children, VProperty *container) const -> VPE::VProperty *
{ {
if (!container) if (!container)
{ {
@ -141,7 +139,7 @@ VPE::VProperty *VFormulaProperty::clone(bool include_children, VProperty *contai
if (!include_children) if (!include_children)
{ {
const QList<VProperty*> tmpChildren = container->getChildren(); const QList<VProperty*> tmpChildren = container->getChildren();
for (auto tmpChild : tmpChildren) for (auto *tmpChild : tmpChildren)
{ {
container->removeChild(tmpChild); container->removeChild(tmpChild);
delete tmpChild; delete tmpChild;
@ -156,12 +154,12 @@ VPE::VProperty *VFormulaProperty::clone(bool include_children, VProperty *contai
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VFormulaProperty::setValue(const QVariant &value) void VFormulaProperty::setValue(const QVariant &value)
{ {
VFormula tmpFormula = value.value<VFormula>(); auto tmpFormula = value.value<VFormula>();
SetFormula(tmpFormula); SetFormula(tmpFormula);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QVariant VFormulaProperty::getValue() const auto VFormulaProperty::getValue() const -> QVariant
{ {
VFormula tmpFormula = GetFormula(); VFormula tmpFormula = GetFormula();
QVariant value; QVariant value;
@ -170,7 +168,7 @@ QVariant VFormulaProperty::getValue() const
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VFormula VFormulaProperty::GetFormula() const auto VFormulaProperty::GetFormula() const -> VFormula
{ {
return VProperty::d_ptr->VariantValue.value<VFormula>(); return VProperty::d_ptr->VariantValue.value<VFormula>();
} }
@ -195,7 +193,7 @@ void VFormulaProperty::SetFormula(const VFormula &formula)
if (VProperty::d_ptr->editor != nullptr) if (VProperty::d_ptr->editor != nullptr)
{ {
setEditorData(VProperty::d_ptr->editor); setEditorData(VProperty::d_ptr->editor); // NOLINT(clang-analyzer-optin.cplusplus.VirtualCall)
} }
} }

View file

@ -35,56 +35,55 @@ class VFormula;
class VFormulaProperty : public VPE::VProperty class VFormulaProperty : public VPE::VProperty
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VFormulaProperty(const QString &name); explicit VFormulaProperty(const QString &name);
//! Get the data how it should be displayed //! Get the data how it should be displayed
virtual QVariant data (int column = DPC_Name, int role = Qt::DisplayRole) const override; auto data (int column = DPC_Name, int role = Qt::DisplayRole) const -> QVariant override;
//! Returns item flags //! Returns item flags
virtual Qt::ItemFlags flags(int column = DPC_Name) const override; auto flags(int column = DPC_Name) const -> Qt::ItemFlags override;
//! Returns an editor widget, or NULL if it doesn't supply one //! Returns an editor widget, or NULL if it doesn't supply one
//! \param parent The widget to which the editor will be added as a child //! \param parent The widget to which the editor will be added as a child
//! \options Render options //! \options Render options
//! \delegate A pointer to the QAbstractItemDelegate requesting the editor. This can be used to connect signals and //! \delegate A pointer to the QAbstractItemDelegate requesting the editor. This can be used to connect signals and
//! slots. //! slots.
virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& options, auto createEditor(QWidget* parent, const QStyleOptionViewItem& options,
const QAbstractItemDelegate* delegate) override; const QAbstractItemDelegate* delegate) -> QWidget* override;
//! Sets the property's data to the editor (returns false, if the standard delegate should do that) //! Sets the property's data to the editor (returns false, if the standard delegate should do that)
virtual bool setEditorData(QWidget* editor) override; auto setEditorData(QWidget* editor) -> bool override;
//! Gets the data from the widget //! Gets the data from the widget
virtual QVariant getEditorData(const QWidget* editor) const override; auto getEditorData(const QWidget* editor) const -> QVariant override;
//! Returns a string containing the type of the property //! Returns a string containing the type of the property
virtual QString type() const override; auto type() const -> QString override;
//! Clones this property //! Clones this property
//! \param include_children Indicates whether to also clone the children //! \param include_children Indicates whether to also clone the children
//! \param container If a property is being passed here, no new VProperty is being created but instead it is tried //! \param container If a property is being passed here, no new VProperty is being created but instead it is tried
//! to fill all the data into container. This can also be used when subclassing this function. //! to fill all the data into container. This can also be used when subclassing this function.
//! \return Returns the newly created property (or container, if it was not NULL) //! \return Returns the newly created property (or container, if it was not NULL)
Q_REQUIRED_RESULT virtual VProperty* clone(bool include_children = true, Q_REQUIRED_RESULT auto clone(bool include_children = true,
VProperty* container = nullptr) const override; VProperty* container = nullptr) const -> VProperty* override;
//! Sets the value of the property //! Sets the value of the property
virtual void setValue(const QVariant& value) override; void setValue(const QVariant& value) override;
//! Returns the value of the property as a QVariant //! Returns the value of the property as a QVariant
virtual QVariant getValue() const override; auto getValue() const -> QVariant override;
//! Returns the formula //! Returns the formula
VFormula GetFormula() const; auto GetFormula() const -> VFormula;
//! Sets the formula //! Sets the formula
void SetFormula(const VFormula &formula); void SetFormula(const VFormula &formula);
public slots: public slots:
virtual void ValueChildChanged(const QVariant &value, int typeForParent) override; void ValueChildChanged(const QVariant &value, int typeForParent) override;
}; };
#endif // VFORMULAPROPERTY_H #endif // VFORMULAPROPERTY_H

View file

@ -39,49 +39,49 @@
#include "../vpropertyexplorer/vproperty.h" #include "../vpropertyexplorer/vproperty.h"
#include "../vtools/dialogs/support/dialogeditwrongformula.h" #include "../vtools/dialogs/support/dialogeditwrongformula.h"
#include "vapplication.h" #include "../vmisc/vabstractvalapplication.h"
// VFormulaPropertyEditor // VFormulaPropertyEditor
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VFormulaPropertyEditor::VFormulaPropertyEditor(QWidget *parent) VFormulaPropertyEditor::VFormulaPropertyEditor(QWidget *parent)
: QWidget(parent), formula(VFormula()), ToolButton(nullptr), TextLabel(nullptr) : QWidget(parent)
{ {
setAutoFillBackground(true); setAutoFillBackground(true);
// Create the tool button // Create the tool button
ToolButton = new QToolButton(this); m_ToolButton = new QToolButton(this);
ToolButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); m_ToolButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
ToolButton->setText("..."); m_ToolButton->setText(QStringLiteral("..."));
ToolButton->setIcon(QIcon("://icon/16x16/fx.png")); m_ToolButton->setIcon(QIcon("://icon/16x16/fx.png"));
ToolButton->setIconSize(QSize(16, 16)); m_ToolButton->setIconSize(QSize(16, 16));
ToolButton->setFixedSize(24, 24); m_ToolButton->setFixedSize(24, 24);
ToolButton->installEventFilter(this); m_ToolButton->installEventFilter(this);
setFocusProxy(ToolButton); // Make the ToolButton the focus proxy setFocusProxy(m_ToolButton); // Make the ToolButton the focus proxy
setFocusPolicy(ToolButton->focusPolicy()); setFocusPolicy(m_ToolButton->focusPolicy());
connect(ToolButton, &QToolButton::clicked, this, &VFormulaPropertyEditor::onToolButtonClicked); connect(m_ToolButton, &QToolButton::clicked, this, &VFormulaPropertyEditor::onToolButtonClicked);
// Create the text label // Create the text label
TextLabel = new QLabel(this); m_TextLabel = new QLabel(this);
TextLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_TextLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
TextLabel->setText(formula.getStringValue()); m_TextLabel->setText(m_formula.getStringValue());
// The layout (a horizontal layout) // The layout (a horizontal layout)
QHBoxLayout* layout = new QHBoxLayout(this); auto* layout = new QHBoxLayout(this);
layout->setSpacing(3); layout->setSpacing(3);
layout->setMargin(0); layout->setMargin(0);
layout->addWidget(TextLabel); layout->addWidget(m_TextLabel);
// Spacer (this is needed for proper display of the label and button) // Spacer (this is needed for proper display of the label and button)
layout->addSpacerItem(new QSpacerItem(1000000000, 0, QSizePolicy::Expanding, QSizePolicy::Preferred)); layout->addSpacerItem(new QSpacerItem(1000000000, 0, QSizePolicy::Expanding, QSizePolicy::Preferred));
layout->addWidget(ToolButton); layout->addWidget(m_ToolButton);
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void VFormulaPropertyEditor::SetFormula(const VFormula& formula) void VFormulaPropertyEditor::SetFormula(const VFormula& formula)
{ {
if (this->formula != formula) if (this->m_formula != formula)
{ {
this->formula = formula; this->m_formula = formula;
TextLabel->setText(this->formula.getStringValue()); m_TextLabel->setText(this->m_formula.getStringValue());
} }
} }
@ -89,26 +89,26 @@ void VFormulaPropertyEditor::SetFormula(const VFormula& formula)
void VFormulaPropertyEditor::onToolButtonClicked() void VFormulaPropertyEditor::onToolButtonClicked()
{ {
QScopedPointer<DialogEditWrongFormula> tmpWidget( QScopedPointer<DialogEditWrongFormula> tmpWidget(
new DialogEditWrongFormula(formula.getData(), formula.getToolId(), new DialogEditWrongFormula(m_formula.getData(), m_formula.getToolId(),
VAbstractValApplication::VApp()->getMainWindow())); VAbstractValApplication::VApp()->getMainWindow()));
tmpWidget->setCheckZero(formula.getCheckZero()); tmpWidget->setCheckZero(m_formula.getCheckZero());
tmpWidget->setPostfix(formula.getPostfix()); tmpWidget->setPostfix(m_formula.getPostfix());
tmpWidget->SetFormula(formula.GetFormula(FormulaType::FromUser)); tmpWidget->SetFormula(m_formula.GetFormula(FormulaType::FromUser));
if (tmpWidget->exec() == QDialog::Accepted) if (tmpWidget->exec() == QDialog::Accepted)
{ {
formula.SetFormula(tmpWidget->GetFormula(), FormulaType::ToUser); m_formula.SetFormula(tmpWidget->GetFormula(), FormulaType::ToUser);
formula.Eval(); m_formula.Eval();
TextLabel->setText(formula.getStringValue()); m_TextLabel->setText(m_formula.getStringValue());
emit dataChangedByUser(formula, this); emit dataChangedByUser(m_formula, this);
QCoreApplication::postEvent(this, new VPE::UserChangeEvent()); QCoreApplication::postEvent(this, new VPE::UserChangeEvent());
} }
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
bool VFormulaPropertyEditor::eventFilter(QObject *obj, QEvent *ev) auto VFormulaPropertyEditor::eventFilter(QObject *obj, QEvent *ev) -> bool
{ {
if (obj == ToolButton && ev->type() == QEvent::KeyPress) if (obj == m_ToolButton && ev->type() == QEvent::KeyPress)
{ {
// Ignore the event, so that eventually the delegate gets the event. // Ignore the event, so that eventually the delegate gets the event.
ev->ignore(); ev->ignore();
@ -119,7 +119,7 @@ bool VFormulaPropertyEditor::eventFilter(QObject *obj, QEvent *ev)
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
VFormula VFormulaPropertyEditor::GetFormula() const auto VFormulaPropertyEditor::GetFormula() const -> VFormula
{ {
return formula; return m_formula;
} }

View file

@ -35,23 +35,24 @@
#include <QLabel> #include <QLabel>
#include "../vpatterndb/vformula.h" #include "../vpatterndb/vformula.h"
#include "../vmisc/defglobal.h"
class VFormulaPropertyEditor : public QWidget class VFormulaPropertyEditor : public QWidget
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
//! Constructor taking a widget as parent //! Constructor taking a widget as parent
explicit VFormulaPropertyEditor(QWidget *parent); explicit VFormulaPropertyEditor(QWidget *parent);
//! Destructor //! Destructor
virtual ~VFormulaPropertyEditor() Q_DECL_EQ_DEFAULT; ~VFormulaPropertyEditor() override Q_DECL_EQ_DEFAULT;
//! Returns the formula currently set //! Returns the formula currently set
VFormula GetFormula() const; auto GetFormula() const -> VFormula;
//! Needed for proper event handling //! Needed for proper event handling
virtual bool eventFilter(QObject *obj, QEvent *ev) override; auto eventFilter(QObject *obj, QEvent *ev) -> bool override;
signals: signals:
//! This is emitted, when the user changes the color //! This is emitted, when the user changes the color
@ -67,10 +68,11 @@ private slots:
void onToolButtonClicked(); void onToolButtonClicked();
private: private:
Q_DISABLE_COPY(VFormulaPropertyEditor) // cppcheck-suppress unknownMacro
VFormula formula; Q_DISABLE_COPY_MOVE(VFormulaPropertyEditor) // NOLINT
QToolButton* ToolButton; VFormula m_formula{};
QLabel* TextLabel; QToolButton* m_ToolButton{nullptr};
QLabel* m_TextLabel{nullptr};
}; };

File diff suppressed because it is too large Load diff

View file

@ -43,9 +43,10 @@ class VFormula;
class VToolOptionsPropertyBrowser : public QObject class VToolOptionsPropertyBrowser : public QObject
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit VToolOptionsPropertyBrowser(QDockWidget *parent); explicit VToolOptionsPropertyBrowser(QDockWidget *parent);
~VToolOptionsPropertyBrowser() override =default;
void ClearPropertyBrowser(); void ClearPropertyBrowser();
public slots: public slots:
void itemClicked(QGraphicsItem *item); void itemClicked(QGraphicsItem *item);
@ -54,14 +55,15 @@ public slots:
private slots: private slots:
void userChangedData(VPE::VProperty* property); void userChangedData(VPE::VProperty* property);
private: private:
Q_DISABLE_COPY(VToolOptionsPropertyBrowser) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(VToolOptionsPropertyBrowser) // NOLINT
VPE::VPropertyModel* PropertyModel; VPE::VPropertyModel* m_PropertyModel{nullptr};
VPE::VPropertyFormView* formView; VPE::VPropertyFormView* m_formView{nullptr};
QGraphicsItem *currentItem; QGraphicsItem *m_currentItem{nullptr};
QMap<VPE::VProperty *, QString> propertyToId; QMap<VPE::VProperty *, QString> m_propertyToId{};
QMap<QString, VPE::VProperty *> idToProperty; QMap<QString, VPE::VProperty *> m_idToProperty{};
void AddProperty(VPE::VProperty *property, const QString &id); void AddProperty(VPE::VProperty *property, const QString &id);
void ShowItemOptions(QGraphicsItem *item); void ShowItemOptions(QGraphicsItem *item);
@ -91,7 +93,7 @@ private:
void SetOperationSuffix(VPE::VProperty *property); void SetOperationSuffix(VPE::VProperty *property);
template<class Type> template<class Type>
Type GetCrossPoint(const QVariant &value); auto GetCrossPoint(const QVariant &value) -> Type;
template<class Tool> template<class Tool>
void SetCrossCirclesPoint(VPE::VProperty *property); void SetCrossCirclesPoint(VPE::VProperty *property);
@ -198,7 +200,7 @@ private:
void AddPropertyText(const QString &propertyName, const QString &text, const QString &attrName); void AddPropertyText(const QString &propertyName, const QString &text, const QString &attrName);
void AddPropertyBool(const QString &propertyName, bool value, const QString &attrName); void AddPropertyBool(const QString &propertyName, bool value, const QString &attrName);
QStringList PropertiesList() const; static auto PropertiesList() -> QStringList;
void ChangeDataToolSinglePoint(VPE::VProperty *property); void ChangeDataToolSinglePoint(VPE::VProperty *property);
void ChangeDataToolEndLine(VPE::VProperty *property); void ChangeDataToolEndLine(VPE::VProperty *property);

View file

@ -40,11 +40,7 @@
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent) PreferencesConfigurationPage::PreferencesConfigurationPage(QWidget *parent)
: QWidget(parent), : QWidget(parent),
ui(new Ui::PreferencesConfigurationPage), ui(new Ui::PreferencesConfigurationPage)
m_langChanged(false),
m_systemChanged(),
m_unitChanged(false),
m_labelLangChanged(false)
{ {
ui->setupUi(this); ui->setupUi(this);
RetranslateUi(); RetranslateUi();
@ -169,7 +165,7 @@ PreferencesConfigurationPage::~PreferencesConfigurationPage()
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QStringList PreferencesConfigurationPage::Apply() auto PreferencesConfigurationPage::Apply() -> QStringList
{ {
// Tab General // Tab General
QStringList preferences; QStringList preferences;
@ -263,7 +259,7 @@ void PreferencesConfigurationPage::changeEvent(QEvent *event)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void PreferencesConfigurationPage::SetLabelComboBox(const QStringList &list) void PreferencesConfigurationPage::SetLabelComboBox(const QStringList &list)
{ {
for (auto &name : list) for (const auto &name : list)
{ {
ui->labelCombo->addItem(QLocale(name).nativeLanguageName(), name); ui->labelCombo->addItem(QLocale(name).nativeLanguageName(), name);
} }
@ -284,7 +280,7 @@ void PreferencesConfigurationPage::RetranslateUi()
{ {
ui->unitCombo->blockSignals(true); ui->unitCombo->blockSignals(true);
const QString unit = qvariant_cast<QString>(ui->unitCombo->currentData()); const auto unit = qvariant_cast<QString>(ui->unitCombo->currentData());
ui->unitCombo->clear(); ui->unitCombo->clear();
InitUnits(); InitUnits();
ui->unitCombo->setCurrentIndex(ui->unitCombo->findData(unit)); ui->unitCombo->setCurrentIndex(ui->unitCombo->findData(unit));
@ -292,7 +288,7 @@ void PreferencesConfigurationPage::RetranslateUi()
} }
{ {
const QString code = qvariant_cast<QString>(ui->systemCombo->currentData()); const auto code = qvariant_cast<QString>(ui->systemCombo->currentData());
ui->systemCombo->blockSignals(true); ui->systemCombo->blockSignals(true);
ui->systemCombo->clear(); ui->systemCombo->clear();
InitPMSystems(ui->systemCombo); InitPMSystems(ui->systemCombo);

View file

@ -31,6 +31,8 @@
#include <QWidget> #include <QWidget>
#include "../vmisc/defglobal.h"
namespace Ui namespace Ui
{ {
class PreferencesConfigurationPage; class PreferencesConfigurationPage;
@ -38,22 +40,23 @@ namespace Ui
class PreferencesConfigurationPage : public QWidget class PreferencesConfigurationPage : public QWidget
{ {
Q_OBJECT Q_OBJECT // NOLINT
public: public:
explicit PreferencesConfigurationPage(QWidget *parent = nullptr); explicit PreferencesConfigurationPage(QWidget *parent = nullptr);
virtual ~PreferencesConfigurationPage(); ~PreferencesConfigurationPage() override;
QStringList Apply(); auto Apply() -> QStringList;
protected: protected:
virtual void changeEvent(QEvent* event) override; void changeEvent(QEvent* event) override;
private: private:
Q_DISABLE_COPY(PreferencesConfigurationPage) // cppcheck-suppress unknownMacro
Q_DISABLE_COPY_MOVE(PreferencesConfigurationPage) // NOLINT
Ui::PreferencesConfigurationPage *ui; Ui::PreferencesConfigurationPage *ui;
bool m_langChanged; bool m_langChanged{false};
bool m_systemChanged; bool m_systemChanged{false};
bool m_unitChanged; bool m_unitChanged{false};
bool m_labelLangChanged; bool m_labelLangChanged{false};
void SetLabelComboBox(const QStringList &list); void SetLabelComboBox(const QStringList &list);
void InitUnits(); void InitUnits();

Some files were not shown because too many files have changed in this diff Show more