\hypertarget{KeyList_8h_source}{}\doxysection{Key\+List.\+h} \label{KeyList_8h_source}\index{src/ui/widgets/KeyList.h@{src/ui/widgets/KeyList.h}} \begin{DoxyCode}{0} \DoxyCodeLine{1 } \DoxyCodeLine{29 \textcolor{preprocessor}{\#ifndef \_\_KEYLIST\_H\_\_}} \DoxyCodeLine{30 \textcolor{preprocessor}{\#define \_\_KEYLIST\_H\_\_}} \DoxyCodeLine{31 } \DoxyCodeLine{32 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{33 } \DoxyCodeLine{34 \textcolor{preprocessor}{\#include "{}core/GpgContext.h"{}}} \DoxyCodeLine{35 \textcolor{preprocessor}{\#include "{}ui/import\_export/KeyImportDetailDialog.h"{}}} \DoxyCodeLine{36 } \DoxyCodeLine{37 \textcolor{keyword}{class }Ui\_KeyList;} \DoxyCodeLine{38 } \DoxyCodeLine{39 \textcolor{keyword}{namespace }\mbox{\hyperlink{namespaceGpgFrontend_1_1UI}{GpgFrontend::UI}} \{} \DoxyCodeLine{40 } \DoxyCodeLine{45 \textcolor{keyword}{struct }\mbox{\hyperlink{structGpgFrontend_1_1UI_1_1KeyListRow}{KeyListRow}} \{} \DoxyCodeLine{46 \textcolor{keyword}{using} KeyType = \textcolor{keywordtype}{unsigned} int;} \DoxyCodeLine{47 } \DoxyCodeLine{48 \textcolor{keyword}{static} \textcolor{keyword}{const} KeyType SECRET\_OR\_PUBLIC\_KEY = 0; } \DoxyCodeLine{49 \textcolor{keyword}{static} \textcolor{keyword}{const} KeyType ONLY\_SECRET\_KEY = 1; } \DoxyCodeLine{50 \};} \DoxyCodeLine{51 } \DoxyCodeLine{56 \textcolor{keyword}{struct }\mbox{\hyperlink{structGpgFrontend_1_1UI_1_1KeyListColumn}{KeyListColumn}} \{} \DoxyCodeLine{57 \textcolor{keyword}{using} InfoType = \textcolor{keywordtype}{unsigned} int;} \DoxyCodeLine{58 } \DoxyCodeLine{59 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} InfoType ALL = \string~0; } \DoxyCodeLine{60 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} InfoType TYPE = 1 << 0; } \DoxyCodeLine{61 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} InfoType NAME = 1 << 1; } \DoxyCodeLine{62 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} InfoType EmailAddress = 1 << 2; } \DoxyCodeLine{63 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} InfoType Usage = 1 << 3; } \DoxyCodeLine{64 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} InfoType Validity = 1 << 4; } \DoxyCodeLine{65 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} InfoType FingerPrint = 1 << 5; } \DoxyCodeLine{66 \};} \DoxyCodeLine{67 } \DoxyCodeLine{72 \textcolor{keyword}{struct }\mbox{\hyperlink{structGpgFrontend_1_1UI_1_1KeyMenuAbility}{KeyMenuAbility}} \{} \DoxyCodeLine{73 \textcolor{keyword}{using} AbilityType = \textcolor{keywordtype}{unsigned} int;} \DoxyCodeLine{74 } \DoxyCodeLine{75 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} AbilityType ALL = \string~0; } \DoxyCodeLine{76 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} AbilityType NONE = 0; } \DoxyCodeLine{77 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} AbilityType REFRESH = 1 << 0; } \DoxyCodeLine{78 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} AbilityType SYNC\_PUBLIC\_KEY = 1 << 1; } \DoxyCodeLine{79 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} AbilityType UNCHECK\_ALL = 1 << 3; } \DoxyCodeLine{80 \textcolor{keyword}{static} \textcolor{keyword}{constexpr} AbilityType CHECK\_ALL = 1 << 5; } \DoxyCodeLine{81 \};} \DoxyCodeLine{82 } \DoxyCodeLine{87 \textcolor{keyword}{struct }\mbox{\hyperlink{structGpgFrontend_1_1UI_1_1KeyTable}{KeyTable}} \{} \DoxyCodeLine{88 QTableWidget* key\_list\_; } \DoxyCodeLine{89 KeyListRow::KeyType select\_type\_; } \DoxyCodeLine{90 KeyListColumn::InfoType info\_type\_; } \DoxyCodeLine{91 std::vector buffered\_keys\_; } \DoxyCodeLine{92 std::function filter\_; } \DoxyCodeLine{93 KeyIdArgsListPtr checked\_key\_ids\_; } \DoxyCodeLine{94 } \DoxyCodeLine{103 \mbox{\hyperlink{structGpgFrontend_1_1UI_1_1KeyTable_a88606ba6954d60244faf38de419bfc47}{KeyTable}}(} \DoxyCodeLine{104 QTableWidget* \_key\_list, KeyListRow::KeyType \_select\_type,} \DoxyCodeLine{105 KeyListColumn::InfoType \_info\_type,} \DoxyCodeLine{106 std::function<\textcolor{keywordtype}{bool}(\textcolor{keyword}{const} \mbox{\hyperlink{classGpgFrontend_1_1GpgKey}{GpgKey}}\&)> \_filter = [](\textcolor{keyword}{const} \mbox{\hyperlink{classGpgFrontend_1_1GpgKey}{GpgKey}}\&) -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{107 \textcolor{keywordflow}{return} \textcolor{keyword}{true};} \DoxyCodeLine{108 \})} \DoxyCodeLine{109 : key\_list\_(\_key\_list),} \DoxyCodeLine{110 select\_type\_(\_select\_type),} \DoxyCodeLine{111 info\_type\_(\_info\_type),} \DoxyCodeLine{112 filter\_(std::move(\_filter)) \{\}} \DoxyCodeLine{113 } \DoxyCodeLine{119 \textcolor{keywordtype}{void} \mbox{\hyperlink{structGpgFrontend_1_1UI_1_1KeyTable_aaac381e205c323444098803e0295060f}{Refresh}}(KeyLinkListPtr m\_keys = \textcolor{keyword}{nullptr});} \DoxyCodeLine{120 } \DoxyCodeLine{126 KeyIdArgsListPtr\& \mbox{\hyperlink{structGpgFrontend_1_1UI_1_1KeyTable_a77eba4055ecb7d32fab06f65b80ae07e}{GetChecked}}();} \DoxyCodeLine{127 } \DoxyCodeLine{132 \textcolor{keywordtype}{void} UncheckALL() \textcolor{keyword}{const};} \DoxyCodeLine{133 } \DoxyCodeLine{138 \textcolor{keywordtype}{void} CheckALL() \textcolor{keyword}{const};} \DoxyCodeLine{139 } \DoxyCodeLine{145 \textcolor{keywordtype}{void} \mbox{\hyperlink{structGpgFrontend_1_1UI_1_1KeyTable_ae0713ebbc21e78995db9a856d746fe6c}{SetChecked}}(KeyIdArgsListPtr key\_ids);} \DoxyCodeLine{146 \};} \DoxyCodeLine{147 } \DoxyCodeLine{152 \textcolor{keyword}{class }\mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList}{KeyList}} : \textcolor{keyword}{public} QWidget \{} \DoxyCodeLine{153 Q\_OBJECT} \DoxyCodeLine{154 } \DoxyCodeLine{155 \textcolor{keyword}{public}:} \DoxyCodeLine{162 \textcolor{keyword}{explicit} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a7c9d5cacdb42e1fbda5d3cc96e861418}{KeyList}}(KeyMenuAbility::AbilityType menu\_ability,} \DoxyCodeLine{163 QWidget* parent = \textcolor{keyword}{nullptr});} \DoxyCodeLine{164 } \DoxyCodeLine{173 \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a73ddb7feb1f70eac44e038c3dc925fec}{AddListGroupTab}}(} \DoxyCodeLine{174 \textcolor{keyword}{const} QString\& name,} \DoxyCodeLine{175 KeyListRow::KeyType selectType = KeyListRow::SECRET\_OR\_PUBLIC\_KEY,} \DoxyCodeLine{176 KeyListColumn::InfoType infoType = KeyListColumn::ALL,} \DoxyCodeLine{177 \textcolor{keyword}{const} std::function<\textcolor{keywordtype}{bool}(\textcolor{keyword}{const} \mbox{\hyperlink{classGpgFrontend_1_1GpgKey}{GpgKey}}\&)>\& filter =} \DoxyCodeLine{178 [](\textcolor{keyword}{const} \mbox{\hyperlink{classGpgFrontend_1_1GpgKey}{GpgKey}}\&) -\/> \textcolor{keywordtype}{bool} \{ \textcolor{keywordflow}{return} \textcolor{keyword}{true}; \});} \DoxyCodeLine{179 } \DoxyCodeLine{185 \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a7d75246eee6368be295c9ab5fe5ef291}{SetDoubleClickedAction}}(} \DoxyCodeLine{186 std::function<\textcolor{keywordtype}{void}(\textcolor{keyword}{const} \mbox{\hyperlink{classGpgFrontend_1_1GpgKey}{GpgKey}}\&, QWidget*)> action);} \DoxyCodeLine{187 } \DoxyCodeLine{194 \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_aab3f4facfc850e7eeb917571ca89f4a5}{SetColumnWidth}}(\textcolor{keywordtype}{int} row, \textcolor{keywordtype}{int} size);} \DoxyCodeLine{195 } \DoxyCodeLine{201 \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_aa961e3ba3c48f84dea4bb7ab4f756886}{AddMenuAction}}(QAction* act);} \DoxyCodeLine{202 } \DoxyCodeLine{207 \textcolor{keywordtype}{void} AddSeparator();} \DoxyCodeLine{208 } \DoxyCodeLine{214 KeyIdArgsListPtr \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_ac1e5046770c36f67aab34715e50c0a33}{GetChecked}}();} \DoxyCodeLine{215 } \DoxyCodeLine{222 \textcolor{keyword}{static} KeyIdArgsListPtr \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_ac1e5046770c36f67aab34715e50c0a33}{GetChecked}}(\textcolor{keyword}{const} \mbox{\hyperlink{structGpgFrontend_1_1UI_1_1KeyTable}{KeyTable}}\& key\_table);} \DoxyCodeLine{223 } \DoxyCodeLine{229 KeyIdArgsListPtr \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a81c2e36427371fa6ae6381870b9b5bdd}{GetPrivateChecked}}();} \DoxyCodeLine{230 } \DoxyCodeLine{236 KeyIdArgsListPtr \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a7ead8845ceb7c9310e3f4742251e1d87}{GetAllPrivateKeys}}();} \DoxyCodeLine{237 } \DoxyCodeLine{243 \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a68b595a2bb83dfafa61b3e467dd15689}{SetChecked}}(KeyIdArgsListPtr key\_ids);} \DoxyCodeLine{244 } \DoxyCodeLine{251 \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a68b595a2bb83dfafa61b3e467dd15689}{SetChecked}}(\textcolor{keyword}{const} KeyIdArgsListPtr\& keyIds,} \DoxyCodeLine{252 \textcolor{keyword}{const} \mbox{\hyperlink{structGpgFrontend_1_1UI_1_1KeyTable}{KeyTable}}\& key\_table);} \DoxyCodeLine{253 } \DoxyCodeLine{259 KeyIdArgsListPtr \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a1bcca32b18c539a2ae83c30fc07db544}{GetSelected}}();} \DoxyCodeLine{260 } \DoxyCodeLine{266 std::string \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_ab4368b81402e2468a9e960de8fb7080f}{GetSelectedKey}}();} \DoxyCodeLine{267 } \DoxyCodeLine{273 [[maybe\_unused]] \textcolor{keyword}{static} \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a31a4c067eed90830203862cb4adf951e}{MarkKeys}}(QStringList* keyIds);} \DoxyCodeLine{274 } \DoxyCodeLine{281 [[maybe\_unused]] \textcolor{keywordtype}{bool} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a20c4a242f49123bd64982952fdad08e9}{ContainsPrivateKeys}}();} \DoxyCodeLine{282 } \DoxyCodeLine{283 signals:} \DoxyCodeLine{290 \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a947f4ce45285b58bbde94f4ae879ff7a}{SignalRefreshStatusBar}}(\textcolor{keyword}{const} QString\& message, \textcolor{keywordtype}{int} timeout);} \DoxyCodeLine{291 } \DoxyCodeLine{296 \textcolor{keywordtype}{void} SignalRefreshDatabase();} \DoxyCodeLine{297 } \DoxyCodeLine{298 \textcolor{keyword}{public} slots:} \DoxyCodeLine{299 } \DoxyCodeLine{304 \textcolor{keywordtype}{void} SlotRefresh();} \DoxyCodeLine{305 } \DoxyCodeLine{306 \textcolor{keyword}{private}:} \DoxyCodeLine{311 \textcolor{keywordtype}{void} init();} \DoxyCodeLine{312 } \DoxyCodeLine{318 \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_ab64ba3049fac1aaa9fed4fb1c5919153}{import\_keys}}(\textcolor{keyword}{const} QByteArray\& inBuffer);} \DoxyCodeLine{319 } \DoxyCodeLine{324 \textcolor{keywordtype}{void} uncheck\_all();} \DoxyCodeLine{325 } \DoxyCodeLine{330 \textcolor{keywordtype}{void} check\_all();} \DoxyCodeLine{331 } \DoxyCodeLine{332 std::mutex buffered\_key\_list\_mutex\_; } \DoxyCodeLine{333 } \DoxyCodeLine{334 std::shared\_ptr ui\_; } \DoxyCodeLine{335 QTableWidget* m\_key\_list\_\{\}; } \DoxyCodeLine{336 std::vector m\_key\_tables\_; } \DoxyCodeLine{337 QMenu* popup\_menu\_\{\}; } \DoxyCodeLine{338 GpgFrontend::KeyLinkListPtr buffered\_keys\_list\_; } \DoxyCodeLine{339 std::function m\_action\_ = \textcolor{keyword}{nullptr}; } \DoxyCodeLine{340 KeyMenuAbility::AbilityType menu\_ability\_ = KeyMenuAbility::ALL; } \DoxyCodeLine{341 } \DoxyCodeLine{342 \textcolor{keyword}{private} slots:} \DoxyCodeLine{343 } \DoxyCodeLine{349 \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a69e54f06d546d516a0dcdf1055b8028e}{slot\_double\_clicked}}(\textcolor{keyword}{const} QModelIndex\& index);} \DoxyCodeLine{350 } \DoxyCodeLine{355 \textcolor{keywordtype}{void} slot\_refresh\_ui();} \DoxyCodeLine{356 } \DoxyCodeLine{361 \textcolor{keywordtype}{void} slot\_sync\_with\_key\_server();} \DoxyCodeLine{362 } \DoxyCodeLine{363 \textcolor{keyword}{protected}:} \DoxyCodeLine{369 \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a82da61a76a08023b2ddbe2a6869f4190}{contextMenuEvent}}(QContextMenuEvent* event) \textcolor{keyword}{override};} \DoxyCodeLine{370 } \DoxyCodeLine{376 \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_ae3ad87e114432b0d659a0297d520d72f}{dragEnterEvent}}(QDragEnterEvent* event) \textcolor{keyword}{override};} \DoxyCodeLine{377 } \DoxyCodeLine{383 \textcolor{keywordtype}{void} \mbox{\hyperlink{classGpgFrontend_1_1UI_1_1KeyList_a23ebf79be8de637560d41afd0433c35f}{dropEvent}}(QDropEvent* event) \textcolor{keyword}{override};} \DoxyCodeLine{384 \};} \DoxyCodeLine{385 } \DoxyCodeLine{386 \} \textcolor{comment}{// namespace GpgFrontend::UI}} \DoxyCodeLine{387 } \DoxyCodeLine{388 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// \_\_KEYLIST\_H\_\_}} \end{DoxyCode}