[yast-commit] r58192 - in /trunk/qt-pkg: VERSION.cmake package/yast2-qt-pkg.changes src/YQPkgFilterTab.cc src/YQPkgList.cc src/YQPkgList.h

Author: tgoettlicher Date: Tue Jul 28 15:08:58 2009 New Revision: 58192 URL: http://svn.opensuse.org/viewcvs/yast?rev=58192&view=rev Log: Fixed closing tab mixes up view (bnc #513845) Modified: trunk/qt-pkg/VERSION.cmake trunk/qt-pkg/package/yast2-qt-pkg.changes trunk/qt-pkg/src/YQPkgFilterTab.cc trunk/qt-pkg/src/YQPkgList.cc trunk/qt-pkg/src/YQPkgList.h Modified: trunk/qt-pkg/VERSION.cmake URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt-pkg/VERSION.cmake?rev=58192&r1... ============================================================================== --- trunk/qt-pkg/VERSION.cmake (original) +++ trunk/qt-pkg/VERSION.cmake Tue Jul 28 15:08:58 2009 @@ -1,3 +1,3 @@ SET(VERSION_MAJOR "2") SET(VERSION_MINOR "18") -SET(VERSION_PATCH "9") +SET(VERSION_PATCH "10") Modified: trunk/qt-pkg/package/yast2-qt-pkg.changes URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt-pkg/package/yast2-qt-pkg.chang... ============================================================================== --- trunk/qt-pkg/package/yast2-qt-pkg.changes (original) +++ trunk/qt-pkg/package/yast2-qt-pkg.changes Tue Jul 28 15:08:58 2009 @@ -1,4 +1,18 @@ ------------------------------------------------------------------- +Tue Jul 28 15:07:17 CEST 2009 - tgoettlicher@suse.de + +- Fixed closing tab mixes up view (bnc #513845) + +------------------------------------------------------------------- +Mon Jul 27 12:04:03 CEST 2009 - tgoettlicher@suse.de + +- applied patch for autosize columns +- patch by Frank Schäfer +- tested by Dave Plater +- bnc #441828 +- V 2.18.10 + +------------------------------------------------------------------- Wed Jul 22 16:19:10 CEST 2009 - kmachalkova@suse.cz - Start webpin client from 'Configuration' menu (FaTE #306928) Modified: trunk/qt-pkg/src/YQPkgFilterTab.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt-pkg/src/YQPkgFilterTab.cc?rev=... ============================================================================== --- trunk/qt-pkg/src/YQPkgFilterTab.cc (original) +++ trunk/qt-pkg/src/YQPkgFilterTab.cc Tue Jul 28 15:08:58 2009 @@ -652,8 +652,7 @@ page->tabIndex--; } - if ( oldCurrentIndex == pageIndex ) // this page was the current page - showPage( tabBar()->currentIndex() ); // display the new current page + showPage( tabBar()->currentIndex() ); // display the new current page } } Modified: trunk/qt-pkg/src/YQPkgList.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt-pkg/src/YQPkgList.cc?rev=58192... ============================================================================== --- trunk/qt-pkg/src/YQPkgList.cc (original) +++ trunk/qt-pkg/src/YQPkgList.cc Tue Jul 28 15:08:58 2009 @@ -93,30 +93,26 @@ setIconSize( QSize( 22, 16 ) ); header()->setResizeMode( QHeaderView::Interactive ); - header()->setResizeMode( statusCol(), QHeaderView::ResizeToContents ); + // Set initial optimal column widths: QFontMetrics fms( header()->font() ); - - setColumnWidth( sizeCol(), fms.width( " 9999.9 K " ) ); - setColumnWidth( versionCol(), fms.width( versionHeaderText + " " ) ); - setColumnWidth( nameCol(), fms.width( "desktop-data-openSUSE-extraroom" ) ); - setColumnWidth( summaryCol(), fms.width( "A really really long text, but not too long" ) ); - + _statusIconColS2Cwidth = 28; + _nameColS2Cwidth = fms.width( "desktop-data-openSUSE-extraroom" ); + _summaryColS2Cwidth = fms.width( "A really really long text, but not too long" ); if ( instVersionCol() != versionCol() ) { - setColumnWidth( versionCol(), max( fms.width( versionHeaderText + " " ), - fms.width( " 20071220pre" ) ) ); - setColumnWidth( instVersionCol(), max( fms.width( instVersionHeaderText + " " ), - fms.width( " 20071220pre" ) ) ); + _versionColS2Cwidth = max( fms.width( versionHeaderText + " " ), + fms.width( " 20071220pre" ) ); + _instVersionColS2Cwidth = max( fms.width( instVersionHeaderText + " " ), + fms.width( " 20071220pre" ) ); } - -#if 0 - header()->setResizeMode( nameCol(), QHeaderView::Stretch ); - header()->setResizeMode( summaryCol(), QHeaderView::Stretch ); - header()->setResizeMode( versionCol(), QHeaderView::Stretch ); -#endif - - header()->setResizeMode( sizeCol(), QHeaderView::Fixed ); + else + { + _versionColS2Cwidth = fms.width( versionHeaderText + " " ); + _instVersionColS2Cwidth = 0; + } + _sizeColS2Cwidth = fms.width( " 9999.9 K " ); + /* NOTE: resizeEvent() is automatically triggered afterwards => sets column widths */ saveColumnWidths(); createActions(); @@ -125,7 +121,6 @@ connect ( header(), SIGNAL( sectionClicked (int) ), this, SLOT( sortByColumn (int) ) ); - } @@ -155,7 +150,7 @@ bool dimmed ) { scheduleDelayedItemsLayout(); - + if ( ! selectable ) { yuiError() << "NULL zypp::ui::Selectable!" << endl; @@ -165,8 +160,20 @@ YQPkgListItem * item = new YQPkgListItem( this, selectable, zyppPkg ); Q_CHECK_PTR( item ); + if (this->topLevelItemCount() < 50) // DO NOT OPTIMZE, IF LIST IS ALREADY TO LARGE + { + setS2CcolumnWidths(); // SLOW FOR LARGE LISTS + optimizeColumnWidths(); + } + item->setDimmed( dimmed ); applyExcludeRules( item ); + + /* NOTE: There is currently no way to get the optimal column widths without setting them. + * => column widths will be set TWO times. + * Although this is no "nice" solution, we don't have to worry about visual effects. It's really fast and therefore not visible for the user ;-). + */ + } @@ -297,6 +304,81 @@ } +void +YQPkgList::setS2CcolumnWidths() +{ + // SET OPTIMAL COLUMN WIDTHS (SIZED-TO-CONTENT): + this->resizeColumnToContents( statusCol() ); + _statusIconColS2Cwidth = this->columnWidth( statusCol() ); + this->resizeColumnToContents( nameCol() ); + _nameColS2Cwidth = this->columnWidth( nameCol() ); + this->resizeColumnToContents( summaryCol() ); + _summaryColS2Cwidth = this->columnWidth( summaryCol() ); + this->resizeColumnToContents( versionCol() ); + _versionColS2Cwidth = this->columnWidth( versionCol() ); + if ( instVersionCol() != versionCol() ) + { + this->resizeColumnToContents( instVersionCol() ); + _instVersionColS2Cwidth = this->columnWidth( instVersionCol() ); + } + this->resizeColumnToContents( sizeCol() ); + _sizeColS2Cwidth = this->columnWidth( sizeCol() ); + + /* NOTE: There is currently no way to get the optimal column widths without setting them. */ + +} + + +void +YQPkgList::optimizeColumnWidths() +{ + int visibleSpace = 0; + int s2cWidthsSum = 0; + int numOptCol = 4; + + s2cWidthsSum = _statusIconColS2Cwidth + _nameColS2Cwidth + _summaryColS2Cwidth + _versionColS2Cwidth + _sizeColS2Cwidth; + if ( instVersionCol() != versionCol() ) + { + s2cWidthsSum += _instVersionColS2Cwidth; + numOptCol++; + } + // CHECK IF WE HAVE LESS VISIBLE SPACE THAN WE NEED: + visibleSpace = this->viewport()->width(); + if (visibleSpace < 0) return; + if (s2cWidthsSum >= visibleSpace) // THERE IS NOT ENOUGH VISIBLE SPACE TO SHOW ALL CLOUMNS WITH OPTIMAL WIDTHS + { + // ONLY REDUCE WIDTH OF THE "summary"-COLUMN; IF THIS IS NOT ENOUGH, WE WILL GET A HORIZONTAL SCROLL BAR + int newSummaryWidth = visibleSpace - s2cWidthsSum + _summaryColS2Cwidth; + if (newSummaryWidth < 100) + newSummaryWidth = 100; + this->setColumnWidth( summaryCol(), newSummaryWidth); + } + else // THERE IS ENOUGH VISIBLE SPACE + { + // DISTRIBUTE REMAINING VISIBLE SPACE TO ALL COLUMNS (except the satusIcon-column): + // Calculate additional column widths: + int addSpace = (visibleSpace - s2cWidthsSum) / numOptCol; + int addSpaceR = (visibleSpace - s2cWidthsSum) % numOptCol; + // Set new column widths: + this->setColumnWidth( statusCol(), _statusIconColS2Cwidth ); + this->setColumnWidth( nameCol(), _nameColS2Cwidth + addSpace ); + this->setColumnWidth( summaryCol(), _summaryColS2Cwidth + addSpace ); + this->setColumnWidth( versionCol(), _versionColS2Cwidth + addSpace ); + if ( instVersionCol() != versionCol() ) + this->setColumnWidth( instVersionCol(), _instVersionColS2Cwidth + addSpace ); + this->setColumnWidth( sizeCol(), _sizeColS2Cwidth + addSpace + addSpaceR ); + } +} + + +void +YQPkgList::resizeEvent(QResizeEvent *event) +{ + optimizeColumnWidths(); + event->accept(); +} + + void YQPkgList::createNotInstalledContextMenu() @@ -604,9 +686,8 @@ _zyppPkg = tryCastToZyppPkg( selectable->theObj() ); setSourceRpmIcon(); - + setTextAlignment( sizeCol(), Qt::AlignRight ); - setSizeHint( sizeCol(), QSize( QFontMetrics( pkgList->font() ).width( text( sizeCol() ) ), 10 ) ); } Modified: trunk/qt-pkg/src/YQPkgList.h URL: http://svn.opensuse.org/viewcvs/yast/trunk/qt-pkg/src/YQPkgList.h?rev=58192&... ============================================================================== --- trunk/qt-pkg/src/YQPkgList.h (original) +++ trunk/qt-pkg/src/YQPkgList.h Tue Jul 28 15:08:58 2009 @@ -22,6 +22,7 @@ #include <YQPkgObjList.h> #include <QMenu> +#include <QResizeEvent> class YQPkgListItem; @@ -193,11 +194,35 @@ **/ void setInstallListSourceRpms( bool inst ); + /** + * Set and save optimal column widths depending on content only + * There is currently no way to get the optimal widths without setting them, so we have to do it. + **/ + void setS2CcolumnWidths(); - // Data members + /** + * Optimizes the column widths depending on content and the available horizontal space. + **/ + void optimizeColumnWidths(); + + /** + * Handler for resize events. + * Triggers column width optimization. + **/ + void resizeEvent(QResizeEvent *event); + + + // *** Data members: int _srpmStatusCol; - QMenu * _sourceRpmContextMenu; + QMenu * _sourceRpmContextMenu; + // Last optimal (sized-to-content) column widths + int _statusIconColS2Cwidth; + int _nameColS2Cwidth; + int _summaryColS2Cwidth; + int _versionColS2Cwidth; + int _instVersionColS2Cwidth; + int _sizeColS2Cwidth; public: -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org
participants (1)
-
tgoettlicher@svn.opensuse.org