File indexing completed on 2025-02-09 04:28:36

0001 /*
0002  * This file is part of the KTextTemplate library
0003  *
0004  * SPDX-FileCopyrightText: 2020 Matthias Fehring <mf@huessenbergnetz.de>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.0-or-later
0007  */
0008 
0009 #ifndef L10N_FILESIZE_H
0010 #define L10N_FILESIZE_H
0011 
0012 #include "node.h"
0013 
0014 namespace KTextTemplate
0015 {
0016 class Parser;
0017 }
0018 
0019 using namespace KTextTemplate;
0020 
0021 class L10nFileSizeNodeFactory : public AbstractNodeFactory
0022 {
0023     Q_OBJECT
0024 public:
0025     L10nFileSizeNodeFactory();
0026 
0027     Node *getNode(const QString &tagContent, Parser *p) const override;
0028 };
0029 
0030 class L10nFileSizeVarNodeFactory : public AbstractNodeFactory
0031 {
0032     Q_OBJECT
0033 public:
0034     L10nFileSizeVarNodeFactory();
0035 
0036     Node *getNode(const QString &tagContent, Parser *p) const override;
0037 };
0038 
0039 class L10nFileSizeNode : public Node
0040 {
0041     Q_OBJECT
0042 public:
0043     L10nFileSizeNode(const FilterExpression &size,
0044                      const FilterExpression &unitSystem,
0045                      const FilterExpression &precision,
0046                      const FilterExpression &multiplier,
0047                      QObject *parent = nullptr);
0048 
0049     void render(OutputStream *stream, Context *c) const override;
0050 
0051 private:
0052     FilterExpression m_size;
0053     FilterExpression m_unitSystem;
0054     FilterExpression m_precision;
0055     FilterExpression m_multiplier;
0056 };
0057 
0058 class L10nFileSizeVarNode : public Node
0059 {
0060     Q_OBJECT
0061 public:
0062     L10nFileSizeVarNode(const FilterExpression &size,
0063                         const FilterExpression &unitSystem,
0064                         const FilterExpression &precision,
0065                         const FilterExpression &multiplier,
0066                         const QString &resultName,
0067                         QObject *parent = nullptr);
0068 
0069     void render(OutputStream *stream, Context *c) const override;
0070 
0071 private:
0072     FilterExpression m_size;
0073     FilterExpression m_unitSystem;
0074     FilterExpression m_precision;
0075     FilterExpression m_multiplier;
0076     QString m_resultName;
0077 };
0078 
0079 #endif