[Uml-devel] branches/work/soc-umbrello/umbrello

Andi Fischer andi.fischer at hispeed.ch
Mon Jun 27 14:49:04 UTC 2011


SVN commit 1238510 by fischer:

SVN commit 1238262 by lepagevalleeemmanuel:
"Remove the old buggy zoom slider with a better statusbar widget" also applied to branch.



 M  +2 -1      CMakeLists.txt  
 D             kplayerslideraction.cpp  
 D             kplayerslideraction.h  
 M  +0 -2      umbrelloui.rc  
 M  +81 -17    uml.cpp  
 M  +16 -2     uml.h  
 M  +1 -0      umlview.cpp  
 A             widgets/statusbartoolbutton.cpp   [License: GPL (v2+)]
 A             widgets/statusbartoolbutton.h   [License: GPL (v2+)]


--- branches/work/soc-umbrello/umbrello/CMakeLists.txt #1238509:1238510
@@ -372,6 +372,7 @@
     widgets/widgetbase.cpp
     widgets/widgethandle.cpp
     widgets/widgetlist_utils.cpp
+    widgets/statusbartoolbutton.cpp
 )
 
 set(libcontroller_SRCS
@@ -410,7 +411,6 @@
     foreignkeyconstraint.cpp
     icon_utils.cpp
     import_rose.cpp
-    kplayerslideraction.cpp
     listpopupmenu.cpp
     main.cpp
     model_utils.cpp
@@ -493,3 +493,4 @@
     DESTINATION ${DATA_INSTALL_DIR}/umbrello )
 
 kde4_install_icons( ${ICON_INSTALL_DIR} )
+
--- branches/work/soc-umbrello/umbrello/umbrelloui.rc #1238509:1238510
@@ -81,7 +81,5 @@
   </Menu>
 </MenuBar>
 <ToolBar name="mainToolBar" fullWidth="true" newline="true">
-  <Action name="popup_zoom"/>
-  <Action name="zoom100"/>
 </ToolBar>
 </kpartgui>
--- branches/work/soc-umbrello/umbrello/uml.cpp #1238509:1238510
@@ -18,12 +18,12 @@
 #include "worktoolbar.h"
 #include "umlviewimageexporter.h"
 #include "umlviewimageexporterall.h"
-#include "kplayerslideraction.h"
 #include "docwindow.h"
 #include "optionstate.h"
 #include "cmdlineexportallviewsevent.h"
 #include "cmds.h"
 #include "umbrellosettings.h"
+#include "statusbartoolbutton.h"
 // code generation
 #include "codegenerator.h"
 #include "codegenerationpolicy.h"
@@ -65,7 +65,6 @@
 #include <kmenubar.h>
 #include <kmessagebox.h>
 #include <kstandarddirs.h>
-#include <kstatusbar.h>
 #include <ktip.h>
 #include <ktabwidget.h>
 #include <kactionmenu.h>
@@ -74,6 +73,7 @@
 #include <kapplication.h>
 #include <kdeprintdialog.h>
 #include <kundostack.h>
+#include <kstatusbar.h>
 
 // qt includes
 #include <QtCore/QPointer>
@@ -90,6 +90,8 @@
 #include <QtGui/QPrinter>
 #include <QtGui/QPrintDialog>
 #include <QtGui/QUndoView>
+#include <QtGui/QPushButton>
+#include <QtGui/QLabel>
 
 /** Static pointer, holding the last created instance. */
 UMLApp* UMLApp::s_instance;
@@ -445,11 +447,6 @@
     viewExportImage->setEnabled(false);
     viewProperties->setEnabled(false);
 
-    zoomAction = new KPlayerPopupSliderAction(this, SLOT(slotZoomSliderMoved(int)), this);
-    zoomAction->setText(i18n("&Zoom Slider"));
-    zoomAction->setIcon(Icon_Utils::SmallIcon(Icon_Utils::it_Zoom_Slider));
-    zoomAction->setShortcuts(KShortcut(Qt::Key_F9));
-    actionCollection()->addAction("popup_zoom", zoomAction);
     zoom100Action = actionCollection()->addAction("zoom100");
     zoom100Action->setIcon(Icon_Utils::SmallIcon(Icon_Utils::it_Zoom_100));
     zoom100Action->setText(i18n("Z&oom to 100%"));
@@ -541,14 +538,13 @@
 }
 
 /**
- * Connected to by the KPlayerSliderAction zoomAction, a value of between 300
+ * Connected to by the  zoomAction, a value of between 300
  * and 2200 is scaled to zoom to between 9% and 525%.
- * The min and max values of the slider are hard coded in KPlayerSliderAction for now.
+ * The min and max values of the slider are hard coded in the statusbar slider.
  */
 void UMLApp::slotZoomSliderMoved(int value)
 {
-    int zoom = (int)(value*0.01);
-    currentView()->setZoom(zoom*zoom);
+    setZoom(value);
 }
 
 /**
@@ -560,6 +556,22 @@
 }
 
 /**
+ * Decrease the zoom factor of the current diagram.
+ */
+void UMLApp::slotZoomOut()
+{
+    setZoom(currentView()->zoom()-5);
+}
+
+/**
+ * Increase the zoom factor of the current diagram.
+ */
+void UMLApp::slotZoomIn()
+{
+    setZoom(currentView()->zoom()+5);
+}
+
+/**
  * Set the zoom factor of the current diagram.
  *
  * @param zoom  Zoom factor in percentage.
@@ -567,6 +579,7 @@
 void UMLApp::setZoom(int zoom)
 {
     currentView()->setZoom(zoom);
+    m_pZoomSlider->setValue(zoom);
 }
 
 /**
@@ -578,7 +591,7 @@
 {
     QVariant var = action->data();
     if (var.canConvert<int>()) {
-        currentView()->setZoom(var.toInt());
+        setZoom(var.toInt());
     }
 }
 
@@ -638,8 +651,57 @@
  */
 void UMLApp::initStatusBar()
 {
-    statusBar()->insertPermanentItem( i18nc("init status bar", "Ready"), 1 );
     connect(m_doc, SIGNAL( sigWriteToStatusBar(const QString &) ), this, SLOT( slotStatusMsg(const QString &) ));
+
+    m_statusBarMessage = new QLabel(i18nc("init status bar", "Ready"));
+    statusBar()->addWidget(m_statusBarMessage);
+
+    QWidget* defaultZoomWdg = new QWidget(this);
+    QHBoxLayout* zoomLayout = new QHBoxLayout(defaultZoomWdg);
+    zoomLayout->setContentsMargins(0,0,0,0);
+    zoomLayout->setSpacing(0);
+    zoomLayout->addItem(new QSpacerItem(0, 20, QSizePolicy::Expanding, QSizePolicy::Minimum));
+
+    m_pZoomFitSBTB = new StatusBarToolButton(this);
+    m_pZoomFitSBTB->setText("Fit");
+    m_pZoomFitSBTB->setGroupPosition(StatusBarToolButton::GroupLeft);
+    zoomLayout->addWidget(m_pZoomFitSBTB);
+    m_pZoomFitSBTB->setContentsMargins(0,0,0,0);
+    m_pZoomFitSBTB->setDisabled(true);
+
+    m_pZoomFullSBTB = new StatusBarToolButton(this);
+    m_pZoomFullSBTB->setText("100%");
+    m_pZoomFullSBTB->setGroupPosition(StatusBarToolButton::GroupRight);
+    m_pZoomFullSBTB->setContentsMargins(0,0,0,0);
+    zoomLayout->addWidget(m_pZoomFullSBTB);
+    connect(m_pZoomFullSBTB, SIGNAL( clicked() ), this, SLOT( slotZoom100() ));
+
+    statusBar()->addPermanentWidget(defaultZoomWdg);
+
+    m_pZoomOutPB = new QPushButton(this);
+    m_pZoomOutPB->setIcon(KIcon("zoom-out"));
+    m_pZoomOutPB->setFlat(true);
+    m_pZoomOutPB->setMaximumSize(30,30);
+    statusBar()->addPermanentWidget(m_pZoomOutPB);
+    connect(m_pZoomOutPB, SIGNAL( clicked() ), this, SLOT( slotZoomOut() ));
+
+    m_pZoomSlider = new QSlider(Qt::Horizontal, this);
+    m_pZoomSlider->setMaximumSize(100,50);
+    m_pZoomSlider->setMinimum (20);
+    m_pZoomSlider->setMaximum (480);
+    //m_pZoomSlider->setPageStep (1000);
+    m_pZoomSlider->setValue (100);
+    m_pZoomSlider->setContentsMargins(0,0,0,0);
+    connect(m_pZoomSlider, SIGNAL( valueChanged( int ) ), this, SLOT( slotZoomSliderMoved(int) ));
+
+    statusBar()->addPermanentWidget(m_pZoomSlider);
+
+    m_pZoomInPB = new QPushButton(this);
+    m_pZoomInPB->setIcon(KIcon("zoom-in"));
+    m_pZoomInPB->setFlat(true);
+    m_pZoomInPB->setMaximumSize(30,30);
+    statusBar()->addPermanentWidget(m_pZoomInPB);
+    connect(m_pZoomInPB, SIGNAL( clicked() ), this, SLOT( slotZoomIn() ));
 }
 
 /**
@@ -1316,7 +1378,7 @@
 void UMLApp::slotStatusMsg(const QString &text)
 {
     // change status message permanently
-    statusBar()->changeItem( text, 1 );
+    m_statusBarMessage->setText(text);
 }
 
 /**
@@ -1324,7 +1386,7 @@
  */
 void UMLApp::resetStatusMsg()
 {
-    statusBar()->changeItem( i18nc("reset status bar", "Ready."), 1 );
+    m_statusBarMessage->setText( i18nc("reset status bar", "Ready."));
 }
 
 /**
@@ -2631,7 +2693,9 @@
     if (lvitem) {
         m_listView->setCurrentItem(lvitem);
     }
-    DEBUG(DBG_SRC) << "name=" << view->umlScene()->name() << ", isOpen=" << view->umlScene()->isOpen();
+    DEBUG(DBG_SRC) << "name=" << view->umlScene()->name()
+                   << ", isOpen=" << view->umlScene()->isOpen()
+                   << ", id=" << ID2STR(view->umlScene()->getID());
 }
 
 /**
@@ -2812,7 +2876,7 @@
  */
 QString UMLApp::statusBarMsg()
 {
-    return statusBar()->itemText(1);
+    return m_statusBarMessage->text();
 }
 
 /**
--- branches/work/soc-umbrello/umbrello/uml.h #1238509:1238510
@@ -31,8 +31,8 @@
 class SettingsDlg;
 class UMLViewImageExporterAll;
 class RefactoringAssistant;
-class KPlayerPopupSliderAction;
 class XhtmlGenerator;
+class StatusBarToolButton;
 
 // KDE forward declarations
 class KActionMenu;
@@ -55,6 +55,9 @@
 class QMimeData;
 class QUndoCommand;
 class QUndoView;
+class QPushButton;
+class QLabel;
+class QSlider;
 
 /**
  * The base class for UML application windows. It sets up the main
@@ -246,6 +249,8 @@
     void slotSetZoom(QAction* action);
     void slotZoomSliderMoved(int value);
     void slotZoom100();
+    void slotZoomOut();
+    void slotZoomIn();
 
     void setupZoomMenu();
 
@@ -358,7 +363,6 @@
     QAction* viewProperties;
 
     QAction* zoom100Action;
-    KPlayerPopupSliderAction* zoomAction;
 
     QAction* m_langAct[Uml::ProgrammingLanguage::Reserved];
     KAction* deleteSelectedWidget;
@@ -398,6 +402,16 @@
     UMLViewImageExporterAll* m_imageExporterAll;  ///< Used to export all the views.
 
     /**
+     * Statusbar items
+     */
+    QPushButton* m_pZoomOutPB;
+    QPushButton* m_pZoomInPB;
+    StatusBarToolButton* m_pZoomFitSBTB;
+    StatusBarToolButton* m_pZoomFullSBTB;
+    QSlider* m_pZoomSlider;
+    QLabel* m_statusBarMessage;
+
+    /**
      * The running XHTML documentation generator. Null when no generation is running.
      */
     XhtmlGenerator* m_xhtmlGenerator;
--- branches/work/soc-umbrello/umbrello/umlview.cpp #1238509:1238510
@@ -225,6 +225,7 @@
     setCenter(newCenter);
 
     DEBUG(DBG_SRC) << "currentZoom=" << currentZoom();
+    UMLApp::app()->slotZoomSliderMoved(currentZoom());
 }
 
 /**




More information about the umbrello-devel mailing list