File indexing completed on 2024-06-23 04:27:05

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2007 Jan Hambrecht <jaham@gmx.net>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include "StarShapeConfigCommand.h"
0008 #include "StarShape.h"
0009 #include <klocalizedstring.h>
0010 
0011 StarShapeConfigCommand::StarShapeConfigCommand(StarShape *star, uint cornerCount, qreal innerRadius, qreal outerRadius, bool convex, KUndo2Command *parent)
0012     : KUndo2Command(parent)
0013     , m_star(star)
0014     , m_newCornerCount(cornerCount)
0015     , m_newInnerRadius(innerRadius)
0016     , m_newOuterRadius(outerRadius)
0017     , m_newConvex(convex)
0018 {
0019     Q_ASSERT(m_star);
0020 
0021     setText(kundo2_i18n("Change star"));
0022 
0023     m_oldCornerCount = m_star->cornerCount();
0024     m_oldInnerRadius = m_star->baseRadius();
0025     m_oldOuterRadius = m_star->tipRadius();
0026     m_oldConvex = m_star->convex();
0027 }
0028 
0029 void StarShapeConfigCommand::redo()
0030 {
0031     KUndo2Command::redo();
0032 
0033     m_star->update();
0034 
0035     QPointF position = m_star->absolutePosition();
0036 
0037     if (m_oldCornerCount != m_newCornerCount) {
0038         m_star->setCornerCount(m_newCornerCount);
0039     }
0040     if (m_oldInnerRadius != m_newInnerRadius) {
0041         m_star->setBaseRadius(m_newInnerRadius);
0042     }
0043     if (m_oldOuterRadius != m_newOuterRadius) {
0044         m_star->setTipRadius(m_newOuterRadius);
0045     }
0046     if (m_oldConvex != m_newConvex) {
0047         m_star->setConvex(m_newConvex);
0048     }
0049 
0050     m_star->setAbsolutePosition(position);
0051 
0052     m_star->update();
0053 }
0054 
0055 void StarShapeConfigCommand::undo()
0056 {
0057     KUndo2Command::undo();
0058 
0059     m_star->update();
0060 
0061     QPointF position = m_star->absolutePosition();
0062 
0063     if (m_oldCornerCount != m_newCornerCount) {
0064         m_star->setCornerCount(m_oldCornerCount);
0065     }
0066     if (m_oldInnerRadius != m_newInnerRadius) {
0067         m_star->setBaseRadius(m_oldInnerRadius);
0068     }
0069     if (m_oldOuterRadius != m_newOuterRadius) {
0070         m_star->setTipRadius(m_oldOuterRadius);
0071     }
0072     if (m_oldConvex != m_newConvex) {
0073         m_star->setConvex(m_oldConvex);
0074     }
0075 
0076     m_star->setAbsolutePosition(position);
0077 
0078     m_star->update();
0079 }