summaryrefslogtreecommitdiff
path: root/meta2/import.cpp
blob: abdab20cc8faef02c182d9fe57f79d33a341d709 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "common.h"
#include "import.h"
#include "core_functions.h"
#include "proto.h"

void ImportOldMetas() {
	HANDLE hContact = (HANDLE)CallService( MS_DB_CONTACT_FINDFIRST, 0, 0);
	char *proto;
	HANDLE hMeta;
	while(hContact != NULL) {
		DWORD id = DBGetContactSettingDword(hContact, "MetaContacts", "MetaLink", (DWORD)-1);
		if(id != (DWORD)-1) {
			if(id > next_meta_id) next_meta_id = id + 1;
			hMeta = GetMetaHandle(id);
			if(hMeta) {
				Meta_Assign(hContact, hMeta);
			} else {
				hMeta = NewMetaContact();
				DBWriteContactSettingDword(hMeta, MODULE, META_ID, id);

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

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

		hContact = ( HANDLE )CallService( MS_DB_CONTACT_FINDNEXT,( WPARAM )hContact, 0 );
	}	
}