[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/runtime/drkonqi
From: Darío Andrés Rodríguez <andresbajotierra () gmail ! co
Date: 2009-08-07 1:59:04
Message-ID: 1249610344.477528.32339.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1008177 by darioandres:
- Added support for custom bugtracker URLs in bugzillalib (useful for quick tests on \
bugstest.kde.org)
- Added support for set the Platform for bugs in bugzillalib
- Map lsb_release output to valid bugzilla platform values
- If the distribution was not guessed properly by lsb_release (or if it's missing) \
show a combobox to let the user choose the distribution manually.
- Updated ToDo
M +4 -18 ToDo
M +14 -7 bugzillalib.cpp
M +10 -0 bugzillalib.h
M +33 -3 drkonqiassistantpages_bugzilla.cpp
M +2 -0 drkonqiassistantpages_bugzilla.h
M +56 -1 reportinfo.cpp
M +4 -0 reportinfo.h
M +30 -2 ui/assistantpage_bugzilla_information.ui
--- trunk/KDE/kdebase/runtime/drkonqi/ToDo #1008176:1008177
@@ -10,8 +10,6 @@
- Option to "don't show drkonqi for this(X) app"
- Option to avoid drkonqi at all (setting KDE_DEBUG=1), and GUI to renable it
-- We need a new icon/image :)
-
- Improve DuplicatesPage dialog: what if you want to pick more than one possibly \
duplicate?
- Ask for saving the report information to file when exiting the report assistant \
without reporting @@ -19,36 +17,24 @@
- Application detection: ask for or detect specific things depending on application
ie konqueror: url, plasma: plasmoids in use, kopete: protocal, etc.
+//If distro was not autodetected, a combobox is show. Save that selected entry to \
config. +
#ToDiscuss/Improve
--------
-- BugzillaKeywordsPage word filtering (and minimum length) criteria
-(drkonqiassistantpages_bugzilla.cpp:257)
-(( check at least X words, with Y of them with a minimum of Z chars ..? ))
- currently 50 for subject and 100 for body; we'll see how that works
-
- REVIEW criteria of minimum chars/words to use in the Title and Details fields
(drkonqiassistantpages_bugzilla.cpp:729)
#Later
---------
-- Better kwallet integration: use what konqueror uses when you login?
- some method of keeping you logged in to bz to avoid a few dialogs
-- Bugzilla searches should be on product name +"kde" +(?kdelibs?)
-- Recheck KDevelop integration (currently it seems disabled on KDevelop side)
-
- waiting for productName()->product/component mapping (custom cgi file at BKO)
-[[ currently bugzillalib detects unexistent products to later use the "kde" product \
]] [LATER] +[[ currently bugzillalib detects unexistent products to later use the \
"kde" product ]] +Update: local mappings file support already implemented.
#DONE
-------
-- Side by side backtrace comparison on "Show report information" (duplicates step)
-- WordWrap aboutbugreporting
-- Removed Qt::escape calls
-- Avoid LSB messages at all if no found
-
##Bugzilla DrKonqi reports cleanup:
---
Wontfix: 143243, 179721, 185547
--- trunk/KDE/kdebase/runtime/drkonqi/bugzillalib.cpp #1008176:1008177
@@ -33,7 +33,7 @@
#include <KUrl>
#include <KLocale>
-static const char bugtrackerBaseUrl[] = "https://bugs.kde.org/";
+static const char bugtrackerBKOBaseUrl[] = "https://bugs.kde.org/";
static const char columns[] = "bug_severity,priority,bug_status,product,short_desc"; \
//resolution,
@@ -61,8 +61,14 @@
m_fetchBugJob(0),
m_searchJob(0)
{
+ m_bugTrackerUrl = bugtrackerBKOBaseUrl;
}
+void BugzillaManager::setCustomBugtrackerUrl(const QString & customUrl)
+{
+ m_bugTrackerUrl = customUrl;
+}
+
void BugzillaManager::setLoginData(QString _username, QString _password)
{
m_username = _username;
@@ -81,7 +87,7 @@
QByteArray("&log_in=Log+in");
KIO::StoredTransferJob * loginJob =
- KIO::storedHttpPost(postData, KUrl(QString(bugtrackerBaseUrl) + \
QString(loginUrl)), + KIO::storedHttpPost(postData, \
KUrl(QString(m_bugTrackerUrl) + QString(loginUrl)), KIO::HideProgressInfo);
connect(loginJob, SIGNAL(finished(KJob*)) , this, SLOT(loginDone(KJob*)));
@@ -120,7 +126,7 @@
void BugzillaManager::fetchBugReport(int bugnumber)
{
- KUrl url = KUrl(QString(bugtrackerBaseUrl) + \
QString(fetchBugUrl).arg(bugnumber)); + KUrl url = KUrl(QString(m_bugTrackerUrl) + \
QString(fetchBugUrl).arg(bugnumber));
if (m_fetchBugJob) { //Stop previous fetchBugJob
m_fetchBugJob->disconnect();
@@ -169,7 +175,7 @@
}
}
- QString url = QString(bugtrackerBaseUrl) +
+ QString url = QString(m_bugTrackerUrl) +
QString(searchUrl).arg(words.replace(' ' , '+'), product,
comment.replace(' ' , '+'), date_start,
date_end, severity, QString(columns));
@@ -215,7 +221,7 @@
{
QByteArray postData = generatePostDataForReport(report);
- QString url = QString(bugtrackerBaseUrl) + QString(sendReportUrl);
+ QString url = QString(m_bugTrackerUrl) + QString(sendReportUrl);
KIO::StoredTransferJob * sendJob =
KIO::storedHttpPost(postData, KUrl(url), KIO::HideProgressInfo);
@@ -236,7 +242,7 @@
QByteArray("&bug_severity=") +
QUrl::toPercentEncoding(report.bugSeverity()) +
QByteArray("&rep_platform=") +
- QUrl::toPercentEncoding(QString("Unlisted Binaries")) +
+ QUrl::toPercentEncoding(report.platform()) +
QByteArray("&op_sys=") +
QUrl::toPercentEncoding(report.operatingSystem()) +
QByteArray("&priority=") +
@@ -289,7 +295,7 @@
QString BugzillaManager::urlForBug(int bug_number)
{
- return QString(bugtrackerBaseUrl) + QString(showBugUrl).arg(bug_number);
+ return QString(m_bugTrackerUrl) + QString(showBugUrl).arg(bug_number);
}
BugListCSVParser::BugListCSVParser(QByteArray data)
@@ -407,3 +413,4 @@
{
m_isValid = false;
}
+
--- trunk/KDE/kdebase/runtime/drkonqi/bugzillalib.h #1008176:1008177
@@ -86,6 +86,13 @@
return getData("op_sys");
}
+ void setPlatform(QString value) {
+ setData("rep_platform", value);
+ }
+ QString platform() const {
+ return getData("rep_platform");
+ }
+
void setBugStatus(QString value) {
setData("bug_status", value);
}
@@ -209,6 +216,8 @@
QString urlForBug(int bug_number);
+ void setCustomBugtrackerUrl(const QString &);
+
private Q_SLOTS:
void loginDone(KJob*);
void fetchBugReportDone(KJob*);
@@ -237,6 +246,7 @@
KJob * m_fetchBugJob;
KJob * m_searchJob;
+ QString m_bugTrackerUrl;
};
#endif
--- trunk/KDE/kdebase/runtime/drkonqi/drkonqiassistantpages_bugzilla.cpp \
#1008176:1008177 @@ -683,7 +683,7 @@
BugzillaInformationPage::BugzillaInformationPage(DrKonqiBugReport * parent)
: DrKonqiAssistantPage(parent),
- m_textsOK(false)
+ m_textsOK(false), m_distributionComboSetup(false), \
m_distroComboVisible(false) {
ui.setupUi(this);
@@ -695,8 +695,33 @@
void BugzillaInformationPage::aboutToShow()
{
- if (ui.m_titleEdit->text().isEmpty()) {
- ui.m_titleEdit->setText(reportInfo()->title());
+ //FIXME i18n
+ if (!m_distributionComboSetup) {
+ if (reportInfo()->bugzillaPlatform()==QLatin1String("unspecified")) { \
//Autodetecting distro failed + m_distroComboVisible = true;
+ ui.m_distributionChooserCombo->addItem("unspecified","unspecified");
+ ui.m_distributionChooserCombo->addItem("Debian stable","Debian stable");
+ ui.m_distributionChooserCombo->addItem("Debian testing","Debian \
testing"); + ui.m_distributionChooserCombo->addItem("Debian \
unstable","Debian unstable"); + \
ui.m_distributionChooserCombo->addItem("Exherbo","Exherbo Packages"); + \
ui.m_distributionChooserCombo->addItem("Gentoo","Gentoo Packages"); + \
ui.m_distributionChooserCombo->addItem("Mandriva","Mandriva RPMs"); + \
ui.m_distributionChooserCombo->addItem("Slackware","Slackware Packages"); + \
ui.m_distributionChooserCombo->addItem("SuSE/OpenSUSE","SuSE RPMs"); + \
ui.m_distributionChooserCombo->addItem("RedHat","RedHat RPMs"); + \
ui.m_distributionChooserCombo->addItem("Fedora","Fedora RPMs"); + \
ui.m_distributionChooserCombo->addItem("Kubuntu/Ubuntu (and derivates)","Ubuntu \
Packages"); + ui.m_distributionChooserCombo->addItem("Pardus","Pardus \
Packages"); + \
ui.m_distributionChooserCombo->addItem("Archlinux","Archlinux Packages"); + \
ui.m_distributionChooserCombo->addItem("FreeBSD (Ports)","FreeBSD Ports"); + \
ui.m_distributionChooserCombo->addItem("NetBSD (pkgsrc)","NetBSD pkgsrc"); + \
ui.m_distributionChooserCombo->addItem("OpenBSD","OpenBSD Packages"); + \
ui.m_distributionChooserCombo->addItem("Mac OS X","MacPorts Packages"); + \
ui.m_distributionChooserCombo->addItem("Solaris","Solaris Packages"); + } else \
{ + ui.m_distributionChooserCombo->setVisible(false);
+ }
+ m_distributionComboSetup = true;
}
bool showDetails = reportInfo()->userCanDetail();
@@ -775,6 +800,11 @@
//Save fields data
reportInfo()->setTitle(ui.m_titleEdit->text());
reportInfo()->setDetailText(ui.m_detailsEdit->toPlainText());
+ if (m_distroComboVisible) {
+ reportInfo()->setBugzillaPlatform(
+ ui.m_distributionChooserCombo->itemData(ui.m_distributionChooserCombo->currentIndex())
+ .toString());
+ }
}
//END BugzillaInformationPage
--- trunk/KDE/kdebase/runtime/drkonqi/drkonqiassistantpages_bugzilla.h \
#1008176:1008177 @@ -167,6 +167,8 @@
Ui::AssistantPageBugzillaInformation ui;
bool m_textsOK;
+ bool m_distributionComboSetup;
+ bool m_distroComboVisible;
};
/** Send crash report page **/
--- trunk/KDE/kdebase/runtime/drkonqi/reportinfo.cpp #1008176:1008177
@@ -56,6 +56,8 @@
*process << lsb_release << "-sd";
connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), \
SLOT(lsbReleaseFinished())); process->start();
+ } else {
+ m_bugzillaPlatform = QLatin1String("unspecified");
}
}
@@ -65,6 +67,45 @@
Q_ASSERT(process);
m_lsbRelease = QString::fromLocal8Bit(process->readAllStandardOutput().trimmed());
process->deleteLater();
+
+ //Guess distro string
+ if ( m_lsbRelease.contains("suse",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("SuSE RPMs");
+ } else if ( m_lsbRelease.contains("ubuntu",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("Ubuntu Packages");
+ } else if ( m_lsbRelease.contains("ubuntu",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("Ubuntu Packages");
+ } else if ( m_lsbRelease.contains("fedora",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("Fedora RPMs");
+ } else if ( m_lsbRelease.contains("redhat",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("RedHat RPMs");
+ } else if ( m_lsbRelease.contains("mandriva",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("Mandriva RPMs");
+ } else if ( m_lsbRelease.contains("slack",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("Slackware Packages");
+ } else if ( m_lsbRelease.contains("pardus",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("Pardus Packages");
+ } else if ( m_lsbRelease.contains("freebsd",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("FreeBSD Ports");
+ } else if ( m_lsbRelease.contains("netbsd",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("NetBSD pkgsrc");
+ } else if ( m_lsbRelease.contains("openbsd",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("OpenBSD Packages");
+ } else if ( m_lsbRelease.contains("solaris",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("Solaris Packages");
+ } else if ( m_lsbRelease.contains("arch",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("Archlinux Packages");
+ } else if ( m_lsbRelease.contains("debian",Qt::CaseInsensitive) ) {
+ if ( m_lsbRelease.contains("stable",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("Debian stable");
+ } else if ( m_lsbRelease.contains("testing",Qt::CaseInsensitive) ) {
+ m_bugzillaPlatform = QLatin1String("Debian testing");
+ } else {
+ m_bugzillaPlatform = QLatin1String("Debian unstable");
+ }
+ } else {
+ m_bugzillaPlatform = QLatin1String("unspecified");
+ }
}
bool ReportInfo::userCanDetail() const
@@ -160,9 +201,12 @@
report.append(QString("Qt Version: %1\n").arg(qVersion()));
report.append(QString("Operating System: %1\n").arg(osString()));
- //LSB output
+ //LSB output or manually selected distro
if ( !m_lsbRelease.isEmpty() ) {
report.append(QString("Distribution: %1\n").arg(m_lsbRelease));
+ } else if ( !m_bugzillaPlatform.isEmpty() &&
+ m_bugzillaPlatform != QLatin1String("unspecified")) \
{ + report.append(QString("Distribution (Platform): \
%1\n").arg(m_bugzillaPlatform)); }
report.append(QLatin1String("\n"));
@@ -243,6 +287,7 @@
report.setComponent(m_productMapping->bugzillaComponent());
report.setVersion(krashConfig->productVersion());
report.setOperatingSystem(bugzillaOs());
+ report.setPlatform(m_bugzillaPlatform);
report.setPriority(QLatin1String("NOR"));
report.setBugSeverity(QLatin1String("crash"));
report.setShortDescription(m_reportTitle);
@@ -304,4 +349,14 @@
return needToReport;
}
+QString ReportInfo::bugzillaPlatform() const
+{
+ return m_bugzillaPlatform;
+}
+
+void ReportInfo::setBugzillaPlatform(const QString & platform)
+{
+ m_bugzillaPlatform = platform;
+}
+
#include "reportinfo.moc"
--- trunk/KDE/kdebase/runtime/drkonqi/reportinfo.h #1008176:1008177
@@ -60,6 +60,9 @@
bool isWorthReporting() const;
+ QString bugzillaPlatform() const;
+ void setBugzillaPlatform(const QString &);
+
private Q_SLOTS:
void sendUsingDefaultProduct() const;
void lsbReleaseFinished();
@@ -77,6 +80,7 @@
QString m_reportDetailText;
QString m_possibleDuplicate;
+ QString m_bugzillaPlatform;
QString m_lsbRelease;
ProductMapping * m_productMapping;
--- trunk/KDE/kdebase/runtime/drkonqi/ui/assistantpage_bugzilla_information.ui \
#1008176:1008177 @@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>474</width>
- <height>433</height>
+ <width>513</width>
+ <height>345</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
@@ -46,6 +46,29 @@
</widget>
</item>
<item>
+ <widget class="QGroupBox" name="m_distributionGroupBox">
+ <property name="title">
+ <string comment="@title:groupbox">Distribution method:</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="KComboBox" name="m_distributionChooserCombo"/>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="m_compiledSourcesCheckBox">
+ <property name="text">
+ <string comment="@option:checkbox">Compiled KDE by sources</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -77,6 +100,11 @@
<header>klineedit.h</header>
</customwidget>
<customwidget>
+ <class>KComboBox</class>
+ <extends>QComboBox</extends>
+ <header>kcombobox.h</header>
+ </customwidget>
+ <customwidget>
<class>KTextEdit</class>
<extends>QTextEdit</extends>
<header>ktextedit.h</header>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic