diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2016-06-03 13:26:46 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2016-06-04 08:42:18 +0000 |
commit | 660b91b07788077cfee9ba309d45db6819c00781 (patch) | |
tree | 14c2ac49b139ac500b0d74d9c28cbbff09ba2ecd | |
parent | d2796282721dd2ed4d2c67e4e8982fb32263b55d (diff) |
report the crash id back to the user
Change-Id: I5cc1e698294a5674d691529af8cc14e4cd87a711
Reviewed-on: https://gerrit.libreoffice.org/25865
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | desktop/source/minidump/minidump.cxx | 7 | ||||
-rw-r--r-- | desktop/source/minidump/minidump_upload.cxx | 4 | ||||
-rw-r--r-- | include/desktop/minidump.hxx | 2 | ||||
-rw-r--r-- | svx/source/dialog/crashreportdlg.cxx | 29 | ||||
-rw-r--r-- | svx/source/dialog/crashreportdlg.hxx | 5 | ||||
-rw-r--r-- | svx/uiconfig/ui/crashreportdlg.ui | 35 |
6 files changed, 69 insertions, 13 deletions
diff --git a/desktop/source/minidump/minidump.cxx b/desktop/source/minidump/minidump.cxx index c0d68c298fda..0075ca9d2b1f 100644 --- a/desktop/source/minidump/minidump.cxx +++ b/desktop/source/minidump/minidump.cxx @@ -82,7 +82,7 @@ std::string generate_json(const std::map<std::string, std::string>& parameters) return stream.str(); } -bool uploadContent(std::map<std::string, std::string>& parameters) +bool uploadContent(std::map<std::string, std::string>& parameters, std::string& response) { CURL* curl = curl_easy_init(); if (!curl) @@ -175,6 +175,7 @@ bool uploadContent(std::map<std::string, std::string>& parameters) std::cerr << response_body << " " << error_description << std::endl; + response = response_body; if( CURLE_OK != cc ) return false; @@ -182,7 +183,7 @@ bool uploadContent(std::map<std::string, std::string>& parameters) return true; } -bool readConfig(const std::string& iniPath) +bool readConfig(const std::string& iniPath, std::string& response) { std::ifstream file(iniPath); std::map<std::string, std::string> parameters = readStrings(file); @@ -200,7 +201,7 @@ bool readConfig(const std::string& iniPath) return false; } - return uploadContent(parameters); + return uploadContent(parameters, response); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/desktop/source/minidump/minidump_upload.cxx b/desktop/source/minidump/minidump_upload.cxx index 6a581db6a5a6..934f1add7268 100644 --- a/desktop/source/minidump/minidump_upload.cxx +++ b/desktop/source/minidump/minidump_upload.cxx @@ -20,9 +20,11 @@ int main(int argc, char** argv) } std::string iniPath(argv[1]); - if (!readConfig(iniPath)) + std::string response; + if (!readConfig(iniPath, response)) return EXIT_FAILURE; + std::cout << "Response: " << response << std::endl; return EXIT_SUCCESS; } diff --git a/include/desktop/minidump.hxx b/include/desktop/minidump.hxx index 21d52e80ddae..bdd91b26dce9 100644 --- a/include/desktop/minidump.hxx +++ b/include/desktop/minidump.hxx @@ -12,7 +12,7 @@ #include <string> -bool readConfig(const std::string& iniPath); +bool readConfig(const std::string& iniPath, std::string& response); #endif diff --git a/svx/source/dialog/crashreportdlg.cxx b/svx/source/dialog/crashreportdlg.cxx index 511199b4bf5f..00dcedd0f76e 100644 --- a/svx/source/dialog/crashreportdlg.cxx +++ b/svx/source/dialog/crashreportdlg.cxx @@ -23,9 +23,13 @@ CrashReportDialog::CrashReportDialog(vcl::Window* pParent): { get(mpBtnSend, "btn_send"); get(mpBtnCancel, "btn_cancel"); + get(mpBtnClose, "btn_close"); + get(mpEditPreUpload, "ed_pre"); + get(mpEditPostUpload, "ed_post"); mpBtnSend->SetClickHdl(LINK(this, CrashReportDialog, BtnHdl)); mpBtnCancel->SetClickHdl(LINK(this, CrashReportDialog, BtnHdl)); + mpBtnClose->SetClickHdl(LINK(this, CrashReportDialog, BtnHdl)); } CrashReportDialog::~CrashReportDialog() @@ -37,6 +41,9 @@ void CrashReportDialog::dispose() { mpBtnSend.clear(); mpBtnCancel.clear(); + mpBtnClose.clear(); + mpEditPreUpload.clear(); + mpEditPostUpload.clear(); Dialog::dispose(); } @@ -59,17 +66,29 @@ IMPL_LINK_TYPED(CrashReportDialog, BtnHdl, Button*, pBtn, void) { std::string ini_path = CrashReporter::getIniFileName(); - readConfig(ini_path); - // TODO: moggi: return the id for the user to look it up - Close(); + std::string response; + bool bSuccess = readConfig(ini_path, response); + + OUString aCrashID = OUString::createFromAscii(response.c_str()); + + if (bSuccess) + mpEditPostUpload->SetText(mpEditPostUpload->GetText() + " " + aCrashID); + else + mpEditPostUpload->SetText(mpEditPostUpload->GetText() + " Error!"); + + mpBtnClose->Show(); + mpEditPreUpload->Hide(); + mpEditPostUpload->Show(); + mpBtnSend->Hide(); + mpBtnCancel->Hide(); } else if (pBtn == mpBtnCancel.get()) { Close(); } - else + else if (pBtn == mpBtnClose.get()) { - assert(false); + Close(); } } diff --git a/svx/source/dialog/crashreportdlg.hxx b/svx/source/dialog/crashreportdlg.hxx index d1304a1063e4..f090af1211a6 100644 --- a/svx/source/dialog/crashreportdlg.hxx +++ b/svx/source/dialog/crashreportdlg.hxx @@ -12,6 +12,8 @@ #include <vcl/dialog.hxx> #include <vcl/button.hxx> +#include <vcl/fixed.hxx> +#include <vcl/edit.hxx> class CrashReportDialog : public Dialog { @@ -27,6 +29,9 @@ private: VclPtr<Button> mpBtnSend; VclPtr<Button> mpBtnCancel; + VclPtr<Button> mpBtnClose; + VclPtr<FixedText> mpEditPreUpload; + VclPtr<FixedText> mpEditPostUpload; DECL_LINK_TYPED(BtnHdl, Button*, void); }; diff --git a/svx/uiconfig/ui/crashreportdlg.ui b/svx/uiconfig/ui/crashreportdlg.ui index 1a32df49e297..d483d61ad39a 100644 --- a/svx/uiconfig/ui/crashreportdlg.ui +++ b/svx/uiconfig/ui/crashreportdlg.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.19.0 --> +<!-- Generated with glade 3.18.3 --> <interface> <requires lib="gtk+" version="3.12"/> <object class="GtkDialog" id="CrashReportDialog"> @@ -46,15 +46,27 @@ <property name="position">1</property> </packing> </child> + <child> + <object class="GtkButton" id="btn_close"> + <property name="label" translatable="yes">Close</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> </object> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">0</property> + <property name="position">3</property> </packing> </child> <child> - <object class="GtkLabel" id="label1"> + <object class="GtkLabel" id="ed_pre"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">We are sorry but it seems that LibreOffice crashed the last time. @@ -65,10 +77,27 @@ You can help us fix this issue by sending the crash report to the LibreOffice cr <packing> <property name="expand">False</property> <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="ed_post"> + <property name="can_focus">False</property> + <property name="valign">center</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">The crash report was successfully uploaded. +You can soon find the report on crashreport.libreoffice.org. +The report can be found by</property> + <property name="wrap">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> <property name="position">1</property> </packing> </child> </object> </child> </object> + <object class="GtkActionGroup" id="actiongroup1"/> </interface> |