diff options
author | Mikkel Krautz <mikkel@krautz.dk> | 2014-11-03 01:37:16 +0300 |
---|---|---|
committer | Mikkel Krautz <mikkel@krautz.dk> | 2014-11-04 23:53:21 +0300 |
commit | f1dbd922b86ac52755f449f1bebca5c0c4b0937f (patch) | |
tree | c8aa94b14f6fe05a35addc000d1498d4b0bcc1b1 /src/mumble/OverlayConfig.cpp | |
parent | e5b6dac26dd317ca5115f78ef3ebc84aa7ca0a7b (diff) |
Ensure up-to-date built-in overlay blacklist.
This changeset makes the following modifications:
1. The overlay DLL is changed to always consider the built-in blacklist,
even if a blacklist is present in the registry.
For Mumble users who have been running with the old blacklist behavior,
this means that we'll be doing some duplicate checking for blacklist
entries, but I don't think this matters in practice.
2. Settings.cpp is changed to not do anything with overlay_blacklist.h.
Effectively, this means that qslBlacklist now represents the items
the user has added to the blacklist, and not the combination of both
an outdated built-in list and the user's own entries.
3. OverlayConfig.cpp is changed to always show all entries from
overlay_blacklist.h. Entries from the built-in list are 'disabled',
so they can't be interacted with.
For more information, see PR #1461
Diffstat (limited to 'src/mumble/OverlayConfig.cpp')
-rw-r--r-- | src/mumble/OverlayConfig.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/mumble/OverlayConfig.cpp b/src/mumble/OverlayConfig.cpp index 155e649e3..ce72fb20f 100644 --- a/src/mumble/OverlayConfig.cpp +++ b/src/mumble/OverlayConfig.cpp @@ -45,6 +45,8 @@ #include "MainWindow.h" #include "GlobalShortcut.h" +#include "../../overlay/overlay_blacklist.h" + static ConfigWidget *OverlayConfigDialogNew(Settings &st) { return new OverlayConfig(st); } @@ -305,7 +307,25 @@ void OverlayConfig::load(const Settings &r) { qlwiApplication->setData(Qt::UserRole, QVariant(str)); } + QStringList builtinBlacklist; +#ifdef Q_OS_WIN + int i = 0; + while (overlayBlacklist[i]) { + QString str = QLatin1String(overlayBlacklist[i]); + builtinBlacklist << str; + ++i; + } +#endif + foreach (QString str, builtinBlacklist) { + OverlayAppInfo oai = applicationInfoForId(str); + QListWidgetItem *qlwiApplication = new QListWidgetItem(oai.qiIcon, oai.qsDisplayName, qlwBlacklist); + qlwiApplication->setFlags(qlwiApplication->flags() & ~Qt::ItemIsEnabled); + } + foreach(QString str, s.os.qslBlacklist) { + if (builtinBlacklist.contains(str)) { + continue; + } OverlayAppInfo oai = applicationInfoForId(str); QListWidgetItem *qlwiApplication = new QListWidgetItem(oai.qiIcon, oai.qsDisplayName, qlwBlacklist); qlwiApplication->setData(Qt::UserRole, QVariant(str)); @@ -345,7 +365,12 @@ void OverlayConfig::save() const { s.os.qslBlacklist.clear(); for (int i=0;i<qlwBlacklist->count();++i) { QVariant qvUserData = qlwBlacklist->item(i)->data(Qt::UserRole); - s.os.qslBlacklist << qvUserData.toString(); + QString str = qvUserData.toString(); + // Built-in blacklist entries have no user data set. + // Skip them. + if (!str.isEmpty()) { + s.os.qslBlacklist << qvUserData.toString(); + } } s.os.qslWhitelist.clear(); |