cdesktopenv/cde/programs/dtprintinfo/UI/DtPrinterIcon.h

150 lines
4.1 KiB
C++

/*
* CDE - Common Desktop Environment
*
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
*
* These libraries and programs are free software; you can
* redistribute them and/or modify them under the terms of the GNU
* Lesser General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* These libraries and programs are distributed in the hope that
* they will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with these libraries and programs; if not, write
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301 USA
*/
/* $XConsortium: DtPrinterIcon.h /main/3 1995/11/06 09:36:06 rswiston $ */
#ifndef DTPRINTERICON_H
#define DTPRINTERICON_H
#include "IconObj.h"
#include "Queue.h"
#include "Container.h"
#include "DtDND.h"
extern const char *PROPS_PRINTER_ID;
extern const char *PRINTER_ID;
extern const char *STATUS_FLAG;
extern const char *PRINTER_ICON_FILE;
typedef enum
{
SINGLE_PRINTER,
PRINT_MANAGER,
CONFIG_PRINTERS,
INITIALIZE_PRINTERS
} PrinterApplicationMode;
class DtMainW;
class DtPrtProps;
class IconObj;
class Container;
class Button;
class DtDetailsLabel;
class Prompt;
class DtPrinterContainer : public Container
{
public:
DtDND *dnd;
DtPrinterContainer(char *category, AnyUI *parent, char *name)
: Container(category, parent, name, SCROLLED_HORIZONTAL_ROW_COLUMN) { }
~DtPrinterContainer() { delete dnd; }
boolean SetVisiblity(boolean flag)
{
Container::SetVisiblity(flag);
dnd->UpdateActivity(flag);
return true;
}
};
class DtPrinterIcon : public IconObj
{
friend void DndCB(BaseUI *, char **, int *, DNDProtocol);
friend void OpenCloseCB(void *);
friend void AddPrintActionCB(BaseUI *, void *);
friend void ReloadNotifyCB(void *);
friend char * GetPrinterIcon(const char *, PrinterApplicationMode);
friend char * GetPrinterLabel(const char *, PrinterApplicationMode);
static void DndCB(BaseUI *, char **, int *, DNDProtocol);
static void OpenCloseCB(void *);
static void AddPrintActionCB(BaseUI *, void *);
static void ReloadNotifyCB(void *);
static char * GetPrinterIcon(const char *, PrinterApplicationMode);
static char * GetPrinterLabel(const char *, PrinterApplicationMode);
private:
static char homeDir[];
DtMainW *mainw;
DtDND *dnd;
Queue *queue;
Button *expand;
IconObj *flag;
DtDetailsLabel *details_label;
DtPrinterContainer *container;
DtPrtProps *props;
boolean _previous_show_only_my_jobs;
PrinterApplicationMode app_mode;
boolean _print_queue_up;
Prompt **status;
#ifdef aix
boolean *_print_device_up;
int n_devices;
#else
boolean _print_device_up;
#endif
void ShowFlag();
boolean SetVisiblity(boolean);
void NotifyVisiblity(BaseUI *);
boolean HandleHelpRequest();
boolean SetIcon(IconStyle);
boolean SetOpen(boolean);
boolean SetName(char *name);
public:
boolean updating;
boolean waitForChildren;
DtPrinterIcon(DtMainW *, AnyUI *parent, Queue *queue,
PrinterApplicationMode app_mode = SINGLE_PRINTER);
~DtPrinterIcon();
void DisplayProps();
void Update();
void UpdateExpand();
void PrintQueueUp(boolean);
boolean PrintQueueUp() { return _print_queue_up; }
#ifdef aix
void PrintDeviceUp(boolean, int index = 0);
boolean PrintDeviceUp(int index = 0);
#else
void PrintDeviceUp(boolean);
boolean PrintDeviceUp() { return _print_device_up; }
#endif
void ShowDetailsLabel(IconStyle, boolean is_visible);
char *CreateActionFile();
char *Description();
boolean PrintActionExists();
DtPrinterContainer *JobContainer() { return container; }
DtPrinterContainer *CreateContainer();
PrinterApplicationMode PrinterAppMode() { return app_mode; }
const char *HomeDir() { return homeDir; }
Queue *QueueObj() { return queue; }
};
#endif // DTPRINTERICON_H