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

9
smileypack.h

@ -22,7 +22,10 @@ @@ -22,7 +22,10 @@
#include <QString>
#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
class SmileyPack : public QObject
@ -30,10 +33,10 @@ class SmileyPack : public QObject @@ -30,10 +33,10 @@ class SmileyPack : public QObject
Q_OBJECT
public:
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);
bool load(const QString &filename);
bool load(const QString& filename);
QString smileyfied(QString msg);
QList<QStringList> getEmoticons() const;
QString getAsRichText(const QString& key);

23
widget/settingsdialog.cpp

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
#include "camera.h"
#include "selfcamview.h"
#include "core.h"
#include "smileypack.h"
#include <QListWidget>
#include <QListWidgetItem>
@ -14,6 +15,7 @@ @@ -14,6 +15,7 @@
#include <QGroupBox>
#include <QCheckBox>
#include <QLineEdit>
#include <QComboBox>
// =======================================
@ -41,8 +43,23 @@ public: @@ -41,8 +43,23 @@ public:
vLayout->addWidget(makeToxPortable);
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();
mainLayout->addWidget(group);
mainLayout->addWidget(themeGroup);
mainLayout->addStretch(1);
setLayout(mainLayout);
}
@ -50,6 +67,7 @@ public: @@ -50,6 +67,7 @@ public:
QCheckBox* enableIPv6;
QCheckBox* useTranslations;
QCheckBox* makeToxPortable;
QComboBox* smileyPack;
};
class IdentityPage : public QWidget
@ -327,6 +345,11 @@ void SettingsDialog::writeConfig() @@ -327,6 +345,11 @@ void SettingsDialog::writeConfig()
saveSettings = true;
}
if (settings.getSmileyPack() != generalPage->smileyPack->currentData().toString()) {
settings.setSmileyPack(generalPage->smileyPack->currentData().toString());
saveSettings = true;
}
if (saveSettings) {
settings.save();
}

Loading…
Cancel
Save