@@ -0,0 +1,25 | |||
|
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |
|
2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | |
|
3 | <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="48" height="48" id="svg4289" sodipodi:version="0.32" inkscape:version="0.45" version="1.0" sodipodi:docbase="/home/dobey/Projects/gnome-icon-theme/scalable/actions" sodipodi:docname="list-add.svg" inkscape:export-filename="/home/andreas/project/gnome-icon-theme/scalable/actions/list-add.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" inkscape:output_extension="org.inkscape.output.svg.inkscape"> | |
|
4 | <defs id="defs4291"> | |
|
5 | <linearGradient inkscape:collect="always" id="linearGradient4622"> | |
|
6 | <stop style="stop-color:#b4b5b3;stop-opacity:1" offset="0" id="stop4624"/> | |
|
7 | <stop style="stop-color:#d8d9d7;stop-opacity:1" offset="1" id="stop4626"/> | |
|
8 | </linearGradient> | |
|
9 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient4622" id="linearGradient4320" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.810197,0,0,2.747234,1.562312,1.675085)" x1="8.6790628" y1="6.7354665" x2="8.7223368" y2="10.858153"/> | |
|
10 | </defs> | |
|
11 | <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="16" inkscape:cx="28.380765" inkscape:cy="26.638236" inkscape:current-layer="layer1" showgrid="false" inkscape:grid-bbox="true" inkscape:document-units="px" width="48px" height="48px" showguides="true" inkscape:guide-bbox="true" inkscape:window-width="1673" inkscape:window-height="968" inkscape:window-x="1" inkscape:window-y="27"/> | |
|
12 | <metadata id="metadata4294"> | |
|
13 | <rdf:RDF> | |
|
14 | <cc:Work rdf:about=""> | |
|
15 | <dc:format>image/svg+xml</dc:format> | |
|
16 | <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> | |
|
17 | </cc:Work> | |
|
18 | </rdf:RDF> | |
|
19 | </metadata> | |
|
20 | <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> | |
|
21 | <path style="opacity:1;fill:url(#linearGradient4320);fill-opacity:1;stroke:#555753;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 8.4999995,21.548779 L 8.4999995,26.514266 L 21.542175,26.514266 L 21.542175,38.455753 L 26.527841,38.500024 L 26.499007,26.514266 L 39.499998,26.469995 L 39.499998,21.548779 L 26.478909,21.548779 L 26.482175,8.542935 L 21.498141,8.5000092 L 21.496508,21.55147 L 8.4999995,21.548779 z " id="path4314" sodipodi:nodetypes="ccccccccccccc"/> | |
|
22 | <path style="opacity:0.2;fill:white;fill-opacity:1;stroke:none;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" d="M 9,22.072045 L 22.070199,22.072045 L 22.065556,9 L 26.002778,9.1688851 L 25.957932,22.156486 L 38.906989,22.072045 L 38.906989,24.048454 L 9,24.048454 L 9,22.072045 z " id="path4316" sodipodi:nodetypes="ccccccccc"/> | |
|
23 | <path style="opacity:0.4;fill:none;fill-opacity:1;stroke:white;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 9.5000012,22.518518 L 9.5000012,25.561981 L 22.540436,25.561981 L 22.540436,37.458666 L 25.525069,37.499986 L 25.498095,25.561981 L 38.500003,25.520661 L 38.500003,22.518518 L 25.567682,22.518518 L 25.570737,9.540046 L 22.499243,9.499982 L 22.497715,22.52103 L 9.5000012,22.518518 z " id="path5202" sodipodi:nodetypes="ccccccccccccc"/> | |
|
24 | </g> | |
|
25 | </svg> No newline at end of file |
@@ -0,0 +1,48 | |||
|
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |
|
2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | |
|
3 | <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="48" height="48" id="svg4289" sodipodi:version="0.32" inkscape:version="0.45" version="1.0" sodipodi:docbase="/home/dobey/Projects/gnome-icon-theme/scalable/actions" sodipodi:docname="list-remove.svg" inkscape:export-filename="/home/andreas/project/gnome-icon-theme/22x22/actions/list-add.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" inkscape:output_extension="org.inkscape.output.svg.inkscape"> | |
|
4 | <defs id="defs4291"> | |
|
5 | <linearGradient inkscape:collect="always" id="linearGradient4622"> | |
|
6 | <stop style="stop-color:#b4b5b3;stop-opacity:1" offset="0" id="stop4624"/> | |
|
7 | <stop style="stop-color:#d8d9d7;stop-opacity:1" offset="1" id="stop4626"/> | |
|
8 | </linearGradient> | |
|
9 | <linearGradient inkscape:collect="always" xlink:href="#linearGradient4622" id="linearGradient4320" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.810197,0,0,2.747234,1.562312,1.675085)" x1="8.6790628" y1="6.7354665" x2="8.7223368" y2="10.858153"/> | |
|
10 | </defs> | |
|
11 | <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="16" inkscape:cx="28.380765" inkscape:cy="26.606986" inkscape:current-layer="layer1" showgrid="false" inkscape:grid-bbox="true" inkscape:document-units="px" width="48px" height="48px" showguides="true" inkscape:guide-bbox="true" inkscape:window-width="1673" inkscape:window-height="968" inkscape:window-x="1" inkscape:window-y="27"/> | |
|
12 | <metadata id="metadata4294"> | |
|
13 | <rdf:RDF> | |
|
14 | <cc:Work rdf:about=""> | |
|
15 | <dc:format>image/svg+xml</dc:format> | |
|
16 | <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> | |
|
17 | <cc:license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/"/> | |
|
18 | <dc:title>List remove</dc:title> | |
|
19 | <dc:date>August 2006</dc:date> | |
|
20 | <dc:creator> | |
|
21 | <cc:Agent> | |
|
22 | <dc:title>Andreas Nilsson</dc:title> | |
|
23 | </cc:Agent> | |
|
24 | </dc:creator> | |
|
25 | <dc:source>http://www.gnome.org</dc:source> | |
|
26 | <dc:subject> | |
|
27 | <rdf:Bag> | |
|
28 | <rdf:li>remove</rdf:li> | |
|
29 | <rdf:li>minus</rdf:li> | |
|
30 | </rdf:Bag> | |
|
31 | </dc:subject> | |
|
32 | </cc:Work> | |
|
33 | <cc:License rdf:about="http://creativecommons.org/licenses/GPL/2.0/"> | |
|
34 | <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/> | |
|
35 | <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/> | |
|
36 | <cc:requires rdf:resource="http://web.resource.org/cc/Notice"/> | |
|
37 | <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/> | |
|
38 | <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike"/> | |
|
39 | <cc:requires rdf:resource="http://web.resource.org/cc/SourceCode"/> | |
|
40 | </cc:License> | |
|
41 | </rdf:RDF> | |
|
42 | </metadata> | |
|
43 | <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer"> | |
|
44 | <path style="opacity:1;fill:url(#linearGradient4320);fill-opacity:1;stroke:#555753;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 8.4999995,21.548779 L 8.4999995,26.514266 L 39.499998,26.469995 L 39.499998,21.548779 L 8.4999995,21.548779 z " id="path4314" sodipodi:nodetypes="ccccc"/> | |
|
45 | <path style="opacity:0.2;fill:white;fill-opacity:1;stroke:none;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" d="M 9,22.072045 L 38.906989,22.072045 L 38.906989,24.048454 L 9,24.048454 L 9,22.072045 z " id="path4316" sodipodi:nodetypes="ccccc"/> | |
|
46 | <path style="opacity:0.4;fill:none;fill-opacity:1;stroke:white;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 9.5000012,22.518518 L 9.5000012,25.561981 L 38.500003,25.520661 L 38.500003,22.518518 L 9.5000012,22.518518 z " id="path5202" sodipodi:nodetypes="ccccc"/> | |
|
47 | </g> | |
|
48 | </svg> No newline at end of file |
@@ -0,0 +1,6 | |||
|
1 | <RCC> | |
|
2 | <qresource prefix="/img"> | |
|
3 | <file>Gnome-list-add.svg</file> | |
|
4 | <file>Gnome-list-remove.svg</file> | |
|
5 | </qresource> | |
|
6 | </RCC> |
@@ -0,0 +1,102 | |||
|
1 | #include "collapsableperipheralwidget.h" | |
|
2 | #include "ui_collapsableperipheralwidget.h" | |
|
3 | #include <QCursor> | |
|
4 | ||
|
5 | ||
|
6 | CollapsablePeripheralWidget::CollapsablePeripheralWidget(peripheralWidget *periph, QWidget *parent) : | |
|
7 | QWidget(parent), | |
|
8 | ui(new Ui::CollapsablePeripheralWidget) | |
|
9 | { | |
|
10 | m_periph=0; | |
|
11 | m_collapsed = true; | |
|
12 | ui->setupUi(this); | |
|
13 | tthidetmr.setSingleShot(true); | |
|
14 | tthidetmr.setInterval(200); | |
|
15 | connect(this->ui->collapseQpb,SIGNAL(clicked()),this,SLOT(collapse())); | |
|
16 | connect(this->ui->periphName,SIGNAL(clicked()),this,SLOT(collapse())); | |
|
17 | connect(this->ui->periphName,SIGNAL(enter()),this,SLOT(showTooltip())); | |
|
18 | connect(this->ui->periphName,SIGNAL(leave()),&this->tthidetmr,SLOT(start())); | |
|
19 | connect(&this->tthidetmr,SIGNAL(timeout()),this,SLOT(hideTooltip())); | |
|
20 | setPeripheralWidget(periph); | |
|
21 | } | |
|
22 | ||
|
23 | CollapsablePeripheralWidget::~CollapsablePeripheralWidget() | |
|
24 | { | |
|
25 | delete ui; | |
|
26 | } | |
|
27 | ||
|
28 | void CollapsablePeripheralWidget::setPeripheralWidget(peripheralWidget *periph) | |
|
29 | { | |
|
30 | if(periph) | |
|
31 | { | |
|
32 | this->m_periph = periph; | |
|
33 | this->ui->gridLayout->addWidget(periph,1,0,1,-1); | |
|
34 | this->ui->periphName->setText(periph->name()); | |
|
35 | this->m_periph->setVisible(false); | |
|
36 | } | |
|
37 | } | |
|
38 | ||
|
39 | peripheralWidget *CollapsablePeripheralWidget::getPeripheralWidget() | |
|
40 | { | |
|
41 | return m_periph; | |
|
42 | } | |
|
43 | ||
|
44 | void CollapsablePeripheralWidget::changeEvent(QEvent *e) | |
|
45 | { | |
|
46 | QWidget::changeEvent(e); | |
|
47 | switch (e->type()) { | |
|
48 | case QEvent::LanguageChange: | |
|
49 | ui->retranslateUi(this); | |
|
50 | break; | |
|
51 | default: | |
|
52 | break; | |
|
53 | } | |
|
54 | } | |
|
55 | ||
|
56 | void CollapsablePeripheralWidget::collapse() | |
|
57 | { | |
|
58 | this->m_periph->setVisible(m_collapsed); | |
|
59 | if(this->m_collapsed) | |
|
60 | { | |
|
61 | this->ui->collapseQpb->setIcon(QIcon(":/img/Gnome-list-remove.svg")); | |
|
62 | } | |
|
63 | else | |
|
64 | { | |
|
65 | this->ui->collapseQpb->setIcon(QIcon(":/img/Gnome-list-add.svg")); | |
|
66 | } | |
|
67 | m_collapsed = !m_collapsed; | |
|
68 | } | |
|
69 | ||
|
70 | void CollapsablePeripheralWidget::setName(const QString &name) | |
|
71 | { | |
|
72 | if(m_periph) | |
|
73 | { | |
|
74 | this->ui->periphName->setText(name); | |
|
75 | } | |
|
76 | } | |
|
77 | ||
|
78 | void CollapsablePeripheralWidget::showTooltip() | |
|
79 | { | |
|
80 | if(!m_periph->isVisible() && m_collapsed) | |
|
81 | { | |
|
82 | m_periph->show(); | |
|
83 | } | |
|
84 | } | |
|
85 | ||
|
86 | void CollapsablePeripheralWidget::hideTooltip() | |
|
87 | { | |
|
88 | if(m_periph->isVisible() && m_collapsed) | |
|
89 | { | |
|
90 | QRect temprect = this->geometry(); | |
|
91 | temprect.moveTo(this->mapToGlobal(mapFromParent(QPoint(this->x(),this->y())))); | |
|
92 | if(temprect.contains(QCursor::pos())) | |
|
93 | { | |
|
94 | this->tthidetmr.start(); | |
|
95 | } | |
|
96 | else | |
|
97 | { | |
|
98 | m_periph->hide(); | |
|
99 | } | |
|
100 | } | |
|
101 | } | |
|
102 |
@@ -0,0 +1,56 | |||
|
1 | #ifndef COLLAPSABLEPERIPHERALWIDGET_H | |
|
2 | #define COLLAPSABLEPERIPHERALWIDGET_H | |
|
3 | ||
|
4 | #include <QWidget> | |
|
5 | #include <peripheralwidget.h> | |
|
6 | #include <QTimer> | |
|
7 | ||
|
8 | namespace Ui { | |
|
9 | class CollapsablePeripheralWidget; | |
|
10 | } | |
|
11 | ||
|
12 | class QRegToolTipLabel : public QLabel | |
|
13 | { | |
|
14 | Q_OBJECT | |
|
15 | public: | |
|
16 | QRegToolTipLabel(QWidget * parent = 0, Qt::WindowFlags f = 0):QLabel(parent,f){} | |
|
17 | QRegToolTipLabel(const QString & text, QWidget * parent = 0, Qt::WindowFlags f = 0):QLabel(text,parent,f){} | |
|
18 | signals: | |
|
19 | void enter(); | |
|
20 | void leave(); | |
|
21 | void clicked(); | |
|
22 | protected: | |
|
23 | void enterEvent(QEvent* event){emit enter();QLabel::enterEvent(event);} | |
|
24 | void leaveEvent(QEvent* event){emit leave();QLabel::leaveEvent(event);} | |
|
25 | void mousePressEvent(QMouseEvent * event){emit clicked();QLabel::mousePressEvent(event);} | |
|
26 | }; | |
|
27 | ||
|
28 | class CollapsablePeripheralWidget : public QWidget | |
|
29 | { | |
|
30 | Q_OBJECT | |
|
31 | ||
|
32 | public: | |
|
33 | explicit CollapsablePeripheralWidget(peripheralWidget* periph,QWidget *parent = 0); | |
|
34 | ~CollapsablePeripheralWidget(); | |
|
35 | void setPeripheralWidget(peripheralWidget* periph); | |
|
36 | peripheralWidget* getPeripheralWidget(); | |
|
37 | protected: | |
|
38 | void changeEvent(QEvent *e); | |
|
39 | ||
|
40 | public slots: | |
|
41 | void collapse(); | |
|
42 | void setName(const QString& name); | |
|
43 | void showTooltip(); | |
|
44 | void hideTooltip(); | |
|
45 | signals: | |
|
46 | void clicked(peripheralWidget* sender); | |
|
47 | void upSig(peripheralWidget* sender,int cursorIndex); | |
|
48 | void downSig(peripheralWidget* sender,int cursorIndex); | |
|
49 | private: | |
|
50 | Ui::CollapsablePeripheralWidget *ui; | |
|
51 | peripheralWidget* m_periph; | |
|
52 | bool m_collapsed; | |
|
53 | QTimer tthidetmr; | |
|
54 | }; | |
|
55 | ||
|
56 | #endif // COLLAPSABLEPERIPHERALWIDGET_H |
@@ -0,0 +1,89 | |||
|
1 | <?xml version="1.0" encoding="UTF-8"?> | |
|
2 | <ui version="4.0"> | |
|
3 | <class>CollapsablePeripheralWidget</class> | |
|
4 | <widget class="QWidget" name="CollapsablePeripheralWidget"> | |
|
5 | <property name="geometry"> | |
|
6 | <rect> | |
|
7 | <x>0</x> | |
|
8 | <y>0</y> | |
|
9 | <width>845</width> | |
|
10 | <height>249</height> | |
|
11 | </rect> | |
|
12 | </property> | |
|
13 | <property name="sizePolicy"> | |
|
14 | <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> | |
|
15 | <horstretch>0</horstretch> | |
|
16 | <verstretch>0</verstretch> | |
|
17 | </sizepolicy> | |
|
18 | </property> | |
|
19 | <property name="windowTitle"> | |
|
20 | <string>Form</string> | |
|
21 | </property> | |
|
22 | <property name="styleSheet"> | |
|
23 | <string notr="true">QWidget#CollapsablePeripheralWidget { | |
|
24 | border: 1px solid gray; | |
|
25 | border-radius: 9px; | |
|
26 | }</string> | |
|
27 | </property> | |
|
28 | <layout class="QGridLayout" name="gridLayout"> | |
|
29 | <item row="0" column="2"> | |
|
30 | <widget class="QPushButton" name="collapseQpb"> | |
|
31 | <property name="sizePolicy"> | |
|
32 | <sizepolicy hsizetype="Maximum" vsizetype="Fixed"> | |
|
33 | <horstretch>0</horstretch> | |
|
34 | <verstretch>0</verstretch> | |
|
35 | </sizepolicy> | |
|
36 | </property> | |
|
37 | <property name="text"> | |
|
38 | <string/> | |
|
39 | </property> | |
|
40 | <property name="icon"> | |
|
41 | <iconset resource="../ressources/peripheralwidget.qrc"> | |
|
42 | <normaloff>:/img/Gnome-list-add.svg</normaloff> | |
|
43 | <normalon>:/img/Gnome-list-remove.svg</normalon>:/img/Gnome-list-add.svg</iconset> | |
|
44 | </property> | |
|
45 | <property name="flat"> | |
|
46 | <bool>true</bool> | |
|
47 | </property> | |
|
48 | </widget> | |
|
49 | </item> | |
|
50 | <item row="0" column="0"> | |
|
51 | <widget class="QRegToolTipLabel" name="periphName"> | |
|
52 | <property name="sizePolicy"> | |
|
53 | <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> | |
|
54 | <horstretch>0</horstretch> | |
|
55 | <verstretch>0</verstretch> | |
|
56 | </sizepolicy> | |
|
57 | </property> | |
|
58 | <property name="text"> | |
|
59 | <string>PeriphName</string> | |
|
60 | </property> | |
|
61 | </widget> | |
|
62 | </item> | |
|
63 | <item row="0" column="1"> | |
|
64 | <spacer name="horizontalSpacer"> | |
|
65 | <property name="orientation"> | |
|
66 | <enum>Qt::Horizontal</enum> | |
|
67 | </property> | |
|
68 | <property name="sizeHint" stdset="0"> | |
|
69 | <size> | |
|
70 | <width>40</width> | |
|
71 | <height>20</height> | |
|
72 | </size> | |
|
73 | </property> | |
|
74 | </spacer> | |
|
75 | </item> | |
|
76 | </layout> | |
|
77 | </widget> | |
|
78 | <customwidgets> | |
|
79 | <customwidget> | |
|
80 | <class>QRegToolTipLabel</class> | |
|
81 | <extends>QLabel</extends> | |
|
82 | <header location="global">collapsableperipheralwidget.h</header> | |
|
83 | </customwidget> | |
|
84 | </customwidgets> | |
|
85 | <resources> | |
|
86 | <include location="../ressources/peripheralwidget.qrc"/> | |
|
87 | </resources> | |
|
88 | <connections/> | |
|
89 | </ui> |
@@ -0,0 +1,107 | |||
|
1 | #include "socregsviewernew.h" | |
|
2 | #include "ui_socregsviewernew.h" | |
|
3 | ||
|
4 | SocRegsViewerNew::SocRegsViewerNew(const QString &name,QWidget *parent) : | |
|
5 | QWidget(parent), | |
|
6 | ui(new Ui::SocRegsViewerNew) | |
|
7 | { | |
|
8 | ui->setupUi(this); | |
|
9 | this->ui->socName->setText(name); | |
|
10 | } | |
|
11 | ||
|
12 | SocRegsViewerNew::~SocRegsViewerNew() | |
|
13 | { | |
|
14 | delete ui; | |
|
15 | } | |
|
16 | ||
|
17 | peripheralWidget *SocRegsViewerNew::peripheral(int index) | |
|
18 | { | |
|
19 | if(index>=0 && index<p_peripherals.count()) | |
|
20 | { | |
|
21 | return p_peripherals.at(index); | |
|
22 | } | |
|
23 | return NULL; | |
|
24 | } | |
|
25 | ||
|
26 | void SocRegsViewerNew::addPeripheral(peripheralWidget *peripheral) | |
|
27 | { | |
|
28 | if(peripheral!=NULL) | |
|
29 | { | |
|
30 | CollapsablePeripheralWidget* cperiph = new CollapsablePeripheralWidget(peripheral); | |
|
31 | cperiph->setPeripheralWidget(peripheral); | |
|
32 | p_peripherals.append(peripheral); | |
|
33 | p_CPeripherals.append(cperiph); | |
|
34 | this->ui->scrollAreaWidgetContents->layout()->addWidget(cperiph); | |
|
35 | connect(cperiph,SIGNAL(clicked(peripheralWidget*)),this,SLOT(periphClicked(peripheralWidget*))); | |
|
36 | connect(cperiph,SIGNAL(upSig(peripheralWidget*,int)),this,SLOT(periphUp(peripheralWidget*,int))); | |
|
37 | connect(cperiph,SIGNAL(downSig(peripheralWidget*,int)),this,SLOT(periphDown(peripheralWidget*,int))); | |
|
38 | } | |
|
39 | } | |
|
40 | ||
|
41 | void SocRegsViewerNew::periphClicked(peripheralWidget *sender) | |
|
42 | { | |
|
43 | peripheralWidget * item; | |
|
44 | if(sender!=NULL) | |
|
45 | { | |
|
46 | for(int i=0;i<p_peripherals.count();i++) | |
|
47 | { | |
|
48 | item = p_peripherals.at(i); | |
|
49 | if(item!=sender) | |
|
50 | { | |
|
51 | item->leave(); | |
|
52 | } | |
|
53 | } | |
|
54 | } | |
|
55 | } | |
|
56 | ||
|
57 | void SocRegsViewerNew::periphUp(peripheralWidget *sender, int cursorIndex) | |
|
58 | { | |
|
59 | int index,senderIndex; | |
|
60 | if(sender!=NULL) | |
|
61 | { | |
|
62 | index =senderIndex= p_peripherals.indexOf(sender); | |
|
63 | while(index!=-1 && index!=0) | |
|
64 | { | |
|
65 | if(p_peripherals.at(index-1)->count()>0) | |
|
66 | { | |
|
67 | p_peripherals.at(senderIndex)->leave(); | |
|
68 | p_peripherals.at(index-1)->enter(cursorIndex,false); | |
|
69 | // ensureWidgetVisible(p_peripherals.at(index-1)); | |
|
70 | break; | |
|
71 | } | |
|
72 | index--; | |
|
73 | } | |
|
74 | } | |
|
75 | } | |
|
76 | ||
|
77 | void SocRegsViewerNew::periphDown(peripheralWidget *sender, int cursorIndex) | |
|
78 | { | |
|
79 | int index,senderIndex; | |
|
80 | if(sender!=NULL) | |
|
81 | { | |
|
82 | index=senderIndex= p_peripherals.indexOf(sender); | |
|
83 | while((index!=-1) && (index<(p_peripherals.count()-1))) | |
|
84 | { | |
|
85 | if(p_peripherals.at(index+1)->count()>0) | |
|
86 | { | |
|
87 | p_peripherals.at(senderIndex)->leave(); | |
|
88 | p_peripherals.at(index+1)->enter(cursorIndex); | |
|
89 | // ensureWidgetVisible(p_peripherals.at(index+1)); | |
|
90 | break; | |
|
91 | } | |
|
92 | index++; | |
|
93 | } | |
|
94 | } | |
|
95 | } | |
|
96 | ||
|
97 | void SocRegsViewerNew::changeEvent(QEvent *e) | |
|
98 | { | |
|
99 | QWidget::changeEvent(e); | |
|
100 | switch (e->type()) { | |
|
101 | case QEvent::LanguageChange: | |
|
102 | ui->retranslateUi(this); | |
|
103 | break; | |
|
104 | default: | |
|
105 | break; | |
|
106 | } | |
|
107 | } |
@@ -0,0 +1,38 | |||
|
1 | #ifndef SOCREGSVIEWERNEW_H | |
|
2 | #define SOCREGSVIEWERNEW_H | |
|
3 | ||
|
4 | #include <QWidget> | |
|
5 | #include <peripheralwidget.h> | |
|
6 | #include <collapsableperipheralwidget.h> | |
|
7 | ||
|
8 | namespace Ui { | |
|
9 | class SocRegsViewerNew; | |
|
10 | } | |
|
11 | ||
|
12 | class SocRegsViewerNew : public QWidget | |
|
13 | { | |
|
14 | Q_OBJECT | |
|
15 | ||
|
16 | public: | |
|
17 | explicit SocRegsViewerNew(const QString &name, QWidget *parent = 0); | |
|
18 | ~SocRegsViewerNew(); | |
|
19 | ||
|
20 | peripheralWidget *peripheral(int index); | |
|
21 | ||
|
22 | signals: | |
|
23 | ||
|
24 | public slots: | |
|
25 | void addPeripheral(peripheralWidget* peripheral); | |
|
26 | void periphClicked(peripheralWidget* sender); | |
|
27 | void periphUp(peripheralWidget* sender,int cursorIndex); | |
|
28 | void periphDown(peripheralWidget* sender,int cursorIndex); | |
|
29 | protected: | |
|
30 | void changeEvent(QEvent *e); | |
|
31 | ||
|
32 | private: | |
|
33 | Ui::SocRegsViewerNew *ui; | |
|
34 | QList<peripheralWidget*> p_peripherals; | |
|
35 | QList<CollapsablePeripheralWidget*> p_CPeripherals; | |
|
36 | }; | |
|
37 | ||
|
38 | #endif // SOCREGSVIEWERNEW_H |
@@ -0,0 +1,60 | |||
|
1 | <?xml version="1.0" encoding="UTF-8"?> | |
|
2 | <ui version="4.0"> | |
|
3 | <class>SocRegsViewerNew</class> | |
|
4 | <widget class="QWidget" name="SocRegsViewerNew"> | |
|
5 | <property name="geometry"> | |
|
6 | <rect> | |
|
7 | <x>0</x> | |
|
8 | <y>0</y> | |
|
9 | <width>713</width> | |
|
10 | <height>357</height> | |
|
11 | </rect> | |
|
12 | </property> | |
|
13 | <property name="windowTitle"> | |
|
14 | <string>Form</string> | |
|
15 | </property> | |
|
16 | <layout class="QGridLayout" name="gridLayout"> | |
|
17 | <item row="0" column="1"> | |
|
18 | <widget class="QComboBox" name="rootPluginCmbBx"/> | |
|
19 | </item> | |
|
20 | <item row="2" column="0" colspan="2"> | |
|
21 | <widget class="QScrollArea" name="PeriphList"> | |
|
22 | <property name="widgetResizable"> | |
|
23 | <bool>true</bool> | |
|
24 | </property> | |
|
25 | <widget class="QWidget" name="scrollAreaWidgetContents"> | |
|
26 | <property name="geometry"> | |
|
27 | <rect> | |
|
28 | <x>0</x> | |
|
29 | <y>0</y> | |
|
30 | <width>693</width> | |
|
31 | <height>302</height> | |
|
32 | </rect> | |
|
33 | </property> | |
|
34 | <layout class="QVBoxLayout" name="verticalLayout"> | |
|
35 | <item> | |
|
36 | <widget class="QLabel" name="socName"> | |
|
37 | <property name="text"> | |
|
38 | <string>SocName</string> | |
|
39 | </property> | |
|
40 | <property name="alignment"> | |
|
41 | <set>Qt::AlignCenter</set> | |
|
42 | </property> | |
|
43 | </widget> | |
|
44 | </item> | |
|
45 | </layout> | |
|
46 | </widget> | |
|
47 | </widget> | |
|
48 | </item> | |
|
49 | <item row="0" column="0"> | |
|
50 | <widget class="QLabel" name="label"> | |
|
51 | <property name="text"> | |
|
52 | <string>Root Plugin</string> | |
|
53 | </property> | |
|
54 | </widget> | |
|
55 | </item> | |
|
56 | </layout> | |
|
57 | </widget> | |
|
58 | <resources/> | |
|
59 | <connections/> | |
|
60 | </ui> |
@@ -2,13 +2,22 | |||
|
2 | 2 | PERIPHERAL_WDGT_SOURCES =\ |
|
3 | 3 | src/peripheralwidget.cpp \ |
|
4 | 4 | src/registerwidget.cpp \ |
|
5 | src/socregsviewer.cpp | |
|
6 | ||
|
5 | src/socregsviewer.cpp \ | |
|
6 | src/socregsviewernew.cpp \ | |
|
7 | src/collapsableperipheralwidget.cpp | |
|
7 | 8 | |
|
8 | 9 | |
|
9 | 10 | PERIPHERAL_WDGT_HEADERS += \ |
|
10 | 11 | src/peripheralwidget.h \ |
|
11 | 12 | src/registerwidget.h \ |
|
12 | src/socregsviewer.h | |
|
13 | src/socregsviewer.h \ | |
|
14 | src/socregsviewernew.h \ | |
|
15 | src/collapsableperipheralwidget.h | |
|
13 | 16 | |
|
17 | PERIPHERAL_WDGT_FORMS += \ | |
|
18 | src/socregsviewernew.ui \ | |
|
19 | src/collapsableperipheralwidget.ui | |
|
14 | 20 | |
|
21 | PERIPHERAL_WDGT_RESOURCES += \ | |
|
22 | $$PWD/ressources/peripheralwidget.qrc | |
|
23 |
@@ -21,7 +21,7 | |||
|
21 | 21 | ----------------------------------------------------------------------------*/ |
|
22 | 22 | #include "peripheralwidget.h" |
|
23 | 23 | |
|
24 | peripheralWidget::peripheralWidget(const QString &name, qint32 baseAddress, QWidget *parent) : | |
|
24 | peripheralWidget::peripheralWidget(const QString &name, qint32 baseAddress, readWriteProxy *proxy, QWidget *parent) : | |
|
25 | 25 | QWidget(parent) |
|
26 | 26 | { |
|
27 | 27 | p_name = name; |
@@ -29,6 +29,7 peripheralWidget::peripheralWidget(const | |||
|
29 | 29 | p_timer->setInterval(500); |
|
30 | 30 | p_baseAddress = baseAddress; |
|
31 | 31 | p_header = p_name + QString(" @0x%1").arg((uint)p_baseAddress,8,16); |
|
32 | p_proxy = proxy; | |
|
32 | 33 | setAttribute(Qt::WA_AlwaysShowToolTips); |
|
33 | 34 | setMouseTracking(true); |
|
34 | 35 | setFocusPolicy(Qt::StrongFocus); |
@@ -36,6 +37,8 peripheralWidget::peripheralWidget(const | |||
|
36 | 37 | registersWdgts.clear(); |
|
37 | 38 | connect(p_timer,SIGNAL(timeout()),this,SLOT(blinkCursor())); |
|
38 | 39 | setFont(QFont("Utopia", 14,QFont::Bold)); |
|
40 | setMinimumSize(400,100); | |
|
41 | updateGeometry(); | |
|
39 | 42 | } |
|
40 | 43 | |
|
41 | 44 | int peripheralWidget::count() |
@@ -43,6 +46,11 int peripheralWidget::count() | |||
|
43 | 46 | return registersWdgts.count(); |
|
44 | 47 | } |
|
45 | 48 | |
|
49 | const QString &peripheralWidget::name() | |
|
50 | { | |
|
51 | return this->p_name; | |
|
52 | } | |
|
53 | ||
|
46 | 54 | void peripheralWidget::blinkCursor() |
|
47 | 55 | { |
|
48 | 56 | if(selectedReg!=-1) |
@@ -87,6 +95,11 void peripheralWidget::enter(int cursorI | |||
|
87 | 95 | } |
|
88 | 96 | } |
|
89 | 97 | |
|
98 | void peripheralWidget::setReadWriteProxy(peripheralWidget::readWriteProxy *proxy) | |
|
99 | { | |
|
100 | this->p_proxy = proxy; | |
|
101 | } | |
|
102 | ||
|
90 | 103 | void peripheralWidget::mousePressEvent(QMouseEvent *event) |
|
91 | 104 | { |
|
92 | 105 | p_timer->stop(); |
@@ -129,7 +142,6 void peripheralWidget::mouseMoveEvent(QM | |||
|
129 | 142 | { |
|
130 | 143 | match = true; |
|
131 | 144 | int bitfieldIndex=registersWdgts.at(i)->cursorIndex(event->pos().x()); |
|
132 | ||
|
133 | 145 | QString toolTipText ="<b>< font color='Black'>"+registersWdgts.at(i)->bitFieldName(bitfieldIndex) +"</b><br />"; |
|
134 | 146 | toolTipText+= "Hexadecimal=<b>< font color='Blue'>"+registersWdgts.at(i)->bitFieldToHex(bitfieldIndex)+"</b>"; |
|
135 | 147 | toolTipText+= " Decimal=<b>< font color='BlueViolet'>"+registersWdgts.at(i)->bitFieldToDec(bitfieldIndex)+"</b><br />"; |
@@ -160,13 +172,13 void peripheralWidget::keyPressEvent(QKe | |||
|
160 | 172 | registersWdgts.at(selectedReg)->clear(registersWdgts.at(selectedReg)->cursorIndex()); |
|
161 | 173 | break; |
|
162 | 174 | case Qt::Key_W: |
|
163 |
|
|
|
175 | p_proxy->writeReg(registersWdgts.at(selectedReg)->address(),registersWdgts.at(selectedReg)->value()); | |
|
164 | 176 | registersWdgts.at(selectedReg)->setUpdated(true); |
|
165 | 177 | registersWdgts.at(selectedReg)->repaint(); |
|
166 | 178 | break; |
|
167 | 179 | case Qt::Key_R: |
|
168 | 180 | qint32 value; |
|
169 |
value = |
|
|
181 | value = p_proxy->readReg(registersWdgts.at(selectedReg)->address()); | |
|
170 | 182 | registersWdgts.at(selectedReg)->setValue(value); |
|
171 | 183 | break; |
|
172 | 184 | default: |
@@ -200,13 +212,13 void peripheralWidget::keyPressEvent(QKe | |||
|
200 | 212 | down(); |
|
201 | 213 | break; |
|
202 | 214 | case Qt::Key_W: |
|
203 |
|
|
|
215 | p_proxy->writeReg(registersWdgts.at(selectedReg)->address(),registersWdgts.at(selectedReg)->value()); | |
|
204 | 216 | registersWdgts.at(selectedReg)->setUpdated(true); |
|
205 | 217 | registersWdgts.at(selectedReg)->repaint(); |
|
206 | 218 | break; |
|
207 | 219 | case Qt::Key_R: |
|
208 | 220 | qint32 value; |
|
209 |
value = |
|
|
221 | value = p_proxy->readReg(registersWdgts.at(selectedReg)->address()); | |
|
210 | 222 | registersWdgts.at(selectedReg)->setValue(value); |
|
211 | 223 | break; |
|
212 | 224 | default: |
@@ -236,7 +248,9 void peripheralWidget::paintEvent(QPaint | |||
|
236 | 248 | } |
|
237 | 249 | if(registersWdgts.count()>0) |
|
238 | 250 | { |
|
239 |
|
|
|
251 | int w=registersWdgts.first()->boundingRect().width(); | |
|
252 | int h=offset.y(); | |
|
253 | setMinimumSize(w,h); | |
|
240 | 254 | } |
|
241 | 255 | updateGeometry(); |
|
242 | 256 |
@@ -38,11 +38,20 | |||
|
38 | 38 | * TODO ADD an outdated marker |
|
39 | 39 | * Show outdated registers with a different color for example |
|
40 | 40 | */ |
|
41 | ||
|
41 | 42 | class SOCEXPLORER_SDK_EXPORT peripheralWidget : public QWidget |
|
42 | 43 | { |
|
43 | 44 | Q_OBJECT |
|
44 | 45 | public: |
|
45 | explicit peripheralWidget(const QString& name,qint32 baseAddress, QWidget *parent = 0); | |
|
46 | class readWriteProxy | |
|
47 | { | |
|
48 | public: | |
|
49 | readWriteProxy() {} | |
|
50 | virtual void writeReg(qint32 address,qint32 value)=0; | |
|
51 | virtual qint32 readReg(qint32 address)=0; | |
|
52 | }; | |
|
53 | ||
|
54 | explicit peripheralWidget(const QString& name,qint32 baseAddress,readWriteProxy* proxy=0, QWidget *parent = 0); | |
|
46 | 55 | registerWidget* registerAt(int index) |
|
47 | 56 | { |
|
48 | 57 | if(index>=0 && index<registersWdgts.count()) |
@@ -50,6 +59,7 public: | |||
|
50 | 59 | return NULL; |
|
51 | 60 | } |
|
52 | 61 | int count(); |
|
62 | const QString& name(); | |
|
53 | 63 | signals: |
|
54 | 64 | void writeRegSig(qint32 address,qint32 value); |
|
55 | 65 | qint32 readRegSig(qint32 address); |
@@ -61,6 +71,7 public slots: | |||
|
61 | 71 | void addRegister(const QString& name,qint32 address); |
|
62 | 72 | void leave(); |
|
63 | 73 | void enter(int cursorIndex,bool fromTop=true); |
|
74 | void setReadWriteProxy(readWriteProxy* proxy); | |
|
64 | 75 | protected: |
|
65 | 76 | void mousePressEvent(QMouseEvent *event); |
|
66 | 77 | void mouseMoveEvent(QMouseEvent *event); |
@@ -77,6 +88,7 private: | |||
|
77 | 88 | QList<registerWidget*> registersWdgts; |
|
78 | 89 | int selectedReg; |
|
79 | 90 | QTimer* p_timer; |
|
91 | readWriteProxy* p_proxy; | |
|
80 | 92 | |
|
81 | 93 | }; |
|
82 | 94 |
General Comments 0
You need to be logged in to leave comments.
Login now