1
0
Fork 0
forked from len0rd/rockbox

qeditor: add soc panel, to display soc information

Change-Id: Ie442b82d96fb150c7466f1a274240f9b111fd91e
This commit is contained in:
Amaury Pouly 2014-08-09 18:39:45 +02:00
parent 3daa6d64f6
commit ef0299c62e
4 changed files with 92 additions and 6 deletions

View file

@ -16,6 +16,40 @@ QByteArray RegItemEditorCreator::valuePropertyName () const
return QByteArray("text"); return QByteArray("text");
} }
/**
* SocDisplayPanel
*/
SocDisplayPanel::SocDisplayPanel(QWidget *parent, const SocRef& dev_ref)
:QGroupBox(parent), m_soc(dev_ref)
{
QVBoxLayout *right_layout = new QVBoxLayout;
m_name = new QLabel(this);
m_name->setTextFormat(Qt::RichText);
m_name->setText("<h1>" + QString::fromStdString(m_soc.GetSoc().name) + "</h1>");
m_desc = new QLabel(this);
m_name->setTextFormat(Qt::RichText);
m_desc->setText(QString::fromStdString(m_soc.GetSoc().desc));
right_layout->addWidget(m_name, 0);
right_layout->addWidget(m_desc, 0);
right_layout->addStretch(1);
setTitle("System-on-Chip Description");
setLayout(right_layout);
}
void SocDisplayPanel::AllowWrite(bool en)
{
Q_UNUSED(en);
}
QWidget *SocDisplayPanel::GetWidget()
{
return this;
}
/** /**
* DevDisplayPanel * DevDisplayPanel
*/ */
@ -51,8 +85,8 @@ DevDisplayPanel::DevDisplayPanel(QWidget *parent, const SocDevRef& dev_ref)
m_name->setTextFormat(Qt::RichText); m_name->setTextFormat(Qt::RichText);
m_desc->setText(QString::fromStdString(m_dev.GetDev().desc)); m_desc->setText(QString::fromStdString(m_dev.GetDev().desc));
right_layout->addLayout(top_layout, 0);
right_layout->addWidget(m_name, 0); right_layout->addWidget(m_name, 0);
right_layout->addLayout(top_layout, 0);
right_layout->addWidget(m_desc, 0); right_layout->addWidget(m_desc, 0);
right_layout->addStretch(1); right_layout->addStretch(1);

View file

@ -23,6 +23,23 @@ public:
virtual QByteArray valuePropertyName () const; virtual QByteArray valuePropertyName () const;
}; };
class SocDisplayPanel : public QGroupBox, public RegTabPanel
{
Q_OBJECT
public:
SocDisplayPanel(QWidget *parent, const SocRef& reg);
void Reload();
void AllowWrite(bool en);
QWidget *GetWidget();
bool Quit();
protected:
const SocRef& m_soc;
QLabel *m_name;
QLabel *m_desc;
};
class DevDisplayPanel : public QGroupBox, public RegTabPanel class DevDisplayPanel : public QGroupBox, public RegTabPanel
{ {
Q_OBJECT Q_OBJECT

View file

@ -16,7 +16,19 @@ namespace
enum enum
{ {
RegTreeDevType = QTreeWidgetItem::UserType, 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 class DevTreeItem : public QTreeWidgetItem
@ -293,6 +305,11 @@ void RegTab::OnRegItemClicked(QTreeWidgetItem *current, int col)
Q_UNUSED(col); Q_UNUSED(col);
if(current == 0) if(current == 0)
return; return;
if(current->type() == RegTreeSocType)
{
SocTreeItem *item = dynamic_cast< SocTreeItem * >(current);
DisplaySoc(item->GetRef());
}
if(current->type() == RegTreeRegType) if(current->type() == RegTreeRegType)
{ {
RegTreeItem *item = dynamic_cast< RegTreeItem * >(current); RegTreeItem *item = dynamic_cast< RegTreeItem * >(current);
@ -329,6 +346,11 @@ void RegTab::DisplayDevice(const SocDevRef& ref)
SetPanel(new DevDisplayPanel(this, ref)); SetPanel(new DevDisplayPanel(this, ref));
} }
void RegTab::DisplaySoc(const SocRef& ref)
{
SetPanel(new SocDisplayPanel(this, ref));
}
void RegTab::SetPanel(RegTabPanel *panel) void RegTab::SetPanel(RegTabPanel *panel)
{ {
delete m_right_content; 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++) for(size_t j = 0; j < dev.addr.size(); j++)
{ {
DevTreeItem *dev_item = new DevTreeItem(dev.addr[j].name.c_str(), DevTreeItem *dev_item = new DevTreeItem(dev.addr[j].name.c_str(),
SocDevRef(m_cur_soc, i, j)); SocDevRef(m_cur_soc, i, j));
FillDevSubTree(dev_item); 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() void RegTab::FillAnalyserList()
{ {
m_analysers_list->clear(); m_analysers_list->clear();

View file

@ -57,11 +57,13 @@ protected:
}; };
void FillDevSubTree(QTreeWidgetItem *item); void FillDevSubTree(QTreeWidgetItem *item);
void FillSocSubTree(QTreeWidgetItem *item);
void FillRegTree(); void FillRegTree();
void FillAnalyserList(); void FillAnalyserList();
void UpdateSocList(); void UpdateSocList();
void DisplayRegister(const SocRegRef& ref); void DisplayRegister(const SocRegRef& ref);
void DisplayDevice(const SocDevRef& ref); void DisplayDevice(const SocDevRef& ref);
void DisplaySoc(const SocRef& ref);
void SetDataSocName(const QString& socname); void SetDataSocName(const QString& socname);
void SetPanel(RegTabPanel *panel); void SetPanel(RegTabPanel *panel);
void UpdateSocFilename(); void UpdateSocFilename();