Implemented some basic BPrintJob methods (hope I didn't screw anything, is there any print server guy around ?). Is there any reason why it is left out of the build (besides being incomplete) ?

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11530 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stefano Ceccherini 2005-03-02 11:15:41 +00:00
parent c11886dbbe
commit 6bb758a26f
2 changed files with 107 additions and 68 deletions

View File

@ -27,9 +27,29 @@ THE SOFTWARE.
*/
#include "PrintJob.h"
#include <Messenger.h>
#include <PrintJob.h>
#include <pr_server.h>
#include <stdlib.h>
#include <string.h>
static BMessenger *sPrintServer = NULL;
static void
EnsureValidMessenger()
{
if (sPrintServer == NULL)
sPrintServer = new BMessenger;
if (!sPrintServer->IsValid())
*sPrintServer = BMessenger(PSRV_SIGNATURE_TYPE);
}
// -----------------------------------------------------------------------------
BPrintJob::BPrintJob(const char *job_name)
:
print_job_name(NULL),
@ -40,55 +60,54 @@ BPrintJob::BPrintJob(const char *job_name)
default_setup_msg(NULL),
m_curPageHeader(NULL)
{
print_job_name = new char[strlen(job_name)+1];
::strcpy(print_job_name, job_name);
print_job_name = strdup(job_name);
}
// -----------------------------------------------------------------------------
BPrintJob::~BPrintJob()
{
delete print_job_name;
free(print_job_name);
}
// -----------------------------------------------------------------------------
void
BPrintJob::BeginJob()
{
}
// -----------------------------------------------------------------------------
void
BPrintJob::CommitJob()
{
}
// -----------------------------------------------------------------------------
status_t
BPrintJob::ConfigJob()
{
return B_OK;
}
// -----------------------------------------------------------------------------
void
BPrintJob::CancelJob()
{
}
// -----------------------------------------------------------------------------
status_t
BPrintJob::ConfigPage()
{
return B_OK;
}
// -----------------------------------------------------------------------------
void
BPrintJob::SpoolPage()
{
}
// -----------------------------------------------------------------------------
bool
BPrintJob::CanContinue()
{
@ -97,7 +116,6 @@ BPrintJob::CanContinue()
}
// -----------------------------------------------------------------------------
void
BPrintJob::DrawView(BView *a_view,
BRect a_rect,
@ -106,64 +124,84 @@ BPrintJob::DrawView(BView *a_view,
}
// -----------------------------------------------------------------------------
BMessage *
BPrintJob::Settings()
{
return NULL;
BMessage *message = NULL;
if (setup_msg != NULL)
message = new BMessage(*setup_msg);
return message;
}
// -----------------------------------------------------------------------------
void
BPrintJob::SetSettings(BMessage *a_msg)
{
}
// -----------------------------------------------------------------------------
bool
BPrintJob::IsSettingsMessageValid(BMessage *a_msg) const
BPrintJob::IsSettingsMessageValid(BMessage *message) const
{
return true;
const char *messageName = NULL;
char *printerName = GetCurrentPrinterName();
bool result = false;
// The passed message is valid if it contains the right printer name.
if (message != NULL
&& message->FindString("printer_name", &messageName) == B_OK
&& strcmp(printerName, messageName) == 0)
result = true;
free(printerName);
return result;
}
// -----------------------------------------------------------------------------
BRect
BPrintJob::PaperRect()
{
if (!paper_size.IsValid())
LoadDefaultSettings();
return paper_size;
}
// -----------------------------------------------------------------------------
BRect
BPrintJob::PrintableRect()
{
if (!usable_size.IsValid())
LoadDefaultSettings();
return usable_size;
}
// -----------------------------------------------------------------------------
void
BPrintJob::GetResolution(int32 *xdpi,
int32 *ydpi)
BPrintJob::GetResolution(int32 *xdpi, int32 *ydpi)
{
*xdpi = v_xres;
*ydpi = v_yres;
}
// -----------------------------------------------------------------------------
int32
BPrintJob::FirstPage()
{
return first_page;
}
// -----------------------------------------------------------------------------
int32
BPrintJob::LastPage()
{
return last_page;
}
// -----------------------------------------------------------------------------
int32
BPrintJob::PrinterType(void *) const
{
@ -174,92 +212,92 @@ BPrintJob::PrinterType(void *) const
#pragma mark ----- PRIVATE -----
#endif
// -----------------------------------------------------------------------------
void
BPrintJob::RecurseView(BView *v,
BPoint origin,
BPicture *p,
BRect r)
BPrintJob::RecurseView(BView *view, BPoint origin,
BPicture *picture, BRect rect)
{
}
// -----------------------------------------------------------------------------
void
BPrintJob::MangleName(char *filename)
{
}
// -----------------------------------------------------------------------------
void
BPrintJob::HandlePageSetup(BMessage *setup)
{
}
// -----------------------------------------------------------------------------
bool
BPrintJob::HandlePrintSetup(BMessage *setup)
{
return true;
}
// -----------------------------------------------------------------------------
void
BPrintJob::NewPage()
{
}
// -----------------------------------------------------------------------------
void
BPrintJob::EndLastPage()
{
}
// -----------------------------------------------------------------------------
void
BPrintJob::AddSetupSpec()
{
}
// -----------------------------------------------------------------------------
void
BPrintJob::AddPicture(BPicture *picture,
BRect *rect,
BPoint where)
BPrintJob::AddPicture(BPicture *picture, BRect *rect, BPoint where)
{
}
// -----------------------------------------------------------------------------
char *
BPrintJob::GetCurrentPrinterName() const
{
return NULL;
{
EnsureValidMessenger();
BMessage message(PSRV_GET_ACTIVE_PRINTER);
BMessage reply;
const char *printerName = NULL;
if (sPrintServer->SendMessage(&message, &reply) == B_OK)
reply.FindString("printer_name", &printerName);
return printerName != NULL ? strdup(printerName) : NULL;
}
// -----------------------------------------------------------------------------
void
BPrintJob::LoadDefaultSettings()
{
EnsureValidMessenger();
BMessage message(PSRV_GET_DEFAULT_SETTINGS);
BMessage reply;
sPrintServer->SendMessage(&message, &reply);
if (reply.HasRect("paper_rect"))
reply.FindRect("paper_rect", &paper_size);
if (reply.HasRect("printable_rect"))
reply.FindRect("printable_rect", &usable_size);
}
// -----------------------------------------------------------------------------
void
BPrintJob::_ReservedPrintJob1()
{
}
void
BPrintJob::_ReservedPrintJob2()
{
}
void
BPrintJob::_ReservedPrintJob3()
{
}
void
BPrintJob::_ReservedPrintJob4()
{
}
void BPrintJob::_ReservedPrintJob1() {}
void BPrintJob::_ReservedPrintJob2() {}
void BPrintJob::_ReservedPrintJob3() {}
void BPrintJob::_ReservedPrintJob4() {}

View File

@ -30,6 +30,7 @@ INTERFACE_KIT_SOURCE =
Point.cpp
Polygon.cpp
PopUpMenu.cpp
#PrintJob.cpp
PrivateScreen.cpp
RadioButton.cpp
Rect.cpp