summaryrefslogtreecommitdiff
path: root/plugins/HistoryPlusPlus/EmptyHistoryForm.pas
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/HistoryPlusPlus/EmptyHistoryForm.pas')
-rw-r--r--plugins/HistoryPlusPlus/EmptyHistoryForm.pas228
1 files changed, 0 insertions, 228 deletions
diff --git a/plugins/HistoryPlusPlus/EmptyHistoryForm.pas b/plugins/HistoryPlusPlus/EmptyHistoryForm.pas
deleted file mode 100644
index 08335d3d0b..0000000000
--- a/plugins/HistoryPlusPlus/EmptyHistoryForm.pas
+++ /dev/null
@@ -1,228 +0,0 @@
-(*
- History++ plugin for Miranda IM: the free IM client for Microsoft* Windows*
-
- Copyright (C) 2006-2009 theMIROn, 2003-2006 Art Fedorov.
- History+ parts (C) 2001 Christian Kastner
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*)
-
-{-----------------------------------------------------------------------------
- EmptyHistoryForm (historypp project)
-
- Version: 1.0
- Created: 15.03.2008
- Author: theMIROn
-
- [ Description ]
-
- Empty history dialog
-
- [ History ]
-
- 1.0 (15.04.08) First version.
-
- [ Modifications ]
-
- [ Known Issues ]
-
- Contributors: theMIROn, Art Fedorov
------------------------------------------------------------------------------}
-
-unit EmptyHistoryForm;
-
-interface
-
-uses Windows, Classes, Controls, Graphics,
- Forms, Buttons, StdCtrls, ExtCtrls,
-// HistoryControls,
- m_api;
-
-type
- TEmptyHistoryFrm = class(TForm)
- btYes: TButton;
- btNo: TButton;
- paButtons: TPanel;
- Image: TImage;
- Text: TLabel;
- procedure FormCreate(Sender: TObject);
- procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
- procedure FormShow(Sender: TObject);
- procedure btYesClick(Sender: TObject);
- private
- FContact: TMCONTACT;
- procedure TranslateForm;
- procedure PrepareForm;
- procedure SetContact(const Value: TMCONTACT);
- procedure EmptyHistory(hContact: TMCONTACT);
- protected
- function GetFormText: String;
- public
- property Contact: TMCONTACT read FContact write SetContact;
- end;
-
-implementation
-
-uses
- Math, SysUtils, HistoryForm,
- hpp_global, hpp_forms, hpp_contacts, hpp_database, hpp_bookmarks;
-
-{$R *.dfm}
-
-function GetAveCharSize(Canvas: TCanvas): TPoint;
-var
- I: Integer;
- Buffer: array[0..51] of WideChar;
- tm: TTextMetric;
-begin
- for I := 0 to 25 do Buffer[I] := WideChar(I + Ord('A'));
- for I := 0 to 25 do Buffer[I + 26] := WideChar(I + Ord('a'));
- GetTextMetrics(Canvas.Handle, tm);
- GetTextExtentPointW(Canvas.Handle, Buffer, 52, TSize(Result));
- Result.X := (Result.X div 26 + 1) div 2;
- Result.Y := tm.tmHeight;
-end;
-
-function TEmptyHistoryFrm.GetFormText: String;
-var
- DividerLine, ButtonCaptions: String;
- I: integer;
-begin
- DividerLine := StringOfChar('-', 27) + sLineBreak;
- for I := 0 to ComponentCount - 1 do
- if Components[I] is TButton then
- ButtonCaptions := ButtonCaptions +
- TButton(Components[I]).Caption + StringOfChar(' ', 3);
- ButtonCaptions := StringReplace(ButtonCaptions,'&','', [rfReplaceAll]);
- Result := DividerLine + Caption + sLineBreak +
- DividerLine + Text.Caption + sLineBreak +
- DividerLine + ButtonCaptions + sLineBreak +
- DividerLine;
-end;
-
-procedure TEmptyHistoryFrm.TranslateForm;
-begin
- Caption := TranslateUnicodeString(Caption);
- btYes.Caption := TranslateUnicodeString(btYes.Caption);
- btNo.Caption := TranslateUnicodeString(btNo.Caption);
-end;
-
-procedure TEmptyHistoryFrm.PrepareForm;
-const
- mcSpacing = 8;
- mcButtonWidth = 50;
- mcButtonHeight = 14;
- mcButtonSpacing = 4;
-var
- DialogUnits: TPoint;
- HorzSpacing, VertSpacing,
- ButtonWidth, ButtonHeight, ButtonSpacing, ButtonGroupWidth,
- IconTextWidth, IconTextHeight: Integer;
- TextRect: TRect;
-begin
- DialogUnits := GetAveCharSize(Canvas);
- HorzSpacing := MulDiv(mcSpacing, DialogUnits.X, 8);
- VertSpacing := MulDiv(mcSpacing, DialogUnits.X, 4);
- ButtonWidth := MulDiv(mcButtonWidth, DialogUnits.X, 4);
- ButtonHeight := MulDiv(mcButtonHeight, DialogUnits.Y, 8);
- ButtonSpacing := MulDiv(mcButtonSpacing, DialogUnits.X, 4);
-
- SetRect(TextRect, 0, 0, Screen.Width div 2, 0);
- DrawTextW(Canvas.Handle, PChar(Text.Caption),
- Length(Text.Caption)+1, TextRect,
- DT_EXPANDTABS or DT_CALCRECT or DT_WORDBREAK or
- DrawTextBiDiModeFlagsReadingOnly);
-
- IconTextWidth := Image.Width + HorzSpacing + TextRect.Right;
- IconTextHeight := Max(Image.Height,TextRect.Bottom);
-
- ButtonGroupWidth := ButtonWidth*2 + ButtonSpacing;
-
- BorderWidth := VertSpacing;
- ClientWidth := Max(IconTextWidth, ButtonGroupWidth);
- ClientHeight := IconTextHeight + VertSpacing + paButtons.Height;
- Text.SetBounds(Image.Width + HorzSpacing, 0,
- TextRect.Right, TextRect.Bottom);
-
- btYes.SetBounds((ClientWidth - ButtonGroupWidth) div 2,0, ButtonWidth, ButtonHeight);
- btNo.SetBounds(btYes.Left + btYes.Width + ButtonSpacing,0, ButtonWidth, ButtonHeight);
-end;
-
-procedure TEmptyHistoryFrm.FormShow(Sender: TObject);
-begin
- TranslateForm;
- PrepareForm;
-end;
-
-procedure TEmptyHistoryFrm.FormCreate(Sender: TObject);
-var
- NonClientMetrics: TNonClientMetrics;
-begin
- NonClientMetrics.cbSize := sizeof(NonClientMetrics);
- if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then
- Font.Handle := CreateFontIndirect(NonClientMetrics.lfMessageFont);
- MakeFontsParent(Self);
- Canvas.Font := Font;
- DoubleBuffered := True;
- MakeDoubleBufferedParent(Self);
-end;
-
-procedure TEmptyHistoryFrm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
-begin
- if (Shift = [ssCtrl]) and (Key = Word('C')) then
- begin
- CopyToClip(GetFormText,CP_ACP);
- Key := 0;
- end;
-end;
-
-procedure TEmptyHistoryFrm.SetContact(const Value: TMCONTACT);
-begin
- FContact := Value;
- Image.Picture.Icon.Handle := LoadIcon(0, IDI_QUESTION);
- Text.Caption :=
- TranslateW('Do you really want to delete ALL items for this contact?')+#10#13+
- #10#13+
- TranslateW('Note: It can take several minutes for large histories');
- btYes.Default := true;
-end;
-
-procedure TEmptyHistoryFrm.EmptyHistory(hContact: TMCONTACT);
-var
- hDBEvent,prevhDbEvent: THandle;
-begin
- BookmarkServer.Contacts[hContact].Clear;
- hDBEvent := db_event_last(hContact);
- SetSafetyMode(False);
- while hDBEvent <> 0 do
- begin
- prevhDbEvent := db_event_prev(hContact,hDBEvent);
- if db_event_delete(hDBEvent) = 0 then
- hDBEvent := prevhDbEvent
- else
- hDBEvent := 0;
- end;
- SetSafetyMode(True);
-end;
-
-procedure TEmptyHistoryFrm.btYesClick(Sender: TObject);
-begin
- if Assigned(Owner) and (Owner is THistoryFrm) then
- THistoryFrm(Owner).EmptyHistory
- else
- EmptyHistory(FContact);
-end;
-
-end.