summaryrefslogtreecommitdiff
path: root/Plugins/extraicons/ExtraIconGroup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/extraicons/ExtraIconGroup.cpp')
-rw-r--r--Plugins/extraicons/ExtraIconGroup.cpp25
1 files changed, 19 insertions, 6 deletions
diff --git a/Plugins/extraicons/ExtraIconGroup.cpp b/Plugins/extraicons/ExtraIconGroup.cpp
index 48ff791..6b46fbe 100644
--- a/Plugins/extraicons/ExtraIconGroup.cpp
+++ b/Plugins/extraicons/ExtraIconGroup.cpp
@@ -23,8 +23,8 @@
#include "commons.h"
-ExtraIconGroup::ExtraIconGroup(int id, const char *name) :
- ExtraIcon(id, name), setValidExtraIcon(false)
+ExtraIconGroup::ExtraIconGroup(const char *name) :
+ ExtraIcon(name), setValidExtraIcon(false)
{
char setting[512];
mir_snprintf(setting, MAX_REGS(setting), "%s/%s", MODULE_NAME, name);
@@ -36,7 +36,7 @@ ExtraIconGroup::~ExtraIconGroup()
items.clear();
}
-void ExtraIconGroup::addExtraIcon(ExtraIcon *extra)
+void ExtraIconGroup::addExtraIcon(BaseExtraIcon *extra)
{
items.push_back(extra);
@@ -63,12 +63,25 @@ void ExtraIconGroup::applyIcon(HANDLE hContact)
setValidExtraIcon = false;
unsigned int i;
- for (i = 0; !setValidExtraIcon && i < items.size(); ++i)
+ for (i = 0; i < items.size(); ++i)
+ {
items[i]->applyIcon(hContact);
+ if (setValidExtraIcon)
+ break;
+ }
+
DBWriteContactSettingDword(hContact, MODULE_NAME, name.c_str(), setValidExtraIcon ? items[i]->getID() : 0);
}
+void ExtraIconGroup::setSlot(int slot)
+{
+ ExtraIcon::setSlot(slot);
+
+ for (unsigned int i = 0; i < items.size(); ++i)
+ items[i]->setSlot(slot);
+}
+
ExtraIcon * ExtraIconGroup::getCurrentItem(HANDLE hContact) const
{
int id = (int) DBGetContactSettingDword(hContact, MODULE_NAME, name.c_str(), 0);
@@ -152,11 +165,11 @@ int ExtraIconGroup::getType() const
return EXTRAICON_TYPE_GROUP;
}
-int ExtraIconGroup::ClistSetExtraIcon(HANDLE hContact, int slot, HANDLE hImage)
+int ExtraIconGroup::ClistSetExtraIcon(HANDLE hContact, HANDLE hImage)
{
if (hImage != NULL && hImage != (HANDLE) -1)
setValidExtraIcon = true;
- return ExtraIcon::ClistSetExtraIcon(hContact, slot, hImage);
+ return Clist_SetExtraIcon(hContact, slot, hImage);
}