From cd9820ab8be0ef38f588cc72beff28204bb32ab7 Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Mon, 29 Aug 2011 08:36:07 +0200 Subject: [PATCH 01/12] backup --- resources/sankore.qrc | 7 +- src/adaptors/UBSvgSubsetAdaptor.cpp | 52 +++++++++- src/adaptors/UBSvgSubsetAdaptor.h | 6 +- src/board/UBBoardController.cpp | 9 +- src/domain/UBGraphicsScene.cpp | 22 ++++- src/domain/UBGraphicsScene.h | 9 +- src/gui/UBDockPalette.cpp | 79 ++++++++++------ src/gui/UBDockPalette.h | 14 ++- src/gui/UBDockPaletteWidget.cpp | 36 +++++++ src/gui/UBDockPaletteWidget.h | 27 ++++++ src/gui/UBLibPalette.cpp | 2 +- src/gui/UBNavigatorPalette.cpp | 2 +- src/gui/gui.pri | 6 +- src/tools/UBGraphicsCache.cpp | 142 ++++++++++++++++++++++++++++ src/tools/UBGraphicsCache.h | 61 ++++++++++++ src/tools/UBToolsManager.cpp | 8 +- src/tools/UBToolsManager.h | 3 +- src/tools/tools.pri | 38 ++++---- 18 files changed, 456 insertions(+), 67 deletions(-) create mode 100644 src/gui/UBDockPaletteWidget.cpp create mode 100644 src/gui/UBDockPaletteWidget.h create mode 100644 src/tools/UBGraphicsCache.cpp create mode 100644 src/tools/UBGraphicsCache.h diff --git a/resources/sankore.qrc b/resources/sankore.qrc index 6c721712..39456848 100644 --- a/resources/sankore.qrc +++ b/resources/sankore.qrc @@ -176,7 +176,7 @@ images/cursors/rotate.png images/cursors/resize.png images/cursors/drawCompass.png - images/cursors/drawRulerLine.png + images/cursors/drawRulerLine.png images/print/onepage.png images/print/thumbnails.png images/print/twopages.png @@ -289,8 +289,6 @@ images/toolbar/hide.png images/toolbar/record.png images/libpalette/MoviesCategory.svg - - images/virtual.keyboard/41/centre-passive.png images/virtual.keyboard/41/left-passive.png images/virtual.keyboard/41/right-passive.png @@ -300,7 +298,6 @@ images/virtual.keyboard/41/backspace.png images/virtual.keyboard/41/capslock.png images/virtual.keyboard/41/tab.png - images/virtual.keyboard/29/centre-passive.png images/virtual.keyboard/29/left-passive.png images/virtual.keyboard/29/right-passive.png @@ -310,6 +307,6 @@ images/virtual.keyboard/29/backspace.png images/virtual.keyboard/29/capslock.png images/virtual.keyboard/29/tab.png - + images/toolPalette/cacheTool.png diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index 2e9c417f..43f30741 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -35,6 +35,7 @@ #include "tools/UBGraphicsProtractor.h" #include "tools/UBGraphicsCurtainItem.h" #include "tools/UBGraphicsTriangle.h" +#include "tools/UBGraphicsCache.h" #include "document/UBDocumentProxy.h" @@ -654,7 +655,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() scene->registerTool(protractor); } } - else if (mXmlReader.name() == "protractor") + else if (mXmlReader.name() == "triangle") { UBGraphicsTriangle *triangle = triangleFromSvg(); @@ -664,6 +665,15 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() scene->registerTool(triangle); } } + else if(mXmlReader.name() == "cache") + { + UBGraphicsCache* cache = cacheFromSvg(); + if(cache) + { + scene->addItem(cache); + scene->registerTool(cache); + } + } else if (mXmlReader.name() == "foreignObject") { QString href = mXmlReader.attributes().value(nsXLink, "href").toString(); @@ -1045,6 +1055,13 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene() continue; } + UBGraphicsCache* cache = qgraphicsitem_cast(item); + if(cache && cache->isVisible()) + { + cacheToSvg(cache); + continue; + } + UBGraphicsCompass *compass = qgraphicsitem_cast (item); if (compass && compass->isVisible()) @@ -1060,6 +1077,7 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene() protractorToSvg(protractor); continue; } + } if (openStroke) @@ -2615,6 +2633,38 @@ UBGraphicsTriangle* UBSvgSubsetAdaptor::UBSvgSubsetReader::triangleFromSvg() return triangle; } +UBGraphicsCache* UBSvgSubsetAdaptor::UBSvgSubsetReader::cacheFromSvg() +{ + UBGraphicsCache* pCache = new UBGraphicsCache(); + pCache->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); + pCache->setVisible(true); + + return pCache; +} + +void UBSvgSubsetAdaptor::UBSvgSubsetWriter::cacheToSvg(UBGraphicsCache* item) +{ + mXmlWriter.writeStartElement(UBSettings::uniboardDocumentNamespaceUri, "cache"); + + mXmlWriter.writeAttribute("x", QString("%1").arg(item->rect().x())); + mXmlWriter.writeAttribute("y", QString("%1").arg(item->rect().y())); + mXmlWriter.writeAttribute("width", QString("%1").arg(item->rect().width())); + mXmlWriter.writeAttribute("height", QString("%1").arg(item->rect().height())); + + QString zs; + zs.setNum(item->zValue(), 'f'); // 'f' keeps precision + mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "z-value", zs); + + UBItem* ubItem = dynamic_cast(item); + + if (ubItem) + { + mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "uuid", UBStringUtils::toCanonicalUuid(ubItem->uuid())); + } + + mXmlWriter.writeEndElement(); +} + void UBSvgSubsetAdaptor::convertPDFObjectsToImages(UBDocumentProxy* proxy) { for (int i = 0; i < proxy->pageCount(); i++) diff --git a/src/adaptors/UBSvgSubsetAdaptor.h b/src/adaptors/UBSvgSubsetAdaptor.h index aa60eae1..a18fa34c 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.h +++ b/src/adaptors/UBSvgSubsetAdaptor.h @@ -40,6 +40,7 @@ class UBDocumentProxy; class UBGraphicsStroke; class UBPersistenceManager; class UBGraphicsTriangle; +class UBGraphicsCache; class UBSvgSubsetAdaptor { @@ -127,7 +128,9 @@ class UBSvgSubsetAdaptor UBGraphicsProtractor* protractorFromSvg(); - UBGraphicsTriangle* triangleFromSvg(); + UBGraphicsTriangle* triangleFromSvg(); + + UBGraphicsCache* cacheFromSvg(); void graphicsItemFromSvg(QGraphicsItem* gItem); @@ -210,6 +213,7 @@ class UBSvgSubsetAdaptor void rulerToSvg(UBGraphicsRuler *item); void compassToSvg(UBGraphicsCompass *item); void protractorToSvg(UBGraphicsProtractor *item); + void cacheToSvg(UBGraphicsCache* item); void writeSvgElement(); private: diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 97e7bdb8..782cf085 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1009,11 +1009,16 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString mActiveScene->addProtractor(pPos); UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector); } - else if (sourceUrl.toString() == UBToolsManager::manager()->triangle.id) + else if (sourceUrl.toString() == UBToolsManager::manager()->triangle.id) { mActiveScene->addTriangle(pPos); UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector); } + else if(sourceUrl.toString() == UBToolsManager::manager()->cache.id) + { + mActiveScene->addCache(); + UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector); + } else if (sourceUrl.toString() == UBToolsManager::manager()->mask.id) { mActiveScene->addMask(); @@ -1557,7 +1562,7 @@ void UBBoardController::stylusToolChanged(int tool) if(eTool != UBStylusTool::Selector && eTool != UBStylusTool::Text) { if(mPaletteManager->mKeyboardPalette->m_isVisible) - UBApplication::mainWindow->actionVirtualKeyboard->activate(QAction::Trigger); + UBApplication::mainWindow->actionVirtualKeyboard->activate(QAction::Trigger); } } diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 0974105f..bd8e0ee6 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -34,6 +34,7 @@ #include "tools/UBGraphicsCompass.h" #include "tools/UBGraphicsTriangle.h" #include "tools/UBGraphicsCurtainItem.h" +#include "tools/UBGraphicsCache.h" #include "document/UBDocumentProxy.h" @@ -68,6 +69,7 @@ qreal UBGraphicsScene::toolOffsetProtractor = 100; qreal UBGraphicsScene::toolOffsetTriangle = 100; qreal UBGraphicsScene::toolOffsetCompass = 100; qreal UBGraphicsScene::toolOffsetEraser = 200; +qreal UBGraphicsScene::toolOffsetCache = 1000; qreal UBGraphicsScene::toolOffsetCurtain = 1000; qreal UBGraphicsScene::toolOffsetPointer = 1100; @@ -132,7 +134,7 @@ UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent) } connect(this, SIGNAL(selectionChanged()), this, SLOT(selectionChangedProcessing())); - + mHasCache = false; } @@ -1484,6 +1486,24 @@ void UBGraphicsScene::addCompass(QPointF center) setModified(true); } +void UBGraphicsScene::addCache() +{ + UBGraphicsCache* cache = new UBGraphicsCache(); + mTools << cache; + QGraphicsView* view; + + if(UBApplication::applicationController->displayManager()->hasDisplay()) + { + view = (QGraphicsView*)(UBApplication::boardController->displayView()); + } + else + { + view = (QGraphicsView*)(UBApplication::boardController->controlView()); + } + addItem(cache); + cache->setVisible(true); + cache->setSelected(true); +} void UBGraphicsScene::addMask() { diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h index e3d30af3..fd29b21c 100644 --- a/src/domain/UBGraphicsScene.h +++ b/src/domain/UBGraphicsScene.h @@ -44,6 +44,7 @@ class UBAbstractWidget; class UBDocumentProxy; class UBGraphicsCurtainItem; class UBGraphicsStroke; +class UBGraphicsCache; const double PI = 4.0 * atan(1.0); @@ -164,9 +165,10 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem qreal getNextObjectZIndex(); void addRuler(QPointF center); - void addTriangle(QPointF center); + void addTriangle(QPointF center); void addProtractor(QPointF center); void addCompass(QPointF center); + void addCache(); void addMask(); @@ -243,7 +245,8 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem static qreal toolOffsetProtractor; static qreal toolOffsetCompass; static qreal toolOffsetCurtain; - static qreal toolOffsetTriangle; + static qreal toolOffsetTriangle; + static qreal toolOffsetCache; QSet tools(){ return mTools;} @@ -347,6 +350,8 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem QList mFastAccessItems; // a local copy as QGraphicsScene::items() is very slow in Qt 4.6 //int mMesure1Ms, mMesure2Ms; + + bool mHasCache; }; #endif /* UBGRAPHICSSCENE_H_ */ diff --git a/src/gui/UBDockPalette.cpp b/src/gui/UBDockPalette.cpp index 49fbddd6..e1e44528 100644 --- a/src/gui/UBDockPalette.cpp +++ b/src/gui/UBDockPalette.cpp @@ -53,9 +53,13 @@ UBDockPalette::UBDockPalette(QWidget *parent, const char *name) , mCollapseWidth(150) , mLastWidth(-1) , mHTab(0) + , mpStackWidget(NULL) { setObjectName(name); + // clear the tab widgets + mTabWidgets.clear(); + // We let 2 pixels in order to keep a small border for the resizing setMinimumWidth(2*border() + 2); @@ -91,7 +95,11 @@ UBDockPalette::UBDockPalette(QWidget *parent, const char *name) */ UBDockPalette::~UBDockPalette() { - + if(NULL != mpStackWidget) + { + delete mpStackWidget; + mpStackWidget = NULL; + } } /** @@ -314,36 +322,39 @@ void UBDockPalette::paintEvent(QPaintEvent *event) painter.setPen(Qt::NoPen); painter.setBrush(mBackgroundBrush); - if(eUBDockTabOrientation_Up == mTabsOrientation) + for(int i = 0; i < mTabWidgets.size(); i++) { - mHTab = border(); - } - else - { - mHTab = height() - border() - TABSIZE; - } + if(eUBDockTabOrientation_Up == mTabsOrientation) + { + mHTab = border(); + } + else + { + mHTab = height() - border() - i*TABSIZE; + } - if(mOrientation == eUBDockOrientation_Left) - { - QPainterPath path; - path.setFillRule(Qt::WindingFill); - path.addRect(0.0, 0.0, width()-2*border(), height()); - path.addRoundedRect(width()-4*border(), mHTab, 4*border(), TABSIZE, radius(), radius()); - painter.drawPath(path); - painter.drawPixmap(width() - border() + 1, mHTab + 1 , border() - 4, TABSIZE - 2, mIcon); - } - else if(mOrientation == eUBDockOrientation_Right) - { - QPainterPath path; - path.setFillRule(Qt::WindingFill); - path.addRect(2*border(), 0.0, width()-2*border(), height()); - path.addRoundedRect(0.0, mHTab, 4*border(), TABSIZE, radius(), radius()); - painter.drawPath(path); - painter.drawPixmap(2, mHTab + 1, border() - 3, TABSIZE - 2, mIcon); - } - else - { - painter.drawRoundedRect(border(), border(), width() - 2 * border(), height() - 2 * border(), radius(), radius()); + if(mOrientation == eUBDockOrientation_Left) + { + QPainterPath path; + path.setFillRule(Qt::WindingFill); + path.addRect(0.0, 0.0, width()-2*border(), height()); + path.addRoundedRect(width()-4*border(), mHTab, 4*border(), TABSIZE, radius(), radius()); + painter.drawPath(path); + //painter.drawPixmap(width() - border() + 1, mHTab + 1 , border() - 4, TABSIZE - 2, mIcon); + } + else if(mOrientation == eUBDockOrientation_Right) + { + QPainterPath path; + path.setFillRule(Qt::WindingFill); + path.addRect(2*border(), 0.0, width()-2*border(), height()); + path.addRoundedRect(0.0, mHTab, 4*border(), TABSIZE, radius(), radius()); + painter.drawPath(path); + //painter.drawPixmap(2, mHTab + 1, border() - 3, TABSIZE - 2, mIcon); + } + else + { + painter.drawRoundedRect(border(), border(), width() - 2 * border(), height() - 2 * border(), radius(), radius()); + } } } @@ -437,3 +448,13 @@ int UBDockPalette::customMargin() { return 5; } + +void UBDockPalette::addTabWidget(const QString &widgetName, UBDockPaletteWidget *widget) +{ + mTabWidgets[widgetName] = widget; +} + +void UBDockPalette::removeTab(const QString &widgetName) +{ + mTabWidgets.remove(widgetName); +} diff --git a/src/gui/UBDockPalette.h b/src/gui/UBDockPalette.h index 17440662..06c1df54 100644 --- a/src/gui/UBDockPalette.h +++ b/src/gui/UBDockPalette.h @@ -24,6 +24,10 @@ #include #include #include +#include +#include + +#include "UBDockPaletteWidget.h" #define TABSIZE 50 #define CLICKTIME 1000000 @@ -64,6 +68,8 @@ public: virtual void leaveEvent(QEvent *); void setBackgroundBrush(const QBrush& brush); + void addTabWidget(const QString& widgetName, UBDockPaletteWidget* widget); + void removeTab(const QString& widgetName); protected: virtual int border(); @@ -93,12 +99,16 @@ protected: QTime mClickTime; /** The mouse pressed position */ QPoint mMousePressPos; - /** The palette icon */ - QPixmap mIcon; + ///** The palette icon */ + //QPixmap mIcon; /** The tab orientation */ eUBDockTabOrientation mTabsOrientation; /** The h position of the tab */ int mHTab; + /** The tab widgets */ + QMap mTabWidgets; + /** The stacked widget */ + QStackedWidget* mpStackWidget; private slots: void onToolbarPosUpdated(); diff --git a/src/gui/UBDockPaletteWidget.cpp b/src/gui/UBDockPaletteWidget.cpp new file mode 100644 index 00000000..bf8e51c7 --- /dev/null +++ b/src/gui/UBDockPaletteWidget.cpp @@ -0,0 +1,36 @@ +#include "UBDockPaletteWidget.h" + +UBDockPaletteWidget::UBDockPaletteWidget(const char *name, QWidget *parent):QWidget(parent) + , mpWidget(NULL) +{ + setObjectName(name); + +} + +UBDockPaletteWidget::~UBDockPaletteWidget() +{ + if(NULL != mpWidget) + { + delete mpWidget; + mpWidget = NULL; + } +} + +QWidget* UBDockPaletteWidget::widget() +{ + return mpWidget; +} + +QIcon UBDockPaletteWidget::icon() +{ + return mIcon; +} + +QIcon UBDockPaletteWidget::collapsedIcon() +{ + return mCollapsedIcon; +} + QString UBDockPaletteWidget::name() + { + return mName; + } diff --git a/src/gui/UBDockPaletteWidget.h b/src/gui/UBDockPaletteWidget.h new file mode 100644 index 00000000..6d21a15a --- /dev/null +++ b/src/gui/UBDockPaletteWidget.h @@ -0,0 +1,27 @@ +#ifndef UBDOCKPALETTEWIDGET_H +#define UBDOCKPALETTEWIDGET_H + +#include +#include +#include + +class UBDockPaletteWidget : public QWidget +{ +public: + UBDockPaletteWidget(const char* name="UBDockPaletteWidget", QWidget* parent=0); + ~UBDockPaletteWidget(); + + QWidget* widget(); + QIcon icon(); + QIcon collapsedIcon(); + QString name(); + +protected: + QWidget* mpWidget; + QIcon mIcon; + QIcon mCollapsedIcon; + QString mName; + +}; + +#endif // UBDOCKPALETTEWIDGET_H diff --git a/src/gui/UBLibPalette.cpp b/src/gui/UBLibPalette.cpp index fb5c9a1f..4e495559 100644 --- a/src/gui/UBLibPalette.cpp +++ b/src/gui/UBLibPalette.cpp @@ -31,7 +31,7 @@ UBLibPalette::UBLibPalette(QWidget *parent, const char *name):UBDockPalette(pare , mDropWidget(NULL) { setOrientation(eUBDockOrientation_Right); - mIcon = QPixmap(":images/paletteLibrary.png"); + //mIcon = QPixmap(":images/paletteLibrary.png"); setAcceptDrops(true); resize(UBSettings::settings()->libPaletteWidth->get().toInt(), parentWidget()->height()); diff --git a/src/gui/UBNavigatorPalette.cpp b/src/gui/UBNavigatorPalette.cpp index 8ac69e5e..ffedfae5 100644 --- a/src/gui/UBNavigatorPalette.cpp +++ b/src/gui/UBNavigatorPalette.cpp @@ -32,7 +32,7 @@ UBNavigatorPalette::UBNavigatorPalette(QWidget *parent, const char *name):UBDock { setOrientation(eUBDockOrientation_Left); setMaximumWidth(300); - mIcon = QPixmap(":images/paletteNavigator.png"); + //mIcon = QPixmap(":images/paletteNavigator.png"); resize(UBSettings::settings()->navigPaletteWidth->get().toInt(), height()); mLastWidth = 300; diff --git a/src/gui/gui.pri b/src/gui/gui.pri index c1f18185..67bab1be 100644 --- a/src/gui/gui.pri +++ b/src/gui/gui.pri @@ -38,7 +38,8 @@ HEADERS += src/gui/UBThumbnailView.h \ src/gui/UBLibActionBar.h \ src/gui/UBLibraryWidget.h \ src/gui/UBLibPathViewer.h \ - src/gui/UBUpdateDlg.h + src/gui/UBUpdateDlg.h \ + src/gui/UBDockPaletteWidget.h SOURCES += src/gui/UBThumbnailView.cpp \ src/gui/UBFloatingPalette.cpp \ @@ -79,7 +80,8 @@ SOURCES += src/gui/UBThumbnailView.cpp \ src/gui/UBLibActionBar.cpp \ src/gui/UBLibraryWidget.cpp \ src/gui/UBLibPathViewer.cpp \ - src/gui/UBUpdateDlg.cpp + src/gui/UBUpdateDlg.cpp \ + src/gui/UBDockPaletteWidget.cpp win32 { diff --git a/src/tools/UBGraphicsCache.cpp b/src/tools/UBGraphicsCache.cpp new file mode 100644 index 00000000..b226132c --- /dev/null +++ b/src/tools/UBGraphicsCache.cpp @@ -0,0 +1,142 @@ +/* + * 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 3 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, see . + */ +#include + +#include "UBGraphicsCache.h" + +#include "core/UBApplication.h" + +#include "board/UBBoardController.h" +#include "board/UBBoardView.h" +#include "domain/UBGraphicsScene.h" + + +UBGraphicsCache::UBGraphicsCache():QGraphicsRectItem() + , mMaskColor(Qt::black) + , mMaskShape(eMaskShape_Circle) + , mShapeWidth(100) + , mDrawMask(false) +{ + // Get the board size and pass it to the shape + QRect boardRect = UBApplication::boardController->displayView()->rect(); + setRect(-15*boardRect.width(), -15*boardRect.height(), 30*boardRect.width(), 30*boardRect.height()); + setZValue(CACHE_ZVALUE); +} + +UBGraphicsCache::~UBGraphicsCache() +{ + +} + +UBItem* UBGraphicsCache::deepCopy() const +{ + UBGraphicsCache* copy = new UBGraphicsCache(); + + copy->setPos(this->pos()); + copy->setRect(this->rect()); + copy->setZValue(this->zValue()); + copy->setTransform(this->transform()); + + // TODO UB 4.7 ... complete all members ? + + return copy; +} + +QColor UBGraphicsCache::maskColor() +{ + return mMaskColor; +} + +void UBGraphicsCache::setMaskColor(QColor color) +{ + mMaskColor = color; +} + +eMaskShape UBGraphicsCache::maskshape() +{ + return mMaskShape; +} + +void UBGraphicsCache::setMaskShape(eMaskShape shape) +{ + mMaskShape = shape; +} + +void UBGraphicsCache::init() +{ + setFlag(QGraphicsItem::ItemIsMovable, true); + setFlag(QGraphicsItem::ItemIsSelectable, true); + setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); +} + +void UBGraphicsCache::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + Q_UNUSED(option); + Q_UNUSED(widget); + + setZValue(CACHE_ZVALUE); + + painter->setBrush(mMaskColor); + painter->setPen(mMaskColor); + + QPainterPath path; + path.addRect(rect()); + + if(mDrawMask) + { + if(eMaskShape_Circle == mMaskShape) + { + path.addEllipse(mShapePos, mShapeWidth, mShapeWidth); + } + else if(eMaskShap_Rectangle == mMaskShape) + { + path.addRect(mShapePos.x(), mShapePos.y(), mShapeWidth, mShapeWidth); + } + path.setFillRule(Qt::OddEvenFill); + } + + painter->drawPath(path); +} + +void UBGraphicsCache::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + Q_UNUSED(event); + mShapePos = event->pos(); + mDrawMask = true; + update(); +} + +void UBGraphicsCache::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + mShapePos = event->pos(); + update(); +} + +void UBGraphicsCache::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + Q_UNUSED(event); + mDrawMask = false; + update(); +} + +int UBGraphicsCache::shapeWidth() +{ + return mShapeWidth; +} + +void UBGraphicsCache::setShapeWidth(int width) +{ + mShapeWidth = width; +} diff --git a/src/tools/UBGraphicsCache.h b/src/tools/UBGraphicsCache.h new file mode 100644 index 00000000..1f41dbf8 --- /dev/null +++ b/src/tools/UBGraphicsCache.h @@ -0,0 +1,61 @@ +/* + * 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 3 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, see . + */ +#ifndef UBGRAPHICSCACHE_H +#define UBGRAPHICSCACHE_H + +#include +#include + +#include "domain/UBItem.h" + +#define CACHE_ZVALUE 100000 + +typedef enum +{ + eMaskShape_Circle, + eMaskShap_Rectangle +}eMaskShape; + +class UBGraphicsCache : public QGraphicsRectItem, public UBItem +{ +public: + UBGraphicsCache(); + ~UBGraphicsCache(); + virtual UBItem* deepCopy() const; + + QColor maskColor(); + void setMaskColor(QColor color); + eMaskShape maskshape(); + void setMaskShape(eMaskShape shape); + int shapeWidth(); + void setShapeWidth(int width); + +protected: + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + +private: + void init(); + + QColor mMaskColor; + eMaskShape mMaskShape; + int mShapeWidth; + bool mDrawMask; + QPointF mShapePos; +}; + +#endif // UBGRAPHICSCACHE_H diff --git a/src/tools/UBToolsManager.cpp b/src/tools/UBToolsManager.cpp index 0b58a5c6..8bf10e24 100644 --- a/src/tools/UBToolsManager.cpp +++ b/src/tools/UBToolsManager.cpp @@ -58,9 +58,15 @@ UBToolsManager::UBToolsManager(QObject *parent) mToolsIcon.insert(triangle.id,":/images/toolPalette/triangleTool.png"); mDescriptors << triangle; + cache.id = "uniboardTool://uniboard.mnemis.com/cache"; + cache.icon = QPixmap(":/images/toolPalette/cacheTool.png"); + cache.label = tr("Cache"); + cache.version = "1.0"; + mToolsIcon.insert(cache.id, ":/images/toolPalette/cacheTool.png"); + mDescriptors << cache; } UBToolsManager::~UBToolsManager() { // NOOP -} \ No newline at end of file +} diff --git a/src/tools/UBToolsManager.h b/src/tools/UBToolsManager.h index 8844bdd2..8517822b 100644 --- a/src/tools/UBToolsManager.h +++ b/src/tools/UBToolsManager.h @@ -77,7 +77,8 @@ class UBToolsManager : public QObject UBToolDescriptor protractor; UBToolDescriptor compass; UBToolDescriptor mask; - UBToolDescriptor triangle; + UBToolDescriptor triangle; + UBToolDescriptor cache; QString iconFromToolId(QString id) { return mToolsIcon.value(id);} diff --git a/src/tools/tools.pri b/src/tools/tools.pri index a7247816..90e69659 100644 --- a/src/tools/tools.pri +++ b/src/tools/tools.pri @@ -1,18 +1,20 @@ - -HEADERS += src/tools/UBGraphicsRuler.h \ - src/tools/UBGraphicsTriangle.h \ - src/tools/UBGraphicsProtractor.h \ - src/tools/UBGraphicsCompass.h \ - src/tools/UBToolsManager.h \ - src/tools/UBGraphicsCurtainItem.h \ - src/tools/UBGraphicsCurtainItemDelegate.h \ - src/tools/UBAbstractDrawRuler.h - -SOURCES += src/tools/UBGraphicsRuler.cpp \ - src/tools/UBGraphicsTriangle.cpp \ - src/tools/UBGraphicsProtractor.cpp \ - src/tools/UBGraphicsCompass.cpp \ - src/tools/UBToolsManager.cpp \ - src/tools/UBGraphicsCurtainItem.cpp \ - src/tools/UBGraphicsCurtainItemDelegate.cpp \ - src/tools/UBAbstractDrawRuler.cpp \ No newline at end of file + +HEADERS += src/tools/UBGraphicsRuler.h \ + src/tools/UBGraphicsTriangle.h \ + src/tools/UBGraphicsProtractor.h \ + src/tools/UBGraphicsCompass.h \ + src/tools/UBToolsManager.h \ + src/tools/UBGraphicsCurtainItem.h \ + src/tools/UBGraphicsCurtainItemDelegate.h \ + src/tools/UBAbstractDrawRuler.h \ + src/tools/UBGraphicsCache.h + +SOURCES += src/tools/UBGraphicsRuler.cpp \ + src/tools/UBGraphicsTriangle.cpp \ + src/tools/UBGraphicsProtractor.cpp \ + src/tools/UBGraphicsCompass.cpp \ + src/tools/UBToolsManager.cpp \ + src/tools/UBGraphicsCurtainItem.cpp \ + src/tools/UBGraphicsCurtainItemDelegate.cpp \ + src/tools/UBAbstractDrawRuler.cpp \ + src/tools/UBGraphicsCache.cpp From bb6a1ebf5c5fcd8325e64def35c83cd03f7573d9 Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Mon, 29 Aug 2011 09:15:09 +0200 Subject: [PATCH 02/12] added missing files --- resources/images/toolPalette/cacheTool.png | Bin 0 -> 3617 bytes ..._Document_Web_Publication_Specification.doc | Bin 0 -> 368128 bytes src/tools/Mask_specification.doc | Bin 0 -> 149504 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 resources/images/toolPalette/cacheTool.png create mode 100644 src/adaptors/publishing/Sankore_Document_Web_Publication_Specification.doc create mode 100644 src/tools/Mask_specification.doc diff --git a/resources/images/toolPalette/cacheTool.png b/resources/images/toolPalette/cacheTool.png new file mode 100644 index 0000000000000000000000000000000000000000..d83c8d614d05aa86a40b7cf85ec4edd56a0a50fd GIT binary patch literal 3617 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 nw3qN_j+tZTm^o&S|L@~}M2J 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%0A&_Y+0P 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� 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 Date: Tue, 30 Aug 2011 12:04:22 +0200 Subject: [PATCH 03/12] updated host value on post --- src/adaptors/publishing/UBDocumentPublisher.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/adaptors/publishing/UBDocumentPublisher.cpp b/src/adaptors/publishing/UBDocumentPublisher.cpp index dad9259f..ed6e73f5 100644 --- a/src/adaptors/publishing/UBDocumentPublisher.cpp +++ b/src/adaptors/publishing/UBDocumentPublisher.cpp @@ -635,7 +635,7 @@ void UBDocumentPublisher::sendUbw(QString username, QString password) request.setHeader(QNetworkRequest::ContentLengthHeader,datatoSend.size()); QString b64Auth = getBase64Of(QString("%0:%1").arg(username).arg(password)); request.setRawHeader("Authorization", QString("Basic %0").arg(b64Auth).toAscii().constData()); - request.setRawHeader("Host", "sankore.devxwiki.com"); + request.setRawHeader("Host", "planete.sankore.org"); request.setRawHeader("Accept", "*/*"); request.setRawHeader("Accept-Language", "en-US,*"); From 2cf7ca7e22f0f4c950f702f1cfe816c0c8706893 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Tue, 30 Aug 2011 12:06:01 +0200 Subject: [PATCH 04/12] fixed some leaks --- src/pdf/XPDFRenderer.cpp | 27 ++++++++++++++++++++------- src/pdf/XPDFRenderer.h | 4 ++-- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/pdf/XPDFRenderer.cpp b/src/pdf/XPDFRenderer.cpp index 5ef2851b..6dce6d3d 100644 --- a/src/pdf/XPDFRenderer.cpp +++ b/src/pdf/XPDFRenderer.cpp @@ -25,6 +25,8 @@ QAtomicInt XPDFRenderer::sInstancesCount = 0; XPDFRenderer::XPDFRenderer(const QString &filename, bool importingFile) : mDocument(0) + , mpSplashBitmap(0) + , mSplash(0) { if (!globalParams) { @@ -48,6 +50,17 @@ XPDFRenderer::XPDFRenderer(const QString &filename, bool importingFile) XPDFRenderer::~XPDFRenderer() { + qDeleteAll(mThumbs); + mThumbs.clear(); + + qDeleteAll(mNumPageToPageMap); + mNumPageToPageMap.clear(); + + if(mSplash){ + delete mSplash; + mSplash = NULL; + } + if (mDocument) { delete mDocument; @@ -162,7 +175,7 @@ void XPDFRenderer::render(QPainter *p, int pageNumber, const QRectF &bounds) { // Generate the thumbnail - mThumbs << *createPDFImage(pageNumber, xscale, yscale, bounds); + mThumbs << createPDFImage(pageNumber, xscale, yscale, bounds); mThumbMap[pageNumber - 1] = true; if(pageNumber == mDocument->getNumPages()) { @@ -175,7 +188,7 @@ void XPDFRenderer::render(QPainter *p, int pageNumber, const QRectF &bounds) if(!mPagesMap[pageNumber - 1] || bZoomChanged) { // Generate the page - mNumPageToPageMap[pageNumber] = *createPDFImage(pageNumber, xscale, yscale, bounds); + mNumPageToPageMap[pageNumber] = createPDFImage(pageNumber, xscale, yscale, bounds); mPagesMap[pageNumber - 1] = true; if(mPagesMap.size() == mDocument->getNumPages()) { @@ -184,7 +197,7 @@ void XPDFRenderer::render(QPainter *p, int pageNumber, const QRectF &bounds) } } - QImage pdfImage; + QImage *pdfImage; if(!bThumbGenerated || bFirstThumbnail) { @@ -197,10 +210,7 @@ void XPDFRenderer::render(QPainter *p, int pageNumber, const QRectF &bounds) QTransform savedTransform = p->worldTransform(); p->resetTransform(); - QTime t; - t.start(); - p->drawImage(QPointF(savedTransform.dx() + mSliceX, savedTransform.dy() + mSliceY), pdfImage); - //qDebug() << "XPDFRenderer::render(...) execution time: " << t.elapsed() << "ms"; + p->drawImage(QPointF(savedTransform.dx() + mSliceX, savedTransform.dy() + mSliceY), *pdfImage); p->setWorldTransform(savedTransform); } } @@ -211,6 +221,8 @@ QImage* XPDFRenderer::createPDFImage(int pageNumber, const qreal xscale, const q if (isValid()) { SplashColor paperColor = {0xFF, 0xFF, 0xFF}; // white + if(mSplash) + delete mSplash; mSplash = new SplashOutputDev(splashModeRGB8, 1, gFalse, paperColor); mSplash->startDoc(mDocument->getXRef()); int hResolution = 72; @@ -241,6 +253,7 @@ QImage* XPDFRenderer::createPDFImage(int pageNumber, const qreal xscale, const q } mpSplashBitmap = mSplash->getBitmap(); + delete img; img = new QImage(mpSplashBitmap->getDataPtr(), mpSplashBitmap->getWidth(), mpSplashBitmap->getHeight(), mpSplashBitmap->getWidth() * 3, QImage::Format_RGB888); } return img; diff --git a/src/pdf/XPDFRenderer.h b/src/pdf/XPDFRenderer.h index 63d4bbd4..27181b80 100644 --- a/src/pdf/XPDFRenderer.h +++ b/src/pdf/XPDFRenderer.h @@ -51,10 +51,10 @@ class XPDFRenderer : public PDFRenderer QImage* createPDFImage(int pageNumber, const qreal xscale = 0.5, const qreal yscale = 0.5, const QRectF &bounds = QRectF()); PDFDoc *mDocument; - QList mThumbs; + QList mThumbs; QMap mPagesMap; QMap mThumbMap; - QMap mNumPageToPageMap; + QMap mNumPageToPageMap; static QAtomicInt sInstancesCount; qreal mSliceX; qreal mSliceY; From 11f8c6b5a54b586db2be95af4d06fca2276223d1 Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Tue, 30 Aug 2011 15:44:13 +0200 Subject: [PATCH 05/12] Reworked the dock palettes to support multitab --- src/board/UBBoardController.cpp | 2 +- src/board/UBBoardPaletteManager.cpp | 28 +-- src/board/UBBoardPaletteManager.h | 15 +- src/desktop/UBDesktopAnnotationController.cpp | 18 +- src/desktop/UBDesktopAnnotationController.h | 4 +- src/gui/UBDockPalette.cpp | 180 +++++++++++----- src/gui/UBDockPalette.h | 21 +- src/gui/UBDockPaletteWidget.cpp | 26 +-- src/gui/UBDockPaletteWidget.h | 14 +- src/gui/UBLeftPalette.cpp | 44 ++++ src/gui/UBLeftPalette.h | 34 +++ src/gui/UBLibNavigatorWidget.cpp | 18 +- src/gui/UBLibPalette.cpp | 59 +----- src/gui/UBLibPalette.h | 14 -- src/gui/UBLibWidget.cpp | 154 ++++++++++++++ src/gui/UBLibWidget.h | 78 +++++++ src/gui/UBPageNavigationWidget.cpp | 195 ++++++++++++++++++ src/gui/UBPageNavigationWidget.h | 68 ++++++ src/gui/UBRightPalette.cpp | 73 +++++++ src/gui/UBRightPalette.h | 42 ++++ src/gui/gui.pri | 12 +- 21 files changed, 906 insertions(+), 193 deletions(-) create mode 100644 src/gui/UBLeftPalette.cpp create mode 100644 src/gui/UBLeftPalette.h create mode 100644 src/gui/UBLibWidget.cpp create mode 100644 src/gui/UBLibWidget.h create mode 100644 src/gui/UBPageNavigationWidget.cpp create mode 100644 src/gui/UBPageNavigationWidget.h create mode 100644 src/gui/UBRightPalette.cpp create mode 100644 src/gui/UBRightPalette.h diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 782cf085..8199900e 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1137,7 +1137,7 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, } // Notify the navigator palette that the document has changed - mPaletteManager->navigatorPalette()->setDocument(pDocumentProxy); + mPaletteManager->leftPalette()->pageNavigator()->setDocument(pDocumentProxy); if (sceneChange) emit activeSceneChanged(); diff --git a/src/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index 5392cc28..2e9efabb 100755 --- a/src/board/UBBoardPaletteManager.cpp +++ b/src/board/UBBoardPaletteManager.cpp @@ -65,8 +65,8 @@ UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardControll , mBoardControler(pBoardController) , mStylusPalette(0) , mZoomPalette(0) - , mNavigPalette(NULL) - , mLibPalette(NULL) + , mLeftPalette(NULL) + , mRightPalette(NULL) , mBackgroundsPalette(0) , mToolsPalette(0) , mAddItemPalette(0) @@ -86,16 +86,16 @@ UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardControll UBBoardPaletteManager::~UBBoardPaletteManager() { delete mAddItemPalette; - if(NULL != mNavigPalette) + if(NULL != mLeftPalette) { - delete mNavigPalette; - mNavigPalette = NULL; + delete mLeftPalette; + mLeftPalette = NULL; } - if(NULL != mLibPalette) + if(NULL != mRightPalette) { - delete mLibPalette; - mLibPalette = NULL; + delete mRightPalette; + mRightPalette = NULL; } if(NULL != mStylusPalette) @@ -119,10 +119,10 @@ void UBBoardPaletteManager::setupLayout() void UBBoardPaletteManager::setupPalettes() { // Add the dock palettes - mNavigPalette = new UBNavigatorPalette(mContainer); + mLeftPalette = new UBLeftPalette(mContainer); // We disable the lib palette for the moment because it is not yet available - mLibPalette = new UBLibPalette(mContainer); + mRightPalette = new UBRightPalette(mContainer); // Add the other palettes mStylusPalette = new UBStylusPalette(mContainer, UBSettings::settings()->appToolBarOrientationVertical->get().toBool() ? Qt::Vertical : Qt::Horizontal); @@ -375,8 +375,8 @@ void UBBoardPaletteManager::containerResized() mKeyboardPalette->adjustSizeAndPosition(); } - mNavigPalette->resize(mNavigPalette->width(), mContainer->height()); - mLibPalette->resize(mLibPalette->width(), mContainer->height()); + mLeftPalette->resize(mLeftPalette->width(), mContainer->height()); + mRightPalette->resize(mRightPalette->width(), mContainer->height()); } @@ -403,9 +403,9 @@ void UBBoardPaletteManager::activeSceneChanged() if (mStylusPalette) connect(mStylusPalette, SIGNAL(mouseEntered()), activeScene, SLOT(hideEraser())); - if (mNavigPalette) + if (mLeftPalette) { - mNavigPalette->setPageNumber(pageIndex + 1, activeScene->document()->pageCount()); + mLeftPalette->pageNavigator()->setPageNumber(pageIndex + 1, activeScene->document()->pageCount()); } if (mZoomPalette) diff --git a/src/board/UBBoardPaletteManager.h b/src/board/UBBoardPaletteManager.h index e440f5f7..187f0736 100644 --- a/src/board/UBBoardPaletteManager.h +++ b/src/board/UBBoardPaletteManager.h @@ -20,8 +20,8 @@ #include #include "web/UBRoutedMouseEventWebView.h" -#include "gui/UBNavigatorPalette.h" -#include "gui/UBLibPalette.h" +#include "gui/UBLeftPalette.h" +#include "gui/UBRightPalette.h" class UBStylusPalette; class UBClockPalette; @@ -43,8 +43,8 @@ class UBBoardPaletteManager : public QObject virtual ~UBBoardPaletteManager(); void setupLayout(); - UBNavigatorPalette* navigatorPalette(){return mNavigPalette;} - void showVirtualKeyboard(bool show = true); + UBLeftPalette* leftPalette(){return mLeftPalette;} + void showVirtualKeyboard(bool show = true); void initPalettesPosAtStartup(); UBKeyboardPalette *mKeyboardPalette; @@ -68,8 +68,9 @@ class UBBoardPaletteManager : public QObject UBStylusPalette *mStylusPalette; UBZoomPalette *mZoomPalette; - UBNavigatorPalette* mNavigPalette; - UBLibPalette* mLibPalette; + + UBLeftPalette* mLeftPalette; + UBRightPalette* mRightPalette; UBActionPalette *mBackgroundsPalette; UBActionPalette *mToolsPalette; @@ -113,7 +114,7 @@ class UBBoardPaletteManager : public QObject void togglePagePalette(bool ckecked); void pagePaletteClosed(); - void pagePaletteButtonPressed(); + void pagePaletteButtonPressed(); void pagePaletteButtonReleased(); void addItemToCurrentPage(); diff --git a/src/desktop/UBDesktopAnnotationController.cpp b/src/desktop/UBDesktopAnnotationController.cpp index 5d6b3b34..cb44c140 100644 --- a/src/desktop/UBDesktopAnnotationController.cpp +++ b/src/desktop/UBDesktopAnnotationController.cpp @@ -56,7 +56,7 @@ UBDesktopAnnotationController::UBDesktopAnnotationController(QObject *parent) , mDesktopPenPalette(NULL) , mDesktopMarkerPalette(NULL) , mDesktopEraserPalette(NULL) - , mLibPalette(NULL) + , mRightPalette(NULL) , mWindowPositionInitialized(0) , mIsFullyTransparent(false) , mDesktopToolsPalettePositioned(false) @@ -89,7 +89,7 @@ UBDesktopAnnotationController::UBDesktopAnnotationController(QObject *parent) mTransparentDrawingScene = new UBGraphicsScene(0); mTransparentDrawingView->setScene(mTransparentDrawingScene); - mLibPalette = new UBLibPalette(mTransparentDrawingView); + mRightPalette = new UBRightPalette(mTransparentDrawingView); mDesktopPalette = new UBDesktopPalette(mTransparentDrawingView); @@ -160,7 +160,7 @@ UBDesktopAnnotationController::UBDesktopAnnotationController(QObject *parent) #ifdef Q_WS_X11 connect(mDesktopPalette, SIGNAL(moving()), this, SLOT(refreshMask())); - connect(mLibPalette, SIGNAL(resized()), this, SLOT(refreshMask())); + connect(mRightPalette, SIGNAL(resized()), this, SLOT(refreshMask())); #endif onDesktopPaletteMaximized(); } @@ -212,10 +212,10 @@ UBDesktopAnnotationController::~UBDesktopAnnotationController() delete mDesktopEraserPalette; mDesktopEraserPalette = NULL; } - if(NULL != mLibPalette) + if(NULL != mRightPalette) { - delete mLibPalette; - mLibPalette = NULL; + delete mRightPalette; + mRightPalette = NULL; } */ } @@ -800,7 +800,7 @@ void UBDesktopAnnotationController::onDesktopPaletteMinimize() */ void UBDesktopAnnotationController::onTransparentWidgetResized() { - mLibPalette->resize(mLibPalette->width(), mTransparentDrawingView->height()); + mRightPalette->resize(mRightPalette->width(), mTransparentDrawingView->height()); } void UBDesktopAnnotationController::updateMask(bool bTransparent) @@ -827,9 +827,9 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent) { p.drawRect(mKeyboardPalette->geometry().x(), mKeyboardPalette->geometry().y(), mKeyboardPalette->width(), mKeyboardPalette->height()); } - if(mLibPalette->isVisible()) + if(mRightPalette->isVisible()) { - p.drawRect(mLibPalette->geometry().x(), mLibPalette->geometry().y(), mLibPalette->width(), mLibPalette->height()); + p.drawRect(mRightPalette->geometry().x(), mRightPalette->geometry().y(), mRightPalette->width(), mRightPalette->height()); } p.end(); diff --git a/src/desktop/UBDesktopAnnotationController.h b/src/desktop/UBDesktopAnnotationController.h index c4e9fea3..f569332a 100644 --- a/src/desktop/UBDesktopAnnotationController.h +++ b/src/desktop/UBDesktopAnnotationController.h @@ -20,7 +20,7 @@ #include #include -#include "gui/UBLibPalette.h" +#include "gui/UBRightPalette.h" class UBDesktopPalette; class UBDesktopToolsPalette; @@ -117,7 +117,7 @@ class UBDesktopAnnotationController : public QObject UBDesktopMarkerPalette* mDesktopMarkerPalette; UBDesktopEraserPalette* mDesktopEraserPalette; - UBLibPalette* mLibPalette; + UBRightPalette* mRightPalette; QTime mPenHoldTimer; QTime mMarkerHoldTimer; diff --git a/src/gui/UBDockPalette.cpp b/src/gui/UBDockPalette.cpp index e1e44528..b342bc6a 100644 --- a/src/gui/UBDockPalette.cpp +++ b/src/gui/UBDockPalette.cpp @@ -24,22 +24,6 @@ #include "core/memcheck.h" -/* - Note to myself: I will have to modify this implementation when we will - have to support mulitple tab. At this moment, a UBDockPalette - will be only the palette that manages the tabs. This - palette will maintain a list of tabs with icons and will - contain a QStackedWidget that will be contains the different - widget contents. - A click on a tab that is not related to the current widget - will show the related widget in the palette. - A click on a tab that is related to the current widget will - collapse the palette. - If the palette is collapsed, a click on any tab will expand it - and show the tab related widget. -*/ - - /** * \brief The constructor */ @@ -54,9 +38,17 @@ UBDockPalette::UBDockPalette(QWidget *parent, const char *name) , mLastWidth(-1) , mHTab(0) , mpStackWidget(NULL) + , mpLayout(NULL) + , mCurrentTab(0) { setObjectName(name); + mpLayout = new QVBoxLayout(); + setLayout(mpLayout); + + mpStackWidget = new QStackedWidget(this); + mpLayout->addWidget(mpStackWidget); + // clear the tab widgets mTabWidgets.clear(); @@ -100,6 +92,11 @@ UBDockPalette::~UBDockPalette() delete mpStackWidget; mpStackWidget = NULL; } + if(NULL != mpLayout) + { + delete mpLayout; + mpLayout = NULL; + } } /** @@ -202,13 +199,13 @@ void UBDockPalette::mousePressEvent(QMouseEvent *event) switch(mOrientation) { case eUBDockOrientation_Left: - if((p.x() >= width() - border()) && (p.x() <= width())) + if((p.x() >= width() - 2 * border()) && (p.x() <= width())) { mCanResize = true; } break; case eUBDockOrientation_Right: - if((p.x() >= 0) && (p.x() <= border())) + if((p.x() >= 0) && (p.x() <= 2 * border())) { mCanResize = true; } @@ -233,15 +230,18 @@ void UBDockPalette::mouseReleaseEvent(QMouseEvent *event) Q_UNUSED(event); if(!mResized && mClickTime.elapsed() < CLICKTIME) { + int nbTabs = mTabWidgets.size(); + int clickedTab = 0; // If the clicked position is in the tab, perform the related action if(eUBDockOrientation_Left == mOrientation) { if(mMousePressPos.x() >= width() - 2*border() && mMousePressPos.y() >= mHTab && mMousePressPos.x() <= width() && - mMousePressPos.y() <= mHTab + TABSIZE) + mMousePressPos.y() <= mHTab + nbTabs*TABSIZE + (nbTabs -1)*tabSpacing()) { - tabClicked(); + clickedTab = (mMousePressPos.y() - mHTab)/(TABSIZE+tabSpacing()); + tabClicked(clickedTab); } } else if(eUBDockOrientation_Right == mOrientation) @@ -249,9 +249,10 @@ void UBDockPalette::mouseReleaseEvent(QMouseEvent *event) if(mMousePressPos.x() >= 0 && mMousePressPos.x() <= 2*border() && mMousePressPos.y() >= mHTab && - mMousePressPos.y() <= mHTab + TABSIZE) + mMousePressPos.y() <= mHTab + nbTabs*TABSIZE + (nbTabs -1)*tabSpacing()) { - tabClicked(); + clickedTab = (mMousePressPos.y() - mHTab)/(TABSIZE+tabSpacing()); + tabClicked(clickedTab); } } } @@ -321,39 +322,76 @@ void UBDockPalette::paintEvent(QPaintEvent *event) painter.setRenderHint(QPainter::Antialiasing); painter.setPen(Qt::NoPen); painter.setBrush(mBackgroundBrush); + QPainterPath path; + path.setFillRule(Qt::WindingFill); - for(int i = 0; i < mTabWidgets.size(); i++) + int nbTabs = mTabWidgets.size(); + if(0 < nbTabs) { - if(eUBDockTabOrientation_Up == mTabsOrientation) - { - mHTab = border(); - } - else - { - mHTab = height() - border() - i*TABSIZE; - } - + // First draw the BIG RECTANGLE (I write it big because the rectangle is big...) if(mOrientation == eUBDockOrientation_Left) { - QPainterPath path; - path.setFillRule(Qt::WindingFill); path.addRect(0.0, 0.0, width()-2*border(), height()); - path.addRoundedRect(width()-4*border(), mHTab, 4*border(), TABSIZE, radius(), radius()); - painter.drawPath(path); - //painter.drawPixmap(width() - border() + 1, mHTab + 1 , border() - 4, TABSIZE - 2, mIcon); } else if(mOrientation == eUBDockOrientation_Right) { - QPainterPath path; - path.setFillRule(Qt::WindingFill); path.addRect(2*border(), 0.0, width()-2*border(), height()); - path.addRoundedRect(0.0, mHTab, 4*border(), TABSIZE, radius(), radius()); - painter.drawPath(path); - //painter.drawPixmap(2, mHTab + 1, border() - 3, TABSIZE - 2, mIcon); + } + + // THEN DRAW THE small tabs (yes, the tabs are small...) + if(eUBDockTabOrientation_Up == mTabsOrientation) + { + mHTab = border(); } else { - painter.drawRoundedRect(border(), border(), width() - 2 * border(), height() - 2 * border(), radius(), radius()); + mHTab = height() - border() - nbTabs*TABSIZE - (nbTabs-1)*tabSpacing(); + } + + for(int i = 0; i < mTabWidgets.size(); i++) + { + UBDockPaletteWidget* pCrntWidget = mTabWidgets.at(i); + if(NULL != pCrntWidget) + { + if(mOrientation == eUBDockOrientation_Left) + { + path.addRoundedRect(width()-4*border(), mHTab + i*TABSIZE + i*tabSpacing(), 4*border(), TABSIZE, radius(), radius()); + painter.drawPath(path); + QPixmap iconPixmap; + if(mCollapseWidth >= width()) + { + // Get the collapsed icon + iconPixmap = pCrntWidget->iconToRight(); + } + else + { + // Get the expanded icon + iconPixmap = pCrntWidget->iconToLeft(); + } + painter.drawPixmap(width() - 2*border() + 1, mHTab + i*TABSIZE + i*tabSpacing() + 1 , 2*border() - 4, TABSIZE - 2, iconPixmap); + } + else if(mOrientation == eUBDockOrientation_Right) + { + path.addRoundedRect(0.0, mHTab + i*TABSIZE + i*tabSpacing(), 4*border(), TABSIZE, radius(), radius()); + painter.drawPath(path); + QPixmap iconPixmap; + if(mCollapseWidth >= width()) + { + // Get the collapsed icon + iconPixmap = pCrntWidget->iconToLeft(); + } + else + { + // Get the expanded icon + iconPixmap = pCrntWidget->iconToRight(); + } + painter.drawPixmap(2, mHTab + i*TABSIZE + i*tabSpacing() + 1, 2*border() - 4, TABSIZE - 2, iconPixmap); + } + else + { + painter.drawRoundedRect(border(), border(), width() - 2 * border(), height() - 2 * border(), radius(), radius()); + } + } } } } @@ -409,7 +447,33 @@ int UBDockPalette::collapseWidth() /** * \brief collapse/expand automatically the palette after a click on its tab */ -void UBDockPalette::tabClicked() +void UBDockPalette::tabClicked(int tabIndex) +{ + // If the current tab is not the clicked one, show its content + if(mCurrentTab != tabIndex) + { + showTabWidget(tabIndex); + } + // else collapse the palette + else + { + toggleCollapseExpand(); + } +} + +void UBDockPalette::showTabWidget(int tabIndex) +{ + mpStackWidget->setCurrentIndex(tabIndex); + mCurrentTab = tabIndex; + + // Expand it if collapsed + if(mLastWidth != -1) + { + toggleCollapseExpand(); + } +} + +void UBDockPalette::toggleCollapseExpand() { if(mLastWidth == -1) { @@ -449,12 +513,34 @@ int UBDockPalette::customMargin() return 5; } -void UBDockPalette::addTabWidget(const QString &widgetName, UBDockPaletteWidget *widget) +void UBDockPalette::addTabWidget(UBDockPaletteWidget *widget) { - mTabWidgets[widgetName] = widget; + mTabWidgets.append(widget); + mpStackWidget->addWidget(widget); + update(); } void UBDockPalette::removeTab(const QString &widgetName) { - mTabWidgets.remove(widgetName); + for(int i = 0; i < mTabWidgets.size(); i++) + { + UBDockPaletteWidget* pCrntWidget = mTabWidgets.at(i); + if(NULL != pCrntWidget && (pCrntWidget->name() == widgetName)) + { + mpStackWidget->removeWidget(pCrntWidget); + mTabWidgets.remove(i); + update(); + break; + } + } +} + +void UBDockPalette::onResizeRequest(QResizeEvent *event) +{ + resizeEvent(event); +} + +int UBDockPalette::tabSpacing() +{ + return 2; } diff --git a/src/gui/UBDockPalette.h b/src/gui/UBDockPalette.h index c2e68b4a..34c3ee2b 100644 --- a/src/gui/UBDockPalette.h +++ b/src/gui/UBDockPalette.h @@ -26,6 +26,8 @@ #include #include #include +#include +#include #include "UBDockPaletteWidget.h" @@ -68,10 +70,11 @@ public: virtual void leaveEvent(QEvent *); void setBackgroundBrush(const QBrush& brush); - void addTabWidget(const QString& widgetName, UBDockPaletteWidget* widget); - void removeTab(const QString& widgetName); protected: + void addTabWidget(UBDockPaletteWidget* widget); + void removeTab(const QString& widgetName); + virtual int border(); virtual int radius(); virtual int customMargin(); @@ -107,15 +110,25 @@ protected: /** The h position of the tab */ int mHTab; /** The tab widgets */ - QMap mTabWidgets; + //QMap mTabWidgets; /** The stacked widget */ QStackedWidget* mpStackWidget; + /** The layout */ + QVBoxLayout* mpLayout; + /** The current tab index */ + int mCurrentTab; + /** The tab widgets */ + QVector mTabWidgets; private slots: void onToolbarPosUpdated(); + void onResizeRequest(QResizeEvent* event); private: - void tabClicked(); + void tabClicked(int tabIndex); + int tabSpacing(); + void showTabWidget(int tabIndex); + void toggleCollapseExpand(); }; #endif // UBDOCKPALETTE_H diff --git a/src/gui/UBDockPaletteWidget.cpp b/src/gui/UBDockPaletteWidget.cpp index bf8e51c7..d649d9a5 100644 --- a/src/gui/UBDockPaletteWidget.cpp +++ b/src/gui/UBDockPaletteWidget.cpp @@ -1,36 +1,26 @@ #include "UBDockPaletteWidget.h" -UBDockPaletteWidget::UBDockPaletteWidget(const char *name, QWidget *parent):QWidget(parent) - , mpWidget(NULL) +UBDockPaletteWidget::UBDockPaletteWidget(QWidget *parent, const char *name):QWidget(parent) { setObjectName(name); - } UBDockPaletteWidget::~UBDockPaletteWidget() { - if(NULL != mpWidget) - { - delete mpWidget; - mpWidget = NULL; - } + } -QWidget* UBDockPaletteWidget::widget() +QPixmap UBDockPaletteWidget::iconToRight() { - return mpWidget; + return mIconToRight; } -QIcon UBDockPaletteWidget::icon() +QPixmap UBDockPaletteWidget::iconToLeft() { - return mIcon; + return mIconToLeft; } -QIcon UBDockPaletteWidget::collapsedIcon() +QString UBDockPaletteWidget::name() { - return mCollapsedIcon; + return mName; } - QString UBDockPaletteWidget::name() - { - return mName; - } diff --git a/src/gui/UBDockPaletteWidget.h b/src/gui/UBDockPaletteWidget.h index 6d21a15a..1158a858 100644 --- a/src/gui/UBDockPaletteWidget.h +++ b/src/gui/UBDockPaletteWidget.h @@ -2,24 +2,22 @@ #define UBDOCKPALETTEWIDGET_H #include -#include +#include #include class UBDockPaletteWidget : public QWidget { public: - UBDockPaletteWidget(const char* name="UBDockPaletteWidget", QWidget* parent=0); + UBDockPaletteWidget(QWidget* parent=0, const char* name="UBDockPaletteWidget"); ~UBDockPaletteWidget(); - QWidget* widget(); - QIcon icon(); - QIcon collapsedIcon(); + QPixmap iconToRight(); + QPixmap iconToLeft(); QString name(); protected: - QWidget* mpWidget; - QIcon mIcon; - QIcon mCollapsedIcon; + QPixmap mIconToRight; // arrow like this: > + QPixmap mIconToLeft; // arrow like this: < QString mName; }; diff --git a/src/gui/UBLeftPalette.cpp b/src/gui/UBLeftPalette.cpp new file mode 100644 index 00000000..299e8494 --- /dev/null +++ b/src/gui/UBLeftPalette.cpp @@ -0,0 +1,44 @@ +/* + * 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 3 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, see . + */ +#include "UBLeftPalette.h" + +UBLeftPalette::UBLeftPalette(QWidget *parent, const char *name):UBDockPalette(parent) + , mpPageNavigator(NULL) +{ + setObjectName(name); + setOrientation(eUBDockOrientation_Left); + mLastWidth = 300; + setMaximumWidth(300); + resize(UBSettings::settings()->navigPaletteWidth->get().toInt(), height()); + + mpLayout->setContentsMargins(customMargin(), customMargin(), 2*border() + customMargin(), customMargin()); + + mpPageNavigator = new UBPageNavigationWidget(this); + addTabWidget(mpPageNavigator); +} + +UBLeftPalette::~UBLeftPalette() +{ + if(NULL != mpPageNavigator) + { + delete mpPageNavigator; + mpPageNavigator = NULL; + } +} + +UBPageNavigationWidget* UBLeftPalette::pageNavigator() +{ + return mpPageNavigator; +} diff --git a/src/gui/UBLeftPalette.h b/src/gui/UBLeftPalette.h new file mode 100644 index 00000000..61e0e1ce --- /dev/null +++ b/src/gui/UBLeftPalette.h @@ -0,0 +1,34 @@ +/* + * 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 3 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, see . + */ +#ifndef UBLEFTPALETTE_H +#define UBLEFTPALETTE_H + +#include "UBDockPalette.h" +#include "UBPageNavigationWidget.h" + +class UBLeftPalette : public UBDockPalette +{ +public: + UBLeftPalette(QWidget* parent=0, const char* name="UBLeftPalette"); + ~UBLeftPalette(); + + UBPageNavigationWidget* pageNavigator(); + +private: + UBPageNavigationWidget* mpPageNavigator; + +}; + +#endif // UBLEFTPALETTE_H diff --git a/src/gui/UBLibNavigatorWidget.cpp b/src/gui/UBLibNavigatorWidget.cpp index adefdd1e..8edaf447 100644 --- a/src/gui/UBLibNavigatorWidget.cpp +++ b/src/gui/UBLibNavigatorWidget.cpp @@ -13,7 +13,7 @@ * along with this program. If not, see . */ #include "UBLibNavigatorWidget.h" -#include "UBLibPalette.h" +#include "UBRightPalette.h" #include "core/memcheck.h" @@ -36,7 +36,7 @@ UBLibNavigatorWidget::UBLibNavigatorWidget(QWidget *parent, const char *name):QW setObjectName(name); setAcceptDrops(true); - UBLibPalette* pLibPalette = dynamic_cast(parentWidget()); + UBRightPalette* pRightPalette = dynamic_cast(parentWidget()); mLayout = new QVBoxLayout(this); // mLayout->setContentsMargins(20, 5, 5, 5); @@ -66,14 +66,14 @@ UBLibNavigatorWidget::UBLibNavigatorWidget(QWidget *parent, const char *name):QW connect(mSlider,SIGNAL(valueChanged(int)),this,SLOT(updateThumbnailsSize(int))); connect(mPathViewer, SIGNAL(elementsDropped(QList,UBLibElement*)), mLibWidget, SLOT(onElementsDropped(QList,UBLibElement*))); - if(NULL != pLibPalette) + if(NULL != pRightPalette) { - connect(mLibWidget, SIGNAL(navigBarUpdate(UBLibElement*)), pLibPalette->actionBar(), SLOT(onNavigbarUpdate(UBLibElement*))); - connect(mLibWidget, SIGNAL(itemsSelected(QList, bool)), pLibPalette->actionBar(), SLOT(onSelectionChanged(QList, bool))); - connect(pLibPalette->actionBar(), SIGNAL(deleteDone()), mLibWidget, SLOT(onRefreshCurrentFolder())); - connect(mLibWidget, SIGNAL(favoritesEntered(bool)), pLibPalette->actionBar(), SLOT(onFavoritesEntered(bool))); - connect(pLibPalette->actionBar(), SIGNAL(searchElement(QString)), mLibWidget, SLOT(onSearchElement(QString))); - connect(pLibPalette->actionBar(), SIGNAL(newFolderToCreate()), mLibWidget, SLOT(onNewFolderToCreate())); + connect(mLibWidget, SIGNAL(navigBarUpdate(UBLibElement*)), pRightPalette->libWidget()->actionBar(), SLOT(onNavigbarUpdate(UBLibElement*))); + connect(mLibWidget, SIGNAL(itemsSelected(QList, bool)), pRightPalette->libWidget()->actionBar(), SLOT(onSelectionChanged(QList, bool))); + connect(pRightPalette->libWidget()->actionBar(), SIGNAL(deleteDone()), mLibWidget, SLOT(onRefreshCurrentFolder())); + connect(mLibWidget, SIGNAL(favoritesEntered(bool)), pRightPalette->libWidget()->actionBar(), SLOT(onFavoritesEntered(bool))); + connect(pRightPalette->libWidget()->actionBar(), SIGNAL(searchElement(QString)), mLibWidget, SLOT(onSearchElement(QString))); + connect(pRightPalette->libWidget()->actionBar(), SIGNAL(newFolderToCreate()), mLibWidget, SLOT(onNewFolderToCreate())); } mLibWidget->init(); diff --git a/src/gui/UBLibPalette.cpp b/src/gui/UBLibPalette.cpp index 1970adeb..597a99a0 100644 --- a/src/gui/UBLibPalette.cpp +++ b/src/gui/UBLibPalette.cpp @@ -28,11 +28,8 @@ UBLibPalette::UBLibPalette(QWidget *parent, const char *name):UBDockPalette(pare , mNavigator(NULL) , mProperties(NULL) , mActionBar(NULL) - , mDropWidget(NULL) { setOrientation(eUBDockOrientation_Right); - //mCollapsedIcon = QPixmap(":images/library_open.png"); - //mIcon = QPixmap(":images/library_close.png"); setAcceptDrops(true); @@ -50,14 +47,12 @@ UBLibPalette::UBLibPalette(QWidget *parent, const char *name):UBDockPalette(pare mActionBar = new UBLibActionBar(this); mNavigator = new UBLibNavigatorWidget(this); mProperties = new UBLibItemProperties(this); - //mDropWidget = new UBDropMeWidget(this); mLayout->addWidget(mStackedWidget, 1); mLayout->addWidget(mActionBar, 0); mStackedWidget->addWidget(mNavigator); mStackedWidget->addWidget(mProperties); - //mStackedWidget->addWidget(mDropWidget); mStackedWidget->setCurrentIndex(ID_NAVIGATOR); miCrntStackWidget = ID_NAVIGATOR; @@ -71,18 +66,7 @@ UBLibPalette::UBLibPalette(QWidget *parent, const char *name):UBDockPalette(pare */ UBLibPalette::~UBLibPalette() { - //if(NULL != mStackedWidget) - //{ - // delete mStackedWidget; - // mStackedWidget = NULL; - //} - //if(NULL != mNavigator) - //{ - // delete mNavigator; - // mNavigator = NULL; - //} - - if(NULL != mProperties) + if(NULL != mProperties) { delete mProperties; mProperties = NULL; @@ -92,16 +76,6 @@ UBLibPalette::~UBLibPalette() delete mActionBar; mActionBar = NULL; } - if(NULL != mDropWidget) - { - delete mDropWidget; - mDropWidget = NULL; - } - //if(NULL != mLayout) - //{ - //delete mLayout; - //mLayout = NULL; - //} } /** @@ -121,13 +95,11 @@ void UBLibPalette::updateMaxWidth() void UBLibPalette::dragEnterEvent(QDragEnterEvent *pEvent) { setBackgroundRole(QPalette::Highlight); - //mStackedWidget->setCurrentIndex(ID_DROPME); pEvent->acceptProposedAction(); } void UBLibPalette::dragLeaveEvent(QDragLeaveEvent *pEvent) { - //mStackedWidget->setCurrentIndex(miCrntStackWidget); pEvent->accept(); } @@ -164,8 +136,6 @@ void UBLibPalette::processMimeData(const QMimeData *pData) { qDebug() << "Dropped element format " << i << " = "<< qslFormats.at(i); } - // mNavigator->dropMe(pData); - } void UBLibPalette::mouseMoveEvent(QMouseEvent *event) @@ -205,30 +175,3 @@ void UBLibPalette::resizeEvent(QResizeEvent *event) UBSettings::settings()->libPaletteWidth->set(width()); emit resized(); } - -// -------------------------------------------------------------------------- -UBDropMeWidget::UBDropMeWidget(QWidget *parent, const char *name):QWidget(parent) - , mpLabel(NULL) - , mpLayout(NULL) -{ - setObjectName(name); - mpLayout = new QVBoxLayout(this); - setLayout(mpLayout); - - mpLabel = new QLabel(tr("Drop here"), this); - mpLayout->addWidget(mpLabel); -} - -UBDropMeWidget::~UBDropMeWidget() -{ - if(NULL != mpLabel) - { - delete mpLabel; - mpLabel = NULL; - } - if(NULL != mpLayout) - { - delete mpLayout; - mpLayout = NULL; - } -} diff --git a/src/gui/UBLibPalette.h b/src/gui/UBLibPalette.h index afbe8ff9..ca6d6890 100644 --- a/src/gui/UBLibPalette.h +++ b/src/gui/UBLibPalette.h @@ -33,18 +33,6 @@ #define ID_NAVIGATOR 0 #define ID_PROPERTIES 1 -#define ID_DROPME 2 - -class UBDropMeWidget : public QWidget -{ -public: - UBDropMeWidget(QWidget* parent=0, const char* name="dropMeWidget"); - ~UBDropMeWidget(); - -private: - QLabel* mpLabel; - QVBoxLayout* mpLayout; -}; class UBLibPalette : public UBDockPalette { @@ -84,8 +72,6 @@ private: UBLibItemProperties* mProperties; /** UBLibActionBar */ UBLibActionBar* mActionBar; - /** The 'drop here' indicator */ - UBDropMeWidget* mDropWidget; /** The current stack widget index*/ int miCrntStackWidget; }; diff --git a/src/gui/UBLibWidget.cpp b/src/gui/UBLibWidget.cpp new file mode 100644 index 00000000..de9cf34d --- /dev/null +++ b/src/gui/UBLibWidget.cpp @@ -0,0 +1,154 @@ +/* + * 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 3 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, see . + */ +#include + +#include "UBLibWidget.h" +#include "core/memcheck.h" + +/** + * \brief Constructor + * @param parent as the parent widget + * @param name as the object name + */ +UBLibWidget::UBLibWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent) + , mLayout(NULL) + , mStackedWidget(NULL) + , mNavigator(NULL) + , mProperties(NULL) + , mActionBar(NULL) +{ + setObjectName(name); + mName = "LibWidget"; + mIconToLeft = QPixmap(":images/library_open.png"); + mIconToRight = QPixmap(":images/library_close.png"); + setAcceptDrops(true); + + mLayout = new QVBoxLayout(this); + setLayout(mLayout); + + // Build the GUI + mStackedWidget = new QStackedWidget(this); + mActionBar = new UBLibActionBar(this); + mNavigator = new UBLibNavigatorWidget(this); + mProperties = new UBLibItemProperties(this); + + mLayout->addWidget(mStackedWidget, 1); + mLayout->addWidget(mActionBar, 0); + + mStackedWidget->addWidget(mNavigator); + mStackedWidget->addWidget(mProperties); + + mStackedWidget->setCurrentIndex(ID_NAVIGATOR); + miCrntStackWidget = ID_NAVIGATOR; + + connect(mNavigator, SIGNAL(propertiesRequested(UBLibElement*)), this, SLOT(showProperties(UBLibElement*))); + connect(mProperties, SIGNAL(showFolderContent()), this, SLOT(showFolder())); +} + +/** + * \brief Destructor + */ +UBLibWidget::~UBLibWidget() +{ + if(NULL != mProperties) + { + delete mProperties; + mProperties = NULL; + } + if(NULL != mActionBar) + { + delete mActionBar; + mActionBar = NULL; + } +} + +/** + * \brief Handles the drag enter event + * @param pEvent as the drag enter event + */ +void UBLibWidget::dragEnterEvent(QDragEnterEvent *pEvent) +{ + setBackgroundRole(QPalette::Highlight); + pEvent->acceptProposedAction(); +} + +void UBLibWidget::dragLeaveEvent(QDragLeaveEvent *pEvent) +{ + pEvent->accept(); +} + +/** + * \brief Handles the drop event + * @param pEvent as the drop event + */ +void UBLibWidget::dropEvent(QDropEvent *pEvent) +{ + processMimeData(pEvent->mimeData()); + setBackgroundRole(QPalette::Dark); + mStackedWidget->setCurrentIndex(miCrntStackWidget); + pEvent->acceptProposedAction(); +} + +/** + * \brief Handles the drag move event + * @param pEvent as the drag move event + */ +void UBLibWidget::dragMoveEvent(QDragMoveEvent *pEvent) +{ + pEvent->acceptProposedAction(); +} + +/** + * \brief Process the dropped MIME data + * @param pData as the mime dropped data + */ +void UBLibWidget::processMimeData(const QMimeData *pData) +{ + // Display the different mime types contained in the mime data + QStringList qslFormats = pData->formats(); + for(int i = 0; i < qslFormats.size(); i++) + { + qDebug() << "Dropped element format " << i << " = "<< qslFormats.at(i); + } +} + +void UBLibWidget::showProperties(UBLibElement *elem) +{ + if(NULL != elem) + { + mActionBar->setButtons(eButtonSet_Properties); + // Show the properties of this object + mProperties->showElement(elem); + mStackedWidget->setCurrentIndex(ID_PROPERTIES); + miCrntStackWidget = ID_PROPERTIES; + } +} + +void UBLibWidget::showFolder() +{ + mActionBar->setButtons(mActionBar->previousButtonSet()); + mStackedWidget->setCurrentIndex(ID_NAVIGATOR); + miCrntStackWidget = ID_NAVIGATOR; +} + +int UBLibWidget::customMargin() +{ + return 5; +} + +int UBLibWidget::border() +{ + return 15; +} diff --git a/src/gui/UBLibWidget.h b/src/gui/UBLibWidget.h new file mode 100644 index 00000000..09896ae4 --- /dev/null +++ b/src/gui/UBLibWidget.h @@ -0,0 +1,78 @@ +/* + * 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 3 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, see . + */ +#ifndef UBLIBWIDGET_H +#define UBLIBWIDGET_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "UBDockPaletteWidget.h" +#include "UBLibNavigatorWidget.h" +#include "UBLibItemProperties.h" +#include "UBLibActionBar.h" + +#define ID_NAVIGATOR 0 +#define ID_PROPERTIES 1 + +class UBLibWidget : public UBDockPaletteWidget +{ + Q_OBJECT +public: + UBLibWidget(QWidget* parent=0, const char* name="UBLibWidget"); + ~UBLibWidget(); + + UBLibActionBar* actionBar(){return mActionBar;} + +signals: + void resized(); + +protected: + void dragEnterEvent(QDragEnterEvent* pEvent); + void dropEvent(QDropEvent *pEvent); + void dragMoveEvent(QDragMoveEvent* pEvent); + void dragLeaveEvent(QDragLeaveEvent* pEvent); + +private slots: + void showProperties(UBLibElement* elem); + void showFolder(); + +private: + void processMimeData(const QMimeData* pData); + int customMargin(); + int border(); + + /** The layout */ + QVBoxLayout* mLayout; + /** The stacked layout */ + QStackedWidget* mStackedWidget; + /** The Navigator widget */ + UBLibNavigatorWidget* mNavigator; + /** The Properties widget */ + UBLibItemProperties* mProperties; + /** UBLibActionBar */ + UBLibActionBar* mActionBar; + /** The current stack widget index*/ + int miCrntStackWidget; +}; + +#endif // UBLIBWIDGET_H diff --git a/src/gui/UBPageNavigationWidget.cpp b/src/gui/UBPageNavigationWidget.cpp new file mode 100644 index 00000000..8c4c20c6 --- /dev/null +++ b/src/gui/UBPageNavigationWidget.cpp @@ -0,0 +1,195 @@ +/* + * 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 3 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, see . + */ +#include "UBPageNavigationWidget.h" +#include "core/UBApplication.h" +#include "board/UBBoardController.h" +#include "core/memcheck.h" + +/** + * \brief Constructor + * @param parent as the parent widget + * @param name as the object name + */ +UBPageNavigationWidget::UBPageNavigationWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent) + , mNavigator(NULL) + , mLayout(NULL) + , mHLayout(NULL) + , mPageNbr(NULL) + , mClock(NULL) +{ + setObjectName(name); + mName = "PageNavigator"; + + mIconToRight = QPixmap(":images/pages_open.png"); + mIconToLeft = QPixmap(":images/pages_close.png"); + + // Build the gui + mLayout = new QVBoxLayout(this); + //mLayout->setContentsMargins(customMargin(), customMargin(), 2*border() + customMargin(), customMargin()); + setLayout(mLayout); + + mNavigator = new UBDocumentNavigator(this); + mNavigator->setStyleSheet(QString("background-color : transparent;")); + mLayout->addWidget(mNavigator, 1); + + mHLayout = new QHBoxLayout(); + mLayout->addLayout(mHLayout, 0); + + mPageNbr = new QLabel(this); + mClock = new QLabel(this); + mHLayout->addWidget(mPageNbr); + mHLayout->addWidget(mClock); + + // Configure the page number indicator + mPageNbr->setStyleSheet(QString("QLabel { color: white; background-color: transparent; border: none; font-family: Arial; font-weight: bold; font-size: 20px }")); + setPageNumber(0, 0); + mPageNbr->setAlignment(Qt::AlignHCenter); + + // Configure the clock + mClock->setStyleSheet(QString("QLabel {color: white; background-color: transparent; text-align: center; font-family: Arial; font-weight: bold; font-size: 20px}")); + mTimeFormat = QLocale::system().timeFormat(QLocale::ShortFormat); + mClock->setAlignment(Qt::AlignHCenter); + + //strip seconds + mTimeFormat = mTimeFormat.remove(":ss"); + mTimeFormat = mTimeFormat.remove(":s"); + mTimerID = startTimer(1000); + + connect(mNavigator, SIGNAL(changeCurrentPage()), this, SLOT(changeCurrentPage())); +} + +/** + * \brief Destructor + */ +UBPageNavigationWidget::~UBPageNavigationWidget() +{ + killTimer(mTimerID); + + if(NULL != mClock) + { + delete mClock; + mClock = NULL; + } + if(NULL != mPageNbr) + { + delete mPageNbr; + mPageNbr = NULL; + } + if(NULL != mHLayout) + { + delete mHLayout; + mHLayout = NULL; + } + if(NULL != mLayout) + { + delete mLayout; + mLayout = NULL; + } + if(NULL != mNavigator) + { + delete mNavigator; + mNavigator = NULL; + } +} + +/** + * \brief Set the current document in the navigator + * @param document as the given document + */ +void UBPageNavigationWidget::setDocument(UBDocumentProxy *document) +{ + if(mNavigator->currentDoc() != document) + { + mNavigator->setDocument(document); + } +} + +/** + * \brief Change the current page + */ +void UBPageNavigationWidget::changeCurrentPage() +{ + // Get the index of the page to display + int iPage = mNavigator->selectedPageNumber(); + if(NO_PAGESELECTED != iPage) + { + // Display the selected page + UBApplication::boardController->setActiveDocumentScene(mNavigator->currentDoc(), iPage); + } +} + +/** + * \brief Refresh the thumbnails widget + */ +void UBPageNavigationWidget::refresh() +{ + mNavigator->setDocument(UBApplication::boardController->activeDocument()); +} + +/** + * \brief Handle the resize event + * @param event as the resize event + */ +void UBPageNavigationWidget::resizeEvent(QResizeEvent *event) +{ + emit resizeRequest(event); + //UBDockPalette::resizeEvent(event); + if(NULL != mNavigator) + { + mNavigator->setMinimumHeight(height() - 2*border()); + } + UBSettings::settings()->navigPaletteWidth->set(width()); +} + +/** + * \brief Notify a timer event + * @param event as the timer event + */ +void UBPageNavigationWidget::timerEvent(QTimerEvent *event) +{ + Q_UNUSED(event); + updateTime(); +} + +/** + * \brief Update the current time + */ +void UBPageNavigationWidget::updateTime() +{ + if (mClock) + { + mClock->setText(QLocale::system().toString (QTime::currentTime(), mTimeFormat)); + } +} + +/** + * \brief Set the page number + * @param current as the current page + * @param total as the total number of pages + */ +void UBPageNavigationWidget::setPageNumber(int current, int total) +{ + mPageNbr->setText(QString("%1 / %2").arg(current).arg(total)); +} + +int UBPageNavigationWidget::customMargin() +{ + return 5; +} + +int UBPageNavigationWidget::border() +{ + return 15; +} diff --git a/src/gui/UBPageNavigationWidget.h b/src/gui/UBPageNavigationWidget.h new file mode 100644 index 00000000..8f1ca723 --- /dev/null +++ b/src/gui/UBPageNavigationWidget.h @@ -0,0 +1,68 @@ +/* + * 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 3 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, see . + */ +#ifndef UBPAGENAVIGATIONWIDGET_H +#define UBPAGENAVIGATIONWIDGET_H + +#include +#include +#include +#include +#include +#include +#include + +#include "UBDocumentNavigator.h" +#include "UBDockPaletteWidget.h" +#include "document/UBDocumentProxy.h" + +class UBPageNavigationWidget : public UBDockPaletteWidget +{ + Q_OBJECT +public: + UBPageNavigationWidget(QWidget* parent=0, const char* name="UBPageNavigationWidget"); + ~UBPageNavigationWidget(); + void setDocument(UBDocumentProxy* document); + void refresh(); + +signals: + void resizeRequest(QResizeEvent* event); + +public slots: + void setPageNumber(int current, int total); + +protected: + virtual void resizeEvent(QResizeEvent *event); + virtual void timerEvent(QTimerEvent *event); + +private: + void updateTime(); + int customMargin(); + int border(); + + /** The thumbnails navigator widget */ + UBDocumentNavigator* mNavigator; + /** The layout */ + QVBoxLayout* mLayout; + QHBoxLayout* mHLayout; + QLabel* mPageNbr; + QLabel* mClock; + QString mTimeFormat; + int mTimerID; + +private slots: + void changeCurrentPage(); +}; + +#endif // UBPAGENAVIGATIONWIDGET_H diff --git a/src/gui/UBRightPalette.cpp b/src/gui/UBRightPalette.cpp new file mode 100644 index 00000000..c7f8a765 --- /dev/null +++ b/src/gui/UBRightPalette.cpp @@ -0,0 +1,73 @@ +/* + * 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 3 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, see . + */ +#include "UBRightPalette.h" + +UBRightPalette::UBRightPalette(QWidget *parent, const char *name):UBDockPalette(parent) + , mpLibWidget(NULL) +{ + setObjectName(name); + setOrientation(eUBDockOrientation_Right); + setOrientation(eUBDockOrientation_Right); + mCollapseWidth = 180; + mLastWidth = 300; + resize(UBSettings::settings()->libPaletteWidth->get().toInt(), parentWidget()->height()); + mpLayout->setContentsMargins(2*border() + customMargin(), customMargin(), customMargin(), customMargin()); + + mpLibWidget = new UBLibWidget(this); + addTabWidget(mpLibWidget); +} + +UBRightPalette::~UBRightPalette() +{ + if(NULL != mpLibWidget) + { + delete mpLibWidget; + mpLibWidget = NULL; + } +} + +UBLibWidget* UBRightPalette::libWidget() +{ + return mpLibWidget; +} + +void UBRightPalette::mouseMoveEvent(QMouseEvent *event) +{ + if(mCanResize) + { + UBDockPalette::mouseMoveEvent(event); + } + else + { + //qDebug() << "Mouse move event detected!" ; + } +} + +void UBRightPalette::resizeEvent(QResizeEvent *event) +{ + UBDockPalette::resizeEvent(event); + UBSettings::settings()->libPaletteWidth->set(width()); + emit resized(); +} + +/** + * \brief Update the maximum width + */ +void UBRightPalette::updateMaxWidth() +{ + setMaximumWidth((int)((parentWidget()->width() * 2)/3)); + setMaximumHeight(parentWidget()->height()); + setMinimumHeight(parentWidget()->height()); +} diff --git a/src/gui/UBRightPalette.h b/src/gui/UBRightPalette.h new file mode 100644 index 00000000..7d99cd4c --- /dev/null +++ b/src/gui/UBRightPalette.h @@ -0,0 +1,42 @@ +/* + * 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 3 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, see . + */ +#ifndef UBRIGHTPALETTE_H +#define UBRIGHTPALETTE_H + +#include "UBDockPalette.h" +#include "UBLibWidget.h" + +class UBRightPalette : public UBDockPalette +{ + Q_OBJECT +public: + UBRightPalette(QWidget* parent=0, const char* name="UBRightPalette"); + ~UBRightPalette(); + + UBLibWidget* libWidget(); + +signals: + void resized(); + +protected: + void updateMaxWidth(); + void mouseMoveEvent(QMouseEvent *event); + void resizeEvent(QResizeEvent *event); + +private: + UBLibWidget* mpLibWidget; +}; + +#endif // UBRIGHTPALETTE_H diff --git a/src/gui/gui.pri b/src/gui/gui.pri index 67bab1be..2afdd343 100644 --- a/src/gui/gui.pri +++ b/src/gui/gui.pri @@ -39,7 +39,11 @@ HEADERS += src/gui/UBThumbnailView.h \ src/gui/UBLibraryWidget.h \ src/gui/UBLibPathViewer.h \ src/gui/UBUpdateDlg.h \ - src/gui/UBDockPaletteWidget.h + src/gui/UBDockPaletteWidget.h \ + src/gui/UBLeftPalette.h \ + src/gui/UBRightPalette.h \ + src/gui/UBPageNavigationWidget.h \ + src/gui/UBLibWidget.h SOURCES += src/gui/UBThumbnailView.cpp \ src/gui/UBFloatingPalette.cpp \ @@ -81,7 +85,11 @@ SOURCES += src/gui/UBThumbnailView.cpp \ src/gui/UBLibraryWidget.cpp \ src/gui/UBLibPathViewer.cpp \ src/gui/UBUpdateDlg.cpp \ - src/gui/UBDockPaletteWidget.cpp + src/gui/UBDockPaletteWidget.cpp \ + src/gui/UBLeftPalette.cpp \ + src/gui/UBRightPalette.cpp \ + src/gui/UBPageNavigationWidget.cpp \ + src/gui/UBLibWidget.cpp win32 { From 1bf16cf97ba56ef1b1981d347de568ecb94f6d26 Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Tue, 30 Aug 2011 16:15:12 +0200 Subject: [PATCH 06/12] Hiding the cache tool because it is not finished yet --- src/gui/gui.pri | 4 ++-- src/tools/UBToolsManager.cpp | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/gui/gui.pri b/src/gui/gui.pri index d7d3dff6..0c17c86c 100644 --- a/src/gui/gui.pri +++ b/src/gui/gui.pri @@ -43,7 +43,7 @@ HEADERS += src/gui/UBThumbnailView.h \ src/gui/UBLeftPalette.h \ src/gui/UBRightPalette.h \ src/gui/UBPageNavigationWidget.h \ - src/gui/UBLibWidget.h + src/gui/UBLibWidget.h \ src/gui/UBMagnifer.h SOURCES += src/gui/UBThumbnailView.cpp \ @@ -90,7 +90,7 @@ SOURCES += src/gui/UBThumbnailView.cpp \ src/gui/UBLeftPalette.cpp \ src/gui/UBRightPalette.cpp \ src/gui/UBPageNavigationWidget.cpp \ - src/gui/UBLibWidget.cpp + src/gui/UBLibWidget.cpp \ src/gui/UBMagnifer.cpp win32 { diff --git a/src/tools/UBToolsManager.cpp b/src/tools/UBToolsManager.cpp index 8bf10e24..4bbd4f3a 100644 --- a/src/tools/UBToolsManager.cpp +++ b/src/tools/UBToolsManager.cpp @@ -58,12 +58,12 @@ UBToolsManager::UBToolsManager(QObject *parent) mToolsIcon.insert(triangle.id,":/images/toolPalette/triangleTool.png"); mDescriptors << triangle; - cache.id = "uniboardTool://uniboard.mnemis.com/cache"; - cache.icon = QPixmap(":/images/toolPalette/cacheTool.png"); - cache.label = tr("Cache"); - cache.version = "1.0"; - mToolsIcon.insert(cache.id, ":/images/toolPalette/cacheTool.png"); - mDescriptors << cache; +// cache.id = "uniboardTool://uniboard.mnemis.com/cache"; +// cache.icon = QPixmap(":/images/toolPalette/cacheTool.png"); +// cache.label = tr("Cache"); +// cache.version = "1.0"; +// mToolsIcon.insert(cache.id, ":/images/toolPalette/cacheTool.png"); +// mDescriptors << cache; } UBToolsManager::~UBToolsManager() From eaa54dde3ab0fc6bce386d2fe9b125f6a60b7922 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Tue, 30 Aug 2011 17:10:51 +0200 Subject: [PATCH 07/12] remove unused code --- src/adaptors/publishing/UBDocumentPublisher.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/adaptors/publishing/UBDocumentPublisher.h b/src/adaptors/publishing/UBDocumentPublisher.h index 7c2ebacf..e0375c4c 100644 --- a/src/adaptors/publishing/UBDocumentPublisher.h +++ b/src/adaptors/publishing/UBDocumentPublisher.h @@ -22,7 +22,6 @@ #include "UBAbstractPublisher.h" #define DOCPUBLICATION_URL "http://planete.sankore.org/xwiki/bin/view/CreateResources/UniboardUpload?xpage=plain&outputSyntax=plain" -#define XWIKI_ORIGIN_HEADER "http://sankore.devxwiki.com" typedef struct { From 8d3a61b65dd4976eb79a923c4a79ab55ec05c6b5 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 30 Aug 2011 18:49:29 +0300 Subject: [PATCH 08/12] changed Graphme app --- .../library/interactive/Graphme.wgt/Grapheur.xhtml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/resources/library/interactive/Graphme.wgt/Grapheur.xhtml b/resources/library/interactive/Graphme.wgt/Grapheur.xhtml index 14b7a9e5..7092abf5 100644 --- a/resources/library/interactive/Graphme.wgt/Grapheur.xhtml +++ b/resources/library/interactive/Graphme.wgt/Grapheur.xhtml @@ -148,8 +148,15 @@ $("#borneXGauche").val(sankore.preference("xAxisFrom", "-5")); $("#borneXDroite").val(sankore.preference("xAxisTo", "5")); $("#borneYGauche").val(sankore.preference("yAxisFrom", "-5")); - $("#borneYDroite").val(sankore.preference("yAxisTo", "5")); + $("#borneYDroite").val(sankore.preference("yAxisTo", "5")); + var tempArray; + if(sankore.preference("graphmeHistory","")) + tempArray = sankore.preference("graphmeHistory","").split(","); + if(sankore.preference("graphmeHistory","")){ + for(i in tempArray) + evaluer(tempArray[i]); + } actualiserGraph(); loadingFlag = true; } @@ -225,6 +232,9 @@ sankore.setPreference("offsetDiagrammX", $("#inputDecalageX").val()); sankore.setPreference("offsetDiagrammY", $("#inputDecalageY").val()); sankore.setPreference("accuracyGraph", $("#inputPrecision").val()); + + if(historique.length) + sankore.setPreference("graphmeHistory", historique.toString()); } }); }); From e59ac4ca1977976acaf7918ff0332b42e541cda0 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 1 Sep 2011 10:35:00 +0200 Subject: [PATCH 09/12] fixed crash after pdf import --- src/pdf/XPDFRenderer.cpp | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/src/pdf/XPDFRenderer.cpp b/src/pdf/XPDFRenderer.cpp index 6dce6d3d..c77113fd 100644 --- a/src/pdf/XPDFRenderer.cpp +++ b/src/pdf/XPDFRenderer.cpp @@ -40,7 +40,6 @@ XPDFRenderer::XPDFRenderer(const QString &filename, bool importingFile) mDocument = new PDFDoc(new GString(filename.toUtf8().data()), 0, 0, 0); // the filename GString is deleted on PDFDoc desctruction sInstancesCount.ref(); bThumbGenerated = !importingFile; - bPagesGenerated = false; mPagesMap.clear(); mThumbs.clear(); mThumbMap.clear(); @@ -154,7 +153,6 @@ void XPDFRenderer::render(QPainter *p, int pageNumber, const QRectF &bounds) qreal xscale = p->worldTransform().m11(); qreal yscale = p->worldTransform().m22(); bool bZoomChanged = false; - bool bFirstThumbnail = false; if(fabs(mScaleX - xscale) > 0.1 || fabs(mScaleY - yscale) > 0.1) { @@ -163,51 +161,36 @@ void XPDFRenderer::render(QPainter *p, int pageNumber, const QRectF &bounds) bZoomChanged = true; } + QImage *pdfImage; + // First verify if the thumbnails and the pages are generated if(!bThumbGenerated) { - if(pageNumber == 1) - { - bFirstThumbnail = true; - } - if(!mThumbMap[pageNumber - 1]) { - // Generate the thumbnail mThumbs << createPDFImage(pageNumber, xscale, yscale, bounds); mThumbMap[pageNumber - 1] = true; + pdfImage = mThumbs.at(pageNumber - 1); if(pageNumber == mDocument->getNumPages()) { bThumbGenerated = true; } } } - else if(!bPagesGenerated || bZoomChanged) + else { if(!mPagesMap[pageNumber - 1] || bZoomChanged) { // Generate the page + if (mPagesMap[pageNumber - 1]) + delete mNumPageToPageMap[pageNumber]; mNumPageToPageMap[pageNumber] = createPDFImage(pageNumber, xscale, yscale, bounds); mPagesMap[pageNumber - 1] = true; - if(mPagesMap.size() == mDocument->getNumPages()) - { - bPagesGenerated = true; - } + pdfImage = mNumPageToPageMap[pageNumber]; } } - QImage *pdfImage; - - if(!bThumbGenerated || bFirstThumbnail) - { - pdfImage = mThumbs.at(pageNumber - 1); - } - else - { - pdfImage = mNumPageToPageMap[pageNumber]; - } - QTransform savedTransform = p->worldTransform(); p->resetTransform(); p->drawImage(QPointF(savedTransform.dx() + mSliceX, savedTransform.dy() + mSliceY), *pdfImage); From fcbca14450ec09ebb4826fb293b8a3a1b6babc56 Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Thu, 1 Sep 2011 17:55:41 +0300 Subject: [PATCH 10/12] SANKORE-92 Magnifier --- resources/images/close.svg | 3 +- resources/images/cursors/magnifier.png | Bin 4692 -> 0 bytes resources/images/decrease.svg | 9 + resources/images/increase.svg | 9 + resources/images/stylusPalette/magnifier.png | Bin 2071 -> 0 bytes .../images/stylusPalette/magnifierOn.png | Bin 2802 -> 0 bytes .../images/toolPalette/magnifierTool.png | Bin 0 -> 8250 bytes .../images/toolbar/largeMagnifierSize.png | Bin 476 -> 0 bytes .../images/toolbar/largeMagnifierZoom.png | Bin 270 -> 0 bytes .../images/toolbar/mediumMagnifierSize.png | Bin 396 -> 0 bytes .../images/toolbar/mediumMagnifierZoom.png | Bin 300 -> 0 bytes .../images/toolbar/smallMagnifierSize.png | Bin 272 -> 0 bytes .../images/toolbar/smallMagnifierZoom.png | Bin 295 -> 0 bytes resources/sankore.qrc | 12 +- src/board/UBBoardController.cpp | 48 +-- src/board/UBBoardController.h | 5 + src/board/UBBoardView.cpp | 3 - src/board/UBDrawingController.cpp | 24 -- src/board/UBDrawingController.h | 3 - src/core/UB.h | 3 +- src/core/UBSettings.cpp | 164 -------- src/core/UBSettings.h | 26 +- src/domain/UBGraphicsScene.cpp | 175 ++++++--- src/domain/UBGraphicsScene.h | 21 +- src/gui/UBMagnifer.cpp | 355 +++++++++++++++--- src/gui/UBMagnifer.h | 82 ++-- src/gui/UBStylusPalette.cpp | 1 - src/tools/UBToolsManager.cpp | 13 +- src/tools/UBToolsManager.h | 2 +- 29 files changed, 517 insertions(+), 441 deletions(-) delete mode 100644 resources/images/cursors/magnifier.png create mode 100644 resources/images/decrease.svg create mode 100644 resources/images/increase.svg delete mode 100644 resources/images/stylusPalette/magnifier.png delete mode 100644 resources/images/stylusPalette/magnifierOn.png create mode 100644 resources/images/toolPalette/magnifierTool.png delete mode 100644 resources/images/toolbar/largeMagnifierSize.png delete mode 100644 resources/images/toolbar/largeMagnifierZoom.png delete mode 100644 resources/images/toolbar/mediumMagnifierSize.png delete mode 100644 resources/images/toolbar/mediumMagnifierZoom.png delete mode 100644 resources/images/toolbar/smallMagnifierSize.png delete mode 100644 resources/images/toolbar/smallMagnifierZoom.png diff --git a/resources/images/close.svg b/resources/images/close.svg index 5fa855a2..f552d322 100644 --- a/resources/images/close.svg +++ b/resources/images/close.svg @@ -5,6 +5,5 @@ width="26px" height="26px" viewBox="0 0 26 26" style="enable-background:new 0 0 26 26;" xml:space="preserve"> - + diff --git a/resources/images/cursors/magnifier.png b/resources/images/cursors/magnifier.png deleted file mode 100644 index f2decb01f10ee9c513db63cce88b205a243672ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4692 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 WcPh`O*%}1^0000| diff --git a/resources/images/decrease.svg b/resources/images/decrease.svg new file mode 100644 index 00000000..2f81bf5a --- /dev/null +++ b/resources/images/decrease.svg @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/resources/images/increase.svg b/resources/images/increase.svg new file mode 100644 index 00000000..23a4cf44 --- /dev/null +++ b/resources/images/increase.svg @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/resources/images/stylusPalette/magnifier.png b/resources/images/stylusPalette/magnifier.png deleted file mode 100644 index f17b51c72ab62d401ef1b10715749ed2fe03587a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2071 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 Eg3lINI{*Lx diff --git a/resources/images/toolPalette/magnifierTool.png b/resources/images/toolPalette/magnifierTool.png new file mode 100644 index 0000000000000000000000000000000000000000..a0a19206af7eea82d074379ecf3f082070968175 GIT binary patch literal 8250 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 TZx_A?x}L$))z4*}Q$iB}Q;24J diff --git a/resources/images/toolbar/smallMagnifierZoom.png b/resources/images/toolbar/smallMagnifierZoom.png deleted file mode 100644 index df7f8d56dfc35230352343db885104ebbb4315fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^{2~ zP~M`vMZ1JWl2QJovSN!wQoYBg*4@*}k27aIkNNuABE-7w$G6XyzANteDdMrA$$Eyj zRrN!LxCP8&KKmwU2>kA2vzhVxT>b*DBgRKxZfLsa=A&y-6xXoq#jFmtyt^#t6AyY6 z-Bsz<65Ez|dz!r1v)E(bC%gJ5c)yQyE1WHuC3g2xb>5BxA55IZz5ClfT59d;dLhtM r?j0}uxoxM{nis$F^Q))-P(HvQo@5fZEmP|s&{GVau6{1-oD!Mimages/uniboard.png images/bigUniboard.png images/close.svg + images/increase.svg + images/decrease.svg images/resize.svg images/play.svg images/pause.svg @@ -121,12 +123,6 @@ images/toolbar/eraserTool.png images/toolbar/lineTool.png images/toolbar/tools.png - images/toolbar/largeMagnifierSize.png - images/toolbar/mediumMagnifierSize.png - images/toolbar/smallMagnifierSize.png - images/toolbar/largeMagnifierZoom.png - images/toolbar/mediumMagnifierZoom.png - images/toolbar/smallMagnifierZoom.png images/stylusPalette/arrow.png images/stylusPalette/arrowOn.png images/stylusPalette/eraser.png @@ -150,8 +146,6 @@ images/stylusPalette/textOn.png images/stylusPalette/captureArea.png images/stylusPalette/captureAreaOn.png - images/stylusPalette/magnifier.png - images/stylusPalette/magnifierOn.png images/backgroundPalette/background1.svg images/backgroundPalette/background1On.svg images/backgroundPalette/background2.svg @@ -167,6 +161,7 @@ images/toolPalette/protractorTool.png images/toolPalette/compassTool.png images/toolPalette/maskTool.png + images/toolPalette/magnifierTool.png images/extraPalette/blackout.png images/extraPalette/keyboard.png images/extraPalette/trapFlash.png @@ -185,7 +180,6 @@ images/cursors/resize.png images/cursors/drawCompass.png images/cursors/drawRulerLine.png - images/cursors/magnifier.png images/print/onepage.png images/print/thumbnails.png images/print/twopages.png diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index c037db93..43c9088c 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -36,6 +36,7 @@ #include "gui/UBMainWindow.h" #include "gui/UBToolWidget.h" #include "gui/UBKeyboardPalette.h" +#include "gui/UBMagnifer.h" #include "domain/UBGraphicsPixmapItem.h" #include "domain/UBGraphicsItemUndoCommand.h" @@ -312,42 +313,6 @@ void UBBoardController::setupToolbar() //-----------------------------------------------------------// - QList magnifierZoomActions; - magnifierZoomActions.append(mMainWindow->actionMagnifierZoomSmall); - magnifierZoomActions.append(mMainWindow->actionMagnifierZoomMedium); - magnifierZoomActions.append(mMainWindow->actionMagnifierZoomLarge); - - UBToolbarButtonGroup *magnifierZoomChoice = - new UBToolbarButtonGroup(mMainWindow->boardToolBar, magnifierZoomActions); - - mMainWindow->boardToolBar->insertWidget(mMainWindow->actionBackgrounds, magnifierZoomChoice); - - connect(settings->appToolBarDisplayText, SIGNAL(changed(QVariant)), magnifierZoomChoice, SLOT(displayText(QVariant))); - connect(magnifierZoomChoice, SIGNAL(activated(int)), UBDrawingController::drawingController(), SLOT(setMagnifierZoomIndex(int))); - - magnifierZoomChoice->displayText(QVariant(settings->appToolBarDisplayText->get().toBool())); - magnifierZoomChoice->setCurrentIndex(settings->magnifierZoomIndex()); - - QList magnifierSizeActions; - magnifierSizeActions.append(mMainWindow->actionMagnifierSizeSmall); - magnifierSizeActions.append(mMainWindow->actionMagnifierSizeMedium); - magnifierSizeActions.append(mMainWindow->actionMagnifierSizeLarge); - - UBToolbarButtonGroup *magnifierSizeChoice = - new UBToolbarButtonGroup(mMainWindow->boardToolBar, magnifierSizeActions); - - mMainWindow->boardToolBar->insertWidget(mMainWindow->actionBackgrounds, magnifierSizeChoice); - - connect(settings->appToolBarDisplayText, SIGNAL(changed(QVariant)), magnifierSizeChoice, SLOT(displayText(QVariant))); - connect(magnifierSizeChoice, SIGNAL(activated(int)), UBDrawingController::drawingController(), SLOT(setMagnifierSizeIndex(int))); - - magnifierSizeChoice->displayText(QVariant(settings->appToolBarDisplayText->get().toBool())); - magnifierSizeChoice->setCurrentIndex(settings->magnifierSizeIndex()); - - mMainWindow->boardToolBar->insertSeparator(mMainWindow->actionBackgrounds); - - //-----------------------------------------------------------// - UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->boardToolBar, mMainWindow->actionBoard); UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->tutorialToolBar, mMainWindow->actionBoard); @@ -1056,9 +1021,14 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString mActiveScene->addTriangle(pPos); UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector); } - else if(sourceUrl.toString() == UBToolsManager::manager()->cache.id) + else if (sourceUrl.toString() == UBToolsManager::manager()->magnifier.id) { - mActiveScene->addCache(); + UBMagnifierParams params; + params.x = controlContainer()->geometry().width() / 2; + params.y = controlContainer()->geometry().height() / 2; + params.zoom = 2; + params.sizePercentFromScene = 20; + mActiveScene->addMagnifier(params); UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector); } else if (sourceUrl.toString() == UBToolsManager::manager()->mask.id) @@ -1179,7 +1149,7 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, } // Notify the navigator palette that the document has changed - mPaletteManager->leftPalette()->pageNavigator()->setDocument(pDocumentProxy); + mPaletteManager->leftPalette()->pageNavigator()->setDocument(pDocumentProxy); if (sceneChange) emit activeSceneChanged(); diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h index 5e1e0260..ebcffb33 100644 --- a/src/board/UBBoardController.h +++ b/src/board/UBBoardController.h @@ -81,6 +81,11 @@ class UBBoardController : public QObject return mDisplayView; } + UBGraphicsScene* activeScene() + { + return mActiveScene; + } + void setPenColorOnDarkBackground(const QColor& pColor) { if (mPenColorOnDarkBackground == pColor) diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index d38df42c..c7d18ea5 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -857,9 +857,6 @@ UBBoardView::setToolCursor (int tool) case UBStylusTool::Eraser: controlViewport->setCursor (UBResources::resources ()->eraserCursor); break; - case UBStylusTool::Magnifier: - controlViewport->setCursor (UBResources::resources ()->magnifierCursor); - break; case UBStylusTool::Marker: controlViewport->setCursor (UBResources::resources ()->markerCursor); break; diff --git a/src/board/UBDrawingController.cpp b/src/board/UBDrawingController.cpp index 61196338..5d170470 100644 --- a/src/board/UBDrawingController.cpp +++ b/src/board/UBDrawingController.cpp @@ -44,7 +44,6 @@ UBDrawingController::UBDrawingController(QObject * parent) connect(UBApplication::mainWindow->actionPen, SIGNAL(triggered(bool)), this, SLOT(penToolSelected(bool))); connect(UBApplication::mainWindow->actionEraser, SIGNAL(triggered(bool)), this, SLOT(eraserToolSelected(bool))); - connect(UBApplication::mainWindow->actionMagnifier, SIGNAL(triggered(bool)), this, SLOT(magnifierToolSelected(bool))); connect(UBApplication::mainWindow->actionMarker, SIGNAL(triggered(bool)), this, SLOT(markerToolSelected(bool))); connect(UBApplication::mainWindow->actionSelector, SIGNAL(triggered(bool)), this, SLOT(selectorToolSelected(bool))); connect(UBApplication::mainWindow->actionHand, SIGNAL(triggered(bool)), this, SLOT(handToolSelected(bool))); @@ -103,8 +102,6 @@ void UBDrawingController::setStylusTool(int tool) UBApplication::mainWindow->actionPen->setChecked(true); else if (mStylusTool == UBStylusTool::Eraser) UBApplication::mainWindow->actionEraser->setChecked(true); - else if (mStylusTool == UBStylusTool::Magnifier) - UBApplication::mainWindow->actionMagnifier->setChecked(true); else if (mStylusTool == UBStylusTool::Marker) UBApplication::mainWindow->actionMarker->setChecked(true); else if (mStylusTool == UBStylusTool::Selector) @@ -265,21 +262,6 @@ void UBDrawingController::setEraserWidthIndex(int index) UBSettings::settings()->setEraserWidthIndex(index); } - -void UBDrawingController::setMagnifierZoomIndex(int index) -{ - setStylusTool(UBStylusTool::Magnifier); - UBSettings::settings()->setMagnifierZoomIndex(index); -} - - -void UBDrawingController::setMagnifierSizeIndex(int index) -{ - setStylusTool(UBStylusTool::Magnifier); - UBSettings::settings()->setMagnifierSizeIndex(index); -} - - void UBDrawingController::setPenColor(bool onDarkBackground, const QColor& color, int pIndex) { if (onDarkBackground) @@ -340,12 +322,6 @@ void UBDrawingController::eraserToolSelected(bool checked) setStylusTool(UBStylusTool::Eraser); } -void UBDrawingController::magnifierToolSelected(bool checked) -{ - if (checked) - setStylusTool(UBStylusTool::Magnifier); -} - void UBDrawingController::markerToolSelected(bool checked) { if (checked) diff --git a/src/board/UBDrawingController.h b/src/board/UBDrawingController.h index 2e4e4394..2f6e8f3e 100644 --- a/src/board/UBDrawingController.h +++ b/src/board/UBDrawingController.h @@ -57,8 +57,6 @@ class UBDrawingController : public QObject void setLineWidthIndex(int index); void setColorIndex(int index); void setEraserWidthIndex(int index); - void setMagnifierZoomIndex(int index); - void setMagnifierSizeIndex(int index); signals: void stylusToolChanged(int tool); @@ -77,7 +75,6 @@ class UBDrawingController : public QObject void penToolSelected(bool checked); void eraserToolSelected(bool checked); - void magnifierToolSelected(bool checked); void markerToolSelected(bool checked); void selectorToolSelected(bool checked); void handToolSelected(bool checked); diff --git a/src/core/UB.h b/src/core/UB.h index 72fed56e..07ae8ecc 100644 --- a/src/core/UB.h +++ b/src/core/UB.h @@ -26,8 +26,7 @@ struct UBStylusTool { Pen = 0, Eraser, - Magnifier, - Marker, + Marker, Selector, Hand, ZoomIn, diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 2e8997b6..373b22b9 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -624,170 +624,6 @@ qreal UBSettings::currentEraserWidth() return width; } -//----------------------------------------// -// magnifier - -//-------------// -// zoom index - -int UBSettings::magnifierZoomIndex() -{ - return value("Board/MagnifierZoomIndex", 1).toInt(); -} - -void UBSettings::setMagnifierZoomIndex(int index) -{ - setValue("Board/MagnifierZoomIndex", index); -} - -//-------------// -// small zoom - -qreal UBSettings::magnifierSmallZoom() -{ - return value("Board/MagnifierSmallZoom", 2).toDouble(); -} - -void UBSettings::setMagnifierSmallZoom(qreal xZoom) -{ - setValue("Board/MagnifierSmallZoom", xZoom); -} - -//-------------// -// medium zoom - -qreal UBSettings::magnifierMediumZoom() -{ - return value("Board/MagnifierMediumZoom", 3).toDouble(); -} - -void UBSettings::setMagnifierMediumZoom(qreal xZoom) -{ - setValue("Board/MagnifierMediumZoom", xZoom); -} - -//-------------// -// large zoom - -qreal UBSettings::magnifierLargeZoom() -{ - return value("Board/MagnifierLargeZoom", 4).toDouble(); -} - -void UBSettings::setMagnifierLargeZoom(qreal xZoom) -{ - setValue("Board/MagnifierLargeZoom", xZoom); -} - -//-------------// - -qreal UBSettings::currentMagnifierZoom() -{ - qreal zoom = 0; - - switch (magnifierZoomIndex()) - { - case UBZoom::Small: - zoom = magnifierSmallZoom(); - break; - case UBZoom::Medium: - zoom = magnifierMediumZoom(); - break; - case UBZoom::Large: - zoom = magnifierLargeZoom(); - break; - default: - Q_ASSERT(false); - //failsafe - zoom = magnifierSmallZoom(); - break; - } - - return zoom; -} - -//-------------// -// size index - -int UBSettings::magnifierSizeIndex() -{ - return value("Board/MagnifierSizeIndex", 1).toInt(); -} - -void UBSettings::setMagnifierSizeIndex(int index) -{ - setValue("Board/MagnifierSizeIndex", index); -} - -//-------------// -// small zoom - -qreal UBSettings::magnifierSmallSize() -{ - return value("Board/MagnifierSmallSize", 10).toDouble(); -} - -void UBSettings::setMagnifierSmallSize(qreal xSize) -{ - setValue("Board/MagnifierSmallSize", xSize); -} - -//-------------// -// medium zoom - -qreal UBSettings::magnifierMediumSize() -{ - return value("Board/MagnifierMediumSize", 20).toDouble(); -} - -void UBSettings::setMagnifierMediumSize(qreal xSize) -{ - setValue("Board/MagnifierMediumSize", xSize); -} - -//-------------// -// large zoom - -qreal UBSettings::magnifierLargeSize() -{ - return value("Board/MagnifierLargeSize", 30).toDouble(); -} - -void UBSettings::setMagnifierLargeSize(qreal xSize) -{ - setValue("Board/MagnifierLargeSize", xSize); -} - -//-------------// - -qreal UBSettings::currentMagnifierSize() -{ - qreal size = 0; - - switch (magnifierSizeIndex()) - { - case UBSize::Small: - size = magnifierSmallSize(); - break; - case UBSize::Medium: - size = magnifierMediumSize(); - break; - case UBSize::Large: - size = magnifierLargeSize(); - break; - default: - Q_ASSERT(false); - //failsafe - size = magnifierSmallSize(); - break; - } - - return size; -} - -//----------------------------------------// - - bool UBSettings::isDarkBackground() { return value("Board/DarkBackground", 0).toBool(); diff --git a/src/core/UBSettings.h b/src/core/UBSettings.h index 67afc057..6b7a8961 100644 --- a/src/core/UBSettings.h +++ b/src/core/UBSettings.h @@ -66,19 +66,6 @@ class UBSettings : public QObject qreal eraserStrongWidth(); qreal currentEraserWidth(); - // Magnifier related - int magnifierZoomIndex(); - qreal magnifierSmallZoom(); - qreal magnifierMediumZoom(); - qreal magnifierLargeZoom(); - qreal currentMagnifierZoom(); - - int magnifierSizeIndex(); - qreal magnifierSmallSize(); - qreal magnifierMediumSize(); - qreal magnifierLargeSize(); - qreal currentMagnifierSize(); - // Background related bool isDarkBackground(); bool isCrossedBackground(); @@ -360,18 +347,7 @@ class UBSettings : public QObject void setEraserMediumWidth(qreal width); void setEraserStrongWidth(qreal width); - void setMagnifierZoomIndex(int index); - void setMagnifierSmallZoom(qreal xZoom); - void setMagnifierMediumZoom(qreal xZoom); - void setMagnifierLargeZoom(qreal xZoom); - - void setMagnifierSizeIndex(int index); - void setMagnifierSmallSize(qreal xSize); - void setMagnifierMediumSize(qreal xSize); - void setMagnifierLargeSize(qreal xSize); - - - void setStylusPaletteVisible(bool visible); + void setStylusPaletteVisible(bool visible); void setPenPressureSensitive(bool sensitive); void setMarkerPressureSensitive(bool sensitive); diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 33e430ba..f908c9e6 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -36,7 +36,6 @@ #include "tools/UBGraphicsCompass.h" #include "tools/UBGraphicsTriangle.h" #include "tools/UBGraphicsCurtainItem.h" -#include "tools/UBGraphicsCache.h" #include "document/UBDocumentProxy.h" @@ -71,7 +70,6 @@ qreal UBGraphicsScene::toolOffsetProtractor = 100; qreal UBGraphicsScene::toolOffsetTriangle = 100; qreal UBGraphicsScene::toolOffsetCompass = 100; qreal UBGraphicsScene::toolOffsetEraser = 200; -qreal UBGraphicsScene::toolOffsetCache = 1000; qreal UBGraphicsScene::toolOffsetCurtain = 1000; qreal UBGraphicsScene::toolOffsetPointer = 1100; @@ -138,13 +136,13 @@ UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent) } connect(this, SIGNAL(selectionChanged()), this, SLOT(selectionChangedProcessing())); - mHasCache = false; } UBGraphicsScene::~UBGraphicsScene() { // NOOP + DisposeMagnifierQWidgets(); } void UBGraphicsScene::selectionChangedProcessing() @@ -238,15 +236,6 @@ bool UBGraphicsScene::inputDevicePress(const QPointF& scenePos, const qreal& pre drawPointer(scenePos); accepted = true; } - else if (currentTool == UBStylusTool::Magnifier) - { - CreateMagnifierQWidgets(); - magniferControlViewWidget->grabNMove(QCursor::pos(), true); - magniferDisplayViewWidget->grabNMove(scenePos, true); - magniferControlViewWidget->show(); - magniferDisplayViewWidget->show(); - accepted = true; - } } return accepted; @@ -320,11 +309,6 @@ bool UBGraphicsScene::inputDeviceMove(const QPointF& scenePos, const qreal& pres { drawPointer(position); } - else if (currentTool == UBStylusTool::Magnifier) - { - magniferControlViewWidget->grabNMove(QCursor::pos(), false); - magniferDisplayViewWidget->grabNMove(position, false); - } accepted = true; } @@ -363,13 +347,7 @@ bool UBGraphicsScene::inputDeviceRelease() { mCurrentStroke = 0; } - else - if (currentTool == UBStylusTool::Magnifier) - { - DisposeMagnifierQWidgets(); - //qDebug() << "deleted"; - } - + if (mRemovedItems.size() > 0 || mAddedItems.size() > 0) { UBGraphicsItemUndoCommand* udcmd = new UBGraphicsItemUndoCommand(this, mRemovedItems, mAddedItems); //deleted by the undoStack @@ -425,24 +403,6 @@ void UBGraphicsScene::drawPointer(const QPointF &pPoint) } } -// call this function when user press mouse button in Magnifier mode -void UBGraphicsScene::CreateMagnifierQWidgets() -{ - UBApplication::app()->setOverrideCursor( QCursor( Qt::BlankCursor ) ); - - magniferControlViewWidget = new UBMagnifer((QWidget*)(UBApplication::boardController->controlContainer())); - magniferControlViewWidget->setGrabView((QGraphicsView*)UBApplication::boardController->controlView()); - magniferControlViewWidget->setMoveView((QGraphicsView*)UBApplication::boardController->controlContainer()); - magniferControlViewWidget->setSize(UBSettings::settings()->currentMagnifierSize()); - magniferControlViewWidget->setZoom(UBSettings::settings()->currentMagnifierZoom()); - - magniferDisplayViewWidget = new UBMagnifer((QWidget*)(UBApplication::boardController->displayView())); - magniferDisplayViewWidget->setGrabView((QGraphicsView*)UBApplication::boardController->controlView()); - magniferDisplayViewWidget->setMoveView((QGraphicsView*)UBApplication::boardController->displayView()); - magniferDisplayViewWidget->setSize(UBSettings::settings()->currentMagnifierSize()); - magniferDisplayViewWidget->setZoom(UBSettings::settings()->currentMagnifierZoom()); -} - // call this function when user release mouse button in Magnifier mode void UBGraphicsScene::DisposeMagnifierQWidgets() { @@ -1536,6 +1496,119 @@ void UBGraphicsScene::addTriangle(QPointF center) setModified(true); } +void UBGraphicsScene::addMagnifier(UBMagnifierParams params) +{ + // can have only one magnifier at one time + if(magniferControlViewWidget) return; + + QWidget *cContainer = (QWidget*)(UBApplication::boardController->controlContainer()); + QGraphicsView *cView = (QGraphicsView*)UBApplication::boardController->controlView(); + QGraphicsView *dView = (QGraphicsView*)UBApplication::boardController->displayView(); + + QPoint ccZeroPoint = cContainer->mapToGlobal(QPoint(0,0)); + QPoint cvZeroPoint = cView->mapToGlobal(QPoint(0,0)); + QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0)); + + int cvW = cView->width(); + int dvW = dView->width(); + qreal wCoeff = (qreal)dvW / (qreal)cvW; + + int cvH = cView->height(); + int dvH = dView->height(); + qreal hCoeff = (qreal)dvH / (qreal)cvH; + + QPoint ccPoint(params.x,params.y); + QPoint globalPoint = cContainer->mapToGlobal(ccPoint); + QPoint cvPoint = cView->mapFromGlobal(globalPoint); + QPoint dvPoint( cvPoint.x() * wCoeff + dvZeroPoint.x(), cvPoint.y() * hCoeff + dvZeroPoint.y()); + + magniferControlViewWidget = new UBMagnifier((QWidget*)(UBApplication::boardController->controlContainer()), true); + magniferControlViewWidget->setGrabView((QGraphicsView*)UBApplication::boardController->controlView()); + magniferControlViewWidget->setMoveView((QWidget*)(UBApplication::boardController->controlContainer())); + magniferControlViewWidget->setSize(params.sizePercentFromScene); + magniferControlViewWidget->setZoom(params.zoom); + + magniferDisplayViewWidget = new UBMagnifier((QWidget*)(UBApplication::boardController->displayView()), false); + magniferDisplayViewWidget->setGrabView((QGraphicsView*)UBApplication::boardController->controlView()); + magniferDisplayViewWidget->setMoveView((QGraphicsView*)UBApplication::boardController->displayView()); + magniferDisplayViewWidget->setSize(params.sizePercentFromScene); + magniferDisplayViewWidget->setZoom(params.zoom); + + magniferControlViewWidget->grabNMove(globalPoint, globalPoint, true); + magniferDisplayViewWidget->grabNMove(globalPoint, dvPoint, true); + magniferControlViewWidget->show(); + magniferDisplayViewWidget->show(); + + connect(magniferControlViewWidget, SIGNAL(magnifierMoved_Signal(QPoint)), this, SLOT(moveMagnifier(QPoint))); + connect(magniferControlViewWidget, SIGNAL(magnifierClose_Signal()), this, SLOT(closeMagnifier())); + connect(magniferControlViewWidget, SIGNAL(magnifierZoomIn_Signal()), this, SLOT(zoomInMagnifier())); + connect(magniferControlViewWidget, SIGNAL(magnifierZoomOut_Signal()), this, SLOT(zoomOutMagnifier())); + connect(magniferControlViewWidget, SIGNAL(magnifierResized_Signal(qreal)), this, SLOT(resizedMagnifier(qreal))); + + setModified(true); +} + +void UBGraphicsScene::moveMagnifier(QPoint newPos) +{ + QWidget *cContainer = (QWidget*)(UBApplication::boardController->controlContainer()); + QGraphicsView *cView = (QGraphicsView*)UBApplication::boardController->controlView(); + QGraphicsView *dView = (QGraphicsView*)UBApplication::boardController->displayView(); + + QPoint ccZeroPoint = cContainer->mapToGlobal(QPoint(0,0)); + QPoint cvZeroPoint = cView->mapToGlobal(QPoint(0,0)); + QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0)); + + int cvW = cView->width(); + int dvW = dView->width(); + qreal wCoeff = (qreal)dvW / (qreal)cvW; + + int cvH = cView->height(); + int dvH = dView->height(); + qreal hCoeff = (qreal)dvH / (qreal)cvH; + + QPoint globalPoint = cContainer->mapToGlobal(newPos); + QPoint cvPoint = cView->mapFromGlobal(globalPoint); + QPoint dvPoint( cvPoint.x() * wCoeff + dvZeroPoint.x(), cvPoint.y() * hCoeff + dvZeroPoint.y()); + + magniferControlViewWidget->grabNMove(globalPoint, globalPoint, false, false); + magniferDisplayViewWidget->grabNMove(globalPoint, dvPoint, false, true); + + setModified(true); +} + +void UBGraphicsScene::closeMagnifier() +{ + DisposeMagnifierQWidgets(); +} + +void UBGraphicsScene::zoomInMagnifier() +{ + if(magniferControlViewWidget->params.zoom < 8) + { + magniferControlViewWidget->setZoom(magniferControlViewWidget->params.zoom + 0.5); + magniferDisplayViewWidget->setZoom(magniferDisplayViewWidget->params.zoom + 0.5); + } +} + +void UBGraphicsScene::zoomOutMagnifier() +{ + if(magniferControlViewWidget->params.zoom > 1) + { + magniferControlViewWidget->setZoom(magniferControlViewWidget->params.zoom - 0.5); + magniferDisplayViewWidget->setZoom(magniferDisplayViewWidget->params.zoom - 0.5); + } +} + +void UBGraphicsScene::resizedMagnifier(qreal newPercent) +{ + if(newPercent > 18 && newPercent < 50) + { + magniferControlViewWidget->setSize(newPercent); + magniferControlViewWidget->grabPoint(); + magniferDisplayViewWidget->setSize(newPercent); + magniferDisplayViewWidget->grabPoint(); + } +} void UBGraphicsScene::addCompass(QPointF center) { @@ -1553,24 +1626,6 @@ void UBGraphicsScene::addCompass(QPointF center) setModified(true); } -void UBGraphicsScene::addCache() -{ - UBGraphicsCache* cache = new UBGraphicsCache(); - mTools << cache; - QGraphicsView* view; - - if(UBApplication::applicationController->displayManager()->hasDisplay()) - { - view = (QGraphicsView*)(UBApplication::boardController->displayView()); - } - else - { - view = (QGraphicsView*)(UBApplication::boardController->controlView()); - } - addItem(cache); - cache->setVisible(true); - cache->setSelected(true); -} void UBGraphicsScene::addMask() { diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h index d1eb1b58..5a5ffe2e 100644 --- a/src/domain/UBGraphicsScene.h +++ b/src/domain/UBGraphicsScene.h @@ -44,8 +44,8 @@ class UBAbstractWidget; class UBDocumentProxy; class UBGraphicsCurtainItem; class UBGraphicsStroke; -class UBGraphicsCache; -class UBMagnifer; +class UBMagnifierParams; +class UBMagnifier; const double PI = 4.0 * atan(1.0); @@ -166,10 +166,10 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem qreal getNextObjectZIndex(); void addRuler(QPointF center); - void addTriangle(QPointF center); void addProtractor(QPointF center); void addCompass(QPointF center); - void addCache(); + void addTriangle(QPointF center); + void addMagnifier(UBMagnifierParams params); void addMask(); @@ -247,7 +247,6 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem static qreal toolOffsetCompass; static qreal toolOffsetCurtain; static qreal toolOffsetTriangle; - static qreal toolOffsetCache; QSet tools(){ return mTools;} @@ -277,6 +276,11 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem void selectionChangedProcessing(); + void moveMagnifier(QPoint newPos); + void closeMagnifier(); + void zoomInMagnifier(); + void zoomOutMagnifier(); + void resizedMagnifier(qreal newPercent); signals: @@ -292,7 +296,6 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem void drawEraser(const QPointF& pEndPoint); void drawPointer(const QPointF& pEndPoint); - void CreateMagnifierQWidgets(); void DisposeMagnifierQWidgets(); @@ -355,10 +358,8 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem //int mMesure1Ms, mMesure2Ms; - bool mHasCache; - - UBMagnifer *magniferControlViewWidget; - UBMagnifer *magniferDisplayViewWidget; + UBMagnifier *magniferControlViewWidget; + UBMagnifier *magniferDisplayViewWidget; }; #endif /* UBGRAPHICSSCENE_H_ */ diff --git a/src/gui/UBMagnifer.cpp b/src/gui/UBMagnifer.cpp index 0888522e..e36add3f 100644 --- a/src/gui/UBMagnifer.cpp +++ b/src/gui/UBMagnifer.cpp @@ -1,51 +1,124 @@ + +#include #include "UBMagnifer.h" -#include -#include -#include -#include -#include -#include -#include -#include - -UBMagnifer::UBMagnifer(QWidget *parent) - : QWidget(parent) + +#include "core/UBApplication.h" +#include "board/UBBoardController.h" +#include "domain/UBGraphicsScene.h" + +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include + + +UBMagnifier::UBMagnifier(QWidget *parent, bool isInteractive) + : QWidget(parent, parent ? Qt::Widget : Qt::Tool | (Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint)) , gView(0) , mView(0) - , sizePercentFromScene(20) , inTimer(false) , borderPen(Qt::darkGray) + , mShouldMoveWidget(false) + , mShouldResizeWidget(false) + { - borderPen.setWidth(2); + isCusrsorAlreadyStored = false; + setMouseTracking(true); + + //--------------------------------------------------// + + QPixmap pix(":/images/cursors/resize.png"); + QTransform tr; + tr.rotate(45); + mResizeCursor = QCursor(pix.transformed(tr, Qt::SmoothTransformation), pix.width() / 2, pix.height() / 2); + + //--------------------------------------------------// + + params.sizePercentFromScene = 20; + m_isInteractive = isInteractive; + sClosePixmap = new QPixmap(":/images/close.svg"); + sIncreasePixmap = new QPixmap(":/images/increase.svg"); + sDecreasePixmap = new QPixmap(":/images/decrease.svg"); + mResizeItem = new QPixmap(":/images/resize.svg"); + + if (parent) + { + setAttribute(Qt::WA_NoMousePropagation); + } + else + { + // standalone window + // !!!! Should be included into Windows after QT recompilation +#ifndef Q_WS_WIN + setAttribute(Qt::WA_TranslucentBackground); + setAttribute(Qt::WA_MacAlwaysShowToolWindow); +#endif +#ifdef Q_WS_MAC + setAttribute(Qt::WA_MacAlwaysShowToolWindow); + setAttribute(Qt::WA_MacNonActivatingToolWindow); + setAttribute(Qt::WA_MacNoShadow); +#endif + } + } -UBMagnifer::~UBMagnifer() +UBMagnifier::~UBMagnifier() { if (timerUpdate != 0) { killTimer(timerUpdate); timerUpdate = 0; } + + if(sClosePixmap) + { + delete sClosePixmap; + sClosePixmap = NULL; + } + + if(sIncreasePixmap) + { + delete sIncreasePixmap; + sIncreasePixmap = NULL; + } + + if(sDecreasePixmap) + { + delete sDecreasePixmap; + sDecreasePixmap = NULL; + } + } -void UBMagnifer::setSize(int percentFromScene) +void UBMagnifier::setSize(qreal percentFromScene) { - if(gView == NULL) return; + if(gView == NULL || mView == NULL) return; // calculate object size - sizePercentFromScene = percentFromScene; - QSize sceneSize = gView->size(); - int size = sizePercentFromScene * sceneSize.width() / 100; + params.sizePercentFromScene = percentFromScene; + QSize sceneSize = mView->size(); + qreal size = params.sizePercentFromScene * sceneSize.width() / 100; - setGeometry(0, 0, size, size); + QRect currGeom = geometry(); + if(currGeom.width() == currGeom.height()) + { + QPoint newPos = mView->mapFromGlobal(updPointMove); + setGeometry(newPos.x() - size / 2, newPos.y() - size / 2, size, size); + } + else + setGeometry(0, 0, size, size); // prepare transparent bit mask QImage mask_img(width(), height(), QImage::Format_Mono); mask_img.fill(0xff); QPainter mask_ptr(&mask_img); mask_ptr.setBrush( QBrush( QColor(0, 0, 0) ) ); - mask_ptr.drawEllipse(QPoint(size/2, size/2), size/2, size/2); + mask_ptr.drawEllipse(QPointF(size/2, size/2), size / 2 - sClosePixmap->width(), size / 2 - sClosePixmap->width()); bmpMask = QBitmap::fromImage(mask_img); // prepare general image @@ -54,49 +127,207 @@ void UBMagnifer::setSize(int percentFromScene) pMap.setMask(bmpMask); } -void UBMagnifer::setZoom(int z) +void UBMagnifier::setZoom(qreal zoom) +{ + params.zoom = zoom; +} + +void UBMagnifier::paintEvent(QPaintEvent * event) +{ + QPainter painter(this); + +// painter.drawRect(0,0,size().width()-1, size().height()-1); + + painter.setRenderHint(QPainter::Antialiasing); + painter.setPen(Qt::NoPen); + + if (m_isInteractive) + { + painter.setBrush(QColor(127, 127, 127, 127)); + painter.drawRoundedRect(QRectF(size().width() / 2, size().height() / 2, ( size().width() - sClosePixmap->width() ) / 2, ( size().height() - sClosePixmap->width() ) / 2), 15, 15); + + painter.setBrush(QColor(190, 190, 190, 255)); + painter.drawEllipse(QPoint( size().width() / 2, size().height() / 2), ( size().width() - sClosePixmap->width() ) / 2, ( size().height() - sClosePixmap->height() ) / 2); + + painter.drawPixmap(size().width() - sClosePixmap->width(), size().height() / 2 + sClosePixmap->height() * 1, *sClosePixmap); + painter.drawPixmap(size().width() - sIncreasePixmap->width(), size().height() / 2 + sIncreasePixmap->height() * 2.5, *sIncreasePixmap); + painter.drawPixmap(size().width() - sDecreasePixmap->width(), size().height() / 2 + sDecreasePixmap->height() * 3.6, *sDecreasePixmap); + + painter.drawPixmap(size().width() - mResizeItem->width() - 20, size().height() - mResizeItem->height() - 20, *mResizeItem); + } + else + { + painter.setBrush(QColor(127, 127, 127, 127)); + painter.drawEllipse(QPoint( size().width() / 2, size().height() / 2), ( size().width() - sClosePixmap->width() ) / 2, ( size().height() - sClosePixmap->height() ) / 2); + } + + painter.drawPixmap(0, 0, pMap); +} + +void UBMagnifier::mousePressEvent ( QMouseEvent * event ) { - zoom = z; + if(m_isInteractive) + { + + QWidget::mousePressEvent(event); + + if (event->pos().x() >= size().width() - mResizeItem->width() - 20 && + event->pos().x() < size().width() - 20 && + event->pos().y() >= size().height() - mResizeItem->height() - 20 && + event->pos().y() < size().height() - - 20) + { + mShouldResizeWidget = true; + } + else + { + mShouldMoveWidget = !event->isAccepted() && (event->buttons() & Qt::LeftButton); + } + + mMousePressPos = event->pos(); + mMousePressDelta = (qreal)updPointGrab.x() + (qreal)size().width() / 2 - (qreal)event->globalPos().x(); + + event->accept(); - zWidth = size().width() / zoom; - zWidthHalf = zWidth / 2; - zHeight = size().height() / zoom; - zHeightHalf = zHeight / 2; + update(); + } + else + event->ignore(); } -void UBMagnifer::paintEvent(QPaintEvent *) +void UBMagnifier::mouseMoveEvent ( QMouseEvent * event ) { - QPainter p(this); - p.drawPixmap(0, 0, pMap); - - // in future replace to image border - QPen pen(Qt::darkGray); - pen.setWidth(2); - p.setPen(borderPen); - p.drawEllipse(QPoint( size().width() / 2, size().height() / 2), size().width() / 2, size().height() / 2); + if(m_isInteractive) + { + if(mShouldMoveWidget && (event->buttons() & Qt::LeftButton)) + { + QPoint offset = event->pos() - mMousePressPos; + move(pos() - mMousePressPos + event->pos()); + event->accept(); + + QWidget::mouseMoveEvent(event); + emit magnifierMoved_Signal(QPoint(this->pos().x() + size().width() / 2, this->pos().y() + size().height() / 2 )); + return; + } + + if(mShouldResizeWidget && (event->buttons() & Qt::LeftButton)) + { + + QPoint currGlobalPos = event->globalPos(); + qreal cvW = mView->width(); + + qreal newXSize = ( currGlobalPos.x() + mMousePressDelta - updPointGrab.x() ) * 2; + qreal newPercentSize = newXSize * 100 / cvW; + + emit magnifierResized_Signal(newPercentSize); + + event->ignore(); + return; + } + + if (event->pos().x() >= size().width() - mResizeItem->width() - 20 && + event->pos().x() < size().width() - 20 && + event->pos().y() >= size().height() - mResizeItem->height() - 20 && + event->pos().y() < size().height() - - 20 && + isCusrsorAlreadyStored == false + ) + { + mOldCursor = cursor(); + isCusrsorAlreadyStored = true; + setCursor(mResizeCursor); + } + + } + else + event->ignore(); +} + + +void UBMagnifier::mouseReleaseEvent(QMouseEvent * event) +{ + if(m_isInteractive) + { + mShouldMoveWidget = false; + mShouldResizeWidget = false; + + if (event->pos().x() >= size().width() - sClosePixmap->width() && + event->pos().x() < size().width()&& + event->pos().y() >= size().height() / 2 + sClosePixmap->height() * 1 && + event->pos().y() < size().height() / 2 + sClosePixmap->height() * 2) + { + event->accept(); + emit magnifierClose_Signal(); + } + else + if (event->pos().x() >= size().width() - sIncreasePixmap->width() && + event->pos().x() < size().width()&& + event->pos().y() >= size().height() / 2 + sIncreasePixmap->height() * 2.5 && + event->pos().y() < size().height() / 2 + sIncreasePixmap->height() * 3.5) + { + event->accept(); + emit magnifierZoomIn_Signal(); + } + else + if (event->pos().x() >= size().width() - sDecreasePixmap->width() && + event->pos().x() < size().width()&& + event->pos().y() >= size().height() / 2 + sDecreasePixmap->height() * 3.6 && + event->pos().y() < size().height() / 2 + sDecreasePixmap->height() * 4.6) + { + event->accept(); + emit magnifierZoomOut_Signal(); + } + else + QWidget::mouseReleaseEvent(event); // don't propgate to parent, the widget is deleted in UBApplication::boardController->removeTool + } + else + event->ignore(); + } -void UBMagnifer::timerEvent(QTimerEvent *e) +void UBMagnifier::timerEvent(QTimerEvent *e) { if(inTimer) return; if (e->timerId() == timerUpdate) { inTimer = true; - if(!(updPoint.isNull())) grabPoint(updPoint); - if(!(updPointF.isNull()))grabPoint(updPointF); + if(!(updPointGrab.isNull())) + grabPoint(updPointGrab); + + if(isCusrsorAlreadyStored) + { + QPoint globalCursorPos = QCursor::pos(); + QPoint cursorPos = mapFromGlobal(globalCursorPos); + if (cursorPos.x() < size().width() - mResizeItem->width() - 20 || + cursorPos.x() > size().width() - 20 || + cursorPos.y() < size().height() - mResizeItem->height() - 20 || + cursorPos.y() > size().height() - - 20 + ) + { + isCusrsorAlreadyStored = false; + setCursor(mOldCursor); + } + + } + inTimer = false; } } -void UBMagnifer::grabPoint(const QPoint &point) +void UBMagnifier::grabPoint() { - QPointF itemPos = gView->mapFromGlobal(point); + QPointF itemPos = gView->mapFromGlobal(updPointGrab); + + qreal zWidth = size().width() / params.zoom; + qreal zWidthHalf = zWidth / 2; + qreal zHeight = size().height() / params.zoom; + qreal zHeightHalf = zHeight / 2; int x = itemPos.x() - zWidthHalf; int y = itemPos.y() - zHeightHalf; QPixmap newPixMap(QSize(zWidth,zHeight)); ((QWidget*)gView)->render(&newPixMap, QPoint(0, 0), QRegion(x, y, zWidth, zHeight)); + UBApplication::boardController->activeScene()->update(); + pMap.fill(Qt::transparent); pMap = newPixMap.scaled(QSize(width(), height())); pMap.setMask(bmpMask); @@ -104,15 +335,23 @@ void UBMagnifer::grabPoint(const QPoint &point) update(); } -void UBMagnifer::grabPoint(const QPointF &point) +void UBMagnifier::grabPoint(const QPoint &pGrab) { - QPoint itemPos = gView->mapFromScene(point); + updPointGrab = pGrab; + QPointF itemPos = gView->mapFromGlobal(pGrab); + + qreal zWidth = size().width() / params.zoom; + qreal zWidthHalf = zWidth / 2; + qreal zHeight = size().height() / params.zoom; + qreal zHeightHalf = zHeight / 2; int x = itemPos.x() - zWidthHalf; int y = itemPos.y() - zHeightHalf; QPixmap newPixMap(QSize(zWidth,zHeight)); ((QWidget*)gView)->render(&newPixMap, QPoint(0, 0), QRegion(x, y, zWidth, zHeight)); + UBApplication::boardController->activeScene()->update(); + pMap.fill(Qt::transparent); pMap = newPixMap.scaled(QSize(width(), height())); pMap.setMask(bmpMask); @@ -120,32 +359,24 @@ void UBMagnifer::grabPoint(const QPointF &point) update(); } - // from global -void UBMagnifer::grabNMove(const QPoint &point, bool needGrab = true) +void UBMagnifier::grabNMove(const QPoint &pGrab, const QPoint &pMove, bool needGrab, bool needMove) { - updPoint = point; + updPointGrab = pGrab; + updPointMove = pMove; if(needGrab) - grabPoint(point); - QPoint itemPos = mView->mapFromGlobal(point); - move(itemPos.x() - width()/2, itemPos.y() - height()/2); -// move(itemPos.x(), itemPos.y()); -} + grabPoint(pGrab); -// from scene -void UBMagnifer::grabNMove(const QPointF &point, bool needGrab = true) -{ - updPointF = point; - - if(needGrab) - grabPoint(point); - QPoint itemPos = mView->mapFromScene(point); - move(itemPos.x() - width()/2, itemPos.y() - height()/2); -// move(itemPos.x(), itemPos.y()); + if(needMove) + { + QPoint movePos = mView->mapFromGlobal(pMove); + move(movePos.x() - width()/2, movePos.y() - height()/2); + // move(itemPos.x(), itemPos.y()); + } } -void UBMagnifer::setGrabView(QGraphicsView *view) +void UBMagnifier::setGrabView(QWidget *view) { if (timerUpdate != 0) killTimer(timerUpdate); diff --git a/src/gui/UBMagnifer.h b/src/gui/UBMagnifer.h index 435775a3..9032a3cd 100644 --- a/src/gui/UBMagnifer.h +++ b/src/gui/UBMagnifer.h @@ -1,60 +1,82 @@ -#ifndef UBMAGNIFER_H -#define UBMAGNIFER_H +#ifndef UBMAGNIFIER_H +#define UBMAGNIFIER_H -#include -#include -#include +#include -class QPixmap; -class QBitmap; -class QPen; -class QGraphicsView; +class UBMagnifierParams +{ +public : + int x; + int y; + qreal zoom; + qreal sizePercentFromScene; +}; -class UBMagnifer : public QWidget +class UBMagnifier : public QWidget { Q_OBJECT public: - UBMagnifer(QWidget *parent = 0); - ~UBMagnifer(); + UBMagnifier(QWidget *parent = 0, bool isInteractive = false); + ~UBMagnifier(); - void setSize(int percentFromScene); - void setZoom(int z); + void setSize(qreal percentFromScene); + void setZoom(qreal zoom); - void setGrabView(QGraphicsView *view); - void setMoveView(QGraphicsView *view) {mView = view;} + void setGrabView(QWidget *view); + void setMoveView(QWidget *view) {mView = view;} + void grabPoint(); void grabPoint(const QPoint &point); - void grabPoint(const QPointF &point); - void grabNMove(const QPoint &point, bool needGrab); - void grabNMove(const QPointF &point, bool needGrab); + void grabNMove(const QPoint &pGrab, const QPoint &pMove, bool needGrab = true, bool needMove = true); + + UBMagnifierParams params; + +signals: + void magnifierMoved_Signal(QPoint newPos); + void magnifierClose_Signal(); + void magnifierZoomIn_Signal(); + void magnifierZoomOut_Signal(); + void magnifierResized_Signal(qreal newPercentSize); protected: void paintEvent(QPaintEvent *); void timerEvent(QTimerEvent *); - int sizePercentFromScene; + virtual void mousePressEvent ( QMouseEvent * event ); + virtual void mouseMoveEvent ( QMouseEvent * event ); + virtual void mouseReleaseEvent ( QMouseEvent * event ); + + QPoint mMousePressPos; + qreal mMousePressDelta; + bool mShouldMoveWidget; + bool mShouldResizeWidget; + + + QPixmap *sClosePixmap; + QPixmap *sIncreasePixmap; + QPixmap *sDecreasePixmap; + QPixmap *mResizeItem; + bool isCusrsorAlreadyStored; + QCursor mOldCursor; + QCursor mResizeCursor; private: - int zoom; - int zWidth; - int zHeight; - int zWidthHalf; - int zHeightHalf; bool inTimer; + bool m_isInteractive; int timerUpdate; - QPoint updPoint; - QPointF updPointF; + QPoint updPointGrab; + QPoint updPointMove; QPixmap pMap; QBitmap bmpMask; QPen borderPen; - QGraphicsView *gView; - QGraphicsView *mView; + QWidget *gView; + QWidget *mView; }; -#endif // UBMAGNIFER_H +#endif // UBMAGNIFIER_H diff --git a/src/gui/UBStylusPalette.cpp b/src/gui/UBStylusPalette.cpp index 4ae06f4c..93073ccd 100644 --- a/src/gui/UBStylusPalette.cpp +++ b/src/gui/UBStylusPalette.cpp @@ -37,7 +37,6 @@ UBStylusPalette::UBStylusPalette(QWidget *parent, Qt::Orientation orient) actions << UBApplication::mainWindow->actionPen; actions << UBApplication::mainWindow->actionEraser; - actions << UBApplication::mainWindow->actionMagnifier; actions << UBApplication::mainWindow->actionMarker; actions << UBApplication::mainWindow->actionSelector; diff --git a/src/tools/UBToolsManager.cpp b/src/tools/UBToolsManager.cpp index 4bbd4f3a..5fb516e8 100644 --- a/src/tools/UBToolsManager.cpp +++ b/src/tools/UBToolsManager.cpp @@ -58,12 +58,13 @@ UBToolsManager::UBToolsManager(QObject *parent) mToolsIcon.insert(triangle.id,":/images/toolPalette/triangleTool.png"); mDescriptors << triangle; -// cache.id = "uniboardTool://uniboard.mnemis.com/cache"; -// cache.icon = QPixmap(":/images/toolPalette/cacheTool.png"); -// cache.label = tr("Cache"); -// cache.version = "1.0"; -// mToolsIcon.insert(cache.id, ":/images/toolPalette/cacheTool.png"); -// mDescriptors << cache; + magnifier.id = "uniboardTool://uniboard.mnemis.com/magnifier"; + magnifier.icon = QPixmap(":/images/toolPalette/magnifierTool.png"); + magnifier.label = tr("Magnifier"); + magnifier.version = "1.0"; + mToolsIcon.insert(magnifier.id,":/images/toolPalette/magnifierTool.png"); + mDescriptors << magnifier; + } UBToolsManager::~UBToolsManager() diff --git a/src/tools/UBToolsManager.h b/src/tools/UBToolsManager.h index 8517822b..df87db8a 100644 --- a/src/tools/UBToolsManager.h +++ b/src/tools/UBToolsManager.h @@ -78,7 +78,7 @@ class UBToolsManager : public QObject UBToolDescriptor compass; UBToolDescriptor mask; UBToolDescriptor triangle; - UBToolDescriptor cache; + UBToolDescriptor magnifier; QString iconFromToolId(QString id) { return mToolsIcon.value(id);} From ff9a74b1ea7d5b8d55e4e534c0f638ece4eb64c1 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 1 Sep 2011 17:39:15 +0200 Subject: [PATCH 11/12] fixed issue http://188.165.53.52/jira/browse/SANKORE-213 --- src/board/UBBoardController.cpp | 4 - src/board/UBBoardController.h | 7 - src/board/UBBoardPaletteManager.cpp | 27 +- src/board/UBLibraryController.cpp | 135 ++-- src/board/UBLibraryController.h | 11 +- src/core/UBApplication.cpp | 7 +- src/gui/UBLibActionBar.cpp | 5 +- src/gui/UBLibItemProperties.cpp | 11 +- src/gui/UBLibNavigatorWidget.cpp | 32 +- src/gui/UBLibNavigatorWidget.h | 2 + src/gui/UBLibPalette.cpp | 177 ----- src/gui/UBLibPalette.h | 79 -- src/gui/UBLibWidget.h | 1 + src/gui/UBLibraryWidget.cpp | 1136 +++++++++++++-------------- src/gui/UBLibraryWidget.h | 10 +- src/gui/gui.pri | 2 - 16 files changed, 687 insertions(+), 959 deletions(-) delete mode 100644 src/gui/UBLibPalette.cpp delete mode 100644 src/gui/UBLibPalette.h diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index c037db93..d132e933 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -54,7 +54,6 @@ #include "document/UBDocumentProxy.h" #include "document/UBDocumentController.h" -#include "board/UBLibraryController.h" #include "board/UBDrawingController.h" #include "board/UBBoardView.h" @@ -72,7 +71,6 @@ UBBoardController::UBBoardController(UBMainWindow* mainWindow) , mActiveDocument(0) , mActiveScene(0) , mActiveSceneIndex(-1) - , mLibraryController(0) , mPaletteManager(0) , mSoftwareUpdateDialog(0) , mMessageWindow(0) @@ -85,8 +83,6 @@ UBBoardController::UBBoardController(UBMainWindow* mainWindow) , mSystemScaleFactor(1.0) , mCleanupDone(false) { - mLibraryController = new UBLibraryController(mMainWindow->centralWidget(), this); - mZoomFactor = UBSettings::settings()->boardZoomFactor->get().toDouble(); int penColorIndex = UBSettings::settings()->penColorIndex(); diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h index 5e1e0260..87cc8fb9 100644 --- a/src/board/UBBoardController.h +++ b/src/board/UBBoardController.h @@ -25,7 +25,6 @@ class UBApplication; class UBBoardView; class UBDocumentController; -class UBLibraryController; class UBMessageWindow; class UBGraphicsScene; class UBDocumentProxy; @@ -129,11 +128,6 @@ class UBBoardController : public QObject return mMarkerColorOnLightBackground; } - UBLibraryController* libraryController() - { - return mLibraryController; - } - qreal systemScaleFactor() { return mSystemScaleFactor; @@ -285,7 +279,6 @@ class UBBoardController : public QObject UBGraphicsScene* mActiveScene; int mActiveSceneIndex; - UBLibraryController* mLibraryController; UBBoardPaletteManager *mPaletteManager; UBSoftwareUpdateDialog *mSoftwareUpdateDialog; diff --git a/src/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index 2e9efabb..86cb4736 100755 --- a/src/board/UBBoardPaletteManager.cpp +++ b/src/board/UBBoardPaletteManager.cpp @@ -49,7 +49,6 @@ #include "document/UBDocumentProxy.h" #include "podcast/UBPodcastController.h" -#include "board/UBLibraryController.h" #include "board/UBDrawingController.h" #include "tools/UBToolsManager.h" @@ -569,7 +568,8 @@ void UBBoardPaletteManager::addItemToLibrary() , Qt::KeepAspectRatio, Qt::SmoothTransformation); } QImage image = mPixmap.toImage(); - UBApplication::boardController->libraryController()->importImageOnLibrary(image); + //UBApplication::boardController->libraryController()->importImageOnLibrary(image); + } else { @@ -579,29 +579,6 @@ void UBBoardPaletteManager::addItemToLibrary() mAddItemPalette->hide(); } -//void UBBoardPaletteManager::shareItemOnWeb() -//{ -// QPixmap pixmap = mPixmap; - -// if(mPixmap.isNull()) -// { -// pixmap = QPixmap(mItemUrl.toLocalFile()); -// } - -// if(!pixmap.isNull()) -// { -// UBCapturePublisher* publisher = new UBCapturePublisher(pixmap, this); -// publisher->publish(); -// } -// else -// { -// UBApplication::showMessage(tr("Error Publishing Image to the Web")); -// } - -// mAddItemPalette->hide(); -//} - - void UBBoardPaletteManager::zoomButtonPressed() { mZoomButtonPressedTime = QTime::currentTime(); diff --git a/src/board/UBLibraryController.cpp b/src/board/UBLibraryController.cpp index 4aed8c49..e95f7767 100644 --- a/src/board/UBLibraryController.cpp +++ b/src/board/UBLibraryController.cpp @@ -45,10 +45,10 @@ static quint32 magicNumber = 0xACDCAFE0; static QString favoriteVirtualPath = "$favorite$"; -UBLibraryController::UBLibraryController(QWidget *pParentWidget, UBBoardController *pBoardController) : +UBLibraryController::UBLibraryController(QWidget *pParentWidget) : QObject(pParentWidget), mParentWidget(pParentWidget), - mBoardController(pBoardController), + mBoardController(UBApplication::boardController), mLastItemOffsetIndex(0) { readFavoriteList(); @@ -84,7 +84,7 @@ void UBLibraryController::createInternalWidgetItems() UBToolsManager::UBToolDescriptor tool = UBToolsManager::manager()->toolByID(toolUri); UBLibElement *newTool = new UBLibElement(eUBLibElementType_InteractiveItem, QUrl(tool.id), tool.label); QImage toolImage = tool.icon.toImage(); - newTool->setThumbnail(&toolImage); + newTool->setThumbnail(toolImage); newTool->setInformation(tool.label + " " + tool.version); mInternalLibElements << newTool; @@ -201,64 +201,54 @@ QList UBLibraryController::rootCategoriesList() QList categories; UBLibElement* element = new UBLibElement(eUBLibElementType_Folder, mAudioStandardDirectoryPath, tr("Audios", "Audio category element")); - QImage* categoryImage = new QImage(":images/libpalette/AudiosCategory.svg"); - element->setThumbnail(categoryImage); + element->setThumbnail(QImage(":images/libpalette/AudiosCategory.svg")); element->setMoveable(false); categories << element; element = new UBLibElement(eUBLibElementType_Folder, mVideoStandardDirectoryPath, tr("Movies", "Movies category element")); - categoryImage = new QImage(":images/libpalette/MoviesCategory.svg"); - element->setThumbnail(categoryImage); + element->setThumbnail(QImage(":images/libpalette/MoviesCategory.svg")); element->setMoveable(false); categories << element; element = new UBLibElement(eUBLibElementType_Folder, mPicturesStandardDirectoryPath, tr("Pictures", "Pictures category element")); - categoryImage = new QImage(":images/libpalette/PicturesCategory.svg"); - element->setThumbnail(categoryImage); + element->setThumbnail(QImage(":images/libpalette/PicturesCategory.svg")); element->setMoveable(false); categories << element; QString path = UBSettings::settings()->uniboardShapeLibraryDirectory(); - categoryImage = new QImage(":images/libpalette/ShapesCategory.svg"); element = new UBLibElement(eUBLibElementType_Folder, QUrl::fromLocalFile(path), tr("Shapes", "Shapes category element")); - element->setThumbnail(categoryImage); + element->setThumbnail(QImage(":images/libpalette/ShapesCategory.svg")); element->setMoveable(false); categories << element; - categoryImage = new QImage(":images/libpalette/ApplicationsCategory.svg"); element = new UBLibElement(eUBLibElementType_Folder, mInteractiveUserDirectoryPath, tr("Applications", "Applications category element")); - element->setThumbnail(categoryImage); + element->setThumbnail(QImage(":images/libpalette/ApplicationsCategory.svg")); element->setMoveable(false); categories << element; - categoryImage = new QImage(":images/libpalette/FavoritesCategory.svg"); element = new UBLibElement(eUBLibElementType_VirtualFolder, favoriteVirtualPath, tr("Favorite", "Favorite category element")); - element->setThumbnail(categoryImage); + element->setThumbnail(QImage(":images/libpalette/FavoritesCategory.svg")); element->setMoveable(false); categories << element; - categoryImage = new QImage(":images/libpalette/InteractivesCategory.svg"); mInteractiveCategoryPath = QUrl::fromLocalFile(UBSettings::settings()->uniboardGipLibraryDirectory()); element = new UBLibElement(eUBLibElementType_Folder, mInteractiveCategoryPath, tr("Interactivities", "Interactives category element")); - element->setThumbnail(categoryImage); + element->setThumbnail(QImage(":images/libpalette/InteractivesCategory.svg")); element->setMoveable(false); categories << element; - categoryImage = new QImage(":images/libpalette/FlashCategory.svg"); element = new UBLibElement(eUBLibElementType_Folder, mAnimationUserDirectoryPath, tr("Animations", "Animations category element")); - element->setThumbnail(categoryImage); + element->setThumbnail(QImage(":images/libpalette/FlashCategory.svg")); element->setMoveable(false); categories << element; - - categories << UBLibElement::trashElement(); return categories; } -QImage* UBLibraryController::createThumbnail(UBLibElement* pElement) +QImage UBLibraryController::createThumbnail(UBLibElement* pElement) { QString thumbnailPath = UBFileSystemUtils::thumbnailPath(pElement->path().toLocalFile()); QString mimetype = UBFileSystemUtils::mimeTypeFromFileName(pElement->path().toLocalFile()); @@ -287,17 +277,17 @@ QImage* UBLibraryController::createThumbnail(UBLibElement* pElement) } } - return new QImage(thumbnailPath); + return QImage(thumbnailPath); } -QImage* UBLibraryController::thumbnailForFile(UBLibElement* pElement) +QImage UBLibraryController::thumbnailForFile(UBLibElement* pElement) { if (pElement->path().toString().contains("uniboardTool://")){ - QImage* image = new QImage(UBToolsManager::manager()->iconFromToolId(pElement->path().toString())); + QImage image = QImage(UBToolsManager::manager()->iconFromToolId(pElement->path().toString())); return image; } if (pElement->type() == eUBLibElementType_InteractiveItem){ - QImage* image = new QImage(UBAbstractWidget::iconFilePath(pElement->path())); + QImage image = QImage(UBAbstractWidget::iconFilePath(pElement->path())); return image; } @@ -307,7 +297,7 @@ QImage* UBLibraryController::thumbnailForFile(UBLibElement* pElement) qWarning() << "thumbnailForFile impossible to create thumbnail path for the element " + pElement->path().toLocalFile(); if (QFileInfo(thumbnailPath).exists()) - return new QImage(thumbnailPath); + return QImage(thumbnailPath); else return createThumbnail(pElement); } @@ -318,7 +308,8 @@ QList UBLibraryController::addVirtualElementsForItemPath(const QS if (pPath == mInteractiveUserDirectoryPath.toLocalFile()){ content << listElementsInPath(UBSettings::settings()->uniboardInteractiveLibraryDirectory()); content << listElementsInPath(UBSettings::settings()->uniboardInteractiveFavoritesDirectory()); - content << mInternalLibElements; + foreach(UBLibElement* eachElement, mInternalLibElements) + content << new UBLibElement(eachElement); } else if (pPath == mPicturesStandardDirectoryPath.toLocalFile()){ QUrl path = QUrl::fromLocalFile(UBSettings::settings()->uniboardImageLibraryDirectory()); @@ -353,8 +344,8 @@ QList UBLibraryController::listElementsInPath(const QString& pPat UBLibElement *element = new UBLibElement(fileType, QUrl::fromLocalFile(fileInfo->absoluteFilePath()), itemName); if (fileType == eUBLibElementType_Folder) { - QImage* directoryImage = new QImage(":images/libpalette/folder.svg"); - element->setThumbnail(directoryImage); +// QImage* directoryImage = new QImage(":images/libpalette/folder.svg"); + element->setThumbnail(QImage(":images/libpalette/folder.svg")); } else if (fileType == eUBLibElementType_Item) { if (element->path().toLocalFile().contains(".thumbnail.")) @@ -373,7 +364,10 @@ QList UBLibraryController::listElementsInPath(const QString& pPat QList UBLibraryController::listElementsInVirtualForlder(UBLibElement* pElement) { Q_UNUSED(pElement); - return mFavoriteList; + QList copyOfTheFavoriteList; + foreach(UBLibElement* eachElement, mFavoriteList) + copyOfTheFavoriteList << new UBLibElement(eachElement); + return copyOfTheFavoriteList; } void UBLibraryController::moveContent(QList sourceList, UBLibElement *pDestination) @@ -416,21 +410,31 @@ void UBLibraryController::emptyElementsOnTrash( QList elementsLis } } +void UBLibraryController::cleanElementsList() +{ +// qDebug() << "cleanElementsList()"; +// qDebug() << this; +// foreach(UBLibElement*eachElement, mElementsList) +// qDebug() << eachElement; + qDeleteAll(mElementsList); + mElementsList.clear(); +} + QList UBLibraryController::getContent(UBLibElement *element) { - QList elementsList; + cleanElementsList(); switch (element->type()) { case eUBLibElementType_Category: { - elementsList = rootCategoriesList(); + mElementsList = rootCategoriesList(); break; } case eUBLibElementType_VirtualFolder: { - elementsList = listElementsInVirtualForlder(element); + mElementsList = listElementsInVirtualForlder(element); break; } case eUBLibElementType_Folder: { - elementsList = listElementsInPath(element->path().toLocalFile()); + mElementsList = listElementsInPath(element->path().toLocalFile()); break; } case eUBLibElementType_Item: { @@ -443,16 +447,20 @@ QList UBLibraryController::getContent(UBLibElement *element) break; } - return elementsList; +// qDebug() << "getContent()"; +// qDebug() << this; +// foreach(UBLibElement*eachElement, mElementsList) +// qDebug() << eachElement; + + return mElementsList; } UBLibraryController::~UBLibraryController() { + cleanElementsList(); //NOOP } - - void UBLibraryController::setItemAsBackground(UBLibElement* image) { if (!activeScene()){ @@ -501,9 +509,6 @@ void UBLibraryController::addItemToPage(UBLibElement* item) else{ UBApplication::showMessage(tr("Adding to page failed for item %1.").arg(item->name())); } - - - } void UBLibraryController::removeBackground() @@ -564,7 +569,8 @@ void UBLibraryController::readFavoriteList() eachElement->setInformation(info); eachElement->setExtension(extension); eachElement->setThumbnail(thumbnailForFile(eachElement)); - mFavoriteList << eachElement; + if(!isOnFavoriteList(eachElement)) + mFavoriteList << eachElement; } file.close(); @@ -582,10 +588,10 @@ UBLibElement* UBLibraryController::isOnFavoriteList(UBLibElement * element) void UBLibraryController::addToFavorite(QList elementList) { - foreach(UBLibElement* eachElement, elementList){ + foreach(UBLibElement* eachElement, elementList) if(!isOnFavoriteList(eachElement)) - mFavoriteList << eachElement; - } + mFavoriteList << new UBLibElement(eachElement); + persistFavoriteList(); } @@ -601,7 +607,8 @@ void UBLibraryController::removeFromFavorite(QList elementList) persistFavoriteList(); } -QRectF UBLibraryController::visibleSceneRect() { +QRectF UBLibraryController::visibleSceneRect() +{ QRectF visibleSceneRect(0, 0, 0, 0); if (activeScene() && mBoardController && mBoardController->controlView()) { @@ -621,7 +628,8 @@ QRectF UBLibraryController::visibleSceneRect() { return visibleSceneRect; } -void UBLibraryController::addImagesToCurrentPage(const QList& images) { +void UBLibraryController::addImagesToCurrentPage(const QList& images) +{ QPointF pos = visibleSceneRect().topLeft(); foreach(const QUrl url, images) @@ -652,7 +660,8 @@ void UBLibraryController::addImagesToCurrentPage(const QList& images) { } } -void UBLibraryController::addVideosToCurrentPage(const QList& videos) { +void UBLibraryController::addVideosToCurrentPage(const QList& videos) +{ QPointF pos = visibleSceneRect().topLeft(); foreach(const QUrl url, videos) @@ -665,7 +674,8 @@ void UBLibraryController::addVideosToCurrentPage(const QList& videos) { } } -void UBLibraryController::addAudiosToCurrentPage(const QList& sounds) { +void UBLibraryController::addAudiosToCurrentPage(const QList& sounds) +{ QPointF topLeftPos = visibleSceneRect().topLeft(); QPointF pos = topLeftPos; @@ -680,12 +690,10 @@ void UBLibraryController::addAudiosToCurrentPage(const QList& sounds) { } } -void UBLibraryController::addInteractivesToCurrentPage( - const QList& widgets) { +void UBLibraryController::addInteractivesToCurrentPage( const QList& widgets) +{ foreach(const QUrl url, widgets) - { mBoardController->downloadURL(url, QPointF(0, 0)); - } } QString UBLibraryController::favoritePath() @@ -699,6 +707,17 @@ UBLibElement::UBLibElement() { mbMoveable = false; } +UBLibElement::UBLibElement(UBLibElement* element) +{ + mType = element->type(); + mPath = element->path(); + mThumbnail = *element->thumbnail(); + mInfo = element->information(); + mName = element->name(); + mExtension = element->extension(); + mbMoveable = element->isMoveable(); +} + UBLibElement::UBLibElement(eUBLibElementType type, const QUrl &path, const QString &name) { @@ -728,7 +747,7 @@ UBLibElement::~UBLibElement() UBChainedLibElement::UBChainedLibElement(UBLibElement *pElem, UBChainedLibElement *pNextElem) { - mpElem = pElem; + mpElem = new UBLibElement(pElem); mpNextElem = pNextElem; } @@ -747,13 +766,9 @@ void UBChainedLibElement::setNextElement(UBChainedLibElement *nextElem) UBLibElement* UBLibElement::trashElement() { - static UBLibElement *trashElement; - if (trashElement) - return trashElement; - + UBLibElement *trashElement; trashElement = new UBLibElement(eUBLibElementType_Folder, QUrl::fromLocalFile(UBSettings::trashLibraryPaletteDirPath()), QObject::tr("Trash", "Pictures category element")); - QImage *categoryImage = new QImage(":images/libpalette/TrashCategory.svg"); - trashElement->setThumbnail(categoryImage); + trashElement->setThumbnail(QImage(":images/libpalette/TrashCategory.svg")); trashElement->setMoveable(false); return trashElement; diff --git a/src/board/UBLibraryController.h b/src/board/UBLibraryController.h index e0422199..26b6fe61 100644 --- a/src/board/UBLibraryController.h +++ b/src/board/UBLibraryController.h @@ -42,6 +42,7 @@ class UBLibElement public: UBLibElement(); UBLibElement(eUBLibElementType type, const QUrl& path, const QString& name); + UBLibElement(UBLibElement* element); ~UBLibElement(); static UBLibElement* trashElement(); @@ -51,7 +52,7 @@ public: QUrl path(){return mPath;} void setPath(QUrl path){mPath = path;} QImage* thumbnail(){return &mThumbnail;} - void setThumbnail(QImage* pThumb){mThumbnail = *pThumb;} + void setThumbnail(QImage pThumb){mThumbnail = pThumb;} QString information(){return mInfo;} void setInformation(QString info){mInfo = info;} QString name(){return mName;} @@ -91,7 +92,7 @@ class UBLibraryController : public QObject Q_OBJECT; public: - UBLibraryController(QWidget *parentWidget, UBBoardController *boardController); + UBLibraryController(QWidget *parentWidget); virtual ~UBLibraryController(); QList getContent(UBLibElement* pElement); @@ -134,14 +135,16 @@ class UBLibraryController : public QObject void persistFavoriteList(); void readFavoriteList(); QList mInternalLibElements; + QList mElementsList; + void cleanElementsList(); private: QList rootCategoriesList(); QList listElementsInPath(const QString& pPath); QList listElementsInVirtualForlder(UBLibElement* pElement); void userPath(QUrl &pPath); - QImage* thumbnailForFile(UBLibElement* pPath); - QImage* createThumbnail(UBLibElement* pPath); + QImage thumbnailForFile(UBLibElement* pPath); + QImage createThumbnail(UBLibElement* pPath); QList addVirtualElementsForItemPath(const QString& pPath); void createInternalWidgetItems(); diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp index 0e431005..90e2dfd3 100644 --- a/src/core/UBApplication.cpp +++ b/src/core/UBApplication.cpp @@ -38,7 +38,6 @@ #include "board/UBBoardController.h" #include "board/UBDrawingController.h" -#include "board/UBLibraryController.h" #include "board/UBBoardView.h" #include "web/UBWebController.h" @@ -380,10 +379,10 @@ void UBApplication::toolBarDisplayTextChanged(QVariant display) } -void UBApplication::closeEvent(QCloseEvent *event) -{ +void UBApplication::closeEvent(QCloseEvent *event) +{ Q_UNUSED(event); - + closing(); } diff --git a/src/gui/UBLibActionBar.cpp b/src/gui/UBLibActionBar.cpp index 31901971..6b4093c0 100644 --- a/src/gui/UBLibActionBar.cpp +++ b/src/gui/UBLibActionBar.cpp @@ -16,9 +16,9 @@ #include #include +#include "UBLibWidget.h" #include "UBLibActionBar.h" #include "core/UBApplication.h" -#include "board/UBBoardController.h" #include "core/memcheck.h" @@ -361,7 +361,8 @@ void UBLibActionBar::onSelectionChanged(QList itemList, bool isI */ UBLibraryController* UBLibActionBar::libraryController() { - return UBApplication::boardController->libraryController(); + UBLibWidget* libWidget = dynamic_cast(parentWidget()); + return libWidget->libNavigator()->libraryWidget()->libraryController(); } /** diff --git a/src/gui/UBLibItemProperties.cpp b/src/gui/UBLibItemProperties.cpp index 92739aaf..1b47fbef 100644 --- a/src/gui/UBLibItemProperties.cpp +++ b/src/gui/UBLibItemProperties.cpp @@ -12,15 +12,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + +#include "UBLibWidget.h" #include "UBLibItemProperties.h" #include "core/UBApplication.h" -#include "board/UBBoardController.h" - #include "frameworks/UBFileSystemUtils.h" - #include "core/memcheck.h" /** @@ -223,7 +222,8 @@ void UBLibItemProperties::adaptSize() */ void UBLibItemProperties::onAddToPage() { - UBApplication::boardController->libraryController()->addItemToPage(mpElement); + UBLibWidget* libWidget = dynamic_cast(parentWidget()->parentWidget()); + libWidget->libNavigator()->libraryWidget()->libraryController()->addItemToPage(mpElement); } /** @@ -239,7 +239,8 @@ void UBLibItemProperties::onAddToLib() */ void UBLibItemProperties::onSetAsBackground() { - UBApplication::boardController->libraryController()->setItemAsBackground(mpElement); + UBLibWidget* libWidget = dynamic_cast(parentWidget()->parentWidget()); + libWidget->libNavigator()->libraryWidget()->libraryController()->setItemAsBackground(mpElement); } /** diff --git a/src/gui/UBLibNavigatorWidget.cpp b/src/gui/UBLibNavigatorWidget.cpp index 8edaf447..46908a29 100644 --- a/src/gui/UBLibNavigatorWidget.cpp +++ b/src/gui/UBLibNavigatorWidget.cpp @@ -13,7 +13,7 @@ * along with this program. If not, see . */ #include "UBLibNavigatorWidget.h" -#include "UBRightPalette.h" +#include "UBLibWidget.h" #include "core/memcheck.h" @@ -27,19 +27,18 @@ static int tickIntervalForSlider = 10; * @param name as the object name */ UBLibNavigatorWidget::UBLibNavigatorWidget(QWidget *parent, const char *name):QWidget(parent) - , mLayout(NULL) - , mLibWidget(NULL) - , mPathViewer(NULL) - , mSlider(NULL) - , mSliderWidthSetting(NULL) + , mLayout(NULL) + , mLibWidget(NULL) + , mPathViewer(NULL) + , mSlider(NULL) + , mSliderWidthSetting(NULL) { setObjectName(name); setAcceptDrops(true); - UBRightPalette* pRightPalette = dynamic_cast(parentWidget()); + UBLibWidget* libWidget = dynamic_cast(parentWidget()); mLayout = new QVBoxLayout(this); -// mLayout->setContentsMargins(20, 5, 5, 5); setLayout(mLayout); mPathViewer = new UBLibPathViewer(this); @@ -66,15 +65,13 @@ UBLibNavigatorWidget::UBLibNavigatorWidget(QWidget *parent, const char *name):QW connect(mSlider,SIGNAL(valueChanged(int)),this,SLOT(updateThumbnailsSize(int))); connect(mPathViewer, SIGNAL(elementsDropped(QList,UBLibElement*)), mLibWidget, SLOT(onElementsDropped(QList,UBLibElement*))); - if(NULL != pRightPalette) - { - connect(mLibWidget, SIGNAL(navigBarUpdate(UBLibElement*)), pRightPalette->libWidget()->actionBar(), SLOT(onNavigbarUpdate(UBLibElement*))); - connect(mLibWidget, SIGNAL(itemsSelected(QList, bool)), pRightPalette->libWidget()->actionBar(), SLOT(onSelectionChanged(QList, bool))); - connect(pRightPalette->libWidget()->actionBar(), SIGNAL(deleteDone()), mLibWidget, SLOT(onRefreshCurrentFolder())); - connect(mLibWidget, SIGNAL(favoritesEntered(bool)), pRightPalette->libWidget()->actionBar(), SLOT(onFavoritesEntered(bool))); - connect(pRightPalette->libWidget()->actionBar(), SIGNAL(searchElement(QString)), mLibWidget, SLOT(onSearchElement(QString))); - connect(pRightPalette->libWidget()->actionBar(), SIGNAL(newFolderToCreate()), mLibWidget, SLOT(onNewFolderToCreate())); - } + + connect(mLibWidget, SIGNAL(navigBarUpdate(UBLibElement*)), libWidget->actionBar(), SLOT(onNavigbarUpdate(UBLibElement*))); + connect(mLibWidget, SIGNAL(itemsSelected(QList, bool)), libWidget->actionBar(), SLOT(onSelectionChanged(QList, bool))); + connect(libWidget->actionBar(), SIGNAL(deleteDone()), mLibWidget, SLOT(onRefreshCurrentFolder())); + connect(mLibWidget, SIGNAL(favoritesEntered(bool)), libWidget->actionBar(), SLOT(onFavoritesEntered(bool))); + connect(libWidget->actionBar(), SIGNAL(searchElement(QString)), mLibWidget, SLOT(onSearchElement(QString))); + connect(libWidget->actionBar(), SIGNAL(newFolderToCreate()), mLibWidget, SLOT(onNewFolderToCreate())); mLibWidget->init(); } @@ -147,6 +144,7 @@ void UBLibNavigatorWidget::removeNextChainedElements(UBChainedLibElement *fromEl if(NULL != fromElem->nextElement()) { removeNextChainedElements(fromElem->nextElement()); + delete fromElem->nextElement()->element(); delete fromElem->nextElement(); fromElem->setNextElement(NULL); } diff --git a/src/gui/UBLibNavigatorWidget.h b/src/gui/UBLibNavigatorWidget.h index 0917b6e3..a8750b38 100644 --- a/src/gui/UBLibNavigatorWidget.h +++ b/src/gui/UBLibNavigatorWidget.h @@ -32,6 +32,8 @@ public: ~UBLibNavigatorWidget(); void dropMe(const QMimeData* _data); + UBLibraryWidget* libraryWidget(){return mLibWidget;}; + signals: void propertiesRequested(UBLibElement* elem); diff --git a/src/gui/UBLibPalette.cpp b/src/gui/UBLibPalette.cpp deleted file mode 100644 index 597a99a0..00000000 --- a/src/gui/UBLibPalette.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/* - * 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 3 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, see . - */ -#include -#include "UBLibPalette.h" - -#include "core/memcheck.h" - -/** - * \brief Constructor - * @param parent as the parent widget - * @param name as the object name - */ -UBLibPalette::UBLibPalette(QWidget *parent, const char *name):UBDockPalette(parent, name) - , mLayout(NULL) - , mStackedWidget(NULL) - , mNavigator(NULL) - , mProperties(NULL) - , mActionBar(NULL) -{ - setOrientation(eUBDockOrientation_Right); - - setAcceptDrops(true); - - resize(UBSettings::settings()->libPaletteWidth->get().toInt(), parentWidget()->height()); - setContentsMargins(border(), 0, 0, 0); - mCollapseWidth = 180; - mLastWidth = 300; - - mLayout = new QVBoxLayout(this); - mLayout->setContentsMargins(20, customMargin(), customMargin(), customMargin()); - setLayout(mLayout); - - // Build the GUI - mStackedWidget = new QStackedWidget(this); - mActionBar = new UBLibActionBar(this); - mNavigator = new UBLibNavigatorWidget(this); - mProperties = new UBLibItemProperties(this); - - mLayout->addWidget(mStackedWidget, 1); - mLayout->addWidget(mActionBar, 0); - - mStackedWidget->addWidget(mNavigator); - mStackedWidget->addWidget(mProperties); - - mStackedWidget->setCurrentIndex(ID_NAVIGATOR); - miCrntStackWidget = ID_NAVIGATOR; - - connect(mNavigator, SIGNAL(propertiesRequested(UBLibElement*)), this, SLOT(showProperties(UBLibElement*))); - connect(mProperties, SIGNAL(showFolderContent()), this, SLOT(showFolder())); -} - -/** - * \brief Destructor - */ -UBLibPalette::~UBLibPalette() -{ - if(NULL != mProperties) - { - delete mProperties; - mProperties = NULL; - } - if(NULL != mActionBar) - { - delete mActionBar; - mActionBar = NULL; - } -} - -/** - * \brief Update the maximum width - */ -void UBLibPalette::updateMaxWidth() -{ - setMaximumWidth((int)((parentWidget()->width() * 2)/3)); - setMaximumHeight(parentWidget()->height()); - setMinimumHeight(parentWidget()->height()); -} - -/** - * \brief Handles the drag enter event - * @param pEvent as the drag enter event - */ -void UBLibPalette::dragEnterEvent(QDragEnterEvent *pEvent) -{ - setBackgroundRole(QPalette::Highlight); - pEvent->acceptProposedAction(); -} - -void UBLibPalette::dragLeaveEvent(QDragLeaveEvent *pEvent) -{ - pEvent->accept(); -} - -/** - * \brief Handles the drop event - * @param pEvent as the drop event - */ -void UBLibPalette::dropEvent(QDropEvent *pEvent) -{ - processMimeData(pEvent->mimeData()); - setBackgroundRole(QPalette::Dark); - mStackedWidget->setCurrentIndex(miCrntStackWidget); - pEvent->acceptProposedAction(); -} - -/** - * \brief Handles the drag move event - * @param pEvent as the drag move event - */ -void UBLibPalette::dragMoveEvent(QDragMoveEvent *pEvent) -{ - pEvent->acceptProposedAction(); -} - -/** - * \brief Process the dropped MIME data - * @param pData as the mime dropped data - */ -void UBLibPalette::processMimeData(const QMimeData *pData) -{ - // Display the different mime types contained in the mime data - QStringList qslFormats = pData->formats(); - for(int i = 0; i < qslFormats.size(); i++) - { - qDebug() << "Dropped element format " << i << " = "<< qslFormats.at(i); - } -} - -void UBLibPalette::mouseMoveEvent(QMouseEvent *event) -{ - if(mCanResize) - { - UBDockPalette::mouseMoveEvent(event); - } - else - { - //qDebug() << "Mouse move event detected!" ; - } -} - -void UBLibPalette::showProperties(UBLibElement *elem) -{ - if(NULL != elem) - { - mActionBar->setButtons(eButtonSet_Properties); - // Show the properties of this object - mProperties->showElement(elem); - mStackedWidget->setCurrentIndex(ID_PROPERTIES); - miCrntStackWidget = ID_PROPERTIES; - } -} - -void UBLibPalette::showFolder() -{ - mActionBar->setButtons(mActionBar->previousButtonSet()); - mStackedWidget->setCurrentIndex(ID_NAVIGATOR); - miCrntStackWidget = ID_NAVIGATOR; -} - -void UBLibPalette::resizeEvent(QResizeEvent *event) -{ - UBDockPalette::resizeEvent(event); - UBSettings::settings()->libPaletteWidth->set(width()); - emit resized(); -} diff --git a/src/gui/UBLibPalette.h b/src/gui/UBLibPalette.h deleted file mode 100644 index ca6d6890..00000000 --- a/src/gui/UBLibPalette.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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 3 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, see . - */ -#ifndef UBLIBPALETTE_H -#define UBLIBPALETTE_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "UBDockPalette.h" -#include "UBLibNavigatorWidget.h" -#include "UBLibItemProperties.h" -#include "UBLibActionBar.h" - -#define ID_NAVIGATOR 0 -#define ID_PROPERTIES 1 - -class UBLibPalette : public UBDockPalette -{ - Q_OBJECT -public: - UBLibPalette(QWidget* parent=0, const char* name="libPalette"); - ~UBLibPalette(); - - UBLibActionBar* actionBar(){return mActionBar;} - -signals: - void resized(); - -protected: - void updateMaxWidth(); - void dragEnterEvent(QDragEnterEvent* pEvent); - void dropEvent(QDropEvent *pEvent); - void dragMoveEvent(QDragMoveEvent* pEvent); - void dragLeaveEvent(QDragLeaveEvent* pEvent); - void mouseMoveEvent(QMouseEvent *event); - void resizeEvent(QResizeEvent *event); - -private slots: - void showProperties(UBLibElement* elem); - void showFolder(); - -private: - void processMimeData(const QMimeData* pData); - - /** The layout */ - QVBoxLayout* mLayout; - /** The stacked layout */ - QStackedWidget* mStackedWidget; - /** The Navigator widget */ - UBLibNavigatorWidget* mNavigator; - /** The Properties widget */ - UBLibItemProperties* mProperties; - /** UBLibActionBar */ - UBLibActionBar* mActionBar; - /** The current stack widget index*/ - int miCrntStackWidget; -}; - -#endif // UBLIBPALETTE_H diff --git a/src/gui/UBLibWidget.h b/src/gui/UBLibWidget.h index 09896ae4..644bd93f 100644 --- a/src/gui/UBLibWidget.h +++ b/src/gui/UBLibWidget.h @@ -42,6 +42,7 @@ public: ~UBLibWidget(); UBLibActionBar* actionBar(){return mActionBar;} + UBLibNavigatorWidget* libNavigator() {return mNavigator;}; signals: void resized(); diff --git a/src/gui/UBLibraryWidget.cpp b/src/gui/UBLibraryWidget.cpp index f887568b..d66f0b2c 100644 --- a/src/gui/UBLibraryWidget.cpp +++ b/src/gui/UBLibraryWidget.cpp @@ -12,573 +12,569 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include -#include - -#include "UBLibraryWidget.h" -#include "core/UBSettings.h" -#include "core/UBSetting.h" -#include "core/UBApplication.h" - -#include "board/UBBoardController.h" -#include "board/UBLibraryController.h" - -#include "core/memcheck.h" - -/** - * \brief Constructor - * @param parent as the parent widget - * @param name as the widget object name - */ -UBLibraryWidget::UBLibraryWidget(QWidget *parent, const char *name):UBThumbnailWidget(parent) - , chainedElements(NULL) - , mpCrntDir(NULL) - , mpCrntElem(NULL) - , mCrntPath("/") -{ - setObjectName(name); - setSpacing(5); - setStyleSheet(QString("background: #EEEEEE; border-radius : 10px; border : 2px solid #999999;")); -} - -/** - * \brief Destructor - */ -UBLibraryWidget::~UBLibraryWidget() -{ -// if(NULL != chainedElements) -// { -// delete chainedElements; -// chainedElements = NULL; -// } -// if(NULL != mpCrntDir) -// { -// delete mpCrntDir; -// mpCrntDir = NULL; -// } -// if(NULL != mpCrntElem) -// { -// delete mpCrntElem; -// mpCrntElem = NULL; -// } -} - -/** - * \brief Initialize the widget content - */ -void UBLibraryWidget::init() -{ - setAcceptDrops(true); - mpCrntElem = new UBLibElement(); - mpCrntElem->setThumbnail(new QImage(":images/libpalette/home.png")); - chainedElements = new UBChainedLibElement(mpCrntElem); - QList qlElems = libraryController()->getContent(mpCrntElem); - mCurrentElems = qlElems; - - setCurrentElemsAndRefresh(chainedElements); - - connect(this, SIGNAL(mouseClick(QGraphicsItem*,int)), this, SLOT(onItemClicked(QGraphicsItem*,int))); - connect(this, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged())); -} - -/** - * \brief Refresh the view - */ -void UBLibraryWidget::refreshView() -{ - // Clear the view - mItems.clear(); - mLabels.clear(); - mItemsPaths.clear(); - mGraphicItems.clear(); - - // Generate the graphics items - generateItems(); - - // Set the new items - setGraphicsItems(mGraphicItems, mItemsPaths, mLabels); - - // Refresh the view - refreshScene(); - - emit navigBarUpdate(mpCrntElem); - - bool bFavorite = false; - if(NULL != mpCrntDir && libraryController()->favoritePath() == mpCrntDir->path().toLocalFile()) - { - bFavorite = true; - } - emit favoritesEntered(bFavorite); -} - -/** - * \brief Generate the graphic items related to the current directory - */ -void UBLibraryWidget::generateItems() -{ - for(int i = 0; i < mCurrentElems.size(); i++) - { - UBLibElement* pElem = mCurrentElems.at(i); - mLabels << pElem->name(); - mItemsPaths << pElem->path(); - QGraphicsPixmapItem *pixmapItem = new UBThumbnailPixmap(QPixmap::fromImage(*pElem->thumbnail())); - mGraphicItems << pixmapItem; - } -} - -/** - * \brief Handles the click on an item - * @param item as the clicked item - * @param index as the given index - */ -void UBLibraryWidget::onItemClicked(QGraphicsItem *item, int index) -{ - Q_UNUSED(index); - if(NULL != item) - { - int iItem = mGraphicItems.indexOf(item); - if(0 <= iItem) - { - UBLibElement* pElem = mCurrentElems.at(iItem); - if(NULL != pElem) - { - mpCrntElem = pElem; - if(eUBLibElementType_Folder == pElem->type() || - eUBLibElementType_VirtualFolder == pElem->type()) - { - // Add the clicked element to the end of the elements list - // (at this level, the user can only go down in the path) - UBChainedLibElement* pNextElem = new UBChainedLibElement(pElem); - appendChainedElement(pNextElem, chainedElements); - - mpCrntDir = pElem; - // Display the content of the folder - QList qlElems = libraryController()->getContent(pElem); - mCurrentElems = qlElems; - refreshView(); - } - else - { - // Display the properties view - emit propertiesRequested(pElem); - } - } - } - } -} - -/** - * \brief Append the given element to the given chain - * @param element as the element to append - * @param toElem as the given chain - */ -void UBLibraryWidget::appendChainedElement(UBChainedLibElement *element, UBChainedLibElement *toElem) -{ - if(NULL != toElem) - { - if(NULL != toElem->nextElement()) - { - appendChainedElement(element, toElem->nextElement()); - } - else - { - toElem->setNextElement(element); - } - } -} - -/** - * \brief Set the current element and refresh the scene - * @param elem as the current element - */ -void UBLibraryWidget::setCurrentElemsAndRefresh(UBChainedLibElement *elem) -{ - if(NULL != elem) - { - UBLibElement* pLibElem = elem->element(); - if(NULL != pLibElem) - { - if(eUBLibElementType_Item != pLibElem->type()) - { - QList qlElements = libraryController()->getContent(pLibElem); - mCurrentElems = qlElements; - mpCrntElem = pLibElem; - refreshView(); - mpCrntDir = pLibElem; - bool bFavorite = false; - if(NULL != mpCrntDir && libraryController()->favoritePath() == mpCrntDir->path().toLocalFile()) - { - bFavorite = true; - } - emit favoritesEntered(bFavorite); - } - } - } -} - -/** - * \brief Handles the selection changed event - */ -void UBLibraryWidget::onSelectionChanged() -{ - // Get the selected items - QList qlSelectedItems; - QList qlGI = selectedItems(); - - bCanDrag = true; - foreach(QGraphicsItem* it, qlGI) - { - int itIndex = mGraphicItems.indexOf(it); - if(0 <= itIndex) - { - UBLibElement* pElem = mCurrentElems.at(itIndex); - if(NULL != pElem) - { - if(eUBLibElementType_Category != pElem->type() && - eUBLibElementType_VirtualFolder != pElem->type()) - { - qlSelectedItems << pElem; - } - - if(!pElem->isMoveable()) - { - bCanDrag = false; - } - } - } - } - - // Check if we are in the trash folder - bool bInTrash = false; - if(NULL != mpCrntDir) - { - if("Trash" == mpCrntDir->name()) - { - bInTrash = true; - } - } - - // Send the signal with these items - emit itemsSelected(qlSelectedItems, bInTrash); -} - -/** - * \brief Handle the delete done event - */ -void UBLibraryWidget::onRefreshCurrentFolder() -{ - // Refresh the current view - mCurrentElems = libraryController()->getContent(mpCrntDir); - refreshView(); -} - -/** - * \brief Handles the drag enter event - * @param event as the drag enter event - */ -void UBLibraryWidget::dragEnterEvent(QDragEnterEvent *event) -{ - event->acceptProposedAction(); -} - -/** - * \brief Handles the drag move event - * @param event as the drag move event - */ -void UBLibraryWidget::dragMoveEvent(QDragMoveEvent *event) -{ - UBLibElement* pElem = elementAt(event->pos()); - if(NULL != pElem) - { - // We can only drop an item into a folder - if(eUBLibElementType_Folder == pElem->type() || - eUBLibElementType_VirtualFolder == pElem->type()) - { - event->acceptProposedAction(); - } - } -} - -void UBLibraryWidget::onDropMe(const QMimeData *_data) -{ - Q_UNUSED(_data); -} - -/** - * \brief Handles the drop event - * @param event as the drop event - */ -void UBLibraryWidget::dropEvent(QDropEvent *event) -{ - const QMimeData* pMimeData = event->mimeData(); - if(event->source() == this) - { - event->accept(); - - // Get the destination item - UBLibElement* pElem = elementAt(event->pos()); - if(NULL != pElem) - { - if(eUBLibElementType_Folder == pElem->type()) - { - // The drag comes from this application, we have now to get the list of UBLibElements* - QList qlDroppedElems; - - foreach(QUrl url, pMimeData->urls()) - { - qlDroppedElems << url.toString(); - } - - if(!qlDroppedElems.empty()) - onElementsDropped(qlDroppedElems, pElem); - } - } - } - else - { - bool bDropAccepted = false; - if (pMimeData->hasImage()) - { - qDebug() << "hasImage"; - QImage image = qvariant_cast(pMimeData->imageData()); - libraryController()->importImageOnLibrary(image); - bDropAccepted = true; - } - else if (pMimeData->hasHtml()) - { - qDebug() << "hasHtml Unsupported yet"; - } - else if (pMimeData->hasText()) - { - // On linux external dragged element are considered as text; - qDebug() << "hasText: " << pMimeData->text(); - QString filePath = QUrl(pMimeData->text()).toLocalFile(); - libraryController()->importItemOnLibrary(filePath); - bDropAccepted = true; - } - else if (pMimeData->hasUrls()) - { - qDebug() << "hasUrls"; - QList urlList = pMimeData->urls(); - for (int i = 0; i < urlList.size() && i < 32; ++i) - { - QString filePath = QUrl(urlList.at(i).path()).toLocalFile(); - libraryController()->importItemOnLibrary(filePath); - bDropAccepted = true; - } - } - else - { - qWarning() << "Cannot import data"; - } - - if(bDropAccepted) - { - onRefreshCurrentFolder(); - event->accept(); - } - else - { - event->ignore(); - } - } -} - -/** - * \brief Get the element at the given position - * @param p as the given position - * @return a pointer on the related element - */ -UBLibElement* UBLibraryWidget::elementAt(QPoint p) -{ - QGraphicsItem* pItem = itemAt(p); - if(NULL != pItem) - { - int iItem = mGraphicItems.indexOf(pItem); - if(-1 != iItem) - { - return mCurrentElems.at(iItem); - } - } - - // If no element is found, return NULL - return NULL; -} - - -/** - * \brief Get the element from the given name - * @param name as the given element name - * @return the UBLibElement related to the given name - */ -UBLibElement* UBLibraryWidget::elementFromFilePath(const QString &filePath) -{ - UBLibElement* pElem = NULL; - - foreach(UBLibElement* elem, mCurrentElems) - { - if(elem->path().toLocalFile() == QUrl(filePath).toLocalFile()) - { - return elem; - } - - } - - return pElem; -} - -/** - * \brief Get a pointer on the library controller - * @return a pointer on the library controller - */ -UBLibraryController* UBLibraryWidget::libraryController() -{ - return UBApplication::boardController->libraryController(); -} - -/** - * \brief Update the thumbnails size - * @param newSize as the thumbnail size - */ -void UBLibraryWidget::updateThumbnailsSize(int newSize) -{ - setThumbnailWidth(newSize); - refreshView(); -} - -/** - * \brief Handles the element dropped event - * @param elements as the list of dropped elements - * @param target as the drop target - */ -void UBLibraryWidget::onElementsDropped(QList elements, UBLibElement *target) -{ - if(target != mpCrntDir) - { - QList qlElements; - - foreach(QString qsElem, elements) - qlElements << elementFromFilePath(qsElem); - - libraryController()->moveContent(qlElements, target); - mCurrentElems = libraryController()->getContent(mpCrntDir); - refreshView(); - } -} - -/** - * \brief Search the element related to the given text - * @param elem as the searched element name - */ -void UBLibraryWidget::onSearchElement(QString elem) -{ - // Store the original list of items - mOrigCurrentElems = libraryController()->getContent(mpCrntDir); - - // Build the filtered list - mCurrentElems.clear(); - if(elem.isEmpty()) - { - mCurrentElems = mOrigCurrentElems; - } - else - { - foreach(UBLibElement* ubLibElem, mOrigCurrentElems) - { - if(ubLibElem->name().toLower().contains(elem.toLower())) - { - mCurrentElems << ubLibElem; - } - } - } - refreshView(); -} - -/** - * \brief Create a new folder - */ -void UBLibraryWidget::onNewFolderToCreate() -{ - // Create here a dialog asking the name of the new folder - UBNewFolderDlg dlg; - if(QDialog::Accepted == dlg.exec()) - { - libraryController()->createNewFolder(dlg.folderName(), mpCrntElem); - onRefreshCurrentFolder(); - } -} - -/** - * \brief Constructor - * @param parent as the parent widget - * @param name as the object name - */ -UBNewFolderDlg::UBNewFolderDlg(QWidget *parent, const char *name):QDialog(parent) - , mpLabel(NULL) - , mpLineEdit(NULL) - , mpButtons(NULL) - , mpLayout(NULL) - , mpHLayout(NULL) -{ - setObjectName(name); - setWindowTitle(tr("Add new folder")); - - mpLabel = new QLabel(tr("New Folder name:"),this); - mpLineEdit = new QLineEdit(this); - mpButtons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this); - mpLayout = new QVBoxLayout(this); - mpHLayout = new QHBoxLayout(this); - - setLayout(mpLayout); - mpLayout->addLayout(mpHLayout, 0); - mpHLayout->addWidget(mpLabel, 0); - mpHLayout->addWidget(mpLineEdit, 1); - mpLayout->addWidget(mpButtons); - - connect(mpButtons->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(accept())); - connect(mpButtons->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), this, SLOT(reject())); - - setMaximumHeight(100); - setMinimumHeight(100); -} - -/** - * \brief Destructor - */ -UBNewFolderDlg::~UBNewFolderDlg() -{ - if(NULL != mpButtons) - { - delete mpButtons; - mpButtons = NULL; - } - if(NULL != mpLineEdit) - { - delete mpLineEdit; - mpLineEdit = NULL; - } - if(NULL != mpLabel) - { - delete mpLabel; - mpLabel = NULL; - } - if(NULL != mpHLayout) - { - delete mpHLayout; - mpHLayout = NULL; - } - if(NULL != mpLayout) - { - delete mpLayout; - mpLayout = NULL; - } -} - -/** - * \brief Get the folder name - * @return the entered folder name - */ -QString UBNewFolderDlg::folderName() -{ - return mpLineEdit->text(); -} +#include +#include + +#include "UBLibraryWidget.h" +#include "core/UBSettings.h" +#include "core/UBSetting.h" +#include "core/UBApplication.h" + +#include "board/UBBoardController.h" +#include "board/UBLibraryController.h" + +#include "core/memcheck.h" + +/** + * \brief Constructor + * @param parent as the parent widget + * @param name as the widget object name + */ +UBLibraryWidget::UBLibraryWidget(QWidget *parent, const char *name):UBThumbnailWidget(parent) + , chainedElements(NULL) + , mpCrntDir(NULL) + , mpCrntElem(NULL) +{ + setObjectName(name); + setSpacing(5); + setStyleSheet(QString("background: #EEEEEE; border-radius : 10px; border : 2px solid #999999;")); + mLibraryController = new UBLibraryController(parentWidget()); +} + +/** + * \brief Destructor + */ +UBLibraryWidget::~UBLibraryWidget() +{ + if(mLibraryController){ + delete mLibraryController; + mLibraryController = NULL; + } + +// if(NULL != chainedElements) +// { +// delete chainedElements; +// chainedElements = NULL; +// } + if(NULL != mpCrntDir) + { + delete mpCrntDir; + mpCrntDir = NULL; + } + if(NULL != mpCrntElem) + { + delete mpCrntElem; + mpCrntElem = NULL; + } +} + +/** + * \brief Initialize the widget content + */ +void UBLibraryWidget::init() +{ + setAcceptDrops(true); + mpCrntElem = new UBLibElement(); + mpCrntElem->setThumbnail(QImage(":images/libpalette/home.png")); + chainedElements = new UBChainedLibElement(mpCrntElem); + QList qlElems = mLibraryController->getContent(mpCrntElem); + mCurrentElems = qlElems; + + setCurrentElemsAndRefresh(chainedElements); + + connect(this, SIGNAL(mouseClick(QGraphicsItem*,int)), this, SLOT(onItemClicked(QGraphicsItem*,int))); + connect(this, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged())); +} + +/** + * \brief Refresh the view + */ +void UBLibraryWidget::refreshView() +{ + // Clear the view + mItems.clear(); + mLabels.clear(); + mItemsPaths.clear(); + mGraphicItems.clear(); + + // Generate the graphics items + generateItems(); + + // Set the new items + setGraphicsItems(mGraphicItems, mItemsPaths, mLabels); + + // Refresh the view + refreshScene(); + + emit navigBarUpdate(mpCrntElem); + + bool bFavorite = false; + if(NULL != mpCrntDir && mLibraryController->favoritePath() == mpCrntDir->path().toLocalFile()) + { + bFavorite = true; + } + emit favoritesEntered(bFavorite); +} + +/** + * \brief Generate the graphic items related to the current directory + */ +void UBLibraryWidget::generateItems() +{ + for(int i = 0; i < mCurrentElems.size(); i++) + { + UBLibElement* pElem = mCurrentElems.at(i); + mLabels << pElem->name(); + mItemsPaths << pElem->path(); + QGraphicsPixmapItem *pixmapItem = new UBThumbnailPixmap(QPixmap::fromImage(*pElem->thumbnail())); + mGraphicItems << pixmapItem; + } +} + +/** + * \brief Handles the click on an item + * @param item as the clicked item + * @param index as the given index + */ +void UBLibraryWidget::onItemClicked(QGraphicsItem *item, int index) +{ + Q_UNUSED(index); + if(NULL != item) + { + int iItem = mGraphicItems.indexOf(item); + if(0 <= iItem) + { + UBLibElement* pElem = mCurrentElems.at(iItem); + if(NULL != pElem) + { + delete mpCrntElem; + mpCrntElem = new UBLibElement(pElem); + if(eUBLibElementType_Folder == pElem->type() || eUBLibElementType_VirtualFolder == pElem->type()) { + // Add the clicked element to the end of the elements list + // (at this level, the user can only go down in the path) + UBChainedLibElement* pNextElem = new UBChainedLibElement(pElem); + appendChainedElement(pNextElem, chainedElements); + delete mpCrntDir; + mpCrntDir = new UBLibElement(pElem); + // Display the content of the folder + QList qlElems = mLibraryController->getContent(mpCrntDir); + mCurrentElems = qlElems; + refreshView(); + } + else + { + // Display the properties view + emit propertiesRequested(pElem); + } + } + } + } +} + +/** + * \brief Append the given element to the given chain + * @param element as the element to append + * @param toElem as the given chain + */ +void UBLibraryWidget::appendChainedElement(UBChainedLibElement *element, UBChainedLibElement *toElem) +{ + if(NULL != toElem) + { + if(NULL != toElem->nextElement()) + { + appendChainedElement(element, toElem->nextElement()); + } + else + { + toElem->setNextElement(element); + } + } +} + +/** + * \brief Set the current element and refresh the scene + * @param elem as the current element + */ +void UBLibraryWidget::setCurrentElemsAndRefresh(UBChainedLibElement *elem) +{ + if(NULL != elem) + { + UBLibElement* pLibElem = elem->element(); + if(NULL != pLibElem) + { + if(eUBLibElementType_Item != pLibElem->type()) + { + QList qlElements = mLibraryController->getContent(pLibElem); + mCurrentElems = qlElements; + delete mpCrntElem; + mpCrntElem = new UBLibElement(pLibElem); + refreshView(); + delete mpCrntDir; + mpCrntDir = new UBLibElement(pLibElem); + bool bFavorite = false; + if(NULL != mpCrntDir && mLibraryController->favoritePath() == mpCrntDir->path().toLocalFile()) + { + bFavorite = true; + } + emit favoritesEntered(bFavorite); + } + } + } +} + +/** + * \brief Handles the selection changed event + */ +void UBLibraryWidget::onSelectionChanged() +{ + // Get the selected items + QList qlSelectedItems; + QList qlGI = selectedItems(); + + bCanDrag = true; + foreach(QGraphicsItem* it, qlGI) + { + int itIndex = mGraphicItems.indexOf(it); + if(0 <= itIndex) + { + UBLibElement* pElem = mCurrentElems.at(itIndex); + if(NULL != pElem) + { + if(eUBLibElementType_Category != pElem->type() && eUBLibElementType_VirtualFolder != pElem->type()) { + qlSelectedItems << pElem; + } + + if(!pElem->isMoveable()) + { + bCanDrag = false; + } + } + } + } + + // Check if we are in the trash folder + bool bInTrash = false; + if(NULL != mpCrntDir) + { + if("Trash" == mpCrntDir->name()) + { + bInTrash = true; + } + } + + // Send the signal with these items + emit itemsSelected(qlSelectedItems, bInTrash); +} + +/** + * \brief Handle the delete done event + */ +void UBLibraryWidget::onRefreshCurrentFolder() +{ + // Refresh the current view + mCurrentElems = mLibraryController->getContent(mpCrntDir); + refreshView(); +} + +/** + * \brief Handles the drag enter event + * @param event as the drag enter event + */ +void UBLibraryWidget::dragEnterEvent(QDragEnterEvent *event) +{ + event->acceptProposedAction(); +} + +/** + * \brief Handles the drag move event + * @param event as the drag move event + */ +void UBLibraryWidget::dragMoveEvent(QDragMoveEvent *event) +{ + UBLibElement* pElem = elementAt(event->pos()); + if(NULL != pElem) + { + // We can only drop an item into a folder + if(eUBLibElementType_Folder == pElem->type() || + eUBLibElementType_VirtualFolder == pElem->type()) + { + event->acceptProposedAction(); + } + } +} + +void UBLibraryWidget::onDropMe(const QMimeData *_data) +{ + Q_UNUSED(_data); +} + +/** + * \brief Handles the drop event + * @param event as the drop event + */ +void UBLibraryWidget::dropEvent(QDropEvent *event) +{ + const QMimeData* pMimeData = event->mimeData(); + if(event->source() == this) + { + event->accept(); + + // Get the destination item + UBLibElement* pElem = elementAt(event->pos()); + if(NULL != pElem) + { + if(eUBLibElementType_Folder == pElem->type()) + { + // The drag comes from this application, we have now to get the list of UBLibElements* + QList qlDroppedElems; + + foreach(QUrl url, pMimeData->urls()) + { + qlDroppedElems << url.toString(); + } + + if(!qlDroppedElems.empty()) + onElementsDropped(qlDroppedElems, pElem); + } + } + } + else + { + bool bDropAccepted = false; + if (pMimeData->hasImage()) + { + qDebug() << "hasImage"; + QImage image = qvariant_cast(pMimeData->imageData()); + mLibraryController->importImageOnLibrary(image); + bDropAccepted = true; + } + else if (pMimeData->hasHtml()) + { + qDebug() << "hasHtml Unsupported yet"; + } + else if (pMimeData->hasText()) + { + // On linux external dragged element are considered as text; + qDebug() << "hasText: " << pMimeData->text(); + QString filePath = QUrl(pMimeData->text()).toLocalFile(); + mLibraryController->importItemOnLibrary(filePath); + bDropAccepted = true; + } + else if (pMimeData->hasUrls()) + { + qDebug() << "hasUrls"; + QList urlList = pMimeData->urls(); + for (int i = 0; i < urlList.size() && i < 32; ++i) + { + QString filePath = QUrl(urlList.at(i).path()).toLocalFile(); + mLibraryController->importItemOnLibrary(filePath); + bDropAccepted = true; + } + } + else + { + qWarning() << "Cannot import data"; + } + + if(bDropAccepted) + { + onRefreshCurrentFolder(); + event->accept(); + } + else + { + event->ignore(); + } + } +} + +/** + * \brief Get the element at the given position + * @param p as the given position + * @return a pointer on the related element + */ +UBLibElement* UBLibraryWidget::elementAt(QPoint p) +{ + QGraphicsItem* pItem = itemAt(p); + if(NULL != pItem) + { + int iItem = mGraphicItems.indexOf(pItem); + if(-1 != iItem) + { + return mCurrentElems.at(iItem); + } + } + + // If no element is found, return NULL + return NULL; +} + + +/** + * \brief Get the element from the given name + * @param name as the given element name + * @return the UBLibElement related to the given name + */ +UBLibElement* UBLibraryWidget::elementFromFilePath(const QString &filePath) +{ + UBLibElement* pElem = NULL; + + foreach(UBLibElement* elem, mCurrentElems) + { + if(elem->path().toLocalFile() == QUrl(filePath).toLocalFile()) + { + return elem; + } + + } + + return pElem; +} + + +/** + * \brief Update the thumbnails size + * @param newSize as the thumbnail size + */ +void UBLibraryWidget::updateThumbnailsSize(int newSize) +{ + setThumbnailWidth(newSize); + refreshView(); +} + +/** + * \brief Handles the element dropped event + * @param elements as the list of dropped elements + * @param target as the drop target + */ +void UBLibraryWidget::onElementsDropped(QList elements, UBLibElement *target) +{ + if(target != mpCrntDir) + { + QList qlElements; + + foreach(QString qsElem, elements) + qlElements << elementFromFilePath(qsElem); + + mLibraryController->moveContent(qlElements, target); + mCurrentElems = mLibraryController->getContent(mpCrntDir); + refreshView(); + } +} + +/** + * \brief Search the element related to the given text + * @param elem as the searched element name + */ +void UBLibraryWidget::onSearchElement(QString elem) +{ + // Store the original list of items + mOrigCurrentElems = mLibraryController->getContent(mpCrntDir); + + // Build the filtered list + mCurrentElems.clear(); + if(elem.isEmpty()) + { + mCurrentElems = mOrigCurrentElems; + } + else + { + foreach(UBLibElement* ubLibElem, mOrigCurrentElems) + { + if(ubLibElem->name().toLower().contains(elem.toLower())) + { + mCurrentElems << ubLibElem; + } + } + } + refreshView(); +} + +/** + * \brief Create a new folder + */ +void UBLibraryWidget::onNewFolderToCreate() +{ + // Create here a dialog asking the name of the new folder + UBNewFolderDlg dlg; + if(QDialog::Accepted == dlg.exec()) + { + mLibraryController->createNewFolder(dlg.folderName(), mpCrntElem); + onRefreshCurrentFolder(); + } +} + +/** + * \brief Constructor + * @param parent as the parent widget + * @param name as the object name + */ +UBNewFolderDlg::UBNewFolderDlg(QWidget *parent, const char *name):QDialog(parent) + , mpLabel(NULL) + , mpLineEdit(NULL) + , mpButtons(NULL) + , mpLayout(NULL) + , mpHLayout(NULL) +{ + setObjectName(name); + setWindowTitle(tr("Add new folder")); + + mpLabel = new QLabel(tr("New Folder name:"),this); + mpLineEdit = new QLineEdit(this); + mpButtons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this); + mpLayout = new QVBoxLayout(this); + mpHLayout = new QHBoxLayout(this); + + setLayout(mpLayout); + mpLayout->addLayout(mpHLayout, 0); + mpHLayout->addWidget(mpLabel, 0); + mpHLayout->addWidget(mpLineEdit, 1); + mpLayout->addWidget(mpButtons); + + connect(mpButtons->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(accept())); + connect(mpButtons->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), this, SLOT(reject())); + + setMaximumHeight(100); + setMinimumHeight(100); +} + +/** + * \brief Destructor + */ +UBNewFolderDlg::~UBNewFolderDlg() +{ + if(NULL != mpButtons) + { + delete mpButtons; + mpButtons = NULL; + } + if(NULL != mpLineEdit) + { + delete mpLineEdit; + mpLineEdit = NULL; + } + if(NULL != mpLabel) + { + delete mpLabel; + mpLabel = NULL; + } + if(NULL != mpHLayout) + { + delete mpHLayout; + mpHLayout = NULL; + } + if(NULL != mpLayout) + { + delete mpLayout; + mpLayout = NULL; + } +} + +/** + * \brief Get the folder name + * @return the entered folder name + */ +QString UBNewFolderDlg::folderName() +{ + return mpLineEdit->text(); +} diff --git a/src/gui/UBLibraryWidget.h b/src/gui/UBLibraryWidget.h index 42f9aa32..e6fd0fc7 100644 --- a/src/gui/UBLibraryWidget.h +++ b/src/gui/UBLibraryWidget.h @@ -29,7 +29,10 @@ #include #include "UBThumbnailWidget.h" -#include "board/UBLibraryController.h" + +class UBLibraryController; +class UBChainedLibElement; +class UBLibElement; class UBLibraryWidget : public UBThumbnailWidget { @@ -44,6 +47,8 @@ public: void updateThumbnailsSize(int newSize); void init(); + UBLibraryController* libraryController() {return mLibraryController;}; + public slots: void onRefreshCurrentFolder(); void onElementsDropped(QList elements, UBLibElement* target); @@ -71,14 +76,13 @@ private: void appendChainedElement(UBChainedLibElement* element, UBChainedLibElement* toElem); UBLibElement* elementAt(QPoint p); UBLibElement* elementFromFilePath(const QString& filePath); - UBLibraryController* libraryController(); + UBLibraryController* mLibraryController; UBLibElement* mpCrntDir; UBLibElement* mpCrntElem; QList mCurrentElems; QList mOrigCurrentElems; QList mItems; - QString mCrntPath; }; diff --git a/src/gui/gui.pri b/src/gui/gui.pri index 0c17c86c..6d933785 100644 --- a/src/gui/gui.pri +++ b/src/gui/gui.pri @@ -29,7 +29,6 @@ HEADERS += src/gui/UBThumbnailView.h \ src/gui/UBFavoriteToolPalette.h \ src/gui/UBKeyboardPalette.h \ src/gui/UBNavigatorPalette.h \ - src/gui/UBLibPalette.h \ src/gui/UBDocumentNavigator.h \ src/gui/UBDockPalette.h \ src/gui/UBPropertyPalette.h \ @@ -76,7 +75,6 @@ SOURCES += src/gui/UBThumbnailView.cpp \ src/gui/UBFavoriteToolPalette.cpp \ src/gui/UBKeyboardPalette.cpp \ src/gui/UBNavigatorPalette.cpp \ - src/gui/UBLibPalette.cpp \ src/gui/UBDocumentNavigator.cpp \ src/gui/UBDockPalette.cpp \ src/gui/UBPropertyPalette.cpp \ From 7f11d0653af9388eb7a928336f7adca36d879f4a Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Thu, 1 Sep 2011 18:42:36 +0300 Subject: [PATCH 12/12] Magnifier: macos compilation fix --- resources/forms/mainWindow.ui | 109 ---------------------------------- 1 file changed, 109 deletions(-) diff --git a/resources/forms/mainWindow.ui b/resources/forms/mainWindow.ui index e0b23cad..790c01fc 100644 --- a/resources/forms/mainWindow.ui +++ b/resources/forms/mainWindow.ui @@ -1638,115 +1638,6 @@ Ctrl+H - - - true - - - - :/images/stylusPalette/magnifier.png - :/images/stylusPalette/magnifierOn.png:/images/stylusPalette/magnifier.png - - - Magnifier - - - Magnifier - - - - - true - - - - :/images/toolbar/smallMagnifierZoom.png:/images/toolbar/smallMagnifierZoom.png - - - Zoom - - - x2 Zoom - - - - - true - - - true - - - - :/images/toolbar/mediumMagnifierZoom.png:/images/toolbar/mediumMagnifierZoom.png - - - Zoom - - - x3 Zoom - - - - - true - - - - :/images/toolbar/largeMagnifierZoom.png:/images/toolbar/largeMagnifierZoom.png - - - Zoom - - - x4 Zoom - - - - - true - - - - :/images/toolbar/smallMagnifierSize.png:/images/toolbar/smallMagnifierSize.png - - - Size - - - 10% from scene size - - - - - true - - - - :/images/toolbar/mediumMagnifierSize.png:/images/toolbar/mediumMagnifierSize.png - - - Size - - - 20% from scene size - - - - - true - - - - :/images/toolbar/largeMagnifierSize.png:/images/toolbar/largeMagnifierSize.png - - - Size - - - 30% from scene size - -