26#include <tqvbuttongroup.h>
27#include <tqwidgetstack.h>
28#include <tqradiobutton.h>
30#include <tqpushbutton.h>
31#include <tqcombobox.h>
34#include <tqsplitter.h>
37#include <tdesimpleconfig.h>
40#include "korganizer/corehelper.h"
42#include "calprinter.h"
44#include "calprinter.moc"
46#include "calprintdefaultplugins.h"
49 : TQObject( parent,
"CalPrinter" )
52 mConfig =
new TDESimpleConfig(
"korganizer_printing.rc" );
58CalPrinter::~CalPrinter()
60 kdDebug(5850) <<
"~CalPrinter()" << endl;
62 mPrintPlugins.clear();
67void CalPrinter::init(
Calendar *calendar )
71 mPrintPlugins.clear();
72 mPrintPlugins.setAutoDelete(
true );
74 mPrintPlugins = mCoreHelper->loadPrintPlugins();
75 mPrintPlugins.prepend(
new CalPrintTodos() );
76 mPrintPlugins.prepend(
new CalPrintMonth() );
77 mPrintPlugins.prepend(
new CalPrintWeek() );
78 mPrintPlugins.prepend(
new CalPrintDay() );
79 mPrintPlugins.prepend(
new CalPrintIncidence() );
81 KOrg::PrintPlugin::List::Iterator it = mPrintPlugins.begin();
82 for ( ; it != mPrintPlugins.end(); ++it ) {
84 (*it)->setConfig( mConfig );
85 (*it)->setCalendar( mCalendar );
86 (*it)->setKOrgCoreHelper( mCoreHelper );
87 (*it)->doLoadConfig();
94 KOrg::PrintPlugin::List::Iterator it = mPrintPlugins.begin();
95 for ( ; it != mPrintPlugins.end(); ++it ) {
96 (*it)->setDateRange( fd, td );
100void CalPrinter::print(
int type,
const TQDate &fd,
const TQDate &td,
101 Incidence::List selectedIncidences,
bool preview )
103 KOrg::PrintPlugin::List::Iterator it = mPrintPlugins.begin();
104 for ( it = mPrintPlugins.begin(); it != mPrintPlugins.end(); ++it ) {
105 (*it)->setSelectedIncidences( selectedIncidences );
107 CalPrintDialog printDialog( mPrintPlugins, mParent );
108 printDialog.setOrientation( CalPrinter::ePrintOrientation( mConfig->readNumEntry(
"Orientation", 1 ) ) );
109 printDialog.setPreview( preview );
110 printDialog.setPrintType( type );
113 if ( printDialog.exec() == TQDialog::Accepted ) {
114 mConfig->writeEntry(
"Orientation", printDialog.orientation() );
117 for ( it = mPrintPlugins.begin(); it != mPrintPlugins.end(); ++it ) {
118 (*it)->doSaveConfig();
120 doPrint( printDialog.selectedPlugin(), printDialog.orientation(), preview );
122 for ( it = mPrintPlugins.begin(); it != mPrintPlugins.end(); ++it ) {
123 (*it)->setSelectedIncidences( Incidence::List() );
128 CalPrinter::ePrintOrientation dlgorientation,
bool preview )
130 if ( !selectedStyle ) {
131 KMessageBox::error( mParent,
132 i18n(
"Unable to print, no valid print style was returned."),
133 i18n(
"Printing error") );
138 printer.setPreviewOnly( preview );
139 switch ( dlgorientation ) {
143 case eOrientPortrait:
144 printer.setOrientation( KPrinter::Portrait );
146 case eOrientLandscape:
147 printer.setOrientation( KPrinter::Landscape );
154 if ( preview || printer.setup( mParent, i18n(
"Print Calendar") ) ) {
155 selectedStyle->
doPrint( &printer );
161void CalPrinter::updateConfig()
169CalPrintDialog::CalPrintDialog( KOrg::PrintPlugin::List plugins,
170 TQWidget *parent,
const char *name )
171 : KDialogBase( parent, name, true, i18n(
"Print"), Ok | Cancel )
173 TQVBox *page = makeVBoxMainWidget();
175 TQSplitter *splitter =
new TQSplitter( page );
176 splitter->setOrientation( TQt::Horizontal );
178 mTypeGroup =
new TQVButtonGroup( i18n(
"Print Style"), splitter,
"buttonGroup" );
184 TQWidget *splitterRight =
new TQWidget( splitter,
"splitterRight" );
185 TQGridLayout *splitterRightLayout =
new TQGridLayout( splitterRight );
186 splitterRightLayout->setMargin( marginHint() );
187 splitterRightLayout->setSpacing( spacingHint() );
189 mConfigArea =
new TQWidgetStack( splitterRight,
"configWidgetStack" );
190 splitterRightLayout->addMultiCellWidget( mConfigArea, 0,0, 0,1 );
192 TQLabel *orientationLabel =
new TQLabel( i18n(
"Page &orientation:"),
193 splitterRight,
"orientationLabel" );
194 splitterRightLayout->addWidget( orientationLabel, 1, 0 );
196 mOrientationSelection =
new TQComboBox( splitterRight,
"orientationCombo" );
197 mOrientationSelection->insertItem( i18n(
"Use Default Orientation of Selected Style") );
198 mOrientationSelection->insertItem( i18n(
"Use Printer Default") );
199 mOrientationSelection->insertItem( i18n(
"Portrait") );
200 mOrientationSelection->insertItem( i18n(
"Landscape") );
201 splitterRightLayout->addWidget( mOrientationSelection, 1, 1 );
204 connect( mTypeGroup, TQ_SIGNAL( clicked(
int ) ), TQ_SLOT( setPrintType(
int ) ) );
205 orientationLabel->setBuddy( mOrientationSelection );
210 for ( KOrg::PrintPlugin::List::Iterator it = plugins.begin();
211 it != plugins.end(); ++it ) {
212 int newid = mConfigArea->addWidget( (*it)->configWidget( mConfigArea ), (*it)->sortID() );
213 mPluginIDs[newid] = (*it);
216 TQMap<int, KOrg::PrintPlugin*>::ConstIterator mapit;
217 for ( mapit = mPluginIDs.begin(); mapit != mPluginIDs.end(); ++mapit ) {
219 TQRadioButton *radioButton =
new TQRadioButton( p->
description(), mTypeGroup );
220 radioButton->setEnabled( p->
enabled() );
221 mTypeGroup->insert( radioButton, mapit.key() );
225 setMinimumSize( minimumSizeHint() );
226 resize( minimumSizeHint() );
229CalPrintDialog::~CalPrintDialog()
233void CalPrintDialog::setPreview(
bool preview)
235 setButtonOK( preview ? i18n(
"&Preview") : KStdGuiItem::print() );
238void CalPrintDialog::setPrintType(
int i )
240 mTypeGroup->setButton( i );
241 mConfigArea->raiseWidget( i );
244void CalPrintDialog::setOrientation( CalPrinter::ePrintOrientation orientation )
246 mOrientation = orientation;
247 mOrientationSelection->setCurrentItem( mOrientation );
252 int id = mTypeGroup->selectedId();
253 if ( mPluginIDs.contains(
id ) ) {
254 return mPluginIDs[id];
260void CalPrintDialog::slotOk()
262 mOrientation = (CalPrinter::ePrintOrientation)mOrientationSelection->currentItem();
264 TQMap<int, KOrg::PrintPlugin*>::Iterator it = mPluginIDs.begin();
265 for ( ; it != mPluginIDs.end(); ++it ) {
270 KDialogBase::slotOk();
CalPrinter(TQWidget *par, Calendar *cal, KOrg::CoreHelper *helper)
void setDateRange(const TQDate &start, const TQDate &end)
Set date range to be printed.
Base class for KOrganizer printing classes.
virtual void doPrint(KPrinter *printer)=0
Actually do the printing.
virtual TQString description()=0
Returns short description of print format.
virtual KPrinter::Orientation defaultOrientation()
Orientation of printout.
virtual bool enabled()
Returns true if the plugin should be enabled; false otherwise.
virtual void readSettingsWidget()
Read settings from configuration widget and apply them to current object.