diff --git a/src/gui/basetoolbar.cpp b/src/gui/basetoolbar.cpp index a46501f57..e6b28d441 100644 --- a/src/gui/basetoolbar.cpp +++ b/src/gui/basetoolbar.cpp @@ -12,23 +12,3 @@ BaseToolBar::BaseToolBar(const QString &title, QWidget *parent) BaseToolBar::~BaseToolBar() { qDebug("Destroying BaseToolBar instance."); } - -void BaseToolBar::loadChangeableActions() { - QHash available_actions = FormMain::instance()->allActions(); - QStringList action_names = Settings::instance()->value(APP_CFG_GUI, - "messages_toolbar", - "m_actionMarkSelectedMessagesAsRead,m_actionMarkSelectedMessagesAsUnread,m_actionSwitchImportanceOfSelectedMessages").toString().split(',', - QString::SkipEmptyParts); - - actions().clear(); - - // Iterate action names and add respectable actions into the toolbar. - foreach (const QString &action_name, action_names) { - if (available_actions.contains(action_name)) { - addAction(available_actions.value(action_name)); - } - else if (action_name == SEPARATOR_ACTION_NAME) { - addSeparator(); - } - } -} diff --git a/src/gui/basetoolbar.h b/src/gui/basetoolbar.h index 4b60875be..0d43e20d3 100644 --- a/src/gui/basetoolbar.h +++ b/src/gui/basetoolbar.h @@ -14,7 +14,7 @@ class BaseToolBar : public QToolBar { virtual QList changeableActions() const = 0; virtual void saveChangeableActions() const = 0; - virtual void loadChangeableActions(); + virtual void loadChangeableActions() = 0; signals: diff --git a/src/gui/feedmessageviewer.h b/src/gui/feedmessageviewer.h index da7a1802f..52fc45c8b 100644 --- a/src/gui/feedmessageviewer.h +++ b/src/gui/feedmessageviewer.h @@ -51,6 +51,10 @@ class FeedMessageViewer : public TabContent { return m_feedsView; } + inline MessagesToolBar *messagesToolBar() { + return m_toolBarMessages; + } + // Loads/saves sizes and states of ALL // underlying widgets, this contains primarily // splitters, toolbar and views. diff --git a/src/gui/formsettings.cpp b/src/gui/formsettings.cpp index 05a761ac9..43c5e7e63 100755 --- a/src/gui/formsettings.cpp +++ b/src/gui/formsettings.cpp @@ -35,6 +35,8 @@ #include "gui/feedsview.h" #include "gui/formmain.h" #include "gui/messagebox.h" +#include "gui/basetoolbar.h" +#include "gui/messagestoolbar.h" #include "qtsingleapplication/qtsingleapplication.h" #include "dynamic-shortcuts/dynamicshortcuts.h" @@ -769,6 +771,8 @@ void FormSettings::loadInterface() { "toolbar_style", Qt::ToolButtonIconOnly).toInt())); + // Load toolbars. + m_ui->widget->loadFromToolBar(FormMain::instance()->tabWidget()->feedMessageViewer()->messagesToolBar()); } void FormSettings::saveInterface() { diff --git a/src/gui/formsettings.ui b/src/gui/formsettings.ui index 78a555bb8..d97d2e9e1 100644 --- a/src/gui/formsettings.ui +++ b/src/gui/formsettings.ui @@ -17,7 +17,7 @@ - 0 + 3 @@ -286,8 +286,8 @@ Authors of this application are NOT responsible for lost data. 0 0 - 564 - 364 + 100 + 30 @@ -332,7 +332,7 @@ Authors of this application are NOT responsible for lost data. QTabWidget::North - 0 + 3 @@ -364,8 +364,8 @@ Authors of this application are NOT responsible for lost data. 0 0 - 560 - 336 + 558 + 337 @@ -574,6 +574,16 @@ Authors of this application are NOT responsible for lost data. + + + Toolbars + + + + + + + @@ -1219,6 +1229,12 @@ Authors of this application are NOT responsible for lost data.
dynamicshortcutswidget.h
1 + + ToolBarEditor + QWidget +
toolbareditor.h
+ 1 +
diff --git a/src/gui/messagestoolbar.cpp b/src/gui/messagestoolbar.cpp index f9356daa4..6e6fb1a3e 100644 --- a/src/gui/messagestoolbar.cpp +++ b/src/gui/messagestoolbar.cpp @@ -5,14 +5,14 @@ #include "gui/formmain.h" #include "miscellaneous/settings.h" +#include + MessagesToolBar::MessagesToolBar(const QString &title, QWidget *parent) : BaseToolBar(title, parent), m_spacer(new QWidget(this)), m_txtFilter(new BaseLineEdit(this)) { - m_spacer->setObjectName(SPACER_OBJECT_NAME); m_spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - m_txtFilter->setObjectName(FILTER_OBJECT_NAME); m_txtFilter->setFixedWidth(FILTER_WIDTH); m_txtFilter->setPlaceholderText(tr("Filter messages")); @@ -65,8 +65,24 @@ void MessagesToolBar::saveChangeableActions() const { } void MessagesToolBar::loadChangeableActions() { - BaseToolBar::loadChangeableActions(); + QHash available_actions = FormMain::instance()->allActions(); + QStringList action_names = Settings::instance()->value(APP_CFG_GUI, + "messages_toolbar", + "m_actionMarkSelectedMessagesAsRead,m_actionMarkSelectedMessagesAsUnread,m_actionSwitchImportanceOfSelectedMessages").toString().split(',', + QString::SkipEmptyParts); - addWidget(m_spacer); - addWidget(m_txtFilter); + actions().clear(); + + // Iterate action names and add respectable actions into the toolbar. + foreach (const QString &action_name, action_names) { + if (available_actions.contains(action_name)) { + addAction(available_actions.value(action_name)); + } + else if (action_name == SEPARATOR_ACTION_NAME) { + addSeparator(); + } + } + + addWidget(m_spacer)->setObjectName(SPACER_OBJECT_NAME); + addWidget(m_txtFilter)->setObjectName(FILTER_OBJECT_NAME); } diff --git a/src/gui/messagestoolbar.h b/src/gui/messagestoolbar.h index 248c737fc..741f2c678 100644 --- a/src/gui/messagestoolbar.h +++ b/src/gui/messagestoolbar.h @@ -26,7 +26,6 @@ class MessagesToolBar : public BaseToolBar { private: QWidget *m_spacer; BaseLineEdit *m_txtFilter; - }; #endif // NEWSTOOLBAR_H diff --git a/src/gui/toolbareditor.cpp b/src/gui/toolbareditor.cpp index fb857c6cb..efd185b84 100644 --- a/src/gui/toolbareditor.cpp +++ b/src/gui/toolbareditor.cpp @@ -1,10 +1,13 @@ #include "gui/toolbareditor.h" #include "gui/basetoolbar.h" +#include "gui/formmain.h" + +#include ToolBarEditor::ToolBarEditor(QWidget *parent) - : QDialog(parent), m_ui(new Ui::ToolBarEditor) { + : QWidget(parent), m_ui(new Ui::ToolBarEditor) { m_ui->setupUi(this); } @@ -15,7 +18,24 @@ ToolBarEditor::~ToolBarEditor() { void ToolBarEditor::loadFromToolBar(BaseToolBar* tool_bar) { m_toolBar = tool_bar; - // TODO: nastavit dialog podle toolbaru + QList activated_actions = m_toolBar->changeableActions(); + QList available_actions = FormMain::instance()->allActions().values(); + + foreach (QAction *action, activated_actions) { + QListWidgetItem *action_item = new QListWidgetItem(action->icon(), + action->text().replace('&', ""), + m_ui->m_listActivatedActions); + action_item->setData(Qt::UserRole, QVariant::fromValue((intptr_t) action)); + } + + foreach (QAction *action, available_actions) { + if (!activated_actions.contains(action)) { + QListWidgetItem *action_item = new QListWidgetItem(action->icon(), + action->text().replace('&', ""), + m_ui->m_listAvailableActions); + action_item->setData(Qt::UserRole, QVariant::fromValue((intptr_t) action)); + } + } } void ToolBarEditor::saveToolBar() { diff --git a/src/gui/toolbareditor.h b/src/gui/toolbareditor.h index 7d003f486..52b6af796 100644 --- a/src/gui/toolbareditor.h +++ b/src/gui/toolbareditor.h @@ -1,7 +1,7 @@ #ifndef TOOLBAREDITOR_H #define TOOLBAREDITOR_H -#include +#include #include "ui_toolbareditor.h" @@ -13,7 +13,7 @@ namespace Ui { class BaseToolBar; // TODO: dialog pro úpravu prirazeneho toolbaru. -class ToolBarEditor : public QDialog { +class ToolBarEditor : public QWidget { Q_OBJECT public: diff --git a/src/gui/toolbareditor.ui b/src/gui/toolbareditor.ui index 507456ee6..87fa4a745 100644 --- a/src/gui/toolbareditor.ui +++ b/src/gui/toolbareditor.ui @@ -1,17 +1,118 @@ + ToolBarEditor - + 0 0 - 400 - 300 + 610 + 415 Dialog + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Available actions + + + + + + + Activated actions + + + + + + + true + + + true + + + false + + + QAbstractItemView::DragDrop + + + Qt::MoveAction + + + + + + + true + + + true + + + false + + + QAbstractItemView::DragDrop + + + Qt::MoveAction + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + PushButton + + + + + + + PushButton + + + + + + + Insert separator + + + +