コード例 #1
0
void Meta_Assign(HANDLE hSub, HANDLE hMeta) {
    metaMap[hMeta].add(hSub);
    DBWriteContactSettingDword(hSub, MODULE, "ParentMetaID", DBGetContactSettingDword(hMeta, MODULE, META_ID, -1));
    DBWriteContactSettingDword(hSub, MODULE, "Handle", (DWORD)hMeta);
    DBWriteContactSettingByte(hSub, MODULE, "IsSubcontact", 1);
    if(MetaEnabled()) {
        if(!meta_group_hack_disabled)
            DBWriteContactSettingByte(hSub, "CList", "Hidden", 1);
    } else // shouldn't happen, as the menu option is hidden when metas are disabled...
        DBWriteContactSettingByte(hMeta, "CList", "Hidden", 1);

    CallService(MS_IGNORE_IGNORE, (WPARAM)hSub, (WPARAM)IGNOREEVENT_USERONLINE);

    DBVARIANT dbv;
    if(DBGetContactSettingUTF8String(hMeta, "CList", "MyHandle", &dbv)) {
        if(!DBGetContactSettingUTF8String(hSub, "CList", "MyHandle", &dbv)) {
            DBWriteContactSettingUTF8String(hMeta, "CList", "MyHandle", dbv.pszVal);
            DBFreeVariant(&dbv);
        }
    } else
        DBFreeVariant(&dbv);

    if(DBGetContactSettingUTF8String(hMeta, MODULE, "Nick", &dbv)) {
        char *subProto = ContactProto(hSub);
        if(subProto) {
            if(!DBGetContactSettingUTF8String(hSub, subProto, "Nick", &dbv)) {
                DBWriteContactSettingUTF8String(hMeta, MODULE, "Nick", dbv.pszVal);
                DBFreeVariant(&dbv);
            }
        }
    } else
        DBFreeVariant(&dbv);

    FireSubcontactsChanged(hMeta);
}
コード例 #2
0
HANDLE Meta_Convert(HANDLE hSub) {
    HANDLE hMeta = NewMetaContact();

    DBWriteContactSettingByte(hMeta, MODULE, "Default", 0);
    Meta_Assign(hSub, hMeta);

    DBVARIANT dbv;
    if(!DBGetContactSettingUTF8String(hSub, "CList", "Group", &dbv)) {
        DBWriteContactSettingUTF8String(hMeta, "CList", "Group", dbv.pszVal);
        DBFreeVariant(&dbv);
    }
    if(!DBGetContactSettingUTF8String(hSub, "CList", "MyHandle", &dbv)) {
        DBWriteContactSettingUTF8String(hMeta, "CList", "MyHandle", dbv.pszVal);
        DBFreeVariant(&dbv);
    }

    char *subProto = ContactProto(hSub);
    if(subProto) {
        if(!DBGetContactSettingUTF8String(hSub, subProto, "Nick", &dbv)) {
            DBWriteContactSettingUTF8String(hMeta, MODULE, "Nick", dbv.pszVal);
            DBFreeVariant(&dbv);
        }
    }

    Meta_CalcStatus(hMeta);
    return hMeta;
}
コード例 #3
0
ファイル: icq_db.cpp プロジェクト: raoergsls/miranda
char* CIcqProto::getSettingStringUtf(HANDLE hContact, const char *szModule, const char *szSetting, char *szDef)
{
	DBVARIANT dbv = {DBVT_DELETED};

	if (DBGetContactSettingUTF8String(hContact, szModule, szSetting, &dbv))
  {
    ICQFreeVariant(&dbv); // for a setting with invalid contents/type
		return null_strdup(szDef);
  }

	char *szRes = null_strdup(dbv.pszVal);
	ICQFreeVariant(&dbv);
	return szRes;
}