ueditevent.pas

来自「FMA is a free1 powerful phone editing to」· PAS 代码 · 共 567 行 · 第 1/2 页

PAS
567
字号
unit uEditEvent;

{
*******************************************************************************
* Descriptions: Edit Calendar Event
* $Source: /cvsroot/fma/fma/uEditEvent.pas,v $
* $Locker:  $
*
* Todo:
*
* Change Log:
* $Log: uEditEvent.pas,v $
*
}

interface

uses
  Windows, TntWindows, Messages, SysUtils, TntSysUtils, Variants, Classes, TntClasses, Graphics, TntGraphics,
  Controls, TntControls, Forms, TntForms, Dialogs, TntDialogs, ExtCtrls, TntExtCtrls, StdCtrls, TntStdCtrls,
  ComCtrls, TntComCtrls, UniTntCtrls, Buttons, TntButtons, Menus, TntMenus, VpData, VpMisc,
  MPlayer;

type
  TfrmEditEvent = class(TTntForm)
    PageControl1: TTntPageControl;
    TabSheet1: TTntTabSheet;
    Image1: TTntImage;
    Bevel1: TTntBevel;
    Label1: TTntLabel;
    txtLocation: TTntEdit;
    txtSubject: TTntEdit;
    Label2: TTntLabel;
    OkButton: TTntButton;
    CancelButton: TTntButton;
    TabSheet5: TTntTabSheet;
    Label3: TTntLabel;
    txtOutlookID: TTntEdit;
    Label25: TTntLabel;
    txtFileAs: TTntEdit;
    Label4: TTntLabel;
    TntComboBoxCategories: TTntComboBox;
    TntDatePickerStart: TTntDateTimePicker;
    Label5: TTntLabel;
    Label6: TTntLabel;
    TntTimePickerStart: TTntDateTimePicker;
    Bevel2: TTntBevel;
    Label7: TTntLabel;
    Label8: TTntLabel;
    TntTimePickerEnd: TTntDateTimePicker;
    TntDatePickerEnd: TTntDateTimePicker;
    TntComboBoxDuration: TTntComboBox;
    Label9: TTntLabel;
    TabSheet2: TTntTabSheet;
    TntRadioGroupReminder: TTntRadioGroup;
    lblName: TTntLabel;
    Image2: TTntImage;
    lblName2: TTntLabel;
    Bevel3: TTntBevel;
    Image3: TTntImage;
    lblName3: TTntLabel;
    Bevel4: TTntBevel;
    TabSheet3: TTntTabSheet;
    TntBevel1: TTntBevel;
    Image4: TTntImage;
    lblName4: TTntLabel;
    TntRadioGroupReccurence: TTntRadioGroup;
    lblDisabledReccurence: TTntLabel;
    TntLabel3: TTntLabel;
    TntComboBoxRangeEnd: TTntComboBox;
    Label26: TTntLabel;
    Label10: TTntLabel;
    TntTimePickerReminder: TTntDateTimePicker;
    TntDatePickerReminder: TTntDateTimePicker;
    TntLabel2: TTntLabel;
    TntDatePickerReccurence: TTntDateTimePicker;
    TntTimePickerReccurence: TTntDateTimePicker;
    TntLabel1: TTntLabel;
    TntLabel4: TTntLabel;
    TntCheckBox1: TTntCheckBox;
    TntCheckBox2: TTntCheckBox;
    TntCheckBox3: TTntCheckBox;
    TntCheckBox4: TTntCheckBox;
    TntCheckBox7: TTntCheckBox;
    TntCheckBox6: TTntCheckBox;
    TntCheckBox5: TTntCheckBox;
    GroupBox2: TTntGroupBox;
    Label14: TTntLabel;
    Label16: TTntLabel;
    Label17: TTntLabel;
    imgSnd: TTntImage;
    lblSndType: TTntLabel;
    lblSndName: TTntLabel;
    lblSndSize: TTntLabel;
    TntButton1: TTntButton;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure OkButtonClick(Sender: TObject);
    procedure TntRadioGroupReminderClick(Sender: TObject);
    procedure DurationChange(Sender: TObject);
    procedure StartDateTimeChange(Sender: TObject);
    procedure EndDateTimeChange(Sender: TObject);
    procedure txtSubjectChange(Sender: TObject);
    procedure TntDatePickerReminderChange(Sender: TObject);
    procedure TntRadioGroupReccurenceClick(Sender: TObject);
    procedure TntComboBoxRangeEndChange(Sender: TObject);
    procedure TntDatePickerReccurenceChange(Sender: TObject);
    procedure TntButton1Click(Sender: TObject);
    procedure CancelButtonClick(Sender: TObject);
  private
    { Private declarations }
    FAlarmAdv,FPrevWeekDay: integer;
    FAlarmAdvType: TVpAlarmAdvType;
    function GetDayCheck(Day: Integer): TTntCheckbox;
    procedure DoSanityCheck;
    function GetReminderStartVisible: boolean;
    procedure SetReminderStartVisible(const Value: boolean);
    function GetReccurenceEndVisible: boolean;
    procedure SetReccurenceEndVisible(const Value: boolean);
    function GetReccuWeekDaysVisible: boolean;
    procedure SetReccuWeekDaysVisible(const Value: boolean);
    function GetWeekDays: WideString;
    procedure SetWeekDays(const Value: WideString);
    procedure DoSetStatus(Sender: TObject; IsEnabled: boolean);
  public
    { Public declarations }
    procedure UpdateAlarm;
    procedure UpdateAlarmAdv;
    procedure UpdateDudation;
    procedure UpdateWeekDays;
    property WeekDays: WideString read GetWeekDays write SetWeekDays;
    property AdvMins: Integer read FAlarmAdv write FAlarmAdv;
    property AdvType: TVpAlarmAdvType read FAlarmAdvType write FAlarmAdvType;
    property ReminderStartVisible: boolean read GetReminderStartVisible write SetReminderStartVisible;
    property ReccurenceEndVisible: boolean read GetReccurenceEndVisible write SetReccurenceEndVisible;
    property ReccuWeekDaysVisible: boolean read GetReccuWeekDaysVisible write SetReccuWeekDaysVisible;
  end;

var
  frmEditEvent: TfrmEditEvent;

implementation

uses
  gnugettext, gnugettexthelpers,
  DateUtils, Math, Unit1, uVCalendar, uDialogs;

{$R *.dfm}

type
  THackControl = class(TWinControl)
  public
    property Enabled;
    property Color;
  end;

procedure TfrmEditEvent.FormCreate(Sender: TObject);
begin
  gghTranslateComponent(self);
  lblSndType.Left := imgSnd.Left + imgSnd.Width + 4;
  lblSndName.Left := Label14.Left + Label14.Width + 4;
  lblSndSize.Left := Label16.Left + Label16.Width + 4;

  lblSndType.Caption := _('(polyphonic stereo sound, supported by phone)');
  lblSndName.Caption := '';
  lblSndSize.Caption := _('0,0 KB (0 bytes)');

  // gghTranslateComponent changing combo item index :/ set it manually.
  TntComboBoxDuration.ItemIndex := 4;
  TntComboBoxRangeEnd.ItemIndex := 0;

  Image2.Picture.Assign(Image1.Picture);
  Image3.Picture.Assign(Image1.Picture);
  Image4.Picture.Assign(Image1.Picture);

{$IFNDEF VER150}
  Form1.ThemeManager1.CollectForms(Self);
{$ENDIF}
end;

procedure TfrmEditEvent.FormShow(Sender: TObject);
begin
  PageControl1.ActivePageIndex := 0;
  FPrevWeekDay := 0;

  TabSheet3.Enabled := Form1.IsK700orBetter; // K610 previously
  TntRadioGroupReccurence.Enabled := TabSheet3.Enabled;
  lblDisabledReccurence.Visible := not TabSheet3.Enabled;
  StartDateTimeChange(nil);
  TntRadioGroupReccurenceClick(nil);

  txtSubject.SetFocus;
end;

procedure TfrmEditEvent.OkButtonClick(Sender: TObject);
begin
  DoSanityCheck;
  ModalResult := mrOk;
end;

procedure TfrmEditEvent.DoSanityCheck;
begin
  if Trim(txtSubject.Text) = '' then begin
    MessageDlgW(_('You have to enter Event subject.'),mtError,MB_OK);
    Abort;
  end;
end;

procedure TfrmEditEvent.TntRadioGroupReminderClick(Sender: TObject);
begin
  ReminderStartVisible := TntRadioGroupReminder.ItemIndex <> 0;

  case TntRadioGroupReminder.ItemIndex of
    0: begin
         TntDatePickerReminder.DateTime := TntDatePickerStart.DateTime;
         TntTimePickerReminder.DateTime := TntDatePickerStart.DateTime;
       end;
    1: begin
         TntDatePickerReminder.DateTime := TntDatePickerStart.DateTime;
         TntTimePickerReminder.DateTime := TntDatePickerStart.DateTime;
       end;
    2: begin
         TntDatePickerReminder.DateTime := IncMinute(TntDatePickerStart.DateTime, -5);
         TntTimePickerReminder.DateTime := IncMinute(TntDatePickerStart.DateTime, -5);
       end;
    3: begin
         TntDatePickerReminder.DateTime := IncMinute(TntDatePickerStart.DateTime, -10);
         TntTimePickerReminder.DateTime := IncMinute(TntDatePickerStart.DateTime, -10);
       end;
    4: begin
         TntDatePickerReminder.DateTime := IncMinute(TntDatePickerStart.DateTime, -15);
         TntTimePickerReminder.DateTime := IncMinute(TntDatePickerStart.DateTime, -15);
       end;
    5: begin
         TntDatePickerReminder.DateTime := IncMinute(TntDatePickerStart.DateTime, -30);
         TntTimePickerReminder.DateTime := IncMinute(TntDatePickerStart.DateTime, -30);
       end;
    6: begin
         TntDatePickerReminder.DateTime := IncHour(TntDatePickerStart.DateTime, -1);
         TntTimePickerReminder.DateTime := IncHour(TntDatePickerStart.DateTime, -1);
       end;
    7: begin
         TntDatePickerReminder.DateTime := TntDatePickerStart.DateTime;
         TntTimePickerReminder.DateTime := TntDatePickerStart.DateTime;
       end;
  end;

  UpdateAlarmAdv;
end;

procedure TfrmEditEvent.DurationChange(Sender: TObject);
var
  DateTimeEnd: TDateTime;
begin
  DoSetStatus(TntDatePickerEnd,TntComboBoxDuration.ItemIndex = 4);
  DoSetStatus(TntTimePickerEnd,TntDatePickerEnd.Enabled);

  Label7.Enabled := TntDatePickerEnd.Enabled;
  Label8.Enabled := TntDatePickerEnd.Enabled;
  
  // If Other duration is selected, do nothing
  if TntComboBoxDuration.ItemIndex <> 4 then begin
    DateTimeEnd := TntDatePickerStart.DateTime;
    case TntComboBoxDuration.ItemIndex of
      // 30 minutes
      0: DateTimeEnd := IncMinute(DateTimeEnd, 30);
      // 1 hour
      1: DateTimeEnd := IncHour(DateTimeEnd);
      // 2 hours
      2: DateTimeEnd := IncHour(DateTimeEnd, 2);
      // 4 hours
      3: DateTimeEnd := IncHour(DateTimeEnd, 4);
    end;
    TntDatePickerEnd.DateTime := DateTimeEnd;
    TntTimePickerEnd.DateTime := DateTimeEnd;
  end;
end;

procedure TfrmEditEvent.StartDateTimeChange(Sender: TObject);
var
  DateTimeStart: TDateTime;
begin
  // Synchronize DateTime of pickers
  DateTimeStart := DateOf(TntDatePickerStart.DateTime) + TimeOf(TntTimePickerStart.DateTime);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?