Skip to content

Commit

Permalink
Merge branch 'issue-42' of git://github.com/fnkabit/kImageAnnotator i…
Browse files Browse the repository at this point in the history
…nto fnkabit-issue-42
  • Loading branch information
DamirPorobic committed Dec 26, 2020
2 parents fb6f39c + 02a8d7d commit 1d3edd5
Show file tree
Hide file tree
Showing 11 changed files with 126 additions and 9 deletions.
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,10 @@ 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
2 changes: 2 additions & 0 deletions include/kImageAnnotator/KImageAnnotator.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

#include <QWidget>

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

namespace kImageAnnotator {
Expand Down Expand Up @@ -61,6 +62,7 @@ public Q_SLOTS:
void setSaveToolSelection(bool enabled);
void setSmoothFactor(int factor);
void setSwitchToSelectToolAfterDrawingItem(bool enabled);
void setNumberUpdateMode(NumberUpdateMode numberUpdateMode);
void setTabBarAutoHide(bool enabled);
void removeTab(int index);
void setStickers(const QStringList &stickerPaths, bool keepDefault);
Expand Down
2 changes: 2 additions & 0 deletions src/annotations/core/AnnotationArea.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ 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
14 changes: 14 additions & 0 deletions src/annotations/core/AnnotationItemFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,20 @@ int AnnotationItemFactory::firstBadgeNumber() const
return mNumberManager->firstNumber();
}

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
6 changes: 6 additions & 0 deletions src/annotations/core/AnnotationItemFactory.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#include "src/annotations/items/AnnotationSticker.h"
#include "src/annotations/misc/NumberManager.h"
#include "src/common/enum/Tools.h"
#include "src/common/enum/NumberUpdateMode.h"

namespace kImageAnnotator {

Expand All @@ -54,15 +55,20 @@ Q_OBJECT
void reset();
void setFirstBadgeNumber(int number);
int firstBadgeNumber() const;
void setConfig(Config *config);
AbstractAnnotationItem *create(const QPointF &initPosition);
AbstractAnnotationItem *create(const QPointF &initPosition, const QPixmap &image);
AbstractAnnotationItem *clone(const AbstractAnnotationItem *item);

private slots:
void setNumberUpdateMode(NumberUpdateMode numberUpdateMode);

private:
int mNextZValue;
AnnotationPropertiesFactory *mPropertiesFactory;
AbstractSettingsProvider *mSettingsProvider;
NumberManager *mNumberManager;
Config *mConfig;

AbstractAnnotationItem *createItem(const QPointF &initPosition, const Tools &toolType, const PropertiesPtr &properties);
AbstractAnnotationItem *cloneItem(const AbstractAnnotationItem *item);
Expand Down
33 changes: 27 additions & 6 deletions src/annotations/misc/NumberManager.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2018 Damir Porobic <[email protected]>
* Copyright (C) 2020 Damir Porobic <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
Expand All @@ -22,7 +22,8 @@
namespace kImageAnnotator {

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

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

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

if (mNumberUpdateMode == NumberUpdateMode::UseNextNumber) {
updateNumbersIfRequired();
} else {
initItemNumber(item);
}
}

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

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

void NumberManager::updateNumbers()
void NumberManager::updateNumbersIfRequired()
{
if (mNumberUpdateMode == NumberUpdateMode::UseStartingNumber) {
return;
}

auto number = mFirstNumber;
for (auto item : mItems) {
if (item->isVisible()) {
Expand All @@ -69,12 +85,17 @@ void NumberManager::updateNumbers()
void NumberManager::setFirstNumber(int number)
{
mFirstNumber = number;
updateNumbers();
updateNumbersIfRequired();
}

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

void NumberManager::setNumberUpdateMode(NumberUpdateMode numberUpdateMode)
{
mNumberUpdateMode = numberUpdateMode;
}

} // namespace kImageAnnotator
8 changes: 6 additions & 2 deletions src/annotations/misc/NumberManager.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2018 Damir Porobic <[email protected]>
* Copyright (C) 2020 Damir Porobic <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
Expand All @@ -22,6 +22,7 @@

#include <QObject>

#include "src/common/enum/NumberUpdateMode.h"
#include "src/annotations/items/AnnotationNumber.h"
#include "src/annotations/items/AnnotationNumberPointer.h"
#include "src/annotations/items/AnnotationNumberArrow.h"
Expand All @@ -40,15 +41,18 @@ Q_OBJECT
void reset();
void setFirstNumber(int number);
int firstNumber() const;
void setNumberUpdateMode(NumberUpdateMode numberUpdateMode);

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

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

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

} // namepsace kImageAnnotator
Expand Down
17 changes: 16 additions & 1 deletion src/backend/Config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ Config::Config() :
mSmoothPathEnabled(false),
mSaveToolSelection(false),
mSmoothFactor(0),
mSwitchToSelectToolAfterDrawingItem(false)
mSwitchToSelectToolAfterDrawingItem(false),
mNumberUpdateMode(NumberUpdateMode::UseNextNumber)
{
mAllTools = QList<Tools>{
Tools::Pen,
Expand Down Expand Up @@ -211,6 +212,19 @@ void Config::setSwitchToSelectToolAfterDrawingItem(bool enabled)
mSwitchToSelectToolAfterDrawingItem = enabled;
}

NumberUpdateMode Config::numberUpdateMode() const
{
return mNumberUpdateMode;
}

void Config::setNumberUpdateMode(enum NumberUpdateMode numberUpdateMode)
{
if (numberUpdateMode != mNumberUpdateMode) {
mNumberUpdateMode = numberUpdateMode;
emit numberUpdateModeChanged(numberUpdateMode);
}
}

int Config::obfuscationFactor(Tools toolType) const
{
return mToolToObfuscationFactor[toolType];
Expand Down Expand Up @@ -298,6 +312,7 @@ void Config::initGeneralSettings()
mItemShadowEnabled = true;
mSmoothFactor = 7;
mSwitchToSelectToolAfterDrawingItem = false;
mNumberUpdateMode = NumberUpdateMode::UseNextNumber;
}

QColor Config::loadToolColor(Tools toolType)
Expand Down
8 changes: 8 additions & 0 deletions src/backend/Config.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

#include "src/common/enum/Tools.h"
#include "src/common/enum/FillModes.h"
#include "src/common/enum/NumberUpdateMode.h"
#include "src/common/helper/ConfigNameHelper.h"

namespace kImageAnnotator {
Expand Down Expand Up @@ -77,9 +78,15 @@ public slots:
bool switchToSelectToolAfterDrawingItem() const;
void setSwitchToSelectToolAfterDrawingItem(bool enabled);

NumberUpdateMode numberUpdateMode() const;
void setNumberUpdateMode(enum NumberUpdateMode numberUpdateMode);

int obfuscationFactor(Tools toolType) const;
void setObfuscationFactor(int factor, Tools toolType);

signals:
void numberUpdateModeChanged(enum NumberUpdateMode numberUpdateMode) const;

private:
QSettings mConfig;
QList<Tools> mAllTools;
Expand All @@ -95,6 +102,7 @@ public slots:
bool mSaveToolSelection;
int mSmoothFactor;
bool mSwitchToSelectToolAfterDrawingItem;
NumberUpdateMode mNumberUpdateMode;

void initToolSettings();
void initSelectedTool();
Expand Down
35 changes: 35 additions & 0 deletions src/common/enum/NumberUpdateMode.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright (C) 2020 Damir Porobic <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/

#ifndef KIMAGEANNOTATOR_NUMBERUPDATEMODE_H
#define KIMAGEANNOTATOR_NUMBERUPDATEMODE_H

#include <QMetaType>

namespace kImageAnnotator {

enum class NumberUpdateMode
{
UseStartingNumber,
UseNextNumber
};

} // namespace kImageAnnotator

#endif // KIMAGEANNOTATOR_NUMBERUPDATEMODE_H
6 changes: 6 additions & 0 deletions src/gui/KImageAnnotator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,12 @@ void KImageAnnotator::setSwitchToSelectToolAfterDrawingItem(bool enabled)
d->mConfig.setSwitchToSelectToolAfterDrawingItem(enabled);
}

void KImageAnnotator::setNumberUpdateMode(NumberUpdateMode numberUpdateMode)
{
Q_D(KImageAnnotator);
d->mConfig.setNumberUpdateMode(numberUpdateMode);
}

void KImageAnnotator::setTabBarAutoHide(bool enabled)
{
Q_D(KImageAnnotator);
Expand Down

0 comments on commit 1d3edd5

Please sign in to comment.