/* * Copyright (C) 2012 Webdoc SA * * This file is part of Open-Sankoré. * * Open-Sankoré is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation, version 2, * with a specific linking exception for the OpenSSL project's * "OpenSSL" library (or with modified versions of it that use the * same license as the "OpenSSL" library). * * Open-Sankoré 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with Open-Sankoré; if not, see * . */ #ifndef UBDOCUMENTCONTROLLER_H_ #define UBDOCUMENTCONTROLLER_H_ #include #include "document/UBDocumentContainer.h" namespace Ui { class documents; } #include "gui/UBMessageWindow.h" class UBGraphicsScene; class QDialog; class UBDocumentProxy; class UBBoardController; class UBThumbnailsScene; class UBDocumentGroupTreeItem; class UBDocumentProxyTreeItem; class UBMainWindow; class UBDocumentToolsPalette; class UBDocumentController : public UBDocumentContainer { Q_OBJECT; public: UBDocumentController(UBMainWindow* mainWindow); virtual ~UBDocumentController(); void closing(); QWidget* controlView(); UBDocumentProxyTreeItem* findDocument(UBDocumentProxy* proxy); bool addFileToDocument(UBDocumentProxy* document); void deletePages(QList itemsToDelete); int getSelectedItemIndex(); bool pageCanBeMovedUp(int page); bool pageCanBeMovedDown(int page); bool pageCanBeDuplicated(int page); bool pageCanBeDeleted(int page); QString documentTrashGroupName(){ return mDocumentTrashGroupName;} QString defaultDocumentGroupName(){ return mDefaultDocumentGroupName;} signals: void exportDone(); public slots: void createNewDocument(); void createNewDocumentGroup(); void deleteSelectedItem(); void renameSelectedItem(); void openSelectedItem(); void duplicateSelectedItem(); void importFile(); void moveSceneToIndex(UBDocumentProxy* proxy, int source, int target); void selectDocument(UBDocumentProxy* proxy, bool setAsCurrentDocument = true); void show(); void hide(); void showMessage(const QString& message, bool showSpinningWheel = false); void hideMessage(); void toggleDocumentToolsPalette(); void cut(); void copy(); void paste(); void focusChanged(QWidget *old, QWidget *current); protected: virtual void setupViews(); virtual void setupToolbar(); void setupPalettes(); bool isOKToOpenDocument(UBDocumentProxy* proxy); UBDocumentProxy* selectedDocumentProxy(); UBDocumentProxyTreeItem* selectedDocumentProxyTreeItem(); UBDocumentGroupTreeItem* selectedDocumentGroupTreeItem(); QStringList allGroupNames(); enum LastSelectedElementType { None = 0, Folder, Document, Page }; LastSelectedElementType mSelectionType; private: QWidget *mParentWidget; UBBoardController *mBoardController; Ui::documents* mDocumentUI; UBMainWindow* mMainWindow; QWidget *mDocumentWidget; QPointer mMessageWindow; QAction* mAddFolderOfImagesAction; QAction* mAddFileToDocumentAction; QAction* mAddImagesAction; bool mIsClosing; UBDocumentToolsPalette *mToolsPalette; bool mToolsPalettePositionned; UBDocumentGroupTreeItem* mTrashTi; void moveDocumentToTrash(UBDocumentGroupTreeItem* groupTi, UBDocumentProxyTreeItem *proxyTi); void moveFolderToTrash(UBDocumentGroupTreeItem* groupTi); QString mDocumentTrashGroupName; QString mDefaultDocumentGroupName; private slots: void documentZoomSliderValueChanged (int value); void loadDocumentProxies(); void itemSelectionChanged(); void exportDocument(); void itemChanged(QTreeWidgetItem * item, int column); void thumbnailViewResized(); void pageSelectionChanged(); void selectionChanged(); void documentSceneChanged(UBDocumentProxy* proxy, int pSceneIndex); void pageDoubleClicked(QGraphicsItem* item, int index); void pageClicked(QGraphicsItem* item, int index); void itemClicked(QTreeWidgetItem * item, int column ); void addToDocument(); void addDocumentInTree(UBDocumentProxy* pDocument); void updateDocumentInTree(UBDocumentProxy* pDocument); void addFolderOfImages(); void addFileToDocument(); void addImages(); void refreshDocumentThumbnailsView(UBDocumentContainer* source); }; #endif /* UBDOCUMENTCONTROLLER_H_ */