Salome HOME
Fix for the issue #2808 : Documentation on the "Groups" panel. Added description...
[modules/shaper.git] / src / ModuleBase / ModuleBase_ListView.h
index 27c22622d3bd159efdbffcbc60f0cdd5669c1755..9fdc540adccb7de0cbb856d30ddd964f89b9b26d 100644 (file)
@@ -25,6 +25,8 @@
 
 #include <QModelIndex>
 #include <QObject>
+#include <QListWidget>
+#include <QTimer>
 
 #include <set>
 
@@ -32,6 +34,59 @@ class QAction;
 class QListWidget;
 class QWidget;
 
+
+/**
+* Customization of a List Widget to make it to be placed on full width of container
+*/
+class CustomListWidget : public QListWidget
+{
+  Q_OBJECT
+public:
+  /// Constructor
+  /// \param theParent a parent widget
+  CustomListWidget(QWidget* theParent)
+    : QListWidget(theParent)
+  {
+  }
+
+  /// Redefinition of virtual method
+  virtual QSize        sizeHint() const
+  {
+    int aHeight = 2 * QFontMetrics(font()).height();
+    QSize aSize = QListWidget::sizeHint();
+    return QSize(aSize.width(), aHeight);
+  }
+
+  /// Redefinition of virtual method
+  virtual QSize        minimumSizeHint() const
+  {
+    int aHeight = 4/*2*/ * QFontMetrics(font()).height();
+    QSize aSize = QListWidget::minimumSizeHint();
+    return QSize(aSize.width(), aHeight);
+  }
+
+signals:
+  void activated();
+
+protected:
+  virtual void mouseReleaseEvent(QMouseEvent* e) {
+    QListWidget::mouseReleaseEvent(e);
+    emit activated();
+  }
+
+#ifndef WIN32
+  // The code is necessary only for Linux because
+  //it can not update viewport on widget resize
+protected:
+  void resizeEvent(QResizeEvent* theEvent)
+  {
+    QListWidget::resizeEvent(theEvent);
+    QTimer::singleShot(5, viewport(), SLOT(repaint()));
+  }
+#endif
+};
+
+
 /**
 * \ingroup GUI
 * An extension of QListWidget to provide Undo/Redo functionality
@@ -56,6 +111,10 @@ public:
   /// \param theIndex an item internal index
   void addItem(const QString& theTextValue, const int theIndex);
 
+  /// Returns True if the control already contains an item with the given text
+  /// \param theTextValue tex of item to find
+  bool hasItem(const QString& theTextValue) const;
+
   /// Returns list of internal list view item indices
   /// \param theIndices an output container for indices
   void getSelectedIndices(std::set<int>& theIndices);
@@ -81,10 +140,13 @@ protected slots:
   /// Slot is called on selection of list of selected items
   void onListSelection();
 
+
 signals:
   /// Signal about delete action click
   void deleteActionClicked();
 
+  void listActivated();
+
 protected:
   QListWidget* myListControl; ///< List control