Subversion Repositories winbugtracker

Rev

Rev 2 | Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. unit WuLiMain;
  2.  
  3. (*
  4.  * TODO:
  5.  * - fertigstellen
  6.  *   ... multi user/projekt testen
  7.  *   ... bearbeitungsnotiz-button (rtf-farben usw)
  8.  *   ...
  9.  * - abfragen ob speichern wenn fenster geschlossen wird
  10.  * - filtern nach modul
  11.  * - verbinden mit ticketsystem von HS
  12.  * - rtf controls?
  13.  *)
  14.  
  15. interface
  16.  
  17. uses
  18.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  19.   Dialogs, DBXpress, WideStrings, DB, SqlExpr, StdCtrls, ExtCtrls, DBCtrls,
  20.   ADODB, ComCtrls, Grids, DBGrids, Mask, Menus, XPMan;
  21.  
  22. type
  23.   TfrmBugtracker = class(TForm)
  24.     Panel1: TPanel;
  25.     DBGrid1: TDBGrid;
  26.     ComboBox1: TComboBox;
  27.     DBNavigator2: TDBNavigator;
  28.     Panel2: TPanel;
  29.     Label1: TLabel;
  30.     Label2: TLabel;
  31.     Label3: TLabel;
  32.     Label4: TLabel;
  33.     Label5: TLabel;
  34.     Label6: TLabel;
  35.     DBNavigator1: TDBNavigator;
  36.     DBRichEdit1: TDBRichEdit;
  37.     DBEdit1: TDBEdit;
  38.     DBLookupComboBox1: TDBLookupComboBox;
  39.     DBEdit2: TDBEdit;
  40.     DBEdit3: TDBEdit;
  41.     DBLookupComboBox2: TDBLookupComboBox;
  42.     DBLookupComboBox3: TDBLookupComboBox;
  43.     TrackBar1: TTrackBar;
  44.     ADOConnection1: TADOConnection;
  45.     dsBugs: TDataSource;
  46.     tblMitarbeiter: TADOTable;
  47.     dsMitarbeiter: TDataSource;
  48.     MainMenu1: TMainMenu;
  49.     Stammdaten1: TMenuItem;
  50.     Mitarbeiter1: TMenuItem;
  51.     Projekte1: TMenuItem;
  52.     Module1: TMenuItem;
  53.     Versionen1: TMenuItem;
  54.     Projektwechseln1: TMenuItem;
  55.     XPManifest1: TXPManifest;
  56.     qryBugs: TADOQuery;
  57.     tblVersionen: TADOTable;
  58.     dsVersionen: TDataSource;
  59.     tblProjekte: TADOTable;
  60.     dsProjekte: TDataSource;
  61.     tblModule: TADOTable;
  62.     dsModule: TDataSource;
  63.     Timer1: TTimer;
  64.     Splitter1: TSplitter;
  65.     Hilfe1: TMenuItem;
  66.     ber1: TMenuItem;
  67.     btnFixedToggle: TButton;
  68.     btnBearbeitungsnotiz: TButton;
  69.     qryBugsid: TAutoIncField;
  70.     qryBugstitel: TStringField;
  71.     qryBugsbeschreibung: TMemoField;
  72.     qryBugserstellt: TDateTimeField;
  73.     qryBugswichtigkeit: TIntegerField;
  74.     qryBugsbearbeiter: TIntegerField;
  75.     qryBugsfixdatum: TDateTimeField;
  76.     qryBugsversion_release: TIntegerField;
  77.     qryBugsmodul: TIntegerField;
  78.     qryBugsprojekt: TIntegerField;
  79.     procedure Mitarbeiter1Click(Sender: TObject);
  80.     procedure qryBugsAfterScroll(DataSet: TDataSet);
  81.     procedure Module1Click(Sender: TObject);
  82.     procedure Projekte1Click(Sender: TObject);
  83.     procedure Versionen1Click(Sender: TObject);
  84.     procedure TrackBar1Change(Sender: TObject);
  85.     procedure Timer1Timer(Sender: TObject);
  86.     procedure ComboBox1Change(Sender: TObject);
  87.     procedure Projektwechseln1Click(Sender: TObject);
  88.     procedure qryBugsAfterInsert(DataSet: TDataSet);
  89.     procedure ber1Click(Sender: TObject);
  90.     procedure btnFixedToggleClick(Sender: TObject);
  91.     procedure qryBugsversion_releaseValidate(Sender: TField);
  92.     procedure FormCreate(Sender: TObject);
  93.   private
  94.     { Private-Deklarationen }
  95.   public
  96.     { Public-Deklarationen }
  97.     eingeloggtMitarbeiter: integer;
  98.     aktuellesProjekt: integer;
  99.     procedure NeuFiltern;
  100.   end;
  101.  
  102. var
  103.   frmBugtracker: TfrmBugtracker;
  104.  
  105. implementation
  106.  
  107. uses Mitarbeiter, Module, Versionen, Projekte, Login, About, inifiles;
  108.  
  109. {$R *.dfm}
  110.  
  111. procedure TfrmBugtracker.qryBugsAfterInsert(DataSet: TDataSet);
  112. begin
  113.   // Standardwerte für einen neuen Bug
  114.   qryBugs.FieldByName('wichtigkeit').AsInteger := 5;
  115.   // qryBugs.FieldByName('bearbeiter').AsInteger := eingeloggtMitarbeiter;
  116.   qryBugs.FieldByName('projekt').AsInteger := aktuellesProjekt;
  117. end;
  118.  
  119. procedure TfrmBugtracker.qryBugsAfterScroll(DataSet: TDataSet);
  120. var
  121.   bakEvent: TNotifyEvent;
  122. begin
  123.   bakEvent := TrackBar1.OnChange;
  124.   TrackBar1.OnChange := nil;
  125.   try
  126.     TrackBar1.Position := qryBugs.FieldByName('wichtigkeit').AsInteger;
  127.   finally
  128.     TrackBar1.OnChange := bakEvent;
  129.   end;
  130. end;
  131.  
  132. procedure TfrmBugtracker.qryBugsversion_releaseValidate(Sender: TField);
  133. begin
  134.   if qryBugs.FieldByName('fixdatum').IsNull then
  135.   begin
  136.     raise Exception.Create('Vor einer Veröffentlichung muss der Bugfix erst als gefixt markiert werden.');
  137.   end;
  138. end;
  139.  
  140. procedure TfrmBugtracker.Timer1Timer(Sender: TObject);
  141. begin
  142.   Timer1.Enabled := false;
  143.   if frmLogin.ShowModal = mrCancel then Close;
  144. end;
  145.  
  146. procedure TfrmBugtracker.TrackBar1Change(Sender: TObject);
  147. begin
  148.   if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
  149.   qryBugs.FieldByName('wichtigkeit').AsInteger := TrackBar1.Position;
  150. end;
  151.  
  152. procedure TfrmBugtracker.Versionen1Click(Sender: TObject);
  153. begin
  154.   frmVersionen.ShowModal;
  155. end;
  156.  
  157. procedure TfrmBugtracker.ber1Click(Sender: TObject);
  158. begin
  159.   AboutBox.ShowModal;
  160. end;
  161.  
  162. procedure TfrmBugtracker.btnFixedToggleClick(Sender: TObject);
  163. begin
  164.   if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
  165.   if qryBugs.FieldByName('fixdatum').IsNull then
  166.     qryBugs.FieldByName('fixdatum').AsDateTime := Now
  167.   else
  168.     qryBugs.FieldByName('fixdatum').Clear;
  169. end;
  170.  
  171. procedure TfrmBugtracker.ComboBox1Change(Sender: TObject);
  172. begin
  173.   case ComboBox1.ItemIndex of
  174.     0:
  175.       begin
  176.         // Meine offenen Bugs (nach Wichtigkeit)
  177.         qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NULL AND bearbeiter = '+IntToStr(eingeloggtMitarbeiter)+' ORDER BY wichtigkeit DESC';
  178.       end;
  179.     1:
  180.       begin
  181.         // Alle offenen Bugs (nach Wichtigkeit)
  182.         qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NULL ORDER BY wichtigkeit DESC';
  183.       end;
  184.     2:
  185.       begin
  186.         // Gelöst ohne Veröffentlichung (nach Lösungsdatum)
  187.         qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NOT NULL ORDER BY fixdatum DESC';
  188.       end;
  189.     3:
  190.       begin
  191.         // Gelöst und Veröffentlicht (nach Version und Lösungsdatum)
  192.         qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' AND fixdatum IS NOT NULL ORDER BY version_release DESC, fixdatum DESC';
  193.       end;
  194.     4:
  195.       begin
  196.         // Alle Bugs (nach Eröffnungsdatum)
  197.         qryBugs.SQL.Text := 'SELECT * FROM bugs WHERE projekt = '+IntToStr(aktuellesProjekt)+' ORDER BY erstellt DESC';
  198.       end;
  199.   end;
  200.   qryBugs.Active := true;
  201. end;
  202.  
  203. procedure TfrmBugtracker.FormCreate(Sender: TObject);
  204. var
  205.   ini: TMemIniFile;
  206. begin
  207.   ini := TMemIniFile.Create('bugtracker.ini');
  208.   try
  209.     ADOConnection1.ConnectionString := ini.ReadString('Database', 'ConnectionString', '');
  210.   finally
  211.     ini.Free;
  212.   end;
  213.  
  214.   ADOConnection1.Connected := true;
  215.   qryBugs.Active := true;
  216.   tblMitarbeiter.Active := true;
  217.   tblVersionen.Active := true;
  218.   tblProjekte.Active := true;
  219.   tblModule.Active := true;
  220. end;
  221.  
  222. procedure TfrmBugtracker.Mitarbeiter1Click(Sender: TObject);
  223. begin
  224.   frmMitarbeiter.ShowModal;
  225. end;
  226.  
  227. procedure TfrmBugtracker.Module1Click(Sender: TObject);
  228. begin
  229.   frmModule.ShowModal;
  230. end;
  231.  
  232. procedure TfrmBugtracker.NeuFiltern;
  233. begin
  234.   ComboBox1Change(ComboBox1);
  235. end;
  236.  
  237. procedure TfrmBugtracker.Projekte1Click(Sender: TObject);
  238. begin
  239.   frmProjekte.ShowModal;
  240. end;
  241.  
  242. procedure TfrmBugtracker.Projektwechseln1Click(Sender: TObject);
  243. begin
  244.   frmLogin.ShowModal;
  245. end;
  246.  
  247. end.
  248.