File indexing completed on 2024-04-28 17:01:41

0001 /*
0002 SPDX-FileCopyrightText: 2001-2003 Otto Bruggeman <otto.bruggeman@home.nl>
0003 SPDX-FileCopyrightText: 2001-2003 John Firebaugh <jfirebaugh@kde.org>
0004 SPDX-FileCopyrightText: 2008 Kevin Kofler <kevin.kofler@chello.at>
0005 
0006 SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #ifndef KOMPAREPROCESS_H
0010 #define KOMPAREPROCESS_H
0011 
0012 #include <KProcess>
0013 
0014 #include "kompare.h"
0015 
0016 class QTextDecoder;
0017 class QTextCodec;
0018 
0019 class DiffSettings;
0020 
0021 class KompareProcess : public KProcess
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     KompareProcess(DiffSettings* diffSettings, enum Kompare::DiffMode mode, const QString& source,
0027                    const QString& destination, const QString& directory = QString(), enum Kompare::Mode = Kompare::UnknownMode);
0028     ~KompareProcess() override;
0029 
0030     void start();
0031 
0032     QString diffOutput() { return m_stdout; }
0033     QString stdOut()     { return m_stdout; }
0034     QString stdErr()     { return m_stderr; }
0035 
0036     void setEncoding(const QString& encoding);
0037 
0038 Q_SIGNALS:
0039     void diffHasFinished(bool finishedNormally);
0040 
0041 protected:
0042     void writeDefaultCommandLine();
0043     void writeCommandLine();
0044 
0045 protected Q_SLOTS:
0046     void slotFinished(int, QProcess::ExitStatus);
0047 
0048 private:
0049     DiffSettings*          m_diffSettings;
0050     const Kompare::DiffMode m_diffMode;
0051     const Kompare::Mode    m_mode;
0052     QString                m_customString; // Used when a comparison between a file and a string is requested
0053     QString                m_stdout;
0054     QString                m_stderr;
0055     QTextDecoder*          m_textDecoder;
0056     QTextCodec*            m_codec;
0057 };
0058 
0059 #endif