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