123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- // Qt include
- #include <QGridLayout>
- #include <QResizeEvent>
- // ctkDICOMWidgets includes
- #include "ctkDICOMThumbnailListWidget.h"
- #include "ui_ctkDICOMThumbnailListWidget.h"
- #include "ctkDICOMThumbnailWidget.h"
- // STD includes
- #include <iostream>
- //----------------------------------------------------------------------------
- class ctkDICOMThumbnailListWidgetPrivate: public Ui_ctkDICOMThumbnailListWidget
- {
- public:
- ctkDICOMThumbnailListWidgetPrivate(){}
- void rearrangeThumbnails();
- QList<ctkDICOMThumbnailWidget*> thumbnailList;
- int maxColumnNum;
- int thumbnailWidth;
- };
- //----------------------------------------------------------------------------
- // ctkDICOMThumbnailListWidgetPrivate methods
- void ctkDICOMThumbnailListWidgetPrivate::rearrangeThumbnails(){
- int count = this->thumbnailList.count();
- // clear all thumbnails from layout
- for(int i = 0; i < count; i++){
- this->thumbnailLayout->removeWidget(this->thumbnailList.at(i));
- }
- // add all thumbnails to layout with new arrangement
- int row = 0;
- int column = 0;
- for(int i = 0; i < count; i++){
- this->thumbnailLayout->addWidget(this->thumbnailList.at(i), row, column);
- column++;
- if(column >= this->maxColumnNum){
- column = 0;
- row++;
- }
- }
- }
- //----------------------------------------------------------------------------
- // ctkDICOMThumbnailListWidget methods
- //----------------------------------------------------------------------------
- ctkDICOMThumbnailListWidget::ctkDICOMThumbnailListWidget(QWidget* _parent):Superclass(_parent),
- d_ptr(new ctkDICOMThumbnailListWidgetPrivate)
- {
- Q_D(ctkDICOMThumbnailListWidget);
-
- d->setupUi(this);
- d->maxColumnNum = 4;
- d->thumbnailWidth = 128;
- }
- //----------------------------------------------------------------------------
- ctkDICOMThumbnailListWidget::~ctkDICOMThumbnailListWidget()
- {
- }
- void ctkDICOMThumbnailListWidget::clearThumbnail(){
- Q_D(ctkDICOMThumbnailListWidget);
-
- int count = d->thumbnailList.count();
- // clear all thumbnails from layout
- for(int i = 0; i < count; i++){
- d->thumbnailLayout->removeWidget(d->thumbnailList.at(i));
- }
- d->thumbnailList.clear();
- }
- void ctkDICOMThumbnailListWidget::addThumbnail(ctkDICOMThumbnailWidget* widget){
- Q_D(ctkDICOMThumbnailListWidget);
- if(widget == NULL)return;
- d->thumbnailList.push_back(widget);
- int count = d->thumbnailList.count();
- int lastRow = (count/d->maxColumnNum);
- int lastColumn = (count%d->maxColumnNum);
- int nextRow = (lastRow+((lastColumn+1)/d->maxColumnNum));
- int nextColumn = (lastColumn+1)%d->maxColumnNum;
- d->thumbnailLayout->addWidget(widget, nextRow, nextColumn);
- }
- void ctkDICOMThumbnailListWidget::addTestThumbnail(){
- Q_D(ctkDICOMThumbnailListWidget);
- for(int i = 0; i<11; i++){
- ctkDICOMThumbnailWidget* widget = new ctkDICOMThumbnailWidget(this);
- QString text("Thumbnail: ");
- widget->setMaximumWidth(d->thumbnailWidth);
- widget->setText(text);
- this->addThumbnail(widget);
- }
- }
- void ctkDICOMThumbnailListWidget::setThumbnailWidth(int width){
- Q_D(ctkDICOMThumbnailListWidget);
-
- d->thumbnailWidth = width;
- d->maxColumnNum = this->width()/d->thumbnailWidth;
- d->rearrangeThumbnails();
- }
- void ctkDICOMThumbnailListWidget::resizeEvent ( QResizeEvent * event ){
- Q_D(ctkDICOMThumbnailListWidget);
-
- d->maxColumnNum = event->size().width()/d->thumbnailWidth;
- d->rearrangeThumbnails();
- }
|