Added Add Printer dialog.

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11274 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Michael Pfeiffer
2005-02-06 18:22:40 +00:00
parent db441663b3
commit 8c0bf01979
12 changed files with 431 additions and 103 deletions
@@ -0,0 +1,56 @@
/*
* AddPrinterDlg.cpp
* Copyright 1999-2000 Y.Takagi. All Rights Reserved.
*/
#include "DialogWindow.h"
#include <ListItem.h>
#include <View.h>
class BListView;
class BTextView;
class PrinterData;
class PrinterCap;
class ProtocolClassCap;
class ProtocolClassItem : public BStringItem {
public:
ProtocolClassItem(const ProtocolClassCap* cap);
int getProtocolClass();
const char *getDescription();
private:
const ProtocolClassCap *fProtocolClassCap;
};
class AddPrinterView : public BView {
public:
AddPrinterView(BRect frame, PrinterData *printer_data, const PrinterCap *printer_cap);
~AddPrinterView();
virtual void AttachedToWindow();
void MessageReceived(BMessage *msg);
void Save();
private:
ProtocolClassItem *CurrentSelection();
PrinterData *fPrinterData;
const PrinterCap *fPrinterCap;
BListView *fProtocolClassList;
BTextView *fDescription;
};
class AddPrinterDlg : public DialogWindow {
public:
AddPrinterDlg(PrinterData *printerData, const PrinterCap *printerCap);
void MessageReceived(BMessage *msg);
private:
AddPrinterView *fAddPrinterView;
};
@@ -7,6 +7,7 @@
#define __GRAPHICSDRIVER_H
#include "JobData.h"
#include "PrinterData.h"
#include "PrintProcess.h"
#include "SpoolMetaData.h"
#include "Transport.h"
@@ -45,6 +46,7 @@ protected:
const PrinterData *getPrinterData() const;
const PrinterCap *getPrinterCap() const;
const SpoolMetaData *getSpoolMetaData() const;
int getProtocolClass() const;
int getPageWidth() const;
int getPageHeight() const;
@@ -111,6 +113,11 @@ inline const SpoolMetaData *GraphicsDriver::getSpoolMetaData() const
return fSpoolMetaData;
}
inline int GraphicsDriver::getProtocolClass() const
{
return fPrinterData->getProtocolClass();
}
inline int GraphicsDriver::getPageWidth() const
{
return fPageWidth;
+13 -4
View File
@@ -71,16 +71,23 @@ struct ColorCap : public BaseCap {
: BaseCap(n, d), color(c) {}
};
struct ProtocolClassCap : public BaseCap {
int protocolClass;
string description;
ProtocolClassCap(const string &n, bool d, int p, const string &desc)
: BaseCap(n, d)
, protocolClass(p)
, description(desc) {}
};
class PrinterData;
class PrinterCap {
public:
PrinterCap(const PrinterData *printer_data);
virtual ~PrinterCap();
/*
PrinterCap(const PrinterCap &printer_cap);
PrinterCap &operator = (const PrinterCap &printer_cap);
*/
enum CapID {
kPaper,
kPaperSource,
@@ -89,6 +96,7 @@ public:
kPrintStyle,
kBindingLocation,
kColor,
kProtocolClass,
// Static boolean settings follow.
// For them isSupport() has to be implemented only.
kCopyCommand, // supports printer page copy command?
@@ -99,6 +107,7 @@ public:
virtual const BaseCap **enumCap(CapID) const = 0;
const BaseCap *getDefaultCap(CapID) const;
int getPrinterId() const;
int getProtocolClass() const;
protected:
PrinterCap(const PrinterCap &);
+17 -8
View File
@@ -21,23 +21,20 @@ class PrinterData {
public:
PrinterData(BNode *node = NULL);
~PrinterData();
/*
PrinterData(const PrinterData &printer_data);
PrinterData &operator = (const PrinterData &printer_data);
*/
void load(BNode *node);
// void save(BNode *node = NULL);
void load();
void save();
const string &getDriverName() const;
const string &getPrinterName() const;
const string &getComments() const;
const string &getTransport() const;
int getProtocolClass() const;
// void setDriverName(const char *s) { fDriverName = driver_name; }
void setPrinterName(const char *printer_name);
void setComments(const char *comments);
void setProtocolClass(int protocolClass);
bool getPath(char *path) const;
bool getPath(string &path) const;
protected:
PrinterData(const PrinterData &printer_data);
@@ -48,6 +45,8 @@ private:
string fPrinterName;
string fComments;
string fTransport;
int fProtocolClass;
BNode *fNode;
};
@@ -71,6 +70,11 @@ inline const string &PrinterData::getTransport() const
return fTransport;
}
inline int PrinterData::getProtocolClass() const
{
return fProtocolClass;
}
inline void PrinterData::setPrinterName(const char *printer_name)
{
fPrinterName = printer_name;
@@ -81,4 +85,9 @@ inline void PrinterData::setComments(const char *comments)
fComments = comments;
}
inline void PrinterData::setProtocolClass(int protocolClass)
{
fProtocolClass = protocolClass;
}
#endif // __PRINTERDATA_H
@@ -26,18 +26,26 @@ public:
virtual PrinterCap* InstantiatePrinterCap(PrinterData* printerData) = 0;
virtual GraphicsDriver* InstantiateGraphicsDriver(BMessage* settings, PrinterData* printerData, PrinterCap* printerCap) = 0;
void InitPrinterDataAndCap();
virtual void About();
virtual char* AddPrinter(char* printerName);
BMessage* ConfigPage(BMessage* settings);
BMessage* ConfigJob(BMessage* settings);
BMessage* TakeJob(BFile* printJob, BMessage* settings);
protected:
PrinterData* GetPrinterData() { return fPrinterData; }
PrinterCap* GetPrinterCap() { return fPrinterCap; }
private:
bool ReadSettings(const char* attrName, BMessage* settings);
void WriteSettings(const char* attrName, BMessage* settings);
void MergeWithPreviousSettings(const char* attrName, BMessage* settings);
BNode* fSpoolFolder;
PrinterData* fPrinterData;
PrinterCap* fPrinterCap;
GraphicsDriver* fGraphicsDriver;
};