Files
lazarus-ccr/components/jvcllaz/examples/JvTimeFramework/tfsettings.pas
2019-08-16 10:15:01 +00:00

158 lines
3.9 KiB
ObjectPascal

unit tfSettings;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ButtonPanel, StdCtrls,
ExtCtrls, EditBtn, JvTFUtils, JvTFDays;
type
TGlobalSettings = record
StartToday: Boolean;
StartDate: TDate;
Hr2400: Boolean; // 24 hour or 12 hour AM/PM format
FirstDayOfWeek: TTFDayOfWeek;
PrimeTimeStart: TTime;
PrimeTimeEnd: TTime;
PrimeTimeColor: TColor;
IconSet: Integer;
end;
var
GlobalSettings: TGlobalSettings = (
StartToday: true;
StartDate: 0;
Hr2400: false;
FirstDayOfWeek: dowSunday;
PrimeTimeStart: 8 * ONE_HOUR;
PrimeTimeEnd: 17 * ONE_HOUR;
PrimeTimeColor: $00C4FFFF;
IconSet: 0
);
type
{ TSettingsForm }
TSettingsForm = class(TForm)
Bevel1: TBevel;
Bevel2: TBevel;
Bevel3: TBevel;
ButtonPanel1: TButtonPanel;
cbTimeFormat: TComboBox;
cbFirstDayOfWeek: TComboBox;
clbPrimeTimeColor: TColorButton;
cbIconSet: TComboBox;
deStartDate: TDateEdit;
Label1: TLabel;
lblIconSet: TLabel;
lblPrimeTimeStart: TLabel;
lblPrimeTimeEnd: TLabel;
lblFirstDayOfWeek: TLabel;
lblTimeFormat: TLabel;
Panel1: TPanel;
edPrimeTimeStart: TTimeEdit;
edPrimeTimeEnd: TTimeEdit;
StartDatePanel: TPanel;
rbStartDate: TRadioButton;
rbStartToday: TRadioButton;
procedure deStartDateAcceptDate(Sender: TObject; var ADate: TDateTime;
var AcceptDate: Boolean);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure OKButtonClick(Sender: TObject);
private
FOKPressed: Boolean;
procedure ControlsToSettings;
procedure SettingsToControls;
end;
var
SettingsForm: TSettingsForm;
implementation
{$R *.lfm}
procedure TSettingsForm.ControlsToSettings;
begin
GlobalSettings.StartToday := rbStartToday.Checked;
if not GlobalSettings.StartToday and (GlobalSettings.StartDate = Date) then
GlobalSettings.StartDate := 0
else
GlobalSettings.StartDate := deStartDate.Date;
GlobalSettings.Hr2400 := cbTimeFormat.ItemIndex = 0;
GlobalSettings.FirstDayOfWeek := TTFDayOfWeek(cbFirstDayOfWeek.ItemIndex);
GlobalSettings.PrimeTimeStart := frac(edPrimeTimeStart.Time);
GlobalSettings.PrimeTimeEnd := frac(edPrimeTimeEnd.Time);
GlobalSettings.PrimeTimeColor := clbPrimeTimeColor.ButtonColor;
GlobalSettings.IconSet := cbIconSet.ItemIndex;
end;
procedure TSettingsForm.deStartDateAcceptDate(Sender: TObject;
var ADate: TDateTime; var AcceptDate: Boolean);
begin
rbStartDate.Checked := true;
end;
procedure TSettingsForm.SettingsToControls;
begin
if GlobalSettings.StartToday then
rbStartToday.Checked := true
else
rbStartDate.Checked := true;
if GlobalSettings.StartDate = 0 then
deStartDate.Date := Date()
else
deStartDate.Date := GlobalSettings.StartDate;
cbTimeFormat.ItemIndex := ord(not GlobalSettings.Hr2400);
cbFirstDayOfWeek.ItemIndex := ord(GlobalSettings.FirstDayOfWeek);
edPrimeTimeStart.Time := GlobalSettings.PrimeTimeStart;
edPrimeTimeEnd.Time := GlobalSettings.PrimeTimeEnd;
clbPrimeTimeColor.ButtonColor := GlobalSettings.PrimeTimeColor;
cbIconSet.ItemIndex := GlobalSettings.IconSet;
end;
procedure TSettingsForm.FormClose(Sender: TObject;
var CloseAction: TCloseAction);
begin
if FOKPressed then
ControlsToSettings;
end;
procedure TSettingsForm.FormCreate(Sender: TObject);
var
i: Integer;
begin
cbFirstDayOfWeek.Items.BeginUpdate;
try
cbFirstDayOfWeek.Clear;
for i:=1 to 7 do
cbFirstDayOfWeek.Items.Add(FormatSettings.LongDayNames[i]);
finally
cbFirstDayOfWeek.Items.EndUpdate;
end;
end;
procedure TSettingsForm.FormShow(Sender: TObject);
begin
FOKPressed := false;
SettingsToControls;
end;
procedure TSettingsForm.OKButtonClick(Sender: TObject);
begin
FOKPressed := true;
end;
end.