root/src/libs/print/libprint/UIDriver.cpp
/*
 * UIDriver.cpp
 * Copyright 1999-2000 Y.Takagi. All Rights Reserved.
 */

#include <Message.h>

#include "UIDriver.h"
#include "JobData.h"
#include "PrinterData.h"
#include "JobSetupDlg.h"
#include "PageSetupDlg.h"
#include "DbgMsg.h"


UIDriver::UIDriver(BMessage* message, PrinterData *printerData,
        const PrinterCap *printerCap)
        :
        fMsg(message),
        fPrinterData(printerData),
        fPrinterCap(printerCap)
{
}


UIDriver::~UIDriver()
{
}


BMessage*
UIDriver::ConfigPage()
{
        BMessage *clonedMessage = new BMessage(*fMsg);
        JobData *jobData = new JobData(clonedMessage, fPrinterCap,
                JobData::kPageSettings);

        if (PageSetup(jobData, fPrinterData, fPrinterCap) < 0) {
                delete clonedMessage;
                clonedMessage = NULL;
        } else {
                clonedMessage->what = 'okok';
        }

        delete jobData;
        return clonedMessage;
}


BMessage*
UIDriver::ConfigJob()
{
        BMessage *clonedMessage = new BMessage(*fMsg);
        JobData *jobData = new JobData(clonedMessage, fPrinterCap,
                JobData::kJobSettings);

        if (JobSetup(jobData, fPrinterData, fPrinterCap) < 0) {
                delete clonedMessage;
                clonedMessage = NULL;
        } else {
                clonedMessage->what = 'okok';
        }

        delete jobData;
        return clonedMessage;
}


status_t
UIDriver::PageSetup(JobData* jobData, PrinterData* printerData,
        const PrinterCap* printerCap)
{
        PageSetupDlg *dialog = new PageSetupDlg(jobData, printerData, printerCap);
        return dialog->Go();
}


status_t
UIDriver::JobSetup(JobData *jobData, PrinterData *printerData,
        const PrinterCap *printerCap)
{
        JobSetupDlg *dialog = new JobSetupDlg(jobData, printerData, printerCap);
        return dialog->Go();
}