Port xconfig to Qt5 - Remove ConfigList::updateMenuList template.

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>
This commit is contained in:
Boris Barbulovski 2015-09-22 11:36:27 -07:00 коммит произвёл Michal Marek
Родитель dbf629331a
Коммит 5c6f1554ba
2 изменённых файлов: 73 добавлений и 4 удалений

Просмотреть файл

@ -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;
@ -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;
}
@ -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();

Просмотреть файл

@ -102,8 +102,8 @@ public:
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;