kde-workspace/drkonqi/crashedapplication.h
2015-02-22 22:06:06 +00:00

91 lines
2.8 KiB
C++

/*
Copyright (C) 2009 George Kiagiadakis <gkiagia@users.sourceforge.net>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CRASHEDAPPLICATION_H
#define CRASHEDAPPLICATION_H
#include <QtCore/QObject>
#include <QtCore/QDateTime>
#include <QtCore/QFileInfo>
class KCrashBackend;
class CrashedApplication : public QObject
{
Q_OBJECT
public:
virtual ~CrashedApplication();
/** Returns the crashed program's name, possibly translated (ex. "The KDE Crash Handler") */
QString name() const;
/** Returns a QFileInfo with information about the executable that crashed */
QFileInfo executable() const;
/** When an application is run via kdeinit, the executable() method returns kdeinit4, but
* we still need a way to know which is the application that was loaded by kdeinit. So,
* this method returns the base name of the executable that would have been launched if
* the app had not been loaded by kdeinit (ex. "plasma-desktop"). If the application was
* not launched via kdeinit, this method returns executable().baseName();
*/
QString fakeExecutableBaseName() const;
/** Returns the version of the crashed program */
QString version() const;
/** Returns the address where the bug report for this application should go */
QString bugReportAddress() const;
/** Returns the pid of the crashed program */
int pid() const;
/** Returns the signal number that the crashed program received */
int signalNumber() const;
/** Returns the name of the signal (ex. SIGSEGV) */
QString signalName() const;
bool hasBeenRestarted() const;
int thread() const;
const QDateTime& datetime() const;
public slots:
void restart();
signals:
void restarted(bool success);
protected:
friend class KCrashBackend;
CrashedApplication(QObject *parent = 0);
int m_pid;
int m_signalNumber;
QString m_name;
QFileInfo m_executable;
QString m_fakeBaseName;
QString m_version;
QString m_reportAddress;
bool m_restarted;
int m_thread;
QDateTime m_datetime;
};
QString getSuggestedKCrashFilename(const CrashedApplication* app);
#endif // CRASHEDAPPLICATION_H