Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
42fab094
Commit
42fab094
authored
Feb 11, 2010
by
Christiaan Janssen
Browse files
QmlDesigner.Navigator: Improved look using styles
parent
47fa65be
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp
View file @
42fab094
...
...
@@ -32,20 +32,73 @@
#include "navigatorview.h"
#include "navigatortreemodel.h"
#include "navigatorwidget.h"
#include "qproxystyle.h"
#include <nodeproperty.h>
#include "metainfo.h"
#define _separator_line_color_ "#757575"
namespace
QmlDesigner
{
static
void
drawSelectionBackground
(
QPainter
*
painter
,
const
QStyleOption
&
option
)
{
painter
->
save
();
QLinearGradient
gradient
;
QColor
highlight
=
option
.
palette
.
highlight
().
color
();
gradient
.
setColorAt
(
0
,
highlight
.
lighter
(
130
));
gradient
.
setColorAt
(
1
,
highlight
.
darker
(
130
));
gradient
.
setStart
(
option
.
rect
.
topLeft
());
gradient
.
setFinalStop
(
option
.
rect
.
bottomLeft
());
painter
->
fillRect
(
option
.
rect
,
gradient
);
painter
->
setPen
(
highlight
.
lighter
());
painter
->
drawLine
(
option
.
rect
.
topLeft
(),
option
.
rect
.
topRight
());
painter
->
setPen
(
highlight
.
darker
());
painter
->
drawLine
(
option
.
rect
.
bottomLeft
(),
option
.
rect
.
bottomRight
());
painter
->
restore
();
}
// This style basically allows us to span the entire row
// including the arrow indicators which would otherwise not be
// drawn by the delegate
class
TreeViewStyle
:
public
QProxyStyle
{
public:
void
drawPrimitive
(
PrimitiveElement
element
,
const
QStyleOption
*
option
,
QPainter
*
painter
,
const
QWidget
*
=
0
)
const
{
if
(
element
==
QStyle
::
PE_PanelItemViewRow
)
{
if
(
option
->
state
&
QStyle
::
State_Selected
)
{
drawSelectionBackground
(
painter
,
*
option
);
}
else
{
painter
->
save
();
painter
->
setPen
(
QColor
(
0
,
0
,
0
,
25
));
painter
->
drawLine
(
option
->
rect
.
bottomLeft
()
-
QPoint
(
0
,
1
),
option
->
rect
.
bottomRight
()
-
QPoint
(
0
,
1
));
painter
->
setPen
(
QColor
(
255
,
255
,
255
,
15
));
painter
->
drawLine
(
option
->
rect
.
bottomLeft
(),
option
->
rect
.
bottomRight
());
painter
->
restore
();
}
}
}
int
styleHint
(
StyleHint
hint
,
const
QStyleOption
*
option
=
0
,
const
QWidget
*
widget
=
0
,
QStyleHintReturn
*
returnData
=
0
)
const
{
if
(
hint
==
SH_ItemView_ShowDecorationSelected
)
return
0
;
else
return
QProxyStyle
::
styleHint
(
hint
,
option
,
widget
,
returnData
);
}
};
NavigatorTreeView
::
NavigatorTreeView
(
QWidget
*
parent
)
:
QTreeView
(
parent
)
{
TreeViewStyle
*
style
=
new
TreeViewStyle
;
setStyle
(
style
);
style
->
setParent
(
this
);
};
QSize
IconCheckboxItemDelegate
::
sizeHint
(
const
QStyleOptionViewItem
&
option
,
const
QModelIndex
&
index
)
const
{
Q_UNUSED
(
option
);
Q_UNUSED
(
index
);
return
QSize
(
15
,
2
1
);
return
QSize
(
15
,
2
6
);
}
void
IconCheckboxItemDelegate
::
paint
(
QPainter
*
painter
,
...
...
@@ -53,28 +106,28 @@ void IconCheckboxItemDelegate::paint(QPainter *painter,
{
painter
->
save
();
if
(
option
.
state
&
QStyle
::
State_Selected
)
painter
->
fillRect
(
option
.
rect
,
option
.
palette
.
highlight
());
drawSelectionBackground
(
painter
,
option
);
bool
isChecked
=
(
m_TreeModel
->
itemFromIndex
(
index
)
->
checkState
()
==
Qt
::
Checked
);
if
(
m_TreeModel
->
isNodeInvisible
(
index
))
painter
->
setOpacity
(
0.5
);
if
(
isChecked
)
painter
->
drawPixmap
(
option
.
rect
.
x
()
+
2
,
option
.
rect
.
y
()
+
1
,
onPix
);
painter
->
drawPixmap
(
option
.
rect
.
x
()
+
2
,
option
.
rect
.
y
()
+
6
,
onPix
);
else
painter
->
drawPixmap
(
option
.
rect
.
x
()
+
2
,
option
.
rect
.
y
()
+
1
,
offPix
);
painter
->
drawPixmap
(
option
.
rect
.
x
()
+
2
,
option
.
rect
.
y
()
+
6
,
offPix
);
painter
->
restore
();
}
void
IdItemDelegate
::
paint
(
QPainter
*
painter
,
const
QStyleOptionViewItem
&
option
,
const
QModelIndex
&
index
)
const
{
painter
->
save
();
if
(
option
.
state
&
QStyle
::
State_Selected
)
painter
->
fillRect
(
option
.
rect
,
option
.
palette
.
highlight
());
drawSelectionBackground
(
painter
,
option
);
painter
->
save
();
if
(
m_TreeModel
->
isNodeInvisible
(
index
))
painter
->
setOpacity
(
0.5
);
...
...
@@ -98,7 +151,7 @@ void IdItemDelegate::paint(QPainter *painter,
if
(
icon
.
isNull
())
icon
=
QIcon
(
":/ItemLibrary/images/default-icon.png"
);
}
QPixmap
pixmap
=
icon
.
pixmap
(
option
.
rect
.
width
(),
option
.
rect
.
height
()
-
4
);
QPixmap
pixmap
=
icon
.
pixmap
(
22
,
22
);
painter
->
drawPixmap
(
option
.
rect
.
x
()
+
5
,
option
.
rect
.
y
()
+
2
,
pixmap
);
QString
myString
=
node
.
id
();
...
...
@@ -119,18 +172,7 @@ void IdItemDelegate::paint(QPainter *painter,
}
}
painter
->
drawText
(
option
.
rect
.
bottomLeft
()
+
QPoint
(
8
+
pixmap
.
width
(),
-
4
),
myString
);
painter
->
restore
();
}
void
NavigatorTreeView
::
drawRow
(
QPainter
*
painter
,
const
QStyleOptionViewItem
&
options
,
const
QModelIndex
&
index
)
const
{
painter
->
save
();
QTreeView
::
drawRow
(
painter
,
options
,
index
);
painter
->
setPen
(
QColor
(
_separator_line_color_
));
painter
->
drawLine
(
options
.
rect
.
bottomLeft
(),
options
.
rect
.
bottomRight
());
painter
->
drawText
(
option
.
rect
.
bottomLeft
()
+
QPoint
(
8
+
pixmap
.
width
(),
-
8
),
myString
);
painter
->
restore
();
}
...
...
src/plugins/qmldesigner/components/navigator/navigatortreeview.h
View file @
42fab094
...
...
@@ -82,17 +82,9 @@ class IdItemDelegate : public QStyledItemDelegate
class
NavigatorTreeView
:
public
QTreeView
{
public:
NavigatorTreeView
(
QWidget
*
parent
=
0
)
:
QTreeView
(
parent
)
{
}
protected:
virtual
void
drawRow
(
QPainter
*
painter
,
const
QStyleOptionViewItem
&
options
,
const
QModelIndex
&
index
)
const
;
};
public:
NavigatorTreeView
(
QWidget
*
parent
=
0
);
};
}
#endif // NAVIGATORTREEVIEW_H
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment