swift
statusmessageview.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 <QFlags>
7 
10 
11 using namespace swift::misc;
12 using namespace swift::gui::models;
13 using namespace swift::gui::filters;
14 
15 namespace swift::gui::views
16 {
17  CStatusMessageView::CStatusMessageView(QWidget *parent) : CViewBase(parent)
18  {
19  m_menus |= MenuClear;
20  m_acceptRowSelection = true;
21  m_enabledLoadIndicator = false; // for performance reasons
23  this->standardInit(new CStatusMessageListModel(this));
24  }
25 
27 
29  {
30  this->derivedModel()->setMode(mode, messages);
31  }
32 
34  {
35  this->derivedModel()->adjustOrderColumn(messages);
36  }
37 
39  {
40  return this->derivedModel()->isSortedByTimestampOrOrder();
41  }
42 
44  {
45  if (this->getFilterDialog()) { return; } // already existing
47  }
48 
49  void CStatusMessageView::keepLatest(int desiredSize)
50  {
51  if (desiredSize >= this->rowCount()) { return; }
52  if (desiredSize < 1)
53  {
54  this->clear();
55  return;
56  }
57 
58  CStatusMessageList msgs = this->container();
59  msgs.keepLatest(desiredSize);
60  this->updateContainerMaybeAsync(msgs);
61  }
62 
64  {
65  return qobject_cast<CStatusMessageFilterDialog *>(this->getFilterWidget());
66  }
67 } // namespace swift::gui::views
void adjustOrderColumn(const swift::misc::CStatusMessageList &messages)
Adjust order column depending on messages.
bool isSortedByTimestampOrOrder() const
Currently sorted by timestamp or by order.
void keepLatest(int desiredSize)
Keep latest n status messages.
void adjustOrderColumn(const swift::misc::CStatusMessageList &messages)
Adjust order column depending on messages.
bool isSortedByTimestampOrOrder() const
Currently sorted by timestamp or by order.
filters::CStatusMessageFilterDialog * getFilterDialog() const
Filter dialog if any.
void setMode(models::CStatusMessageListModel::Mode mode)
Set mode.
void addFilterDialog()
Add my own filter dialog.
Base class for views.
Definition: viewbase.h:648
void standardInit(ModelClass *model=nullptr)
Standard initialization.
Definition: viewbase.cpp:572
void updateContainerMaybeAsync(const ContainerType &container, bool sort=true, bool resize=true)
Based on size call sync / async update.
Definition: viewbase.cpp:117
virtual int rowCount() const
Elements in container.
Definition: viewbase.cpp:386
const ContainerType & container() const
Access to container.
Definition: viewbase.cpp:200
bool m_acceptRowSelection
selection changed
Definition: viewbase.h:595
Menu m_menus
Default menu settings.
Definition: viewbase.h:603
QWidget * getFilterWidget() const
Filter widget if any.
Definition: viewbase.h:268
void menuRemoveItems(Menu menusToRemove)
Remove given menu items.
bool m_enabledLoadIndicator
loading indicator enabled/disabled
Definition: viewbase.h:593
void setFilterDialog(filters::CFilterDialog *filterDialog)
Filter dialog.
@ MenuClear
allow clearing the view via menu
Definition: viewbase.h:120
@ MenuRefresh
allow refreshing the view via menu
Definition: viewbase.h:122
@ MenuBackend
allow to request data from backend
Definition: viewbase.h:123
@ MenuToggleSelectionMode
allow to toggle selection mode
Definition: viewbase.h:130
Status messages, e.g. from Core -> GUI.
int keepLatest(int estimtatedNumber)
Keep latest n status messages.
Filter to search data sets.
Models to be used with views, mainly QTableView.
Views, mainly QTableView.
Free functions in swift::misc.