-// Copyright (C) 2014-2017 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2020 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/ or
-// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
#include "ModuleBase_ListView.h"
#include <QAction>
#include <QApplication>
#include <QClipboard>
-#include <QListWidget>
#include <QWidget>
#ifndef WIN32
const int ATTRIBUTE_SELECTION_INDEX_ROLE = Qt::UserRole + 1;
-/**
-* Customization of a List Widget to make it to be placed on full width of container
-*/
-class CustomListWidget : public QListWidget
-{
-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);
- }
-
-#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
-};
-
//********************************************************************
ModuleBase_ListView::ModuleBase_ListView(QWidget* theParent, const QString& theObjectName,
const QString& theToolTip)
myListControl->setContextMenuPolicy(Qt::ActionsContextMenu);
connect(myListControl, SIGNAL(itemSelectionChanged()), SLOT(onListSelection()));
+ connect(myListControl, SIGNAL(activated()), this, SIGNAL(listActivated()));
}
//********************************************************************
}
}
+//********************************************************************
+void ModuleBase_ListView::selectIndices(const std::set<int>& theIndices)
+{
+ myListControl->clearSelection();
+ for (int i = 0; i < myListControl->count(); i++) {
+ QListWidgetItem* anItem = myListControl->item(i);
+ int aId = anItem->data(ATTRIBUTE_SELECTION_INDEX_ROLE).toInt();
+ if (theIndices.find(aId) != theIndices.end()) {
+ anItem->setSelected(true);
+ }
+ }
+}
+
//********************************************************************
void ModuleBase_ListView::removeSelectedItems()
{
QList<QListWidgetItem*> aItems = myListControl->selectedItems();
myCopyAction->setEnabled(!aItems.isEmpty());
myDeleteAction->setEnabled(!aItems.isEmpty());
-}
\ No newline at end of file
+}
+
+//********************************************************************
+bool ModuleBase_ListView::hasItem(const QString& theTextValue) const
+{
+ return myListControl->findItems(theTextValue, Qt::MatchExactly).length() > 0;
+}