提交 3b354c55 编写于 作者: K Karsten Wiese 提交者: Linus Torvalds

[PATCH] kconfig: add "void conf_set_changed_callback(void (*fn)(void))", use it in qconf.cc

Added function sets "void (*conf_changed_callback)(void)".  Call it, if
.config's changed state changes.  Use above in qconf.cc to set gui's
save-widget's sensitvity.
Signed-off-by: NKarsten Wiese <fzu@wemgehoertderstaat.de>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Acked-by: NRandy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 bfc10001
...@@ -767,18 +767,28 @@ int conf_write_autoconf(void) ...@@ -767,18 +767,28 @@ int conf_write_autoconf(void)
} }
static int sym_change_count; static int sym_change_count;
static void (*conf_changed_callback)(void);
void sym_set_change_count(int count) void sym_set_change_count(int count)
{ {
int _sym_change_count = sym_change_count;
sym_change_count = count; sym_change_count = count;
if (conf_changed_callback &&
(bool)_sym_change_count != (bool)count)
conf_changed_callback();
} }
void sym_add_change_count(int count) void sym_add_change_count(int count)
{ {
sym_change_count += count; sym_set_change_count(count + sym_change_count);
} }
bool conf_get_changed(void) bool conf_get_changed(void)
{ {
return sym_change_count; return sym_change_count;
} }
void conf_set_changed_callback(void (*fn)(void))
{
conf_changed_callback = fn;
}
...@@ -6,6 +6,7 @@ P(conf_read_simple,int,(const char *name, int)); ...@@ -6,6 +6,7 @@ P(conf_read_simple,int,(const char *name, int));
P(conf_write,int,(const char *name)); P(conf_write,int,(const char *name));
P(conf_write_autoconf,int,(void)); P(conf_write_autoconf,int,(void));
P(conf_get_changed,bool,(void)); P(conf_get_changed,bool,(void));
P(conf_set_changed_callback, void,(void (*fn)(void)));
/* menu.c */ /* menu.c */
P(rootmenu,struct menu,); P(rootmenu,struct menu,);
......
...@@ -38,6 +38,8 @@ ...@@ -38,6 +38,8 @@
static QApplication *configApp; static QApplication *configApp;
static ConfigSettings *configSettings; static ConfigSettings *configSettings;
QAction *ConfigMainWindow::saveAction;
static inline QString qgettext(const char* str) static inline QString qgettext(const char* str)
{ {
return QString::fromLocal8Bit(gettext(str)); return QString::fromLocal8Bit(gettext(str));
...@@ -1306,8 +1308,11 @@ ConfigMainWindow::ConfigMainWindow(void) ...@@ -1306,8 +1308,11 @@ ConfigMainWindow::ConfigMainWindow(void)
connect(quitAction, SIGNAL(activated()), SLOT(close())); connect(quitAction, SIGNAL(activated()), SLOT(close()));
QAction *loadAction = new QAction("Load", QPixmap(xpm_load), "&Load", CTRL+Key_L, this); QAction *loadAction = new QAction("Load", QPixmap(xpm_load), "&Load", CTRL+Key_L, this);
connect(loadAction, SIGNAL(activated()), SLOT(loadConfig())); connect(loadAction, SIGNAL(activated()), SLOT(loadConfig()));
QAction *saveAction = new QAction("Save", QPixmap(xpm_save), "&Save", CTRL+Key_S, this); saveAction = new QAction("Save", QPixmap(xpm_save), "&Save", CTRL+Key_S, this);
connect(saveAction, SIGNAL(activated()), SLOT(saveConfig())); connect(saveAction, SIGNAL(activated()), SLOT(saveConfig()));
conf_set_changed_callback(conf_changed);
// Set saveAction's initial state
conf_changed();
QAction *saveAsAction = new QAction("Save As...", "Save &As...", 0, this); QAction *saveAsAction = new QAction("Save As...", "Save &As...", 0, this);
connect(saveAsAction, SIGNAL(activated()), SLOT(saveConfigAs())); connect(saveAsAction, SIGNAL(activated()), SLOT(saveConfigAs()));
QAction *searchAction = new QAction("Search", "&Search", CTRL+Key_F, this); QAction *searchAction = new QAction("Search", "&Search", CTRL+Key_F, this);
...@@ -1658,6 +1663,12 @@ void ConfigMainWindow::saveSettings(void) ...@@ -1658,6 +1663,12 @@ void ConfigMainWindow::saveSettings(void)
configSettings->writeSizes("/split2", split2->sizes()); configSettings->writeSizes("/split2", split2->sizes());
} }
void ConfigMainWindow::conf_changed(void)
{
if (saveAction)
saveAction->setEnabled(conf_get_changed());
}
void fixup_rootmenu(struct menu *menu) void fixup_rootmenu(struct menu *menu)
{ {
struct menu *child; struct menu *child;
......
...@@ -297,6 +297,9 @@ public slots: ...@@ -297,6 +297,9 @@ public slots:
class ConfigMainWindow : public QMainWindow { class ConfigMainWindow : public QMainWindow {
Q_OBJECT Q_OBJECT
static QAction *saveAction;
static void conf_changed(void);
public: public:
ConfigMainWindow(void); ConfigMainWindow(void);
public slots: public slots:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册