diff options
author | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-05-15 10:38:20 +0000 |
---|---|---|
committer | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-05-15 10:38:20 +0000 |
commit | 48540940b6c28bb4378abfeb500ec45a625b37b6 (patch) | |
tree | 2ef294c0763e802f91d868bdef4229b6868527de /plugins/ImportTXT/BICQ5IP.inc | |
parent | 5c350913f011e119127baeb32a6aedeb4f0d33bc (diff) |
initial commit
git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/ImportTXT/BICQ5IP.inc')
-rw-r--r-- | plugins/ImportTXT/BICQ5IP.inc | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/plugins/ImportTXT/BICQ5IP.inc b/plugins/ImportTXT/BICQ5IP.inc new file mode 100644 index 0000000000..581085ece6 --- /dev/null +++ b/plugins/ImportTXT/BICQ5IP.inc @@ -0,0 +1,112 @@ +{$ifdef BIN_IMPORT_}
+var
+ XI:XML_API_W;
+ rhxml:HXML;
+ curxml:HXML;
+ chldxml:HXML;
+ ptxt:PWideChar;
+ txtlen:int;
+ ic,tm:integer;
+ res:LongBool;
+
+{$else}
+begin
+ If pluginLink^.ServiceExists(MS_SYSTEM_GET_XI)>0 then
+ begin
+ XI.cbSize:=SizeOf(XML_API_W);
+ res:=longbool(pluginLink^.CallService(MS_SYSTEM_GET_XI,0,Int(@XI)));
+ if not res then
+ begin
+ XI.cbSize:=SizeOf(XML_API_W)-4;
+ res:=longbool(pluginLink^.CallService(MS_SYSTEM_GET_XI,0,Int(@XI)));
+ if not res then
+ begin
+ s:=TranslateWideString('Error at initialization XML parser');
+ DoMessage(ITXT_THREAD_ERROR,integer(PWideChar(s)),0);
+ exit;
+ end;
+ end;
+ end
+ else
+ begin
+ s:=TranslateWideString('Your version of Miranda don''t support XML parsing');
+ DoMessage(ITXT_THREAD_ERROR,integer(PWideChar(s)),0);
+ exit;
+ end;
+ if (DContact.hContact=0) or (DContact.hContact=INVALID_HANDLE_VALUE) then
+ if (fContact.hContact<>0) and (fContact.hContact<>INVALID_HANDLE_VALUE) then
+ DContact:=fContact;
+ if (DContact.hContact<>0) and (DContact.hContact<>INVALID_HANDLE_VALUE) then
+ begin
+ proto:=GetContactProto(DContact.hContact);
+ DoMessage(ITXT_THREAD_DEST_CONTACT,DContact.hContact,0);
+ DoMessage(ITXT_THREAD_START,0,0);
+ GetMem(ptxt,SizeOf(WideChar)*FileLen+2);
+ try
+ ptxt:=UTF8toWide(pFileText,ptxt,SizeOf(WideChar)*FileLen+2);
+ ptxt[FileLen+1]:=#0000;
+ rhxml:=XI.parseString(ptxt,@txtlen,'root');
+ finally
+ freemem(ptxt);
+ end;
+ if (rhxml=0) then exit;
+ DoMessage(ITXT_THREAD_MAXPROGRESS,0,xi.getChildCount(rhxml));
+ chldxml:=xi.getFirstChild(rhxml);
+ if xi.getName(chldxml)='version' then
+ begin
+ ic:=0;
+ curxml:=xi.getNextChild(rhxml,'event',@ic);
+ while (curxml<>0) do
+ begin
+ fillchar(dbei,sizeof(dbei),0);
+ dbei.cbSize:=sizeof(dbei);
+ dbei.szModule:=PChar(proto);
+ if TryStrToInt(xi.getText(xi.getChildByPath(curxml,'time',false)),tm) then dbei.timestamp:=tm;
+ if xi.getText(xi.getChildByPath(curxml,'incoming',false))='Yes' then dbei.flags:=DBEF_READ
+ else dbei.flags:=DBEF_SENT or DBEF_READ;
+ if isMirandaUnicode then dbei.flags:=dbei.flags or DBEF_UTF;
+
+ if xi.getText(xi.getChildByPath(curxml,'type',false))^='2' then
+ begin
+ s:=xi.getText(xi.getChildByPath(curxml,'text',false))+': '+
+ xi.getText(xi.getChildByPath(curxml,'data',false));
+ dbei.eventType:= EVENTTYPE_URL;
+ end
+ else
+ begin
+ s:=xi.getText(xi.getChildByPath(curxml,'text',false));
+ dbei.eventType:= EVENTTYPE_MESSAGE;
+ end;
+ try
+ if IsMirandaUnicode then tempstr:=WidetoUTF8(PWideChar(s),tempstr)
+ else tempstr:=WideToANSI(PWideChar(s),tempstr,cp);
+ dbei.cbBlob:=lstrlen(tempstr)+1;
+ dbei.pBlob:=PByte(tempstr);
+ if not IsDuplicateEvent(DContact.hContact,dbei) then
+ if pluginLink^.CallService(MS_DB_EVENT_ADD, wParam(DContact.hContact), lParam(@dbei))<>0 then Inc(AddedMessages)
+ else begin
+ s:= 'Error adding message to DB';
+ DoMessage(ITXT_THREAD_ERROR,integer(PWideChar(s)),0); break; end
+
+ else Inc(Duplicates);
+
+ finally
+ FreeMem(tempstr);
+ curxml:=xi.getNextChild(rhxml,'event',@ic);
+ DoMessage(ITXT_THREAD_PROGRESS,ic,0);
+ end;
+ end;
+ end
+ else
+ begin
+ s:=WideFormat(TranslateWideString('Its not %s file'),['ICQ5']);
+ DoMessage(ITXT_THREAD_ERROR,integer(PWideChar(s)),0);
+ end;
+ end
+ else
+ begin
+ s:=TranslateWideString('Can''t determine destination contact');
+ DoMessage(ITXT_THREAD_ERROR,integer(PWideChar(s)),0);
+ end;
+end;
+{$endif}
\ No newline at end of file |