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
+105 -67
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) BPrintJob::BPrintJob(const char *job_name)
: :
print_job_name(NULL), print_job_name(NULL),
@@ -40,55 +60,54 @@ BPrintJob::BPrintJob(const char *job_name)
default_setup_msg(NULL), default_setup_msg(NULL),
m_curPageHeader(NULL) m_curPageHeader(NULL)
{ {
print_job_name = new char[strlen(job_name)+1]; print_job_name = strdup(job_name);
::strcpy(print_job_name, job_name);
} }
// -----------------------------------------------------------------------------
BPrintJob::~BPrintJob() BPrintJob::~BPrintJob()
{ {
delete print_job_name; free(print_job_name);
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::BeginJob() BPrintJob::BeginJob()
{ {
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::CommitJob() BPrintJob::CommitJob()
{ {
} }
// -----------------------------------------------------------------------------
status_t status_t
BPrintJob::ConfigJob() BPrintJob::ConfigJob()
{ {
return B_OK; return B_OK;
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::CancelJob() BPrintJob::CancelJob()
{ {
} }
// -----------------------------------------------------------------------------
status_t status_t
BPrintJob::ConfigPage() BPrintJob::ConfigPage()
{ {
return B_OK; return B_OK;
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::SpoolPage() BPrintJob::SpoolPage()
{ {
} }
// -----------------------------------------------------------------------------
bool bool
BPrintJob::CanContinue() BPrintJob::CanContinue()
{ {
@@ -97,7 +116,6 @@ BPrintJob::CanContinue()
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::DrawView(BView *a_view, BPrintJob::DrawView(BView *a_view,
BRect a_rect, BRect a_rect,
@@ -106,64 +124,84 @@ BPrintJob::DrawView(BView *a_view,
} }
// -----------------------------------------------------------------------------
BMessage * BMessage *
BPrintJob::Settings() BPrintJob::Settings()
{ {
return NULL; BMessage *message = NULL;
if (setup_msg != NULL)
message = new BMessage(*setup_msg);
return message;
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::SetSettings(BMessage *a_msg) BPrintJob::SetSettings(BMessage *a_msg)
{ {
} }
// -----------------------------------------------------------------------------
bool 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 BRect
BPrintJob::PaperRect() BPrintJob::PaperRect()
{ {
if (!paper_size.IsValid())
LoadDefaultSettings();
return paper_size; return paper_size;
} }
// -----------------------------------------------------------------------------
BRect BRect
BPrintJob::PrintableRect() BPrintJob::PrintableRect()
{ {
if (!usable_size.IsValid())
LoadDefaultSettings();
return usable_size; return usable_size;
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::GetResolution(int32 *xdpi, BPrintJob::GetResolution(int32 *xdpi, int32 *ydpi)
int32 *ydpi)
{ {
*xdpi = v_xres; *xdpi = v_xres;
*ydpi = v_yres; *ydpi = v_yres;
} }
// -----------------------------------------------------------------------------
int32 int32
BPrintJob::FirstPage() BPrintJob::FirstPage()
{ {
return first_page; return first_page;
} }
// -----------------------------------------------------------------------------
int32 int32
BPrintJob::LastPage() BPrintJob::LastPage()
{ {
return last_page; return last_page;
} }
// -----------------------------------------------------------------------------
int32 int32
BPrintJob::PrinterType(void *) const BPrintJob::PrinterType(void *) const
{ {
@@ -174,92 +212,92 @@ BPrintJob::PrinterType(void *) const
#pragma mark ----- PRIVATE ----- #pragma mark ----- PRIVATE -----
#endif #endif
// -----------------------------------------------------------------------------
void void
BPrintJob::RecurseView(BView *v, BPrintJob::RecurseView(BView *view, BPoint origin,
BPoint origin, BPicture *picture, BRect rect)
BPicture *p,
BRect r)
{ {
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::MangleName(char *filename) BPrintJob::MangleName(char *filename)
{ {
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::HandlePageSetup(BMessage *setup) BPrintJob::HandlePageSetup(BMessage *setup)
{ {
} }
// -----------------------------------------------------------------------------
bool bool
BPrintJob::HandlePrintSetup(BMessage *setup) BPrintJob::HandlePrintSetup(BMessage *setup)
{ {
return true; return true;
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::NewPage() BPrintJob::NewPage()
{ {
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::EndLastPage() BPrintJob::EndLastPage()
{ {
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::AddSetupSpec() BPrintJob::AddSetupSpec()
{ {
} }
// -----------------------------------------------------------------------------
void void
BPrintJob::AddPicture(BPicture *picture, BPrintJob::AddPicture(BPicture *picture, BRect *rect, BPoint where)
BRect *rect,
BPoint where)
{ {
} }
// -----------------------------------------------------------------------------
char * char *
BPrintJob::GetCurrentPrinterName() const 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 void
BPrintJob::LoadDefaultSettings() 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 void BPrintJob::_ReservedPrintJob3() {}
BPrintJob::_ReservedPrintJob1() void BPrintJob::_ReservedPrintJob4() {}
{
}
void
BPrintJob::_ReservedPrintJob2()
{
}
void
BPrintJob::_ReservedPrintJob3()
{
}
void
BPrintJob::_ReservedPrintJob4()
{
}
+1
View File
@@ -30,6 +30,7 @@ INTERFACE_KIT_SOURCE =
Point.cpp Point.cpp
Polygon.cpp Polygon.cpp
PopUpMenu.cpp PopUpMenu.cpp
#PrintJob.cpp
PrivateScreen.cpp PrivateScreen.cpp
RadioButton.cpp RadioButton.cpp
Rect.cpp Rect.cpp