Guitar
ApplicationGlobal.h
Go to the documentation of this file.
1 
2 #ifndef APPLICATIONGLOBAL_H
3 #define APPLICATIONGLOBAL_H
4 
5 #include "AbstractGitSession.h"
6 #include "ApplicationSettings.h"
7 #include "AvatarLoader.h"
8 #include "Git.h"
9 #include <QColor>
10 #include <QString>
11 #include <inet/webclient.h>
12 #include <memory>
13 #include <subprojects/FileTypePlugin/src/FileType.h>
14 #include <subprojects/IncrementalSearchPlugin/src/IncrementalSearch.h>
15 
16 #ifdef USE_LIBCURL
17 #include <inet/curlclient.h>
18 #endif
19 
20 class IncrementalSearch;
21 class OnePassword;
22 
23 #ifdef APP_GUITAR
24 #include "Theme.h"
25 #endif
26 
27 class MainWindow;
28 class QListWidgetItem;
29 struct TraceEventItem;
30 
32  QString email;
33  QString name;
34  AccountProfile() = default;
35  AccountProfile(QString const &email, QString const &name)
36  : email(email)
37  , name(name)
38  {
39  }
40  QString text() const;
41  explicit operator bool () const;
42 };
43 
45 private:
46  struct Private;
48 public:
51 
52  int copyright_year();
53 
54  char const *product_version();
55 
56  char const *source_revision();
57 
59  MainWindow *mainwindow = nullptr;
60  bool start_with_shift_key = false;
61  QString language_id;
62  QString theme_id;
65 #ifdef APP_GUITAR
66  ThemePtr theme;
67 #endif
68 
69 #ifdef UNSAFE_ENABLED
70  bool unsafe_enabled = false;
71 #endif
72 
73  struct Graphics {
75  QIcon folder_icon;
80  QPixmap small_digits;
81  };
82  std::unique_ptr<Graphics> graphics;
83 
84  GitContext gcx();
85 
87 
88 #ifdef USE_LIBCURL
89  CurlContext curlcx;
90 #else
92 #endif
94 
95  std::vector<AccountProfile> account_profiles;
96 
97  void selftest();
98 
99  void open_trace_logger();
100  void close_trace_logger();
101  void restart_trace_logger();
102  void put_trace_event(TraceEventItem const &event);
103 
104  void writeLog(const std::string_view &str);
105  void writeLog(const QString &str);
106 
107  constexpr static std::string_view prefix_chg = "(chg) ";
108  constexpr static std::string_view prefix_cpy = "(cpy) ";
109  constexpr static std::string_view prefix_ren = "(ren) ";
110  constexpr static std::string_view prefix_add = "(add) ";
111  constexpr static std::string_view prefix_del = "(del) ";
112  constexpr static std::string_view prefix_unmerged = "(unmerged) ";
113  // constexpr static std::string_view prefix_empty = "() ";
114 
115  std::shared_ptr<AbstractInetClient> inet_client();
116 
117  std::shared_ptr<IncrementalSearch> incremental_search;
118  IncrementalSearchFilter makeIncrementalSearchFilter(const std::string &filtertext);
120 
121  std::shared_ptr<FileType> file_type_detector;
122  std::string mimetype_by_data(const char *data, size_t size);
123  std::string mimetype_by_data(const QByteArray &ba);
124  std::string mimetype_by_data(std::vector<char> const &ba);
125  std::string mimetype_by_file(const char *path);
126  std::string mimetype_by_file(std::string const &path);
127 
128  std::shared_ptr<OnePassword> onepassword;
129 
131 
132  static bool isMainThread();
133 
134  bool isUnsafeEnabled() const
135  {
136 #ifdef UNSAFE_ENABLED
137  return unsafe_enabled;
138 #else
139  return false;
140 #endif
141  }
142 
143  bool isAiEnabled() const
144  {
146  }
147 };
148 
151 
152 QListWidgetItem *new_QListWidgetItem(QString const &text = {});
153 
154 #define ASSERT_MAIN_THREAD() Q_ASSERT(ApplicationGlobal::isMainThread())
155 
156 extern ApplicationGlobal *global;
157 
158 #endif // APPLICATIONGLOBAL_H
QListWidgetItem * new_QListWidgetItem(QString const &text={})
Definition: ApplicationGlobal.cpp:206
ApplicationGlobal * global
Definition: main.cpp:27
void GlobalRestoreOverrideCursor()
Definition: ApplicationGlobal.cpp:218
void GlobalSetOverrideWaitCursor()
Definition: ApplicationGlobal.cpp:213
std::shared_ptr< AbstractTheme > ThemePtr
Definition: Theme.h:34
Definition: ApplicationSettings.h:21
Definition: ApplicationGlobal.h:44
QString language_id
Definition: ApplicationGlobal.h:61
constexpr static std::string_view prefix_del
Definition: ApplicationGlobal.h:111
std::shared_ptr< OnePassword > onepassword
Definition: ApplicationGlobal.h:128
std::shared_ptr< FileType > file_type_detector
Definition: ApplicationGlobal.h:121
std::unique_ptr< Graphics > graphics
Definition: ApplicationGlobal.h:82
Private * m
Definition: ApplicationGlobal.h:46
AbstractGitSession::Option gitopt
Definition: ApplicationGlobal.h:58
MainWindow * mainwindow
Definition: ApplicationGlobal.h:59
~ApplicationGlobal()
Definition: ApplicationGlobal.cpp:34
constexpr static std::string_view prefix_add
Definition: ApplicationGlobal.h:110
GitContext gcx()
Definition: ApplicationGlobal.cpp:84
constexpr static std::string_view prefix_cpy
Definition: ApplicationGlobal.h:108
AvatarLoader avatar_loader
Definition: ApplicationGlobal.h:93
void put_trace_event(TraceEventItem const &event)
Definition: ApplicationGlobal.cpp:79
void restart_trace_logger()
Definition: ApplicationGlobal.cpp:73
constexpr static std::string_view prefix_ren
Definition: ApplicationGlobal.h:109
IncrementalSearchFilter makeIncrementalSearchFilter(const std::string &filtertext)
Definition: ApplicationGlobal.cpp:192
std::vector< AccountProfile > account_profiles
Definition: ApplicationGlobal.h:95
void selftest()
Definition: ApplicationGlobal.cpp:93
char const * source_revision()
Definition: ApplicationGlobal.cpp:50
constexpr static std::string_view prefix_chg
Definition: ApplicationGlobal.h:107
void writeLog(const std::string_view &str)
Definition: ApplicationGlobal.cpp:169
char const * product_version()
Definition: ApplicationGlobal.cpp:45
QColor panel_bg_color
Definition: ApplicationGlobal.h:64
QString theme_id
Definition: ApplicationGlobal.h:62
void open_trace_logger()
Definition: ApplicationGlobal.cpp:55
bool start_with_shift_key
Definition: ApplicationGlobal.h:60
std::string mimetype_by_file(const char *path)
Definition: ApplicationGlobal.cpp:267
std::shared_ptr< IncrementalSearch > incremental_search
Definition: ApplicationGlobal.h:117
std::shared_ptr< AbstractInetClient > inet_client()
Definition: ApplicationGlobal.cpp:181
WebContext webcx
Definition: ApplicationGlobal.h:91
QString profiles_xml_path
Definition: ApplicationGlobal.h:63
bool isUnsafeEnabled() const
Definition: ApplicationGlobal.h:134
ApplicationSettings appsettings
Definition: ApplicationGlobal.h:86
constexpr static std::string_view prefix_unmerged
Definition: ApplicationGlobal.h:112
void close_trace_logger()
Definition: ApplicationGlobal.cpp:68
ApplicationGlobal()
Definition: ApplicationGlobal.cpp:29
QString incremental_search_text
Definition: ApplicationGlobal.h:119
static bool isMainThread()
Definition: ApplicationGlobal.cpp:201
int copyright_year()
Definition: ApplicationGlobal.cpp:40
std::string mimetype_by_data(const char *data, size_t size)
Definition: ApplicationGlobal.cpp:252
GenerativeAI::Credential get_ai_credential(const GenerativeAI::Model &model)
Definition: ApplicationGlobal.cpp:223
bool isAiEnabled() const
Definition: ApplicationGlobal.h:143
Definition: ApplicationSettings.h:53
bool generate_commit_message_with_ai
Definition: ApplicationSettings.h:69
Definition: AvatarLoader.h:20
Definition: curlclient.h:8
Definition: Git.h:16
Definition: MainWindow.h:49
@ HTTP_1_0
Definition: webclient.h:51
Definition: webclient.h:136
Definition: AbstractGitSession.h:19
Definition: ApplicationGlobal.h:31
AccountProfile(QString const &email, QString const &name)
Definition: ApplicationGlobal.h:35
QString email
Definition: ApplicationGlobal.h:32
QString name
Definition: ApplicationGlobal.h:33
QString text() const
Definition: ApplicationGlobal.cpp:278
AccountProfile()=default
Definition: ApplicationGlobal.h:73
QIcon folder_icon
Definition: ApplicationGlobal.h:75
QIcon repository_icon
Definition: ApplicationGlobal.h:74
QIcon signature_dubious_icon
Definition: ApplicationGlobal.h:77
QIcon signature_bad_icon
Definition: ApplicationGlobal.h:78
QPixmap small_digits
Definition: ApplicationGlobal.h:80
QIcon signature_good_icon
Definition: ApplicationGlobal.h:76
QPixmap transparent_pixmap
Definition: ApplicationGlobal.h:79
Definition: ApplicationGlobal.cpp:25
Definition: GenerativeAI.h:81
Definition: GenerativeAI.h:95
Definition: TraceEventItem.h:7