本文整理汇总了C++中ExtraIcon::getSlot方法的典型用法代码示例。如果您正苦于以下问题:C++ ExtraIcon::getSlot方法的具体用法?C++ ExtraIcon::getSlot怎么用?C++ ExtraIcon::getSlot使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ExtraIcon
的用法示例。
在下文中一共展示了ExtraIcon::getSlot方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: EI_PostCreate
static void EI_PostCreate(BaseExtraIcon *extra, const char *name, int _hLang)
{
char setting[512];
mir_snprintf(setting, "Position_%s", name);
extra->setPosition(db_get_w(NULL, MODULE_NAME, setting, 1000));
mir_snprintf(setting, "Slot_%s", name);
int slot = db_get_w(NULL, MODULE_NAME, setting, 1);
if (slot == (WORD)-1)
slot = -1;
extra->setSlot(slot);
extra->m_hLangpack = _hLang;
registeredExtraIcons.insert(extra);
extraIconsByHandle.insert(extra);
LIST<ExtraIconGroup> groups(1);
LoadGroups(groups);
ExtraIconGroup *group = IsInGroup(groups, extra);
if (group != NULL)
RebuildListsBasedOnGroups(groups);
else {
for (int i = 0; i < groups.getCount(); i++)
delete groups[i];
extraIconsBySlot.insert(extra);
}
if (slot >= 0 || group != NULL) {
if (clistRebuildAlreadyCalled)
extra->rebuildIcons();
slot = 0;
for (int i = 0; i < extraIconsBySlot.getCount(); i++) {
ExtraIcon *ex = extraIconsBySlot[i];
if (ex->getSlot() < 0)
continue;
int oldSlot = ex->getSlot();
ex->setSlot(slot++);
if (clistApplyAlreadyCalled && (ex == group || ex == extra || oldSlot != slot))
extra->applyIcons();
}
}
}
示例2: GetExtraIconBySlot
ExtraIcon* GetExtraIconBySlot(int slot)
{
for (int i = 0; i < extraIconsBySlot.getCount(); i++) {
ExtraIcon *extra = extraIconsBySlot[i];
if (extra->getSlot() == slot)
return extra;
}
return NULL;
}
示例3: GetExtraIconBySlot
ExtraIcon * GetExtraIconBySlot(int slot)
{
for (unsigned int i = 0; i < extraIconsBySlot.size(); ++i)
{
ExtraIcon *extra = extraIconsBySlot[i];
if (extra->getSlot() == slot)
return extra;
}
return NULL;
}
示例4: ClistExtraClick
int ClistExtraClick(WPARAM hContact, LPARAM lParam)
{
if (hContact == NULL)
return 0;
int clistSlot = (int)lParam;
for (int i=0; i < extraIconsBySlot.getCount(); i++) {
ExtraIcon *extra = extraIconsBySlot[i];
if (ConvertToClistSlot(extra->getSlot()) == clistSlot) {
extra->onClick(hContact);
break;
}
}
return 0;
}
示例5: ClistExtraClick
int ClistExtraClick(WPARAM wParam, LPARAM lParam)
{
HANDLE hContact = (HANDLE) wParam;
if (hContact == NULL)
return 0;
int clistSlot = (int) lParam;
for (unsigned int i = 0; i < extraIconsBySlot.size(); ++i)
{
ExtraIcon *extra = extraIconsBySlot[i];
if (ConvertToClistSlot(extra->getSlot()) == clistSlot)
{
extra->onClick(hContact);
break;
}
}
return 0;
}
示例6: ExtraIcon_Register
INT_PTR ExtraIcon_Register(WPARAM wParam, LPARAM lParam)
{
if (wParam == 0)
return 0;
EXTRAICON_INFO *ei = (EXTRAICON_INFO *) wParam;
if (ei->cbSize < (int) sizeof(EXTRAICON_INFO))
return 0;
if (ei->type != EXTRAICON_TYPE_CALLBACK && ei->type != EXTRAICON_TYPE_ICOLIB)
return 0;
if (IsEmpty(ei->name) || IsEmpty(ei->description))
return 0;
if (ei->type == EXTRAICON_TYPE_CALLBACK && (ei->ApplyIcon == NULL || ei->RebuildIcons == NULL))
return 0;
const char *desc = Translate(ei->description);
BaseExtraIcon *extra = GetExtraIconByName(ei->name);
if (extra != NULL)
{
if (ei->type != extra->getType() || ei->type != EXTRAICON_TYPE_ICOLIB)
return 0;
// Found one, now merge it
if (_stricmp(extra->getDescription(), desc))
{
string newDesc = extra->getDescription();
newDesc += " / ";
newDesc += desc;
extra->setDescription(newDesc.c_str());
}
if (!IsEmpty(ei->descIcon))
extra->setDescIcon(ei->descIcon);
if (ei->OnClick != NULL)
extra->setOnClick(ei->OnClick, ei->onClickParam);
if (extra->getSlot() > 0)
{
if (clistRebuildAlreadyCalled)
extra->rebuildIcons();
if (clistApplyAlreadyCalled)
extraIconsByHandle[extra->getID() - 1]->applyIcons();
}
return extra->getID();
}
size_t id = registeredExtraIcons.size() + 1;
switch (ei->type)
{
case EXTRAICON_TYPE_CALLBACK:
extra = new CallbackExtraIcon(id, ei->name, desc, ei->descIcon == NULL ? "" : ei->descIcon,
ei->RebuildIcons, ei->ApplyIcon, ei->OnClick, ei->onClickParam);
break;
case EXTRAICON_TYPE_ICOLIB:
extra = new IcolibExtraIcon(id, ei->name, desc, ei->descIcon == NULL ? "" : ei->descIcon, ei->OnClick,
ei->onClickParam);
break;
default:
return 0;
}
char setting[512];
mir_snprintf(setting, MAX_REGS(setting), "Position_%s", ei->name);
extra->setPosition(DBGetContactSettingWord(NULL, MODULE_NAME, setting, 1000));
mir_snprintf(setting, MAX_REGS(setting), "Slot_%s", ei->name);
int slot = DBGetContactSettingWord(NULL, MODULE_NAME, setting, 1);
if (slot == (WORD) -1)
slot = -1;
extra->setSlot(slot);
registeredExtraIcons.push_back(extra);
extraIconsByHandle.push_back(extra);
vector<ExtraIconGroup *> groups;
LoadGroups(groups);
ExtraIconGroup *group = IsInGroup(groups, extra);
if (group != NULL)
{
RebuildListsBasedOnGroups(groups);
}
else
{
for (unsigned int i = 0; i < groups.size(); ++i)
delete groups[i];
extraIconsBySlot.push_back(extra);
std::sort(extraIconsBySlot.begin(), extraIconsBySlot.end(), compareFunc());
}
if (slot >= 0 || group != NULL)
{
if (clistRebuildAlreadyCalled)
extra->rebuildIcons();
//.........这里部分代码省略.........
示例7: ExtraIcon_Register
INT_PTR ExtraIcon_Register(WPARAM wParam, LPARAM lParam)
{
if (wParam == 0)
return 0;
EXTRAICON_INFO *ei = (EXTRAICON_INFO *)wParam;
if (ei->cbSize < (int)sizeof(EXTRAICON_INFO))
return 0;
if (ei->type != EXTRAICON_TYPE_CALLBACK && ei->type != EXTRAICON_TYPE_ICOLIB)
return 0;
if (IsEmpty(ei->name) || IsEmpty(ei->description))
return 0;
if (ei->type == EXTRAICON_TYPE_CALLBACK && (ei->ApplyIcon == NULL || ei->RebuildIcons == NULL))
return 0;
ptrT tszDesc(mir_a2t(ei->description));
TCHAR *desc = TranslateTH(lParam, tszDesc);
BaseExtraIcon *extra = GetExtraIconByName(ei->name);
if (extra != NULL) {
if (ei->type != extra->getType() || ei->type != EXTRAICON_TYPE_ICOLIB)
return 0;
// Found one, now merge it
if (_tcsicmp(extra->getDescription(), desc)) {
CMString newDesc = extra->getDescription();
newDesc += _T(" / ");
newDesc += desc;
extra->setDescription(newDesc.c_str());
}
if (!IsEmpty(ei->descIcon))
extra->setDescIcon(ei->descIcon);
if (ei->OnClick != NULL)
extra->setOnClick(ei->OnClick, ei->onClickParam);
if (extra->getSlot() > 0) {
if (clistRebuildAlreadyCalled)
extra->rebuildIcons();
if (clistApplyAlreadyCalled)
extraIconsByHandle[extra->getID() - 1]->applyIcons();
}
return extra->getID();
}
int id = registeredExtraIcons.getCount() + 1;
switch (ei->type) {
case EXTRAICON_TYPE_CALLBACK:
extra = new CallbackExtraIcon(id, ei->name, desc, ei->descIcon == NULL ? "" : ei->descIcon,
ei->RebuildIcons, ei->ApplyIcon, ei->OnClick, ei->onClickParam);
break;
case EXTRAICON_TYPE_ICOLIB:
extra = new IcolibExtraIcon(id, ei->name, desc, ei->descIcon == NULL ? "" : ei->descIcon, ei->OnClick,
ei->onClickParam);
break;
default:
return 0;
}
char setting[512];
mir_snprintf(setting, SIZEOF(setting), "Position_%s", ei->name);
extra->setPosition(db_get_w(NULL, MODULE_NAME, setting, 1000));
mir_snprintf(setting, SIZEOF(setting), "Slot_%s", ei->name);
int slot = db_get_w(NULL, MODULE_NAME, setting, 1);
if (slot == (WORD)-1)
slot = -1;
extra->setSlot(slot);
extra->hLangpack = (int)lParam;
registeredExtraIcons.insert(extra);
extraIconsByHandle.insert(extra);
LIST<ExtraIconGroup> groups(1);
LoadGroups(groups);
ExtraIconGroup *group = IsInGroup(groups, extra);
if (group != NULL)
RebuildListsBasedOnGroups(groups);
else {
for (int i = 0; i < groups.getCount(); i++)
delete groups[i];
extraIconsBySlot.insert(extra);
}
if (slot >= 0 || group != NULL) {
if (clistRebuildAlreadyCalled)
extra->rebuildIcons();
slot = 0;
for (int i = 0; i < extraIconsBySlot.getCount(); i++) {
ExtraIcon *ex = extraIconsBySlot[i];
if (ex->getSlot() < 0)
continue;
//.........这里部分代码省略.........
示例8: OnApply
virtual void OnApply()
{
// Store old slots
int *oldSlots = new int[registeredExtraIcons.getCount()];
int lastUsedSlot = -1;
for (int i = 0; i < registeredExtraIcons.getCount(); i++) {
if (extraIconsByHandle[i] == registeredExtraIcons[i])
oldSlots[i] = registeredExtraIcons[i]->getSlot();
else
// Remove old slot for groups to re-set images
oldSlots[i] = -1;
lastUsedSlot = MAX(lastUsedSlot, registeredExtraIcons[i]->getSlot());
}
lastUsedSlot = MIN(lastUsedSlot, GetNumberOfSlots());
// Get user data and create new groups
LIST<ExtraIconGroup> groups(1);
BYTE pos = 0;
int firstEmptySlot = 0;
HTREEITEM ht = m_tree.GetRoot();
TVITEMEX tvi;
tvi.mask = TVIF_HANDLE | TVIF_PARAM | TVIF_STATE;
tvi.stateMask = TVIS_STATEIMAGEMASK;
while (ht) {
tvi.hItem = ht;
m_tree.GetItem(&tvi);
intlist*ids = (intlist*)tvi.lParam;
if (ids == NULL || ids->count < 1)
continue; // ???
bool enabled = ((tvi.state & INDEXTOSTATEIMAGEMASK(3)) == INDEXTOSTATEIMAGEMASK(2));
int slot = (enabled ? firstEmptySlot++ : -1);
if (slot >= GetNumberOfSlots())
slot = -1;
if (ids->count == 1) {
BaseExtraIcon *extra = registeredExtraIcons[ids->data[0] - 1];
extra->setPosition(pos++);
extra->setSlot(slot);
}
else {
char name[128];
mir_snprintf(name, "__group_%d", groups.getCount());
ExtraIconGroup *group = new ExtraIconGroup(name);
for (int i = 0; i < ids->count; i++) {
BaseExtraIcon *extra = registeredExtraIcons[ids->data[i] - 1];
extra->setPosition(pos++);
group->addExtraIcon(extra);
}
group->setSlot(slot);
groups.insert(group);
}
ht = m_tree.GetNextSibling(ht);
}
// Store data
for (int i = 0; i < registeredExtraIcons.getCount(); i++) {
BaseExtraIcon *extra = registeredExtraIcons[i];
char setting[512];
mir_snprintf(setting, "Position_%s", extra->getName());
db_set_w(NULL, MODULE_NAME, setting, extra->getPosition());
mir_snprintf(setting, "Slot_%s", extra->getName());
db_set_w(NULL, MODULE_NAME, setting, extra->getSlot());
}
CallService(MS_DB_MODULE_DELETE, 0, (LPARAM)MODULE_NAME "Groups");
db_set_w(NULL, MODULE_NAME "Groups", "Count", groups.getCount());
for (int k = 0; k < groups.getCount(); k++) {
ExtraIconGroup *group = groups[k];
char setting[512];
mir_snprintf(setting, "%d_count", k);
db_set_w(NULL, MODULE_NAME "Groups", setting, (WORD)group->m_items.getCount());
for (int j = 0; j < group->m_items.getCount(); j++) {
BaseExtraIcon *extra = group->m_items[j];
mir_snprintf(setting, "%d_%d", k, j);
db_set_s(NULL, MODULE_NAME "Groups", setting, extra->getName());
}
}
// Clean removed slots
for (int j = firstEmptySlot; j <= lastUsedSlot; j++)
RemoveExtraIcons(j);
// Apply icons to new slots
RebuildListsBasedOnGroups(groups);
for (int n = 0; n < extraIconsBySlot.getCount(); n++) {
ExtraIcon *extra = extraIconsBySlot[n];
if (extra->getType() != EXTRAICON_TYPE_GROUP)
//.........这里部分代码省略.........