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=58191&r2=58192&view=diff
==============================================================================
--- 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.changes?rev=58192&r1=58191&r2=58192&view=diff
==============================================================================
--- 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=58192&r1=58191&r2=58192&view=diff
==============================================================================
--- 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&r1=58191&r2=58192&view=diff
==============================================================================
--- 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&r1=58191&r2=58192&view=diff
==============================================================================
--- 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