Browse Source

Merge pull request #286 from krepa098/master

added smiley selection to the new settings dialog...
pull/289/head
Tux3 / Mlkj / !Lev.uXFMLA 11 years ago
parent
commit
983260e836
  1. 36
      smileypack.cpp
  2. 9
      smileypack.h
  3. 23
      widget/settingsdialog.cpp

36
smileypack.cpp

@ -40,24 +40,38 @@ SmileyPack& SmileyPack::getInstance()
return smileyPack; return smileyPack;
} }
QList<QPair<QString, QString> > SmileyPack::listSmileyPacks(const QString &path) QList<QPair<QString, QString> > SmileyPack::listSmileyPacks(const QStringList &paths)
{ {
QList<QPair<QString, QString> > smileyPacks; QList<QPair<QString, QString> > smileyPacks;
QDir dir(path); for (QString path : paths)
foreach (const QString& subdirectory, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
{ {
dir.cd(subdirectory); if (path.leftRef(1) == "~")
path.replace(0, 1, QDir::homePath());
QFileInfoList entries = dir.entryInfoList(QStringList() << "emoticons.xml", QDir::Files); QDir dir(path);
if (entries.size() > 0) // does it contain a file called emoticons.xml? if (!dir.exists())
continue;
for (const QString& subdirectory : dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
{ {
QString packageName = dir.dirName(); dir.cd(subdirectory);
QString relPath = QDir(QCoreApplication::applicationDirPath()).relativeFilePath(entries[0].absoluteFilePath());
smileyPacks << QPair<QString, QString>(packageName, relPath); QFileInfoList entries = dir.entryInfoList(QStringList() << "emoticons.xml", QDir::Files);
if (entries.size() > 0) // does it contain a file called emoticons.xml?
{
QString packageName = dir.dirName();
QString absPath = entries[0].absoluteFilePath();
QString relPath = QDir(QCoreApplication::applicationDirPath()).relativeFilePath(absPath);
if (relPath.leftRef(2) == "..")
smileyPacks << QPair<QString, QString>(packageName, absPath);
else
smileyPacks << QPair<QString, QString>(packageName, relPath); // use relative path for subdirectories
}
dir.cdUp();
} }
dir.cdUp();
} }
return smileyPacks; return smileyPacks;

9
smileypack.h

@ -22,7 +22,10 @@
#include <QString> #include <QString>
#include <QStringList> #include <QStringList>
#define SMILEYPACK_DEFAULT_PATH "./smileys" #define SMILEYPACK_SEARCH_PATHS \
{ \
"./smileys", "/usr/share/qtox/smileys", "/usr/share/emoticons", "~/.kde4/share/emoticons", "~/.kde/share/emoticons" \
}
//maps emoticons to smileys //maps emoticons to smileys
class SmileyPack : public QObject class SmileyPack : public QObject
@ -30,10 +33,10 @@ class SmileyPack : public QObject
Q_OBJECT Q_OBJECT
public: public:
static SmileyPack& getInstance(); static SmileyPack& getInstance();
static QList<QPair<QString, QString>> listSmileyPacks(const QString& path = SMILEYPACK_DEFAULT_PATH); static QList<QPair<QString, QString> > listSmileyPacks(const QStringList& paths = SMILEYPACK_SEARCH_PATHS);
static bool isValid(const QString& filename); static bool isValid(const QString& filename);
bool load(const QString &filename); bool load(const QString& filename);
QString smileyfied(QString msg); QString smileyfied(QString msg);
QList<QStringList> getEmoticons() const; QList<QStringList> getEmoticons() const;
QString getAsRichText(const QString& key); QString getAsRichText(const QString& key);

23
widget/settingsdialog.cpp

@ -4,6 +4,7 @@
#include "camera.h" #include "camera.h"
#include "selfcamview.h" #include "selfcamview.h"
#include "core.h" #include "core.h"
#include "smileypack.h"
#include <QListWidget> #include <QListWidget>
#include <QListWidgetItem> #include <QListWidgetItem>
@ -14,6 +15,7 @@
#include <QGroupBox> #include <QGroupBox>
#include <QCheckBox> #include <QCheckBox>
#include <QLineEdit> #include <QLineEdit>
#include <QComboBox>
// ======================================= // =======================================
@ -41,8 +43,23 @@ public:
vLayout->addWidget(makeToxPortable); vLayout->addWidget(makeToxPortable);
group->setLayout(vLayout); group->setLayout(vLayout);
// theme
QGroupBox* themeGroup = new QGroupBox(tr("Theme"));
QLabel* smileyLabel = new QLabel(tr("Smiley Pack"));
smileyPack = new QComboBox(this);
auto smileyPacks = SmileyPack::listSmileyPacks();
for(auto pack : smileyPacks)
smileyPack->addItem(QString("%1 (%2)").arg(pack.first).arg(pack.second), pack.second);
QVBoxLayout* themeLayout = new QVBoxLayout();
themeLayout->addWidget(smileyLabel);
themeLayout->addWidget(smileyPack);
themeGroup->setLayout(themeLayout);
QVBoxLayout *mainLayout = new QVBoxLayout(); QVBoxLayout *mainLayout = new QVBoxLayout();
mainLayout->addWidget(group); mainLayout->addWidget(group);
mainLayout->addWidget(themeGroup);
mainLayout->addStretch(1); mainLayout->addStretch(1);
setLayout(mainLayout); setLayout(mainLayout);
} }
@ -50,6 +67,7 @@ public:
QCheckBox* enableIPv6; QCheckBox* enableIPv6;
QCheckBox* useTranslations; QCheckBox* useTranslations;
QCheckBox* makeToxPortable; QCheckBox* makeToxPortable;
QComboBox* smileyPack;
}; };
class IdentityPage : public QWidget class IdentityPage : public QWidget
@ -327,6 +345,11 @@ void SettingsDialog::writeConfig()
saveSettings = true; saveSettings = true;
} }
if (settings.getSmileyPack() != generalPage->smileyPack->currentData().toString()) {
settings.setSmileyPack(generalPage->smileyPack->currentData().toString());
saveSettings = true;
}
if (saveSettings) { if (saveSettings) {
settings.save(); settings.save();
} }

Loading…
Cancel
Save