Subversion Repositories winbugtracker

Rev

Rev 5 | Go to most recent revision | Details | Last modification | View Log | RSS feed

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