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 class IncrementalSearch;
17 class OnePassword;
18 
19 #ifdef APP_GUITAR
20 #include "Theme.h"
21 #endif
22 
23 class MainWindow;
24 class QListWidgetItem;
25 struct TraceEventItem;
26 
28  QString email;
29  QString name;
30  AccountProfile() = default;
31  AccountProfile(QString const &email, QString const &name)
32  : email(email)
33  , name(name)
34  {
35  }
36  QString text() const;
37  explicit operator bool () const;
38 };
39 
41 private:
42  struct Private;
44 public:
47 
48  int copyright_year();
49 
50  char const *product_version();
51 
52  char const *source_revision();
53 
55  MainWindow *mainwindow = nullptr;
56  bool start_with_shift_key = false;
57  QString language_id;
58  QString theme_id;
61 #ifdef APP_GUITAR
62  ThemePtr theme;
63 #endif
64 
65 #ifdef UNSAFE_ENABLED
66  bool unsafe_enabled = false;
67 #endif
68 
69  struct Graphics {
71  QIcon folder_icon;
76  QPixmap small_digits;
77  };
78  std::unique_ptr<Graphics> graphics;
79 
80  GitContext gcx();
81 
83 
84 #ifdef USE_LIBCURL
85  CurlContext curlcx;
86 #else
88 #endif
90 
91  std::vector<AccountProfile> account_profiles;
92 
93  void selftest();
94 
95  void open_trace_logger();
96  void close_trace_logger();
97  void restart_trace_logger();
98  void put_trace_event(TraceEventItem const &event);
99 
100  void writeLog(const std::string_view &str);
101  void writeLog(const QString &str);
102 
103  constexpr static std::string_view prefix_chg = "(chg) ";
104  constexpr static std::string_view prefix_cpy = "(cpy) ";
105  constexpr static std::string_view prefix_ren = "(ren) ";
106  constexpr static std::string_view prefix_add = "(add) ";
107  constexpr static std::string_view prefix_del = "(del) ";
108  constexpr static std::string_view prefix_unmerged = "(unmerged) ";
109  // constexpr static std::string_view prefix_empty = "() ";
110 
111  std::shared_ptr<AbstractInetClient> inet_client();
112 
113  std::shared_ptr<IncrementalSearch> incremental_search;
114  IncrementalSearchFilter makeIncrementalSearchFilter(const std::string &filtertext);
116 
117  std::shared_ptr<FileType> file_type_detector;
118  std::string mimetype_by_data(const char *data, size_t size);
119  std::string mimetype_by_data(const QByteArray &ba);
120  std::string mimetype_by_data(std::vector<char> const &ba);
121  std::string mimetype_by_file(const char *path);
122  std::string mimetype_by_file(std::string const &path);
123 
124  std::shared_ptr<OnePassword> onepassword;
125 
127 
128  static bool isMainThread();
129 
130  bool isUnsafeEnabled() const
131  {
132 #ifdef UNSAFE_ENABLED
133  return unsafe_enabled;
134 #else
135  return false;
136 #endif
137  }
138 
139  bool isAiEnabled() const
140  {
142  }
143 };
144 
147 
148 QListWidgetItem *new_QListWidgetItem(QString const &text = {});
149 
150 #define ASSERT_MAIN_THREAD() Q_ASSERT(ApplicationGlobal::isMainThread())
151 
152 extern ApplicationGlobal *global;
153 
154 #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:40
QString language_id
Definition: ApplicationGlobal.h:57
constexpr static std::string_view prefix_del
Definition: ApplicationGlobal.h:107
std::shared_ptr< OnePassword > onepassword
Definition: ApplicationGlobal.h:124
std::shared_ptr< FileType > file_type_detector
Definition: ApplicationGlobal.h:117
std::unique_ptr< Graphics > graphics
Definition: ApplicationGlobal.h:78
Private * m
Definition: ApplicationGlobal.h:42
AbstractGitSession::Option gitopt
Definition: ApplicationGlobal.h:54
MainWindow * mainwindow
Definition: ApplicationGlobal.h:55
~ApplicationGlobal()
Definition: ApplicationGlobal.cpp:34
constexpr static std::string_view prefix_add
Definition: ApplicationGlobal.h:106
GitContext gcx()
Definition: ApplicationGlobal.cpp:84
constexpr static std::string_view prefix_cpy
Definition: ApplicationGlobal.h:104
AvatarLoader avatar_loader
Definition: ApplicationGlobal.h:89
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:105
IncrementalSearchFilter makeIncrementalSearchFilter(const std::string &filtertext)
Definition: ApplicationGlobal.cpp:192
std::vector< AccountProfile > account_profiles
Definition: ApplicationGlobal.h:91
void selftest()
Definition: ApplicationGlobal.cpp:93
char const * source_revision()
Definition: ApplicationGlobal.cpp:50
constexpr static std::string_view prefix_chg
Definition: ApplicationGlobal.h:103
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:60
QString theme_id
Definition: ApplicationGlobal.h:58
void open_trace_logger()
Definition: ApplicationGlobal.cpp:55
bool start_with_shift_key
Definition: ApplicationGlobal.h:56
std::string mimetype_by_file(const char *path)
Definition: ApplicationGlobal.cpp:267
std::shared_ptr< IncrementalSearch > incremental_search
Definition: ApplicationGlobal.h:113
std::shared_ptr< AbstractInetClient > inet_client()
Definition: ApplicationGlobal.cpp:181
WebContext webcx
Definition: ApplicationGlobal.h:87
QString profiles_xml_path
Definition: ApplicationGlobal.h:59
bool isUnsafeEnabled() const
Definition: ApplicationGlobal.h:130
ApplicationSettings appsettings
Definition: ApplicationGlobal.h:82
constexpr static std::string_view prefix_unmerged
Definition: ApplicationGlobal.h:108
void close_trace_logger()
Definition: ApplicationGlobal.cpp:68
ApplicationGlobal()
Definition: ApplicationGlobal.cpp:29
QString incremental_search_text
Definition: ApplicationGlobal.h:115
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:139
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:140
Definition: AbstractGitSession.h:19
Definition: ApplicationGlobal.h:27
AccountProfile(QString const &email, QString const &name)
Definition: ApplicationGlobal.h:31
QString email
Definition: ApplicationGlobal.h:28
QString name
Definition: ApplicationGlobal.h:29
QString text() const
Definition: ApplicationGlobal.cpp:278
AccountProfile()=default
Definition: ApplicationGlobal.h:69
QIcon folder_icon
Definition: ApplicationGlobal.h:71
QIcon repository_icon
Definition: ApplicationGlobal.h:70
QIcon signature_dubious_icon
Definition: ApplicationGlobal.h:73
QIcon signature_bad_icon
Definition: ApplicationGlobal.h:74
QPixmap small_digits
Definition: ApplicationGlobal.h:76
QIcon signature_good_icon
Definition: ApplicationGlobal.h:72
QPixmap transparent_pixmap
Definition: ApplicationGlobal.h:75
Definition: ApplicationGlobal.cpp:25
Definition: GenerativeAI.h:81
Definition: GenerativeAI.h:95
Definition: TraceEventItem.h:7