unit EditorCitas;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxSchedulerEventEditor, cxLookAndFeelPainters, cxMemo,
  cxDropDownEdit, cxCheckBox, cxSpinEdit, cxTimeEdit, cxCalendar, ExtCtrls,
  cxMaskEdit, cxImageComboBox, cxControls, cxContainer, cxEdit, cxTextEdit,
  StdCtrls, cxButtons, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox,
  TablaObras, cxRadioGroup;

type
  TfEditorCitas = class(TcxSchedulerEventEditor)
    Panel1: TPanel;
    Bevel6: TBevel;
    cbObra: TcxComboBox;
    teCodigoContrato: TEdit;
    cbTipos: TcxComboBox;
    Tipo: TLabel;
    cxRadioButton1: TcxRadioButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure cbObraPropertiesEditValueChanged(Sender: TObject);
    procedure cbTiposPropertiesEditValueChanged(Sender: TObject);
  private
    FListaObras : TListaObras;
    procedure CargarObras;
    procedure CargarTipos;
  protected
    procedure ApplyChanges; override;
    function GetFormColor: TColor; override;
    procedure InitializeControls; override;
    procedure LoadEventValuesIntoControls; override;
    function IsValid: Boolean; override;
    procedure SetCaptions; override;
    procedure SetReadOnly(AValue: Boolean); override;
    procedure UpdateEventValuesFromControls; override;
  public
    //
  end;

var
  fEditorCitas: TfEditorCitas;

implementation

uses
  cxSchedulerDialogs, Configuracion, StrFunc,
  cxSchedulerUtils;
{$R *.dfm}

{ TfEditorCitas }

procedure TfEditorCitas.ApplyChanges;
begin
  inherited;

end;

procedure TfEditorCitas.CargarObras;
var
  I, J, AResourceIndex: Integer;
begin
  I := 0;
  try
    with cbObra.Properties.Items do
    begin
      BeginUpdate;
      Clear;
      for I := 0 to FListaObras.Count - 1 do
      begin
        J := Add(FListaObras.Obras[I].CodigoContrato + ' ' + FListaObras.Obras[I].Nombre);
        if VarToStr(Event.GetCustomFieldValueByName('CODIGOCONTRATO')) = FListaObras.Obras[I].CodigoContrato then
          AResourceIndex := I;
      end;
      cbObra.ItemIndex := AResourceIndex;
    end;
  finally
    cbObra.Properties.Items.EndUpdate;
  end;
end;

function TfEditorCitas.GetFormColor: TColor;
begin
  Result := $00F9FEFF;
end;

procedure TfEditorCitas.InitializeControls;
begin
  inherited InitializeControls;
  CargarObras;
  CargarTipos;
end;

function TfEditorCitas.IsValid: Boolean;
begin
  Result := inherited IsValid;
end;

procedure TfEditorCitas.LoadEventValuesIntoControls;
var
  i : integer;
begin
  inherited LoadEventValuesIntoControls;
  if not EsCadenaVacia(Event.GetCustomFieldValueByName('TIPOTAREA')) then
    cbTipos.EditValue := Event.GetCustomFieldValueByName('TIPOTAREA');
  if not EsCadenaVacia(Event.GetCustomFieldValueByName('CODIGOCONTRATO')) then
    teCodigoContrato.Text := Event.GetCustomFieldValueByName('CODIGOCONTRATO');
end;

procedure TfEditorCitas.SetCaptions;
begin
  inherited SetCaptions;
  lbResource.Caption := 'Instalador:';
  lbSubject.Caption := 'Asunto:';
  lbStartTime.Caption := 'Comienzo:';
  lbEndTime.Caption := 'Final:';
  cbAllDayEvent.Caption := 'Todo el día';
end;

procedure TfEditorCitas.SetReadOnly(AValue: Boolean);
begin
  inherited;
end;

procedure TfEditorCitas.UpdateEventValuesFromControls;
begin
  inherited UpdateEventValuesFromControls;


//$F4A6C4, $C4CEA4, $74E6FC
  try
    //Event.LabelColor := EventLabelColors[cbTipos.ItemIndex];

    // post the data from the custom editing controls
    if not VarIsNull(teCodigoContrato.Text) then
      Event.SetCustomFieldValueByName('CODIGOCONTRATO', teCodigoContrato.Text);
    if not VarIsNull(cbTipos.EditValue) then
      Event.SetCustomFieldValueByName('TIPOTAREA', cbTipos.EditValue);

  except
    on E: Exception do
      ShowMessage('Can''t post data' + #13#10 + E.Message);
  end;
end;

procedure TfEditorCitas.FormCreate(Sender: TObject);
begin
  inherited;
  FListaObras := TListaObras.Create(tsoAbiertas);
end;

procedure TfEditorCitas.FormDestroy(Sender: TObject);
begin
  inherited;
  FreeAndNil(FListaObras);

end;

procedure TfEditorCitas.cbObraPropertiesEditValueChanged(Sender: TObject);
begin
  inherited;
  if not EsCadenaVacia(cbObra.EditValue) then
  begin
    teCodigoContrato.Text := Copy(cbObra.EditValue, 0, Pos(' ', cbObra.EditValue)-1);
    teSubject.EditValue := Copy(cbObra.EditValue, Pos(' ', cbObra.EditValue), MaxInt);
    teSubject.EditModified := True;
  end;
end;

procedure TfEditorCitas.CargarTipos;
begin
  with cbTipos.Properties do
  begin
    BeginUpdate;
    Items.Clear;
    Items.Add('Montaje');
    Items.Add('Remate');
    Items.Add('Entrega de material');
    EndUpdate;
  end;
  cbTipos.ItemIndex := 0;
end;

procedure TfEditorCitas.cbTiposPropertiesEditValueChanged(Sender: TObject);
begin
  inherited;
  icbLabel.ItemIndex := cbTipos.ItemIndex + 1;
  icbLabel.EditModified := True;
end;

initialization
  cxEventEditorClass := TfEditorCitas; // indicate that the new Event modal dialog will be invoked at runtime

end.
