[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/extragear/graphics/kipi-plugins/gpssync2
From:       Michael Georg Hansen <mike () mghansen ! de>
Date:       2010-06-03 21:12:09
Message-ID: 20100603211209.729BDAC8CB () svn ! kde ! org
[Download RAW message or body]

SVN commit 1134303 by mghansen:

Undo/redo names now include the name of the object to which the images were snapped.



 M  +44 -13    gpsbookmarkowner.cpp  
 M  +11 -4     gpsbookmarkowner.h  
 M  +7 -2      gpssyncdialog.cpp  
 M  +1 -1      searchbackend.cpp  
 M  +45 -13    searchwidget.cpp  
 M  +12 -4     searchwidget.h  


--- branches/extragear/graphics/kipi-plugins/gpssync2/gpsbookmarkowner.cpp \
#1134302:1134303 @@ -36,6 +36,8 @@
 // local includes
 
 #include "inputboxnocancel.h"
+#include "gpsundocommand.h"
+#include "kipiimagemodel.h"
 
 namespace KIPIGPSSyncPlugin
 {
@@ -64,7 +66,7 @@
     QString             lastTitle;
 };
 
-GPSBookmarkOwner::GPSBookmarkOwner(QWidget* const parent)
+GPSBookmarkOwner::GPSBookmarkOwner(KipiImageModel* const kipiImageModel, QWidget* \
const parent)  : d(new GPSBookmarkOwnerPrivate())
 {
     d->parent = parent;
@@ -77,7 +79,7 @@
     d->bookmarkMenu = new KMenu(parent);
     d->bookmarkMenuController = new KBookmarkMenu(d->bookmarkManager, this, \
d->bookmarkMenu, d->actionCollection);  
-    d->bookmarkModelHelper = new GPSBookmarkModelHelper(d->bookmarkManager, this);
+    d->bookmarkModelHelper = new GPSBookmarkModelHelper(d->bookmarkManager, \
kipiImageModel, this);  }
 
 GPSBookmarkOwner::~GPSBookmarkOwner()
@@ -170,6 +172,7 @@
 
     QStandardItemModel* model;
     KBookmarkManager* bookmarkManager;
+    KipiImageModel* kipiImageModel;
     QPixmap pixmap;
     bool visible;
 
@@ -177,11 +180,12 @@
     
 };
 
-GPSBookmarkModelHelper::GPSBookmarkModelHelper(KBookmarkManager* const \
bookmarkManager, QObject* const parent) \
+GPSBookmarkModelHelper::GPSBookmarkModelHelper(KBookmarkManager* const \
bookmarkManager, KipiImageModel* const kipiImageModel, QObject* const parent)  : \
WMWModelHelper(parent), d(new GPSBookmarkModelHelperPrivate())  {
     d->model = new QStandardItemModel(this);
     d->bookmarkManager = bookmarkManager;
+    d->kipiImageModel = kipiImageModel;
     const KUrl markerUrl = KStandardDirs::locate("data", \
"gpssync2/bookmarks-marker.png");  d->pixmap = QPixmap(markerUrl.toLocalFile());
 
@@ -247,6 +251,7 @@
             if (okay)
             {
                 QStandardItem* const item = new QStandardItem();
+                item->setData(currentBookmark.text(), Qt::DisplayRole);
                 item->setData(QVariant::fromValue(coordinates), \
GPSBookmarkModelHelper::CoordinatesRole);  
                 model->appendRow(item);
@@ -270,26 +275,52 @@
     return d->bookmarkModelHelper;
 }
 
-bool GPSBookmarkModelHelper::visible() const
-{
-    return d->visible;
-}
-
 void GPSBookmarkModelHelper::setVisible(const bool state)
 {
     d->visible = state;
     emit(signalVisibilityChanged());
 }
 
-bool GPSBookmarkModelHelper::snaps() const
-{
-    return true;
-}
-
 void GPSBookmarkOwner::setPositionAndTitle(const WMW2::WMWGeoCoordinate& \
coordinates, const QString& title)  {
     d->lastCoordinates = coordinates;
     d->lastTitle = title;
 }
 
+WMW2::WMWModelHelper::Flags GPSBookmarkModelHelper::modelFlags() const
+{
+    return FlagSnaps|(d->visible?FlagVisible:FlagNull);
+}
+
+WMW2::WMWModelHelper::Flags GPSBookmarkModelHelper::itemFlags(const QModelIndex& \
index) const +{
+    return FlagVisible|FlagSnaps;
+}
+
+void GPSBookmarkModelHelper::snapItemsTo(const QModelIndex& targetIndex, const \
QList<QModelIndex>& snappedIndices) +{
+    GPSUndoCommand* const undoCommand = new GPSUndoCommand();
+
+    WMW2::WMWGeoCoordinate targetCoordinates;
+    if (!itemCoordinates(targetIndex, &targetCoordinates))
+        return;
+
+    for (int i=0; i<snappedIndices.count(); ++i)
+    {
+        const QPersistentModelIndex itemIndex = snappedIndices.at(i);
+        GPSImageItem* const item = \
static_cast<GPSImageItem*>(d->kipiImageModel->itemFromIndex(itemIndex)); +        \
const GPSDataContainer oldData = item->gpsData(); +        GPSDataContainer newData = \
oldData; +        newData.setCoordinates(targetCoordinates);
+        item->setGPSData(newData);
+
+        undoCommand->addUndoInfo(GPSUndoCommand::UndoInfo(itemIndex, oldData, \
newData)); +    }
+    kDebug()<<targetIndex.data(Qt::DisplayRole).toString();
+    undoCommand->setText(i18np("1 image snapped to %2",
+                               "%1 images snapped to %2", snappedIndices.count(), \
targetIndex.data(Qt::DisplayRole).toString())); +
+    emit(signalUndoCommand(undoCommand));
+}
+
 }  // namespace KIPIGPSSyncPlugin
--- branches/extragear/graphics/kipi-plugins/gpssync2/gpsbookmarkowner.h \
#1134302:1134303 @@ -36,6 +36,8 @@
 namespace KIPIGPSSyncPlugin
 {
 
+class KipiImageModel;
+class GPSUndoCommand;
 class GPSBookmarkModelHelperPrivate;
 class GPSBookmarkModelHelper : public WMW2::WMWModelHelper
 {
@@ -46,21 +48,26 @@
         CoordinatesRole = Qt::UserRole + 1
     };
 
-    GPSBookmarkModelHelper(KBookmarkManager* const bookmarkManager, QObject* const \
parent = 0); +    GPSBookmarkModelHelper(KBookmarkManager* const bookmarkManager, \
KipiImageModel* const kipiImageModel, QObject* const parent = 0);  virtual \
~GPSBookmarkModelHelper();  
     virtual QAbstractItemModel* model() const;
     virtual QItemSelectionModel* selectionModel() const;
     virtual bool itemCoordinates(const QModelIndex& index, WMW2::WMWGeoCoordinate* \
                const coordinates) const;
     virtual QPixmap itemIcon(const QModelIndex& index, QPoint* const offset) const;
-    virtual bool visible() const;
-    virtual bool snaps() const;
+    virtual Flags modelFlags() const;
+    virtual Flags itemFlags(const QModelIndex& index) const;
+    virtual void snapItemsTo(const QModelIndex& targetIndex, const \
QList<QModelIndex>& snappedIndices);  
     void setVisible(const bool state);
 
 private Q_SLOTS:
     void slotUpdateBookmarksModel();
 
+
+Q_SIGNALS:
+    void signalUndoCommand(GPSUndoCommand* undoCommand);
+
 private:
     GPSBookmarkModelHelperPrivate* const d;
 };
@@ -71,7 +78,7 @@
     Q_OBJECT
 
 public:
-    GPSBookmarkOwner(QWidget* const parent);
+    GPSBookmarkOwner(KipiImageModel* const kipiImageModel, QWidget* const parent);
     virtual ~GPSBookmarkOwner();
 
     virtual bool supportsTabs() const;
--- branches/extragear/graphics/kipi-plugins/gpssync2/gpssyncdialog.cpp \
#1134302:1134303 @@ -194,7 +194,7 @@
     d->representativeChooser = new GPSSyncWMWRepresentativeChooser(d->imageModel, \
this);  
     d->undoStack = new KUndoStack(this);
-    d->bookmarkOwner = new GPSBookmarkOwner(this);
+    d->bookmarkOwner = new GPSBookmarkOwner(d->imageModel, this);
 
     d->actionBookmarkVisibility = new KAction(this);
     d->actionBookmarkVisibility->setIcon(SmallIcon("bookmarks"));
@@ -331,7 +331,7 @@
     d->rgWidget = new GPSReverseGeocodingWidget(d->imageModel, d->selectionModel, \
d->stackedWidget);  d->stackedWidget->addWidget(d->rgWidget);
 
-    d->searchWidget = new SearchWidget(d->mapWidget, d->bookmarkOwner, \
d->stackedWidget); +    d->searchWidget = new SearchWidget(d->mapWidget, \
d->bookmarkOwner, d->imageModel, d->stackedWidget);  \
d->mapWidget->addUngroupedModel(d->searchWidget->getModelHelper());  \
d->stackedWidget->addWidget(d->searchWidget);  
@@ -392,6 +392,8 @@
     connect(d->rgWidget, SIGNAL(signalUndoCommand(GPSUndoCommand*)),
             this, SLOT(slotGPSUndoCommand(GPSUndoCommand*)));
 
+    connect(d->searchWidget, SIGNAL(signalUndoCommand(GPSUndoCommand*)),
+            this, SLOT(slotGPSUndoCommand(GPSUndoCommand*)));
 
     connect(d->listViewContextMenu, SIGNAL(signalUndoCommand(GPSUndoCommand*)),
             this, SLOT(slotGPSUndoCommand(GPSUndoCommand*)));
@@ -402,6 +404,9 @@
     connect(d->tabBar, SIGNAL(currentChanged(int)),
             this, SLOT(slotCurrentTabChanged(int)));
 
+    connect(d->bookmarkOwner->bookmarkModelHelper(), \
SIGNAL(signalUndoCommand(GPSUndoCommand*)), +            this, \
SLOT(slotGPSUndoCommand(GPSUndoCommand*))); +
     readSettings();
 }
 
--- branches/extragear/graphics/kipi-plugins/gpssync2/searchbackend.cpp \
#1134302:1134303 @@ -257,7 +257,7 @@
 QList<QPair<QString, QString> > SearchBackend::getBackends() const
 {
     QList<QPair<QString, QString> > resultList;
-    resultList << QPair<QString, QString>(i18n("geonames.org"), "geonames.org");
+    resultList << QPair<QString, QString>(i18n("GeoNames"), "geonames.org");
     resultList << QPair<QString, QString>(i18n("OSM"), "osm");
 
     return resultList;
--- branches/extragear/graphics/kipi-plugins/gpssync2/searchwidget.cpp \
#1134302:1134303 @@ -48,6 +48,8 @@
 #include <worldmapwidget2/worldmapwidget2.h>
 #include "gpssync2_common.h"
 #include "gpsbookmarkowner.h"
+#include "gpsundocommand.h"
+#include "kipiimagemodel.h"
 
 namespace KIPIGPSSyncPlugin
 {
@@ -64,6 +66,7 @@
 
     WMW2::WorldMapWidget2* mapWidget;
     GPSBookmarkOwner* gpsBookmarkOwner;
+    KipiImageModel* kipiImageModel;
     KLineEdit* searchTermLineEdit;
     QPushButton* searchButton;
     SearchBackend* searchBackend;
@@ -84,16 +87,17 @@
     KAction* actionBookmark;
 };
 
-SearchWidget::SearchWidget(WMW2::WorldMapWidget2* const mapWidget, GPSBookmarkOwner* \
const gpsBookmarkOwner, QWidget* parent) \
+SearchWidget::SearchWidget(WMW2::WorldMapWidget2* const mapWidget, GPSBookmarkOwner* \
const gpsBookmarkOwner, KipiImageModel* const kipiImageModel, QWidget* parent)  : \
QWidget(parent), d(new SearchWidgetPrivate())  {
     d->mapWidget = mapWidget;
     d->gpsBookmarkOwner = gpsBookmarkOwner;
+    d->kipiImageModel = kipiImageModel;
     d->searchBackend = new SearchBackend(this);
     d->searchResultsModel = new SearchResultModel(this);
     d->searchResultsSelectionModel = new QItemSelectionModel(d->searchResultsModel);
     d->searchResultsModel->setSelectionModel(d->searchResultsSelectionModel);
-    d->searchResultModelHelper = new SearchResultModelHelper(d->searchResultsModel, \
d->searchResultsSelectionModel, this); +    d->searchResultModelHelper = new \
SearchResultModelHelper(d->searchResultsModel, d->searchResultsSelectionModel, \
d->kipiImageModel, this);  
     d->mainVBox = new QVBoxLayout(this);
     setLayout(d->mainVBox);
@@ -178,6 +182,9 @@
     connect(d->actionCopyCoordinates, SIGNAL(triggered(bool)),
             this, SLOT(slotCopyCoordinates()));
 
+    connect(d->searchResultModelHelper, SIGNAL(signalUndoCommand(GPSUndoCommand*)),
+            this, SIGNAL(signalUndoCommand(GPSUndoCommand*)));
+
     d->treeView->installEventFilter(this);
 
     slotUpdateUIState();
@@ -381,14 +388,16 @@
 
     SearchResultModel* model;
     QItemSelectionModel* selectionModel;
+    KipiImageModel* imageModel;
     bool visible;
 };
 
-SearchResultModelHelper::SearchResultModelHelper(SearchResultModel* const \
resultModel, QItemSelectionModel* const selectionModel, QObject* const parent) \
+SearchResultModelHelper::SearchResultModelHelper(SearchResultModel* const \
resultModel, QItemSelectionModel* const selectionModel, KipiImageModel* const \
imageModel, QObject* const parent)  : WMW2::WMWModelHelper(parent), d(new \
SearchResultModelHelperPrivate())  {
     d->model = resultModel;
     d->selectionModel = selectionModel;
+    d->imageModel = imageModel;
 }
 
 SearchResultModelHelper::~SearchResultModelHelper()
@@ -420,16 +429,6 @@
     return d->model->getMarkerIcon(index, offset);
 }
 
-bool SearchResultModelHelper::visible() const
-{
-    return d->visible;
-}
-
-bool SearchResultModelHelper::snaps() const
-{
-    return true;
-}
-
 SearchResultModel::SearchResultItem SearchResultModel::resultItem(const QModelIndex& \
index) const  {
     return d->searchResults.at(index.row());
@@ -576,4 +575,37 @@
     }
 }
 
+WMW2::WMWModelHelper::Flags SearchResultModelHelper::modelFlags() const
+{
+    return FlagSnaps|(d->visible?FlagVisible:FlagNull);
+}
+
+WMW2::WMWModelHelper::Flags SearchResultModelHelper::itemFlags(const QModelIndex& \
index) const +{
+    return FlagVisible|FlagSnaps;
+}
+
+void SearchResultModelHelper::snapItemsTo(const QModelIndex& targetIndex, const \
QList<QModelIndex>& snappedIndices) +{
+    GPSUndoCommand* const undoCommand = new GPSUndoCommand();
+
+    SearchResultModel::SearchResultItem targetItem = \
d->model->resultItem(targetIndex); +    const WMW2::WMWGeoCoordinate& \
targetCoordinates = targetItem.result.coordinates; +    for (int i=0; \
i<snappedIndices.count(); ++i) +    {
+        const QPersistentModelIndex itemIndex = snappedIndices.at(i);
+        GPSImageItem* const item = \
static_cast<GPSImageItem*>(d->imageModel->itemFromIndex(itemIndex)); +        const \
GPSDataContainer oldData = item->gpsData(); +        GPSDataContainer newData = \
oldData; +        newData.setCoordinates(targetCoordinates);
+        item->setGPSData(newData);
+
+        undoCommand->addUndoInfo(GPSUndoCommand::UndoInfo(itemIndex, oldData, \
newData)); +    }
+    undoCommand->setText(i18np("1 image snapped to %2",
+                               "%1 images snapped to %2", snappedIndices.count(), \
targetItem.result.name)); +
+    emit(signalUndoCommand(undoCommand));
+}
+
 } /* KIPIGPSSyncPlugin */
--- branches/extragear/graphics/kipi-plugins/gpssync2/searchwidget.h #1134302:1134303
@@ -36,6 +36,7 @@
 {
 
 class GPSBookmarkOwner;
+class GPSUndoCommand;
 class SearchResultItem;
 class SearchResultModelPrivate;
 class SearchResultModel : public QAbstractItemModel
@@ -78,18 +79,22 @@
 {
 Q_OBJECT
 public:
-    SearchResultModelHelper(SearchResultModel* const resultModel, \
QItemSelectionModel* const selectionModel, QObject* const parent = 0); +    \
SearchResultModelHelper(SearchResultModel* const resultModel, QItemSelectionModel* \
const selectionModel, KipiImageModel* const imageModel, QObject* const parent = 0);  \
~SearchResultModelHelper();  
     virtual QAbstractItemModel* model() const;
     virtual QItemSelectionModel* selectionModel() const;
     virtual bool itemCoordinates(const QModelIndex& index, WMW2::WMWGeoCoordinate* \
                const coordinates) const;
     virtual QPixmap itemIcon(const QModelIndex& index, QPoint* const offset) const;
-    virtual bool visible() const;
-    virtual bool snaps() const;
+    virtual Flags modelFlags() const;
+    virtual Flags itemFlags(const QModelIndex& index) const;
+    virtual void snapItemsTo(const QModelIndex& targetIndex, const \
QList<QModelIndex>& snappedIndices);  
     void setVisibility(const bool state);
 
+Q_SIGNALS:
+    void signalUndoCommand(GPSUndoCommand* undoCommand);
+
 private:
     SearchResultModelHelperPrivate* const d;
 };
@@ -100,7 +105,7 @@
 Q_OBJECT
 
 public:
-    SearchWidget(WMW2::WorldMapWidget2* const mapWidget, GPSBookmarkOwner* const \
gpsBookmarkOwner, QWidget* parent = 0); +    SearchWidget(WMW2::WorldMapWidget2* \
const mapWidget, GPSBookmarkOwner* const gpsBookmarkOwner, KipiImageModel* const \
kipiImageModel, QWidget* parent = 0);  ~SearchWidget();
 
     WMW2::WMWModelHelper* getModelHelper();
@@ -119,6 +124,9 @@
 protected:
     virtual bool eventFilter(QObject *watched, QEvent *event);
 
+Q_SIGNALS:
+    void signalUndoCommand(GPSUndoCommand* undoCommand);
+
 private:
     SearchWidgetPrivate* const d;
 };


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic