25#include <tqcombobox.h>
29#include <tqlistview.h>
31#include <tqpushbutton.h>
32#include <tqradiobutton.h>
34#include <tdeabc/addresseelist.h>
35#include <tdeapplication.h>
38#include <kdialogbase.h>
43#include "detailledstyle.h"
44#include "mikesstyle.h"
47#include "printprogress.h"
48#include "printstyle.h"
49#include "printsortmode.h"
51#include "printingwizard.h"
53using namespace KABPrinting;
55PrintingWizard::PrintingWizard( KPrinter *printer, TDEABC::AddressBook* ab,
56 const TQStringList& selection, TQWidget *parent,
58 : KWizard( parent, name ), mPrinter( printer ), mAddressBook( ab ),
59 mSelection( selection ), mStyle( 0 )
61 mSelectionPage =
new SelectionPage(
this );
62 mSelectionPage->setUseSelection( !selection.isEmpty() );
63 insertPage( mSelectionPage, i18n(
"Choose Contacts to Print"), -1 );
67 for ( Filter::List::ConstIterator it = mFilters.begin(); it != mFilters.end(); ++it )
68 filters.append( (*it).name() );
70 mSelectionPage->setFilters( filters );
72 mSelectionPage->setCategories( KABPrefs::instance()->customCategories() );
74 setAppropriate( mSelectionPage,
true );
77 mStylePage =
new StylePage( mAddressBook,
this );
78 connect( mStylePage, TQ_SIGNAL( styleChanged(
int) ), TQ_SLOT(
slotStyleSelected(
int) ) );
79 insertPage( mStylePage, i18n(
"Choose Printing Style"), -1 );
83 if ( mStyleFactories.count() > 0 )
87PrintingWizard::~PrintingWizard()
99 mStyleFactories.append(
new DetailledPrintStyleFactory(
this ) );
100 mStyleFactories.append(
new MikesStyleFactory(
this ) );
102 mStylePage->clearStyleNames();
103 for ( uint i = 0; i < mStyleFactories.count(); ++i )
104 mStylePage->addStyleName( mStyleFactories.at( i )->description() );
109 if ( index < 0 || (uint)index >= mStyleFactories.count() )
112 setFinishEnabled( mStylePage,
false );
117 if ( mStyleList.at( index ) != 0 )
118 mStyle = mStyleList.at( index );
121 kdDebug(5720) <<
"PrintingWizardImpl::slotStyleSelected: "
122 <<
"creating print style "
124 mStyle = factory->create();
125 mStyleList.insert( index, mStyle );
130 mStylePage->setPreview( mStyle->
preview() );
132 setFinishEnabled( page( pageCount() - 1 ),
true );
154 insertPage( progress, i18n(
"Print Progress" ), -1 );
155 showPage( progress );
156 tdeApp->processEvents();
160 TDEABC::AddresseeList list;
162 if ( mSelectionPage->useSelection() ) {
163 TQStringList::ConstIterator it;
164 for ( it = mSelection.begin(); it != mSelection.end(); ++it ) {
165 TDEABC::Addressee addr =
addressBook()->findByUid( *it );
166 if ( !addr.isEmpty() )
169 }
else if ( mSelectionPage->useFilters() ) {
171 Filter::List::ConstIterator filterIt;
172 for ( filterIt = mFilters.begin(); filterIt != mFilters.end(); ++filterIt )
173 if ( (*filterIt).name() == mSelectionPage->filter() )
176 TDEABC::AddressBook::ConstIterator it;
178 if ( (*filterIt).filterAddressee( *it ) )
182 }
else if ( mSelectionPage->useCategories() ) {
183 TQStringList categories = mSelectionPage->categories();
184 TDEABC::AddressBook::ConstIterator it;
186 const TQStringList tmp( (*it).categories() );
187 TQStringList::ConstIterator tmpIt;
188 for ( tmpIt = tmp.begin(); tmpIt != tmp.end(); ++tmpIt )
189 if ( categories.contains( *tmpIt ) ) {
196 TDEABC::AddressBook::ConstIterator it;
201 list.setReverseSorting( !mStylePage->sortAscending() );
203#if KDE_IS_VERSION(3,3,91)
204 PrintSortMode sortMode( mStylePage->sortField() );
205 list.sortByMode( &sortMode );
207 list.sortByField( mStylePage->sortField() );
211 kdDebug(5720) <<
"PrintingWizardImpl::print: printing "
212 << list.count() <<
" contacts." << endl;
215 setBackEnabled( progress,
false );
216 cancelButton()->setEnabled(
false );
217 mStyle->
print( list, progress );
220#include "printingwizard.moc"
void restore(TDEConfig *config)
Loads the filter from the config file.
This defines a simple widget to display print progress information.
The factories are used to have all object of the respective print style created in one place.
virtual TQString description() const =0
Overload this method to provide a one-liner description for your print style.
bool preferredSortType()
Returns the preferred sort type.
TDEABC::Field * preferredSortField()
Returns the preferred sort criterion field.
const TQPixmap & preview()
Reimplement this method to provide a preview of what will be printed.
void showPages()
Show all style specific pages in the wizard.
void hidePages()
Hide all style specific pages in the wizard.
virtual void print(const TDEABC::Addressee::List &contacts, PrintProgress *)=0
Reimplement this method to actually print.
TDEABC::AddressBook * addressBook()
Retrieve the document object.
void print()
Perform the actual printing.
void accept()
Overloaded accept slot.
void registerStyles()
Modify this method to add a new PrintStyle.
KPrinter * printer()
Retrieve the printer to be used.
void slotStyleSelected(int)
A print style has been selected.