Skip to content
Snippets Groups Projects
Commit d796af88 authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

JobViewPresenter now shows non-available views in gray color.

parent f7e4b693
Branches
Tags
No related merge requests found
......@@ -16,12 +16,11 @@
#include "ItemComboToolBar.h"
#include <QAction>
#include <QStandardItemModel>
#include <QComboBox>
ItemComboToolBar::ItemComboToolBar(QWidget *parent)
: StyledToolBar(parent)
, m_comboBox(new QComboBox)
, m_comboBoxAction(0)
ItemComboToolBar::ItemComboToolBar(QWidget* parent)
: StyledToolBar(parent), m_comboBox(new QComboBox), m_comboBoxAction(nullptr)
{
setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
......@@ -33,26 +32,24 @@ ItemComboToolBar::ItemComboToolBar(QWidget *parent)
setComboConnected(true);
}
void ItemComboToolBar::setPresentation(const QString &name)
void ItemComboToolBar::setPresentation(const QString& name)
{
setComboConnected(false);
m_comboBox->setCurrentText(name);
setComboConnected(true);
}
void ItemComboToolBar::addPresentationType(const QString &name)
{
setComboConnected(false);
m_comboBox->addItem(name);
setComboConnected(true);
}
void ItemComboToolBar::setPresentationList(const QStringList &presentationList)
void ItemComboToolBar::setPresentationList(const QStringList& presentationList,
const QStringList& activeList)
{
Q_ASSERT(presentationList.size());
setComboConnected(false);
m_comboBox->addItems(presentationList);
if(!activeList.isEmpty())
makeItemsEnabled(activeList);
setComboConnected(true);
}
......@@ -63,13 +60,12 @@ QString ItemComboToolBar::currentPresentation() const
//! Sets external actions to tool bar (previous actions will be removed).
void ItemComboToolBar::setActionList(const QList<QAction *> &actionList)
void ItemComboToolBar::setActionList(const QList<QAction*>& actionList)
{
foreach(QAction *action, actions()) {
foreach (QAction* action, actions())
removeAction(action);
}
foreach(QAction *action, actionList) {
foreach (QAction* action, actionList) {
addAction(action);
addStyledSeparator();
}
......@@ -80,11 +76,23 @@ void ItemComboToolBar::setActionList(const QList<QAction *> &actionList)
void ItemComboToolBar::setComboConnected(bool value)
{
if(value) {
connect(m_comboBox, SIGNAL(currentIndexChanged(QString)),
this, SIGNAL(comboChanged(QString)), Qt::UniqueConnection);
} else {
disconnect(m_comboBox, SIGNAL(currentIndexChanged(QString)),
this, SIGNAL(comboChanged(QString)));
if (value)
connect(m_comboBox, SIGNAL(currentIndexChanged(QString)), this,
SIGNAL(comboChanged(QString)), Qt::UniqueConnection);
else
disconnect(m_comboBox, SIGNAL(currentIndexChanged(QString)), this,
SIGNAL(comboChanged(QString)));
}
//! All items in QComboBox which are not in given list, will be disabled (gray and unselectable).
void ItemComboToolBar::makeItemsEnabled(const QStringList& activePresentations)
{
const QStandardItemModel* model = dynamic_cast<const QStandardItemModel*>(m_comboBox->model());
Q_ASSERT(model);
for(int row=0; row<m_comboBox->count(); ++row) {
QString text = m_comboBox->itemText(row);
model->item(row)->setEnabled(activePresentations.contains(text));
}
}
......@@ -21,6 +21,7 @@
#include <QList>
class QAction;
class QComboBox;
//! The ItemComboToolBar class is a styled toolbar on top of ItemComboWidget. Contains
//! ComboBox to switch ItemComboWidget, and dynamic list of actions, which are updated
......@@ -31,25 +32,26 @@ class BA_CORE_API_ ItemComboToolBar : public StyledToolBar
Q_OBJECT
public:
explicit ItemComboToolBar(QWidget *parent = 0);
explicit ItemComboToolBar(QWidget* parent = 0);
void setPresentation(const QString &name);
void setPresentation(const QString& name);
void addPresentationType(const QString &name);
void setPresentationList(const QStringList &presentationList);
void setPresentationList(const QStringList& presentationList,
const QStringList& activeList = QStringList());
QString currentPresentation() const;
void setActionList(const QList<QAction *> &actionList);
void setActionList(const QList<QAction*>& actionList);
signals:
void comboChanged(const QString &presentation);
void comboChanged(const QString& presentation);
private:
void setComboConnected(bool value);
void makeItemsEnabled(const QStringList& activePresentations);
class QComboBox *m_comboBox;
QAction *m_comboBoxAction;
QComboBox* m_comboBox;
QAction* m_comboBoxAction;
};
#endif // ITEMCOMBOTOOLBAR_H
......
......@@ -46,8 +46,7 @@ void ItemComboWidget::setItem(SessionItem* item)
if (!item)
return;
QStringList validPresentations = activePresentationList(item);
m_toolBar->setPresentationList(validPresentations);
m_toolBar->setPresentationList(presentationList(item), activePresentationList(item));
m_currentItem = item;
......@@ -95,9 +94,9 @@ QStringList ItemComboWidget::activePresentationList(SessionItem* item)
return QStringList();
}
//! Returns full list of presentations valid for a given item.
//! Returns full list of presentations available for given item.
QStringList ItemComboWidget::validPresentationList(SessionItem* item)
QStringList ItemComboWidget::presentationList(SessionItem* item)
{
return activePresentationList(item);
}
......
......@@ -51,7 +51,7 @@ public:
protected:
virtual QStringList activePresentationList(SessionItem* item);
virtual QStringList validPresentationList(SessionItem* item);
virtual QStringList presentationList(SessionItem* item);
private slots:
void onComboChanged(const QString& name);
......
......@@ -17,8 +17,6 @@
#include "SessionItemWidget.h"
#include "SessionItem.h"
#include <QDebug>
SessionItemWidget::SessionItemWidget(QWidget* parent)
: QWidget(parent)
, m_currentItem(nullptr)
......@@ -34,8 +32,6 @@ SessionItemWidget::~SessionItemWidget()
void SessionItemWidget::setItem(SessionItem* item)
{
qDebug() << "NewSessionItemWidget::setItem(SessionItem* item)" << item;
if(m_currentItem == item)
return;
......@@ -55,20 +51,16 @@ QList<QAction*> SessionItemWidget::actionList()
void SessionItemWidget::showEvent(QShowEvent*)
{
qDebug() << "NewSessionItemWidget::showEvent 1.1 was shown?";
subscribe();
}
void SessionItemWidget::hideEvent(QHideEvent*)
{
qDebug() << "NewSessionItemWidget::hideEvent 1.1 was hidden?";
unsubscribe();
}
void SessionItemWidget::subscribe()
{
qDebug() << "NewSessionItemWidget::subscribe()" << m_currentItem;
if (!m_currentItem || is_subscribed)
return;
......@@ -81,7 +73,6 @@ void SessionItemWidget::subscribe()
void SessionItemWidget::unsubscribe()
{
qDebug() << "NewSessionItemWidget::unsubscribe()" << m_currentItem;
if (m_currentItem)
m_currentItem->mapper()->unsubscribe(this);
......
......@@ -38,13 +38,20 @@ JobResultsPresenter::JobResultsPresenter(QWidget* parent)
QStringList JobResultsPresenter::activePresentationList(SessionItem* item)
{
JobItem* jobItem = dynamic_cast<JobItem*>(item);
Q_ASSERT(jobItem);
QStringList result = QStringList() << Constants::IntensityDataWidgetName
<< Constants::IntensityProjectionsWidgetName;
QStringList result = presentationList(jobItem);
if (jobItem->isValidForFitting())
result << Constants::FitComparisonWidgetName;
if (!jobItem->isValidForFitting())
result.removeAll(Constants::FitComparisonWidgetName);
return result;
}
QStringList JobResultsPresenter::presentationList(SessionItem* item)
{
Q_ASSERT(item->modelType() == Constants::JobItemType);
return QStringList() << Constants::IntensityDataWidgetName
<< Constants::IntensityProjectionsWidgetName
<< Constants::FitComparisonWidgetName;
}
......@@ -31,6 +31,7 @@ public:
protected:
QStringList activePresentationList(SessionItem* item);
virtual QStringList presentationList(SessionItem* item);
};
#endif // JOBRESULTSPRESENTER_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment