From ef0299c62ee31d0c6cb3bc755457bf37647123ba Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Sat, 9 Aug 2014 18:39:45 +0200 Subject: qeditor: add soc panel, to display soc information Change-Id: Ie442b82d96fb150c7466f1a274240f9b111fd91e --- utils/regtools/qeditor/regtab.cpp | 43 ++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) (limited to 'utils/regtools/qeditor/regtab.cpp') diff --git a/utils/regtools/qeditor/regtab.cpp b/utils/regtools/qeditor/regtab.cpp index a335475e48..9fba9e9cb9 100644 --- a/utils/regtools/qeditor/regtab.cpp +++ b/utils/regtools/qeditor/regtab.cpp @@ -16,7 +16,19 @@ namespace enum { RegTreeDevType = QTreeWidgetItem::UserType, - RegTreeRegType + RegTreeRegType, + RegTreeSocType +}; + +class SocTreeItem : public QTreeWidgetItem +{ +public: + SocTreeItem(const QString& string, const SocRef& ref) + :QTreeWidgetItem(QStringList(string), RegTreeSocType), m_ref(ref) {} + + const SocRef& GetRef() { return m_ref; } +private: + SocRef m_ref; }; class DevTreeItem : public QTreeWidgetItem @@ -293,6 +305,11 @@ void RegTab::OnRegItemClicked(QTreeWidgetItem *current, int col) Q_UNUSED(col); if(current == 0) return; + if(current->type() == RegTreeSocType) + { + SocTreeItem *item = dynamic_cast< SocTreeItem * >(current); + DisplaySoc(item->GetRef()); + } if(current->type() == RegTreeRegType) { RegTreeItem *item = dynamic_cast< RegTreeItem * >(current); @@ -329,6 +346,11 @@ void RegTab::DisplayDevice(const SocDevRef& ref) SetPanel(new DevDisplayPanel(this, ref)); } +void RegTab::DisplaySoc(const SocRef& ref) +{ + SetPanel(new SocDisplayPanel(this, ref)); +} + void RegTab::SetPanel(RegTabPanel *panel) { delete m_right_content; @@ -410,21 +432,32 @@ void RegTab::FillDevSubTree(QTreeWidgetItem *_item) } } -void RegTab::FillRegTree() +void RegTab::FillSocSubTree(QTreeWidgetItem *_item) { - for(size_t i = 0; i < m_cur_soc.GetSoc().dev.size(); i++) + SocTreeItem *item = dynamic_cast< SocTreeItem* >(_item); + const soc_t& soc = item->GetRef().GetSoc(); + for(size_t i = 0; i < soc.dev.size(); i++) { - const soc_dev_t& dev = m_cur_soc.GetSoc().dev[i]; + const soc_dev_t& dev = soc.dev[i]; for(size_t j = 0; j < dev.addr.size(); j++) { DevTreeItem *dev_item = new DevTreeItem(dev.addr[j].name.c_str(), SocDevRef(m_cur_soc, i, j)); FillDevSubTree(dev_item); - m_reg_tree->addTopLevelItem(dev_item); + item->addChild(dev_item); } } } +void RegTab::FillRegTree() +{ + SocTreeItem *soc_item = new SocTreeItem(m_cur_soc.GetSoc().name.c_str(), + m_cur_soc); + FillSocSubTree(soc_item); + m_reg_tree->addTopLevelItem(soc_item); + m_reg_tree->expandItem(soc_item); +} + void RegTab::FillAnalyserList() { m_analysers_list->clear(); -- cgit v1.2.3