• R/O
  • SSH
  • HTTPS

mantisbtmonitor: Commit


Commit MetaInfo

Revision198 (tree)
Zeit2023-08-26 03:03:33
Autorderekwildstar

Log Message

Novos recursos adicionados ou substituídos
Otimizações em ShowSpecialDialog
Criados alguns métodos DoXXX para lidar com itens de menus dinamicos (ainda não concluídos)
Criado o método SSD como wrapper para ShowSpecialDialog
Criado o método CloseMyOwner
Alguns itens de menu ainda não foram adicionados dinamicamente
Este código contém erros e deve ser o último commit direto no SVN. Os próximos commits diretos serão no git migrado e indiretamente no repositório do OSDN

Ändern Zusammenfassung

Diff

--- trunk/client/prj/MantisBTMonitor.dproj (revision 197)
+++ trunk/client/prj/MantisBTMonitor.dproj (revision 198)
@@ -107,12 +107,12 @@
107107 <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
108108 <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
109109 <VerInfo_Locale>1033</VerInfo_Locale>
110- <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.3.0.1048;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=</VerInfo_Keys>
110+ <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.3.0.1065;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=</VerInfo_Keys>
111111 <DCC_DebugInformation>2</DCC_DebugInformation>
112112 <DCC_SymbolReferenceInfo>2</DCC_SymbolReferenceInfo>
113113 <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
114114 <DCC_MapFile>3</DCC_MapFile>
115- <VerInfo_Build>1048</VerInfo_Build>
115+ <VerInfo_Build>1065</VerInfo_Build>
116116 <Debugger_RunParams>/desenvolvimento</Debugger_RunParams>
117117 </PropertyGroup>
118118 <ItemGroup>
--- trunk/client/src/lib/UFunctions.pas (revision 197)
+++ trunk/client/src/lib/UFunctions.pas (revision 198)
@@ -51,8 +51,8 @@
5151 //: especiais de aprovação/reprovação de tarefas, apenas os cabeçalhos padrão de
5252 //: comentários de acordo com a unidade do usuário
5353 procedure AddCommentHeader(var AComment: String; const ACommentSubHeader: String = '');
54-function ShowSpecialDialog(AType: TSpecialDialogType; AMainInstruction: String; AContent: String; AExpandedInformation: String = ''; ACollapsedControlText: String = ''; AExpandedControlText: String = ''; AFooterIcon: TSpecialDialogType = TSpecialDialogType.None; AFooterText: String = ''): Boolean; overload;
55-function ShowSpecialDialog(AParentHandle: HWND; AType: TSpecialDialogType; AMainInstruction: String; AContent: String; AExpandedInformation: String = ''; ACollapsedControlText: String = ''; AExpandedControlText: String = ''; AFooterIcon: TSpecialDialogType = TSpecialDialogType.None; AFooterText: String = ''): Boolean; overload;
54+function ShowSpecialDialog(const AType: TSpecialDialogType; const AMainInstruction: String; const AContent: String; const AExpandedInformation: String = ''; const ACollapsedControlText: String = ''; const AExpandedControlText: String = ''; const AFooterIcon: TSpecialDialogType = TSpecialDialogType.None; const AFooterText: String = ''): Boolean; overload;
55+function ShowSpecialDialog(const AParentHandle: HWND; const AType: TSpecialDialogType; const AMainInstruction: String; const AContent: String; const AExpandedInformation: String = ''; const ACollapsedControlText: String = ''; const AExpandedControlText: String = ''; const AFooterIcon: TSpecialDialogType = TSpecialDialogType.None; const AFooterText: String = ''): Boolean; overload;
5656 function AddHistory(const ATaskId: Cardinal; const AFieldName: String; const AOldValue: String; const ANewValue: String): Boolean; overload;
5757 function AddHistory(const ATaskId: Cardinal; const AFieldName: String; const AValue: String): Boolean; overload;
5858 function AddHistoryAsGC(const ATaskId: Cardinal; const AFieldName: String; const AValue: String): Boolean;
@@ -1126,7 +1126,7 @@
11261126 end;
11271127 end;
11281128
1129-function ShowSpecialDialog(AParentHandle: HWND; AType: TSpecialDialogType; AMainInstruction: String; AContent: String; AExpandedInformation: String; ACollapsedControlText: String; AExpandedControlText: String; AFooterIcon: TSpecialDialogType; AFooterText: String): Boolean;
1129+function ShowSpecialDialog(const AParentHandle: HWND; const AType: TSpecialDialogType; const AMainInstruction: String; const AContent: String; const AExpandedInformation: String; const ACollapsedControlText: String; const AExpandedControlText: String; const AFooterIcon: TSpecialDialogType; const AFooterText: String): Boolean;
11301130 begin
11311131 with TKRKTaskDialog.Create(nil) do
11321132 try
@@ -1148,7 +1148,7 @@
11481148 end;
11491149 end;
11501150
1151-function ShowSpecialDialog(AType: TSpecialDialogType; AMainInstruction: String; AContent: String; AExpandedInformation: String; ACollapsedControlText: String; AExpandedControlText: String; AFooterIcon: TSpecialDialogType; AFooterText: String): Boolean;
1151+function ShowSpecialDialog(const AType: TSpecialDialogType; const AMainInstruction: String; const AContent: String; const AExpandedInformation: String; const ACollapsedControlText: String; const AExpandedControlText: String; const AFooterIcon: TSpecialDialogType; const AFooterText: String): Boolean;
11521152 begin
11531153 with TKRKTaskDialog.Create(nil) do
11541154 try
--- trunk/client/src/UDamoPrincipal.pas (revision 197)
+++ trunk/client/src/UDamoPrincipal.pas (revision 198)
@@ -89,10 +89,16 @@
8989 FMyTasks: TTasks;
9090 FFirstColorIndex: Byte;
9191 FStatusCount: Byte;
92+
9293 procedure DoOpenTask(Sender: TObject);
9394 procedure DoStartTests(Sender: TObject);
9495 procedure DoStartDevelopment(Sender: TObject);
96+ procedure DoPause(Sender: TObject);
97+ procedure DoPauseAndForward(Sender: TObject);
9598 procedure DoStartHomologation(Sender: TObject);
99+ procedure DoSendToTests(Sender: TObject);
100+ procedure DoSendToHomologation(Sender: TObject);
101+ procedure DoSendToHomologationWithoutTests(Sender: TObject);
96102 procedure DoOpenWithMantis(Sender: TObject);
97103 procedure AddMyTasksToPopUpMenu;
98104 procedure ClearPopUpMenu;
@@ -102,6 +108,7 @@
102108 procedure DoBeforeGetTasks;
103109 procedure ShowInfoBalloon(AText, ATitle: String; AOnClick: TNotifyEvent = nil; ATaskId: Cardinal = 0);
104110 procedure DoDrawHeaderItem(ASender: TObject; ACanvas: TCanvas; ARect: TRect; ASelected: Boolean);
111+ procedure ExecuteTaskAction(const ATaskId: Cardinal; const AActionId: Byte);
105112 public
106113 { Public declarations }
107114 constructor Create(AOwner: TComponent); override;
@@ -108,6 +115,7 @@
108115 destructor Destroy; override;
109116
110117 procedure Refresh(AFormToBlock: TForm = nil);
118+ procedure VisibleActions(const ATask: TTask; out AStartDevelopment: Boolean; out AStartTests: Boolean; out AStartHomologation: Boolean; out APause: Boolean; out APauseAndForward: Boolean; out ASendToTests: Boolean; out ASendToHomologation: Boolean; out AApprove: Boolean; out ADisapprove: Boolean; out AMarkAsDone: Boolean; out AReject: Boolean);
111119 // procedure Teste;
112120
113121 property SplashTimeOut: Cardinal read FSplashTimeOut write FSplashTimeOut;
@@ -234,6 +242,21 @@
234242 RenderProjectNameAsMenuHeader(TMenuItem(ASender).Caption,ACanvas,ARect,TMenuItem(ASender).Tag);
235243 end;
236244
245+procedure TDamoPrincipal.VisibleActions(const ATask: TTask; out AStartDevelopment: Boolean; out AStartTests: Boolean; out AStartHomologation: Boolean; out APause: Boolean; out APauseAndForward: Boolean; out ASendToTests: Boolean; out ASendToHomologation: Boolean; out AApprove: Boolean; out ADisapprove: Boolean; out AMarkAsDone: Boolean; out AReject: Boolean);
246+begin
247+ AReject := ATask.CanReject;
248+ AStartDevelopment := ATask.CanStartDevelopment;
249+ APause := ATask.CanPauseDevelopment or ATask.CanPauseTests or ATask.CanPauseHomologation;
250+ APauseAndForward := ATask.CanPauseDevelopmentAndForward;
251+ ASendToTests := ATask.CanSendToTest;
252+ ASendToHomologation := ATask.CanSendToHomologation or ATask.CanSendToHomologationWithoutTests;
253+ AStartTests := ATask.CanStartTests;
254+ AApprove := ATask.CanApproveTests or ATask.CanApproveHomologation;
255+ ADisapprove := ATask.CanDisapproveTests or ATask.CanDisapproveHomologation;
256+ AStartHomologation := ATask.CanStartHomologation;
257+ AMarkAsDone := ATask.CanMarkAsDone;
258+end;
259+
237260 procedure TDamoPrincipal.AddMyTasksToPopUpMenu;
238261 //--////////////////////////////////////////////////////////////////////////////
239262 function Separator: TMenuItem;
@@ -245,7 +268,33 @@
245268 procedure AddTask(const AParentMenuItem: TMenuItem; const ATask: TTask);
246269 var
247270 MenuItem: TMenuItem;
271+ CanStartDevelopment: Boolean;
272+ CanStartTests: Boolean;
273+ CanStartHomologation: Boolean;
274+ CanPause: Boolean;
275+ CanPauseAndForward: Boolean;
276+ CanSendToTests: Boolean;
277+ CanSendToHomologation: Boolean;
278+ CanApprove: Boolean;
279+ CanDisapprove: Boolean;
280+ CanMarkAsDone: Boolean;
281+ CanReject: Boolean;
282+// - ///////////////////////////////////////////////////////////////////////////
283+procedure AddMenuItem(const AOnExecute: TNotifyEvent; const ACaption: String; const AImageIndex: Byte);
248284 begin
285+ MenuItem := TMenuItem.Create(Self);
286+ MenuItem.Tag := ATask.Id;
287+ MenuItem.Action := TAction.Create(Self);
288+ MenuItem.Action.Tag := ATask.Id;
289+ MenuItem.Action.OnExecute := AOnExecute;
290+ TAction(MenuItem.Action).Category := MY_TASKS;
291+ TAction(MenuItem.Action).ActionList := AMAN;
292+ TAction(MenuItem.Action).Caption := ACaption;
293+ TAction(MenuItem.Action).ImageIndex := AImageIndex;
294+ AParentMenuItem.Insert(0,MenuItem);
295+end;
296+// - ///////////////////////////////////////////////////////////////////////////
297+begin
249298 // Abaixo, a MenuItem.Tag está recebendo por padrão o id da tarefa, porém para
250299 // os itens de menu que são cabeçalhos eu estou atribuindo a cor do status.
251300 // Quando a propriedade tag tem algum valor, significa que o item de menu
@@ -268,52 +317,120 @@
268317 // Separador
269318 AParentMenuItem.Insert(0,Separator);
270319
271- // Detalhes
272- MenuItem := TMenuItem.Create(Self);
273- MenuItem.Tag := ATask.Id;
274- MenuItem.Action := TAction.Create(Self);
275- MenuItem.Action.Tag := ATask.Id;
276- MenuItem.Action.OnExecute := DoOpenTask;
277- TAction(MenuItem.Action).Category := MY_TASKS;
278- TAction(MenuItem.Action).ActionList := AMAN;
279- TAction(MenuItem.Action).Caption := 'Detalhes...';
280- TAction(MenuItem.Action).ImageIndex := 4;
281- AParentMenuItem.Insert(0,MenuItem);
320+ VisibleActions(ATask
321+ ,CanStartDevelopment
322+ ,CanStartTests
323+ ,CanStartHomologation
324+ ,CanPause
325+ ,CanPauseAndForward
326+ ,CanSendToTests
327+ ,CanSendToHomologation
328+ ,CanApprove
329+ ,CanDisapprove
330+ ,CanMarkAsDone
331+ ,CanReject);
282332
333+
334+ // Rejeitar...
335+ if CanReject then
336+ begin
337+
338+ end;
339+
340+ // Concluir...
341+ if CanMarkAsDone then
342+ begin
343+
344+ end;
345+
346+ // Reprovar...
347+ if CanDisapprove then
348+ begin
349+
350+ end;
351+
352+ // Aprovar...
353+ if CanApprove then
354+ begin
355+
356+ end;
357+
358+ // Enviar para homologação...
359+ if CanSendToHomologation then
360+ begin
361+ // CanSendToHomologationWithoutTests ocorre apenas quando o perfil do
362+ // usuário logado é "Testador". O flag local "CanSendToHomologation" será
363+ // verdadeiro quando for possível enviar para homologação ou quando for
364+ // possível enviar para homologação sem testar, por isso, verificamos aqui
365+ // dentro se "CanSendToHomologationWithoutTests" é verdadeiro, pois se for,
366+ // trata-se de um testador usando o programa. O item de menu é o mesmo, muda apenas o texto ser exibido
367+ if ATask.CanSendToHomologationWithoutTests then
368+ AddMenuItem(DoSendToHomologationWithoutTests,'Enviar para Homologação sem testar...',12)
369+ else
370+ AddMenuItem(DoSendToHomologation,'Enviar para Homologação...',12);
371+ end;
372+
373+ // Enviar para testes...
374+ if CanSendToTests then
375+ AddMenuItem(DoSendToTests,'Enviar para Testes...',11);
376+
377+ // Pausar & encaminhar...
378+ if CanPauseAndForward then
379+ AddMenuItem(DoPauseAndForward,'Pausar e encaminhar a tarefa...',10);
380+
381+ // Pausar...
382+ if CanPause then
383+ AddMenuItem(DoPause,'Pausar...',9);
384+
283385 // Iniciar homologação...
284- MenuItem := TMenuItem.Create(Self);
285- MenuItem.Tag := ATask.Id;
286- MenuItem.Action := TAction.Create(Self);
287- MenuItem.Action.Tag := ATask.Id;
288- MenuItem.Action.OnExecute := DoStartHomologation;
289- TAction(MenuItem.Action).Category := MY_TASKS;
290- TAction(MenuItem.Action).ActionList := AMAN;
291- TAction(MenuItem.Action).Caption := 'Iniciar homologação...';
292- TAction(MenuItem.Action).ImageIndex := 8;
293- AParentMenuItem.Insert(0,MenuItem);
386+ if CanStartHomologation then
387+ AddMenuItem(DoStartHomologation,'Iniciar homologação...',8);
388+// begin
389+// MenuItem := TMenuItem.Create(Self);
390+// MenuItem.Tag := ATask.Id;
391+// MenuItem.Action := TAction.Create(Self);
392+// MenuItem.Action.Tag := ATask.Id;
393+// MenuItem.Action.OnExecute := DoStartHomologation;
394+// TAction(MenuItem.Action).Category := MY_TASKS;
395+// TAction(MenuItem.Action).ActionList := AMAN;
396+// TAction(MenuItem.Action).Caption := 'Iniciar homologação...';
397+// TAction(MenuItem.Action).ImageIndex := 8;
398+// AParentMenuItem.Insert(0,MenuItem);
399+// end;
294400
295401 // Iniciar testes...
296- MenuItem := TMenuItem.Create(Self);
297- MenuItem.Tag := ATask.Id;
298- MenuItem.Action := TAction.Create(Self);
299- MenuItem.Action.Tag := ATask.Id;
300- MenuItem.Action.OnExecute := DoStartTests;
301- TAction(MenuItem.Action).Category := MY_TASKS;
302- TAction(MenuItem.Action).ActionList := AMAN;
303- TAction(MenuItem.Action).Caption := 'Iniciar testes...';
304- TAction(MenuItem.Action).ImageIndex := 7;
305- AParentMenuItem.Insert(0,MenuItem);
402+ if CanStartTests then
403+ AddMenuItem(DoStartTests,'Iniciar testes...',7);
404+// begin
405+// MenuItem := TMenuItem.Create(Self);
406+// MenuItem.Tag := ATask.Id;
407+// MenuItem.Action := TAction.Create(Self);
408+// MenuItem.Action.Tag := ATask.Id;
409+// MenuItem.Action.OnExecute := DoStartTests;
410+// TAction(MenuItem.Action).Category := MY_TASKS;
411+// TAction(MenuItem.Action).ActionList := AMAN;
412+// TAction(MenuItem.Action).Caption := 'Iniciar testes...';
413+// TAction(MenuItem.Action).ImageIndex := 7;
414+// AParentMenuItem.Insert(0,MenuItem);
415+// end;
306416
307417 // Iniciar desenvolvimento...
418+ if CanStartDevelopment then
419+ AddMenuItem(DoStartDevelopment,'Iniciar desenvolvimento...',5);
420+
421+ // Separador
422+ AParentMenuItem.Insert(0,Separator);
423+
424+ // Detalhes
308425 MenuItem := TMenuItem.Create(Self);
309426 MenuItem.Tag := ATask.Id;
310427 MenuItem.Action := TAction.Create(Self);
311428 MenuItem.Action.Tag := ATask.Id;
312- MenuItem.Action.OnExecute := DoStartDevelopment;
429+ MenuItem.Action.OnExecute := DoOpenTask;
313430 TAction(MenuItem.Action).Category := MY_TASKS;
314431 TAction(MenuItem.Action).ActionList := AMAN;
315- TAction(MenuItem.Action).Caption := 'Iniciar desenvolvimento...';
316- TAction(MenuItem.Action).ImageIndex := 5;
432+ TAction(MenuItem.Action).Caption := 'Detalhes...';
433+ TAction(MenuItem.Action).ImageIndex := 4;
317434 AParentMenuItem.Insert(0,MenuItem);
318435
319436 // Cabeçalho com o nome do projeto
@@ -455,42 +572,76 @@
455572 end;
456573
457574 procedure TDamoPrincipal.DoStartDevelopment(Sender: TObject);
458-var
459- DT: TDamoTask;
460- Task: TTask;
461575 begin
462-//crie aqui o tdamotask
463-//settask etc
464-//a sua tarefa agora é criar os itens de menu de iniciar, pausar etc.(*
465-// dinamicamenmte
466-// *)
467- Task.Id := TComponent(Sender).Tag;
576+ ExecuteTaskAction(TComponent(Sender).Tag,0);
577+end;
468578
469- DT := TDamoTask.Create(Self,nil);
470- try
471- DT.Name := '_' + Task.Id.ToString;
472-
473- if TaskDetails(Application.Handle,Task) then
474- begin
475- DT.Task := Task;
476- DT.StartDevelopment;
477- end;
478- finally
479- DT.Free;
480- end;
579+procedure TDamoPrincipal.DoStartTests(Sender: TObject);
580+begin
581+ ExecuteTaskAction(TComponent(Sender).Tag,1);
481582 end;
482583
483584 procedure TDamoPrincipal.DoStartHomologation(Sender: TObject);
484585 begin
586+ ExecuteTaskAction(TComponent(Sender).Tag,2);
587+end;
485588
589+procedure TDamoPrincipal.DoPause(Sender: TObject);
590+begin
591+ ExecuteTaskAction(TComponent(Sender).Tag,3);
486592 end;
487593
488-procedure TDamoPrincipal.DoStartTests(Sender: TObject);
594+procedure TDamoPrincipal.DoPauseAndForward(Sender: TObject);
489595 begin
596+ ExecuteTaskAction(TComponent(Sender).Tag,4);
597+end;
490598
599+procedure TDamoPrincipal.DoSendToTests(Sender: TObject);
600+begin
601+ ExecuteTaskAction(TComponent(Sender).Tag,5);
491602 end;
492603
604+procedure TDamoPrincipal.DoSendToHomologation(Sender: TObject);
605+begin
606+ ExecuteTaskAction(TComponent(Sender).Tag,6);
607+end;
493608
609+procedure TDamoPrincipal.DoSendToHomologationWithoutTests(Sender: TObject);
610+begin
611+ ExecuteTaskAction(TComponent(Sender).Tag,7);
612+end;
613+
614+procedure TDamoPrincipal.ExecuteTaskAction(const ATaskId: Cardinal; const AActionId: Byte);
615+var
616+ DamoTask: TDamoTask;
617+ Task: TTask;
618+begin
619+ Task.Id := ATaskId;
620+
621+ DamoTask := TDamoTask.Create(Self,nil);
622+ try
623+ DamoTask.Name := '_' + Task.Id.ToString;
624+
625+ if TaskDetails(0,Task) then
626+ begin
627+ DamoTask.Task := Task;
628+
629+ case AActionId of
630+ 0: DamoTask.StartDevelopment;
631+ 1: DamoTask.StartTests;
632+ 2: DamoTask.StartHomologation;
633+ 3: DamoTask.Pause;
634+ 4: DamoTask.PauseAndForward;
635+ 5: DamoTask.SendToTest;
636+ 6: DamoTask.SendToHomologation;
637+ 7: DamoTask.SendToHomologationWithoutTests;
638+ end;
639+ end;
640+ finally
641+ DamoTask.Free;
642+ end;
643+end;
644+
494645 { TTasksChecking }
495646
496647 procedure TTasksChecking.ConfigureNextMemoryCleanupMoment;
@@ -628,12 +779,22 @@
628779 if Assigned(FFormToBlock) then
629780 FTBH := FFormToBlock.Handle;
630781
631- AssignedTasks(FTBH,FTasks);
782+ // Originalmente a chamada a AssignedTasks não precisava ler a
783+ // página da tarefa, pois toda informação a ser exibida no menu de
784+ // contexto já estava presente na página de visualização de tarefas
785+ // (view_all_bug_page.php). Com a necessidade da exibição de itens
786+ // de menu com ações rápidas para cada tarefa, também foi necessário
787+ // acessar página de cada taerefa de forma que apenas ações válidas
788+ // aparecessem no menu de contexto. Evidentemente que isso vai
789+ // deixar a obtenção de tarefas atribuídas mais lenta, mas esse é o
790+ // preço que se paga pela comodidade. Nada vem de graça.
632791
792+ AssignedTasks(FTBH,FTasks,0,True);
793+
633794 if Configurations.Profile = TProfile.Tester then
634795 begin
635796 var AdditionalTasks: TTasks;
636- AssignedTasks(FTBH,AdditionalTasks,Configurations.MantisConfigs.ExtendedConfigs.UNTSUserId);
797+ AssignedTasks(FTBH,AdditionalTasks,Configurations.MantisConfigs.ExtendedConfigs.UNTSUserId,True);
637798 FTasks := FTasks + AdditionalTasks;
638799 end;
639800
--- trunk/client/src/UDamoTask.pas (revision 197)
+++ trunk/client/src/UDamoTask.pas (revision 198)
@@ -76,6 +76,11 @@
7676 //: @Returns(A função retorna True quando todas as tarefas conseguem ser
7777 //: pausadas e False quando ao menos uma tarefa não puder ser pausada)
7878 function AutomaticPause(const ATasks: TTasks): Boolean;
79+ //: Fecha o dono deste DataModule, caso um exista
80+ procedure CloseMyOwner;
81+ //: Versão especial da função ShowSpecialDialog capaz de exibir a caixa de
82+ //: diálogo especial quando não existe nenhum form aberto na tela
83+ function SSD(const AType: TSpecialDialogType; const AMainInstruction: String; const AContent: String; const AExpandedInformation: String = ''; const ACollapsedControlText: String = ''; const AExpandedControlText: String = ''; const AFooterIcon: TSpecialDialogType = TSpecialDialogType.None; const AFooterText: String = ''): Boolean;
7984 public
8085 { Public declarations }
8186 constructor Create(ADamoPrincipal: TDamoPrincipal; AOwner: TComponent); reintroduce;
@@ -231,43 +236,43 @@
231236 CommentBackupDelete(0);
232237
233238 if Trim(CommentError) = '' then
234- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
235- ,'Aprovação bem sucedida'
236- ,'A tarefa #' + FTask.Id.ToString + ' foi aprovada em Testes com sucesso!'
237- ,''
238- ,''
239- ,''
240- ,TSpecialDialogType.Information
241- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada')
239+ SSD(TSpecialDialogType.ShieldHeadOk
240+ ,'Aprovação bem sucedida'
241+ ,'A tarefa #' + FTask.Id.ToString + ' foi aprovada em Testes com sucesso!'
242+ ,''
243+ ,''
244+ ,''
245+ ,TSpecialDialogType.Information
246+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada')
242247 else
243248 begin
244249 DecodeError(CommentError,ErrorId,ErrorDescription);
245250
246- ShowSpecialDialog(TSpecialDialogType.ShieldHeadWarning
247- ,'Aprovação bem sucedida'
248- ,'A tarefa foi aprovada em Testes com sucesso contudo não foi possível adicionar o comentário padrão de aprovação'
249- ,ErrorId + #13#10 + ErrorDescription
250- ,'Mostrar mensagem de erro original'
251- ,'Ocultar mensagem de erro original'
252- ,TSpecialDialogType.Information
253- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
251+ SSD(TSpecialDialogType.ShieldHeadWarning
252+ ,'Aprovação bem sucedida'
253+ ,'A tarefa foi aprovada em Testes com sucesso contudo não foi possível adicionar o comentário padrão de aprovação'
254+ ,ErrorId + #13#10 + ErrorDescription
255+ ,'Mostrar mensagem de erro original'
256+ ,'Ocultar mensagem de erro original'
257+ ,TSpecialDialogType.Information
258+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
254259 end;
255260
256261 RefreshList;
257- TForm(Owner).Close;
262+ CloseMyOwner;
258263 end
259264 else
260265 begin
261266 DecodeError(ForwardError,ErrorId,ErrorDescription);
262267
263- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
264- ,'Erro ao aprovar a tarefa'
265- ,'Não foi possível aprovar a tarefa em Testes'
266- ,ErrorId + #13#10 + ErrorDescription
267- ,'Mostrar mensagem de erro original'
268- ,'Ocultar mensagem de erro original'
269- ,TSpecialDialogType.Information
270- ,'A mensagem de erro original é aquela que foi emitida pelo MantisBT');
268+ SSD(TSpecialDialogType.ShieldHeadError
269+ ,'Erro ao aprovar a tarefa'
270+ ,'Não foi possível aprovar a tarefa em Testes'
271+ ,ErrorId + #13#10 + ErrorDescription
272+ ,'Mostrar mensagem de erro original'
273+ ,'Ocultar mensagem de erro original'
274+ ,TSpecialDialogType.Information
275+ ,'A mensagem de erro original é aquela que foi emitida pelo MantisBT');
271276 end;
272277 end;
273278 end;
@@ -298,6 +303,12 @@
298303 Text := FormatDateTime('dd/mm/yyyy "às" hh:nn:ss',Sender.AsDateTime);
299304 end;
300305
306+procedure TDamoTask.CloseMyOwner;
307+begin
308+ if Assigned(Owner) then
309+ TForm(Owner).Close;
310+end;
311+
301312 constructor TDamoTask.Create(ADamoPrincipal: TDamoPrincipal; AOwner: TComponent);
302313 begin
303314 inherited Create(AOwner);
@@ -370,31 +381,31 @@
370381 ,CSP.NewStatus.Id
371382 ,CSP.BugUpdateToken
372383 ,CSP.LastUpdated) then
373- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
374- ,'Erro ao reprovar a tarefa'
375- ,'Não foi possível reprovar a tarefa'
376- ,'Não foi possível obter os parâmetros de mudança de e' +
377- 'stado e consequentemente não foi possível alterar o ' +
378- 'estado da tarefa e nem encaminhá-la. Tente novamente' +
379- ' em alguns instantes'
380- ,'Exibir a mensagem de erro original'
381- ,'Ocultar a mensagem de erro original'
382- ,TSpecialDialogType.Information
383- ,'O MantisBT pode estar fora do ar')
384+ SSD(TSpecialDialogType.ShieldHeadError
385+ ,'Erro ao reprovar a tarefa'
386+ ,'Não foi possível reprovar a tarefa'
387+ ,'Não foi possível obter os parâmetros de mudança de e' +
388+ 'stado e consequentemente não foi possível alterar o ' +
389+ 'estado da tarefa e nem encaminhá-la. Tente novamente' +
390+ ' em alguns instantes'
391+ ,'Exibir a mensagem de erro original'
392+ ,'Ocultar a mensagem de erro original'
393+ ,TSpecialDialogType.Information
394+ ,'O MantisBT pode estar fora do ar')
384395 else
385396 if not ChangeStatus(TForm(Owner)
386397 ,FTask
387398 ,CSP) then
388- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
389- ,'Erro ao reprovar a tarefa'
390- ,'Não foi possível reprovar a tarefa'
391- ,'Ocorreu um erro desconhecido durante a mudança de ' +
392- 'estado e com isso a tarefa também não foi encaminh' +
393- 'ada. Tente novamente em alguns instantes'
394- ,'Exibir a mensagem de erro original'
395- ,'Ocultar a mensagem de erro original'
396- ,TSpecialDialogType.Information
397- ,'O MantisBT pode estar fora do ar')
399+ SSD(TSpecialDialogType.ShieldHeadError
400+ ,'Erro ao reprovar a tarefa'
401+ ,'Não foi possível reprovar a tarefa'
402+ ,'Ocorreu um erro desconhecido durante a mudança de ' +
403+ 'estado e com isso a tarefa também não foi encaminh' +
404+ 'ada. Tente novamente em alguns instantes'
405+ ,'Exibir a mensagem de erro original'
406+ ,'Ocultar a mensagem de erro original'
407+ ,TSpecialDialogType.Information
408+ ,'O MantisBT pode estar fora do ar')
398409 // Neste ponto houve a mudança de estado e o encaminhamento, logo,
399410 // concluímos a ação adicionando o item de histórico para o comentário
400411 // órfão e mostramos uma mensagem de sucesso
@@ -405,16 +416,16 @@
405416 TProfile.Homologator: AddHistory(FTask.Id,ActionId2HistoryField(TActionId.hore),'~' + OrphanCommentId.ToString);
406417 end;
407418
408- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
409- ,'Reprovação bem sucedida'
410- ,'A tarefa #' + FTask.Id.ToString + ' foi reprovada com sucesso!'
411- ,''
412- ,''
413- ,''
414- ,TSpecialDialogType.Information
415- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
419+ SSD(TSpecialDialogType.ShieldHeadOk
420+ ,'Reprovação bem sucedida'
421+ ,'A tarefa #' + FTask.Id.ToString + ' foi reprovada com sucesso!'
422+ ,''
423+ ,''
424+ ,''
425+ ,TSpecialDialogType.Information
426+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
416427
417- TForm(Owner).Close;
428+ CloseMyOwner;
418429 RefreshList;
419430 end;
420431 end
@@ -442,14 +453,14 @@
442453 ,LastForwarding.UserId
443454 ,ErrorMessage) then
444455 begin
445- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
446- ,'Erro ao reprovar a tarefa'
447- ,'Não foi possível reprovar a tarefa'
448- ,ErrorMessage
449- ,'Exibir a mensagem de erro original'
450- ,'Ocultar a mensagem de erro original'
451- ,TSpecialDialogType.Information
452- ,'O MantisBT pode estar fora do ar');
456+ SSD(TSpecialDialogType.ShieldHeadError
457+ ,'Erro ao reprovar a tarefa'
458+ ,'Não foi possível reprovar a tarefa'
459+ ,ErrorMessage
460+ ,'Exibir a mensagem de erro original'
461+ ,'Ocultar a mensagem de erro original'
462+ ,TSpecialDialogType.Information
463+ ,'O MantisBT pode estar fora do ar');
453464 end
454465 else
455466 begin
@@ -460,16 +471,16 @@
460471 TProfile.Homologator: AddHistory(FTask.Id,ActionId2HistoryField(TActionId.hore),'~' + CommentId.ToString);
461472 end;
462473
463- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
464- ,'Reprovação bem sucedida'
465- ,'A tarefa #' + FTask.Id.ToString + ' foi reprovada com sucesso!'
466- ,''
467- ,''
468- ,''
469- ,TSpecialDialogType.Information
470- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
474+ SSD(TSpecialDialogType.ShieldHeadOk
475+ ,'Reprovação bem sucedida'
476+ ,'A tarefa #' + FTask.Id.ToString + ' foi reprovada com sucesso!'
477+ ,''
478+ ,''
479+ ,''
480+ ,TSpecialDialogType.Information
481+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
471482
472- TForm(Owner).Close;
483+ CloseMyOwner;
473484 RefreshList;
474485 end;
475486 end;
@@ -508,26 +519,26 @@
508519 begin
509520 CommentBackupDelete(ACommentId);
510521
511- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
512- ,'Comentário salvo com sucesso'
513- ,'Seu comentário foi salvo com sucesso'
514- ,''
515- ,''
516- ,''
517- ,TSpecialDialogType.Information
518- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será atualizada');
522+ SSD(TSpecialDialogType.ShieldHeadOk
523+ ,'Comentário salvo com sucesso'
524+ ,'Seu comentário foi salvo com sucesso'
525+ ,''
526+ ,''
527+ ,''
528+ ,TSpecialDialogType.Information
529+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será atualizada');
519530
520531 RefreshCurrent;
521532 end
522533 else
523- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
524- ,'Erro ao salvar o comentário'
525- ,'Não foi possível salvar o comentário. Tente novamente'
526- ,''
527- ,''
528- ,''
529- ,TSpecialDialogType.Information
530- ,'O MantisBT pode estar fora do ar');
534+ SSD(TSpecialDialogType.ShieldHeadError
535+ ,'Erro ao salvar o comentário'
536+ ,'Não foi possível salvar o comentário. Tente novamente'
537+ ,''
538+ ,''
539+ ,''
540+ ,TSpecialDialogType.Information
541+ ,'O MantisBT pode estar fora do ar');
531542 end;
532543 end;
533544
@@ -601,18 +612,18 @@
601612 case Application.MessageBox(PChar('Deseja pausar as tarefas que estão em execução antes de iniciar a tarefa atual?'#13#10#13#10'Aviso: Todas as tarefas pausadas automaticamente serão anotadas com um texto padronizado que identificará a tarefa atualmente sendo iniciada'),'Tarefas em execução detectadas',MB_ICONQUESTION or MB_YESNOCANCEL) of
602613 IDYES: begin
603614 if not AutomaticPause(TIE) then
604- ShowSpecialDialog(TSpecialDialogType.ShieldHeadWarning
605- ,'Erro ao pausar tarefas'
606- ,'Não foi possível pausar algumas tarefas que estavam em execução. Você precisará fazer isso manualmente depois.'#13#10#13#10'A ação de iniciar o desenvolvimento da tarefa será executada quando esta caixa de mensagem for fechada'
607- ,''
608- ,''
609- ,''
610- ,TSpecialDialogType.Information
611- ,'Ao fechar esta caixa de mensagem você poderá cancelar a ação de iniciar o desenvolvimento e tentar novamente com o intuito de reexecutar o algoritmo de pausa automática')
615+ SSD(TSpecialDialogType.ShieldHeadWarning
616+ ,'Erro ao pausar tarefas'
617+ ,'Não foi possível pausar algumas tarefas que estavam em execução. Você precisará fazer isso manualmente depois.'#13#10#13#10'A ação de iniciar o desenvolvimento da tarefa será executada quando esta caixa de mensagem for fechada'
618+ ,''
619+ ,''
620+ ,''
621+ ,TSpecialDialogType.Information
622+ ,'Ao fechar esta caixa de mensagem você poderá cancelar a ação de iniciar o desenvolvimento e tentar novamente com o intuito de reexecutar o algoritmo de pausa automática')
612623 else
613- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
614- ,'Tarefas pausadas com sucesso!'
615- ,'Todas as tarefas que estavam em execução foram pausadas e anotadas com o texto padrão. Feche esta caixa de mensagem para executar a ação de inicialização do desenvolvimento da tarefa atual');
624+ SSD(TSpecialDialogType.ShieldHeadOk
625+ ,'Tarefas pausadas com sucesso!'
626+ ,'Todas as tarefas que estavam em execução foram pausadas e anotadas com o texto padrão. Feche esta caixa de mensagem para executar a ação de inicialização do desenvolvimento da tarefa atual');
616627 end;
617628 IDNO: { Ao selecionar "não", o fluxo simplesmente continua };
618629 IDCANCEL: Exit;
@@ -636,14 +647,14 @@
636647 ,CSP.NewStatus.Id
637648 ,CSP.BugUpdateToken
638649 ,CSP.LastUpdated) then
639- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
640- ,'Erro ao iniciar a tarefa'
641- ,'Não foi possível obter os parâmetros de mudança de estado. Tente novamente'
642- ,''
643- ,''
644- ,''
645- ,TSpecialDialogType.Information
646- ,'O MantisBT pode estar fora do ar')
650+ SSD(TSpecialDialogType.ShieldHeadError
651+ ,'Erro ao iniciar a tarefa'
652+ ,'Não foi possível obter os parâmetros de mudança de estado. Tente novamente'
653+ ,''
654+ ,''
655+ ,''
656+ ,TSpecialDialogType.Information
657+ ,'O MantisBT pode estar fora do ar')
647658 else
648659 if TFormManageNote.ShowMeForImplementationStart(Self,CSP.Comment,CSP.CommentIsPrivate) = mrOk then
649660 begin
@@ -659,27 +670,27 @@
659670 CommentBackupDelete(0);
660671 AddHistory(FTask.Id,ActionId2HistoryField(TActionId.imst),'~' + CommentId.ToString);
661672
662- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
663- ,'Tarefa iniciada com sucesso!'
664- ,'A tarefa #' + FTask.Id.ToString + ' foi iniciada com sucesso!'
665- ,''
666- ,''
667- ,''
668- ,TSpecialDialogType.Information
669- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
673+ SSD(TSpecialDialogType.ShieldHeadOk
674+ ,'Tarefa iniciada com sucesso!'
675+ ,'A tarefa #' + FTask.Id.ToString + ' foi iniciada com sucesso!'
676+ ,''
677+ ,''
678+ ,''
679+ ,TSpecialDialogType.Information
680+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
670681
671- TForm(Owner).Close;
682+ CloseMyOwner;
672683 RefreshList;
673684 end
674685 else
675- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
676- ,'Erro ao iniciar a tarefa'
677- ,'Não foi possível iniciar a tarefa. Tente novamente'
678- ,''
679- ,''
680- ,''
681- ,TSpecialDialogType.Information
682- ,'O MantisBT pode estar fora do ar');
686+ SSD(TSpecialDialogType.ShieldHeadError
687+ ,'Erro ao iniciar a tarefa'
688+ ,'Não foi possível iniciar a tarefa. Tente novamente'
689+ ,''
690+ ,''
691+ ,''
692+ ,TSpecialDialogType.Information
693+ ,'O MantisBT pode estar fora do ar');
683694 end;
684695 end;
685696
@@ -702,14 +713,14 @@
702713 ,CSP.NewStatus.Id
703714 ,CSP.BugUpdateToken
704715 ,CSP.LastUpdated) then
705- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
706- ,'Erro ao iniciar os testes da tarefa'
707- ,'Não foi possível obter os parâmetros de mudança de estado. Tente novamente'
708- ,''
709- ,''
710- ,''
711- ,TSpecialDialogType.Information
712- ,'O MantisBT pode estar fora do ar')
716+ SSD(TSpecialDialogType.ShieldHeadError
717+ ,'Erro ao iniciar os testes da tarefa'
718+ ,'Não foi possível obter os parâmetros de mudança de estado. Tente novamente'
719+ ,''
720+ ,''
721+ ,''
722+ ,TSpecialDialogType.Information
723+ ,'O MantisBT pode estar fora do ar')
713724 else
714725 if TFormManageNote.ShowMeForTestsStart(Self,CSP.Comment,CSP.CommentIsPrivate) = mrOk then
715726 begin
@@ -725,27 +736,27 @@
725736 CommentBackupDelete(0);
726737 AddHistory(FTask.Id,ActionId2HistoryField(TActionId.test),'~' + CommentId.ToString);
727738
728- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
729- ,'Testes iniciados com sucesso!'
730- ,'Os testes da tarefa #' + FTask.Id.ToString + ' foram iniciados com sucesso!'
731- ,''
732- ,''
733- ,''
734- ,TSpecialDialogType.Information
735- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
739+ SSD(TSpecialDialogType.ShieldHeadOk
740+ ,'Testes iniciados com sucesso!'
741+ ,'Os testes da tarefa #' + FTask.Id.ToString + ' foram iniciados com sucesso!'
742+ ,''
743+ ,''
744+ ,''
745+ ,TSpecialDialogType.Information
746+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
736747
737- TForm(Owner).Close;
748+ CloseMyOwner;
738749 RefreshList;
739750 end
740751 else
741- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
742- ,'Erro ao iniciar os testes da tarefa'
743- ,'Não foi possível iniciar os testes da tarefa. Tente novamente'
744- ,''
745- ,''
746- ,''
747- ,TSpecialDialogType.Information
748- ,'O MantisBT pode estar fora do ar');
752+ SSD(TSpecialDialogType.ShieldHeadError
753+ ,'Erro ao iniciar os testes da tarefa'
754+ ,'Não foi possível iniciar os testes da tarefa. Tente novamente'
755+ ,''
756+ ,''
757+ ,''
758+ ,TSpecialDialogType.Information
759+ ,'O MantisBT pode estar fora do ar');
749760 end;
750761 end;
751762
@@ -771,14 +782,14 @@
771782 ,CSP.BugUpdateToken
772783 ,CSP.LastUpdated
773784 ,Handlers) then
774- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
775- ,'Erro ao pausar' + IfThen(AForward,' e encaminhar') + ' a tarefa'
776- ,'Não foi possível obter os parâmetros de mudança de estado. Tente novamente'
777- ,''
778- ,''
779- ,''
780- ,TSpecialDialogType.Information
781- ,'O MantisBT pode estar fora do ar')
785+ SSD(TSpecialDialogType.ShieldHeadError
786+ ,'Erro ao pausar' + IfThen(AForward,' e encaminhar') + ' a tarefa'
787+ ,'Não foi possível obter os parâmetros de mudança de estado. Tente novamente'
788+ ,''
789+ ,''
790+ ,''
791+ ,TSpecialDialogType.Information
792+ ,'O MantisBT pode estar fora do ar')
782793 else
783794 begin
784795 var DoIt: Boolean;
@@ -831,27 +842,27 @@
831842 TProfile.Homologator: AddHistory(FTask.Id,ActionId2HistoryField(TActionId.hopa),'~' + CommentId.ToString);
832843 end;
833844
834- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
835- ,'Tarefa pausada' + IfThen(AForward,' e encaminhada') + ' com sucesso!'
836- ,'A tarefa #' + FTask.Id.ToString + ' foi pausada' + IfThen(AForward,' e encaminhada') + ' com sucesso!'
837- ,''
838- ,''
839- ,''
840- ,TSpecialDialogType.Information
841- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
845+ SSD(TSpecialDialogType.ShieldHeadOk
846+ ,'Tarefa pausada' + IfThen(AForward,' e encaminhada') + ' com sucesso!'
847+ ,'A tarefa #' + FTask.Id.ToString + ' foi pausada' + IfThen(AForward,' e encaminhada') + ' com sucesso!'
848+ ,''
849+ ,''
850+ ,''
851+ ,TSpecialDialogType.Information
852+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
842853
843- TForm(Owner).Close;
854+ CloseMyOwner;
844855 RefreshList;
845856 end
846857 else
847- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
848- ,'Erro ao pausar' + IfThen(AForward,' e encaminhar') + ' a tarefa'
849- ,'Não foi possível pausar' + IfThen(AForward,' e encaminhar') + ' a tarefa. Tente novamente'
850- ,''
851- ,''
852- ,''
853- ,TSpecialDialogType.Information
854- ,'O MantisBT pode estar fora do ar');
858+ SSD(TSpecialDialogType.ShieldHeadError
859+ ,'Erro ao pausar' + IfThen(AForward,' e encaminhar') + ' a tarefa'
860+ ,'Não foi possível pausar' + IfThen(AForward,' e encaminhar') + ' a tarefa. Tente novamente'
861+ ,''
862+ ,''
863+ ,''
864+ ,TSpecialDialogType.Information
865+ ,'O MantisBT pode estar fora do ar');
855866 end;
856867 end;
857868 end;
@@ -887,14 +898,14 @@
887898 ,CSP.BugUpdateToken
888899 ,CSP.LastUpdated
889900 ,Handlers) then
890- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
891- ,'Erro ao concluir a tarefa'
892- ,'Não foi possível obter os parâmetros de mudança de estado. Tente novamente'
893- ,''
894- ,''
895- ,''
896- ,TSpecialDialogType.Information
897- ,'O MantisBT pode estar fora do ar')
901+ SSD(TSpecialDialogType.ShieldHeadError
902+ ,'Erro ao concluir a tarefa'
903+ ,'Não foi possível obter os parâmetros de mudança de estado. Tente novamente'
904+ ,''
905+ ,''
906+ ,''
907+ ,TSpecialDialogType.Information
908+ ,'O MantisBT pode estar fora do ar')
898909 else
899910 if TFormManageNote.ShowMeForMarkAsDone(Self,CSP.Comment) = mrOk then
900911 begin
@@ -913,34 +924,33 @@
913924
914925 AddHistory(FTask.Id,ActionId2HistoryField(TActionId.stex),'~' + CommentId.ToString);
915926
927+ SSD(TSpecialDialogType.ShieldHeadOk
928+ ,'Conclusão bem sucedida'
929+ ,'A tarefa #' + FTask.Id.ToString + ' foi concluída com sucesso!'
930+ ,''
931+ ,''
932+ ,''
933+ ,TSpecialDialogType.Information
934+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
916935
917- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
918- ,'Conclusão bem sucedida'
919- ,'A tarefa #' + FTask.Id.ToString + ' foi concluída com sucesso!'
920- ,''
921- ,''
922- ,''
923- ,TSpecialDialogType.Information
924- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada');
925-
926- TForm(Owner).Close;
936+ CloseMyOwner;
927937 RefreshList;
928938 end
929939 else
930940 begin
931- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
932- ,'Erro ao concluir a tarefa'
933- ,'Não foi possível concluir a tarefa. Tente novamente'
934- ,''
935- ,''
936- ,''
937- ,TSpecialDialogType.Information
938- ,'O MantisBT pode estar fora do ar ou a tarefa pode ter sido alterada por outra pessoa');
941+ SSD(TSpecialDialogType.ShieldHeadError
942+ ,'Erro ao concluir a tarefa'
943+ ,'Não foi possível concluir a tarefa. Tente novamente'
944+ ,''
945+ ,''
946+ ,''
947+ ,TSpecialDialogType.Information
948+ ,'O MantisBT pode estar fora do ar ou a tarefa pode ter sido alterada por outra pessoa');
939949
940950 RefreshList;
941951 end;
942952
943- // Sobre o uso de RefreshList e TForm(Owner).Close acima, eu optei pela
953+ // Sobre o uso de RefreshList e CloseMyOwner acima, eu optei pela
944954 // redundância em detrimento da lógica. O motivo é simples. Quando a
945955 // mudança de estado ocorre com sucesso, eu preciso atualizar a lista e
946956 // fechar a tela, mas quando a mudança de estado NÃO OCORRE, eu quero
@@ -966,14 +976,14 @@
966976 ,CSP.BugUpdateToken
967977 ,CSP.LastUpdated
968978 ,Handlers) then
969- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
970- ,'Erro ao rejeitar a tarefa'
971- ,'Não foi possível obter os parâmetros de mudança de estado. Tente novamente'
972- ,''
973- ,''
974- ,''
975- ,TSpecialDialogType.Information
976- ,'O MantisBT pode estar fora do ar')
979+ SSD(TSpecialDialogType.ShieldHeadError
980+ ,'Erro ao rejeitar a tarefa'
981+ ,'Não foi possível obter os parâmetros de mudança de estado. Tente novamente'
982+ ,''
983+ ,''
984+ ,''
985+ ,TSpecialDialogType.Information
986+ ,'O MantisBT pode estar fora do ar')
977987 else
978988 if TFormManageNote.ShowMeForReject(Self
979989 ,Handlers
@@ -996,24 +1006,24 @@
9961006
9971007 AddHistory(FTask.Id,ActionId2HistoryField(TActionId.stre),'~' + CommentId.ToString);
9981008
999- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
1000- ,'Rejeição bem sucedida'
1001- ,'A tarefa #' + FTask.Id.ToString + ' foi rejeitada com sucesso!'
1002- ,''
1003- ,''
1004- ,''
1005- ,TSpecialDialogType.Information
1006- ,'Ao fechar esta caixa de diálogo a tela da tarefa será atualizada');
1009+ SSD(TSpecialDialogType.ShieldHeadOk
1010+ ,'Rejeição bem sucedida'
1011+ ,'A tarefa #' + FTask.Id.ToString + ' foi rejeitada com sucesso!'
1012+ ,''
1013+ ,''
1014+ ,''
1015+ ,TSpecialDialogType.Information
1016+ ,'Ao fechar esta caixa de diálogo a tela da tarefa será atualizada');
10071017 end
10081018 else
1009- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
1010- ,'Erro ao rejeitar a tarefa'
1011- ,'Não foi possível rejeitar a tarefa. Tente novamente'
1012- ,''
1013- ,''
1014- ,''
1015- ,TSpecialDialogType.Information
1016- ,'O MantisBT pode estar fora do ar');
1019+ SSD(TSpecialDialogType.ShieldHeadError
1020+ ,'Erro ao rejeitar a tarefa'
1021+ ,'Não foi possível rejeitar a tarefa. Tente novamente'
1022+ ,''
1023+ ,''
1024+ ,''
1025+ ,TSpecialDialogType.Information
1026+ ,'O MantisBT pode estar fora do ar');
10171027
10181028 // Acredito que um dos motivos pelos quais a rejeição possa falhar, seja
10191029 // porque alguém possa ter mudado o status da tarefa antes de nós, fazendo
@@ -1073,24 +1083,24 @@
10731083 CommentBackupDelete(0);
10741084
10751085 if Trim(CommentError) = '' then
1076- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
1077- ,'Encaminhamento bem sucedido'
1078- ,'A tarefa #' + FTask.Id.ToString + ' foi encaminhada para Homologação com sucesso!'
1079- ,''
1080- ,''
1081- ,''
1082- ,TSpecialDialogType.Information
1083- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada')
1086+ SSD(TSpecialDialogType.ShieldHeadOk
1087+ ,'Encaminhamento bem sucedido'
1088+ ,'A tarefa #' + FTask.Id.ToString + ' foi encaminhada para Homologação com sucesso!'
1089+ ,''
1090+ ,''
1091+ ,''
1092+ ,TSpecialDialogType.Information
1093+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada')
10841094 else
10851095 begin
10861096 DecodeError(CommentError,ErrorId,ErrorDescription);
10871097
1088- ShowSpecialDialog(TSpecialDialogType.ShieldHeadWarning
1089- ,'Encaminhamento bem sucedido'
1090- ,'A tarefa foi encaminhada para Homologação com sucesso contudo não foi possível adicionar o comentário padrão de encaminhamento'
1091- ,ErrorId + #13#10 + ErrorDescription
1092- ,'Mostrar mensagem de erro original'
1093- ,'Ocultar mensagem de erro original');
1098+ SSD(TSpecialDialogType.ShieldHeadWarning
1099+ ,'Encaminhamento bem sucedido'
1100+ ,'A tarefa foi encaminhada para Homologação com sucesso contudo não foi possível adicionar o comentário padrão de encaminhamento'
1101+ ,ErrorId + #13#10 + ErrorDescription
1102+ ,'Mostrar mensagem de erro original'
1103+ ,'Ocultar mensagem de erro original');
10941104 end;
10951105
10961106 RefreshList;
@@ -1128,20 +1138,20 @@
11281138 end;
11291139 {$ENDREGION}
11301140
1131- TForm(Owner).Close;
1141+ CloseMyOwner;
11321142 end
11331143 else
11341144 begin
11351145 DecodeError(ForwardError,ErrorId,ErrorDescription);
11361146
1137- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
1138- ,'Erro ao encaminhar a tarefa'
1139- ,'Não foi possível encaminhar a tarefa para Homologação'
1140- ,ErrorId + #13#10 + ErrorDescription
1141- ,'Mostrar mensagem de erro original'
1142- ,'Ocultar mensagem de erro original'
1143- ,TSpecialDialogType.Information
1144- ,'A mensagem de erro original é aquela que foi emitida pelo MantisBT');
1147+ SSD(TSpecialDialogType.ShieldHeadError
1148+ ,'Erro ao encaminhar a tarefa'
1149+ ,'Não foi possível encaminhar a tarefa para Homologação'
1150+ ,ErrorId + #13#10 + ErrorDescription
1151+ ,'Mostrar mensagem de erro original'
1152+ ,'Ocultar mensagem de erro original'
1153+ ,TSpecialDialogType.Information
1154+ ,'A mensagem de erro original é aquela que foi emitida pelo MantisBT');
11451155 end;
11461156 end;
11471157
@@ -1239,24 +1249,24 @@
12391249 CommentBackupDelete(0);
12401250
12411251 if Trim(CommentError) = '' then
1242- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
1243- ,'Encaminhamento bem sucedido'
1244- ,'A tarefa #' + FTask.Id.ToString + ' foi encaminhada para Homologação com sucesso!'
1245- ,''
1246- ,''
1247- ,''
1248- ,TSpecialDialogType.Information
1249- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada')
1252+ SSD(TSpecialDialogType.ShieldHeadOk
1253+ ,'Encaminhamento bem sucedido'
1254+ ,'A tarefa #' + FTask.Id.ToString + ' foi encaminhada para Homologação com sucesso!'
1255+ ,''
1256+ ,''
1257+ ,''
1258+ ,TSpecialDialogType.Information
1259+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada')
12501260 else
12511261 begin
12521262 DecodeError(CommentError,ErrorId,ErrorDescription);
12531263
1254- ShowSpecialDialog(TSpecialDialogType.ShieldHeadWarning
1255- ,'Encaminhamento bem sucedido'
1256- ,'A tarefa foi encaminhada para Homologação com sucesso contudo não foi possível adicionar o comentário padrão de encaminhamento'
1257- ,ErrorId + #13#10 + ErrorDescription
1258- ,'Mostrar mensagem de erro original'
1259- ,'Ocultar mensagem de erro original');
1264+ SSD(TSpecialDialogType.ShieldHeadWarning
1265+ ,'Encaminhamento bem sucedido'
1266+ ,'A tarefa foi encaminhada para Homologação com sucesso contudo não foi possível adicionar o comentário padrão de encaminhamento'
1267+ ,ErrorId + #13#10 + ErrorDescription
1268+ ,'Mostrar mensagem de erro original'
1269+ ,'Ocultar mensagem de erro original');
12601270 end;
12611271
12621272 RefreshList;
@@ -1297,20 +1307,20 @@
12971307 // end;
12981308 {$ENDREGION}
12991309
1300- TForm(Owner).Close;
1310+ CloseMyOwner;
13011311 end
13021312 else
13031313 begin
13041314 DecodeError(ForwardError,ErrorId,ErrorDescription);
13051315
1306- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
1307- ,'Erro ao encaminhar a tarefa'
1308- ,'Não foi possível encaminhar a tarefa para Homologação'
1309- ,ErrorId + #13#10 + ErrorDescription
1310- ,'Mostrar mensagem de erro original'
1311- ,'Ocultar mensagem de erro original'
1312- ,TSpecialDialogType.Information
1313- ,'A mensagem de erro original é aquela que foi emitida pelo MantisBT');
1316+ SSD(TSpecialDialogType.ShieldHeadError
1317+ ,'Erro ao encaminhar a tarefa'
1318+ ,'Não foi possível encaminhar a tarefa para Homologação'
1319+ ,ErrorId + #13#10 + ErrorDescription
1320+ ,'Mostrar mensagem de erro original'
1321+ ,'Ocultar mensagem de erro original'
1322+ ,TSpecialDialogType.Information
1323+ ,'A mensagem de erro original é aquela que foi emitida pelo MantisBT');
13141324 end;
13151325 end;
13161326 end;
@@ -1363,26 +1373,26 @@
13631373 CommentBackupDelete(0);
13641374
13651375 if Trim(CommentError) = '' then
1366- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
1367- ,'Encaminhamento bem sucedido'
1368- ,'A tarefa #' + FTask.Id.ToString + ' foi encaminhada para Testes com sucesso!'
1369- ,''
1370- ,''
1371- ,''
1372- ,TSpecialDialogType.Information
1373- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada')
1376+ SSD(TSpecialDialogType.ShieldHeadOk
1377+ ,'Encaminhamento bem sucedido'
1378+ ,'A tarefa #' + FTask.Id.ToString + ' foi encaminhada para Testes com sucesso!'
1379+ ,''
1380+ ,''
1381+ ,''
1382+ ,TSpecialDialogType.Information
1383+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada')
13741384 else
13751385 begin
13761386 DecodeError(CommentError,ErrorId,ErrorDescription);
13771387
1378- ShowSpecialDialog(TSpecialDialogType.ShieldHeadWarning
1379- ,'Encaminhamento bem sucedido'
1380- ,'A tarefa foi encaminhada para Testes com sucesso contudo não foi possível adicionar o comentário padrão de encaminhamento'
1381- ,ErrorId + #13#10 + ErrorDescription
1382- ,'Mostrar mensagem de erro original'
1383- ,'Ocultar mensagem de erro original'
1384- ,TSpecialDialogType.Information
1385- ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada')
1388+ SSD(TSpecialDialogType.ShieldHeadWarning
1389+ ,'Encaminhamento bem sucedido'
1390+ ,'A tarefa foi encaminhada para Testes com sucesso contudo não foi possível adicionar o comentário padrão de encaminhamento'
1391+ ,ErrorId + #13#10 + ErrorDescription
1392+ ,'Mostrar mensagem de erro original'
1393+ ,'Ocultar mensagem de erro original'
1394+ ,TSpecialDialogType.Information
1395+ ,'Ao fechar esta caixa de diálogo, a tela da tarefa será fechada e sua lista de tarefas será atualizada')
13861396 end;
13871397
13881398 RefreshList;
@@ -1420,20 +1430,20 @@
14201430 end;
14211431 {$ENDREGION}
14221432
1423- TForm(Owner).Close;
1433+ CloseMyOwner;
14241434 end
14251435 else
14261436 begin
14271437 DecodeError(ForwardError,ErrorId,ErrorDescription);
14281438
1429- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
1430- ,'Erro ao encaminhar a tarefa'
1431- ,'Não foi possível encaminhar a tarefa para Testes'
1432- ,ErrorId + #13#10 + ErrorDescription
1433- ,'Mostrar mensagem de erro original'
1434- ,'Ocultar mensagem de erro original'
1435- ,TSpecialDialogType.Information
1436- ,'A mensagem de erro original é aquela que foi emitida pelo MantisBT');
1439+ SSD(TSpecialDialogType.ShieldHeadError
1440+ ,'Erro ao encaminhar a tarefa'
1441+ ,'Não foi possível encaminhar a tarefa para Testes'
1442+ ,ErrorId + #13#10 + ErrorDescription
1443+ ,'Mostrar mensagem de erro original'
1444+ ,'Ocultar mensagem de erro original'
1445+ ,TSpecialDialogType.Information
1446+ ,'A mensagem de erro original é aquela que foi emitida pelo MantisBT');
14371447 end;
14381448 end;
14391449
@@ -1564,6 +1574,14 @@
15641574 FTask.History[i].Task := @FTask
15651575 end;
15661576
1577+function TDamoTask.SSD(const AType: TSpecialDialogType; const AMainInstruction: String; const AContent: String; const AExpandedInformation: String; const ACollapsedControlText: String; const AExpandedControlText: String; const AFooterIcon: TSpecialDialogType; const AFooterText: String): Boolean;
1578+begin
1579+ if Assigned(Owner) then
1580+ Result := ShowSpecialDialog(AType,AMainInstruction,AContent,AExpandedInformation,ACollapsedControlText,AExpandedControlText,AFooterIcon,AFooterText)
1581+ else
1582+ Result := ShowSpecialDialog(Application.Handle,AType,AMainInstruction,AContent,AExpandedInformation,ACollapsedControlText,AExpandedControlText,AFooterIcon,AFooterText)
1583+end;
1584+
15671585 procedure TDamoTask.NewComment;
15681586 var
15691587 Comment: String;
@@ -1587,14 +1605,14 @@
15871605 begin
15881606 CommentBackupDelete(0);
15891607
1590- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
1591- ,'Comentário inserido com sucesso'
1592- ,'Seu comentário foi inserido com sucesso. Caso você tenha adicionado anexos, eles também foram salvos'
1593- ,''
1594- ,''
1595- ,''
1596- ,TSpecialDialogType.Information
1597- ,'Ao fechar esta caixa de diálogo a tela da tarefa será atualizada');
1608+ SSD(TSpecialDialogType.ShieldHeadOk
1609+ ,'Comentário inserido com sucesso'
1610+ ,'Seu comentário foi inserido com sucesso. Caso você tenha adicionado anexos, eles também foram salvos'
1611+ ,''
1612+ ,''
1613+ ,''
1614+ ,TSpecialDialogType.Information
1615+ ,'Ao fechar esta caixa de diálogo a tela da tarefa será atualizada');
15981616
15991617 RefreshCurrent;
16001618 end
@@ -1603,14 +1621,14 @@
16031621 var ErrorId: String := Copy(Error,1,Pos('|',Error) - 1);
16041622 var ErrorDescription: String := Copy(Error,Pos('|',Error) + 1, Length(Error));
16051623
1606- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
1607- ,'Erro ao inserir comentário'
1608- ,'Não foi possível salvar o comentário. Tente novamente'
1609- ,ErrorId + #13#10 + ErrorDescription
1610- ,'Mostrar mensagem de erro original'
1611- ,'Ocultar mensagem de erro original'
1612- ,TSpecialDialogType.Information
1613- ,'O MantisBT pode estar fora do ar');
1624+ SSD(TSpecialDialogType.ShieldHeadError
1625+ ,'Erro ao inserir comentário'
1626+ ,'Não foi possível salvar o comentário. Tente novamente'
1627+ ,ErrorId + #13#10 + ErrorDescription
1628+ ,'Mostrar mensagem de erro original'
1629+ ,'Ocultar mensagem de erro original'
1630+ ,TSpecialDialogType.Information
1631+ ,'O MantisBT pode estar fora do ar');
16141632 end;
16151633 end;
16161634 end;
@@ -1630,26 +1648,26 @@
16301648
16311649 if AddAttachment(Application.Handle,TForm(Owner),FTask,Attachments,Error) then
16321650 begin
1633- ShowSpecialDialog(TSpecialDialogType.ShieldHeadOk
1634- ,'Arquivos anexados com sucesso!'
1635- ,'Seus arquivos foram anexados com sucesso'
1636- ,''
1637- ,''
1638- ,''
1639- ,TSpecialDialogType.Information
1640- ,'Ao fechar esta caixa de diálogo a tela da tarefa será atualizada');
1651+ SSD(TSpecialDialogType.ShieldHeadOk
1652+ ,'Arquivos anexados com sucesso!'
1653+ ,'Seus arquivos foram anexados com sucesso'
1654+ ,''
1655+ ,''
1656+ ,''
1657+ ,TSpecialDialogType.Information
1658+ ,'Ao fechar esta caixa de diálogo a tela da tarefa será atualizada');
16411659
16421660 RefreshCurrent;
16431661 end
16441662 else
1645- ShowSpecialDialog(TSpecialDialogType.ShieldHeadError
1646- ,'Erro ao anexar arquivos'
1647- ,'Não foi possível anexar seus arquivos. Tente novamente'
1648- ,Error
1649- ,'Mostrar mensagem de erro original'
1650- ,'Ocultar mensagem de erro original'
1651- ,TSpecialDialogType.Information
1652- ,'O MantisBT pode estar fora do ar')
1663+ SSD(TSpecialDialogType.ShieldHeadError
1664+ ,'Erro ao anexar arquivos'
1665+ ,'Não foi possível anexar seus arquivos. Tente novamente'
1666+ ,Error
1667+ ,'Mostrar mensagem de erro original'
1668+ ,'Ocultar mensagem de erro original'
1669+ ,TSpecialDialogType.Information
1670+ ,'O MantisBT pode estar fora do ar')
16531671 end;
16541672 end;
16551673
@@ -1679,6 +1697,12 @@
16791697
16801698 procedure TDamoTask.RefreshCurrent;
16811699 begin
1700+ Esse metodo é chamado a partir do envio para testes e precisa ser protegido pois nem sempre haverá um owner
1701+ ressete a tarefa de testes e envie para testes quando terminar
1702+ depois continue testando os itens de menu dinamicos
1703+
1704+ esse código será comitado com erros
1705+
16821706 TFormTask(Owner).InitializeFormTask(FTask,True);
16831707 // InitializeFormTask chama LoadTaskHeader, que configura o Caption como
16841708 // "Tarefa Mantis #XXXXXX", mas o Caption deve ser "Tarefa Mantis #XXXXXX -
--- trunk/client/src/UFormTask.pas (revision 197)
+++ trunk/client/src/UFormTask.pas (revision 198)
@@ -822,22 +822,62 @@
822822 end;
823823
824824 procedure TFormTask.ConfigureStatusChangeActions;
825+var
826+ CanStartDevelopment: Boolean;
827+ CanStartTests: Boolean;
828+ CanStartHomologation: Boolean;
829+ CanPause: Boolean;
830+ CanPauseAndForward: Boolean;
831+ CanSendToTests: Boolean;
832+ CanSendToHomologation: Boolean;
833+ CanApprove: Boolean;
834+ CanDisapprove: Boolean;
835+ CanMarkAsDone: Boolean;
836+ CanReject: Boolean;
825837 begin
826- ACTNReject.Visible := FDamoTask.Task.CanReject;
827- ACTNStartDevelopment.Visible := FDamoTask.Task.CanStartDevelopment;
828- ACTNPause.Visible := FDamoTask.Task.CanPauseDevelopment or FDamoTask.Task.CanPauseTests or FDamoTask.Task.CanPauseHomologation;
829- ACTNPauseAndForward.Visible := FDamoTask.Task.CanPauseDevelopmentAndForward;
830- ACTNSendToTest.Visible := FDamoTask.Task.CanSendToTest;
831- ACTNSendToHomologation.Visible := FDamoTask.Task.CanSendToHomologation or FDamoTask.Task.CanSendToHomologationWithoutTests;
838+ FDamoPrincipal.VisibleActions(FDamoTask.Task
839+ ,CanStartDevelopment
840+ ,CanStartTests
841+ ,CanStartHomologation
842+ ,CanPause
843+ ,CanPauseAndForward
844+ ,CanSendToTests
845+ ,CanSendToHomologation
846+ ,CanApprove
847+ ,CanDisapprove
848+ ,CanMarkAsDone
849+ ,CanReject);
832850
851+ ACTNStartDevelopment.Visible := CanStartDevelopment;
852+ ACTNStartTest.Visible := CanStartTests;
853+ ACTNStartHomologation.Visible := CanStartHomologation;
854+ ACTNPause.Visible := CanPause;
855+ ACTNPauseAndForward.Visible := CanPauseAndForward;
856+ ACTNSendToTest.Visible := CanSendToTests;
857+ ACTNSendToHomologation.Visible := CanSendToHomologation;
858+ ACTNApprove.Visible := CanApprove;
859+ ACTNDisapprove.Visible := CanDisapprove;
860+ ACTNMarkAsDone.Visible := CanMarkAsDone;
861+ ACTNReject.Visible := CanReject;
862+
833863 if FDamoTask.Task.CanSendToHomologationWithoutTests then
834864 ACTNSendToHomologation.Hint := 'Enviar para Homologação sem testar';
835865
836- ACTNStartTest.Visible := FDamoTask.Task.CanStartTests;
837- ACTNApprove.Visible := FDamoTask.Task.CanApproveTests or FDamoTask.Task.CanApproveHomologation;
838- ACTNDisapprove.Visible := FDamoTask.Task.CanDisapproveTests or FDamoTask.Task.CanDisapproveHomologation;
839- ACTNStartHomologation.Visible := FDamoTask.Task.CanStartHomologation;
840- ACTNMarkAsDone.Visible := FDamoTask.Task.CanMarkAsDone;
866+// ACTNReject.Visible := FDamoTask.Task.CanReject;
867+// ACTNStartDevelopment.Visible := FDamoTask.Task.CanStartDevelopment;
868+// ACTNPause.Visible := FDamoTask.Task.CanPauseDevelopment or FDamoTask.Task.CanPauseTests or FDamoTask.Task.CanPauseHomologation;
869+// ACTNPauseAndForward.Visible := FDamoTask.Task.CanPauseDevelopmentAndForward;
870+// ACTNSendToTest.Visible := FDamoTask.Task.CanSendToTest;
871+// ACTNSendToHomologation.Visible := FDamoTask.Task.CanSendToHomologation or FDamoTask.Task.CanSendToHomologationWithoutTests;
872+//
873+// if FDamoTask.Task.CanSendToHomologationWithoutTests then
874+// ACTNSendToHomologation.Hint := 'Enviar para Homologação sem testar';
875+//
876+// ACTNStartTest.Visible := FDamoTask.Task.CanStartTests;
877+// ACTNApprove.Visible := FDamoTask.Task.CanApproveTests or FDamoTask.Task.CanApproveHomologation;
878+// ACTNDisapprove.Visible := FDamoTask.Task.CanDisapproveTests or FDamoTask.Task.CanDisapproveHomologation;
879+// ACTNStartHomologation.Visible := FDamoTask.Task.CanStartHomologation;
880+// ACTNMarkAsDone.Visible := FDamoTask.Task.CanMarkAsDone;
841881 end;
842882
843883 end.
Show on old repository browser