summaryrefslogtreecommitdiff
path: root/plugins/ImportTXT/BICQ6IP.inc
blob: af8c197e7459e5acf0825ba0c98a21f8b0bed9e0 (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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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}