1/*
2 * Copyright 2001-2008, Haiku. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Philippe Houdoin
7 *		Simon Gauvin
8 *		Michael Pfeiffer
9 */
10
11#include <stdio.h>
12#include <string.h>
13
14
15#include <StorageKit.h>
16#include <String.h>
17
18
19#include "Driver.h"
20#include "PrinterDriver.h"
21
22
23BMessage*
24take_job(BFile *spoolFile, BNode *spoolDir, BMessage *msg)
25{
26	PrinterDriver *driver = instanciate_driver(spoolDir);
27	status_t status = driver->PrintJob(spoolFile, msg);
28	delete driver;
29
30	msg = new BMessage('okok');
31	if (status != B_OK)
32		msg->what = 'baad';
33
34	return msg;
35}
36
37
38BMessage*
39config_page(BNode *spoolDir, BMessage *msg)
40{
41	BString printerName;
42	spoolDir->ReadAttrString("Printer Name", &printerName);
43
44	BMessage *pagesetupMsg = new BMessage(*msg);
45	pagesetupMsg->what = 'okok';
46
47	PrinterDriver *driver = instanciate_driver(spoolDir);
48	if (driver->PageSetup(pagesetupMsg, printerName.String()) != B_OK) {
49		delete pagesetupMsg;
50		pagesetupMsg = NULL;
51	}
52	delete driver;
53	return pagesetupMsg;
54}
55
56
57BMessage*
58config_job(BNode *spoolDir, BMessage *msg)
59{
60	BString printerName;
61	spoolDir->ReadAttrString("Printer Name", &printerName);
62
63	BMessage *jobsetupMsg = new BMessage(*msg);
64	jobsetupMsg->what = 'okok';
65
66	PrinterDriver *driver = instanciate_driver(spoolDir);
67	if (driver->JobSetup(jobsetupMsg, printerName.String()) != B_OK) {
68		delete jobsetupMsg;
69		jobsetupMsg = NULL;
70	}
71	delete driver;
72	return jobsetupMsg;
73}
74
75
76char*
77add_printer(char *printerName)
78{
79	return printerName;
80}
81
82
83BMessage*
84default_settings(BNode* spoolDir)
85{
86	PrinterDriver *driver = instanciate_driver(spoolDir);
87	BMessage *settings = driver->GetDefaultSettings();
88	delete driver;
89	return settings;
90}
91