NOISSUE allow using icon themes for instances and instance badges

This commit is contained in:
Petr Mrázek
2016-11-10 02:54:53 +01:00
parent 27e26a656b
commit f9d94a45ee
56 changed files with 165 additions and 131 deletions

View File

@ -25,15 +25,23 @@
#define MAX_SIZE 1024
IconList::IconList(QString builtinPath, QString path, QObject *parent) : QAbstractListModel(parent)
IconList::IconList(const QStringList &builtinPaths, QString path, QObject *parent) : QAbstractListModel(parent)
{
QSet<QString> builtinNames;
// add builtin icons
QDir instance_icons(builtinPath);
auto file_info_list = instance_icons.entryInfoList(QDir::Files, QDir::Name);
for (auto file_info : file_info_list)
for(auto & builtinPath: builtinPaths)
{
QString key = file_info.baseName();
addIcon(key, key, file_info.absoluteFilePath(), IconType::Builtin);
QDir instance_icons(builtinPath);
auto file_info_list = instance_icons.entryInfoList(QDir::Files, QDir::Name);
for (auto file_info : file_info_list)
{
builtinNames.insert(file_info.baseName());
}
}
for(auto & builtinName : builtinNames)
{
addThemeIcon(builtinName);
}
m_watcher.reset(new QFileSystemWatcher());
@ -292,6 +300,33 @@ bool IconList::deleteIcon(const QString &key)
return false;
}
bool IconList::addThemeIcon(const QString& key)
{
auto iter = name_index.find(key);
if (iter != name_index.end())
{
auto &oldOne = icons[*iter];
oldOne.replace(Builtin, key);
dataChanged(index(*iter), index(*iter));
return true;
}
else
{
// add a new icon
beginInsertRows(QModelIndex(), icons.size(), icons.size());
{
MMCIcon mmc_icon;
mmc_icon.m_name = key;
mmc_icon.m_key = key;
mmc_icon.replace(Builtin, key);
icons.push_back(mmc_icon);
name_index[key] = icons.size() - 1;
}
endInsertRows();
return true;
}
}
bool IconList::addIcon(const QString &key, const QString &name, const QString &path, const IconType type)
{
// replace the icon even? is the input valid?