Allow setting the environment for "OnlyShowIn"

This commit is contained in:
Pierre Pronchery 2018-01-27 11:06:29 +01:00
parent 224e24227b
commit 9b62d7c6a7
2 changed files with 31 additions and 2 deletions

View File

@ -61,6 +61,7 @@ int mimehandler_can_open(MimeHandler * handler);
String const ** mimehandler_get_categories(MimeHandler * handler); String const ** mimehandler_get_categories(MimeHandler * handler);
String const * mimehandler_get_comment(MimeHandler * handler, int translate); String const * mimehandler_get_comment(MimeHandler * handler, int translate);
String const * mimehandler_get_environment(MimeHandler * handler);
String const * mimehandler_get_filename(MimeHandler * handler); String const * mimehandler_get_filename(MimeHandler * handler);
String const * mimehandler_get_generic_name(MimeHandler * handler, String const * mimehandler_get_generic_name(MimeHandler * handler,
int translate); int translate);
@ -74,6 +75,9 @@ String const * mimehandler_get_url(MimeHandler * handler);
int mimehandler_is_deleted(MimeHandler * handler); int mimehandler_is_deleted(MimeHandler * handler);
int mimehandler_set_environment(MimeHandler * handler,
String const * environment);
/* useful */ /* useful */
int mimehandler_open(MimeHandler * handler, String const * filename); int mimehandler_open(MimeHandler * handler, String const * filename);

View File

@ -66,6 +66,7 @@ struct _MimeHandler
String * filename; String * filename;
String ** categories; String ** categories;
String ** types; String ** types;
String * environment;
}; };
@ -96,6 +97,7 @@ MimeHandler * mimehandler_new(void)
handler->filename = NULL; handler->filename = NULL;
handler->categories = NULL; handler->categories = NULL;
handler->types = NULL; handler->types = NULL;
handler->environment = NULL;
if(handler->config == NULL) if(handler->config == NULL)
{ {
mimehandler_delete(handler); mimehandler_delete(handler);
@ -143,6 +145,7 @@ void mimehandler_delete(MimeHandler * handler)
_mimehandler_cache_invalidate(handler); _mimehandler_cache_invalidate(handler);
config_delete(handler->config); config_delete(handler->config);
string_delete(handler->filename); string_delete(handler->filename);
string_delete(handler->environment);
object_delete(handler); object_delete(handler);
} }
@ -155,8 +158,9 @@ int mimehandler_can_display(MimeHandler * handler)
if(mimehandler_is_deleted(handler)) if(mimehandler_is_deleted(handler))
return 0; return 0;
/* XXX allow setting a value for the desktop environment */ if((p = config_get(handler->config, SECTION, "OnlyShowIn")) != NULL
if(config_get(handler->config, SECTION, "OnlyShowIn") != NULL) && (handler->environment == NULL
|| string_compare(p, handler->environment)))
return 0; return 0;
if((p = config_get(handler->config, SECTION, "NoDisplay")) != NULL if((p = config_get(handler->config, SECTION, "NoDisplay")) != NULL
&& string_compare(p, "true") == 0) && string_compare(p, "true") == 0)
@ -321,6 +325,13 @@ String const * mimehandler_get_comment(MimeHandler * handler, int translate)
} }
/* mimehandler_get_environment */
String const * mimehandler_get_environment(MimeHandler * handler)
{
return handler->environment;
}
/* mimehandler_get_filename */ /* mimehandler_get_filename */
String const * mimehandler_get_filename(MimeHandler * handler) String const * mimehandler_get_filename(MimeHandler * handler)
{ {
@ -506,6 +517,20 @@ int mimehandler_is_deleted(MimeHandler * handler)
} }
/* mimehandler_set_environment */
int mimehandler_set_environment(MimeHandler * handler,
String const * environment)
{
String * p;
if((p = string_new(environment)) == NULL)
return -1;
string_delete(handler->environment);
handler->environment = p;
return 0;
}
/* useful */ /* useful */
/* mimehandler_load */ /* mimehandler_load */
int mimehandler_load(MimeHandler * handler, String const * filename) int mimehandler_load(MimeHandler * handler, String const * filename)