root/headers/private/print/Printer.h
/*

 * Copyright 2008 Haiku Inc. All rights reserved.

 * Distributed under the terms of the MIT License.

 *

 * Authors:

 *              Julun, <host.haiku@gmx.de

 */
#ifndef _PRINTER_H_
#define _PRINTER_H_


#include <Directory.h>
#include <Entry.h>
#include <image.h>
#include <Message.h>
#include <Node.h>
#include <Path.h>
#include <String.h>


namespace BPrivate {
        namespace Print {


class BPrinter {
public:
                                                        BPrinter();
                                                        BPrinter(const BEntry& entry);
                                                        BPrinter(const BPrinter& printer);
                                                        BPrinter(const node_ref& nodeRef);
                                                        BPrinter(const entry_ref& entryRef);
                                                        BPrinter(const BDirectory& directory);
                                                        ~BPrinter();

                        status_t                SetTo(const BEntry& entry);
                        status_t                SetTo(const node_ref& nodeRef);
                        status_t                SetTo(const entry_ref& entryRef);
                        status_t                SetTo(const BDirectory& directory);
                        void                    Unset();

                        bool                    IsValid() const;
                        status_t                InitCheck() const;

                        bool                    IsFree() const;
                        bool                    IsDefault() const;
                        bool                    IsShareable() const;

                        BString                 Name() const;
                        BString                 State() const;
                        BString                 Driver() const;
                        BString                 Comments() const;
                        BString                 Transport() const;
                        BString                 TransportAddress() const;
                        status_t                DefaultSettings(BMessage& settings);

                        status_t                StartWatching(const BMessenger& listener);
                        void                    StopWatching();

                        BPrinter&               operator=(const BPrinter& printer);
                        bool                    operator==(const BPrinter& printer) const;
                        bool                    operator!=(const BPrinter& printer) const;

private:
                        status_t                _Configure() const;
                        status_t                _ConfigureJob(BMessage& settings);
                        status_t                _ConfigurePage(BMessage& settings);

                        BPath                   _DriverPath() const;
                        image_id                _LoadDriver() const;
                        void                    _AddPrinterName(BMessage& settings);
                        BString                 _ReadAttribute(const char* attribute) const;

private:
                        BMessenger*             fListener;
                        entry_ref               fPrinterEntryRef;
};


        }       // namespace Print

}       // namespace BPrivate



#endif  // _PRINTER_H_