#include "modest-ui-actions.h"
static gboolean show_ui = FALSE;
+static gint shutdown_timeout = 0;
static GOptionEntry option_entries [] =
{
{ "show-ui", 's', 0, G_OPTION_ARG_NONE, &show_ui, "Show UI immediately, so no wait for DBUS activation", NULL },
+ { "shutdown-timeout", 't', 0, G_OPTION_ARG_INT, &shutdown_timeout, "Timeout in minutes for running Modest in prestart mode", NULL },
{ NULL }
};
+static guint shutdown_timeout_id = 0;
+
typedef struct {
gulong queue_handler;
gulong window_list_handler;
{
ModestWindowMgr *mgr = modest_runtime_get_window_mgr ();
+ if (!modest_runtime_get_allow_shutdown ())
+ return;
+
/* Exit if the queue is empty and there are no more
windows. We can exit as well if the main window is hidden
and it's the only one */
{
ModestMailOperationQueue *queue = modest_runtime_get_mail_operation_queue ();
+ if (!modest_runtime_get_allow_shutdown ())
+ return;
+
/* Exit if there are no more windows and the queue is empty */
if (modest_mail_operation_queue_num_elements (queue) == 0)
g_idle_add_full (G_PRIORITY_LOW, on_idle_exit_modest, user_data, NULL);
}
+static gboolean
+shutdown_timeout_handler (gpointer userdata)
+{
+ modest_runtime_set_allow_shutdown (TRUE);
+ return FALSE;
+}
+
int
main (int argc, char *argv[])
{
GError *error;
GOptionContext *context;
+ ModestWindowMgr *mgr;
+
context = g_option_context_new ("- Modest email client");
g_option_context_add_main_entries (context, option_entries, GETTEXT_PACKAGE);
g_option_context_add_group (context, gtk_get_option_group (TRUE));
G_CALLBACK (modest_ui_actions_on_password_requested),
NULL);
+ /* Create cached windows */
+ mgr = modest_runtime_get_window_mgr ();
+ modest_window_mgr_create_caches (mgr);
+
/* Usually, we only show the UI when we get the "top_application" D-Bus method.
* This allows modest to start via D-Bus activation to provide a service,
* without showing the UI.
*/
if (show_ui_without_top_application_method) {
ModestWindow *window;
- ModestWindowMgr *mgr;
+ modest_runtime_set_allow_shutdown (TRUE);
mgr = modest_runtime_get_window_mgr();
window = modest_window_mgr_show_initial_window (mgr);
if (!window) {
}
/* Remove new mail notifications if exist */
modest_platform_remove_new_mail_notifications (FALSE);
+ } else {
+ if (shutdown_timeout > 0) {
+ modest_runtime_set_allow_shutdown (FALSE);
+ shutdown_timeout_id = g_timeout_add_seconds (shutdown_timeout * 60, shutdown_timeout_handler, NULL);
+ }
}
gtk_main ();