From b62c61e802787f8b26c41e91035963b4dc326f75 Mon Sep 17 00:00:00 2001
From: EndrII <EndrIIMail@gmail.com>
Date: Mon, 13 Sep 2021 15:21:20 +0300
Subject: [PATCH 1/3] ref #659 "change deploy icons logick"

---
 Deploy/Distributions/Templates/deb/DEBIAN/postinst |  2 +-
 .../qif/packages/default/meta/installscript.qs     |  4 ++--
 Deploy/Distributions/idistribution.cpp             | 14 ++++++++------
 Deploy/Distributions/idistribution.h               |  2 +-
 Deploy/Distributions/templateinfo.h                |  1 -
 Deploy/configparser.cpp                            |  4 ++--
 6 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/Deploy/Distributions/Templates/deb/DEBIAN/postinst b/Deploy/Distributions/Templates/deb/DEBIAN/postinst
index 7c3f55e..75d600c 100755
--- a/Deploy/Distributions/Templates/deb/DEBIAN/postinst
+++ b/Deploy/Distributions/Templates/deb/DEBIAN/postinst
@@ -21,7 +21,7 @@ function createShortCut {
         echo "Encoding=UTF-8" >> $DEST_FILE
         echo "Name=$DEST_NAME" >> $DEST_FILE
         echo "Type=Application" >> $DEST_FILE
-        echo "Icon=$CQT_INSTALL_DEB_DIR/$ICON" >> $DEST_FILE
+        echo "Icon=$CQT_INSTALL_DEB_DIR/icons/${SRC_FILE%%.*}.png" >> $DEST_FILE
         echo "Terminal=false" >> $DEST_FILE
         echo "Exec=$SRC_FILE" >> $DEST_FILE
 
diff --git a/Deploy/Distributions/Templates/qif/packages/default/meta/installscript.qs b/Deploy/Distributions/Templates/qif/packages/default/meta/installscript.qs
index 4a74850..98b8018 100644
--- a/Deploy/Distributions/Templates/qif/packages/default/meta/installscript.qs
+++ b/Deploy/Distributions/Templates/qif/packages/default/meta/installscript.qs
@@ -21,7 +21,7 @@ function generateShortCutCmd(cmd) {
             "CreateShortcut",
             "@TargetDir@/" + prefix + "/" + cmd,
             "@DesktopDir@/" + getBasename(cmd) + ".lnk",
-            "iconPath=@TargetDir@/$ICON",
+            "iconPath=@TargetDir@/" + prefix + "/icons/" + getBasename(cmd) + ".ico",
             "iconId=0");
 
     }
@@ -36,7 +36,7 @@ function generateShortCutCmd(cmd) {
                                 Terminal=false\n
                                 Exec=\"@TargetDir@/" + prefix + "/" + cmd + "\"\n
                                 Name=" + getBasename(cmd) + "\n
-                                Icon=@TargetDir@/$ICON\n
+                                Icon=@TargetDir@/" + prefix + "/icons/" + getBasename(cmd) + ".png\n
                                 Name[en_US]=" + getBasename(cmd));
 
         console.log("create icons!!! on LINUX done");
diff --git a/Deploy/Distributions/idistribution.cpp b/Deploy/Distributions/idistribution.cpp
index 30dcc7a..834dd36 100644
--- a/Deploy/Distributions/idistribution.cpp
+++ b/Deploy/Distributions/idistribution.cpp
@@ -70,7 +70,6 @@ bool iDistribution::unpackFile(const QFileInfo &resource,
         inputText.replace("$DESCRIPTION", info.Description);
         inputText.replace("$VERSION", info.Version);
         inputText.replace("$RELEASEDATA", info.ReleaseData);
-        inputText.replace("$ICON", info.Icon);
         inputText.replace("$PUBLISHER", info.Publisher);
         inputText.replace("$HOMEPAGE", info.Homepage);
         inputText.replace("$PREFIX", info.Prefix);
@@ -162,7 +161,7 @@ bool iDistribution::collectInfoWithDeployIcons(const DistroModule &pkg,
         return false;
     }
 
-    return deployIcon(info, pkg);
+    return deployIcon(pkg);
 
 }
 
@@ -272,11 +271,10 @@ QString iDistribution::getName(const DistroModule& pkg) const {
     return name;
 }
 
-bool iDistribution::deployIcon(TemplateInfo &info, const DistroModule& pkg) {
+bool iDistribution::deployIcon(const DistroModule& pkg) {
     auto localData = dataLocation(pkg);
     const DeployConfig *cfg = DeployCore::_config;
 
-    info.Icon = "icons/Icon.png";
     QSet<QString> icons;
     for (const auto& target: pkg.targets()) {
         auto targetObject = cfg->targets().value(target);
@@ -298,14 +296,18 @@ bool iDistribution::deployIcon(TemplateInfo &info, const DistroModule& pkg) {
             break;
 
         QFileInfo iconInfo(icon);
-        info.Icon = releativeLocation(pkg) + "/icons/" + iconInfo.fileName();
-        if (!copyFile(icon, localData + "/icons/", false)) {
+        QFileInfo runScript(targetObject.getRunScriptFile());
+
+        QString dist = localData + "/icons/" + runScript.baseName() + "/" + iconInfo.suffix();
+
+        if (!copyFile(icon, dist, true)) {
 
             QuasarAppUtils::Params::log(QString("Failed to copy icon: %0.").arg(icon),
                                         QuasarAppUtils::Error);
 
             return false;
         }
+
         icons += icon;
     }
 
diff --git a/Deploy/Distributions/idistribution.h b/Deploy/Distributions/idistribution.h
index 07dfa17..c690b92 100644
--- a/Deploy/Distributions/idistribution.h
+++ b/Deploy/Distributions/idistribution.h
@@ -105,7 +105,7 @@ protected:
      * @param pkg This is package info
      * @return true if this method finished successful.
      */
-    bool deployIcon(TemplateInfo &info, const DistroModule &pkg);
+    bool deployIcon(const DistroModule &pkg);
 
     /**
      * @brief dataLocation This method should be retrun location of application or package files.
diff --git a/Deploy/Distributions/templateinfo.h b/Deploy/Distributions/templateinfo.h
index 00fa591..1f503a2 100644
--- a/Deploy/Distributions/templateinfo.h
+++ b/Deploy/Distributions/templateinfo.h
@@ -14,7 +14,6 @@ struct DEPLOYSHARED_EXPORT TemplateInfo
     QString Description;
     QString Version;
     QString ReleaseData;
-    QString Icon;
     QString Publisher;
     QString Homepage;
     QString Prefix;
diff --git a/Deploy/configparser.cpp b/Deploy/configparser.cpp
index 0069a07..66df862 100644
--- a/Deploy/configparser.cpp
+++ b/Deploy/configparser.cpp
@@ -71,8 +71,8 @@ void parseTargetPrivate(DeployConfig& conf,
 
     auto &cointainer = conf.targetsEdit();
 
-    for (const auto &iconPair: inputParams) {
-        auto pair = iconPair.split(DeployCore::getSeparator(1), splitbehavior);
+    for (const auto &targetPair: inputParams) {
+        auto pair = targetPair.split(DeployCore::getSeparator(1), splitbehavior);
 
         if (pair.size() == 1) {
             QuasarAppUtils::Params::log(QString("Set new default property for all tagets: " + pair.value(0)),

From 886e93c2b44958d9a43c60132ec202f4112edbdd Mon Sep 17 00:00:00 2001
From: EndrII <EndrIIMail@gmail.com>
Date: Mon, 13 Sep 2021 15:27:08 +0300
Subject: [PATCH 2/3] added docs

---
 md/en/Options.md | 2 +-
 md/ru/Options.md | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/md/en/Options.md b/md/en/Options.md
index 6562328..25145ef 100644
--- a/md/en/Options.md
+++ b/md/en/Options.md
@@ -129,7 +129,7 @@ cqtdeployer -option1 value1 -option2 list, of, values ​​flag1 flag2 flag3
 
 | Option                      | Descriptiion                                              |
 |-----------------------------|-----------------------------------------------------------|
-|  -icon [target;val,val]    | Sets path to icon for a targets                           |
+|  -icon [target;val,val]    | Sets path to icon for a targets. This option support only png (Linux) and ico (Windows) files.  |
 |  -disableRunScript [target,target2,target3]  | Disables the generation of run script for selected targets|
 |  -disableShortCut [target,target2,target3]   | Disables the generation of shortcut for selected targets |
 |  -runScript [target;val,val]  | forces cqtdeployer swap default run script to new from the arguments of option. This option copy all content from input file and insert all code into runScript.sh or .bat. Example of use: cqtdeployer -runScript "myTargetMame;path/to/my/myCustomLaunchScript.sh,myTargetSecondMame;path/to/my/mySecondCustomLaunchScript.sh" For get more information about customScript see the documentation [page](CustomScripts.md)|
diff --git a/md/ru/Options.md b/md/ru/Options.md
index 1ef6bb2..380174b 100644
--- a/md/ru/Options.md
+++ b/md/ru/Options.md
@@ -125,7 +125,7 @@ cqtdeployer -option1 value1 -option2 list,of,values flag1 flag2 flag3
 
 | Option                      | Descriptiion                                              |
 |-----------------------------|-----------------------------------------------------------|
-|  -icon [target;val,val]     | Установит путь к иконке или логотипу для целе             |
+|  -icon [target;val,val]     | Установит путь к иконке или логотипу для целе. Эта комманда поддерживает только png файлы для Linux и ico файлы для Windows  |
 |  -disableRunScript [target; val, val]| Отключает создание сценария выполнения для выбранных целей |
 |  -disableShortCut [target; val, val] | Отключает создание ярлыков для выбранных целей | 
 |  -runScript [target; val, val]  | заставляет cqtdeployer заменить сценарий запуска по умолчанию на новый из аргументов параметра. Эта опция копирует все содержимое из входного файла и вставляет весь код в runScript.sh или .bat. Пример использования: cqtdeployer -runScript "myTargetMame;path/to/my/myCustomLaunchScript.sh,myTargetSecondMame;path/to/my/mySecondCustomLaunchScript.sh". Для получения дополнительной информации смотрите статью [Кастомные скрипты](CustomScripts.md)|

From 8d6c6603ed1972b32997c1676ee7e111f56da4d8 Mon Sep 17 00:00:00 2001
From: EndrII <EndrIIMail@gmail.com>
Date: Tue, 14 Sep 2021 09:44:18 +0300
Subject: [PATCH 3/3] monual tests is passed

---
 Deploy/Distributions/idistribution.cpp | 2 +-
 UnitTests/tst_deploytest.cpp           | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/Deploy/Distributions/idistribution.cpp b/Deploy/Distributions/idistribution.cpp
index 834dd36..ae4cc1c 100644
--- a/Deploy/Distributions/idistribution.cpp
+++ b/Deploy/Distributions/idistribution.cpp
@@ -298,7 +298,7 @@ bool iDistribution::deployIcon(const DistroModule& pkg) {
         QFileInfo iconInfo(icon);
         QFileInfo runScript(targetObject.getRunScriptFile());
 
-        QString dist = localData + "/icons/" + runScript.baseName() + "/" + iconInfo.suffix();
+        QString dist = localData + "/icons/" + runScript.baseName() + "." + iconInfo.suffix();
 
         if (!copyFile(icon, dist, true)) {
 
diff --git a/UnitTests/tst_deploytest.cpp b/UnitTests/tst_deploytest.cpp
index a2dbf45..bd4f76c 100644
--- a/UnitTests/tst_deploytest.cpp
+++ b/UnitTests/tst_deploytest.cpp
@@ -1315,7 +1315,6 @@ void deploytest::testIcons() {
 
 
     delete deploy;
-
 }
 
 void deploytest::testPathUtils() {