Skip to content

Commit

Permalink
Port xconfig to Qt5 - Remove ConfigList::updateMenuList template.
Browse files Browse the repository at this point in the history
ConfigItem executes parent->takeChild(0)

while

ConfigList executes parent->takeTopLevelItem(0)

Signed-off-by: Boris Barbulovski <bbarbulovski@gmail.com>
Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
Signed-off-by: Michal Marek <mmarek@suse.com>
  • Loading branch information
Boris Barbulovski authored and Michal Marek committed Oct 14, 2015
1 parent dbf6293 commit 5c6f155
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 4 deletions.
73 changes: 71 additions & 2 deletions scripts/kconfig/qconf.cc
Original file line number Diff line number Diff line change
Expand Up @@ -568,8 +568,7 @@ void ConfigList::setParentMenu(void)
* parent: either the menu list widget or a menu entry widget
* menu: entry to be updated
*/
template <class P>
void ConfigList::updateMenuList(P* parent, struct menu* menu)
void ConfigList::updateMenuList(ConfigItem *parent, struct menu* menu)
{
struct menu* child;
ConfigItem* item;
Expand All @@ -578,6 +577,11 @@ void ConfigList::updateMenuList(P* parent, struct menu* menu)
enum prop_type type;

if (!menu) {
while (parent->childCount() > 0)
{
delete parent->takeChild(0);
}

return;
}

Expand Down Expand Up @@ -629,6 +633,71 @@ void ConfigList::updateMenuList(P* parent, struct menu* menu)
}
}

void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu)
{
struct menu* child;
ConfigItem* item;
ConfigItem* last;
bool visible;
enum prop_type type;

if (!menu) {
while (parent->topLevelItemCount() > 0)
{
delete parent->takeTopLevelItem(0);
}

return;
}

last = (ConfigItem*)parent->topLevelItem(0);
if (last && !last->goParent)
last = 0;
for (child = menu->list; child; child = child->next) {
item = last ? last->nextSibling() : (ConfigItem*)parent->topLevelItem(0);
type = child->prompt ? child->prompt->type : P_UNKNOWN;

switch (mode) {
case menuMode:
if (!(child->flags & MENU_ROOT))
goto hide;
break;
case symbolMode:
if (child->flags & MENU_ROOT)
goto hide;
break;
default:
break;
}

visible = menu_is_visible(child);
if (!menuSkip(child)) {
if (!child->sym && !child->list && !child->prompt)
continue;
if (!item || item->menu != child)
item = new ConfigItem(parent, last, child, visible);
else
item->testUpdateMenu(visible);

if (mode == fullMode || mode == menuMode || type != P_MENU)
updateMenuList(item, child);
else
updateMenuList(item, 0);
last = item;
continue;
}
hide:
if (item && item->menu == child) {
last = (ConfigItem*)parent->topLevelItem(0);
if (last == item)
last = 0;
else while (last->nextSibling() != item)
last = last->nextSibling();
delete item;
}
}
}

void ConfigList::keyPressEvent(QKeyEvent* ev)
{
QTreeWidgetItem* i = currentItem();
Expand Down
4 changes: 2 additions & 2 deletions scripts/kconfig/qconf.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,8 @@ public slots:

bool menuSkip(struct menu *);

template <class P>
void updateMenuList(P*, struct menu*);
void updateMenuList(ConfigItem *parent, struct menu*);
void updateMenuList(ConfigList *parent, struct menu*);

bool updateAll;

Expand Down

0 comments on commit 5c6f155

Please sign in to comment.