enhance statusbar behavior when changing actions.

This commit is contained in:
Martin Rotter 2020-11-19 19:27:41 +01:00
parent 508d645c82
commit 1030f5234f
3 changed files with 10 additions and 8 deletions

View file

@ -54,6 +54,7 @@ SettingsGui::SettingsGui(Settings* settings, QWidget* parent) : SettingsPanel(se
connect(m_ui->m_editorFeedsToolbar, &ToolBarEditor::setupChanged, this, &SettingsGui::dirtifySettings); connect(m_ui->m_editorFeedsToolbar, &ToolBarEditor::setupChanged, this, &SettingsGui::dirtifySettings);
connect(m_ui->m_editorMessagesToolbar, &ToolBarEditor::setupChanged, this, &SettingsGui::dirtifySettings); connect(m_ui->m_editorMessagesToolbar, &ToolBarEditor::setupChanged, this, &SettingsGui::dirtifySettings);
connect(m_ui->m_editorStatusbar, &ToolBarEditor::setupChanged, this, &SettingsGui::dirtifySettings); connect(m_ui->m_editorStatusbar, &ToolBarEditor::setupChanged, this, &SettingsGui::dirtifySettings);
connect(m_ui->m_editorStatusbar, &ToolBarEditor::setupChanged, this, &SettingsGui::requireRestart);
connect(m_ui->m_listStyles, &QListWidget::currentItemChanged, this, &SettingsGui::dirtifySettings); connect(m_ui->m_listStyles, &QListWidget::currentItemChanged, this, &SettingsGui::dirtifySettings);
connect(m_ui->m_cmbSelectToolBar, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), m_ui->m_stackedToolbars, connect(m_ui->m_cmbSelectToolBar, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), m_ui->m_stackedToolbars,
&QStackedWidget::setCurrentIndex); &QStackedWidget::setCurrentIndex);

View file

@ -99,7 +99,8 @@ QStringList StatusBar::savedActions() const {
} }
QList<QAction*> StatusBar::convertActions(const QStringList& actions) { QList<QAction*> StatusBar::convertActions(const QStringList& actions) {
bool progress_visible = this->actions().contains(m_barProgressFeedsAction) && m_lblProgressFeeds->isVisible() && bool progress_visible = this->actions().contains(m_barProgressFeedsAction) &&
m_lblProgressFeeds->isVisible() &&
m_barProgressFeeds->isVisible(); m_barProgressFeeds->isVisible();
QList<QAction*> available_actions = availableActions(); QList<QAction*> available_actions = availableActions();
QList<QAction*> spec_actions; QList<QAction*> spec_actions;
@ -165,7 +166,7 @@ QList<QAction*> StatusBar::convertActions(const QStringList& actions) {
} }
if (action_to_add != nullptr && widget_to_add != nullptr) { if (action_to_add != nullptr && widget_to_add != nullptr) {
action_to_add->setProperty("widget", QVariant::fromValue((void*) widget_to_add)); action_to_add->setProperty("widget", QVariant::fromValue(widget_to_add));
spec_actions.append(action_to_add); spec_actions.append(action_to_add);
} }
} }
@ -174,11 +175,11 @@ QList<QAction*> StatusBar::convertActions(const QStringList& actions) {
} }
void StatusBar::loadSpecificActions(const QList<QAction*>& actions, bool initial_load) { void StatusBar::loadSpecificActions(const QList<QAction*>& actions, bool initial_load) {
clear();
if (initial_load) { if (initial_load) {
clear();
for (QAction* act : actions) { for (QAction* act : actions) {
QWidget* widget = act->property("widget").isValid() ? static_cast<QWidget*>(act->property("widget").value<void*>()) : nullptr; QWidget* widget = act->property("widget").isValid() ? qvariant_cast<QWidget*>(act->property("widget")) : nullptr;
addAction(act); addAction(act);
@ -207,6 +208,8 @@ void StatusBar::clear() {
if (widget != nullptr) { if (widget != nullptr) {
removeWidget(widget); removeWidget(widget);
widget->setParent(qApp->mainFormWidget());
widget->setVisible(false); widget->setVisible(false);
} }

View file

@ -17,8 +17,6 @@ class ToolBarEditor : public QWidget {
Q_OBJECT Q_OBJECT
public: public:
// Constructors and destructors.
explicit ToolBarEditor(QWidget* parent = nullptr); explicit ToolBarEditor(QWidget* parent = nullptr);
// Toolbar operations. // Toolbar operations.
@ -29,7 +27,7 @@ class ToolBarEditor : public QWidget {
QListWidget* availableItemsWidget() const; QListWidget* availableItemsWidget() const;
protected: protected:
bool eventFilter(QObject* object, QEvent* event); virtual bool eventFilter(QObject* object, QEvent* event);
private slots: private slots:
void updateActionsAvailability(); void updateActionsAvailability();