Subversion Repositories winbugtracker

Rev

Rev 2 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 daniel-mar 1
unit WuLiMain;
2
 
3 daniel-mar 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
 
2 daniel-mar 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
3 daniel-mar 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;
2 daniel-mar 35
    DBNavigator1: TDBNavigator;
36
    DBRichEdit1: TDBRichEdit;
37
    DBEdit1: TDBEdit;
38
    DBLookupComboBox1: TDBLookupComboBox;
3 daniel-mar 39
    DBEdit2: TDBEdit;
40
    DBEdit3: TDBEdit;
41
    DBLookupComboBox2: TDBLookupComboBox;
42
    DBLookupComboBox3: TDBLookupComboBox;
43
    TrackBar1: TTrackBar;
44
    ADOConnection1: TADOConnection;
45
    dsBugs: TDataSource;
2 daniel-mar 46
    tblMitarbeiter: TADOTable;
47
    dsMitarbeiter: TDataSource;
48
    MainMenu1: TMainMenu;
49
    Stammdaten1: TMenuItem;
50
    Mitarbeiter1: TMenuItem;
51
    Projekte1: TMenuItem;
52
    Module1: TMenuItem;
3 daniel-mar 53
    Versionen1: TMenuItem;
54
    Projektwechseln1: TMenuItem;
2 daniel-mar 55
    XPManifest1: TXPManifest;
56
    qryBugs: TADOQuery;
57
    tblVersionen: TADOTable;
58
    dsVersionen: TDataSource;
59
    tblProjekte: TADOTable;
60
    dsProjekte: TDataSource;
61
    tblModule: TADOTable;
62
    dsModule: TDataSource;
3 daniel-mar 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;
2 daniel-mar 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);
3 daniel-mar 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);
2 daniel-mar 93
  private
94
    { Private-Deklarationen }
95
  public
96
    { Public-Deklarationen }
3 daniel-mar 97
    eingeloggtMitarbeiter: integer;
98
    aktuellesProjekt: integer;
99
    procedure NeuFiltern;
2 daniel-mar 100
  end;
101
 
102
var
3 daniel-mar 103
  frmBugtracker: TfrmBugtracker;
2 daniel-mar 104
 
105
implementation
106
 
3 daniel-mar 107
uses Mitarbeiter, Module, Versionen, Projekte, Login, About, inifiles;
2 daniel-mar 108
 
109
{$R *.dfm}
110
 
3 daniel-mar 111
procedure TfrmBugtracker.qryBugsAfterInsert(DataSet: TDataSet);
2 daniel-mar 112
begin
3 daniel-mar 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;
2 daniel-mar 117
end;
118
 
3 daniel-mar 119
procedure TfrmBugtracker.qryBugsAfterScroll(DataSet: TDataSet);
120
var
121
  bakEvent: TNotifyEvent;
2 daniel-mar 122
begin
3 daniel-mar 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
2 daniel-mar 148
  if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
149
  qryBugs.FieldByName('wichtigkeit').AsInteger := TrackBar1.Position;
150
end;
151
 
3 daniel-mar 152
procedure TfrmBugtracker.Versionen1Click(Sender: TObject);
2 daniel-mar 153
begin
154
  frmVersionen.ShowModal;
155
end;
156
 
3 daniel-mar 157
procedure TfrmBugtracker.ber1Click(Sender: TObject);
2 daniel-mar 158
begin
3 daniel-mar 159
  AboutBox.ShowModal;
160
end;
161
 
162
procedure TfrmBugtracker.btnFixedToggleClick(Sender: TObject);
163
begin
2 daniel-mar 164
  if not (qryBugs.State in [dsEdit, dsInsert]) then qryBugs.Edit;
3 daniel-mar 165
  if qryBugs.FieldByName('fixdatum').IsNull then
166
    qryBugs.FieldByName('fixdatum').AsDateTime := Now
167
  else
168
    qryBugs.FieldByName('fixdatum').Clear;
2 daniel-mar 169
end;
170
 
3 daniel-mar 171
procedure TfrmBugtracker.ComboBox1Change(Sender: TObject);
2 daniel-mar 172
begin
3 daniel-mar 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
2 daniel-mar 224
  frmMitarbeiter.ShowModal;
225
end;
226
 
3 daniel-mar 227
procedure TfrmBugtracker.Module1Click(Sender: TObject);
2 daniel-mar 228
begin
229
  frmModule.ShowModal;
230
end;
231
 
3 daniel-mar 232
procedure TfrmBugtracker.NeuFiltern;
2 daniel-mar 233
begin
3 daniel-mar 234
  ComboBox1Change(ComboBox1);
235
end;
236
 
237
procedure TfrmBugtracker.Projekte1Click(Sender: TObject);
238
begin
2 daniel-mar 239
  frmProjekte.ShowModal;
240
end;
241
 
3 daniel-mar 242
procedure TfrmBugtracker.Projektwechseln1Click(Sender: TObject);
243
begin
244
  frmLogin.ShowModal;
245
end;
246
 
2 daniel-mar 247
end.