亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unewmessage.pas

?? FMA is a free1 powerful phone editing tool allowing users to easily manage all of the personal data
?? PAS
字號:
unit uNewMessage;

{
*******************************************************************************
* Descriptions: Incoming Message Pop-up Implementation
* $Source: /cvsroot/fma/fma/uNewMessage.pas,v $
* $Locker:  $
*
* Todo:
*
* Change Log:
* $Log: uNewMessage.pas,v $
*
*******************************************************************************
}

interface

uses
  Windows, TntWindows, Messages, SysUtils, TntSysUtils, Variants, Classes, TntClasses, Graphics, TntGraphics, Controls, TntControls,
  Forms, TntForms, Dialogs, TntDialogs, StdCtrls, TntStdCtrls, Placemnt, ExtCtrls, TntExtCtrls, jpeg, Menus, TntMenus, TntComCtrls,
  GR32_Image, VirtualTrees;

type
  TMsgDetails = record
    msgType: Integer;
    msgIndex: Integer;
    msgLocation: String;
    msgPDU: String;
  end;

  TfrmNewMessage = class(TTntForm)
    FormPlacement1: TFormPlacement;
    Timer1: TTimer;
    lbText: TTntLabel;
    lbAlpha: TTntLabel;
    Image1: TTntImage;
    OkButton: TTntButton;
    ActionButton: TTntButton;
    PopupMenu1: TTntPopupMenu;
    Reply1: TTntMenuItem;
    Forward1: TTntMenuItem;
    N1: TTntMenuItem;
    Delete1: TTntMenuItem;
    N2: TTntMenuItem;
    AddContact1: TTntMenuItem;
    ImagePanel: TTntPanel;
    Image32: TImage32;
    Chat1: TTntMenuItem;
    AnswerButton: TTntButton;
    N3: TTntMenuItem;
    CallContact1: TTntMenuItem;
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Reply1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure OkButtonClick(Sender: TObject);
    procedure ActionButtonClick(Sender: TObject);
    procedure Forward1Click(Sender: TObject);
    procedure PopupMenu1Popup(Sender: TObject);
    procedure Delete1Click(Sender: TObject);
    procedure OnMouseEnter(Sender: TObject);
    procedure OnMouseLeave(Sender: TObject);
    procedure FormDeactivate(Sender: TObject);
    procedure AddContact1Click(Sender: TObject);
    procedure Chat1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure CallContact1Click(Sender: TObject);
  private
    { Private declarations }
    FAlphaCount: integer;
    FPrevAlpha: boolean;
    FPersonalized,FPersonalizedSem: Boolean;
    FCustomImage: Boolean;
    FLongSMS: Boolean;
    FMembers: TStringList;
    FFolder: PVirtualNode;
    procedure DoPersonalize;
    procedure DoMarkMsgAsRead;
    procedure GetMemberDetails(Index: Integer; var Details: TMsgDetails);
    procedure Set_CustomImage(const Value: Boolean);
    procedure Set_LongSMS(const Value: Boolean);
  public
    { Public declarations }
    constructor CreateMsg(Sender, text: WideString; AlphaBlend: Integer);
    destructor Destroy; override;
    property IsPersonalized: Boolean read FPersonalized;
    property IsCustomImage: Boolean read FCustomImage write Set_CustomImage;
    property IsLongSMS: Boolean read FLongSMS write Set_LongSMS;
    property Members: TStringList read FMembers write FMembers;
    property FolderNode: PVirtualNode read FFolder write FFolder;
  end;

var
  frmNewMessage: TfrmNewMessage;

implementation

uses
  gnugettext, gnugettexthelpers,
  uGlobal, uImg32Helper, Unit1, uComposeSMS, uSyncPhonebook, uMissedCalls, uChatSMS, uSMS,
  uCallContact;

{$R *.dfm}

const
  DontFadeSeconds = 5;

constructor TfrmNewMessage.CreateMsg(Sender, text: WideString; AlphaBlend: Integer);
var
  wide,high: integer;
begin
  inherited Create(nil);
  FMembers := TStringList.Create;
  FLongSMS := False;
  FFolder := Form1.FNodeMsgArchive;
  { Prepare fade out }
  AlphaBlendValue := AlphaBlend;
  FAlphaCount := AlphaBlend + DontFadeSeconds*10; // dont fade immediately
  lbAlpha.Font.Style := lbAlpha.Font.Style + [fsBold];
  lbAlpha.Alignment := taLeftJustify;
  lbAlpha.AutoSize := True;
  lbAlpha.Caption := Sender;
  lbText.Anchors := [akLeft,akTop];
  lbText.Caption := '';
  { Restore form position }
  FormPlacement1.RestoreFormPlacement;
  Application.ProcessMessages;
  { Resize form }
  Constraints.MinHeight := 32;
  ClientHeight := 137;
  lbText.WordWrap := False;
  lbText.AutoSize := True;
  lbText.Caption := text;
  lbText.WordWrap := True;
  wide := lbText.Width;
  if lbAlpha.Width > wide then wide := lbAlpha.Width;
  wide := wide + lbAlpha.Left - 4;
  if wide > (Constraints.MaxWidth-16) then begin
    Width := Constraints.MaxWidth;
    lbText.AutoSize := False;
    lbText.Width := Constraints.MaxWidth - lbText.Left - 16;
    lbText.AutoSize := True;
  end
  else begin
    if wide > (Constraints.MinWidth-16) then
      ClientWidth := wide + 8
    else
      Width := Constraints.MinWidth;
  end;
  high := lbText.Height - 85;
  if high > 0 then
    ClientHeight := ClientHeight + high;
  Constraints.MinHeight := Height;  
  { Fix Buttons, TntButtons top }
  OkButton.Top := ClientHeight-25;
  ActionButton.Top := OkButton.Top;
  AnswerButton.Top := OkButton.Top;
  { Stick text }
  lbText.AutoSize := False;
  lbText.Height := OkButton.Top - lbText.Top - 4;
  lbText.Anchors := [akLeft,akTop,akRight,akBottom];
  { Personalize }
  FPersonalized := False;
  FPersonalizedSem := False;
  DoPersonalize;
  { Show window but not activate it }
  SetWindowPos(Handle, HWND_TOPMOST,
    Left + 24 * ((Screen.FormCount-2) mod 10), Top + 24 * (Screen.FormCount div 10), Width, Height,
    SWP_NOACTIVATE);
  ShowWindow(Handle,SW_SHOWNOACTIVATE);
  ShowWindow(OkButton.Handle,SW_SHOWNOACTIVATE);
  ShowWindow(ActionButton.Handle,SW_SHOWNOACTIVATE);
  ShowWindow(AnswerButton.Handle,SW_SHOWNOACTIVATE);
  ShowWindow(ImagePanel.Handle,SW_SHOWNOACTIVATE);
  ShowWindow(Image32.Handle,SW_SHOWNOACTIVATE);
end;

procedure TfrmNewMessage.FormCreate(Sender: TObject);
begin
  Left := (Screen.Width - Width) div 2;
  Top := (Screen.Height - Height) div 2;
  gghTranslateComponent(self);

  lbAlpha.Font.Style := lbAlpha.Font.Style + [fsBold];
  Image1.Picture.Assign(Form1.CommonBitmaps.Bitmap[1]);
end;

procedure TfrmNewMessage.Timer1Timer(Sender: TObject);
begin
  FAlphaCount := FAlphaCount - 1;
  if FAlphaCount < AlphaBlendValue then begin
    AlphaBlendValue := AlphaBlendValue - 4;
    if AlphaBlendValue < 15 then
      OkButton.Click;
  end;
end;

procedure TfrmNewMessage.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  FormPlacement1.SaveFormPlacement;
  Action := caFree;
end;

procedure TfrmNewMessage.OkButtonClick(Sender: TObject);
begin
  Timer1.Enabled := False;
  DoMarkMsgAsRead;
  Close;
end;

procedure TfrmNewMessage.ActionButtonClick(Sender: TObject);
var
  p: TPoint;
begin
  with (Sender as TTntButton) do
    p := ClientToScreen(Point(0,Height));
  PopupMenu1.Popup(p.X,p.Y);  
end;

procedure TfrmNewMessage.PopupMenu1Popup(Sender: TObject);
begin
  Chat1.Enabled := Pos(sUnknownNumber,lbAlpha.Caption) = 0;
  Reply1.Enabled := Chat1.Enabled;
  CallContact1.Enabled := Chat1.Enabled;
  AddContact1.Enabled := Chat1.Enabled and (Pos(sUnknownContact,lbAlpha.Caption) <> 0); 
end;

procedure TfrmNewMessage.Reply1Click(Sender: TObject);
begin
  DoMarkMsgAsRead;
  frmMessageContact.Clear;
  Form1.ActionSMSNewMsg.Execute;
  frmMessageContact.AddRecipient(lbAlpha.Caption);
  frmMessageContact.Memo.SetFocus;
end;

procedure TfrmNewMessage.Forward1Click(Sender: TObject);
begin
  DoMarkMsgAsRead;
  frmMessageContact.Clear;
  Form1.ActionSMSNewMsg.Execute;
  if FLongSMS then
    if not frmMessageContact.btnLongSMS.Down then begin
      frmMessageContact.btnLongSMS.Down := True;
      frmMessageContact.btnLongSMS.Click;
    end;  
  frmMessageContact.Memo.Text := lbText.Caption;
  frmMessageContact.Memo.SelStart := Length(lbText.Caption);
end;

procedure TfrmNewMessage.Delete1Click(Sender: TObject);
var
  i: Integer;
  d: TMsgDetails;
begin
  DoMarkMsgAsRead;
  for i := 0 to FMembers.Count-1 do begin
    GetMemberDetails(i,d);
    { Delete it }
    if d.msgType = 3 then begin // In PC?
      { message is in PC, already deleted from phone, so remove it from Archive }
      Form1.DelMsgFromFolder(FFolder,d.msgPDU);
    end
    else
    if Form1.DeleteSMS(d.msgIndex,d.msgLocation) then begin
      { message has beed deleted from phone successfuly, so remove it from Inbox }
      Form1.DelMsgFromFolder(Form1.FNodeMsgInbox,d.msgPDU);
    end;
  end;
  OkButton.Click;
end;

procedure TfrmNewMessage.AddContact1Click(Sender: TObject);
begin
  if Form1.AddNewToPhonebook(lbAlpha.Caption) then begin
    { Update view }
    DoMarkMsgAsRead;
    lbAlpha.Caption := Form1.ContactNumberByTel(lbAlpha.Caption);
    { Personalize }
    FPersonalized := False;
    FPersonalizedSem := False;
    DoPersonalize;
    AddContact1.Enabled := False;
  end;
end;

procedure TfrmNewMessage.OnMouseEnter(Sender: TObject);
begin
  FPrevAlpha := AlphaBlend;
  AlphaBlend := False;
  Timer1.Enabled := False;
end;

procedure TfrmNewMessage.OnMouseLeave(Sender: TObject);
begin
  if FPrevAlpha then
    FormDeactivate(nil);
end;

procedure TfrmNewMessage.FormDeactivate(Sender: TObject);
begin
  { Was fade out started when we enter ? }
  if FAlphaCount = AlphaBlendValue then begin
    { Yes, fade out faster now }
    Timer1.Interval := 5;
    FAlphaCount := 250;
    AlphaBlendValue := 250;
  end; { No, just continue }
  AlphaBlend := True;
  Timer1.Enabled := True;
end;

procedure TfrmNewMessage.DoMarkMsgAsRead;
var
  i: Integer;
  d: TMsgDetails;
begin
  for i := 0 to FMembers.Count-1 do begin
    GetMemberDetails(i,d);
    { Mark as read }
    if d.msgType = 3 then // In PC?
      Form1.UpdateNewMessagesCounter(FFolder,d.msgPDU)
    else
      Form1.UpdateNewMessagesCounter(Form1.FNodeMsgInbox,d.msgPDU);
  end;
end;

procedure TfrmNewMessage.DoPersonalize;
var
  contact: PContactData;
  w: WideString;
  s: string;
begin
  { Try to lookup caller and load personalized info about the contact }
  if not FPersonalizedSem then begin
    FPersonalizedSem := True;
    w := Form1.ExtractContact(lbAlpha.Caption);
    if Form1.IsIrmcSyncEnabled and Form1.frmSyncPhonebook.FindContact(w,contact) then begin
      FPersonalized := True;
      try
        s := GetContactPictureFile(contact);
        if s <> '' then begin
          { Use uGlobal function }
          LoadBitmap32FromFile(s,Image32.Bitmap);
          IsCustomImage := True;
          ImagePanel.Visible := True;
        end
        else
          IsCustomImage := False;
      except
        IsCustomImage := False;
      end;
    end
    else
      IsCustomImage := False;
  end;
end;

procedure TfrmNewMessage.Set_CustomImage(const Value: Boolean);
begin
  FCustomImage := Value;
  if not Value then
    Image32.Bitmap.Assign(Form1.CommonBitmaps.Bitmap[0]);
end;

procedure TfrmNewMessage.Chat1Click(Sender: TObject);
var
  Chat: TfrmCharMessage;
  sms: TSMS;
  dt: TDateTime;
  d: TMsgDetails;
begin
  { If we are in Popup dialog, contact chat window is not visible for sure! }
  Chat := Form1.GetChatWindow(Form1.ExtractNumber(lbAlpha.Caption),True);
  Chat.Show;
  Chat.BringToFront;
  Chat.Memo.SetFocus;
  { Start new chat session, add current message as first one }
  GetMemberDetails(0,d); // get message timestamp from first message part
  sms := TSMS.Create;
  try
    sms.PDU := d.msgPDU;
    dt := sms.TimeStamp;
    if dt = 0 then dt := Now; // just in case
    Chat.AddChatText(lbAlpha.Caption,lbText.Caption,dt);
    DoMarkMsgAsRead;
  finally
    sms.Free;
  end;
  OkButton.Click;
end;

procedure TfrmNewMessage.FormShow(Sender: TObject);
begin
  SetWindowPos(Handle, HWND_TOPMOST,
    Left, Top, Width, Height,
    SWP_NOACTIVATE);
end;

procedure TfrmNewMessage.CallContact1Click(Sender: TObject);
begin
  DoMarkMsgAsRead;
  Form1.DoCallContact(lbAlpha.Caption);
end;

procedure TfrmNewMessage.Set_LongSMS(const Value: Boolean);
begin
  FLongSMS := Value;
  if Value then Caption := _('Long SMS Received')
    else Caption := _('SMS Received');
end;

destructor TfrmNewMessage.Destroy;
begin
  FMembers.Free;
  inherited;
end;

procedure TfrmNewMessage.GetMemberDetails(Index: Integer; var Details: TMsgDetails);
var
  str: string;
begin
  if (Index >= 0) and (Index < FMembers.Count) then begin
    str := FMembers[Index];
    Details.msgType := StrToInt(GetToken(str,0));
    Details.msgIndex := StrToInt(GetToken(str,1));
    case Details.msgType of
      1: Details.msgLocation := 'ME'; // do not localize
      2: Details.msgLocation := 'SM'; // do not localize
      else Details.msgLocation := ''; // message is in PC (archive folder)
    end;
    Details.msgPDU := GetToken(str,5);
  end
  else Abort;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品自在欧美一区| 亚洲另类春色校园小说| 久久99精品国产.久久久久久| 91精品国产aⅴ一区二区| 偷窥国产亚洲免费视频| 日韩一卡二卡三卡国产欧美| 久久精品国产澳门| 国产三区在线成人av| 成+人+亚洲+综合天堂| 亚洲免费观看高清完整版在线观看| 97久久精品人人做人人爽| 亚洲自拍偷拍图区| 这里是久久伊人| 国产麻豆精品theporn| 中文字幕综合网| 欧美精选在线播放| 国产一区在线不卡| 亚洲人成精品久久久久| 欧美精品一二三区| 国模套图日韩精品一区二区| 国产精品美女久久久久久久网站| 2023国产一二三区日本精品2022| 国内欧美视频一区二区| 国产精品不卡一区二区三区| 欧美日韩不卡一区| 韩国理伦片一区二区三区在线播放| 国产精品美女久久久久久2018| 欧美午夜一区二区三区免费大片| 久久精品国产精品青草| 亚洲欧美日韩久久精品| 日韩精品一区二区三区四区视频 | 欧美日韩高清一区二区不卡 | 紧缚奴在线一区二区三区| 国产免费观看久久| 欧美日韩在线播放一区| 国产在线视视频有精品| 亚洲一区二区不卡免费| 国产视频911| 91麻豆精品91久久久久同性| www.日本不卡| 蜜桃精品在线观看| 一区二区三区加勒比av| 国产欧美一区视频| 6080午夜不卡| 91在线国产福利| 国产在线国偷精品免费看| 亚洲综合清纯丝袜自拍| 国产精品天干天干在线综合| 日韩免费电影一区| 欧美中文字幕不卡| 成人深夜在线观看| 国产一区激情在线| 日韩av网站免费在线| 亚洲欧美另类图片小说| 国产日产欧美精品一区二区三区| 欧美一区二区三区免费在线看| 色哟哟一区二区三区| 国产a视频精品免费观看| 久久精品国产网站| 午夜电影网一区| 一区二区不卡在线播放 | 国产欧美日韩在线| 日韩欧美在线一区二区三区| 欧美丝袜丝交足nylons图片| av在线免费不卡| 成人午夜私人影院| 国产91高潮流白浆在线麻豆| 精品一区二区三区视频| 蜜臀av性久久久久蜜臀aⅴ| 亚洲国产三级在线| 一卡二卡三卡日韩欧美| 亚洲视频免费在线观看| 国产精品久99| ㊣最新国产の精品bt伙计久久| 国产精品素人视频| 国产无人区一区二区三区| 久久影音资源网| 精品国产一区二区三区四区四| 91精品国产品国语在线不卡| 91精品国产色综合久久久蜜香臀| 欧美日本高清视频在线观看| 欧美精品xxxxbbbb| 欧美一区二区三区四区在线观看 | 欧美一区二区三区免费大片| 欧美日韩一区二区三区免费看| 在线亚洲高清视频| 欧美日韩国产高清一区二区三区 | 欧美一级国产精品| 日韩美女在线视频| 久久日一线二线三线suv| 久久香蕉国产线看观看99| 国产色综合久久| 亚洲欧洲国产日韩| 国产精品12区| 成年人午夜久久久| 欧美性xxxxx极品少妇| 欧美日韩不卡视频| 日韩精品一区二区三区swag | 国产在线精品视频| av成人老司机| 91福利视频久久久久| 欧美喷潮久久久xxxxx| 精品久久久久久久久久久久久久久| 精品久久国产老人久久综合| 久久久精品国产99久久精品芒果| 国产精品美日韩| 亚洲成人7777| 国产综合久久久久影院| av电影在线观看一区| 欧美日韩免费高清一区色橹橹 | 91在线看国产| 9191久久久久久久久久久| www激情久久| 一区二区三区视频在线看| 亚洲一区二区欧美| 美日韩一级片在线观看| 盗摄精品av一区二区三区| 欧美羞羞免费网站| 精品99久久久久久| 夜夜揉揉日日人人青青一国产精品| 日本午夜精品视频在线观看 | 一区二区三区电影在线播| 日本va欧美va精品| 99久久精品国产一区| 欧美一区二区三区免费在线看| 国产精品久久久久国产精品日日 | 国产精品嫩草久久久久| 亚洲国产欧美在线人成| 国产成人免费在线视频| 欧美日韩一区视频| 欧美高清在线一区二区| 婷婷开心激情综合| 97精品久久久午夜一区二区三区| 日韩欧美一区在线观看| 亚洲女与黑人做爰| 国产精品123| 日韩视频中午一区| 亚洲午夜精品久久久久久久久| 国产精品亚洲第一区在线暖暖韩国| 欧美日韩在线综合| 日韩一区有码在线| 国产一区二区久久| 日韩一区二区在线观看视频| 亚洲美女精品一区| 成人av在线网站| 精品国产99国产精品| 石原莉奈一区二区三区在线观看| 99国产精品久| 中文子幕无线码一区tr| 国产一区二区三区在线观看精品| 91精品国产一区二区人妖| 亚洲综合在线视频| 91麻豆国产香蕉久久精品| 亚洲国产精品精华液ab| 国产乱码精品一区二区三区av| 日韩三级精品电影久久久| 午夜在线成人av| 欧美视频一区二区在线观看| 亚洲欧美另类图片小说| 色综合色综合色综合色综合色综合| 日本一区二区三区四区在线视频| 国产一区二区中文字幕| 日韩视频在线一区二区| 蜜臀av性久久久久蜜臀aⅴ| 91.xcao| 日韩精品91亚洲二区在线观看 | 91网站黄www| 亚洲素人一区二区| 色综合网站在线| 亚洲女厕所小便bbb| 91亚洲精品一区二区乱码| 国产精品第一页第二页第三页| 高清国产一区二区| 国产精品欧美一区喷水| av影院午夜一区| 亚洲欧洲在线观看av| 91免费观看视频在线| 综合在线观看色| 一本一道久久a久久精品| 夜色激情一区二区| 欧美精品亚洲一区二区在线播放| 日韩精品一级中文字幕精品视频免费观看| 欧美日韩午夜在线视频| 日韩中文欧美在线| 精品欧美一区二区在线观看| 国产曰批免费观看久久久| 欧美高清在线精品一区| 99久久精品一区| 亚洲一线二线三线视频| 91精品国产综合久久精品图片| 日本三级亚洲精品| 欧美精品一区二区蜜臀亚洲| 成人久久视频在线观看| 一区二区三区四区乱视频| 欧美伊人精品成人久久综合97 | 4hu四虎永久在线影院成人| 久久精品国产久精国产| 国产精品麻豆一区二区| 91福利国产精品| 捆绑调教一区二区三区|