Use CMsgBoxDisplayer on non-windows platforms as well.

--HG--
branch : feature-crashreport
This commit is contained in:
dfighter1985 2015-02-23 01:36:50 +01:00
parent 2bb5e8e9ba
commit 8bf372056f
3 changed files with 47 additions and 38 deletions

View file

@ -1197,10 +1197,10 @@ void createDebug (const char *logPath, bool logInFile, bool eraseLastLog)
#ifdef NL_OS_WINDOWS #ifdef NL_OS_WINDOWS
if (TrapCrashInDebugger || !IsDebuggerPresent ()) if (TrapCrashInDebugger || !IsDebuggerPresent ())
#endif
{ {
DefaultMsgBoxDisplayer = new CMsgBoxDisplayer ("DEFAULT_MBD"); DefaultMsgBoxDisplayer = new CMsgBoxDisplayer ("DEFAULT_MBD");
} }
#endif
#if LOG_IN_FILE #if LOG_IN_FILE
if (logInFile) if (logInFile)

View file

@ -529,7 +529,7 @@ void CFileDisplayer::doDisplay ( const CLog::TDisplayInfo& args, const char *mes
// in release "<Msg>" // in release "<Msg>"
void CMsgBoxDisplayer::doDisplay ( const CLog::TDisplayInfo& args, const char *message) void CMsgBoxDisplayer::doDisplay ( const CLog::TDisplayInfo& args, const char *message)
{ {
#ifdef NL_OS_WINDOWS //#ifdef NL_OS_WINDOWS
bool needSpace = false; bool needSpace = false;
// stringstream ss; // stringstream ss;
@ -720,7 +720,7 @@ void CMsgBoxDisplayer::doDisplay ( const CLog::TDisplayInfo& args, const char *m
} }
*/ } */ }
#endif //#endif
} }

View file

@ -63,43 +63,16 @@ void setReportEmailFunction (void *emailFunction)
#endif #endif
} }
#ifndef NL_OS_WINDOWS
// GNU/Linux, do nothing
void report ()
{
}
#else
// Windows specific version
static string Body; static string Body;
static string Subject;
static string AttachedFile;
static HWND checkIgnore=NULL;
static HWND debug=NULL;
static HWND ignore=NULL;
static HWND quit=NULL;
static HWND dialog=NULL;
static bool NeedExit;
static TReportResult Result;
static bool IgnoreNextTime;
static bool CanSendMailReport= false;
static bool DebugDefaultBehavior, QuitDefaultBehavior;
static std::string URL = "FILL_IN_CRASH_REPORT_HOSTNAME_HERE"; static std::string URL = "FILL_IN_CRASH_REPORT_HOSTNAME_HERE";
static void doSendReport() static void doSendReport()
{ {
std::string filename; std::string filename;
filename = "report_"; filename = "report_";
filename += NLMISC::toString( time( NULL ) ); filename += NLMISC::toString( int( time( NULL ) ) );
filename += ".txt"; filename += ".txt";
std::string params; std::string params;
@ -123,8 +96,44 @@ static void doSendReport()
NLMISC::launchProgram( "crash_report", params ); NLMISC::launchProgram( "crash_report", params );
#endif #endif
// Added because NLSMIC::launcProgram needs time to launch
nlSleep( 2 * 1000 );
} }
#ifndef NL_OS_WINDOWS
// GNU/Linux, do nothing
TReportResult report (const std::string &title, const std::string &header, const std::string &subject, const std::string &body, bool enableCheckIgnore, uint debugButton, bool ignoreButton, sint quitButton, bool sendReportButton, bool &ignoreNextTime, const string &attachedFile)
{
Body = addSlashR( body );
doSendReport();
return ReportQuit;
}
#else
// Windows specific version
static string Subject;
static string AttachedFile;
static HWND checkIgnore=NULL;
static HWND debug=NULL;
static HWND ignore=NULL;
static HWND quit=NULL;
static HWND dialog=NULL;
static bool NeedExit;
static TReportResult Result;
static bool IgnoreNextTime;
static bool CanSendMailReport= false;
static bool DebugDefaultBehavior, QuitDefaultBehavior;
static void sendEmail() static void sendEmail()
{ {
if (CanSendMailReport && SendMessage(sendReport, BM_GETCHECK, 0, 0) != BST_CHECKED) if (CanSendMailReport && SendMessage(sendReport, BM_GETCHECK, 0, 0) != BST_CHECKED)