]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Fix for bug IPAL19326 (Qt4 porting. Preferences, Object Browser, Auto size for first...
authormzn <mzn@opencascade.com>
Fri, 4 Apr 2008 07:51:45 +0000 (07:51 +0000)
committermzn <mzn@opencascade.com>
Fri, 4 Apr 2008 07:51:45 +0000 (07:51 +0000)
src/LightApp/LightApp_Application.cxx
src/ObjBrowser/OB_Browser.cxx
src/ObjBrowser/OB_Browser.h
src/SUIT/SUIT_DataBrowser.cxx
src/SUIT/SUIT_DataBrowser.h
src/SalomeApp/SalomeApp_Application.cxx

index 91b2c5422da08eb02a64b39d520767dce842052d..caf16f521cc39c30eb6baea511146fa724dbcad7 100644 (file)
@@ -2012,20 +2012,20 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
   {
     if( param=="auto_size" || param=="auto_size_first" )
     {
-      // temporary commented
-      /*SUIT_DataBrowser* ob = objectBrowser();
+      SUIT_DataBrowser* ob = objectBrowser();
       if( !ob )
        return;
 
       bool autoSize = resMgr->booleanValue( "ObjectBrowser", "auto_size", false ),
            autoSizeFirst = resMgr->booleanValue( "ObjectBrowser", "auto_size_first", true );
-      ob->setWidthMode( autoSize ? QListView::Maximum : QListView::Manual );
-      ob->listView()->setColumnWidthMode( 0, autoSizeFirst ? QListView::Maximum : QListView::Manual );
-      if( autoSize )
-       for( int i=1; i<ob->listView()->columns(); i++ )
-         if( ob->listView()->columnWidth( i )>0 )
-           ob->listView()->adjustColumn( i );
-           updateObjectBrowser( false );*/
+      
+      ob->setAutoSizeFirstColumn(autoSizeFirst);
+      ob->setAutoSizeColumns(autoSize);
+
+      if ( autoSizeFirst )
+       ob->adjustFirstColumnWidth();
+      if ( autoSize )
+       ob->adjustColumnsWidth();
     }
     else if ( param == "auto_hide_search_tool" )
     {
index 3d6162f87f692a44efce0da5b9dd55e3ca291c1c..1e7528c7429874d1c780d6549284c15c80a4846f 100755 (executable)
@@ -37,6 +37,7 @@
 #include <QVBoxLayout>
 #include <QAbstractItemModel>
 #include <QAbstractItemDelegate>
+#include <QHeaderView>
 
 #include <time.h>
 
@@ -459,6 +460,25 @@ void OB_Browser::adjustWidth()
   myView->resizeColumnToContents( 0 );
 }
 
+/*!
+  \brief Adjust first column width to its contents.
+*/
+void OB_Browser::adjustFirstColumnWidth()
+{
+  myView->resizeColumnToContents( 0 );
+}
+
+/*!
+  \brief Adjust all columns width to its contents except the first column.
+*/
+void OB_Browser::adjustColumnsWidth()
+{
+  for ( int aCol = 1; aCol < myView->header()->count(); aCol++ ) {
+    if ( myView->columnWidth( aCol ) > 0 )
+      myView->resizeColumnToContents( aCol );
+  }
+}
+
 /*!
   \return SUIT object correspondint to item at position 'pos'
   \param pos - position
index 1979c81007d555d0daa8f85704ac5d30113b93cb..289b5ce6a5a936b9b6440b1ea21c66551a13162a 100755 (executable)
@@ -86,6 +86,8 @@ public:
   virtual void           setOpen( const QModelIndex& theObject, const bool theOpen = true );
 
   void                   adjustWidth();
+  void                   adjustFirstColumnWidth();
+  void                   adjustColumnsWidth();
 
   // san - To be revised or removed
   // QTreeView::indexAt() should be used
index 43680d59b362223a4f933cfc58777fc11dd693be..08376398fa69f371cb8b6e113acf309221ae3254 100644 (file)
@@ -128,6 +128,11 @@ void SUIT_DataBrowser::updateTree( SUIT_DataObject* obj, const bool autoOpen )
   if ( m ) {
     m->updateTree( obj );
     openLevels();
+
+    if (myAutoSizeFirstColumn)
+      adjustFirstColumnWidth();
+    if (myAutoSizeColumns)
+      adjustColumnsWidth();
   }
 }
 
@@ -263,6 +268,9 @@ void SUIT_DataBrowser::init( SUIT_DataObject* root )
   connect( treeView(), SIGNAL( sortingEnabled(bool ) ), 
           model(), SLOT( setSortingEnabled( bool ) ) );
   myShortcut = new QShortcut( Qt::Key_F5, this, SIGNAL( requestUpdate() ), SIGNAL( requestUpdate() ) );
+
+  myAutoSizeFirstColumn = true;
+  myAutoSizeColumns = false;
 }
 
 /*!
@@ -285,3 +293,31 @@ void SUIT_DataBrowser::onModelUpdated()
 {
   setModified();
 }
+
+/*!
+  \brief Set 'auto-size first column' flag value.
+
+  If this flag is set to \c true (by default), the first column width is resized
+  to its contents.
+
+  \param on 'auto-size first column' flag value
+  \sa setAutoSizeColumns()
+*/
+void SUIT_DataBrowser::setAutoSizeFirstColumn( const bool on )
+{
+  myAutoSizeFirstColumn = on;
+}
+
+/*!
+  \brief Set 'auto-size columns' flag value.
+
+  If this flag is set to \c true (by default is false), columns width except 
+  the first column is resized to its contents.
+
+  \param on 'auto-size columns' flag value
+  \sa setAutoSizeFirstColumn()
+*/
+void SUIT_DataBrowser::setAutoSizeColumns( const bool on )
+{
+  myAutoSizeColumns = on;
+}
index 604574dd9e70ea13ff1faa51e1a18c98e17efa1c..f75b5a4252990a718bdcc5b2ca7d96fd54c5a5a3 100644 (file)
@@ -60,6 +60,9 @@ public:
 
   virtual void     contextMenuPopup( QMenu* );
 
+  void             setAutoSizeFirstColumn( const bool on );
+  void             setAutoSizeColumns( const bool on );
+
 protected:
   virtual void     contextMenuEvent( QContextMenuEvent* );
 
@@ -74,6 +77,9 @@ private slots:
 
 private:
   QShortcut*       myShortcut;
+
+  bool             myAutoSizeFirstColumn;
+  bool             myAutoSizeColumns;
 };
 
 #endif // SUIT_BROWSER_H
index 28a50cb1ac51ac47969e60c92cf1f546f38d9a20..403aeb87004efad0c892542ecf0599182ce4b93e 100644 (file)
@@ -756,6 +756,10 @@ QWidget* SalomeApp_Application::createWindow( const int flag )
 
       bool autoSize      = resMgr->booleanValue( "ObjectBrowser", "auto_size", false );
       bool autoSizeFirst = resMgr->booleanValue( "ObjectBrowser", "auto_size_first", true );
+
+      ob->setAutoSizeFirstColumn(autoSizeFirst);
+      ob->setAutoSizeColumns(autoSize);
+
       // temporary commented
       /*
       for ( int i = SalomeApp_DataObject::ValueIdx; i <= SalomeApp_DataObject::RefEntryIdx; i++ )