root/headers/private/print/PrinterRoster.h
/*
 * Copyright 2008 Haiku Inc. All rights reserved.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *              Julun, <host.haiku@gmx.de
 */
#ifndef _PRINTER_ROSTER_H_
#define _PRINTER_ROSTER_H_


#include <Directory.h>
#include <Messenger.h>
#include <Node.h>
#include <String.h>


namespace BPrivate {
        namespace Print {


class BPrinter;


class BPrinterRoster {
public:
                                                        BPrinterRoster();
                                                        ~BPrinterRoster();

                int32                           CountPrinters();

                status_t                        GetNextPrinter(BPrinter* printer);
                status_t                        GetDefaultPrinter(BPrinter* printer);
                status_t                        FindPrinter(const BString& name, BPrinter* printer);

                status_t                        Rewind();

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

private:
                                                        BPrinterRoster(const BPrinterRoster& printerRoster);
                BPrinterRoster&         operator=(const BPrinterRoster& printerRoster);

private:
                BMessenger*                     fListener;

                node_ref                        fUserPrintersNodRef;
                BDirectory                      fUserPrintersDirectory;
};


        }       // namespace Print
}       // namespace BPrivate


#endif  // _PRINTER_ROSTER_H_