00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#ifndef __ko_document_h__
00023
#define __ko_document_h__
00024
00025
namespace std { }
00026
using namespace std;
00027
#include <qwmatrix.h>
00028
00029
#include <kparts/part.h>
00030
#include <kurl.h>
00031
#include <kservice.h>
00032
#include <koGlobal.h>
00033
00034
class QDomElement;
00035
class QDomDocument;
00036
00037
class KoStore;
00038
class KoMainWindow;
00039
00040
class KoChild;
00041
class KoDocumentChild;
00042
class KoView;
00043
class KoDocumentInfo;
00044
class DCOPObject;
00045
00046
00054 class KoDocument :
public KParts::ReadWritePart
00055 {
00056 Q_OBJECT
00057 Q_PROPERTY(
QCString dcopObjectId READ dcopObjectId)
00058 Q_PROPERTY(
bool backupFile READ backupFile WRITE setBackupFile )
00059
00060
public:
00061
00078
KoDocument(
QWidget* parentWidget,
00079
const char* widgetName,
00080
QObject* parent,
00081
const char* name,
00082
bool singleViewMode =
false );
00083
00090
virtual ~KoDocument();
00091
00096
bool isSingleViewMode()
const;
00097
00101
bool isEmbedded()
const;
00102
00118
virtual KAction *
action(
const QDomElement &element )
const;
00119
00124
virtual QDomDocument domDocument()
const;
00125
00129
virtual void setManager( KParts::PartManager *manager );
00130
00135
virtual bool openURL(
const KURL & url );
00136
00147
bool import(
const KURL &url );
00148
00159
bool exp0rt(
const KURL &url );
00160
00167
virtual void setReadWrite(
bool readwrite =
true );
00168
00179
static QCString readNativeFormatMimeType( KInstance *instance = 0L );
00180
00181
static KService::Ptr readNativeService( KInstance *instance = 0L );
00182
00189
virtual QCString nativeFormatMimeType()
const;
00190
00191 KService::Ptr nativeService();
00192
00193
enum { SaveAsKOffice1dot1 = 1, SaveAsDirectoryStore = 2 };
00194
00198
QCString mimeType()
const;
00199
00205
void setMimeType(
const QCString & mimeType );
00206
00213
void setOutputMimeType(
const QCString & mimeType,
int specialOutputFlag = 0 );
00214
QCString outputMimeType()
const;
00215
int specialOutputFlag()
const;
00216
00230
bool confirmNonNativeSave(
const bool exporting )
const;
00231
void setConfirmNonNativeSave(
const bool exporting,
const bool on );
00232
00239
void setErrorMessage(
const QString& errMsg );
00240
00244
KoView *
createView(
QWidget *parent = 0,
const char *name = 0 );
00245
00252
virtual void addView(
KoView *view );
00253
00257
virtual void removeView(
KoView *view );
00258
00262
const QPtrList<KoView> &
views()
const;
00263
00267
int viewCount()
const;
00268
00272
virtual KParts::Part *
hitTest(
QWidget *widget,
const QPoint &globalPos );
00273
00290
virtual KoDocument *hitTest(
const QPoint &pos,
const QWMatrix &matrix =
QWMatrix() );
00291
00302
virtual void paintEverything(
QPainter &painter,
const QRect &rect,
bool transparent =
false,
00303
KoView *view = 0L,
double zoomX = 1.0,
double zoomY = 1.0 );
00304
00309
virtual QPixmap generatePreview(
const QSize& size );
00310
00322
virtual void paintChildren(
QPainter &painter,
const QRect &rect,
KoView *view,
double zoomX = 1.0,
double zoomY = 1.0 );
00323
00335
virtual void paintChild(
KoDocumentChild *
child,
QPainter &painter,
KoView *view,
00336
double zoomX = 1.0,
double zoomY = 1.0 );
00337
00351
virtual void paintContent(
QPainter &painter,
const QRect &rect,
bool transparent =
false,
00352
double zoomX = 1.0,
double zoomY = 1.0 ) = 0;
00353
00357
bool checkAutoSaveFile();
00358
00363
virtual bool initDoc() = 0;
00364
00365
00366
enum InitDocFlags { InitDocAppStarting, InitDocFileNew, InitDocFileClose, InitDocEmbedded };
00373 InitDocFlags
initDocFlags()
const;
00377
void setInitDocFlags( InitDocFlags flags );
00378
00383
virtual void setModified(
bool _mod );
00384
00390
virtual void setTitleModified();
00391
00395 virtual bool isEmpty()
const {
return m_bEmpty; }
00396
00403 virtual void setEmpty() { m_bEmpty =
true; }
00404
00410
virtual bool loadFromStore(
KoStore* store,
const QString& url );
00411
00416
virtual bool saveToStore(
KoStore* store,
const QString& path );
00417
00426
virtual bool loadXML(
QIODevice *,
const QDomDocument & doc ) = 0;
00427
00432
virtual QDomDocument saveXML();
00433
00440
QDomDocument createDomDocument(
const QString& tagName,
const QString& version )
const;
00441
00450
static QDomDocument createDomDocument(
const QString& appName,
const QString& tagName,
const QString& version );
00451
00457
virtual bool saveToStream(
QIODevice * dev );
00458
00465
virtual bool loadNativeFormat(
const QString & file );
00466
00472
virtual bool saveNativeFormat(
const QString & file );
00473
00478
void setAutoSave(
int delay );
00479
00483
bool isAutosaving();
00484
00490
void setCheckAutoSaveFile(
bool b );
00491
00497
void setAutoErrorHandlingEnabled(
bool b );
00498
00503
bool isAutoErrorHandlingEnabled();
00504
00509 static int defaultAutoSave() {
return s_defaultAutoSave; }
00510
00515
const QPtrList<KoDocumentChild>&
children() const;
00516
00524
KoDocumentChild *child(
KoDocument *doc );
00525
00530 KoDocumentInfo *documentInfo() const;
00531
00532
void setViewBuildDocument(
KoView *view, const
QDomDocument &doc );
00533
QDomDocument viewBuildDocument(
KoView *view );
00534
00542 virtual
void addShell(
KoMainWindow *shell );
00543
00548 virtual
void removeShell(
KoMainWindow *shell );
00549
00553 const
QPtrList<
KoMainWindow>& shells() const;
00554
00558
int shellCount() const;
00559
00563 static
QPtrList<
KoDocument> *documentList() {
return s_documentList; }
00564
00570
virtual DCOPObject *
dcopObject();
00571
00575
QCString dcopObjectId() const;
00576
00580 void emitProgress(
int value ) { emit
sigProgress( value ); }
00581
00582
bool isInOperation();
00583
virtual void emitBeginOperation();
00584
virtual void emitEndOperation();
00585
00590
virtual bool isStoredExtern();
00591
00597 KoPageLayout pageLayout()
const {
return m_pageLayout; }
00598
00602
void removeAutoSaveFiles();
00603
00604
void setBackupFile(
bool _b );
00605
00606
bool backupFile()const;
00607
00611
bool isModified();
00612
00613
int queryCloseExternalChildren();
00614
int queryCloseDia();
00615
00627
void setDoNotSaveExtDoc(
bool on = true );
00628
00632
void setBackupPath( const
QString & _path );
00633
00637
QString backupPath()const;
00638
00644
void setCurrent(
bool on = true );
00645
00649
void forceCurrent(
bool on );
00650
bool isCurrent() const;
00651
00652
void setTitleModified( const
QString caption,
bool mod );
00653
00660 void resetURL() { m_url = KURL(); m_file = QString::null; }
00661
00665
void setStoreInternal(
bool i );
00666
00670
bool storeInternal() const;
00671
00672
bool hasExternURL();
00673
00678 void setURL( const KURL& url ) { m_url = url; }
00679
00688 QString &
file() {
return m_file; }
00689
00693
void setFile(
const QString &file ) { m_file = file; }
00694
00695 signals:
00704
void childChanged(
KoDocumentChild *child );
00705
00711
void sigProgress(
int value );
00712
00717
void sigStatusBarMessage(
const QString& text );
00718
00723
void sigClearStatusBarMessage();
00724
00725
void sigBeginOperation();
00726
void sigEndOperation();
00727
00728
protected:
00729
00730
QString autoSaveFile(
const QString & path )
const;
00731
00732
virtual KoView *createViewInstance(
QWidget *parent,
const char *name ) = 0;
00733
00742
virtual bool openFile();
00743
00750
virtual bool saveFile();
00751
00757
bool isImporting() const;
00758
00766
bool isExporting() const;
00767
00785 virtual
bool loadChildren(
KoStore* );
00786
00792 virtual
bool saveChildren( KoStore* store );
00793
00799 virtual
bool completeLoading( KoStore* store );
00800
00811 virtual
bool completeSaving( KoStore* store );
00812
00824 virtual
void insertChild(
KoDocumentChild *child );
00825
00827 virtual
void setModified() { KParts::ReadWritePart::setModified(); }
00828
00830
virtual void insertChild(
QObject *o) { QObject::insertChild(o); }
00831
00832
KoPageLayout m_pageLayout;
00833
00839
bool saveExternalChildren();
00840
00841
private slots:
00842
void slotChildChanged(
KoChild *c );
00843
void slotChildDestroyed();
00844
void slotAutoSave();
00845
void slotStarted( KIO::Job* );
00846
00847
private:
00848
void savePreview(
KoStore* store );
00849
00850
class Private;
00851 Private *d;
00852 KService::Ptr m_nativeService;
00853
bool m_bEmpty;
00854
static QPtrList<KoDocument> *s_documentList;
00855
static const int s_defaultAutoSave;
00856 };
00857
00858
#endif