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

List:       kde-commits
Subject:    branches/extragear/graphics
From:       Michael Georg Hansen <mike () mghansen ! de>
Date:       2010-08-28 16:35:19
Message-ID: 20100828163519.52184AC86C () svn ! kde ! org
[Download RAW message or body]

SVN commit 1169198 by mghansen:

Make the sticky mode work in the image properties.



 M  +10 -1     digikam/libs/imageproperties/imagepropertiesgpstab.cpp  
 M  +8 -0      libkmap/libkmap/kmap_primitives.h  
 M  +64 -2     libkmap/libkmap/kmap_widget.cpp  
 M  +6 -0      libkmap/libkmap/kmap_widget.h  


--- branches/extragear/graphics/digikam/libs/imageproperties/imagepropertiesgpstab.cpp \
#1169197:1169198 @@ -122,6 +122,8 @@
     d->map                    = new KMap::KMapWidget(mapPanel);
     d->map->setAvailableMouseModes(KMap::MouseModePan|KMap::MouseModeZoom);
     d->map->setVisibleMouseModes(KMap::MouseModePan|KMap::MouseModeZoom);
+    d->map->setEnabledExtraActions(KMap::ExtraActionSticky);
+    d->map->setVisibleExtraActions(KMap::ExtraActionSticky);
     vlay2->addWidget(d->map);
     vlay2->setMargin(0);
     vlay2->setSpacing(0);
@@ -361,7 +363,7 @@
     {
         setEnabled(false);
     }
-    else if (list.count() >= 1)
+    else if (list.count() == 1)
     {
         if (!list.first().hasAltitude)
             d->altitude->setText("Undefined");
@@ -387,6 +389,13 @@
         ImageGPSItem* const currentImageGPSItem = new \
ImageGPSItem(d->gpsInfoList.at(i));  d->itemModel->appendRow(currentImageGPSItem);
     }
+
+    if (!d->map->getStickyModeState())
+    {
+        // TODO: adjust the zoom and map boundaries to show all images
+        const GPSInfo firstInfo = d->gpsInfoList.first();
+        d->map->setCenter(KMap::GeoCoordinates(firstInfo.latitude, \
firstInfo.longitude));  }
+}
 
 }  // namespace Digikam
--- branches/extragear/graphics/libkmap/libkmap/kmap_primitives.h #1169197:1169198
@@ -87,6 +87,14 @@
 Q_DECLARE_FLAGS(MouseModes, MouseMode)
 Q_DECLARE_OPERATORS_FOR_FLAGS(MouseModes);
 
+enum ExtraAction
+{
+    ExtraActionSticky = 1
+};
+
+Q_DECLARE_FLAGS(ExtraActions, ExtraAction)
+Q_DECLARE_OPERATORS_FOR_FLAGS(ExtraActions);
+
 enum DisplayedRectangles
 {
     SelectionRectangle = 0,
--- branches/extragear/graphics/libkmap/libkmap/kmap_widget.cpp #1169197:1169198
@@ -164,7 +164,11 @@
         activeState(false),
         hasSelection(false),
         availableMouseModes(0),
-        visibleMouseModes(0)
+        visibleMouseModes(0),
+        availableExtraActions(0),
+        visibleExtraActions(0),
+        actionStickyMode(0),
+        buttonStickyMode(0)
     {
     }
 
@@ -238,6 +242,11 @@
     bool                    hasSelection;
     MouseModes              availableMouseModes;
     MouseModes              visibleMouseModes;
+
+    ExtraActions            availableExtraActions;
+    ExtraActions            visibleExtraActions;
+    KAction*                actionStickyMode;
+    QToolButton*            buttonStickyMode;
 };
 
 KMapWidget::KMapWidget(QWidget* const parent)
@@ -358,6 +367,12 @@
     d->actionSetSelectThumbnailMode->setToolTip(i18n("Select images"));
     d->actionSetSelectThumbnailMode->setIcon(SmallIcon("edit-select"));
 
+    d->actionStickyMode = new KAction(this);
+    d->actionStickyMode->setCheckable(true);
+    d->actionStickyMode->setToolTip(i18n("Lock the map position"));
+    connect(d->actionStickyMode, SIGNAL(triggered(const bool)),
+            this, SLOT(slotStickyModeChanged()));
+
     // TODO: for later actions
 //     action->setToolTip(i18n("Zoom into a group"));
 //     action->setIcon(SmallIcon("page-zoom"));
@@ -404,7 +419,6 @@
     connect(d->actionRemoveCurrentSelection, SIGNAL(triggered()),
             this, SLOT(slotRemoveCurrentSelection()));
 
-        
 }
 
 void KMapWidget::createActionsForBackendSelection()
@@ -678,6 +692,10 @@
     group->writeEntry("Grouping Radius", d->groupingRadius);
     group->writeEntry("Edit Grouping Radius", d->editGroupingRadius);
     group->writeEntry("In Edit Mode", s->inEditMode);
+    if (d->visibleExtraActions.testFlag(ExtraActionSticky))
+    {
+        group->writeEntry("Sticky Mode State", d->actionStickyMode->isChecked());
+    }
 
     for (int i=0; i<d->loadedBackends.size(); ++i)
     {
@@ -722,6 +740,7 @@
         d->loadedBackends.at(i)->readSettingsFromGroup(group);
     }
 
+    d->actionStickyMode->setChecked(group->readEntry("Sticky Mode State", \
d->actionStickyMode->isChecked()));  slotUpdateActionsEnabled();
 }
 
@@ -845,9 +864,13 @@
         d->setSelectThumbnailMode = new QToolButton(d->mouseModesHolder);
         d->setSelectThumbnailMode->setDefaultAction(d->actionSetSelectThumbnailMode);
  
+        d->buttonStickyMode = new QToolButton(d->controlWidget);
+        d->buttonStickyMode->setDefaultAction(d->actionStickyMode);
+
         d->hBoxForAdditionalControlWidgetItems = new KHBox(d->controlWidget);
 
         setVisibleMouseModes(d->visibleMouseModes);
+        setVisibleExtraActions(d->visibleExtraActions);
 
         // add stretch after the controls:
         QHBoxLayout* const hBoxLayout = \
reinterpret_cast<QHBoxLayout*>(d->controlWidget->layout()); @@ -892,6 +915,9 @@
     d->actionSetFilterMode->setEnabled(d->availableMouseModes.testFlag(MouseModeFilter));
                
     d->actionRemoveFilterMode->setEnabled(d->availableMouseModes.testFlag(MouseModeFilter));
                
     d->actionSetSelectThumbnailMode->setEnabled(d->availableMouseModes.testFlag(MouseModeSelectThumbnail));
 +
+    d->actionStickyMode->setEnabled(d->availableExtraActions.testFlag(ExtraActionSticky));
 +    d->actionStickyMode->setIcon(SmallIcon(d->actionStickyMode->isChecked()?"object-locked":"object-unlocked"));
  }
 
 void KMapWidget::slotChangeBackend(QAction* action)
@@ -2323,5 +2349,41 @@
     d->availableMouseModes = mouseModes;
 }
 
+bool KMapWidget::getStickyModeState() const
+{
+    return d->actionStickyMode->isChecked();
+}
+
+void KMapWidget::setStickyModeState(const bool state)
+{
+    d->actionStickyMode->setChecked(state);
+    slotUpdateActionsEnabled();
+}
+
+void KMapWidget::setVisibleExtraActions(const ExtraActions actions)
+{
+    d->visibleExtraActions = actions;
+
+    if (d->buttonStickyMode)
+    {
+        d->buttonStickyMode->setVisible(actions.testFlag(ExtraActionSticky));
+    }
+
+    slotUpdateActionsEnabled();
+}
+
+void KMapWidget::setEnabledExtraActions(const ExtraActions actions)
+{
+    d->availableExtraActions = actions;
+
+    slotUpdateActionsEnabled();
+}
+
+void KMapWidget::slotStickyModeChanged()
+{
+    slotUpdateActionsEnabled();
+    emit(signalStickyModeChanged());
+}
+
 } /* namespace KMap */
 
--- branches/extragear/graphics/libkmap/libkmap/kmap_widget.h #1169197:1169198
@@ -122,6 +122,10 @@
     bool getSelectionStatus() const;
     void setActive(const bool state);
     bool getActiveState();
+    bool getStickyModeState() const;
+    void setStickyModeState(const bool state);
+    void setVisibleExtraActions(const ExtraActions actions);
+    void setEnabledExtraActions(const ExtraActions actions);
  
 public Q_SLOTS:
 
@@ -140,6 +144,7 @@
     void slotRemoveCurrentSelection();
     void slotRemoveCurrentFilter();
     void stopThumbnailTimer();
+    void slotStickyModeChanged();
 
 Q_SIGNALS:
 
@@ -149,6 +154,7 @@
     void signalNewSelectionFromMap();
     void signalRemoveCurrentSelection();
     void signalRemoveCurrentFilter();
+    void signalStickyModeChanged();
 
 public:
 


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

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