Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 39a4897c authored by Li Zefan's avatar Li Zefan Committed by Michal Marek
Browse files

xconfig: add support to show hidden options which have prompts



This feature has been supported in menuconfig and gconfig, so
here add it to xconfig.

Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
parent 120d63e6
Loading
Loading
Loading
Loading
+50 −19
Original line number Diff line number Diff line
@@ -148,7 +148,7 @@ void ConfigItem::updateMenu(void)
	case S_TRISTATE:
		char ch;

		if (!sym_is_changable(sym) && !list->showAll) {
		if (!sym_is_changable(sym) && list->optMode == normalOpt) {
			setPixmap(promptColIdx, 0);
			setText(noColIdx, QString::null);
			setText(modColIdx, QString::null);
@@ -319,7 +319,7 @@ ConfigList::ConfigList(ConfigView* p, const char *name)
	  symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no),
	  choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no),
	  menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void),
	  showAll(false), showName(false), showRange(false), showData(false),
	  showName(false), showRange(false), showData(false), optMode(normalOpt),
	  rootEntry(0), headerPopup(0)
{
	int i;
@@ -336,10 +336,10 @@ ConfigList::ConfigList(ConfigView* p, const char *name)

	if (name) {
		configSettings->beginGroup(name);
		showAll = configSettings->readBoolEntry("/showAll", false);
		showName = configSettings->readBoolEntry("/showName", false);
		showRange = configSettings->readBoolEntry("/showRange", false);
		showData = configSettings->readBoolEntry("/showData", false);
		optMode = (enum optionMode)configSettings->readNumEntry("/optionMode", false);
		configSettings->endGroup();
		connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings()));
	}
@@ -351,6 +351,17 @@ ConfigList::ConfigList(ConfigView* p, const char *name)
	reinit();
}

bool ConfigList::menuSkip(struct menu *menu)
{
	if (optMode == normalOpt && menu_is_visible(menu))
		return false;
	if (optMode == promptOpt && menu_has_prompt(menu))
		return false;
	if (optMode == allOpt)
		return false;
	return true;
}

void ConfigList::reinit(void)
{
	removeColumn(dataColIdx);
@@ -379,7 +390,7 @@ void ConfigList::saveSettings(void)
		configSettings->writeEntry("/showName", showName);
		configSettings->writeEntry("/showRange", showRange);
		configSettings->writeEntry("/showData", showData);
		configSettings->writeEntry("/showAll", showAll);
		configSettings->writeEntry("/optionMode", (int)optMode);
		configSettings->endGroup();
	}
}
@@ -605,7 +616,7 @@ void ConfigList::updateMenuList(P* parent, struct menu* menu)
		}

		visible = menu_is_visible(child);
		if (showAll || visible) {
		if (!menuSkip(child)) {
			if (!child->sym && !child->list && !child->prompt)
				continue;
			if (!item || item->menu != child)
@@ -835,6 +846,9 @@ void ConfigList::contextMenuEvent(QContextMenuEvent *e)
}

ConfigView*ConfigView::viewList;
QAction *ConfigView::showNormalAction;
QAction *ConfigView::showAllAction;
QAction *ConfigView::showPromptAction;

ConfigView::ConfigView(QWidget* parent, const char *name)
	: Parent(parent, name)
@@ -859,13 +873,16 @@ ConfigView::~ConfigView(void)
	}
}

void ConfigView::setShowAll(bool b)
void ConfigView::setOptionMode(QAction *act)
{
	if (list->showAll != b) {
		list->showAll = b;
	if (act == showNormalAction)
		list->optMode = normalOpt;
	else if (act == showAllAction)
		list->optMode = allOpt;
	else
		list->optMode = promptOpt;

	list->updateListAll();
		emit showAllChanged(b);
	}
}

void ConfigView::setShowName(bool b)
@@ -1320,11 +1337,24 @@ ConfigMainWindow::ConfigMainWindow(void)
	  connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool)));
	  connect(configView, SIGNAL(showDataChanged(bool)), showDataAction, SLOT(setOn(bool)));
	  showDataAction->setOn(configList->showData);
	QAction *showAllAction = new QAction(NULL, _("Show All Options"), 0, this);
	  showAllAction->setToggleAction(TRUE);
	  connect(showAllAction, SIGNAL(toggled(bool)), configView, SLOT(setShowAll(bool)));
	  connect(showAllAction, SIGNAL(toggled(bool)), menuView, SLOT(setShowAll(bool)));
	  showAllAction->setOn(configList->showAll);

	QActionGroup *optGroup = new QActionGroup(this);
	optGroup->setExclusive(TRUE);
	connect(optGroup, SIGNAL(selected(QAction *)), configView,
		SLOT(setOptionMode(QAction *)));
	connect(optGroup, SIGNAL(selected(QAction *)), menuView,
		SLOT(setOptionMode(QAction *)));

	configView->showNormalAction = new QAction(NULL, _("Show Normal Options"), 0, optGroup);
	configView->showAllAction = new QAction(NULL, _("Show All Options"), 0, optGroup);
	configView->showPromptAction = new QAction(NULL, _("Show Prompt Options"), 0, optGroup);
	configView->showNormalAction->setToggleAction(TRUE);
	configView->showNormalAction->setOn(configList->optMode == normalOpt);
	configView->showAllAction->setToggleAction(TRUE);
	configView->showAllAction->setOn(configList->optMode == allOpt);
	configView->showPromptAction->setToggleAction(TRUE);
	configView->showPromptAction->setOn(configList->optMode == promptOpt);

	QAction *showDebugAction = new QAction(NULL, _("Show Debug Info"), 0, this);
	  showDebugAction->setToggleAction(TRUE);
	  connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool)));
@@ -1367,7 +1397,8 @@ ConfigMainWindow::ConfigMainWindow(void)
	showRangeAction->addTo(optionMenu);
	showDataAction->addTo(optionMenu);
	optionMenu->insertSeparator();
	showAllAction->addTo(optionMenu);
	optGroup->addTo(optionMenu);
	optionMenu->insertSeparator();
	showDebugAction->addTo(optionMenu);

	// create help menu
@@ -1462,7 +1493,7 @@ void ConfigMainWindow::setMenuLink(struct menu *menu)
	ConfigList* list = NULL;
	ConfigItem* item;

	if (!menu_is_visible(menu) && !configView->showAll())
	if (configList->menuSkip(menu))
		return;

	switch (configList->mode) {
+12 −4
Original line number Diff line number Diff line
@@ -44,6 +44,9 @@ enum colIdx {
enum listMode {
	singleMode, menuMode, symbolMode, fullMode, listMode
};
enum optionMode {
	normalOpt = 0, allOpt, promptOpt
};

class ConfigList : public QListView {
	Q_OBJECT
@@ -115,6 +118,8 @@ public slots:
	void setAllOpen(bool open);
	void setParentMenu(void);

	bool menuSkip(struct menu *);

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

@@ -124,8 +129,9 @@ public slots:
	QPixmap choiceYesPix, choiceNoPix;
	QPixmap menuPix, menuInvPix, menuBackPix, voidPix;

	bool showAll, showName, showRange, showData;
	bool showName, showRange, showData;
	enum listMode mode;
	enum optionMode optMode;
	struct menu *rootEntry;
	QColorGroup disabledColorGroup;
	QColorGroup inactivedColorGroup;
@@ -222,17 +228,15 @@ class ConfigView : public QVBox {
	static void updateList(ConfigItem* item);
	static void updateListAll(void);

	bool showAll(void) const { return list->showAll; }
	bool showName(void) const { return list->showName; }
	bool showRange(void) const { return list->showRange; }
	bool showData(void) const { return list->showData; }
public slots:
	void setShowAll(bool);
	void setShowName(bool);
	void setShowRange(bool);
	void setShowData(bool);
	void setOptionMode(QAction *);
signals:
	void showAllChanged(bool);
	void showNameChanged(bool);
	void showRangeChanged(bool);
	void showDataChanged(bool);
@@ -242,6 +246,10 @@ public slots:

	static ConfigView* viewList;
	ConfigView* nextView;

	static QAction *showNormalAction;
	static QAction *showAllAction;
	static QAction *showPromptAction;
};

class ConfigInfoView : public QTextBrowser {