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/BICQ6IP.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/BICQ6IP.inc')
-rw-r--r-- | plugins/ImportTXT/BICQ6IP.inc | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/plugins/ImportTXT/BICQ6IP.inc b/plugins/ImportTXT/BICQ6IP.inc new file mode 100644 index 0000000000..af8c197e74 --- /dev/null +++ b/plugins/ImportTXT/BICQ6IP.inc @@ -0,0 +1,91 @@ +{$ifdef BIN_IMPORT_}
+var DS: PDataSource;
+ SS: PSession;
+ QR1: PQuery;
+
+var
+ OneContact:boolean;
+ flags:integer;
+ timestamp:LongWord;
+ Msg:string;
+
+function FindUIDinDB(too:string):string;
+var QR2:PQuery;
+begin
+ QR2:= NewQuery( SS );
+ QR2.Text := 'select to, UID from ChatHistory WHERE to='+too;
+ QR2.Open;
+ QR2.First;
+ result:=QR2.FieldByNameAsStr['UID'];
+ QR2.Free;
+end;
+
+{$else}
+begin
+ DoUnMapFile;
+ OneContact:=(DContact.hContact<>0) and (DContact.hContact<>INVALID_HANDLE_VALUE);
+ try
+ DS := NewDataSource( 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;' +
+ 'Data Source='+FileName+
+ ';Mode=Share Deny None;' +
+ 'Extended Properties="";' +
+ 'Locale Identifier=1033;' +
+ 'Persist Security Info=False;');
+ SS := NewSession( DS );
+ QR1 := NewQuery( SS );
+ QR1.Text:= 'SELECT Messages.from, date, to, type, subType, subject FROM Messages';
+ QR1.Open;
+ if (QR1.ColCount=7) then
+ begin
+ DoMessage(ITXT_THREAD_START,0,0);
+ QR1.First;
+ DoMessage(ITXT_THREAD_MAXPROGRESS,0,QR1.RowCount);
+ While not QR1.EOF do
+ begin
+ try
+ if (QR1.SFieldByName[ 'type' ]='Text') and
+ (QR1.SFieldByName[ 'subType' ]='IM') then
+ begin
+ UIDStr:=FindUIDinDB(QR1.FieldByNameAsStr[ 'to' ]);
+ if not OneContact then
+ begin
+ DContact.ContactUID:=UIDStr;
+ TryDetermContact(DContact);
+ end;
+ if (DContact.hContact<>0) and (DContact.hContact<>INVALID_HANDLE_VALUE) then
+ begin
+ if QR1.SField[ 1 ]='' then flags:=DBEF_SENT or DBEF_READ
+ else flags:=DBEF_READ;
+ if IsMirandaUnicode then flags:=flags or DBEF_UTF;
+ timestamp:=DateTimeToTimeStamp(QR1.DFieldByName['date']-693594);
+ Msg:=QR1.SFieldByName['subject'];
+ if IsMirandaUnicode then
+ begin
+ tempstr:=ANSIToUTF8(PAnsiChar(Msg),tempstr,cp);
+ Msg:=tempstr;
+ FreeMem(tempstr);
+ end;
+ AddMsgToDB(DContact.hContact,flags,timestamp,Msg,AddedMessages,Duplicates);
+ end;
+ end;
+ except
+ ShowException(ExceptObject,ExceptAddr)
+ end;
+ QR1.Next;
+ DoMessage(ITXT_THREAD_PROGRESS,QR1.CurIndex,0);
+ end; //for
+ end
+ else
+ begin
+ s:=WideFormat(TranslateWideString('Its not %s file'),['ICQ6 mdb']);
+ DoMessage(ITXT_THREAD_ERROR,integer(PWideChar(s)),0);
+ end;
+ finally
+ DS.Free;
+ DS := nil;
+ SS := nil;
+ QR1 := nil;
+ end;
+end;
+{$endif}
+
|