diff --git a/basket.qrc b/basket.qrc
index 5ea4508..7c4ca67 100644
--- a/basket.qrc
+++ b/basket.qrc
@@ -1,32 +1,32 @@
images/tag_export_help.png
images/tag_export_on_every_lines_help.png
images/insertion_help.png
images/16-actions-likeback_bug.png
images/16-actions-likeback_dislike.png
images/16-actions-likeback_like.png
images/16-actions-likeback_feature.png
images/16-apps-basket.png
images/22-apps-basket.png
images/32-apps-basket.png
images/48-apps-basket.png
images/64-apps-basket.png
images/128-apps-basket.png
tags/16-actions-tag_checkbox.png
tags/16-actions-tag_checkbox_checked.png
- tags/16-actions-tag_for_later.png
- tags/16-actions-tag_fun.png
- tags/16-actions-tag_important.png
- tags/16-actions-tag_preference_bad.png
- tags/16-actions-tag_preference_excellent.png
- tags/16-actions-tag_preference_good.png
- tags/16-actions-tag_priority_high.png
- tags/16-actions-tag_priority_low.png
- tags/16-actions-tag_priority_medium.png
- tags/16-actions-tag_progress_000.png
- tags/16-actions-tag_progress_025.png
- tags/16-actions-tag_progress_075.png
- tags/16-actions-tag_progress_100.png
+ tags/sc-actions-tag_for_later.svgz
+ tags/sc-actions-tag_fun.svgz
+ tags/sc-actions-tag_important.svgz
+ tags/sc-actions-tag_preference_bad.svgz
+ tags/sc-actions-tag_preference_excellent.svgz
+ tags/sc-actions-tag_preference_good.svgz
+ tags/sc-actions-tag_priority_high.svgz
+ tags/sc-actions-tag_priority_low.svgz
+ tags/sc-actions-tag_priority_medium.svgz
+ tags/sc-actions-tag_progress_000.svgz
+ tags/sc-actions-tag_progress_025.svgz
+ tags/sc-actions-tag_progress_075.svgz
+ tags/sc-actions-tag_progress_100.svgz
diff --git a/src/tag.cpp b/src/tag.cpp
index 6a744a3..5401c72 100644
--- a/src/tag.cpp
+++ b/src/tag.cpp
@@ -1,763 +1,757 @@
/**
* SPDX-FileCopyrightText: (C) 2005 Sébastien Laoût
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "tag.h"
#include
-#include
#include
#include
+#include
#include
#include
#include
#include
#include
#include "basketscene.h"
#include "bnpview.h"
#include "debugwindow.h"
#include "gitwrapper.h"
#include "global.h"
#include "tools.h"
#include "xmlwork.h"
/** class State: */
State::State(const QString &id, Tag *tag)
: m_id(id)
, m_name()
, m_emblem()
, m_bold(false)
, m_italic(false)
, m_underline(false)
, m_strikeOut(false)
, m_textColor()
, m_fontName()
, m_fontSize(-1)
, m_backgroundColor()
, m_textEquivalent()
, m_onAllTextLines(false)
, m_allowCrossReferences(true)
, m_parentTag(tag)
{
}
State::~State()
{
}
State *State::nextState(bool cycle /*= true*/)
{
if (!parentTag())
return 0;
List states = parentTag()->states();
// The tag contains only one state:
if (states.count() == 1)
return 0;
// Find the next state:
for (List::iterator it = states.begin(); it != states.end(); ++it)
// Found the current state in the list:
if (*it == this) {
// Find the next state:
State *next = *(++it);
if (it == states.end())
return (cycle ? states.first() : 0);
return next;
}
// Should not happens:
Q_ASSERT(false);
return 0;
}
QString State::fullName()
{
if (!parentTag() || parentTag()->states().count() == 1)
return (name().isEmpty() && parentTag() ? parentTag()->name() : name());
return QString(i18n("%1: %2", parentTag()->name(), name()));
}
QFont State::font(QFont base)
{
if (bold())
base.setBold(true);
if (italic())
base.setItalic(true);
if (underline())
base.setUnderline(true);
if (strikeOut())
base.setStrikeOut(true);
if (!fontName().isEmpty())
base.setFamily(fontName());
if (fontSize() > 0)
base.setPointSize(fontSize());
return base;
}
QString State::toCSS(const QString &gradientFolderPath, const QString &gradientFolderName, const QFont &baseFont)
{
QString css;
if (bold())
css += " font-weight: bold;";
if (italic())
css += " font-style: italic;";
if (underline() && strikeOut())
css += " text-decoration: underline line-through;";
else if (underline())
css += " text-decoration: underline;";
else if (strikeOut())
css += " text-decoration: line-through;";
if (textColor().isValid())
css += " color: " + textColor().name() + ';';
if (!fontName().isEmpty()) {
QString fontFamily = Tools::cssFontDefinition(fontName(), /*onlyFontFamily=*/true);
css += " font-family: " + fontFamily + ';';
}
if (fontSize() > 0)
css += " font-size: " + QString::number(fontSize()) + "px;";
if (backgroundColor().isValid()) {
css += " background-color: " + backgroundColor().name() + ";";
}
if (css.isEmpty())
return "";
else
return " .tag_" + id() + " {" + css + " }\n";
}
void State::merge(const List &states, State *result, int *emblemsCount, bool *haveInvisibleTags, const QColor &backgroundColor)
{
*result = State(); // Reset to default values.
*emblemsCount = 0;
*haveInvisibleTags = false;
for (List::const_iterator it = states.begin(); it != states.end(); ++it) {
State *state = *it;
bool isVisible = false;
// For each property, if that properties have a value (is not default) is the current state of the list,
// and if it haven't been set to the result state by a previous state, then it's visible and we assign the property to the result state.
if (!state->emblem().isEmpty()) {
++*emblemsCount;
isVisible = true;
}
if (state->bold() && !result->bold()) {
result->setBold(true);
isVisible = true;
}
if (state->italic() && !result->italic()) {
result->setItalic(true);
isVisible = true;
}
if (state->underline() && !result->underline()) {
result->setUnderline(true);
isVisible = true;
}
if (state->strikeOut() && !result->strikeOut()) {
result->setStrikeOut(true);
isVisible = true;
}
if (state->textColor().isValid() && !result->textColor().isValid()) {
result->setTextColor(state->textColor());
isVisible = true;
}
if (!state->fontName().isEmpty() && result->fontName().isEmpty()) {
result->setFontName(state->fontName());
isVisible = true;
}
if (state->fontSize() > 0 && result->fontSize() <= 0) {
result->setFontSize(state->fontSize());
isVisible = true;
}
if (state->backgroundColor().isValid() && !result->backgroundColor().isValid() && state->backgroundColor() != backgroundColor) { // vv
result->setBackgroundColor(state->backgroundColor()); // This is particular: if the note background color is the same as the basket one, don't use that.
isVisible = true;
}
// If it's not visible, well, at least one tag is not visible: the note will display "..." at the tags arrow place to show that:
if (!isVisible)
*haveInvisibleTags = true;
}
}
void State::copyTo(State *other)
{
other->m_id = m_id;
other->m_name = m_name;
other->m_emblem = m_emblem;
other->m_bold = m_bold;
other->m_italic = m_italic;
other->m_underline = m_underline;
other->m_strikeOut = m_strikeOut;
other->m_textColor = m_textColor;
other->m_fontName = m_fontName;
other->m_fontSize = m_fontSize;
other->m_backgroundColor = m_backgroundColor;
other->m_textEquivalent = m_textEquivalent;
other->m_onAllTextLines = m_onAllTextLines; // TODO
other->m_allowCrossReferences = m_allowCrossReferences;
// TODO: other->m_parentTag;
}
/** class Tag: */
Tag::List Tag::all = Tag::List();
long Tag::nextStateUid = 1;
long Tag::getNextStateUid()
{
return nextStateUid++; // Return the next Uid and THEN increment the Uid
}
Tag::Tag()
{
static int tagNumber = 0;
++tagNumber;
QString sAction = "tag_shortcut_number_" + QString::number(tagNumber);
KActionCollection *ac = Global::bnpView->actionCollection();
m_action = ac->addAction(sAction, Global::bnpView, SLOT(activatedTagShortcut()));
m_action->setText("FAKE TEXT");
m_action->setIcon(QIcon::fromTheme("FAKE ICON"));
ac->setShortcutsConfigurable(m_action, false); // We do it in the tag properties dialog
m_inheritedBySiblings = false;
}
Tag::~Tag()
{
delete m_action;
}
void Tag::setName(const QString &name)
{
m_name = name;
m_action->setText("TAG SHORTCUT: " + name); // TODO: i18n (for debug purpose only by now).
}
State *Tag::stateForId(const QString &id)
{
for (List::iterator it = all.begin(); it != all.end(); ++it)
for (State::List::iterator it2 = (*it)->states().begin(); it2 != (*it)->states().end(); ++it2)
if ((*it2)->id() == id)
return *it2;
return 0;
}
Tag *Tag::tagForKAction(QAction *action)
{
for (List::iterator it = all.begin(); it != all.end(); ++it)
if ((*it)->m_action == action)
return *it;
return 0;
}
QMap Tag::loadTags(const QString &path /* = QString()*/ /*, bool merge = false*/)
{
QMap mergedStates;
bool merge = !path.isEmpty();
QString fullPath = (merge ? path : Global::savesFolder() + "tags.xml");
QString doctype = "basketTags";
QDir dir;
if (!dir.exists(fullPath)) {
if (merge)
return mergedStates;
DEBUG_WIN << "Tags file does not exist: Creating it...";
createDefaultTagsSet(fullPath);
}
QScopedPointer document(XMLWork::openFile(doctype, fullPath));
if (!document) {
DEBUG_WIN << "FAILED to read the tags file";
return mergedStates;
}
QDomElement docElem = document->documentElement();
if (!merge)
nextStateUid = docElem.attribute("nextStateUid", QString::number(nextStateUid)).toLong();
QDomNode node = docElem.firstChild();
while (!node.isNull()) {
QDomElement element = node.toElement();
if ((!element.isNull()) && element.tagName() == "tag") {
Tag *tag = new Tag();
// Load properties:
QString name = XMLWork::getElementText(element, "name");
QString shortcut = XMLWork::getElementText(element, "shortcut");
QString inherited = XMLWork::getElementText(element, "inherited", "false");
tag->setName(name);
tag->setShortcut(QKeySequence(shortcut));
tag->setInheritedBySiblings(XMLWork::trueOrFalse(inherited));
// Load states:
QDomNode subNode = element.firstChild();
while (!subNode.isNull()) {
QDomElement subElement = subNode.toElement();
if ((!subElement.isNull()) && subElement.tagName() == "state") {
State *state = new State(subElement.attribute("id"), tag);
state->setName(XMLWork::getElementText(subElement, "name"));
state->setEmblem(XMLWork::getElementText(subElement, "emblem"));
QDomElement textElement = XMLWork::getElement(subElement, "text");
state->setBold(XMLWork::trueOrFalse(textElement.attribute("bold", "false")));
state->setItalic(XMLWork::trueOrFalse(textElement.attribute("italic", "false")));
state->setUnderline(XMLWork::trueOrFalse(textElement.attribute("underline", "false")));
state->setStrikeOut(XMLWork::trueOrFalse(textElement.attribute("strikeOut", "false")));
QString textColor = textElement.attribute("color", "");
state->setTextColor(textColor.isEmpty() ? QColor() : QColor(textColor));
QDomElement fontElement = XMLWork::getElement(subElement, "font");
state->setFontName(fontElement.attribute("name", ""));
QString fontSize = fontElement.attribute("size", "");
state->setFontSize(fontSize.isEmpty() ? -1 : fontSize.toInt());
QString backgroundColor = XMLWork::getElementText(subElement, "backgroundColor", "");
state->setBackgroundColor(backgroundColor.isEmpty() ? QColor() : QColor(backgroundColor));
QDomElement textEquivalentElement = XMLWork::getElement(subElement, "textEquivalent");
state->setTextEquivalent(textEquivalentElement.attribute("string", ""));
state->setOnAllTextLines(XMLWork::trueOrFalse(textEquivalentElement.attribute("onAllTextLines", "false")));
QString allowXRef = XMLWork::getElementText(subElement, "allowCrossReferences", "true");
state->setAllowCrossReferences(XMLWork::trueOrFalse(allowXRef));
tag->appendState(state);
}
subNode = subNode.nextSibling();
}
// If the Tag is Valid:
if (tag->countStates() > 0) {
// Rename Things if Needed:
State *firstState = tag->states().first();
if (tag->countStates() == 1 && firstState->name().isEmpty())
firstState->setName(tag->name());
if (tag->name().isEmpty())
tag->setName(firstState->name());
// Add or Merge the Tag:
if (!merge) {
all.append(tag);
} else {
Tag *similarTag = tagSimilarTo(tag);
// Tag does not exists, add it:
if (similarTag == 0) {
// We are merging the new states, so we should choose new and unique (on that computer) ids for those states:
for (State::List::iterator it = tag->states().begin(); it != tag->states().end(); ++it) {
State *state = *it;
QString uid = state->id();
QString newUid = "tag_state_" + QString::number(getNextStateUid());
state->setId(newUid);
mergedStates[uid] = newUid;
}
// TODO: if shortcut is already assigned to a previous note, do not import it, keep the user settings!
all.append(tag);
// Tag already exists, rename to their ids:
} else {
State::List::iterator it2 = similarTag->states().begin();
for (State::List::iterator it = tag->states().begin(); it != tag->states().end(); ++it, ++it2) {
State *state = *it;
State *similarState = *it2;
QString uid = state->id();
QString newUid = similarState->id();
if (uid != newUid)
mergedStates[uid] = newUid;
}
delete tag; // Already exists, not to be merged. Delete the shortcut and all.
}
}
}
}
node = node.nextSibling();
}
return mergedStates;
}
Tag *Tag::tagSimilarTo(Tag *tagToTest)
{
// Tags are considered similar if they have the same name, the same number of states, in the same order, and the same look.
// Keyboard shortcut, text equivalent and onEveryLines are user settings, and thus not considered during the comparison.
// Default tags (To Do, Important, Idea...) do not take into account the name of the tag and states during the comparison.
// Default tags are equal only if they have the same number of states, in the same order, and the same look.
// This is because default tag names are translated differently in every countries, but they are essentially the same!
// User tags begins with "tag_state_" followed by a number. Default tags are the other ones.
// Browse all tags:
for (List::iterator it = all.begin(); it != all.end(); ++it) {
Tag *tag = *it;
bool same = true;
bool sameName;
bool defaultTag = true;
// We test only name and look. Shortcut and whenever it is inherited by sibling new notes are user settings only!
sameName = tag->name() == tagToTest->name();
if (tag->countStates() != tagToTest->countStates())
continue; // Tag is different!
// We found a tag with same name, check if every states/look are same too:
State::List::iterator itTest = tagToTest->states().begin();
for (State::List::iterator it2 = (*it)->states().begin(); it2 != (*it)->states().end(); ++it2, ++itTest) {
State *state = *it2;
State *stateToTest = *itTest;
if (state->id().startsWith(QLatin1String("tag_state_")) || stateToTest->id().startsWith(QLatin1String("tag_state_"))) {
defaultTag = false;
}
if (state->name() != stateToTest->name()) {
sameName = false;
}
if (state->emblem() != stateToTest->emblem()) {
same = false;
break;
}
if (state->bold() != stateToTest->bold()) {
same = false;
break;
}
if (state->italic() != stateToTest->italic()) {
same = false;
break;
}
if (state->underline() != stateToTest->underline()) {
same = false;
break;
}
if (state->strikeOut() != stateToTest->strikeOut()) {
same = false;
break;
}
if (state->textColor() != stateToTest->textColor()) {
same = false;
break;
}
if (state->fontName() != stateToTest->fontName()) {
same = false;
break;
}
if (state->fontSize() != stateToTest->fontSize()) {
same = false;
break;
}
if (state->backgroundColor() != stateToTest->backgroundColor()) {
same = false;
break;
}
// Text equivalent (as well as onAllTextLines) is also a user setting!
}
// We found an existing tag that is "exactly" the same:
if (same && (sameName || defaultTag))
return tag;
}
// Not found:
return 0;
}
void Tag::saveTags()
{
DEBUG_WIN << "Saving tags...";
saveTagsTo(all, Global::savesFolder() + "tags.xml");
GitWrapper::commitTagsXml();
}
void Tag::saveTagsTo(QList &list, const QString &fullPath)
{
// Create Document:
QDomDocument document(/*doctype=*/"basketTags");
QDomElement root = document.createElement("basketTags");
root.setAttribute("nextStateUid", static_cast(nextStateUid));
document.appendChild(root);
// Save all tags:
for (List::iterator it = list.begin(); it != list.end(); ++it) {
Tag *tag = *it;
// Create tag node:
QDomElement tagNode = document.createElement("tag");
root.appendChild(tagNode);
// Save tag properties:
XMLWork::addElement(document, tagNode, "name", tag->name());
XMLWork::addElement(document, tagNode, "shortcut", tag->shortcut().toString());
XMLWork::addElement(document, tagNode, "inherited", XMLWork::trueOrFalse(tag->inheritedBySiblings()));
// Save all states:
for (State::List::iterator it2 = (*it)->states().begin(); it2 != (*it)->states().end(); ++it2) {
State *state = *it2;
// Create state node:
QDomElement stateNode = document.createElement("state");
tagNode.appendChild(stateNode);
// Save state properties:
stateNode.setAttribute("id", state->id());
XMLWork::addElement(document, stateNode, "name", state->name());
XMLWork::addElement(document, stateNode, "emblem", state->emblem());
QDomElement textNode = document.createElement("text");
stateNode.appendChild(textNode);
QString textColor = (state->textColor().isValid() ? state->textColor().name() : "");
textNode.setAttribute("bold", XMLWork::trueOrFalse(state->bold()));
textNode.setAttribute("italic", XMLWork::trueOrFalse(state->italic()));
textNode.setAttribute("underline", XMLWork::trueOrFalse(state->underline()));
textNode.setAttribute("strikeOut", XMLWork::trueOrFalse(state->strikeOut()));
textNode.setAttribute("color", textColor);
QDomElement fontNode = document.createElement("font");
stateNode.appendChild(fontNode);
fontNode.setAttribute("name", state->fontName());
fontNode.setAttribute("size", state->fontSize());
QString backgroundColor = (state->backgroundColor().isValid() ? state->backgroundColor().name() : "");
XMLWork::addElement(document, stateNode, "backgroundColor", backgroundColor);
QDomElement textEquivalentNode = document.createElement("textEquivalent");
stateNode.appendChild(textEquivalentNode);
textEquivalentNode.setAttribute("string", state->textEquivalent());
textEquivalentNode.setAttribute("onAllTextLines", XMLWork::trueOrFalse(state->onAllTextLines()));
XMLWork::addElement(document, stateNode, "allowCrossReferences", XMLWork::trueOrFalse(state->allowCrossReferences()));
}
}
// Write to Disk:
if (!BasketScene::safelySaveToFile(fullPath, "\n" + document.toString()))
DEBUG_WIN << "FAILED to save tags!";
}
void Tag::copyTo(Tag *other)
{
other->m_name = m_name;
other->m_action->setShortcut(m_action->shortcut());
other->m_inheritedBySiblings = m_inheritedBySiblings;
}
void Tag::createDefaultTagsSet(const QString &fullPath)
{
QString xml = QString(
"\n"
"\n"
" \n"
" %1\n" // "To Do"
" Ctrl+1\n"
" true\n"
" \n"
" %2\n" // "Unchecked"
" tag_checkbox\n"
" \n"
" \n"
" \n"
" \n"
" \n"
" \n"
" %3\n" // "Done"
" tag_checkbox_checked\n"
" \n"
" \n"
" \n"
" \n"
" \n"
" \n"
"\n"
" \n"
" %4\n" // "Progress"
" Ctrl+2\n"
" true\n"
" \n"
" %5\n" // "0 %"
" tag_progress_000\n"
" \n"
" \n"
" \n"
" %6\n" // "25 %"
" tag_progress_025\n"
" \n"
" \n"
" \n"
" %7\n" // "50 %"
" tag_progress_050\n"
" \n"
" \n"
" \n"
" %8\n" // "75 %"
" tag_progress_075\n"
" \n"
" \n"
" \n"
" %9\n" // "100 %"
" tag_progress_100\n"
" \n"
" \n"
" \n"
"\n")
.arg(i18n("To Do"), i18n("Unchecked"), i18n("Done")) // %1 %2 %3
.arg(i18n("Progress"), i18n("0 %"), i18n("25 %")) // %4 %5 %6
.arg(i18n("50 %"), i18n("75 %"), i18n("100 %")) // %7 %8 %9
+ QString(
" \n"
" %1\n" // "Priority"
" Ctrl+3\n"
" true\n"
" \n"
" %2\n" // "Low"
" tag_priority_low\n"
" \n"
" \n"
" \n"
" %3\n" // "Medium
" tag_priority_medium\n"
" \n"
" \n"
" \n"
" %4\n" // "High"
" tag_priority_high\n"
" \n"
" \n"
" \n"
"\n"
" \n"
" %5\n" // "Preference"
" Ctrl+4\n"
" true\n"
" \n"
" %6\n" // "Bad"
" tag_preference_bad\n"
" \n"
" \n"
" \n"
" %7\n" // "Good"
" tag_preference_good\n"
" \n"
" \n"
" \n"
" %8\n" // "Excellent"
" tag_preference_excellent\n"
" \n"
" \n"
" \n"
"\n"
" \n"
" %9\n" // "Highlight"
" Ctrl+5\n"
" \n"
" #ffffcc\n"
" \" />\n"
" \n"
" \n"
"\n")
.arg(i18n("Priority"), i18n("Low"), i18n("Medium")) // %1 %2 %3
.arg(i18n("High"), i18n("Preference"), i18n("Bad")) // %4 %5 %6
.arg(i18n("Good"), i18n("Excellent"), i18n("Highlight")) // %7 %8 %9
+ QString(
" \n"
" %1\n" // "Important"
" Ctrl+6\n"
" \n"
" tag_important\n"
" #ffcccc\n"
" \n"
" \n"
" \n"
"\n"
" \n"
" %2\n" // "Very Important"
" Ctrl+7\n"
" \n"
" tag_important\n"
" \n"
" #ff0000\n"
" \n"
" \n"
" \n"
"\n"
" \n"
" %3\n" // "Information"
" Ctrl+8\n"
" \n"
" dialog-information\n"
" \n"
" \n"
" \n"
"\n"
" \n"
" %4\n" // "Idea"
" Ctrl+9\n"
" \n"
" ktip\n"
" \n" // I.
" \n"
" "
"\n"
"\n"
" \n"
" %6\n" // "Title"
" Ctrl+0\n"
" \n"
" \n"
" \n"
" \n"
" \n"
"\n"
" \n"
" %7\n" // "Code"
" \n"
" \n"
" \n"
" false\n"
" \n"
" \n"
"\n"
" \n"
" \n"
" %8\n" // "Work"
" \n"
" \n" // W.
" \n"
" "
"\n"
"\n")
.arg(i18n("Important"), i18n("Very Important"), i18n("Information")) // %1 %2 %3
.arg(i18n("Idea"), i18nc("The initial of 'Idea'", "I."), i18n("Title")) // %4 %5 %6
.arg(i18n("Code"), i18n("Work"), i18nc("The initial of 'Work'", "W.")) // %7 %8 %9
+ QString(
" \n"
" \n"
" %1\n" // "Personal"
" \n"
" \n" // P.
" \n"
" \n"
"\n"
" \n"
" \n"
" %3\n" // "Funny"
" tag_fun\n"
" \n"
" \n"
"\n"
"")
.arg(i18n("Personal"), i18nc("The initial of 'Personal'", "P."), i18n("Funny")); // %1 %2 %3
// Write to Disk:
QFile file(fullPath);
if (file.open(QIODevice::WriteOnly)) {
QTextStream stream(&file);
stream.setCodec("UTF-8");
stream << "\n";
stream << xml;
file.close();
} else
DEBUG_WIN << "FAILED to create the tags file!";
}
// StateAction
StateAction::StateAction(State *state, const QKeySequence &shortcut, QWidget *parent, bool withTagName)
: KToggleAction(parent)
, m_state(state)
{
setText(m_state->name());
if (withTagName && m_state->parentTag())
setText(m_state->parentTag()->name());
- setIcon(KIconLoader::global()->loadIcon(m_state->emblem(),
- KIconLoader::Small,
- 16,
- KIconLoader::DefaultState,
- QStringList(),
- /*path_store=*/0L,
- /*canReturnNull=*/true));
+ setIcon(QIcon(m_state->emblem()));
setShortcut(shortcut);
}
StateAction::~StateAction()
{
// pass
}
diff --git a/tags/16-actions-tag_for_later.png b/tags/16-actions-tag_for_later.png
deleted file mode 100644
index c9af55b..0000000
Binary files a/tags/16-actions-tag_for_later.png and /dev/null differ
diff --git a/tags/16-actions-tag_fun.png b/tags/16-actions-tag_fun.png
deleted file mode 100644
index 50f1c6c..0000000
Binary files a/tags/16-actions-tag_fun.png and /dev/null differ
diff --git a/tags/16-actions-tag_important.png b/tags/16-actions-tag_important.png
deleted file mode 100644
index 3095ef8..0000000
Binary files a/tags/16-actions-tag_important.png and /dev/null differ
diff --git a/tags/16-actions-tag_preference_bad.png b/tags/16-actions-tag_preference_bad.png
deleted file mode 100644
index 1bb8e48..0000000
Binary files a/tags/16-actions-tag_preference_bad.png and /dev/null differ
diff --git a/tags/16-actions-tag_preference_excellent.png b/tags/16-actions-tag_preference_excellent.png
deleted file mode 100644
index 466a999..0000000
Binary files a/tags/16-actions-tag_preference_excellent.png and /dev/null differ
diff --git a/tags/16-actions-tag_preference_good.png b/tags/16-actions-tag_preference_good.png
deleted file mode 100644
index 3354acb..0000000
Binary files a/tags/16-actions-tag_preference_good.png and /dev/null differ
diff --git a/tags/16-actions-tag_priority_high.png b/tags/16-actions-tag_priority_high.png
deleted file mode 100644
index e00e327..0000000
Binary files a/tags/16-actions-tag_priority_high.png and /dev/null differ
diff --git a/tags/16-actions-tag_priority_low.png b/tags/16-actions-tag_priority_low.png
deleted file mode 100644
index 9a769f1..0000000
Binary files a/tags/16-actions-tag_priority_low.png and /dev/null differ
diff --git a/tags/16-actions-tag_priority_medium.png b/tags/16-actions-tag_priority_medium.png
deleted file mode 100644
index 0fcdb1b..0000000
Binary files a/tags/16-actions-tag_priority_medium.png and /dev/null differ
diff --git a/tags/16-actions-tag_progress_000.png b/tags/16-actions-tag_progress_000.png
deleted file mode 100644
index dd3b750..0000000
Binary files a/tags/16-actions-tag_progress_000.png and /dev/null differ
diff --git a/tags/16-actions-tag_progress_025.png b/tags/16-actions-tag_progress_025.png
deleted file mode 100644
index 7b8de1b..0000000
Binary files a/tags/16-actions-tag_progress_025.png and /dev/null differ
diff --git a/tags/16-actions-tag_progress_050.png b/tags/16-actions-tag_progress_050.png
deleted file mode 100644
index cbbfea1..0000000
Binary files a/tags/16-actions-tag_progress_050.png and /dev/null differ
diff --git a/tags/16-actions-tag_progress_075.png b/tags/16-actions-tag_progress_075.png
deleted file mode 100644
index c648c44..0000000
Binary files a/tags/16-actions-tag_progress_075.png and /dev/null differ
diff --git a/tags/16-actions-tag_progress_100.png b/tags/16-actions-tag_progress_100.png
deleted file mode 100644
index 2483cce..0000000
Binary files a/tags/16-actions-tag_progress_100.png and /dev/null differ
diff --git a/tags/CMakeLists.txt b/tags/CMakeLists.txt
index bf0d3b1..2b76465 100644
--- a/tags/CMakeLists.txt
+++ b/tags/CMakeLists.txt
@@ -1,20 +1,20 @@
ecm_install_icons(ICONS
16-actions-tag_checkbox.png
16-actions-tag_checkbox_checked.png
- 16-actions-tag_for_later.png
- 16-actions-tag_fun.png
- 16-actions-tag_important.png
- 16-actions-tag_preference_bad.png
- 16-actions-tag_preference_excellent.png
- 16-actions-tag_preference_good.png
- 16-actions-tag_priority_high.png
- 16-actions-tag_priority_low.png
- 16-actions-tag_priority_medium.png
- 16-actions-tag_progress_000.png
- 16-actions-tag_progress_025.png
- 16-actions-tag_progress_050.png
- 16-actions-tag_progress_075.png
- 16-actions-tag_progress_100.png
+ sc-actions-tag_for_later.svgz
+ sc-actions-tag_fun.svgz
+ sc-actions-tag_important.svgz
+ sc-actions-tag_preference_bad.svgz
+ sc-actions-tag_preference_excellent.svgz
+ sc-actions-tag_preference_good.svgz
+ sc-actions-tag_priority_high.svgz
+ sc-actions-tag_priority_low.svgz
+ sc-actions-tag_priority_medium.svgz
+ sc-actions-tag_progress_000.svgz
+ sc-actions-tag_progress_025.svgz
+ sc-actions-tag_progress_050.svgz
+ sc-actions-tag_progress_075.svgz
+ sc-actions-tag_progress_100.svgz
DESTINATION ${ICON_INSTALL_DIR}
THEME hicolor
)
diff --git a/tags/sc-actions-tag_for_later.svgz b/tags/sc-actions-tag_for_later.svgz
new file mode 100644
index 0000000..934f7f3
Binary files /dev/null and b/tags/sc-actions-tag_for_later.svgz differ
diff --git a/tags/sc-actions-tag_for_later.svgz.license b/tags/sc-actions-tag_for_later.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_for_later.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_fun.svgz b/tags/sc-actions-tag_fun.svgz
new file mode 100644
index 0000000..fa78b88
Binary files /dev/null and b/tags/sc-actions-tag_fun.svgz differ
diff --git a/tags/sc-actions-tag_fun.svgz.license b/tags/sc-actions-tag_fun.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_fun.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_important.svgz b/tags/sc-actions-tag_important.svgz
new file mode 100644
index 0000000..3ee682c
Binary files /dev/null and b/tags/sc-actions-tag_important.svgz differ
diff --git a/tags/sc-actions-tag_important.svgz.license b/tags/sc-actions-tag_important.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_important.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_preference_bad.svgz b/tags/sc-actions-tag_preference_bad.svgz
new file mode 100644
index 0000000..90bc93d
Binary files /dev/null and b/tags/sc-actions-tag_preference_bad.svgz differ
diff --git a/tags/sc-actions-tag_preference_bad.svgz.license b/tags/sc-actions-tag_preference_bad.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_preference_bad.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_preference_excellent.svgz b/tags/sc-actions-tag_preference_excellent.svgz
new file mode 100644
index 0000000..b395f05
Binary files /dev/null and b/tags/sc-actions-tag_preference_excellent.svgz differ
diff --git a/tags/sc-actions-tag_preference_excellent.svgz.license b/tags/sc-actions-tag_preference_excellent.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_preference_excellent.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_preference_good.svgz b/tags/sc-actions-tag_preference_good.svgz
new file mode 100644
index 0000000..1160ce5
Binary files /dev/null and b/tags/sc-actions-tag_preference_good.svgz differ
diff --git a/tags/sc-actions-tag_preference_good.svgz.license b/tags/sc-actions-tag_preference_good.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_preference_good.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_priority_high.svgz b/tags/sc-actions-tag_priority_high.svgz
new file mode 100644
index 0000000..302e489
Binary files /dev/null and b/tags/sc-actions-tag_priority_high.svgz differ
diff --git a/tags/sc-actions-tag_priority_high.svgz.license b/tags/sc-actions-tag_priority_high.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_priority_high.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_priority_low.svgz b/tags/sc-actions-tag_priority_low.svgz
new file mode 100644
index 0000000..d4a273f
Binary files /dev/null and b/tags/sc-actions-tag_priority_low.svgz differ
diff --git a/tags/sc-actions-tag_priority_low.svgz.license b/tags/sc-actions-tag_priority_low.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_priority_low.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_priority_medium.svgz b/tags/sc-actions-tag_priority_medium.svgz
new file mode 100644
index 0000000..60b5f47
Binary files /dev/null and b/tags/sc-actions-tag_priority_medium.svgz differ
diff --git a/tags/sc-actions-tag_priority_medium.svgz.license b/tags/sc-actions-tag_priority_medium.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_priority_medium.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_progress_000.svgz b/tags/sc-actions-tag_progress_000.svgz
new file mode 100644
index 0000000..a4ddc50
Binary files /dev/null and b/tags/sc-actions-tag_progress_000.svgz differ
diff --git a/tags/sc-actions-tag_progress_000.svgz.license b/tags/sc-actions-tag_progress_000.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_progress_000.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_progress_025.svgz b/tags/sc-actions-tag_progress_025.svgz
new file mode 100644
index 0000000..d36671e
Binary files /dev/null and b/tags/sc-actions-tag_progress_025.svgz differ
diff --git a/tags/sc-actions-tag_progress_025.svgz.license b/tags/sc-actions-tag_progress_025.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_progress_025.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_progress_050.svgz b/tags/sc-actions-tag_progress_050.svgz
new file mode 100644
index 0000000..ef857c9
Binary files /dev/null and b/tags/sc-actions-tag_progress_050.svgz differ
diff --git a/tags/sc-actions-tag_progress_050.svgz.license b/tags/sc-actions-tag_progress_050.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_progress_050.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_progress_075.svgz b/tags/sc-actions-tag_progress_075.svgz
new file mode 100644
index 0000000..decc804
Binary files /dev/null and b/tags/sc-actions-tag_progress_075.svgz differ
diff --git a/tags/sc-actions-tag_progress_075.svgz.license b/tags/sc-actions-tag_progress_075.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_progress_075.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file
diff --git a/tags/sc-actions-tag_progress_100.svgz b/tags/sc-actions-tag_progress_100.svgz
new file mode 100644
index 0000000..86dcc6d
Binary files /dev/null and b/tags/sc-actions-tag_progress_100.svgz differ
diff --git a/tags/sc-actions-tag_progress_100.svgz.license b/tags/sc-actions-tag_progress_100.svgz.license
new file mode 100644
index 0000000..82e5a9b
--- /dev/null
+++ b/tags/sc-actions-tag_progress_100.svgz.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2020 (C) Manuel Jesús de la Fuente
+
+SPDX-License-Identifier: LGPL-2.1-or-later
\ No newline at end of file