[vlc-commits] macosx: simple prefs: merge module list into string list and simplify
David Fuhrmann
git at videolan.org
Sat Jan 18 22:35:45 CET 2014
vlc | branch: master | David Fuhrmann <david.fuhrmann at googlemail.com> | Sat Jan 18 19:35:41 2014 +0100| [dad64d35ac4d3b89b06565f1363219f8810a69ad] | committer: David Fuhrmann
macosx: simple prefs: merge module list into string list and simplify
Uses config_GetPszChoices.
Fixes bug where explicit selection of macosx vout module did not worked.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=dad64d35ac4d3b89b06565f1363219f8810a69ad
---
modules/gui/macosx/simple_prefs.m | 119 ++++++++++++-------------------------
1 file changed, 37 insertions(+), 82 deletions(-)
diff --git a/modules/gui/macosx/simple_prefs.m b/modules/gui/macosx/simple_prefs.m
index 387873d..1c7b54f 100644
--- a/modules/gui/macosx/simple_prefs.m
+++ b/modules/gui/macosx/simple_prefs.m
@@ -450,28 +450,47 @@ static inline char * __config_GetLabel(vlc_object_t *p_this, const char *psz_nam
[object removeAllItems];
p_item = config_FindConfig(VLC_OBJECT(p_intf), name);
-
/* serious problem, if no item found */
assert(p_item);
- for (int i = 0; i < p_item->list_count; i++) {
- NSMenuItem *mi;
- if (p_item->list_text != NULL)
- mi = [[NSMenuItem alloc] initWithTitle: _NS(p_item->list_text[i]) action:NULL keyEquivalent: @""];
- else if (p_item->list.psz[i] && strcmp(p_item->list.psz[i],"") == 0) {
- [[object menu] addItem: [NSMenuItem separatorItem]];
+ char **values, **texts;
+ ssize_t count = config_GetPszChoices(VLC_OBJECT(VLCIntf), name,
+ &values, &texts);
+ if (count < 0) {
+ msg_Err(p_intf, "Cannot get choices for %s", name);
+ return;
+ }
+ for (ssize_t i = 0; i < count && texts; i++) {
+ if (texts[i] == NULL || values[i] == NULL)
continue;
+
+ if (strcmp(texts[i], "") != 0) {
+ NSMenuItem *mi = [[NSMenuItem alloc] initWithTitle: toNSStr(texts[i]) action: NULL keyEquivalent: @""];
+ [mi setRepresentedObject: toNSStr(values[i])];
+ [[object menu] addItem: [mi autorelease]];
+
+ if (p_item->value.psz && !strcmp(p_item->value.psz, values[i]))
+ [object selectItem: [object lastItem]];
+
+ } else {
+ [[object menu] addItem: [NSMenuItem separatorItem]];
}
- else if (p_item->list.psz[i])
- mi = [[NSMenuItem alloc] initWithTitle: [NSString stringWithUTF8String:p_item->list.psz[i]] action:NULL keyEquivalent: @""];
- else
- msg_Err(p_intf, "item %d of pref %s failed to be created", i, name);
- [mi setRepresentedObject:[NSString stringWithUTF8String:p_item->list.psz[i]]];
- [[object menu] addItem: [mi autorelease]];
- if (p_item->value.psz && !strcmp(p_item->value.psz, p_item->list.psz[i]))
- [object selectItem:[object lastItem]];
+
+ free(texts[i]);
+ free(values[i]);
}
- [object setToolTip: _NS(p_item->psz_longtext)];
+
+ free(texts);
+ free(values);
+
+ if (p_item->psz_longtext)
+ [object setToolTip: _NS(p_item->psz_longtext)];
+}
+
+// just for clarification that this is a module list
+- (void)setupButton: (NSPopUpButton *)object forModuleList: (const char *)name
+{
+ [self setupButton: object forStringList: name];
}
- (void)setupButton: (NSPopUpButton *)object forIntList: (const char *)name
@@ -500,36 +519,6 @@ static inline char * __config_GetLabel(vlc_object_t *p_this, const char *psz_nam
[object setToolTip: _NS(p_item->psz_longtext)];
}
-- (void)setupButton: (NSPopUpButton *)object forModuleList: (const char *)name
-{
- module_config_t *p_item;
- module_t *p_parser, **p_list;
- int y = 0;
-
- [object removeAllItems];
-
- p_item = config_FindConfig(VLC_OBJECT(p_intf), name);
- size_t count;
- p_list = module_list_get(&count);
- if (!p_item ||!p_list) {
- if (p_list) module_list_free(p_list);
- msg_Err(p_intf, "serious problem, item or list not found");
- return;
- }
-
- [object addItemWithTitle: _NS("Default")];
- for (size_t i_index = 0; i_index < count; i_index++) {
- p_parser = p_list[i_index];
- if (module_provides(p_parser, p_item->psz_type)) {
- [object addItemWithTitle: [NSString stringWithUTF8String:_(module_GetLongName(p_parser)) ?: ""]];
- if (p_item->value.psz && !strcmp(p_item->value.psz, module_get_name(p_parser, false)))
- [object selectItem: [object lastItem]];
- }
- }
- module_list_free(p_list);
- [object setToolTip: _NS(p_item->psz_longtext)];
-}
-
- (void)setupButton: (NSButton *)object forBoolValue: (const char *)name
{
[object setState: config_GetInt(p_intf, name)];
@@ -890,42 +879,9 @@ static inline void save_int_list(intf_thread_t * p_intf, id object, const char *
static inline void save_string_list(intf_thread_t * p_intf, id object, const char * name)
{
NSString *p_stringobject;
- module_config_t *p_item;
- p_item = config_FindConfig(VLC_OBJECT(p_intf), name);
p_stringobject = (NSString *)[[object selectedItem] representedObject];
assert([p_stringobject isKindOfClass:[NSString class]]);
- if (p_stringobject) {
- config_PutPsz(p_intf, name, [p_stringobject UTF8String]);
- }
-}
-
-static inline void save_module_list(intf_thread_t * p_intf, id object, const char * name)
-{
- module_config_t *p_item;
- module_t *p_parser, **p_list;
- NSString * objectTitle = [[object selectedItem] title];
-
- p_item = config_FindConfig(VLC_OBJECT(p_intf), name);
-
- size_t count;
- p_list = module_list_get(&count);
- for (size_t i_module_index = 0; i_module_index < count; i_module_index++) {
- p_parser = p_list[i_module_index];
-
- if (p_item->i_type == CONFIG_ITEM_MODULE && module_provides(p_parser, p_item->psz_type)) {
- if ([objectTitle isEqualToString: _NS(module_GetLongName(p_parser))]) {
- config_PutPsz(p_intf, name, module_get_name(p_parser, false));
- break;
- }
- }
- }
- module_list_free(p_list);
- if ([objectTitle isEqualToString: _NS("Default")]) {
- if (!strcmp(name, "vout"))
- config_PutPsz(p_intf, name, "");
- else
- config_PutPsz(p_intf, name, "none");
- }
+ config_PutPsz(p_intf, name, [p_stringobject UTF8String]);
}
- (void)saveChangedSettings
@@ -936,8 +892,7 @@ static inline void save_module_list(intf_thread_t * p_intf, id object, const cha
#define SaveIntList(object, name) save_int_list(p_intf, object, name)
#define SaveStringList(object, name) save_string_list(p_intf, object, name)
-
-#define SaveModuleList(object, name) save_module_list(p_intf, object, name)
+#define SaveModuleList(object, name) SaveStringList(object, name)
#define getString(name) [NSString stringWithFormat:@"%s", config_GetPsz(p_intf, name)]
More information about the vlc-commits
mailing list