00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "bugedit.h"
00019 #include <qmessagebox.h>
00020 #include <qpushbutton.h>
00021 #include <qlabel.h>
00022 #include <qwhatsthis.h>
00023 #include <qtabbar.h>
00024 #include <klocale.h>
00025
00026
00027
00028
00029
00030
00031 const char * severity_desc [] =
00032 {
00033 "critical",
00034 "grave",
00035 "crash",
00036 "normal",
00037 "low",
00038 "wishlist",
00039 0
00040 };
00041
00042
00043
00044
00045
00046
00047 const char * priority_desc [] =
00048 {
00049 "critical",
00050 "high",
00051 "normal",
00052 "low",
00053 0
00054 };
00055
00056
00057
00058
00059
00060 const QString BugEdit::DateToQString (QDate InputDate)
00061 {
00062 QString OutputString;
00063
00064 OutputString.sprintf ("%02i/%02i/%04i", InputDate.day (), InputDate.month (), InputDate.year ());
00065
00066 return OutputString;
00067 }
00068
00069
00070
00071
00072 const QDate BugEdit::QStringToDate (QString InputString)
00073 {
00074 QDate OutputDate;
00075 int FirstSlash;
00076 int LastSlash;
00077 int Day;
00078 int Month;
00079 int Year;
00080
00081
00082 if (InputString.length () > 0)
00083 {
00084
00085 FirstSlash = InputString.find ('/');
00086 LastSlash = InputString.findRev ('/');
00087
00088
00089 Day = InputString.left (FirstSlash).toInt ();
00090 Month = InputString.mid (FirstSlash + 1, LastSlash - FirstSlash - 1).toInt ();
00091 Year = InputString.right (InputString.length () - LastSlash - 1).toInt ();
00092
00093
00094 if (Year < 100)
00095 {
00096
00097 if (Year < 70)
00098 Year += 2000;
00099 else
00100 Year += 1900;
00101 }
00102
00103
00104 OutputDate.setYMD (Year, Month, Day);
00105 }
00106
00107 return OutputDate;
00108 }
00109
00110 BugEdit::BugEdit (QWidget * parent, const char * name, Bug * pBug, bool AddItem, bool modal, WFlags f)
00111 : QTabDialog (parent, name, modal)
00112 {
00113 int Count;
00114
00115
00116 setCaption (i18n ("Add/Edit Bug Record"));
00117
00118
00119 m_pBug = pBug;
00120 m_AddItem = AddItem;
00121
00122
00123 pSheetGeneral = new QHBox (this,"shtGeneral");
00124 pSheetNotes = new QHBox (this,"shtNotes");
00125 pSheetRepeat = new QHBox (this,"shtRepeat");
00126 pSheetWorkaround = new QHBox (this,"shtWorkaround");
00127 pSheetSysInfo = new QHBox (this,"shtSysInfo");
00128
00129
00130 GeneralLayout = new QGrid (2,pSheetGeneral, "gridGeneral");
00131 GeneralLayout->setMargin (10);
00132 GeneralLayout->setSpacing (4);
00133
00134
00135 addTab (pSheetGeneral,"General");
00136 addTab (pSheetNotes,"Notes");
00137 addTab (pSheetRepeat,"Repeat");
00138 addTab (pSheetWorkaround,"Workaround");
00139 addTab (pSheetSysInfo,"SysInfo");
00140
00141
00142 QLabel *lblBugID = new QLabel (i18n ("Bug ID:"),GeneralLayout);
00143
00144
00145 editBugID = new QLineEdit(GeneralLayout);
00146 lblBugID->setBuddy (editBugID);
00147 editBugID->setGeometry (10,10,80,20);
00148 editBugID->setText (pBug->BugID);
00149 QWhatsThis::add (editBugID,
00150 i18n("This is used to uniquely identify the bug\n"
00151 "across the lifespan of its existence."));
00152
00153
00154 QLabel *lblDescription = new QLabel (i18n ("Description:"),GeneralLayout);
00155
00156
00157 editDescription = new QLineEdit(GeneralLayout);
00158 lblDescription->setBuddy (editDescription);
00159 editDescription->setText (pBug->Description);
00160 QWhatsThis::add (editDescription,
00161 i18n("Enter a brief, one line,\n"
00162 "description of the bug."));
00163
00164
00165 QLabel *lblSeverity = new QLabel (i18n ("Severity:"), GeneralLayout);
00166
00167
00168 cboSeverity = new QComboBox(false, GeneralLayout);
00169 lblSeverity->setBuddy (cboSeverity);
00170 cboSeverity->insertStrList (severity_desc);
00171 QWhatsThis::add (cboSeverity,
00172 i18n("CRITICAL:\n"
00173 "Makes unrelated software on the system (or the whole system) "
00174 "break, or causes serious data loss, or introduces a security hole on "
00175 "systems where you install the package.\n\n"
00176 "GRAVE:\n"
00177 "Makes the package in question unusable or mostly so, or causes "
00178 "data loss, or introduces a security hole allowing access to the "
00179 "accounts of users who use the package.\n\n"
00180 "CRASH:\n"
00181 "Indicates drkonqi reported bugs. These bugs have their own severity "
00182 "as they are very often duplicates or have no reported way to reproduce "
00183 "them. They have to be reviewed in any case.\n\n"
00184 "NORMAL:\n"
00185 "The default value, for normal bugs.\n\n"
00186 "LOW:\n"
00187 "Trivial feature fix which does not impact usage.\n\n"
00188 "WISHLIST:\n"
00189 "For any feature request, and also for any bugs that are very difficult "
00190 "to fix due to major design considerations."));
00191
00192
00193 cboSeverity->setCurrentItem (3);
00194 for (Count = 0;Count < cboSeverity->count ();Count++)
00195 {
00196 if (cboSeverity->text (Count) == pBug->Severity)
00197 cboSeverity->setCurrentItem (Count);
00198 }
00199
00200
00201 QLabel *lblPriority = new QLabel (i18n ("Priority:"), GeneralLayout);
00202
00203
00204 cboPriority = new QComboBox(false, GeneralLayout);
00205 lblPriority->setBuddy (cboPriority);
00206 cboPriority->insertStrList (priority_desc);
00207 QWhatsThis::add (cboPriority,
00208 i18n("CRITICAL:\n"
00209 "This bug must be fixed in the near future.\n\n"
00210 "HIGH:\n"
00211 "This bug is serious, but not crippling\n"
00212 "to the system. It should be fixed at the\n"
00213 "first reasonable opportunity.\n\n"
00214 "NORMAL:\n"
00215 "The default value, for normal bugs.\n\n"
00216 "LOW:\n"
00217 "Trivial feature fix which does not impact usage.\n\n"));
00218
00219
00220 cboPriority->setCurrentItem (2);
00221 for (Count = 0;Count < cboPriority->count ();Count++)
00222 {
00223 if (cboPriority->text (Count) == pBug->Priority)
00224 cboPriority->setCurrentItem (Count);
00225 }
00226
00227
00228 QLabel *lblPackage = new QLabel (i18n ("Package:"), GeneralLayout);
00229
00230
00231 editPackage = new QLineEdit(GeneralLayout);
00232 lblPackage->setBuddy (editPackage);
00233 editPackage->setText (pBug->Package);
00234 QWhatsThis::add (editPackage,
00235 i18n("Enter the name of the package this\n"
00236 "bug occurred in. Please do not enter\n"
00237 "the version number at this time."));
00238
00239
00240 QLabel *lblVersionNo = new QLabel (i18n ("Version no:"), GeneralLayout);
00241
00242
00243 editVersionNo = new QLineEdit(GeneralLayout);
00244 lblVersionNo->setBuddy (editVersionNo);
00245 editVersionNo->setText (pBug->VersionNo);
00246 QWhatsThis::add (editVersionNo,
00247 i18n("Enter the version number of the package\n"
00248 "the bug is found in."));
00249
00250
00251 QLabel *lblBugClass = new QLabel (i18n ("Class:"), GeneralLayout);
00252
00253
00254 editBugClass = new QLineEdit(GeneralLayout);
00255 lblBugClass->setBuddy (editBugClass);
00256 editBugClass->setText (pBug->BugClass);
00257 QWhatsThis::add (editBugClass,
00258 i18n("The class of bug."));
00259
00260
00261 QLabel *lblLocation = new QLabel (i18n ("Location:"), GeneralLayout);
00262
00263
00264 editLocation = new QLineEdit(GeneralLayout);
00265 lblLocation->setBuddy (editLocation);
00266 editLocation->setText (pBug->Location);
00267 QWhatsThis::add (editLocation,
00268 i18n("Enter the location within the source code\n"
00269 "where the bug may be found (if known)."));
00270
00271
00272 new QWidget (GeneralLayout);
00273 new QWidget (GeneralLayout);
00274
00275
00276 QLabel *lblReportDate = new QLabel (i18n ("Reported on:"), GeneralLayout);
00277
00278
00279 editReportDate = new QLineEdit(GeneralLayout);
00280 lblReportDate->setBuddy (editReportDate);
00281 if (pBug->ReportDate.isValid ())
00282 editReportDate->setText (DateToQString (pBug->ReportDate));
00283 QWhatsThis::add (editReportDate,
00284 i18n("Enter the date this bug was reported."));
00285
00286
00287 QLabel *lblReportUserName = new QLabel (i18n ("Reported by:"), GeneralLayout);
00288
00289
00290 editReportUserName = new QLineEdit(GeneralLayout);
00291 lblReportUserName->setBuddy (editReportUserName);
00292 editReportUserName->setText (pBug->ReportUserName);
00293 QWhatsThis::add (editReportUserName,
00294 i18n("Enter the name of the person\n"
00295 "who reported this bug."));
00296
00297
00298 QLabel *lblReportEMail = new QLabel (i18n ("Reported by (Email):"), GeneralLayout);
00299
00300
00301 editReportEMail = new QLineEdit(GeneralLayout);
00302 lblReportEMail->setBuddy (editReportEMail);
00303 editReportEMail->setText (pBug->ReportEMail);
00304 QWhatsThis::add (editReportEMail,
00305 i18n("Enter the email address of the\n"
00306 "person who reported this bug."));
00307
00308
00309 new QWidget (GeneralLayout);
00310 new QWidget (GeneralLayout);
00311
00312
00313 QLabel *lblAssignedDate = new QLabel (i18n ("Assigned on:"), GeneralLayout);
00314
00315
00316 editAssignedDate = new QLineEdit(GeneralLayout);
00317 lblAssignedDate->setBuddy (editAssignedDate);
00318 if (pBug->AssignedDate.isValid ())
00319 editAssignedDate->setText (DateToQString (pBug->AssignedDate));
00320 QWhatsThis::add (editAssignedDate,
00321 i18n("Enter the date this bug was\n"
00322 "assigned to a person for repair."));
00323
00324
00325 QLabel *lblAssignedTo = new QLabel (i18n ("Assigned to:"), GeneralLayout);
00326
00327
00328 editAssignedTo = new QLineEdit(GeneralLayout);
00329 lblAssignedTo->setBuddy (editAssignedTo);
00330 editAssignedTo->setText (pBug->AssignedTo);
00331 QWhatsThis::add (editAssignedTo,
00332 i18n("Enter the name of the person you\n"
00333 "wish to assign this bug to."));
00334
00335
00336 QLabel *lblAssignedEMail = new QLabel (i18n ("Assigned to (Email):"), GeneralLayout);
00337
00338
00339 editAssignedEMail = new QLineEdit(GeneralLayout);
00340 lblAssignedEMail->setBuddy (editAssignedEMail);
00341 editAssignedEMail->setText (pBug->AssignedEMail);
00342 QWhatsThis::add (editAssignedEMail,
00343 i18n("Enter the email address of the person\n"
00344 "you wish to assign this bug to."));
00345
00346
00347 new QWidget (GeneralLayout);
00348 new QWidget (GeneralLayout);
00349
00350
00351 editNotes = new QMultiLineEdit (pSheetNotes,"Notes");
00352 editNotes->setText (pBug->Notes);
00353 QWhatsThis::add (editNotes,
00354 i18n("Enter a full description of the\n"
00355 "nature of the bug."));
00356
00357
00358 editRepeat = new QMultiLineEdit(pSheetRepeat,"Repeat");
00359 editRepeat->setText (pBug->Repeat);
00360 QWhatsThis::add (editRepeat,
00361 i18n("Enter the method used to repeat this\n"
00362 "error, if there is one."));
00363
00364
00365 editWorkaround = new QMultiLineEdit(pSheetWorkaround,"Workaround");
00366 editWorkaround->setText (pBug->Workaround);
00367 QWhatsThis::add (editWorkaround,
00368 i18n("Enter a workaround for the bug,\n"
00369 "if there is one."));
00370
00371
00372 editSysInfo = new QMultiLineEdit (pSheetSysInfo,"SysInfo");
00373 editSysInfo->setText (pBug->SysInfo);
00374 QWhatsThis::add (editSysInfo,
00375 i18n("Enter a full description of your OS, including\n"
00376 "distribution, Qt version, compilers, etc."));
00377
00378
00379 setOkButton (i18n("OK"));
00380 setCancelButton (i18n("Cancel"));
00381
00382
00383 connect (this, SIGNAL(cancelButtonPressed()), this, SLOT(cancelClicked()));
00384 connect (this, SIGNAL(applyButtonPressed()), this, SLOT(closeClicked()));
00385
00386
00387 editBugID->setFocus ();
00388
00389
00390 Dirty = FALSE;
00391 }
00392
00393
00394 BugEdit::~BugEdit()
00395 {
00396 }
00397
00398
00399
00400
00401 void BugEdit::updateRecord()
00402 {
00403 m_pBug->BugID = editBugID->text ();
00404 m_pBug->Description = editDescription->text ();
00405 m_pBug->Severity = cboSeverity->currentText ();
00406 m_pBug->Priority = cboPriority->currentText ();
00407 m_pBug->BugClass = editBugClass->text ();
00408 m_pBug->Location = editLocation->text ();
00409 m_pBug->AssignedTo = editAssignedTo->text ();
00410 m_pBug->AssignedEMail = editAssignedEMail->text ();
00411 m_pBug->ReportUserName = editReportUserName->text ();
00412 m_pBug->ReportEMail = editReportEMail->text ();
00413 m_pBug->Package = editPackage->text ();
00414 m_pBug->VersionNo = editVersionNo->text ();
00415 m_pBug->Notes = editNotes->text ();
00416 m_pBug->Repeat = editRepeat->text ();
00417 m_pBug->Workaround = editWorkaround->text ();
00418 m_pBug->SysInfo = editSysInfo->text ();
00419
00420 m_pBug->AssignedDate = QStringToDate (editAssignedDate->text ());
00421 m_pBug->ReportDate = QStringToDate (editReportDate->text ());
00422 }
00423
00424
00425
00426
00427
00428 void BugEdit::closeClicked()
00429 {
00430
00431
00432 {
00433
00434 updateRecord ();
00435
00436
00437 if (m_AddItem)
00438 emit sigAddBug (m_pBug);
00439 else
00440 emit sigUpdateBug (m_pBug);
00441 }
00442
00443
00444 close ();
00445 }
00446
00447
00448
00449
00450
00451 void BugEdit::cancelClicked()
00452 {
00453 if (Dirty)
00454 {
00455 QMessageBox MB;
00456
00457
00458 if (MB.warning (this,
00459 i18n ("Record Changed"),
00460 i18n ("The record has been changed.\n"
00461 "If you exit now you will lose all your changes.\n"
00462 "Are you sure you want to exit?"),
00463 QMessageBox::Yes,QMessageBox::Cancel | QMessageBox::Default) == QMessageBox::Cancel)
00464 {
00465
00466 return;
00467 }
00468 }
00469
00470
00471 close ();
00472 }
00473
00474 void BugEdit::resizeEvent (QResizeEvent * QEvent)
00475 {
00476
00477 QWidget::resizeEvent (QEvent);
00478 }
00479 #include "bugedit.moc"