Skip to content

Commit

Permalink
Fix number not correct set, renaming and unit tests #42
Browse files Browse the repository at this point in the history
  • Loading branch information
DamirPorobic committed Dec 26, 2020
1 parent 1d3edd5 commit da92674
Show file tree
Hide file tree
Showing 25 changed files with 225 additions and 123 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* New: Add function for loading translations. ([#173](https://github.com/ksnip/kImageAnnotator/issues/173))
* New: Add a new tool for creating resizable movable duplicates of regions. ([#131](https://github.com/ksnip/kImageAnnotator/issues/131))
* New: Add support for hiding annotation settings panel. ([#182](https://github.com/ksnip/kImageAnnotator/issues/182))
* New: Add config option for numbering tool to only set next number. ([#42](https://github.com/ksnip/kImageAnnotator/issues/42))

## Release 0.4.1
* Fixed: Brazilian Portuguese translation not loaded. ([#176](https://github.com/ksnip/kImageAnnotator/issues/176))
Expand Down
4 changes: 0 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,6 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/kImageAnnotator
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/common/enum/NumberUpdateMode.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/kImageAnnotator/include
)

configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/kImageAnnotatorConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/cmake/kImageAnnotatorConfig.cmake
Expand Down
3 changes: 1 addition & 2 deletions include/kImageAnnotator/KImageAnnotator.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

#include <QWidget>

#include "NumberUpdateMode.h"
#include <kImageAnnotator/KImageAnnotatorExport.h>

namespace kImageAnnotator {
Expand Down Expand Up @@ -62,7 +61,7 @@ public Q_SLOTS:
void setSaveToolSelection(bool enabled);
void setSmoothFactor(int factor);
void setSwitchToSelectToolAfterDrawingItem(bool enabled);
void setNumberUpdateMode(NumberUpdateMode numberUpdateMode);
void setNumberToolSeedChangeUpdatesAllItems(bool enabled);
void setTabBarAutoHide(bool enabled);
void removeTab(int index);
void setStickers(const QStringList &stickerPaths, bool keepDefault);
Expand Down
6 changes: 3 additions & 3 deletions src/annotations/core/AbstractSettingsProvider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ void AbstractSettingsProvider::toolChanged(Tools tool)
}
}

void AbstractSettingsProvider::firstBadgeNumberChanged(int number)
void AbstractSettingsProvider::numberToolSeedChanged(int numberToolSeed)
{
if(mSettingsListener != nullptr) {
mSettingsListener->firstBadgeNumberChanged(number);
mSettingsListener->numberToolSeedChanged(numberToolSeed);
}
}

Expand All @@ -52,7 +52,7 @@ void AbstractSettingsProvider::setActiveListener(ISettingsListener *settingsList
{
mSettingsListener = settingsListener;
if(mSettingsListener != nullptr) {
updateFirstBadgeNumber(mSettingsListener->firstBadgeNumber());
updateNumberToolSeed(mSettingsListener->numberToolSeed());
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/annotations/core/AbstractSettingsProvider.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,13 @@ class AbstractSettingsProvider
virtual int obfuscationFactor() const = 0;
virtual QString sticker() const = 0;
virtual ImageEffects effect() const = 0;
virtual void updateFirstBadgeNumber(int number) = 0;
virtual void updateNumberToolSeed(int numberToolSeed) = 0;
virtual void updateZoomLevel(double value) = 0;
void setActiveListener(ISettingsListener *settingsListener);

protected:
virtual void toolChanged(Tools tool);
virtual void firstBadgeNumberChanged(int number);
virtual void numberToolSeedChanged(int numberToolSeed);
virtual void itemSettingChanged();
virtual void effectChanged(ImageEffects effect);

Expand Down
16 changes: 7 additions & 9 deletions src/annotations/core/AnnotationArea.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@ AnnotationArea::AnnotationArea(Config *config, AbstractSettingsProvider *setting
mCurrentItem(nullptr),
mUndoAction(nullptr),
mRedoAction(nullptr),
mConfig(config),
mKeyHelper(new KeyHelper),
mSettingsProvider(settingsProvider),
mItemModifier(new AnnotationItemModifier(zoomValueProvider)),
mPropertiesFactory(new AnnotationPropertiesFactory(config, mSettingsProvider)),
mItemFactory(new AnnotationItemFactory(mPropertiesFactory, mSettingsProvider)),
mItemFactory(new AnnotationItemFactory(mPropertiesFactory, mSettingsProvider, mConfig)),
mItems(new QList<AbstractAnnotationItem *>()),
mItemCopier(new AnnotationItemClipboard(mItemModifier)),
mDevicePixelRatioScaler(devicePixelRatioScaler),
mConfig(config)
mDevicePixelRatioScaler(devicePixelRatioScaler)
{
Q_ASSERT(mSettingsProvider != nullptr);
Q_ASSERT(mConfig != nullptr);
Expand All @@ -55,8 +55,6 @@ AnnotationArea::AnnotationArea(Config *config, AbstractSettingsProvider *setting

connect(&mKeyListener, &KeyEventListener::keyPressed, mKeyHelper, &KeyHelper::keyPress);
connect(&mKeyListener, &KeyEventListener::keyReleased, mKeyHelper, &KeyHelper::keyRelease);

mItemFactory->setConfig(mConfig);
}

AnnotationArea::~AnnotationArea()
Expand Down Expand Up @@ -178,14 +176,14 @@ void AnnotationArea::itemSettingsChanged()
}
}

void AnnotationArea::firstBadgeNumberChanged(int number)
void AnnotationArea::numberToolSeedChanged(int numberToolSeed)
{
mItemFactory->setFirstBadgeNumber(number);
mItemFactory->setNumberToolSeed(numberToolSeed);
}

int AnnotationArea::firstBadgeNumber() const
int AnnotationArea::numberToolSeed() const
{
return mItemFactory->firstBadgeNumber();
return mItemFactory->numberToolSeed();
}

void AnnotationArea::imageEffectChanged(ImageEffects effect)
Expand Down
6 changes: 3 additions & 3 deletions src/annotations/core/AnnotationArea.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ class AnnotationArea : public QGraphicsScene, public ISettingsListener
virtual void clearSelection();
virtual void toolChanged(Tools toolType) override;
void itemSettingsChanged();
void firstBadgeNumberChanged(int number) override;
int firstBadgeNumber() const override;
void numberToolSeedChanged(int numberToolSeed) override;
int numberToolSeed() const override;
void imageEffectChanged(ImageEffects effect) override;

public slots:
Expand All @@ -87,6 +87,7 @@ public slots:
void contextMenuEvent(QGraphicsSceneContextMenuEvent * event) override;

private:
Config *mConfig;
AbstractSettingsProvider *mSettingsProvider;
AnnotationPropertiesFactory *mPropertiesFactory;
AnnotationItemFactory *mItemFactory;
Expand All @@ -101,7 +102,6 @@ public slots:
QAction *mRedoAction;
IDevicePixelRatioScaler *mDevicePixelRatioScaler;
KeyEventListener mKeyListener;
Config *mConfig;

void addItemAtPosition(const QPointF& position);
void addPointToCurrentItem(const QPointF& position);
Expand Down
30 changes: 16 additions & 14 deletions src/annotations/core/AnnotationItemFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,19 @@

namespace kImageAnnotator {

AnnotationItemFactory::AnnotationItemFactory(AnnotationPropertiesFactory *propertiesFactory, AbstractSettingsProvider *settingsProvider) :
AnnotationItemFactory::AnnotationItemFactory(AnnotationPropertiesFactory *propertiesFactory, AbstractSettingsProvider *settingsProvider, Config *config) :
mPropertiesFactory(propertiesFactory),
mSettingsProvider(settingsProvider),
mConfig(config),
mNumberManager(new NumberManager),
mNextZValue(1)
{
Q_ASSERT(mSettingsProvider != nullptr);
Q_ASSERT(mConfig != nullptr);

connect(mConfig, &Config::numberUpdateModeChanged, this, &AnnotationItemFactory::setNumberUpdateMode);
connect(mNumberManager, &NumberManager::numberSeedChanged, this, &AnnotationItemFactory::numberSeedChanged);
setNumberUpdateMode(mConfig->numberUpdateMode());

reset();
}
Expand All @@ -44,30 +50,21 @@ void AnnotationItemFactory::reset()
mNumberManager->reset();
}

void AnnotationItemFactory::setFirstBadgeNumber(int number)
void AnnotationItemFactory::setNumberToolSeed(int numberSeed)
{
mNumberManager->setFirstNumber(number);
mNumberManager->setNumberSeed(numberSeed);
}

int AnnotationItemFactory::firstBadgeNumber() const
int AnnotationItemFactory::numberToolSeed() const
{
return mNumberManager->firstNumber();
return mNumberManager->numberSeed();
}

void AnnotationItemFactory::setNumberUpdateMode(NumberUpdateMode numberUpdateMode)
{
mNumberManager->setNumberUpdateMode(numberUpdateMode);
}

void AnnotationItemFactory::setConfig(Config *config)
{
mConfig = config;

connect(mConfig, &Config::numberUpdateModeChanged,
this, &AnnotationItemFactory::setNumberUpdateMode);
setNumberUpdateMode(mConfig->numberUpdateMode());
}

AbstractAnnotationItem *AnnotationItemFactory::create(const QPointF &initPosition)
{
auto toolType = mSettingsProvider->toolType();
Expand Down Expand Up @@ -249,4 +246,9 @@ void AnnotationItemFactory::setZValue(AbstractAnnotationItem *item)
}
}

void AnnotationItemFactory::numberSeedChanged(int newNumberSeed)
{
mSettingsProvider->updateNumberToolSeed(newNumberSeed);
}

} // namespace kImageAnnotator
8 changes: 4 additions & 4 deletions src/annotations/core/AnnotationItemFactory.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,11 @@ class AnnotationItemFactory : public QObject
{
Q_OBJECT
public:
explicit AnnotationItemFactory(AnnotationPropertiesFactory *propertiesFactory, AbstractSettingsProvider *settingsProvider);
explicit AnnotationItemFactory(AnnotationPropertiesFactory *propertiesFactory, AbstractSettingsProvider *settingsProvider, Config *config);
~AnnotationItemFactory() override;
void reset();
void setFirstBadgeNumber(int number);
int firstBadgeNumber() const;
void setConfig(Config *config);
void setNumberToolSeed(int numberSeed);
int numberToolSeed() const;
AbstractAnnotationItem *create(const QPointF &initPosition);
AbstractAnnotationItem *create(const QPointF &initPosition, const QPixmap &image);
AbstractAnnotationItem *clone(const AbstractAnnotationItem *item);
Expand All @@ -73,6 +72,7 @@ private slots:
AbstractAnnotationItem *createItem(const QPointF &initPosition, const Tools &toolType, const PropertiesPtr &properties);
AbstractAnnotationItem *cloneItem(const AbstractAnnotationItem *item);
void setZValue(AbstractAnnotationItem *item);
void numberSeedChanged(int newNumberSeed);
};

} // namespace kImageAnnotator
Expand Down
4 changes: 2 additions & 2 deletions src/annotations/core/AnnotationPropertiesFactory.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ class AnnotationPropertiesFactory
void setTextProperties(const PropertiesPtr &properties, Tools toolType) const;
void setObfuscateProperties(const PropertiesPtr &properties) const;
void setStickerProperties(const PropertiesPtr &properties) const;
static bool isMarkerTool(Tools toolType) ;
static bool isObfuscateTool(const Tools &toolType) ;
static bool isMarkerTool(Tools toolType);
static bool isObfuscateTool(const Tools &toolType);
bool isToolWithShadowSupport(Tools &toolType) const;
};

Expand Down
4 changes: 2 additions & 2 deletions src/annotations/core/ISettingsListener.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ class ISettingsListener
public:
virtual void toolChanged(Tools toolType) = 0;
virtual void itemSettingsChanged() = 0;
virtual void firstBadgeNumberChanged(int number) = 0;
virtual int firstBadgeNumber() const = 0;
virtual void numberToolSeedChanged(int numberToolSeed) = 0;
virtual int numberToolSeed() const = 0;
virtual void imageEffectChanged(ImageEffects effect) = 0;
};

Expand Down
34 changes: 19 additions & 15 deletions src/annotations/misc/NumberManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
namespace kImageAnnotator {

NumberManager::NumberManager() :
mFirstNumber(1),
mNumberUpdateMode(NumberUpdateMode::UseNextNumber)
mNumberSeed(1),
mNumberUpdateMode(NumberUpdateMode::UpdateAllNumbers)
{
}

Expand All @@ -46,34 +46,38 @@ void NumberManager::addItemInner(AbstractAnnotationItem *item)
{
Q_ASSERT(item != nullptr);

connect(item, &AbstractAnnotationItem::visibleChanged, this, &NumberManager::updateNumbersIfRequired);
mItems.append(item);

if (mNumberUpdateMode == NumberUpdateMode::UseNextNumber) {
updateNumbersIfRequired();
if (mNumberUpdateMode == NumberUpdateMode::UpdateAllNumbers) {
connect(item, &AbstractAnnotationItem::visibleChanged, this, &NumberManager::updateExistingNumbersIfRequired);
updateExistingNumbers();
} else {
initItemNumber(item);
emit numberSeedChanged(mNumberSeed);
}
}

void NumberManager::initItemNumber(AbstractAnnotationItem *item)
{
auto numberItem = dynamic_cast<BaseAnnotationNumber *>(item);
numberItem->setNumber(mFirstNumber);
numberItem->setNumber(mNumberSeed++);
}

void NumberManager::reset()
{
mItems.clear();
}

void NumberManager::updateNumbersIfRequired()
void NumberManager::updateExistingNumbersIfRequired()
{
if (mNumberUpdateMode == NumberUpdateMode::UseStartingNumber) {
return;
if(mNumberUpdateMode == NumberUpdateMode::UpdateAllNumbers) {
updateExistingNumbers();
}
}

auto number = mFirstNumber;
void NumberManager::updateExistingNumbers()
{
auto number = mNumberSeed;
for (auto item : mItems) {
if (item->isVisible()) {
auto numberItem = dynamic_cast<BaseAnnotationNumber *>(item);
Expand All @@ -82,15 +86,15 @@ void NumberManager::updateNumbersIfRequired()
}
}

void NumberManager::setFirstNumber(int number)
void NumberManager::setNumberSeed(int numberSeed)
{
mFirstNumber = number;
updateNumbersIfRequired();
mNumberSeed = numberSeed;
updateExistingNumbersIfRequired();
}

int NumberManager::firstNumber() const
int NumberManager::numberSeed() const
{
return mFirstNumber;
return mNumberSeed;
}

void NumberManager::setNumberUpdateMode(NumberUpdateMode numberUpdateMode)
Expand Down
12 changes: 8 additions & 4 deletions src/annotations/misc/NumberManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,24 @@ Q_OBJECT
void addItem(AnnotationNumberPointer *item);
void addItem(AnnotationNumberArrow *item);
void reset();
void setFirstNumber(int number);
int firstNumber() const;
void setNumberSeed(int numberSeed);
int numberSeed() const;
void setNumberUpdateMode(NumberUpdateMode numberUpdateMode);

signals:
void numberSeedChanged(int numberSeed);

public slots:
void updateNumbersIfRequired();
void updateExistingNumbersIfRequired();

private:
int mFirstNumber;
int mNumberSeed;
QList<AbstractAnnotationItem *> mItems;
NumberUpdateMode mNumberUpdateMode;

void addItemInner(AbstractAnnotationItem *item);
void initItemNumber(AbstractAnnotationItem *item);
void updateExistingNumbers();
};

} // namepsace kImageAnnotator
Expand Down
6 changes: 3 additions & 3 deletions src/backend/Config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Config::Config() :
mSaveToolSelection(false),
mSmoothFactor(0),
mSwitchToSelectToolAfterDrawingItem(false),
mNumberUpdateMode(NumberUpdateMode::UseNextNumber)
mNumberUpdateMode(NumberUpdateMode::UpdateOnlyNewNumbers)
{
mAllTools = QList<Tools>{
Tools::Pen,
Expand Down Expand Up @@ -217,7 +217,7 @@ NumberUpdateMode Config::numberUpdateMode() const
return mNumberUpdateMode;
}

void Config::setNumberUpdateMode(enum NumberUpdateMode numberUpdateMode)
void Config::setNumberToolUpdateMode(enum NumberUpdateMode numberUpdateMode)
{
if (numberUpdateMode != mNumberUpdateMode) {
mNumberUpdateMode = numberUpdateMode;
Expand Down Expand Up @@ -312,7 +312,7 @@ void Config::initGeneralSettings()
mItemShadowEnabled = true;
mSmoothFactor = 7;
mSwitchToSelectToolAfterDrawingItem = false;
mNumberUpdateMode = NumberUpdateMode::UseNextNumber;
mNumberUpdateMode = NumberUpdateMode::UpdateOnlyNewNumbers;
}

QColor Config::loadToolColor(Tools toolType)
Expand Down
Loading

0 comments on commit da92674

Please sign in to comment.