--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/listdatamodel.cpp Mon Oct 04 11:29:25 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/listdatamodel.cpp Fri Oct 15 12:29:39 2010 +0300
@@ -44,100 +44,100 @@
* ListItem
*/
ListItem::ListItem(const QString& aText)
- : txt( aText )
- {
- SWT_LOG_FUNC_CALL();
- }
+ : txt( aText )
+ {
+ SWT_LOG_FUNC_CALL();
+ }
ListItem::~ListItem()
- {
- SWT_LOG_FUNC_CALL();
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ }
const QString& ListItem::text() const
- {
- return txt;
- }
+ {
+ return txt;
+ }
const QPixmap* ListItem::image() const
- {
- return NULL;
- }
+ {
+ return NULL;
+ }
void ListItem::setText( const QString& string )
- {
- txt = string;
- }
+ {
+ txt = string;
+ }
Qt::CheckState ListItem::checkState() const
- {
- SWT_LOG_FUNC_CALL();
- return state;
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ return state;
+ }
void ListItem::setCheckState( Qt::CheckState state )
- {
- SWT_LOG_FUNC_CALL();
- this->state = state;
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ this->state = state;
+ }
+
/**
* ListBoxItem
*/
-ListBoxItem::ListBoxItem( const QString& aDetailText, const QPixmap** aDetailImages, const int aDetailImageCount,
- const QString& aHeadingText, const QPixmap** aHeadingImages, const int aHeadingImageCount )
- : ListItem(aDetailText), headingTxt(aHeadingText)
- {
- SWT_LOG_FUNC_CALL();
- for (int i = 0; i < aDetailImageCount; i++)
- {
- detailImgs.push_back(*aDetailImages[i]);
- }
+ListBoxItem::ListBoxItem( const QString& aDetailText, const QPixmap* aDetailImages, const int aDetailImageCount,
+ const QString& aHeadingText, const QPixmap* aHeadingImages, const int aHeadingImageCount )
+ : ListItem(aDetailText), headingTxt(aHeadingText)
+ {
+ SWT_LOG_FUNC_CALL();
+ for (int i = 0; i < aDetailImageCount; i++)
+ {
+ detailImgs.push_back(aDetailImages[i]);
+ }
for (int i = 0; i < aHeadingImageCount; i++)
{
- headingImgs.push_back(*aHeadingImages[i]);
+ headingImgs.push_back(aHeadingImages[i]);
}
- }
+ }
ListBoxItem::~ListBoxItem()
- {
- SWT_LOG_FUNC_CALL();
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ }
+
const QString& ListBoxItem::headingText() const
- {
- SWT_LOG_FUNC_CALL();
- return headingTxt;
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ return headingTxt;
+ }
+
const QList<QPixmap>& ListBoxItem::detailImages() const
- {
- SWT_LOG_FUNC_CALL();
- return detailImgs;
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ return detailImgs;
+ }
+
const QList<QPixmap>& ListBoxItem::headingImages() const
- {
- SWT_LOG_FUNC_CALL();
- return headingImgs;
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ return headingImgs;
+ }
+
int ListBoxItem::detailImageCount() const
- {
- SWT_LOG_FUNC_CALL();
- return detailImgs.count();
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ return detailImgs.count();
+ }
+
int ListBoxItem::headingImageCount() const
- {
- SWT_LOG_FUNC_CALL();
- return headingImgs.count();
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ return headingImgs.count();
+ }
void ListBoxItem::setContentsToNull()
{
@@ -153,332 +153,332 @@
headingImgs.pop_back();
}
}
-
+
/**
* ListModel
*/
ListModel::ListModel( int type, int style, QListView *parent )
- : QAbstractListModel( parent ),
- listType( type ),
- layoutStyle( style )
- {
- SWT_LOG_FUNC_CALL();
- SWT_LOG_DATA_3("listType=%d layoutStyle=%x parent=%x ", style, type, reinterpret_cast<int>(parent) );
- }
-
+ : QAbstractListModel( parent ),
+ listType( type ),
+ layoutStyle( style )
+ {
+ SWT_LOG_FUNC_CALL();
+ SWT_LOG_DATA_3("listType=%d layoutStyle=%x parent=%x ", style, type, reinterpret_cast<int>(parent) );
+ }
+
ListModel::~ListModel()
- {
- SWT_LOG_FUNC_CALL();
- clearList();
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ clearList();
+ }
ListModel* ListModel::createDataModel( int type, int style, QListView *parent )
- {
- if( ( type & LISTTYPE_LISTBOX ) != 0 )
- {
- return new ListBoxModel( type, style, parent );
- }
- else
- {
- return new ListModel( type, style, parent );
- }
- }
+ {
+ if( ( type & LISTTYPE_LISTBOX ) != 0 )
+ {
+ return new ListBoxModel( type, style, parent );
+ }
+ else
+ {
+ return new ListModel( type, style, parent );
+ }
+ }
void ListModel::beginInsertRows( const QModelIndex& parent, int first, int last )
- {
- Q_ASSERT( first >= 0 && first <= list.size() );
- Q_ASSERT( last >= first );
- SWT_LOG_FUNC_CALL();
- QAbstractItemModel::beginInsertRows( parent, first, last );
- }
-
-
+ {
+ Q_ASSERT( first >= 0 && first <= list.size() );
+ Q_ASSERT( last >= first );
+ SWT_LOG_FUNC_CALL();
+ QAbstractItemModel::beginInsertRows( parent, first, last );
+ }
+
+
void ListModel::endInsertRows()
- {
- SWT_LOG_FUNC_CALL();
- QAbstractItemModel::endInsertRows();
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ QAbstractItemModel::endInsertRows();
+ }
void ListModel::beginRemoveRows( const QModelIndex& parent, int first, int last )
- {
- Q_ASSERT( first > -1 && first < list.size() );
- Q_ASSERT( last >= first && last < list.size() );
- SWT_LOG_FUNC_CALL();
- QAbstractItemModel::beginRemoveRows( parent, first, last );
- }
-
+ {
+ Q_ASSERT( first > -1 && first < list.size() );
+ Q_ASSERT( last >= first && last < list.size() );
+ SWT_LOG_FUNC_CALL();
+ QAbstractItemModel::beginRemoveRows( parent, first, last );
+ }
+
void ListModel::endRemoveRows()
- {
- SWT_LOG_FUNC_CALL();
- QAbstractItemModel::endRemoveRows();
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ QAbstractItemModel::endRemoveRows();
+ }
+
void ListModel::emitLayoutAboutToBeChanged()
- {
- SWT_LOG_FUNC_CALL();
- emit layoutAboutToBeChanged();
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ emit layoutAboutToBeChanged();
+ }
void ListModel::emitLayoutChanged()
- {
- SWT_LOG_FUNC_CALL();
- emit layoutChanged();
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ emit layoutChanged();
+ }
+
Qt::ItemFlags ListModel::flags( const QModelIndex& index ) const
- {
- SWT_LOG_FUNC_CALL();
- Qt::ItemFlags flags = ( QAbstractItemModel::flags(index) | Qt::ItemIsEnabled | Qt::ItemIsSelectable ) & ~Qt::ItemIsUserCheckable;
- if( ( layoutStyle & LISTBASE_SHOW_CHECKBOX ) != 0 )
- {
- flags |= Qt::ItemIsUserCheckable;
- }
- return flags;
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ Qt::ItemFlags flags = ( QAbstractItemModel::flags(index) | Qt::ItemIsEnabled | Qt::ItemIsSelectable ) & ~Qt::ItemIsUserCheckable;
+ if( ( layoutStyle & LISTBASE_SHOW_CHECKBOX ) != 0 )
+ {
+ flags |= Qt::ItemIsUserCheckable;
+ }
+ return flags;
+ }
+
int ListModel::rowCount(const QModelIndex& /*parent*/ ) const
- {
- SWT_LOG_FUNC_CALL();
- return list.count();
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ return list.count();
+ }
+
QVariant ListModel::data(const QModelIndex &index, int role) const
- {
- SWT_LOG_FUNC_CALL();
- if(!index.isValid())
- {
- SWT_LOG_DATA_1("invalid index %d", -1);
- return QVariant();
- }
- Q_ASSERT( index.row() > -1 && index.row() < list.size() );
-
- if ( role == Qt::DisplayRole )
- {
- SWT_LOG_DATA_2("Request data on DisplayRole: row=%d col=%d", index.row(), index.column());
- return list[index.row()]->text();
- }
- else if ( role == Qt::DecorationRole )
- {
- SWT_LOG_DATA_2("Request data on DecorationRole: row=%d col=%d", index.row(), index.column());
- const QPixmap* img = list[index.row()]->image();
- if( img )
- {
- return *img;
- }
- }
- else if( role == Qt::CheckStateRole && index.column()==0 )
- {
- SWT_LOG_DATA_2("Request checkState: row=%d col=%d", index.row(), index.column());
- return list[index.row()]->checkState();
- }
-
- SWT_LOG_DATA_2("Request something else: row=%d col=%d", index.row(), index.column());
- return QVariant();
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ if(!index.isValid())
+ {
+ SWT_LOG_DATA_1("invalid index %d", -1);
+ return QVariant();
+ }
+ Q_ASSERT( index.row() > -1 && index.row() < list.size() );
+
+ if ( role == Qt::DisplayRole )
+ {
+ SWT_LOG_DATA_2("Request data on DisplayRole: row=%d col=%d", index.row(), index.column());
+ return list[index.row()]->text();
+ }
+ else if ( role == Qt::DecorationRole )
+ {
+ SWT_LOG_DATA_2("Request data on DecorationRole: row=%d col=%d", index.row(), index.column());
+ const QPixmap* img = list[index.row()]->image();
+ if( img )
+ {
+ return *img;
+ }
+ }
+ else if( role == Qt::CheckStateRole && index.column()==0 )
+ {
+ SWT_LOG_DATA_2("Request checkState: row=%d col=%d", index.row(), index.column());
+ return list[index.row()]->checkState();
+ }
+
+ SWT_LOG_DATA_2("Request something else: row=%d col=%d", index.row(), index.column());
+ return QVariant();
+ }
void ListModel::setCheckState( const QItemSelection& selection, Qt::CheckState state )
- {
- SWT_LOG_FUNC_CALL();
- const QModelIndexList indexes = selection.indexes ();
- for( int i=0; i< indexes.size(); i++)
- {
- list.at(indexes.at(i).row())->setCheckState( state );
- }
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ const QModelIndexList indexes = selection.indexes ();
+ for( int i=0; i< indexes.size(); i++)
+ {
+ list.at(indexes.at(i).row())->setCheckState( state );
+ }
+ }
const QString& ListModel::itemString( const int row ) const
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(row > -1 && row < list.size());
- return list.at(row)->text();
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(row > -1 && row < list.size());
+ return list.at(row)->text();
+ }
jobjectArray ListModel::itemStrings( JNIEnv* aJniEnv )
- {
- SWT_LOG_FUNC_CALL();
-
- const int count = list.size();
- jclass stringClass = aJniEnv->FindClass( "java/lang/String" );
+ {
+ SWT_LOG_FUNC_CALL();
+
+ const int count = list.size();
+ jclass stringClass = aJniEnv->FindClass( "java/lang/String" );
jobjectArray result = aJniEnv->NewObjectArray(count, stringClass, NULL);
if( !result )
{
throw std::bad_alloc();
}
- jstring javaString;
+ jstring javaString;
for ( int i=0; i<count; ++i )
- {
- javaString = swtApp->jniUtils().QStringToJavaString(aJniEnv, list.at(i)->text() );
- aJniEnv->SetObjectArrayElement( result, i, javaString );
- aJniEnv->DeleteLocalRef( javaString );
- }
- aJniEnv->DeleteLocalRef( stringClass );
+ {
+ javaString = swtApp->jniUtils().QStringToJavaString(aJniEnv, list.at(i)->text() );
+ aJniEnv->SetObjectArrayElement( result, i, javaString );
+ aJniEnv->DeleteLocalRef( javaString );
+ }
+ aJniEnv->DeleteLocalRef( stringClass );
return result;
- }
+ }
int ListModel::indexOf(const QString& string, const int start ) const
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(start > -1 && start < list.size());
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(start > -1 && start < list.size());
QStringMatcher matcher(string, Qt::CaseSensitive);
for (int i = start; i < list.size(); ++i)
- {
+ {
const QString & str = list.at(i)->text();
if (string.length() == str.length() && matcher.indexIn(str) == 0)
return i;
- }
+ }
return -1;
- }
+ }
int ListModel::itemHeight()
- {
- SWT_LOG_FUNC_CALL();
- const QListView* listView = static_cast<const QListView*>( static_cast<QObject*>(this)->parent() );
+ {
+ SWT_LOG_FUNC_CALL();
+ const QListView* listView = static_cast<const QListView*>( static_cast<QObject*>(this)->parent() );
- if(list.size() > 0 )
- {
- return listView->sizeHintForRow(0);
- }
-
- return listView->fontMetrics().height();
- }
+ if(list.size() > 0 )
+ {
+ return listView->sizeHintForRow(0);
+ }
+
+ return listView->fontMetrics().height();
+ }
int ListModel::insertPosition(const QString& string, bool ascent )
- {
- SWT_LOG_FUNC_CALL();
- if( listType != LISTTYPE_SORTEDLIST )
- {
- throw std::bad_exception();
- }
-
- int pos = 0;
- for(int i = list.size() -1; i > -1; i--)
- {
- if( ascent )
- {
- if( string < list.at(i)->text() )
- continue;
- }
- else
- {
- if( string > list.at(i)->text() )
- continue;
- }
- pos = i + 1;
- break;
- }
- return pos;
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ if( listType != LISTTYPE_SORTEDLIST )
+ {
+ throw std::bad_exception();
+ }
+
+ int pos = 0;
+ for(int i = list.size() -1; i > -1; i--)
+ {
+ if( ascent )
+ {
+ if( string < list.at(i)->text() )
+ continue;
+ }
+ else
+ {
+ if( string > list.at(i)->text() )
+ continue;
+ }
+ pos = i + 1;
+ break;
+ }
+ return pos;
+ }
void ListModel::remove( const int row )
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(row > -1 && row < list.size());
- ListItem* item = list.takeAt(row);
- delete item;
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(row > -1 && row < list.size());
+ ListItem* item = list.takeAt(row);
+ delete item;
+ }
void ListModel::clearList()
- {
- SWT_LOG_FUNC_CALL();
- qDeleteAll(list.begin(), list.end());
- list.clear();
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ qDeleteAll(list.begin(), list.end());
+ list.clear();
+ }
void ListModel::appendItem( const QString& string )
- {
- SWT_LOG_FUNC_CALL();
- ListItem* item = createItem( string );
- list.append(item);
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ ListItem* item = createItem( string );
+ list.append(item);
+ }
+
void ListModel::appendItem(const QString& string, const QPixmap* pixmap )
- {
- SWT_LOG_FUNC_CALL();
- ListItem* item = createItem( string, pixmap );
- list.append(item);
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ ListItem* item = createItem( string, pixmap );
+ list.append(item);
+ }
-
-void ListModel::appendItem(const QString& /*aDetailText*/, const QPixmap** /*aDetailImages*/, const int /*aDetailImageCount*/,
- const QString& /*aHeadingText*/, const QPixmap** /*aHeadingImages*/, const int /*aHeadingImageCount*/ )
- {
- Q_ASSERT( false );
- }
+
+void ListModel::appendItem(const QString& /*aDetailText*/, const QPixmap* /*aDetailImages*/, const int /*aDetailImageCount*/,
+ const QString& /*aHeadingText*/, const QPixmap* /*aHeadingImages*/, const int /*aHeadingImageCount*/ )
+ {
+ Q_ASSERT( false );
+ }
void ListModel::insertItem( const int row, const QString& string )
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(row > -1 && row <= list.size());
- ListItem* item = createItem( string );
- if( row == list.size() )
- {
- list.append(item);
- }
- else
- {
- list.insert( row, item );
- }
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(row > -1 && row <= list.size());
+ ListItem* item = createItem( string );
+ if( row == list.size() )
+ {
+ list.append(item);
+ }
+ else
+ {
+ list.insert( row, item );
+ }
+ }
void ListModel::insertItem( const int row, const QString& string, const QPixmap* pixmap )
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(row > -1 && row <= list.size());
- ListItem* item = createItem( string, pixmap );
- if( row == list.size() )
- {
- list.append(item);
- }
- else
- {
- list.insert( row, item );
- }
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(row > -1 && row <= list.size());
+ ListItem* item = createItem( string, pixmap );
+ if( row == list.size() )
+ {
+ list.append(item);
+ }
+ else
+ {
+ list.insert( row, item );
+ }
+ }
int ListModel::style() const
- {
- SWT_LOG_FUNC_CALL();
- return layoutStyle;
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ return layoutStyle;
+ }
+
-
+
ListItem* ListModel::createItem( const QString& string )
- {
- SWT_LOG_FUNC_CALL();
- ListItem* item = new ListItem(string);
- if( !item )
- {
- throw std::bad_alloc();
- }
- return item;
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ ListItem* item = new ListItem(string);
+ if( !item )
+ {
+ throw std::bad_alloc();
+ }
+ return item;
+ }
ListItem* ListModel::createItem( const QString& /*string*/, const QPixmap* /*pixmap*/ )
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT( false );
- return NULL;
- }
-
-ListItem* ListModel::createItem(const QString& /*aDetailText*/, const QPixmap** /*aDetailImages*/, const int /*aDetailImageCount*/,
- const QString& /*aHeadingText*/, const QPixmap** /*aHeadingImages*/, const int /*aHeadingImageCount*/ )
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT( false );
- return NULL;
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT( false );
+ return NULL;
+ }
+
+ListItem* ListModel::createItem(const QString& /*aDetailText*/, const QPixmap* /*aDetailImages*/, const int /*aDetailImageCount*/,
+ const QString& /*aHeadingText*/, const QPixmap* /*aHeadingImages*/, const int /*aHeadingImageCount*/ )
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT( false );
+ return NULL;
+ }
void ListModel::setItemContentsToNull( const int /*row*/ )
{
@@ -489,333 +489,333 @@
// ListBoxModel
ListBoxModel::ListBoxModel( int type, int style, QListView *parent )
- : ListModel(type, style, parent ),
- detailTxtIndex(-1),
- headingTxtIndex(-1),
- detailTxtSize(QPoint(0, 0)),
- headingTxtSize(QPoint(0, 0)),
- detailImgCount(0),
- headingImgCount(0),
- imgHeight(0),
- detailImgWidths(NULL),
- headingImgWidths(NULL),
- rowHeights(NULL),
- detailImgWidth(0),
- headingImgWidth(0)
- {
- SWT_LOG_FUNC_CALL();
- }
-
+ : ListModel(type, style, parent ),
+ detailTxtIndex(-1),
+ headingTxtIndex(-1),
+ detailTxtSize(QPoint(0, 0)),
+ headingTxtSize(QPoint(0, 0)),
+ detailImgCount(0),
+ headingImgCount(0),
+ imgHeight(0),
+ detailImgWidths(NULL),
+ headingImgWidths(NULL),
+ rowHeights(NULL),
+ detailImgWidth(0),
+ headingImgWidth(0)
+ {
+ SWT_LOG_FUNC_CALL();
+ }
+
ListBoxModel::~ListBoxModel()
- {
- SWT_LOG_FUNC_CALL();
+ {
+ SWT_LOG_FUNC_CALL();
- delete detailImgWidths;
- delete headingImgWidths;
- delete rowHeights;
- }
+ delete detailImgWidths;
+ delete headingImgWidths;
+ delete rowHeights;
+ }
-
+
void ListBoxModel::clearList()
- {
- SWT_LOG_FUNC_CALL();
- ListModel::clearList();
- detailTxtIndex = -1;
- headingTxtIndex = -1;
- detailTxtSize = QPoint(0, 0);
- headingTxtSize = QPoint(0, 0);
- detailImgCount = 0;
- headingImgCount = 0;
- imgHeight = 0;
- delete detailImgWidths;
- detailImgWidths = NULL;
- delete headingImgWidths;
- headingImgWidths = NULL;
- delete rowHeights;
- rowHeights = NULL;
- detailImgWidth = 0;
- headingImgWidth = 0;
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ ListModel::clearList();
+ detailTxtIndex = -1;
+ headingTxtIndex = -1;
+ detailTxtSize = QPoint(0, 0);
+ headingTxtSize = QPoint(0, 0);
+ detailImgCount = 0;
+ headingImgCount = 0;
+ imgHeight = 0;
+ delete detailImgWidths;
+ detailImgWidths = NULL;
+ delete headingImgWidths;
+ headingImgWidths = NULL;
+ delete rowHeights;
+ rowHeights = NULL;
+ detailImgWidth = 0;
+ headingImgWidth = 0;
+ }
-void ListBoxModel::appendItem(const QString& aDetailText, const QPixmap** aDetailImages, const int aDetailImageCount,
- const QString& aHeadingText, const QPixmap** aHeadingImages, const int aHeadingImageCount )
- {
- SWT_LOG_FUNC_CALL();
- ListItem* item = createItem( aDetailText, aDetailImages, aDetailImageCount,
- aHeadingText, aHeadingImages, aHeadingImageCount );
- list.append(item);
+void ListBoxModel::appendItem(const QString& aDetailText, const QPixmap* aDetailImages, const int aDetailImageCount,
+ const QString& aHeadingText, const QPixmap* aHeadingImages, const int aHeadingImageCount )
+ {
+ SWT_LOG_FUNC_CALL();
+ ListItem* item = createItem( aDetailText, aDetailImages, aDetailImageCount,
+ aHeadingText, aHeadingImages, aHeadingImageCount );
+ list.append(item);
- // remember the index of the item, which has the longest detail text
- const QListView* listView = static_cast<const QListView*>( static_cast<QObject*>(this)->parent() );
- if(!aDetailText.isNull())
- {
- int textWidth = listView->fontMetrics().boundingRect(aDetailText).width();
- if( detailTxtSize.x() < textWidth )
- {
- detailTxtSize.rx() = textWidth;
- detailTxtIndex = list.size() - 1;
- }
- }
-
- // remember the index of the item, which has the longest heading text
- if( (layoutStyle | LB_STYLE_1LINE_ITEM) != 0 || (layoutStyle | LB_STYLE_2LINE_ITEM) != 0 )
- {
- if(!aHeadingText.isNull())
- {
- int textWidth = listView->fontMetrics().boundingRect(aHeadingText).width();
- if( headingTxtSize.x() < textWidth )
- {
- headingTxtSize.rx() = textWidth;
- headingTxtIndex = list.size() - 1;
- }
- }
- }
-
- // remember the maximum detail image count
- // and remember the maximum widths for every columns of detail images
- if( (layoutStyle | LB_MOD_SHOW_DETAIL_ICONS) != 0 )
- {
- if( detailImgCount < aDetailImageCount )
- {
- int* alloc = new int[aDetailImageCount];
- memset(alloc, '\0', sizeof(int)*aDetailImageCount);
- if( !alloc )
- {
- throw std::bad_alloc();
- }
- for(int i = 0; i < detailImgCount; i++)
- {
- alloc[i] = detailImgWidths[i];
- }
- delete detailImgWidths;
- detailImgWidths = alloc;
- detailImgCount = aDetailImageCount;
- }
- for(int i = 0; i < aDetailImageCount; i++)
- {
- if( aDetailImages[i] )
- {
- QSize size = aDetailImages[i]->size();
- if(detailImgWidths[i] < size.width())
- {
- detailImgWidths[i] = size.width();
- }
- if(imgHeight < size.height())
- {
- imgHeight = size.height();
- }
- }
- }
- }
-
- // remember the maximum detail image count
- // and remember the maximum widths for every columns of heading images
- if( (layoutStyle | LB_MOD_SHOW_HEADING_ICONS) != 0 )
- {
- if( headingImgCount < aHeadingImageCount )
- {
- int* alloc = new int[aHeadingImageCount ];
- memset(alloc, '\0', sizeof(int)*aHeadingImageCount);
- if( !alloc )
- {
- throw std::bad_alloc();
- }
- for(int i = 0; i < headingImgCount; i++)
- {
- alloc[i] = headingImgWidths[i];
- }
- delete headingImgWidths;
- headingImgWidths = alloc;
- headingImgCount = aHeadingImageCount;
- }
- for(int i = 0; i < aHeadingImageCount; i++)
- {
- if( aHeadingImages[i] )
- {
- QSize size = aHeadingImages[i]->size();
- if(headingImgWidths[i] < size.width())
- {
- headingImgWidths[i] = size.width();
- }
- if(imgHeight < size.height())
- {
- imgHeight = size.height();
- }
- }
- }
- }
- }
-
-
+ // remember the index of the item, which has the longest detail text
+ const QListView* listView = static_cast<const QListView*>( static_cast<QObject*>(this)->parent() );
+ if(!aDetailText.isNull())
+ {
+ int textWidth = listView->fontMetrics().boundingRect(aDetailText).width();
+ if( detailTxtSize.x() < textWidth )
+ {
+ detailTxtSize.rx() = textWidth;
+ detailTxtIndex = list.size() - 1;
+ }
+ }
+
+ // remember the index of the item, which has the longest heading text
+ if( (layoutStyle | LB_STYLE_1LINE_ITEM) != 0 || (layoutStyle | LB_STYLE_2LINE_ITEM) != 0 )
+ {
+ if(!aHeadingText.isNull())
+ {
+ int textWidth = listView->fontMetrics().boundingRect(aHeadingText).width();
+ if( headingTxtSize.x() < textWidth )
+ {
+ headingTxtSize.rx() = textWidth;
+ headingTxtIndex = list.size() - 1;
+ }
+ }
+ }
+
+ // remember the maximum detail image count
+ // and remember the maximum widths for every columns of detail images
+ if( (layoutStyle | LB_MOD_SHOW_DETAIL_ICONS) != 0 )
+ {
+ if( detailImgCount < aDetailImageCount )
+ {
+ int* alloc = new int[aDetailImageCount];
+ memset(alloc, '\0', sizeof(int)*aDetailImageCount);
+ if( !alloc )
+ {
+ throw std::bad_alloc();
+ }
+ for(int i = 0; i < detailImgCount; i++)
+ {
+ alloc[i] = detailImgWidths[i];
+ }
+ delete detailImgWidths;
+ detailImgWidths = alloc;
+ detailImgCount = aDetailImageCount;
+ }
+ for(int i = 0; i < aDetailImageCount; i++)
+ {
+ if( !aDetailImages[i].isNull() )
+ {
+ QSize size = aDetailImages[i].size();
+ if(detailImgWidths[i] < size.width())
+ {
+ detailImgWidths[i] = size.width();
+ }
+ if(imgHeight < size.height())
+ {
+ imgHeight = size.height();
+ }
+ }
+ }
+ }
+
+ // remember the maximum detail image count
+ // and remember the maximum widths for every columns of heading images
+ if( (layoutStyle | LB_MOD_SHOW_HEADING_ICONS) != 0 )
+ {
+ if( headingImgCount < aHeadingImageCount )
+ {
+ int* alloc = new int[aHeadingImageCount ];
+ memset(alloc, '\0', sizeof(int)*aHeadingImageCount);
+ if( !alloc )
+ {
+ throw std::bad_alloc();
+ }
+ for(int i = 0; i < headingImgCount; i++)
+ {
+ alloc[i] = headingImgWidths[i];
+ }
+ delete headingImgWidths;
+ headingImgWidths = alloc;
+ headingImgCount = aHeadingImageCount;
+ }
+ for(int i = 0; i < aHeadingImageCount; i++)
+ {
+ if( !aHeadingImages[i].isNull() )
+ {
+ QSize size = aHeadingImages[i].size();
+ if(headingImgWidths[i] < size.width())
+ {
+ headingImgWidths[i] = size.width();
+ }
+ if(imgHeight < size.height())
+ {
+ imgHeight = size.height();
+ }
+ }
+ }
+ }
+ }
+
+
void ListBoxModel::updateLayoutData( const int row, const int rowHeight, const QPoint detailTxtSize,
- const QPoint headingTxtSize, const int detailImgWidth, const int headingImgWidth ) const
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(row > -1 && row < list.size());
-
- if(!rowHeights)
- {
- int count = list.size();
- rowHeights = new int[count];
- if( !rowHeights )
- {
- throw std::bad_alloc();
- }
- memset(rowHeights, '\0', sizeof(int)*count);
- }
-
- rowHeights[row] = rowHeight;
+ const QPoint headingTxtSize, const int detailImgWidth, const int headingImgWidth ) const
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(row > -1 && row < list.size());
+
+ if(!rowHeights)
+ {
+ int count = list.size();
+ rowHeights = new int[count];
+ if( !rowHeights )
+ {
+ throw std::bad_alloc();
+ }
+ memset(rowHeights, '\0', sizeof(int)*count);
+ }
+
+ rowHeights[row] = rowHeight;
this->detailTxtSize = detailTxtSize;
this->headingTxtSize = headingTxtSize;
this->detailImgWidth = detailImgWidth;
this->headingImgWidth = headingImgWidth;
- }
+ }
const QString& ListBoxModel::headingText( const int row ) const
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(row > -1 && row < list.size());
- return static_cast<ListBoxItem*>(list.at(row))->headingText();
- }
-
-
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(row > -1 && row < list.size());
+ return static_cast<ListBoxItem*>(list.at(row))->headingText();
+ }
+
+
int ListBoxModel::detailImageCount() const
- {
- SWT_LOG_FUNC_CALL();
- return detailImgCount;
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ return detailImgCount;
+ }
+
int ListBoxModel::headingImageCount() const
- {
- SWT_LOG_FUNC_CALL();
- return headingImgCount;
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ return headingImgCount;
+ }
const int& ListBoxModel::detailImageWidth(const int index) const
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(index > -1 && index < detailImgCount);
- return detailImgWidths[index];
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(index > -1 && index < detailImgCount);
+ return detailImgWidths[index];
+ }
+
const int& ListBoxModel::headingImageWidth(const int index) const
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(index > -1 && index < headingImgCount);
- return headingImgWidths[index];
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(index > -1 && index < headingImgCount);
+ return headingImgWidths[index];
+ }
-
+
int ListBoxModel::detailImageCount( const int row ) const
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(row > -1 && row < list.size());
- return static_cast<ListBoxItem*>(list.at(row))->detailImageCount();
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(row > -1 && row < list.size());
+ return static_cast<ListBoxItem*>(list.at(row))->detailImageCount();
+ }
+
int ListBoxModel::headingImageCount( const int row ) const
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(row > -1 && row < list.size());
- return static_cast<ListBoxItem*>(list.at(row))->headingImageCount();
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(row > -1 && row < list.size());
+ return static_cast<ListBoxItem*>(list.at(row))->headingImageCount();
+ }
+
const QList<QPixmap>& ListBoxModel::detailImages(const int row ) const
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(row > -1 && row < list.size());
- return static_cast<ListBoxItem*>(list.at(row))->detailImages();
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(row > -1 && row < list.size());
+ return static_cast<ListBoxItem*>(list.at(row))->detailImages();
+ }
+
const QList<QPixmap>& ListBoxModel::headingImages( const int row ) const
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(row > -1 && row < list.size());
- return static_cast<ListBoxItem*>(list.at(row))->headingImages();
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(row > -1 && row < list.size());
+ return static_cast<ListBoxItem*>(list.at(row))->headingImages();
+ }
+
QPoint ListBoxModel::detailTextSize() const
- {
- SWT_LOG_FUNC_CALL();
- return detailTxtSize;
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ return detailTxtSize;
+ }
+
QPoint ListBoxModel::headingTextSize() const
- {
- SWT_LOG_FUNC_CALL();
- return headingTxtSize;
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ return headingTxtSize;
+ }
+
QPoint ListBoxModel::detailImageSize(const int row) const
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(row > -1 && row < list.size());
- return QPoint(detailImgWidth, rowHeights[row]);
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(row > -1 && row < list.size());
+ return QPoint(detailImgWidth, rowHeights[row]);
+ }
+
QPoint ListBoxModel::headingImageSize(const int row) const
- {
- SWT_LOG_FUNC_CALL();
- Q_ASSERT(row > -1 && row < list.size());
- return QPoint(headingImgWidth, rowHeights[row]);
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ Q_ASSERT(row > -1 && row < list.size());
+ return QPoint(headingImgWidth, rowHeights[row]);
+ }
+
int ListBoxModel::rowWithMaxDetailTextSize() const
- {
- SWT_LOG_FUNC_CALL();
- return detailTxtIndex;
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ return detailTxtIndex;
+ }
+
int ListBoxModel::rowWithMaxHeadingTextSize() const
- {
- SWT_LOG_FUNC_CALL();
- return headingTxtIndex;
- }
+ {
+ SWT_LOG_FUNC_CALL();
+ return headingTxtIndex;
+ }
void ListBoxModel::setItemContentsToNull( const int row )
{
SWT_LOG_FUNC_CALL();
Q_ASSERT(row > -1 && row < list.size());
static_cast<ListBoxItem*>(list.at(row))->setContentsToNull( );
- }
-
-ListItem* ListBoxModel::createItem(const QString& aDetailText, const QPixmap** aDetailImages, const int aDetailImageCount,
- const QString& aHeadingText, const QPixmap** aHeadingImages, const int aHeadingImageCount )
- {
- SWT_LOG_FUNC_CALL();
-
- ListItem* item = new ListBoxItem( aDetailText, aDetailImages, aDetailImageCount, aHeadingText, aHeadingImages, aHeadingImageCount );
- if( !item )
- {
- throw std::bad_alloc();
- }
-
- return item;
- }
+ }
+
+ListItem* ListBoxModel::createItem(const QString& aDetailText, const QPixmap* aDetailImages, const int aDetailImageCount,
+ const QString& aHeadingText, const QPixmap* aHeadingImages, const int aHeadingImageCount )
+ {
+ SWT_LOG_FUNC_CALL();
+
+ ListItem* item = new ListBoxItem( aDetailText, aDetailImages, aDetailImageCount, aHeadingText, aHeadingImages, aHeadingImageCount );
+ if( !item )
+ {
+ throw std::bad_alloc();
+ }
+
+ return item;
+ }
-
+
/**
* ListItemDelegate
- */
+ */
ListBoxItemDelegate::ListBoxItemDelegate( QObject * parent )
- : QItemDelegate( parent ),
- headingFont( NULL )
- {
- SWT_LOG_FUNC_CALL();
- QListView* listView = static_cast< QListView* >( parent );
- dataModel = static_cast < ListBoxModel* > ( listView->model() );
- }
-
+ : QItemDelegate( parent ),
+ headingFont( NULL )
+ {
+ SWT_LOG_FUNC_CALL();
+ QListView* listView = static_cast< QListView* >( parent );
+ dataModel = static_cast < ListBoxModel* > ( listView->model() );
+ }
+
void ListBoxItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const
- {
- SWT_LOG_FUNC_CALL();
+ {
+ SWT_LOG_FUNC_CALL();
Q_ASSERT(index.isValid());
- // setup option
+ // setup option
QStyleOptionViewItemV3 opt = setOptions(index, option);
const QStyleOptionViewItemV2* v2 = qstyleoption_cast<const QStyleOptionViewItemV2 *>(&option);
opt.features = v2 ? v2->features : QStyleOptionViewItemV2::ViewItemFeatures(QStyleOptionViewItemV2::None);
@@ -829,183 +829,183 @@
// retrieve cached layout data from data model
const int row = index.row();
- QRect headingImageRect(QPoint(0, 0), dataModel->headingImageSize(row));
- QRect detailImageRect(QPoint(0, 0), dataModel->detailImageSize(row));
- QRect headingTextRect(QPoint(0, 0), dataModel->headingTextSize());
- QRect detailTextRect(QPoint(0, 0), dataModel->detailTextSize());
-
- // get check rectangle
- Qt::CheckState checkState = static_cast<Qt::CheckState>(dataModel->data(index, Qt::CheckStateRole).toInt());
- QRect checkRect = (dataModel->flags(index) & Qt::ItemIsUserCheckable) != 0 ? check( opt, opt.rect, checkState ) : QRect();
- if(checkRect.isValid())
- {
- checkRect.setRight(checkRect.right() + 2 * margin(opt));
- }
-
- doLayout( option, &checkRect, &headingImageRect, &detailImageRect, & headingTextRect, &detailTextRect );
+ QRect headingImageRect(QPoint(0, 0), dataModel->headingImageSize(row));
+ QRect detailImageRect(QPoint(0, 0), dataModel->detailImageSize(row));
+ QRect headingTextRect(QPoint(0, 0), dataModel->headingTextSize());
+ QRect detailTextRect(QPoint(0, 0), dataModel->detailTextSize());
+
+ // get check rectangle
+ Qt::CheckState checkState = static_cast<Qt::CheckState>(dataModel->data(index, Qt::CheckStateRole).toInt());
+ QRect checkRect = (dataModel->flags(index) & Qt::ItemIsUserCheckable) != 0 ? check( opt, opt.rect, checkState ) : QRect();
+ if(checkRect.isValid())
+ {
+ checkRect.setRight(checkRect.right() + 2 * margin(opt));
+ }
+
+ doLayout( option, &checkRect, &headingImageRect, &detailImageRect, & headingTextRect, &detailTextRect );
- const int layoutStyle = dataModel->style();
-
+ const int layoutStyle = dataModel->style();
+
drawBackground(painter, opt, index);
if(checkRect.isValid())
- {
- drawCheck( painter, opt, checkRect, checkState );
- }
+ {
+ drawCheck( painter, opt, checkRect, checkState );
+ }
// draw heading images
- if ( ( layoutStyle & LB_MOD_SHOW_HEADING_ICONS ) != 0 && dataModel->headingImageCount(row) > 0 )
- {
- drawImages( painter, opt, headingImageRect, dataModel->headingImages(row), &(dataModel->headingImageWidth(0)), dataModel->headingImageCount(row) );
- }
-
- // draw detail images
- if ( ( layoutStyle & LB_MOD_SHOW_DETAIL_ICONS ) != 0 && dataModel->detailImageCount(row) > 0 )
- {
- drawImages( painter, opt, detailImageRect, dataModel->detailImages(row), &(dataModel->detailImageWidth(0)), dataModel->detailImageCount(row) );
- }
-
- // draw detail text
- if(detailTextRect.isValid())
- {
- SWT_LOG_DATA_4("Draw detail text; size=(%d, %d); topleft=(%d, %d)", detailTextRect.width(), detailTextRect.height(), detailTextRect.left(), detailTextRect.top() );
- drawDisplay( painter, opt, detailTextRect, dataModel->data(index, Qt::DisplayRole).toString() );
- drawFocus( painter, opt, detailTextRect);
- }
+ if ( ( layoutStyle & LB_MOD_SHOW_HEADING_ICONS ) != 0 && dataModel->headingImageCount(row) > 0 )
+ {
+ drawImages( painter, opt, headingImageRect, dataModel->headingImages(row), &(dataModel->headingImageWidth(0)), dataModel->headingImageCount(row) );
+ }
+
+ // draw detail images
+ if ( ( layoutStyle & LB_MOD_SHOW_DETAIL_ICONS ) != 0 && dataModel->detailImageCount(row) > 0 )
+ {
+ drawImages( painter, opt, detailImageRect, dataModel->detailImages(row), &(dataModel->detailImageWidth(0)), dataModel->detailImageCount(row) );
+ }
+
+ // draw detail text
+ if(detailTextRect.isValid())
+ {
+ SWT_LOG_DATA_4("Draw detail text; size=(%d, %d); topleft=(%d, %d)", detailTextRect.width(), detailTextRect.height(), detailTextRect.left(), detailTextRect.top() );
+ drawDisplay( painter, opt, detailTextRect, dataModel->data(index, Qt::DisplayRole).toString() );
+ drawFocus( painter, opt, detailTextRect);
+ }
- // draw heading text
- if ( headingTextRect.isValid() && ( ( layoutStyle & LB_STYLE_1LINE_ITEM ) != 0 || ( layoutStyle & LB_STYLE_2LINE_ITEM ) != 0 ))
- {
- if ( headingFont != NULL)
- {
- opt.font = *headingFont;
- opt.fontMetrics = QFontMetrics( *headingFont );
- }
-
- SWT_LOG_DATA_4("Draw heading text; size=(%d, %d); topleft=(%d, %d)", headingTextRect.width(), headingTextRect.height(), headingTextRect.right(), headingTextRect.top() );
- drawDisplay(painter, opt, headingTextRect, dataModel->headingText(row) );
- drawFocus(painter, opt, headingTextRect);
- }
-
+ // draw heading text
+ if ( headingTextRect.isValid() && ( ( layoutStyle & LB_STYLE_1LINE_ITEM ) != 0 || ( layoutStyle & LB_STYLE_2LINE_ITEM ) != 0 ))
+ {
+ if ( headingFont != NULL)
+ {
+ opt.font = *headingFont;
+ opt.fontMetrics = QFontMetrics( *headingFont );
+ }
+
+ SWT_LOG_DATA_4("Draw heading text; size=(%d, %d); topleft=(%d, %d)", headingTextRect.width(), headingTextRect.height(), headingTextRect.right(), headingTextRect.top() );
+ drawDisplay(painter, opt, headingTextRect, dataModel->headingText(row) );
+ drawFocus(painter, opt, headingTextRect);
+ }
+
painter->restore();
- }
+ }
void ListBoxItemDelegate::computeSizes( const QModelIndex& index, const QStyleOptionViewItem& option, QSize* checkSize,
- QSize *headingImageSize, QSize* detailImageSize, QSize* headingTextSize, QSize* detailTextSize ) const
- {
- SWT_LOG_FUNC_CALL();
- const int layoutStyle = dataModel->style();
-
- int imageMargin = margin(option);
- // go through every columns of heading images to get width of entire heading image area
- // go through every heading images in the row to get the height of entire heading image area
+ QSize *headingImageSize, QSize* detailImageSize, QSize* headingTextSize, QSize* detailTextSize ) const
+ {
+ SWT_LOG_FUNC_CALL();
+ const int layoutStyle = dataModel->style();
+
+ int imageMargin = margin(option);
+ // go through every columns of heading images to get width of entire heading image area
+ // go through every heading images in the row to get the height of entire heading image area
if ( ( layoutStyle & LB_MOD_SHOW_HEADING_ICONS ) != 0 && dataModel->headingImageCount() > 0 )
- {
- int width = 0;
- int height = 0;
- int headingImageCount = dataModel->headingImageCount();
- int itemHeadingImageCount = dataModel->headingImageCount(index.row());
- const QPixmap* pixmap;
- for( int i = 0; i < headingImageCount; i++)
- {
- width += dataModel->headingImageWidth(i);
- pixmap = &(dataModel->headingImages(index.row())[i]);
- if(i < itemHeadingImageCount && pixmap)
- {
- if( pixmap->size().height() > height )
- {
- height = pixmap->size().height();
- }
- }
- }
- width += (headingImageCount - 1) * imageMargin;
- *headingImageSize = QSize( width, height );
- SWT_LOG_DATA_3("heading image rect row=%d; size=(%d, %d);", index.row(), headingImageSize->width(), headingImageSize->height() );
- }
+ {
+ int width = 0;
+ int height = 0;
+ int headingImageCount = dataModel->headingImageCount();
+ int itemHeadingImageCount = dataModel->headingImageCount(index.row());
+ const QPixmap* pixmap;
+ for( int i = 0; i < headingImageCount; i++)
+ {
+ width += dataModel->headingImageWidth(i);
+ pixmap = &(dataModel->headingImages(index.row())[i]);
+ if(i < itemHeadingImageCount && pixmap)
+ {
+ if( pixmap->size().height() > height )
+ {
+ height = pixmap->size().height();
+ }
+ }
+ }
+ width += (headingImageCount - 1) * imageMargin;
+ *headingImageSize = QSize( width, height );
+ SWT_LOG_DATA_3("heading image rect row=%d; size=(%d, %d);", index.row(), headingImageSize->width(), headingImageSize->height() );
+ }
else
- {
- *headingImageSize = QSize();
- }
+ {
+ *headingImageSize = QSize();
+ }
- // go through every columns of detail images to get width of entire detail image area
- // go through every detail images in the row to get height of entire detial image area
+ // go through every columns of detail images to get width of entire detail image area
+ // go through every detail images in the row to get height of entire detial image area
if ( ( layoutStyle & LB_MOD_SHOW_DETAIL_ICONS ) != 0 && dataModel->detailImageCount() > 0 )
- {
- int width = 0;
- int height = 0;
- int detailImageCount = dataModel->detailImageCount();
- int itemDetailImageCount = dataModel->detailImageCount(index.row());
- const QPixmap* pixmap;
- for( int i = 0; i < detailImageCount; i++)
- {
- width += dataModel->detailImageWidth(i);
- pixmap = &(dataModel->detailImages(index.row())[i]);
- if(i < itemDetailImageCount && pixmap)
- {
- if( pixmap->size().height() > height )
- {
- height = pixmap->size().height();
- }
- }
- }
- width += (detailImageCount - 1) * imageMargin;
- *detailImageSize = QSize( width, height );
- SWT_LOG_DATA_3("detail image rect row=%d; size=(%d, %d);", index.row(), detailImageSize->width(), detailImageSize->height() );
- }
- else
- {
- *detailImageSize = QSize();
- }
+ {
+ int width = 0;
+ int height = 0;
+ int detailImageCount = dataModel->detailImageCount();
+ int itemDetailImageCount = dataModel->detailImageCount(index.row());
+ const QPixmap* pixmap;
+ for( int i = 0; i < detailImageCount; i++)
+ {
+ width += dataModel->detailImageWidth(i);
+ pixmap = &(dataModel->detailImages(index.row())[i]);
+ if(i < itemDetailImageCount && pixmap)
+ {
+ if( pixmap->size().height() > height )
+ {
+ height = pixmap->size().height();
+ }
+ }
+ }
+ width += (detailImageCount - 1) * imageMargin;
+ *detailImageSize = QSize( width, height );
+ SWT_LOG_DATA_3("detail image rect row=%d; size=(%d, %d);", index.row(), detailImageSize->width(), detailImageSize->height() );
+ }
+ else
+ {
+ *detailImageSize = QSize();
+ }
- const QStyleOptionViewItemV2* v2 = qstyleoption_cast< const QStyleOptionViewItemV2* >(&option);
+ const QStyleOptionViewItemV2* v2 = qstyleoption_cast< const QStyleOptionViewItemV2* >(&option);
const bool wrapText = v2->features & QStyleOptionViewItemV2::WrapText;
const int width = wrapText && option.rect.isValid() ? option.rect.width() : 0xffff;
-
- // compute width of heading text upon the item which has the longest heading text
- int row;
- if ( ( layoutStyle & LB_STYLE_1LINE_ITEM ) != 0 || ( layoutStyle & LB_STYLE_2LINE_ITEM ) != 0 )
- {
- row = dataModel->rowWithMaxHeadingTextSize();
- if( row > -1)
- {
- const QString& text = dataModel->headingText( row );
- if( !text.isNull() )
- {
- const QFont& font = headingFont ? *headingFont : option.font;
- *headingTextSize = textRectangle( width, font, text ).size();
- }
- }
- }
- else
- {
- *headingTextSize = QSize();
- }
-
- // compute width of detail text upon the item which has the longest detail text
- row = dataModel->rowWithMaxDetailTextSize();
- if( row > -1)
- {
- const QString& text = dataModel->data( index, Qt::DisplayRole).toString();
- if( !text.isNull() )
- {
- *detailTextSize = textRectangle( width, option.font, text ).size();
- }
- }
- else
- {
- *detailTextSize = QSize();
- }
-
+
+ // compute width of heading text upon the item which has the longest heading text
+ int row;
+ if ( ( layoutStyle & LB_STYLE_1LINE_ITEM ) != 0 || ( layoutStyle & LB_STYLE_2LINE_ITEM ) != 0 )
+ {
+ row = dataModel->rowWithMaxHeadingTextSize();
+ if( row > -1)
+ {
+ const QString& text = dataModel->headingText( row );
+ if( !text.isNull() )
+ {
+ const QFont& font = headingFont ? *headingFont : option.font;
+ *headingTextSize = textRectangle( width, font, text ).size();
+ }
+ }
+ }
+ else
+ {
+ *headingTextSize = QSize();
+ }
+
+ // compute width of detail text upon the item which has the longest detail text
+ row = dataModel->rowWithMaxDetailTextSize();
+ if( row > -1)
+ {
+ const QString& text = dataModel->data( index, Qt::DisplayRole).toString();
+ if( !text.isNull() )
+ {
+ *detailTextSize = textRectangle( width, option.font, text ).size();
+ }
+ }
+ else
+ {
+ *detailTextSize = QSize();
+ }
+
*checkSize = check( option, option.rect, Qt::Unchecked ).size();
}
void ListBoxItemDelegate::addMargins( const QStyleOptionViewItem &option, QSize* checkSize,
- QSize* headingImageSize, QSize* detailImageSize, QSize* headingTextSize, QSize* detailTextSize ) const
- {
- SWT_LOG_FUNC_CALL();
-
+ QSize* headingImageSize, QSize* detailImageSize, QSize* headingTextSize, QSize* detailTextSize ) const
+ {
+ SWT_LOG_FUNC_CALL();
+
const bool hasCheck = checkSize->isValid();
const bool hasHeadingImage = headingImageSize->isValid();
const bool hasDetailImage = detailImageSize->isValid();
@@ -1017,372 +1017,372 @@
// set height for text if text height is 0 and there is no image
if ( detailTextSize->height() == 0 && !hasHeadingImage && !hasDetailImage )
- {
+ {
detailTextSize->setHeight( option.fontMetrics.height() );
- }
- if ( headingTextSize->height() == 0 && !hasHeadingImage && !hasDetailImage )
- {
- if ( headingFont )
- {
- headingTextSize->setHeight( QFontMetrics( *headingFont ).height() );
- }
- else
- {
- headingTextSize->setHeight( detailTextSize->height() );
- }
- }
+ }
+ if ( headingTextSize->height() == 0 && !hasHeadingImage && !hasDetailImage )
+ {
+ if ( headingFont )
+ {
+ headingTextSize->setHeight( QFontMetrics( *headingFont ).height() );
+ }
+ else
+ {
+ headingTextSize->setHeight( detailTextSize->height() );
+ }
+ }
if ( hasHeadingImage )
- {
- headingImageSize->rwidth() += pixmapMargin * 2;
- }
+ {
+ headingImageSize->rwidth() += pixmapMargin * 2;
+ }
if ( hasDetailImage )
- {
- detailImageSize->rwidth() += pixmapMargin * 2;
- }
-
+ {
+ detailImageSize->rwidth() += pixmapMargin * 2;
+ }
+
if ( hasCheck )
- {
- checkSize->rwidth() += checkMargin * 2;
- }
- }
+ {
+ checkSize->rwidth() += checkMargin * 2;
+ }
+ }
QSize ListBoxItemDelegate::computeSize( const QStyleOptionViewItem &option, const QSize& check, const QSize& headingImage,
- const QSize& detailImage, const QSize& headingText, const QSize& detailText ) const
- {
- SWT_LOG_FUNC_CALL();
- const int layoutStyle = dataModel->style();
- int h, w;
+ const QSize& detailImage, const QSize& headingText, const QSize& detailText ) const
+ {
+ SWT_LOG_FUNC_CALL();
+ const int layoutStyle = dataModel->style();
+ int h, w;
if ( ( layoutStyle & LB_STYLE_2LINE_ITEM ) != 0 )
{
- const int textWidth = qMax( headingText.width(), detailText.width() );
- const int textMargin = margin(option);
+ const int textWidth = qMax( headingText.width(), detailText.width() );
+ const int textMargin = margin(option);
h = qMax( check.height(), qMax( headingText.height() + detailText.height() + textMargin,
- qMax( headingImage.height(), detailImage.height() ) ) );
+ qMax( headingImage.height(), detailImage.height() ) ) );
w = check.width() + textWidth + headingImage.width() + detailImage.width();
}
else
- {
+ {
h = qMax( check.height(), qMax( qMax( headingText.height(), detailText.height() ),
- qMax( headingImage.height(), detailImage.height() ) ) );
+ qMax( headingImage.height(), detailImage.height() ) ) );
w = check.width() + headingText.width() + detailText.width() + headingImage.width() + detailImage.width();
- }
-
- return QSize( w, h );
- }
+ }
+
+ return QSize( w, h );
+ }
void ListBoxItemDelegate::layoutRects( const QStyleOptionViewItem &option, QRect* check, QRect *headingImage,
- QRect* detailImage, QRect* headingText, QRect* detailText, bool hint ) const
- {
- SWT_LOG_FUNC_CALL();
-
- const int layoutStyle = dataModel->style();
- int h, w;
- int textWidth;
- if( ( layoutStyle & LB_STYLE_2LINE_ITEM ) != 0 )
- {
- textWidth = qMax( headingText->width(), detailText->width() );
- }
- else
- {
- textWidth = headingText->width() + detailText->width();
- }
-
+ QRect* detailImage, QRect* headingText, QRect* detailText, bool hint ) const
+ {
+ SWT_LOG_FUNC_CALL();
+
+ const int layoutStyle = dataModel->style();
+ int h, w;
+ int textWidth;
+ if( ( layoutStyle & LB_STYLE_2LINE_ITEM ) != 0 )
+ {
+ textWidth = qMax( headingText->width(), detailText->width() );
+ }
+ else
+ {
+ textWidth = headingText->width() + detailText->width();
+ }
+
if ( hint )
- {
- QSize size = computeSize( option, check->size(), headingImage->size(), detailImage->size(), headingText->size(), detailText->size() );
- h = size.height();
- w = size.width();
- }
- else
- {
+ {
+ QSize size = computeSize( option, check->size(), headingImage->size(), detailImage->size(), headingText->size(), detailText->size() );
+ h = size.height();
+ w = size.width();
+ }
+ else
+ {
w = option.rect.width();
h = option.rect.height();
- }
- const int x = option.rect.left(), y = option.rect.top();
- SWT_LOG_DATA_4("space for layout: size=(%d, %d); topleft=(%d, %d)", w, h, x, y );
-
- int leftX = x, rightX = x + w;
- if ( option.direction == Qt::RightToLeft )
- {
- if ( check->isValid() )
- {
+ }
+ const int x = option.rect.left(), y = option.rect.top();
+ SWT_LOG_DATA_4("space for layout: size=(%d, %d); topleft=(%d, %d)", w, h, x, y );
+
+ int leftX = x, rightX = x + w;
+ if ( option.direction == Qt::RightToLeft )
+ {
+ if ( check->isValid() )
+ {
check->setRect( qMax( rightX - check->width(), leftX ) , y, qMin( check->width(), rightX - leftX ), h );
rightX = check->left();
- }
-
+ }
+
if ( headingImage->isValid() )
- {
- if ( rightX > leftX )
- {
- headingImage->setRect( qMax( rightX - headingImage->width(), leftX ), y, qMin( headingImage->width(), rightX - leftX ) , h );
- rightX = headingImage->left();
- }
- else
- {
- *headingImage = QRect();
- }
- }
-
+ {
+ if ( rightX > leftX )
+ {
+ headingImage->setRect( qMax( rightX - headingImage->width(), leftX ), y, qMin( headingImage->width(), rightX - leftX ) , h );
+ rightX = headingImage->left();
+ }
+ else
+ {
+ *headingImage = QRect();
+ }
+ }
+
if ( detailImage->isValid() )
- {
- if ( rightX > leftX )
- {
- int detailImageX = leftX;
- int detailImageWidth = detailImage->width();
- if( (rightX -leftX) >= (textWidth + detailImageWidth) )
- {
- detailImageX = rightX - textWidth - detailImageWidth;
- }
- else
- {
- detailImageX = qMin( rightX, leftX + detailImageWidth );
- }
- detailImage->setRect( detailImageX, y, qMin( detailImageWidth, rightX - detailImageX ), h );
- leftX = detailImage->right();
- }
- else
- {
- *detailImage = QRect();
- }
- }
-
+ {
+ if ( rightX > leftX )
+ {
+ int detailImageX = leftX;
+ int detailImageWidth = detailImage->width();
+ if( (rightX -leftX) >= (textWidth + detailImageWidth) )
+ {
+ detailImageX = rightX - textWidth - detailImageWidth;
+ }
+ else
+ {
+ detailImageX = qMin( rightX, leftX + detailImageWidth );
+ }
+ detailImage->setRect( detailImageX, y, qMin( detailImageWidth, rightX - detailImageX ), h );
+ leftX = detailImage->right();
+ }
+ else
+ {
+ *detailImage = QRect();
+ }
+ }
+
if ( ( layoutStyle & LB_STYLE_2LINE_ITEM ) != 0 )
{
- if ( rightX > leftX )
- {
- const int textMargin = margin(option);
- headingText->setRect( qMax( leftX, rightX - textWidth ), y, qMin( textWidth, rightX - leftX ), headingText->height() );
- detailText->setRect( headingText->left(), headingText->bottom() + textMargin, headingText->width(), detailText->height() );
- }
- else
- {
- *headingText = QRect();
- *detailText = QRect();
- }
+ if ( rightX > leftX )
+ {
+ const int textMargin = margin(option);
+ headingText->setRect( qMax( leftX, rightX - textWidth ), y, qMin( textWidth, rightX - leftX ), headingText->height() );
+ detailText->setRect( headingText->left(), headingText->bottom() + textMargin, headingText->width(), detailText->height() );
+ }
+ else
+ {
+ *headingText = QRect();
+ *detailText = QRect();
+ }
}
else
- {
- if ( headingText->isValid() )
- {
- if ( rightX > leftX )
- {
- headingText->setRect( qMax( rightX - headingText->width(), leftX ), y, qMin( headingText->width(), rightX - leftX ) , h );
- rightX = headingText->left();
- }
- else
- {
- *headingText = QRect();
- }
- }
-
- if ( detailText->isValid() )
- {
- if ( rightX > leftX )
- {
- detailText->setRect( qMax( rightX - detailText->width(), leftX ), y, qMin( detailText->width(), rightX - leftX ) , h );
- }
- else
- {
- *detailText = QRect();
- }
- }
- }
- }
- else // left to right
- {
- if (check->isValid() )
- {
+ {
+ if ( headingText->isValid() )
+ {
+ if ( rightX > leftX )
+ {
+ headingText->setRect( qMax( rightX - headingText->width(), leftX ), y, qMin( headingText->width(), rightX - leftX ) , h );
+ rightX = headingText->left();
+ }
+ else
+ {
+ *headingText = QRect();
+ }
+ }
+
+ if ( detailText->isValid() )
+ {
+ if ( rightX > leftX )
+ {
+ detailText->setRect( qMax( rightX - detailText->width(), leftX ), y, qMin( detailText->width(), rightX - leftX ) , h );
+ }
+ else
+ {
+ *detailText = QRect();
+ }
+ }
+ }
+ }
+ else // left to right
+ {
+ if (check->isValid() )
+ {
check->setRect( leftX, y, qMin( check->width(), rightX - leftX ), h );
leftX = check->right();
- }
-
+ }
+
if ( headingImage->isValid() )
- {
- if ( rightX > leftX )
- {
- headingImage->setRect( leftX, y, qMin( headingImage->width(), rightX - leftX ) , h );
- leftX = headingImage->right();
- }
- else
- {
- *headingImage = QRect();
- }
- }
-
+ {
+ if ( rightX > leftX )
+ {
+ headingImage->setRect( leftX, y, qMin( headingImage->width(), rightX - leftX ) , h );
+ leftX = headingImage->right();
+ }
+ else
+ {
+ *headingImage = QRect();
+ }
+ }
+
if ( detailImage->isValid() )
- {
- if ( rightX > leftX )
- {
- int detailImageX = leftX;
- int detailImageWidth = detailImage->width();
- if( (rightX -leftX) >= (textWidth + detailImageWidth) )
- {
- detailImageX = leftX + textWidth;
- }
- else
- {
- detailImageX = qMax( leftX, rightX - detailImageWidth );
- }
- detailImage->setRect( detailImageX, y, qMin( detailImageWidth, rightX - detailImageX ), h );
- rightX = detailImage->left();
- }
- else
- {
- *detailImage = QRect();
- }
- }
-
+ {
+ if ( rightX > leftX )
+ {
+ int detailImageX = leftX;
+ int detailImageWidth = detailImage->width();
+ if( (rightX -leftX) >= (textWidth + detailImageWidth) )
+ {
+ detailImageX = leftX + textWidth;
+ }
+ else
+ {
+ detailImageX = qMax( leftX, rightX - detailImageWidth );
+ }
+ detailImage->setRect( detailImageX, y, qMin( detailImageWidth, rightX - detailImageX ), h );
+ rightX = detailImage->left();
+ }
+ else
+ {
+ *detailImage = QRect();
+ }
+ }
+
if ( ( layoutStyle & LB_STYLE_2LINE_ITEM ) != 0 )
{
- if ( rightX > leftX )
- {
- const QStyleOptionViewItemV3 *v3 = qstyleoption_cast<const QStyleOptionViewItemV3 *>(&option);
- const QWidget* widget = v3 ? v3->widget : NULL;
- QStyle* style = widget ? widget->style() : QApplication::style();
- const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, widget) + 1;
- headingText->setRect( leftX , y, qMin( textWidth, rightX - leftX ), headingText->height() );
- detailText->setRect( headingText->left(), headingText->bottom() + textMargin, headingText->width(), detailText->height() );
- }
- else
- {
- *headingText = QRect();
- *detailText = QRect();
- }
+ if ( rightX > leftX )
+ {
+ const QStyleOptionViewItemV3 *v3 = qstyleoption_cast<const QStyleOptionViewItemV3 *>(&option);
+ const QWidget* widget = v3 ? v3->widget : NULL;
+ QStyle* style = widget ? widget->style() : QApplication::style();
+ const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, widget) + 1;
+ headingText->setRect( leftX , y, qMin( textWidth, rightX - leftX ), headingText->height() );
+ detailText->setRect( headingText->left(), headingText->bottom() + textMargin, headingText->width(), detailText->height() );
+ }
+ else
+ {
+ *headingText = QRect();
+ *detailText = QRect();
+ }
}
else
- {
- if ( headingText->isValid() )
- {
- if ( rightX > leftX )
- {
- headingText->setRect( leftX, y, qMin( headingText->width(), rightX - leftX ) , h );
- leftX = headingText->right();
- }
- else
- {
- *headingText = QRect();
- }
- }
-
- if ( detailText->isValid() )
- {
- if ( rightX > leftX )
- {
- detailText->setRect( leftX, y, qMin( detailText->width(), rightX - leftX ) , h );
- }
- else
- {
- *detailText = QRect();
- }
- }
- }
- }
- SWT_LOG_DATA_4("check rect: size=(%d, %d); topleft=(%d, %d)", check->width(), check->height(), check->left(), check->top() );
- SWT_LOG_DATA_4("heading image rect: size=(%d, %d); topleft=(%d, %d)", headingImage->width(), headingImage->height(), headingImage->left(), headingImage->top() );
- SWT_LOG_DATA_4("detail image rect: size=(%d, %d); topleft=(%d, %d)", detailImage->width(), detailImage->height(), detailImage->left(), detailImage->top() );
- SWT_LOG_DATA_4("heading text rect: size=(%d, %d); topleft=(%d, %d)", headingText->width(), headingText->height(), headingText->left(), headingText->top() );
- SWT_LOG_DATA_4("detail text rect: size=(%d, %d); topleft=(%d, %d)", detailText->width(), detailText->height(), detailText->left(), detailText->top() );
-
- }
+ {
+ if ( headingText->isValid() )
+ {
+ if ( rightX > leftX )
+ {
+ headingText->setRect( leftX, y, qMin( headingText->width(), rightX - leftX ) , h );
+ leftX = headingText->right();
+ }
+ else
+ {
+ *headingText = QRect();
+ }
+ }
+
+ if ( detailText->isValid() )
+ {
+ if ( rightX > leftX )
+ {
+ detailText->setRect( leftX, y, qMin( detailText->width(), rightX - leftX ) , h );
+ }
+ else
+ {
+ *detailText = QRect();
+ }
+ }
+ }
+ }
+ SWT_LOG_DATA_4("check rect: size=(%d, %d); topleft=(%d, %d)", check->width(), check->height(), check->left(), check->top() );
+ SWT_LOG_DATA_4("heading image rect: size=(%d, %d); topleft=(%d, %d)", headingImage->width(), headingImage->height(), headingImage->left(), headingImage->top() );
+ SWT_LOG_DATA_4("detail image rect: size=(%d, %d); topleft=(%d, %d)", detailImage->width(), detailImage->height(), detailImage->left(), detailImage->top() );
+ SWT_LOG_DATA_4("heading text rect: size=(%d, %d); topleft=(%d, %d)", headingText->width(), headingText->height(), headingText->left(), headingText->top() );
+ SWT_LOG_DATA_4("detail text rect: size=(%d, %d); topleft=(%d, %d)", detailText->width(), detailText->height(), detailText->left(), detailText->top() );
+
+ }
void ListBoxItemDelegate::doLayout( const QStyleOptionViewItem &option, QRect* checkRect, QRect* headingImageRect,
- QRect* detailImageRect, QRect* headingTextRect, QRect* detailTextRect ) const
- {
+ QRect* detailImageRect, QRect* headingTextRect, QRect* detailTextRect ) const
+ {
Q_ASSERT( checkRect && headingImageRect && detailImageRect && headingTextRect && detailTextRect );
// duplicate rects
- QRect check = *checkRect;
- QRect headingImage = *headingImageRect;
- QRect detailImage = *detailImageRect;
- QRect headingText = *headingTextRect;
- QRect detailText = *detailTextRect;
-
- // layout duplicated rects
- layoutRects( option, &check, &headingImage, &detailImage, &headingText, &detailText, false );
-
+ QRect check = *checkRect;
+ QRect headingImage = *headingImageRect;
+ QRect detailImage = *detailImageRect;
+ QRect headingText = *headingTextRect;
+ QRect detailText = *detailTextRect;
+
+ // layout duplicated rects
+ layoutRects( option, &check, &headingImage, &detailImage, &headingText, &detailText, false );
+
- // remove margins
- const int mg = margin(option);
- if( checkRect->isValid() )
- {
- checkRect->setRight( checkRect->right() - 2 * mg );
- }
- if( headingImageRect->isValid() )
- {
- headingImageRect->setRight( headingImageRect->right() - 2 * mg );
- }
- if( detailImageRect->isValid() )
- {
- detailImageRect->setRight( detailImageRect->right() - 2 * mg );
- }
-
- // adust rectangles
+ // remove margins
+ const int mg = margin(option);
+ if( checkRect->isValid() )
+ {
+ checkRect->setRight( checkRect->right() - 2 * mg );
+ }
+ if( headingImageRect->isValid() )
+ {
+ headingImageRect->setRight( headingImageRect->right() - 2 * mg );
+ }
+ if( detailImageRect->isValid() )
+ {
+ detailImageRect->setRight( detailImageRect->right() - 2 * mg );
+ }
+
+ // adust rectangles
*checkRect = QStyle::alignedRect( option.direction, Qt::AlignCenter, checkRect->size(), check );
*headingImageRect = QStyle::alignedRect( option.direction, option.decorationAlignment, headingImageRect->size(), headingImage );
*detailImageRect = QStyle::alignedRect( option.direction, option.decorationAlignment, detailImageRect->size().boundedTo(detailImage.size()), detailImage );
if (option.showDecorationSelected)
- {
- // take up entire space
+ {
+ // take up entire space
*headingTextRect = headingText;
*detailTextRect = detailText;
- }
+ }
else
- {
- // aligne to the space
+ {
+ // aligne to the space
*headingTextRect = QStyle::alignedRect( option.direction, option.displayAlignment,
- headingTextRect->size().boundedTo(headingText.size()), headingText );
+ headingTextRect->size().boundedTo(headingText.size()), headingText );
*detailTextRect = QStyle::alignedRect( option.direction, option.displayAlignment,
- detailTextRect->size().boundedTo(detailText.size()), detailText );
- }
- }
+ detailTextRect->size().boundedTo(detailText.size()), detailText );
+ }
+ }
QSize ListBoxItemDelegate::sizeHint(const QStyleOptionViewItem &option,
- const QModelIndex &index) const
- {
- SWT_LOG_FUNC_CALL();
-
- QSize checkSize;
- QSize headingImageSize;
- QSize detailImageSize;
- QSize headingTextSize;
- QSize detailTextSize;
+ const QModelIndex &index) const
+ {
+ SWT_LOG_FUNC_CALL();
+
+ QSize checkSize;
+ QSize headingImageSize;
+ QSize detailImageSize;
+ QSize headingTextSize;
+ QSize detailTextSize;
- computeSizes( index, option, &checkSize, &headingImageSize, &detailImageSize, &headingTextSize, &detailTextSize );
- addMargins( option, &checkSize, &headingImageSize, &detailImageSize, &headingTextSize, &detailTextSize );
- SWT_LOG_DATA_2("check size=(%d, %d) ", checkSize.width(), checkSize.height() );
- SWT_LOG_DATA_2("heading image size=(%d, %d) ", headingImageSize.width(), headingImageSize.height() );
- SWT_LOG_DATA_2("detail imageSize size=(%d, %d) ", detailImageSize.width(), detailImageSize.height() );
- SWT_LOG_DATA_2("headingText size=(%d, %d) ", headingTextSize.width(), headingTextSize.height() );
- SWT_LOG_DATA_2("detail text size=(%d, %d) ", detailTextSize.width(), detailTextSize.height() );
- QSize size = computeSize( option, checkSize, headingImageSize, detailImageSize, headingTextSize, detailTextSize );
- SWT_LOG_DATA_2("hint size=(%d, %d) ", size.width(), size.height() );
- dataModel->updateLayoutData( index.row(), size.height(),
- QPoint( detailTextSize.width(), detailTextSize.height() ),
- QPoint( headingTextSize.width(), headingTextSize.height() ),
- detailImageSize.width(), headingImageSize.width() );
+ computeSizes( index, option, &checkSize, &headingImageSize, &detailImageSize, &headingTextSize, &detailTextSize );
+ addMargins( option, &checkSize, &headingImageSize, &detailImageSize, &headingTextSize, &detailTextSize );
+ SWT_LOG_DATA_2("check size=(%d, %d) ", checkSize.width(), checkSize.height() );
+ SWT_LOG_DATA_2("heading image size=(%d, %d) ", headingImageSize.width(), headingImageSize.height() );
+ SWT_LOG_DATA_2("detail imageSize size=(%d, %d) ", detailImageSize.width(), detailImageSize.height() );
+ SWT_LOG_DATA_2("headingText size=(%d, %d) ", headingTextSize.width(), headingTextSize.height() );
+ SWT_LOG_DATA_2("detail text size=(%d, %d) ", detailTextSize.width(), detailTextSize.height() );
+ QSize size = computeSize( option, checkSize, headingImageSize, detailImageSize, headingTextSize, detailTextSize );
+ SWT_LOG_DATA_2("hint size=(%d, %d) ", size.width(), size.height() );
+ dataModel->updateLayoutData( index.row(), size.height(),
+ QPoint( detailTextSize.width(), detailTextSize.height() ),
+ QPoint( headingTextSize.width(), headingTextSize.height() ),
+ detailImageSize.width(), headingImageSize.width() );
return size;
- }
-
+ }
+
void ListBoxItemDelegate::setHeadingFont( QFont* font )
- {
- SWT_LOG_FUNC_CALL();
- headingFont = font;
- }
-
+ {
+ SWT_LOG_FUNC_CALL();
+ headingFont = font;
+ }
+
QStyleOptionViewItem ListBoxItemDelegate::setOptions(const QModelIndex &index,
- const QStyleOptionViewItem &option) const
- {
- SWT_LOG_FUNC_CALL();
+ const QStyleOptionViewItem &option) const
+ {
+ SWT_LOG_FUNC_CALL();
QStyleOptionViewItem opt = option;
- // ask data modle for font, alignment and brush, then set them
-
+ // ask data modle for font, alignment and brush, then set them
+
// set font
QVariant value = index.data(Qt::FontRole);
if (value.isValid()){
@@ -1401,11 +1401,11 @@
opt.palette.setBrush(QPalette::Text, qvariant_cast<QBrush>(value));
return opt;
- }
+ }
QRect ListBoxItemDelegate::textRectangle( const int width, const QFont &font, const QString &text) const
- {
- SWT_LOG_FUNC_CALL();
+ {
+ SWT_LOG_FUNC_CALL();
QTextOption textOption;
textOption.setWrapMode(QTextOption::WordWrap);
textLayout.setTextOption( textOption );
@@ -1415,83 +1415,83 @@
QString replaceText = text;
const QChar nl = QLatin1Char('\n');
for (int i = 0; i < text.count(); ++i)
- {
+ {
if (replaceText.at(i) == nl)
replaceText[i] = QChar::LineSeparator;
- }
+ }
textLayout.setText( replaceText );
qreal height = 0;
qreal widthUsed = 0;
textLayout.beginLayout();
while (true)
- {
+ {
QTextLine line = textLayout.createLine();
if ( !line.isValid() )
- {
+ {
break;
- }
+ }
line.setLineWidth( width );
line.setPosition( QPointF( 0, height ) );
height += line.height();
widthUsed = qMax( widthUsed, line.naturalTextWidth() );
- }
+ }
textLayout.endLayout();
QSize size = QSizeF(widthUsed, height).toSize();
const int textMargin = QApplication::style()->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1;
return QRect(0, 0, size.width() + 2 * textMargin, size.height());
- }
+ }
int ListBoxItemDelegate::margin( const QStyleOptionViewItem &option ) const
- {
- const QStyleOptionViewItemV3 *v3 = qstyleoption_cast<const QStyleOptionViewItemV3 *>(&option);
- const QWidget* widget = v3 ? v3->widget : NULL;
+ {
+ const QStyleOptionViewItemV3 *v3 = qstyleoption_cast<const QStyleOptionViewItemV3 *>(&option);
+ const QWidget* widget = v3 ? v3->widget : NULL;
QStyle* style = widget ? widget->style() : QApplication::style();
- return style->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, widget) + 1;
- }
+ return style->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, widget) + 1;
+ }
void ListBoxItemDelegate::drawImages( QPainter* painter, const QStyleOptionViewItem &option,
- const QRect imageRect, const QList<QPixmap>& images, const int* imageWidths, const int imageCount ) const
- {
- SWT_LOG_FUNC_CALL();
- SWT_LOG_DATA_4( "Heading image rect, row=%d: size=(%d, %d); topleft=(%d, %d)", imageRect.width(), imageRect.height(), imageRect.left(), imageRect.top() );
- const int imageMargin = margin(option);
- const int top = imageRect.top();
- const int height = imageRect.height();
- int left = imageRect.left();
- int right = left;
- QRect rect;
- if( option.direction == Qt::RightToLeft )
- {
- right = imageRect.right();
- left=right;
- for( int i = 0; i < imageCount; i++)
- {
- left -= imageWidths[i];
- rect = QRect( left, top, right - left, height );
- if( !rect.isValid() )break;
- rect = QStyle::alignedRect( option.direction, option.decorationAlignment, images[i].size(), rect );
- drawDecoration( painter, option, rect, images[i] );
- SWT_LOG_DATA_5("Image No.%d, size=(%d, %d); topleft=(%d, %d)", i, right - left, height, left, top );
- right = left - imageMargin;
- left = right;
- }
- }
- else
- {
- for( int i = 0; i < imageCount; i++)
- {
- right += imageWidths[i];
- rect = QRect( left, top, right - left, height );
- if( !rect.isValid() )break;
- rect = QStyle::alignedRect( option.direction, option.decorationAlignment, images[i].size(), rect );
- drawDecoration( painter, option, rect, images[i] );
- SWT_LOG_DATA_5("Image No.%d, size=(%d, %d); topleft=(%d, %d)", i, right - left, height, left, top );
- left = right + imageMargin;
- right = left;
- }
- }
- }
+ const QRect imageRect, const QList<QPixmap>& images, const int* imageWidths, const int imageCount ) const
+ {
+ SWT_LOG_FUNC_CALL();
+ SWT_LOG_DATA_4( "Heading image rect, row=%d: size=(%d, %d); topleft=(%d, %d)", imageRect.width(), imageRect.height(), imageRect.left(), imageRect.top() );
+ const int imageMargin = margin(option);
+ const int top = imageRect.top();
+ const int height = imageRect.height();
+ int left = imageRect.left();
+ int right = left;
+ QRect rect;
+ if( option.direction == Qt::RightToLeft )
+ {
+ right = imageRect.right();
+ left=right;
+ for( int i = 0; i < imageCount; i++)
+ {
+ left -= imageWidths[i];
+ rect = QRect( left, top, right - left, height );
+ if( !rect.isValid() )break;
+ rect = QStyle::alignedRect( option.direction, option.decorationAlignment, images[i].size(), rect );
+ drawDecoration( painter, option, rect, images[i] );
+ SWT_LOG_DATA_5("Image No.%d, size=(%d, %d); topleft=(%d, %d)", i, right - left, height, left, top );
+ right = left - imageMargin;
+ left = right;
+ }
+ }
+ else
+ {
+ for( int i = 0; i < imageCount; i++)
+ {
+ right += imageWidths[i];
+ rect = QRect( left, top, right - left, height );
+ if( !rect.isValid() )break;
+ rect = QStyle::alignedRect( option.direction, option.decorationAlignment, images[i].size(), rect );
+ drawDecoration( painter, option, rect, images[i] );
+ SWT_LOG_DATA_5("Image No.%d, size=(%d, %d); topleft=(%d, %d)", i, right - left, height, left, top );
+ left = right + imageMargin;
+ right = left;
+ }
+ }
+ }