File indexing completed on 2025-02-16 04:55:36
0001 /* -*- mode: c++; c-basic-offset:4 -*- 0002 checksumdefinition.h 0003 0004 This file is part of libkleopatra, the KDE keymanagement library 0005 SPDX-FileCopyrightText: 2010 Klarälvdalens Datakonsult AB 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #pragma once 0011 0012 #include "kleo_export.h" 0013 0014 #include <QString> 0015 #include <QStringList> 0016 0017 #include <memory> 0018 #include <vector> 0019 0020 class QProcess; 0021 0022 namespace Kleo 0023 { 0024 0025 class KLEO_EXPORT ChecksumDefinition 0026 { 0027 protected: 0028 ChecksumDefinition(const QString &id, const QString &label, const QString &outputFileName, const QStringList &extensions); 0029 0030 public: 0031 virtual ~ChecksumDefinition(); 0032 0033 enum ArgumentPassingMethod { 0034 CommandLine, 0035 NewlineSeparatedInputFile, 0036 NullSeparatedInputFile, 0037 0038 NumArgumentPassingMethods 0039 }; 0040 0041 QString id() const 0042 { 0043 return m_id; 0044 } 0045 QString label() const 0046 { 0047 return m_label; 0048 } 0049 0050 const QStringList &patterns() const 0051 { 0052 return m_patterns; 0053 } 0054 QString outputFileName() const 0055 { 0056 return m_outputFileName; 0057 } 0058 0059 QString createCommand() const; 0060 ArgumentPassingMethod createCommandArgumentPassingMethod() const 0061 { 0062 return m_createMethod; 0063 } 0064 0065 QString verifyCommand() const; 0066 ArgumentPassingMethod verifyCommandArgumentPassingMethod() const 0067 { 0068 return m_verifyMethod; 0069 } 0070 0071 bool startCreateCommand(QProcess *process, const QStringList &files) const; 0072 bool startVerifyCommand(QProcess *process, const QStringList &files) const; 0073 0074 static QString installPath(); 0075 static void setInstallPath(const QString &ip); 0076 0077 static std::vector<std::shared_ptr<ChecksumDefinition>> getChecksumDefinitions(); 0078 static std::vector<std::shared_ptr<ChecksumDefinition>> getChecksumDefinitions(QStringList &errors); 0079 0080 static std::shared_ptr<ChecksumDefinition> getDefaultChecksumDefinition(const std::vector<std::shared_ptr<ChecksumDefinition>> &available); 0081 static void setDefaultChecksumDefinition(const std::shared_ptr<ChecksumDefinition> &checksumDefinition); 0082 0083 protected: 0084 void setCreateCommandArgumentPassingMethod(ArgumentPassingMethod method) 0085 { 0086 m_createMethod = method; 0087 } 0088 void setVerifyCommandArgumentPassingMethod(ArgumentPassingMethod method) 0089 { 0090 m_verifyMethod = method; 0091 } 0092 0093 private: 0094 virtual QString doGetCreateCommand() const = 0; 0095 virtual QString doGetVerifyCommand() const = 0; 0096 virtual QStringList doGetCreateArguments(const QStringList &files) const = 0; 0097 virtual QStringList doGetVerifyArguments(const QStringList &files) const = 0; 0098 0099 private: 0100 const QString m_id; 0101 const QString m_label; 0102 const QString m_outputFileName; 0103 const QStringList m_patterns; 0104 ArgumentPassingMethod m_createMethod = CommandLine; 0105 ArgumentPassingMethod m_verifyMethod = CommandLine; 0106 }; 0107 0108 }