From aecf9bea0c9e19c29f4940d8a2caf0e5afb80803 Mon Sep 17 00:00:00 2001 From: Per Viberg Date: Mon, 3 Feb 2014 15:04:26 +0100 Subject: [PATCH 1/2] added theme file theme.th to resources/icons/ --- resources/icons/theme.th | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 resources/icons/theme.th diff --git a/resources/icons/theme.th b/resources/icons/theme.th new file mode 100644 index 0000000..1bf5625 --- /dev/null +++ b/resources/icons/theme.th @@ -0,0 +1,31 @@ + +# theme file format: +# - paths to emoticon picture files must be relative to where this theme file is stored. +# - paths must start with a '/'. +# - enter emoticon after the [theme] line, one line per emoticon. +# - multiple textual representations of the same emoticon shall be separated by +# at least one space, i.e ' '. + + Name =defaultNameTheme + Author =author + Description =description + Version = version + Website =website + Icon =/emoticons/emotion_smile.png + +[theme] +/emoticons/emotion_smile.png :) :-) :o) +/emoticons/emotion_sad.png :( :-( +/emoticons/emotion_grin.png :D :-D +/emoticons/emotion_cool.png 8) 8-) +/emoticons/emotion_suprised.png :O :-O +/emoticons/emotion_wink.png ;) ;-) +/emoticons/emotion_cry.png ;( ;-( +/emoticons/emotion_sweat.png (:| +/emoticons/emotion_kiss.png :* :-* +/emoticons/emotion_tongue.png :P :-P +/emoticons/emotion_doubt.png :^) :^-) +/emoticons/emotion_love.png (inlove) +/emoticons/emotion_evilgrin.png ]:) ]:-) +/emoticons/emotion_angel.png O:) O:-) o:) o:-) (angel) + From 0940dfe693925e01374ee153caf0fa838a7a8694 Mon Sep 17 00:00:00 2001 From: looph Date: Mon, 3 Feb 2014 17:35:48 +0100 Subject: [PATCH 2/2] Moved default smiley pack outside executable to a default theme.th file --- resources/icons/theme.th | 6 ++-- src/Settings/guisettingspage.cpp | 58 +++++++++++++++----------------- src/Settings/guisettingspage.hpp | 3 +- src/smileypack.cpp | 28 ++++----------- src/smileypack.hpp | 3 +- 5 files changed, 40 insertions(+), 58 deletions(-) diff --git a/resources/icons/theme.th b/resources/icons/theme.th index 1bf5625..9199134 100644 --- a/resources/icons/theme.th +++ b/resources/icons/theme.th @@ -6,10 +6,10 @@ # - multiple textual representations of the same emoticon shall be separated by # at least one space, i.e ' '. - Name =defaultNameTheme - Author =author + Name =TOX Qt GUI Smileys + Author =FatCow Description =description - Version = version + Version = 1.0 Website =website Icon =/emoticons/emotion_smile.png diff --git a/src/Settings/guisettingspage.cpp b/src/Settings/guisettingspage.cpp index d62d3d7..5995282 100644 --- a/src/Settings/guisettingspage.cpp +++ b/src/Settings/guisettingspage.cpp @@ -67,17 +67,13 @@ void GuiSettingsPage::setGui() emojiPack.setEmoji(true); smileypackCombobox->addItem("☺ "+emojiPack.getName(), emojiPack.save()); - // Insert Default pack - Smileypack defaultPack; - defaultPack.setName("TOX Qt GUI Smileys"); - defaultPack.setAuthor("FatCow"); - defaultPack.setDescription("TODO: Design a default smileypack for TOX Qt GUI."); - defaultPack.setIcon(":/icons/emoticons/emotion_smile.png"); - defaultPack.setList(Smileypack::defaultList()); - smileypackCombobox->addItem(QIcon(defaultPack.getIcon()), defaultPack.getName(), defaultPack.save()); - // Insert smileypacks - searchSmileyPacks(); + // User defined smileypacks: + bool defaultSmileyPacks = false; + searchSmileyPacks(defaultSmileyPacks); + // Default smileypacks: + defaultSmileyPacks = true; + searchSmileyPacks(defaultSmileyPacks); // Load smileypack int index = smileypackCombobox->findData(settings.getSmileyPack()); @@ -134,34 +130,34 @@ QGroupBox *GuiSettingsPage::buildSmileypackGroup() return group; } -void GuiSettingsPage::searchSmileyPacks() +void GuiSettingsPage::searchSmileyPacks(bool defaultPackDir) { - // Go to smiley pack folder - QDir dir(Smileypack::packDir()); - if (!dir.mkpath(Smileypack::packDir())) - return; - - // Go through all packs - dir.setFilter(QDir::Dirs|QDir::NoDot|QDir::NoDotDot); - QDirIterator it(dir); - while (it.hasNext()) { - it.next(); - - // Check theme file - QFileInfo f(it.filePath() + '/' + "theme"); - if (!f.exists()) { - continue; - } - // Parse theme file + QDir themeFileDirectory; + + if(defaultPackDir){ + themeFileDirectory = QDir(Smileypack::defaultPackDirRelative()); + } + else{ + themeFileDirectory = QDir(Smileypack::packDir()); + } + // find theme files: + QStringList themeFiles; + QString themeFileSuffix = "*.th"; + themeFiles = themeFileDirectory.entryList(QStringList(themeFileSuffix), + QDir::Files | QDir::NoSymLinks); + // parse theme files: + for( auto themeFileName : themeFiles) + { + QString filePathToThemeFile = themeFileDirectory.absolutePath() + '/' + themeFileName; + // Parse theme file, fileInfo.absoluteFilePath() Smileypack newPack; - if (!newPack.parseFile(f.absoluteFilePath())) { + if (!newPack.parseFile(filePathToThemeFile)) { // not used by default since it's relative path continue; } - // Add new pack to combobox QVariant data(newPack.save()); - smileypackCombobox->addItem(QIcon(it.filePath() + '/' + newPack.getIcon()), newPack.getName(), data); + smileypackCombobox->addItem(QIcon(themeFileDirectory.absolutePath() + newPack.getIcon()), newPack.getName(), data); } } diff --git a/src/Settings/guisettingspage.hpp b/src/Settings/guisettingspage.hpp index 24d25f0..af0a753 100644 --- a/src/Settings/guisettingspage.hpp +++ b/src/Settings/guisettingspage.hpp @@ -18,6 +18,7 @@ #define GUISETTINGSPAGE_HPP #include "abstractsettingspage.hpp" +#include class QGroupBox; class QCheckBox; @@ -43,7 +44,7 @@ private slots: QGroupBox* buildAnimationGroup(); QGroupBox* buildSmileypackGroup(); - void searchSmileyPacks(); + void searchSmileyPacks(bool defaultPackDir); EmojiFontSettingsDialog *emojiSettings; diff --git a/src/smileypack.cpp b/src/smileypack.cpp index 8c0bb19..eac8ce2 100644 --- a/src/smileypack.cpp +++ b/src/smileypack.cpp @@ -240,28 +240,6 @@ const Smileypack::SmileyList Smileypack::emojiList() return tmpList; } -const Smileypack::SmileyList Smileypack::defaultList() -{ - static const SmileyList tmpList = - { - {":/icons/emoticons/emotion_smile.png", {":)", ":-)", ":o)"}}, - {":/icons/emoticons/emotion_sad.png", {":(", ":-("}}, - {":/icons/emoticons/emotion_grin.png", {":D", ":-D"}}, - {":/icons/emoticons/emotion_cool.png", {"8)", "8-)"}}, - {":/icons/emoticons/emotion_suprised.png", {":O", ":-O"}}, - {":/icons/emoticons/emotion_wink.png", {";)", ";-)"}}, - {":/icons/emoticons/emotion_cry.png", {";(", ";-("}}, - {":/icons/emoticons/emotion_sweat.png", {"(:|"}}, - {":/icons/emoticons/emotion_kiss.png", {":*", ":-*"}}, - {":/icons/emoticons/emotion_tongue.png", {":P", ":-P"}}, - {":/icons/emoticons/emotion_doubt.png", {":^)", ":^-)"}}, - {":/icons/emoticons/emotion_love.png", {"(inlove)"}}, - {":/icons/emoticons/emotion_evilgrin.png", {"]:)", "]:-)"}}, - {":/icons/emoticons/emotion_angel.png", {"O:)", "O:-)", "o:)", "o:-)", "(angel)"}} - }; - return tmpList; -} - bool Smileypack::parseFile(const QString &filePath) { // Open file @@ -355,6 +333,12 @@ const QString &Smileypack::packDir() return path; } +const QString &Smileypack::defaultPackDirRelative() +{ + static QString path = QString("../resources") + '/' + "icons"; + return path; +} + QDataStream &operator<<(QDataStream &out, const Smileypack &pack) { out << pack.getThemeFile() << pack.getName() << pack.getAuthor() << pack.getDescription() << pack.getVersion() << pack.getWebsite() << pack.getIcon() << pack.isEmoji(); diff --git a/src/smileypack.hpp b/src/smileypack.hpp index b411825..7c1dec9 100644 --- a/src/smileypack.hpp +++ b/src/smileypack.hpp @@ -57,12 +57,13 @@ class Smileypack : public QObject void setEmoji(bool x) { emoji = x; } static const QString& packDir(); + static const QString& defaultPackDirRelative(); static QString smilify(QString text); static QString desmilify(QString htmlText); static QString deemojify(QString text); static QString resizeEmoji(QString text); static const SmileyList emojiList(); - static const SmileyList defaultList(); +// static const SmileyList defaultList(); private: QString themeFile;