[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