File: utils.h

package info (click to toggle)
deepin-log-viewer 6.5.8%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 14,752 kB
  • sloc: cpp: 61,723; ansic: 1,732; xml: 81; sh: 59; makefile: 12
file content (116 lines) | stat: -rwxr-xr-x 4,128 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

#ifndef UTILS_H
#define UTILS_H
#define SINGLE_READ_CNT 500
#define SINGLE_READ_CNT_COREDUMP 600

#include "dtkcore_config.h"
#ifdef DTKCORE_CLASS_DConfig
#include <DConfig>
#endif

#include <QObject>
#include <QHash>

struct LOG_REPEAT_COREDUMP_INFO {
    QString exePath = "";
    int times = 1; // 出现次数
    float repetitionRate = 0.0;
};

/**
 * @brief 公用工具静态函数类
 */
class Utils : public QObject
{
    Q_OBJECT

public:
    explicit Utils(QObject *parent = nullptr);
    ~Utils();
    /**
     * @brief The CommandErrorType enum
     * QProccess命令返回日志的过程中如果发生报错的类型
     */
    enum CommandErrorType {
        NoError = 0x0000, //无错误,预备,一般不用
        PermissionError = 0x0001, //权限问题
        RetryError = 0x0002 //返回请重试的情况
    };
    static QHash<QString, QPixmap> m_imgCacheHash;
    static QHash<QString, QString> m_fontNameCache;
    static QMap<QString, QStringList> m_mapAuditType2EventType;

    static QString getQssContent(const QString &filePath);
    static QString getConfigPath();
    static QString getAppDataPath();
    static bool isFontMimeType(const QString &filePath);
    static bool isTextFileType(const QString &filePath);
    static QString suffixList();
    static QPixmap renderSVG(const QString &filePath, const QSize &size);
    static QString loadFontFamilyFromFiles(const QString &fontFileName);
    static QString getReplaceColorStr(const char *d);
    static QByteArray replaceEmptyByteArray(const QByteArray &iReplaceStr);
    static CommandErrorType isErroCommand(const QString &str);
    static bool checkAndDeleteDir(const QString &iFilePath);
    static bool deleteDir(const QString &iFilePath);
    static void replaceColorfulFont(QString *iStr);
    static bool isWayland();
    static bool sleep(unsigned int msec);
    //创建多级文件夹
    static QString mkMutiDir(const QString &path);
    //授权框
    static bool checkAuthorization(const QString &actionId, qint64 applicationPid);
    //系统版本号
    static QString osVersion();
    static QString auditType(const QString& eventType);
    static double convertToMB(quint64 cap, const int size = 1024);
    static QString getUserNamebyUID(uint uid);  //根据uid获取用户名
    static QString getUserHomePathByUID(uint uid); //根据uid获取用户家目录
    static QString getCurrentUserName();
    static bool isValidUserName(const QString &userName);
    static bool isCoredumpctlExist();  // is coredumpctl installed
    static QString getHomePath(const QString &userName = "");
    static QString appName(const QString &filePath);
    static void resetToNormalAuth(const QString &path);
    // 统计所有崩溃记录重复次数
    static QList<LOG_REPEAT_COREDUMP_INFO> countRepeatCoredumps(qint64 timeBegin = -1, qint64 timeEnd = -1);
    // 获取高频重复崩溃记录exe路径名单
    static QStringList getRepeatCoredumpExePaths();
    // 更新高频重复崩溃记录exe路径到文件
    static void updateRepeatCoredumpExePaths(const QList<LOG_REPEAT_COREDUMP_INFO> &infos = QList<LOG_REPEAT_COREDUMP_INFO>());
    // 执行cmd命令
    static QByteArray executeCmd(const QString& cmd, const QStringList& args = QStringList(), const QString& workPath = QString());
    /**
     * @brief specialComType 是否是特殊机型,like huawei
     * 取值有3种(-1,0,>0),默认为-1(未知),0(不是特殊机型),>0(特殊机型)
     */
    static int specialComType;
    static QString homePath;
    static bool runInCmd;
};

#ifdef DTKCORE_CLASS_DConfigFile
class LoggerRules : public QObject {
  Q_OBJECT
public:
  explicit LoggerRules(QObject *parent = nullptr);
  ~LoggerRules();

  void initLoggerRules();
  inline QString rules() const { return m_rules; }
  void setRules(const QString &rules);

private:
  void appendRules(const QString &rules);

private:
  QString m_rules;
  Dtk::Core::DConfig *m_config;
};
#endif

#endif