swift
logcomponent.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QAction>
7 #include <QMenu>
8 #include <QTabWidget>
9 #include <Qt>
10 #include <QtGlobal>
11 
12 #include "ui_logcomponent.h"
13 
14 #include "core/application.h"
16 #include "gui/guiutility.h"
17 #include "gui/menus/menuaction.h"
19 #include "gui/views/viewbase.h"
20 #include "misc/icons.h"
21 #include "misc/logpattern.h"
23 
24 using namespace swift::misc;
25 using namespace swift::core;
26 using namespace swift::gui;
27 using namespace swift::gui::views;
28 using namespace swift::gui::menus;
29 
30 namespace swift::gui::components
31 {
32  CConsoleTextEdit::CConsoleTextEdit(QWidget *parent) : QPlainTextEdit(parent)
33  {
34  bool c =
35  connect(this, &CConsoleTextEdit::customContextMenuRequested, this, &CConsoleTextEdit::customMenuRequested);
36  Q_ASSERT_X(c, Q_FUNC_INFO, "Custom menu");
37  Q_UNUSED(c);
38  this->setContextMenuPolicy(Qt::CustomContextMenu);
39  }
40 
41  void CConsoleTextEdit::customMenuRequested(const QPoint &pos)
42  {
43  QMenu *menu = QPlainTextEdit::createStandardContextMenu();
44  menu->addAction(CIcons::delete16(), "Clear console", this, &QPlainTextEdit::clear);
45  menu->exec(this->mapToGlobal(pos));
46  }
47 
48  CLogComponent::CLogComponent(QWidget *parent) : QFrame(parent), ui(new Ui::CLogComponent), m_history(this)
49  {
50  ui->setupUi(this);
51 
52  connect(&m_history, &CLogHistoryReplica::elementAdded, this,
53  [this](const CStatusMessage &message) { ui->comp_StatusMessages->appendStatusMessageToList(message); });
54  connect(&m_history, &CLogHistoryReplica::elementsReplaced, this, [this](const CStatusMessageList &messages) {
55  ui->comp_StatusMessages->appendStatusMessagesToList(messages);
56  });
57  connect(ui->comp_StatusMessages, &CStatusMessagesDetail::filterChanged, this, [this](const CVariant &filter) {
58  clearMessages();
59  m_history.setFilter(filter.to<CLogPattern>());
60  });
61  m_history.setFilter(CLogPattern().withSeverityAtOrAbove(CStatusMessage::SeverityInfo));
62  m_history.initialize(sApp->getDataLinkDBus());
63  }
64 
66 
67  void CLogComponent::displayLog(bool attention)
68  {
69  if (attention) { emit this->requestAttention(); }
70  }
71 
73  {
74  ui->comp_StatusMessages->filterUseRadioButtonDescriptiveIcons(oneLetterText);
75  }
76 
77  void CLogComponent::showFilterDialog() { ui->comp_StatusMessages->showFilterDialog(); }
78 
79  void CLogComponent::showFilterBar() { ui->comp_StatusMessages->showFilterBar(); }
80 
81  void CLogComponent::hideFilterBar() { ui->comp_StatusMessages->hideFilterBar(); }
82 
83  void CLogComponent::showDetails(bool details) { ui->comp_StatusMessages->showDetails(details); }
84 
85  void CLogComponent::setMaxLogMessages(int max) { ui->comp_StatusMessages->setMaxLogMessages(max); }
86 
87  void CLogComponent::setNoSorting() { ui->comp_StatusMessages->setNoSorting(); }
88 
89  void CLogComponent::setSorting(const CPropertyIndex &propertyIndex, Qt::SortOrder order)
90  {
91  ui->comp_StatusMessages->setSorting(propertyIndex, order);
92  }
93 
94  void CLogComponent::clear() { ui->comp_StatusMessages->clear(); }
95 
96  void CLogComponent::clearMessages() { ui->comp_StatusMessages->clear(); }
97 } // namespace swift::gui::components
SWIFT_CORE_EXPORT swift::core::CApplication * sApp
Single instance of application object.
Definition: application.cpp:71
swift::misc::shared_state::CDataLinkDBus * getDataLinkDBus()
Transport mechanism for sharing state between applications.
void customMenuRequested(const QPoint &pos)
Custom menu.
GUI displaying log and status messages.
Definition: logcomponent.h:45
void displayLog(bool attention=false)
Display log.
void filterUseRadioButtonDescriptiveIcons(bool oneLetterText)
Use icons with radio buttons.
void showDetails(bool details)
Show log details.
void setNoSorting()
Disable sorting.
void setSorting(const swift::misc::CPropertyIndex &propertyIndex, Qt::SortOrder order)
Sorting for view.
void requestAttention()
Make me visible.
void setMaxLogMessages(int max)
Set max.log messages.
void showFilterBar()
Show a filter bar.
void hideFilterBar()
Hide a filter bar.
CLogComponent(QWidget *parent=nullptr)
Constructor.
void showFilterDialog()
Show filter dialog and disable bar.
void filterChanged(const swift::misc::CVariant &filter)
The user changed their message filter.
Value class for matching log messages based on their categories.
Definition: logpattern.h:49
Streamable status message, e.g.
Status messages, e.g. from Core -> GUI.
Wrapper around QVariant which provides transparent access to CValueObject methods of the contained ob...
Definition: variant.h:66
void setFilter(const U &filter)
Set filter to choose list elements.
Definition: listobserver.h:77
virtual void initialize(IDataLink *dataLink)
Subscribe using the given transport mechanism.
Definition: listobserver.h:70
Backend services of the swift project, like dealing with the network or the simulators.
Definition: actionbind.cpp:7
High level reusable GUI components.
Definition: aboutdialog.cpp:13
Views, mainly QTableView.
GUI related classes.
Free functions in swift::misc.