File indexing completed on 2024-04-21 05:44:09
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 // lib 0013 #include "global.h" 0014 // KF 0015 #include <KProcess> 0016 // Std 0017 #include <memory> 0018 0019 class QTextDecoder; 0020 class QTextCodec; 0021 0022 namespace KompareDiff2 0023 { 0024 class DiffSettings; 0025 } 0026 0027 class KompareProcess : public KProcess 0028 { 0029 Q_OBJECT 0030 0031 public: 0032 KompareProcess(KompareDiff2::DiffSettings *diffSettings, 0033 KompareDiff2::DiffMode mode, 0034 const QString &source, 0035 const QString &destination, 0036 const QString &directory = QString(), 0037 KompareDiff2::Mode = KompareDiff2::UnknownMode); 0038 ~KompareProcess() override; 0039 0040 public: 0041 void start(); 0042 0043 QString diffOutput() const 0044 { 0045 return m_stdout; 0046 } 0047 QString stdOut() const 0048 { 0049 return m_stdout; 0050 } 0051 QString stdErr() const 0052 { 0053 return m_stderr; 0054 } 0055 0056 void setEncoding(const QString &encoding); 0057 0058 Q_SIGNALS: 0059 void diffHasFinished(bool finishedNormally); 0060 0061 private: 0062 void writeDefaultCommandLine(); 0063 void writeCommandLine(); 0064 0065 private Q_SLOTS: 0066 void slotFinished(int, QProcess::ExitStatus); 0067 0068 private: 0069 KompareDiff2::DiffSettings *m_diffSettings; 0070 const KompareDiff2::DiffMode m_diffMode; 0071 const KompareDiff2::Mode m_mode; 0072 QString m_customString; // Used when a comparison between a file and a string is requested 0073 QString m_stdout; 0074 QString m_stderr; 0075 std::unique_ptr<QTextDecoder> m_textDecoder; 0076 QTextCodec *m_codec = nullptr; 0077 }; 0078 0079 #endif