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_comment(MimeHandler * handler, int translate);
String const * mimehandler_get_environment(MimeHandler * handler);
String const * mimehandler_get_filename(MimeHandler * handler);
String const * mimehandler_get_generic_name(MimeHandler * handler,
int translate);
@ -74,6 +75,9 @@ String const * mimehandler_get_url(MimeHandler * handler);
int mimehandler_is_deleted(MimeHandler * handler);
int mimehandler_set_environment(MimeHandler * handler,
String const * environment);
/* useful */
int mimehandler_open(MimeHandler * handler, String const * filename);

View File

@ -66,6 +66,7 @@ struct _MimeHandler
String * filename;
String ** categories;
String ** types;
String * environment;
};
@ -96,6 +97,7 @@ MimeHandler * mimehandler_new(void)
handler->filename = NULL;
handler->categories = NULL;
handler->types = NULL;
handler->environment = NULL;
if(handler->config == NULL)
{
mimehandler_delete(handler);
@ -143,6 +145,7 @@ void mimehandler_delete(MimeHandler * handler)
_mimehandler_cache_invalidate(handler);
config_delete(handler->config);
string_delete(handler->filename);
string_delete(handler->environment);
object_delete(handler);
}
@ -155,8 +158,9 @@ int mimehandler_can_display(MimeHandler * handler)
if(mimehandler_is_deleted(handler))
return 0;
/* XXX allow setting a value for the desktop environment */
if(config_get(handler->config, SECTION, "OnlyShowIn") != NULL)
if((p = config_get(handler->config, SECTION, "OnlyShowIn")) != NULL
&& (handler->environment == NULL
|| string_compare(p, handler->environment)))
return 0;
if((p = config_get(handler->config, SECTION, "NoDisplay")) != NULL
&& 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 */
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 */
/* mimehandler_load */
int mimehandler_load(MimeHandler * handler, String const * filename)