summaryrefslogtreecommitdiff
path: root/src/simple-scan.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/simple-scan.c')
-rw-r--r--src/simple-scan.c45
1 files changed, 37 insertions, 8 deletions
diff --git a/src/simple-scan.c b/src/simple-scan.c
index ab59299..b8c3962 100644
--- a/src/simple-scan.c
+++ b/src/simple-scan.c
@@ -24,7 +24,7 @@
#include "book.h"
-static const char *default_device = NULL;
+static ScanDevice *default_device = NULL;
static GUdevClient *udev_client;
@@ -44,7 +44,27 @@ static gboolean debug = FALSE;
static void
update_scan_devices_cb (Scanner *scanner, GList *devices)
{
- ui_set_scan_devices (ui, devices);
+ GList *devices_copy;
+
+ devices_copy = g_list_copy (devices);
+
+ /* If the default device is not detected add it to the list */
+ if (default_device) {
+ GList *i;
+
+ for (i = devices_copy; i; i = i->next) {
+ ScanDevice *device = i->data;
+ if (strcmp (device->name, default_device->name) == 0)
+ break;
+ }
+
+ if (!i)
+ devices_copy = g_list_prepend (devices_copy, default_device);
+ }
+
+ ui_set_scan_devices (ui, devices_copy);
+
+ g_list_free (devices_copy);
}
@@ -343,7 +363,7 @@ get_temporary_filename (const gchar *prefix, const gchar *extension)
/* NOTE: I'm not sure if this is a 100% safe strategy to use g_file_open_tmp(), close and
* use the filename but it appears to work in practise */
- filename = g_strdup_printf ("%s-XXXXXX.%s", prefix, extension);
+ filename = g_strdup_printf ("%sXXXXXX.%s", prefix, extension);
fd = g_file_open_tmp (filename, &path, &error);
g_free (filename);
if (fd < 0) {
@@ -371,7 +391,7 @@ email_cb (SimpleScan *ui, const gchar *profile)
gchar *path;
/* Open a temporary file */
- path = get_temporary_filename ("scanned-document", "pdf");
+ path = get_temporary_filename ("scan", "pdf");
if (path) {
GFile *file;
@@ -389,7 +409,7 @@ email_cb (SimpleScan *ui, const gchar *profile)
gchar *path;
GFile *file;
- path = get_temporary_filename ("scanned-document", "jpg");
+ path = get_temporary_filename ("scan", "jpg");
if (!path) {
saved = FALSE;
break;
@@ -558,7 +578,9 @@ get_options (int argc, char **argv)
fprintf (stderr, "Unknown argument: '%s'\n", arg);
exit (1);
}
- default_device = arg;
+ default_device = g_malloc0 (sizeof (ScanDevice));
+ default_device->name = g_strdup (arg);
+ default_device->label = g_strdup (arg);
}
}
}
@@ -621,8 +643,15 @@ main (int argc, char **argv)
udev_client = g_udev_client_new (udev_subsystems);
g_signal_connect (udev_client, "uevent", G_CALLBACK (on_uevent), NULL);
- if (default_device)
- ui_set_selected_device (ui, default_device);
+ if (default_device) {
+ GList device_list;
+
+ device_list.data = default_device;
+ device_list.next = NULL;
+ device_list.prev = NULL;
+ ui_set_scan_devices (ui, &device_list);
+ ui_set_selected_device (ui, default_device->name);
+ }
ui_start (ui);
scanner_start (scanner);