SVN commit 681946 by gateau: More work on rotation, rough skeleton implemented. M +31 -0 app/mainwindow.cpp M +2 -0 lib/CMakeLists.txt A lib/abstractimageoperation.cpp [License: GPL (v2+)] A lib/abstractimageoperation.h [License: GPL (v2+)] A lib/transformimageoperation.cpp [License: GPL (v2+)] A lib/transformimageoperation.h [License: GPL (v2+)] --- trunk/KDE/kdegraphics/gwenview/app/mainwindow.cpp #681945:681946 @@ -65,6 +65,7 @@ #include #include #include +#include namespace Gwenview { @@ -472,6 +473,28 @@ return item->mimetype(); } } + + void applyImageOperation(AbstractImageOperation* op) { + QItemSelection selection = mThumbnailView->selectionModel()->selection(); + QModelIndexList indexList = selection.indexes(); + Q_ASSERT(indexList.count() > 0); + if (indexList.count() > 1) { + Q_FOREACH(QModelIndex index, indexList) { + KFileItem* item = mDirModel->itemForIndex(index); + KUrl url = item->url(); + Document::Ptr doc = DocumentFactory::instance()->load(url); + op->apply(doc); + // TODO: Batch dialog, showing progress and errors + if (doc->isModified()) { + doc->save(url, doc->format()); + } + } + } else { + KFileItem* item = mDirModel->itemForIndex(indexList[0]); + Document::Ptr doc = DocumentFactory::instance()->load(item->url()); + op->apply(doc); + } + } }; @@ -773,18 +796,26 @@ void MainWindow::rotateLeft() { + TransformImageOperation op(TransformImageOperation::RotateLeft); + d->applyImageOperation(&op); } void MainWindow::rotateRight() { + TransformImageOperation op(TransformImageOperation::RotateRight); + d->applyImageOperation(&op); } void MainWindow::mirror() { + TransformImageOperation op(TransformImageOperation::Mirror); + d->applyImageOperation(&op); } void MainWindow::flip() { + TransformImageOperation op(TransformImageOperation::Flip); + d->applyImageOperation(&op); } --- trunk/KDE/kdegraphics/gwenview/lib/CMakeLists.txt #681945:681946 @@ -1,5 +1,6 @@ set(gwenviewlib_SRCS abstractdocumentimpl.cpp + abstractimageoperation.cpp archiveutils.cpp document.cpp documentfactory.cpp @@ -16,6 +17,7 @@ sorteddirmodel.cpp thumbnailview.cpp transupp.c + transformimageoperation.cpp ) kde4_automoc(${gwenviewlib_SRCS})