-rw-r--r-- | korganizer/calprinter.h | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/korganizer/calprinter.h b/korganizer/calprinter.h new file mode 100644 index 0000000..7b58f4f --- a/dev/null +++ b/korganizer/calprinter.h @@ -0,0 +1,142 @@ +/* + This file is part of KOrganizer. + + Copyright (c) 1998 Preston Brown + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + As a special exception, permission is given to link this program + with any edition of Qt, and distribute the resulting executable, + without including the source code for Qt in the source distribution. +*/ +#ifndef _CALPRINTER_H +#define _CALPRINTER_H + +// #define KORG_NOPRINTER + +#ifndef KORG_NOPRINTER + +#include <qptrlist.h> + +#include <kdialogbase.h> + +#include <korganizer/baseview.h> + +#include "calprintbase.h" + +using namespace KCal; + +class QVButtonGroup; +class QWidgetStack; +class KPrinter; +class CalPrintDialog; +class KConfig; +class QComboBox; +class QLabel; + + +/** + CalPrinter is a class for printing Calendars. It can print in several + different formats (day, week, month). It also provides a way for setting + up the printer and remembering these preferences. +*/ +class CalPrinter : public QObject, public KOrg::CalPrinterBase +{ + Q_OBJECT + + public: + enum ePrintOrientation { + eOrientPlugin=0, + eOrientPrinter, + eOrientPortrait, + eOrientLandscape + }; + public: + /** + \param par parent widget for dialogs + \param cal calendar to be printed + */ + CalPrinter( QWidget *par, Calendar *cal ); + virtual ~CalPrinter(); + + void init( KPrinter *printer, Calendar *calendar ); + + void setupPrinter(); + + /** + Set date range to be printed. + + \param start Start date + \param end End date + */ + void setDateRange( const QDate &start, const QDate &end ); + + public slots: + void updateConfig(); + + private slots: + void doPrint( CalPrintBase *selectedStyle, bool preview ); + + public: + void preview( PrintType type, const QDate &fd, const QDate &td ); + void print( PrintType type, const QDate &fd, const QDate &td ); + + protected: + QPtrList<CalPrintBase> mPrintPlugins; + + private: + KPrinter *mPrinter; + Calendar *mCalendar; + QWidget *mParent; + KConfig *mConfig; + + CalPrintDialog *mPrintDialog; +}; + +class CalPrintDialog : public KDialogBase +{ + Q_OBJECT + public: + CalPrintDialog( QPtrList<CalPrintBase> plugins, KPrinter *p, + QWidget *parent = 0, const char *name = 0 ); + virtual ~CalPrintDialog(); + CalPrintBase *selectedPlugin(); + CalPrinter::ePrintOrientation orientation() { return mOrientation; } + + public slots: + void setPrintType( int ); + void setPreview( bool ); + + protected slots: + void slotOk(); + void setupPrinter(); + void setPrinterLabel(); +signals: + void okClicked(); + private: + KPrinter *mPrinter; + QVButtonGroup *mTypeGroup; + QWidgetStack *mConfigArea; + QPtrList<CalPrintBase> mPrintPlugins; + QLabel *mPrinterLabel; + QString mPreviewText; + QComboBox *mOrientationSelection; + + CalPrinter::ePrintOrientation mOrientation; +}; + +#endif + +#endif |