case Qt::DecorationRole:
return QIcon(myXMLReader.rootFolderIcon(theIndexRow).c_str());
case Qt::ForegroundRole:
- if ((flags(theIndex) & Qt::ItemIsEditable) == 0)
+ if ((theIndex.flags() & Qt::ItemIsEditable) == 0)
return QBrush(Qt::lightGray);
return ACTIVE_COLOR;
}
} else { // an object or sub-document
if (theRole == Qt::ForegroundRole) {
- if ((flags(theIndex) & Qt::ItemIsEditable) == 0)
+ if ((theIndex.flags() & Qt::ItemIsEditable) == 0)
return QBrush(Qt::lightGray);
return ACTIVE_COLOR;
}
XGUI_DataTree::XGUI_DataTree(QWidget* theParent)
: QTreeView(theParent)
{
+ myStyle = new XGUI_TreeViewStyle();
+ setStyle(myStyle);
setHeaderHidden(true);
setEditTriggers(QAbstractItemView::NoEditTriggers);
setSelectionBehavior(QAbstractItemView::SelectRows);
}
}
+void XGUI_DataTree::drawRow(QPainter* thePainter,
+ const QStyleOptionViewItem& theOptions,
+ const QModelIndex& theIndex) const
+{
+ QStyleOptionViewItemV4 aOptions = theOptions;
+ myStyle->setIndex(theIndex);
+ QTreeView::drawRow(thePainter, aOptions, theIndex);
+}
+
+//********************************************************************
+//********************************************************************
+//********************************************************************
+void XGUI_TreeViewStyle::drawPrimitive(PrimitiveElement theElement,
+ const QStyleOption* theOption,
+ QPainter* thePainter, const QWidget* theWidget) const
+{
+ if ((theElement == QStyle::PE_PanelItemViewRow) || (theElement == QStyle::PE_PanelItemViewItem)) {
+ const QStyleOptionViewItemV4* aOptions = qstyleoption_cast<const QStyleOptionViewItemV4 *>(theOption);
+ if (myIndex.isValid() && ((myIndex.flags() & Qt::ItemIsSelectable) == 0)) {
+ QStyle::State aState = aOptions->state;
+ if ((aState & QStyle::State_MouseOver) != 0)
+ aState &= ~QStyle::State_MouseOver;
+ QStyleOptionViewItemV4* aOpt = (QStyleOptionViewItemV4*) aOptions;
+ aOpt->state = aState;
+ QWindowsVistaStyle::drawPrimitive(theElement, aOpt, thePainter, theWidget);
+ }
+ }
+ QWindowsVistaStyle::drawPrimitive(theElement, theOption, thePainter, theWidget);
+}
+
+
//********************************************************************
//********************************************************************
//********************************************************************
#include <QWidget>
#include <QTreeView>
#include <QLineEdit>
+#include <QWindowsVistaStyle>
class ModuleBase_IDocumentDataModel;
class XGUI_DataModel;
bool myIsSelected;
};
+/**
+* \ingroup GUI
+* Implementation of XGUI_DataTree custom style
+*/
+class XGUI_TreeViewStyle : public QWindowsVistaStyle
+{
+ Q_OBJECT
+public:
+ XGUI_TreeViewStyle() : QWindowsVistaStyle() {}
+
+ void drawPrimitive(PrimitiveElement theElement, const QStyleOption* theOption,
+ QPainter* thePainter, const QWidget* theWidget = 0) const;
+
+ void setIndex(const QModelIndex& theIndex) { myIndex = theIndex; }
+ QModelIndex index() const { return myIndex; }
+
+private:
+ QModelIndex myIndex;
+};
+
+
/**
* \ingroup GUI
* Implementation of Data Tree object for Object Browser
/// Redefinition of virtual method
virtual void resizeEvent(QResizeEvent* theEvent);
+ virtual void drawRow(QPainter* thePainter,
+ const QStyleOptionViewItem& theOptions,
+ const QModelIndex& theIndex) const;
+private:
+ XGUI_TreeViewStyle* myStyle;
};
/**\class XGUI_ObjectsBrowser