Added the Ryzom Core Error Reporter's skeleton.

--HG--
branch : feature-crashreport
This commit is contained in:
dfighter1985 2015-02-19 00:20:18 +01:00
parent 7302023777
commit ee0b630f95
8 changed files with 332 additions and 0 deletions

View file

@ -84,3 +84,6 @@ IF(WITH_NEL_TOOLS OR WITH_NEL_MAXPLUGIN)
ADD_SUBDIRECTORY(tools)
ENDIF(WITH_NEL_TOOLS OR WITH_NEL_MAXPLUGIN)
IF(WITH_QT)
ADD_SUBDIRECTORY(rcerror)
ENDIF(WITH_QT)

View file

@ -0,0 +1,37 @@
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SRC_DIR} ${QT_INCLUDES})
FILE(GLOB RCERROR_SRC *.cpp)
FILE(GLOB RCERROR_HDR *h)
SET(RCERROR_MOC_HDR
rcerror_socket.h
rcerror_widget.h
)
SET(RCERROR_UI
rcerror_widget.ui
)
SET(QT_USE_QTGUI TRUE)
SET(QT_USE_QTNETWORK TRUE)
SET(QT_USE_QTMAIN TRUE)
SET(QT_USE_QTOPENGL FALSE)
SET(QT_USE_QTXML FALSE)
INCLUDE(${QT_USE_FILE})
ADD_DEFINITIONS(${QT_DEFINITIONS})
QT4_WRAP_CPP(RCERROR_MOC_SRC ${RCERROR_MOC_HDR})
QT4_WRAP_UI(RCERROR_UI_HDR ${RCERROR_UI})
SOURCE_GROUP(QtResources FILES ${RCERROR_UI})
SOURCE_GROUP(QtGeneratedUiHdr FILES ${RCERROR_UI_HDR})
SOURCE_GROUP(QtGeneratedMocQrcSrc FILES ${RCERROR_MOC_SRC})
SOURCE_GROUP("source files" FILES ${RCERROR_SRC})
SOURCE_GROUP("header files" FILES ${RCERROR_HDR})
ADD_EXECUTABLE(rcerror WIN32 MACOSX_BUNDLE ${RCERROR_SRC} ${RCERROR_MOC_HDR} ${RCERROR_MOC_SRC} ${RCERROR_UI_HDR})
TARGET_LINK_LIBRARIES(rcerror ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY})
NL_DEFAULT_PROPS(rcerror "Ryzom Core Error Reporter")
NL_ADD_RUNTIME_FLAGS(rcerror)

View file

@ -0,0 +1,50 @@
// Ryzom Core MMORPG framework - Error Reporter
//
// Copyright (C) 2015 Laszlo Kis-Adam
// Copyright (C) 2010 Ryzom Core <http://ryzomcore.org/>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "rcerror_widget.h"
#include <QApplication>
#include <QMessageBox>
int main( int argc, char **argv )
{
QApplication app( argc, argv );
#if 0
if( argc < 2 )
{
QMessageBox::information( NULL,
QObject::tr( "Error" ),
QObject::tr( "Need to specify a path to the error report." ) );
return 1;
}
#endif
RCErrorWidget w;
#if 0
w.setFileName( argv[ 1 ] );
#else
w.setFileName( "log.log" );
#endif
w.show();
return app.exec();
}

View file

@ -0,0 +1,20 @@
// Ryzom Core MMORPG framework - Error Reporter
//
// Copyright (C) 2015 Laszlo Kis-Adam
// Copyright (C) 2010 Ryzom Core <http://ryzomcore.org/>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "rcerror_socket.h"

View file

@ -0,0 +1,23 @@
// Ryzom Core MMORPG framework - Error Reporter
//
// Copyright (C) 2015 Laszlo Kis-Adam
// Copyright (C) 2010 Ryzom Core <http://ryzomcore.org/>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef RCERROR_SOCKET
#define RCERROR_SOCKET
#endif

View file

@ -0,0 +1,70 @@
// Ryzom Core MMORPG framework - Error Reporter
//
// Copyright (C) 2015 Laszlo Kis-Adam
// Copyright (C) 2010 Ryzom Core <http://ryzomcore.org/>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "rcerror_widget.h"
#include <QTimer>
#include <QTextStream>
#include <QFile>
RCErrorWidget::RCErrorWidget( QWidget *parent ) :
QWidget( parent )
{
m_ui.setupUi( this );
QTimer::singleShot( 1, this, SLOT( onLoad() ) );
connect( m_ui.sendButton, SIGNAL( clicked( bool ) ), this, SLOT( onSendClicked() ) );
connect( m_ui.canceButton, SIGNAL( clicked( bool ) ), this, SLOT( onCancelClicked() ) );
connect( m_ui.emailCB, SIGNAL( stateChanged( int ) ), this, SLOT( onCBClicked() ) );
}
RCErrorWidget::~RCErrorWidget()
{
}
void RCErrorWidget::onLoad()
{
QFile f( m_fileName );
bool b = f.open( QFile::ReadOnly | QFile::Text );
if( !b )
{
return;
}
QTextStream ss( &f );
m_ui.reportEdit->setPlainText( ss.readAll() );
f.close();
}
void RCErrorWidget::onSendClicked()
{
close();
}
void RCErrorWidget::onCancelClicked()
{
close();
}
void RCErrorWidget::onCBClicked()
{
m_ui.emailEdit->setEnabled( m_ui.emailCB->isChecked() );
}

View file

@ -0,0 +1,47 @@
// Ryzom Core MMORPG framework - Error Reporter
//
// Copyright (C) 2015 Laszlo Kis-Adam
// Copyright (C) 2010 Ryzom Core <http://ryzomcore.org/>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef RCERROR_WIDGET
#define RCERROR_SOCKET
#include "ui_rcerror_widget.h"
class RCErrorWidget : public QWidget
{
Q_OBJECT
public:
RCErrorWidget( QWidget *parent = NULL );
~RCErrorWidget();
void setFileName( const char *fn ){ m_fileName = fn; }
private Q_SLOTS:
void onLoad();
void onSendClicked();
void onCancelClicked();
void onCBClicked();
private:
Ui::RCErrorWidget m_ui;
QString m_fileName;
};
#endif

View file

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>RCErrorWidget</class>
<widget class="QWidget" name="RCErrorWidget">
<property name="windowModality">
<enum>Qt::ApplicationModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>407</height>
</rect>
</property>
<property name="windowTitle">
<string>Ryzom Core error report</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label">
<property name="text">
<string>What were you doing when the crash occured?</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QPlainTextEdit" name="descriptionEdit"/>
</item>
<item row="2" column="0" colspan="2">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Contents of the report ( automatically generated )</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPlainTextEdit" name="reportEdit">
<property name="enabled">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QCheckBox" name="emailCB">
<property name="text">
<string>Email me if you have further questions, or updates on this issue</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QLineEdit" name="emailEdit">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Enter your email address here</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QPushButton" name="sendButton">
<property name="text">
<string>Send</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QPushButton" name="canceButton">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>