Blame tests/testmountoperation.c

Packit Service fb6fa5
/* testmultidisplay.c
Packit Service fb6fa5
 * Copyright (C) 2008 Christian Kellner
Packit Service fb6fa5
 * Author: Christian Kellner <gicmo@gnome.org>
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * This library is free software; you can redistribute it and/or
Packit Service fb6fa5
 * modify it under the terms of the GNU Library General Public
Packit Service fb6fa5
 * License as published by the Free Software Foundation; either
Packit Service fb6fa5
 * version 2 of the License, or (at your option) any later version.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * This library is distributed in the hope that it will be useful,
Packit Service fb6fa5
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service fb6fa5
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service fb6fa5
 * Library General Public License for more details.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * You should have received a copy of the GNU Library General Public
Packit Service fb6fa5
 * License along with this library; if not, write to the
Packit Service fb6fa5
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Packit Service fb6fa5
 * Boston, MA 02111-1307, USA.
Packit Service fb6fa5
 */
Packit Service fb6fa5
Packit Service fb6fa5
#include "config.h"
Packit Service fb6fa5
#include <gtk/gtk.h>
Packit Service fb6fa5
Packit Service fb6fa5
static gboolean ask_question = FALSE;
Packit Service fb6fa5
static gboolean anonymous = FALSE;
Packit Service fb6fa5
static gboolean dont_ask_username = FALSE;
Packit Service fb6fa5
static gboolean dont_ask_domain = FALSE;
Packit Service fb6fa5
static gboolean dont_ask_password = FALSE;
Packit Service fb6fa5
static gboolean dont_save_password = FALSE;
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
got_reply (GMountOperation       *op,
Packit Service fb6fa5
           GMountOperationResult  result,
Packit Service fb6fa5
           gpointer               user_data)
Packit Service fb6fa5
{
Packit Service fb6fa5
  if (result == G_MOUNT_OPERATION_HANDLED)
Packit Service fb6fa5
    {
Packit Service fb6fa5
Packit Service fb6fa5
      if (ask_question)
Packit Service fb6fa5
        {
Packit Service fb6fa5
          gint choice = g_mount_operation_get_choice (op);
Packit Service fb6fa5
          g_print ("User chose: %d\n", choice);
Packit Service fb6fa5
        }
Packit Service fb6fa5
      else
Packit Service fb6fa5
        {
Packit Service fb6fa5
          if (anonymous)
Packit Service fb6fa5
            g_print ("Anymous: %s\n",
Packit Service fb6fa5
                     g_mount_operation_get_anonymous (op) ? "true" : "false");
Packit Service fb6fa5
Packit Service fb6fa5
          if (!dont_ask_username)
Packit Service fb6fa5
            g_print ("Username: %s\n", g_mount_operation_get_username (op));
Packit Service fb6fa5
Packit Service fb6fa5
          if (!dont_ask_domain)
Packit Service fb6fa5
            g_print ("Domain: %s\n", g_mount_operation_get_domain (op));
Packit Service fb6fa5
Packit Service fb6fa5
          if (!dont_ask_password)
Packit Service fb6fa5
            g_print ("Password: %s\n", g_mount_operation_get_password (op));
Packit Service fb6fa5
Packit Service fb6fa5
          if (!dont_save_password)
Packit Service fb6fa5
            {
Packit Service fb6fa5
              GPasswordSave pw_save;
Packit Service fb6fa5
Packit Service fb6fa5
              pw_save = g_mount_operation_get_password_save (op);
Packit Service fb6fa5
              g_print ("Save password: ");
Packit Service fb6fa5
              switch (pw_save)
Packit Service fb6fa5
                {
Packit Service fb6fa5
               case G_PASSWORD_SAVE_NEVER:
Packit Service fb6fa5
                 g_print ("never");
Packit Service fb6fa5
                 break;
Packit Service fb6fa5
Packit Service fb6fa5
               case G_PASSWORD_SAVE_FOR_SESSION:
Packit Service fb6fa5
                 g_print ("session");
Packit Service fb6fa5
                 break;
Packit Service fb6fa5
Packit Service fb6fa5
               case G_PASSWORD_SAVE_PERMANENTLY:
Packit Service fb6fa5
                 g_print ("forever");
Packit Service fb6fa5
                 break;
Packit Service fb6fa5
Packit Service fb6fa5
               default:
Packit Service fb6fa5
                 g_assert_not_reached ();
Packit Service fb6fa5
                }
Packit Service fb6fa5
              g_print ("\n");
Packit Service fb6fa5
            }
Packit Service fb6fa5
        }
Packit Service fb6fa5
    }
Packit Service fb6fa5
  else if (result == G_MOUNT_OPERATION_ABORTED)
Packit Service fb6fa5
    g_print ("Operation aborted.\n");
Packit Service fb6fa5
  else if (G_MOUNT_OPERATION_UNHANDLED)
Packit Service fb6fa5
    g_assert_not_reached ();
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_main_quit ();
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
int
Packit Service fb6fa5
main (int argc, char *argv[])
Packit Service fb6fa5
{
Packit Service fb6fa5
  GMountOperation *op;
Packit Service fb6fa5
  gboolean force_rtl = FALSE;
Packit Service fb6fa5
  GError *error = NULL;
Packit Service fb6fa5
  GOptionEntry options[] = {
Packit Service fb6fa5
    { "ask-question", 'q', 0, G_OPTION_ARG_NONE, &ask_question, "Ask a question not a password.", NULL },
Packit Service fb6fa5
    { "right-to-left", 'r', 0, G_OPTION_ARG_NONE, &force_rtl, "Force right-to-left layout.", NULL },
Packit Service fb6fa5
    { "anonymous", 'a', 0, G_OPTION_ARG_NONE, &anonymous, "Anonymous login allowed.", NULL },
Packit Service fb6fa5
    { "no-username", 'u', 0, G_OPTION_ARG_NONE, &dont_ask_username, "Don't ask for the username.", NULL },
Packit Service fb6fa5
    { "no-password", 'p', 0, G_OPTION_ARG_NONE, &dont_ask_password, "Don't ask for the password.", NULL },
Packit Service fb6fa5
    { "no-domain", 'd', 0, G_OPTION_ARG_NONE, &dont_ask_domain, "Don't ask for the domain.", NULL },
Packit Service fb6fa5
    { "no-pw-save", 's', 0, G_OPTION_ARG_NONE, &dont_save_password, "Don't show password save options.", NULL },
Packit Service fb6fa5
    { NULL }
Packit Service fb6fa5
  };
Packit Service fb6fa5
Packit Service fb6fa5
  if (!gtk_init_with_args (&argc, &argv, "", options, NULL, &error))
Packit Service fb6fa5
    {
Packit Service fb6fa5
      g_print ("Failed to parse args: %s\n", error->message);
Packit Service fb6fa5
      g_error_free (error);
Packit Service fb6fa5
      return 1;
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  if (force_rtl)
Packit Service fb6fa5
    gtk_widget_set_default_direction (GTK_TEXT_DIR_RTL);
Packit Service fb6fa5
Packit Service fb6fa5
  op = gtk_mount_operation_new (NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  g_signal_connect (op, "reply", G_CALLBACK (got_reply), NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  if (ask_question)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      static const char *choices[] = {
Packit Service fb6fa5
        "Yes", "No", "Sauerkraut", NULL
Packit Service fb6fa5
      };
Packit Service fb6fa5
Packit Service fb6fa5
      g_signal_emit_by_name (op, "ask_question", "Foo\nbar", choices);
Packit Service fb6fa5
    }
Packit Service fb6fa5
  else
Packit Service fb6fa5
    {
Packit Service fb6fa5
      GAskPasswordFlags flags;
Packit Service fb6fa5
Packit Service fb6fa5
      flags = 0;
Packit Service fb6fa5
Packit Service fb6fa5
      if (!dont_ask_password)
Packit Service fb6fa5
          flags |= G_ASK_PASSWORD_NEED_PASSWORD;
Packit Service fb6fa5
Packit Service fb6fa5
      if (!dont_ask_username)
Packit Service fb6fa5
          flags |= G_ASK_PASSWORD_NEED_USERNAME;
Packit Service fb6fa5
Packit Service fb6fa5
      if (!dont_ask_domain)
Packit Service fb6fa5
          flags |= G_ASK_PASSWORD_NEED_DOMAIN;
Packit Service fb6fa5
Packit Service fb6fa5
      if (anonymous)
Packit Service fb6fa5
          flags |= G_ASK_PASSWORD_ANONYMOUS_SUPPORTED;
Packit Service fb6fa5
Packit Service fb6fa5
      if (!dont_save_password)
Packit Service fb6fa5
          flags |= G_ASK_PASSWORD_SAVING_SUPPORTED;
Packit Service fb6fa5
Packit Service fb6fa5
      g_signal_emit_by_name (op, "ask_password",
Packit Service fb6fa5
                             argc > 1 ? argv[1] : "Credentials needed",
Packit Service fb6fa5
                             argc > 2 ? argv[2] : "default user",
Packit Service fb6fa5
                             argc > 3 ? argv[3] : "default domain",
Packit Service fb6fa5
                             flags);
Packit Service fb6fa5
    }
Packit Service fb6fa5
Packit Service fb6fa5
  gtk_main ();
Packit Service fb6fa5
  return 0;
Packit Service fb6fa5
}