view_container_widget.cpp

00001 //--------------------------------------------------
00012 //---------------------------------------------------
00013 #include "view_container_widget.h"
00014 
00015 #include <vector>
00016 #include <math.h>
00017 
00018 #include <QGridLayout>
00019 
00020 #include "../viewer/view.h"
00021 #include "../controller/controller.h"
00022 
00023 namespace imedgine 
00024 {
00025 
00026   ViewContainerWidget::ViewContainerWidget(QWidget *parent)
00027   : QWidget(parent)
00028   {
00029     layout_ = new QGridLayout(this);
00030   }
00031   
00032   
00033   ViewContainerWidget::~ViewContainerWidget()
00034   {
00035     //std::cout << "Deleting viewcontainerwidget" << std::endl;
00036   
00037     Controller::getInstance().deleteViews(holded_views_);
00038   }
00039   
00040   void ViewContainerWidget::addViews(
00041       std::vector<view_pointer_type> const& widget_vector)
00042   {
00043     //std::cout << "entered addViews" << std::endl;
00044     //std::cout << "the size is: " << widget_vector.size() << std::endl;
00045     //FIXME insert Error handling here
00046     //if( widget_vector.size() == 0 )
00047     //{
00048     //  return -1;
00049     //}
00050     int cols = 0;
00051     int rows = 0;
00052     if(widget_vector.size() == 3)
00053     {
00054       rows = 2;
00055       cols = 2;
00056     }
00057     else
00058     {
00059       cols = static_cast<int>(ceil( 
00060         sqrt( static_cast<double>(widget_vector.size()) ) ) );
00061       rows = static_cast<int>(ceil( 
00062         sqrt( static_cast<double>(widget_vector.size()) ) ) );
00063     }
00064 
00065     std::vector<view_pointer_type>::const_iterator view_iterator
00066       = widget_vector.begin();
00067 
00068     for ( int row_counter = 1; row_counter <= rows; ++row_counter)
00069     {
00070       for ( int col_counter = 1; col_counter <= cols; ++col_counter)
00071       {
00072         if( view_iterator != widget_vector.end() )
00073         {
00074           QWidget* tempWidget = new QWidget(this);
00075 
00076           holded_views_.push_back( (*view_iterator)->getViewID() );
00077 
00078           (*view_iterator)->setParent(tempWidget);
00079 
00080           (*view_iterator)->updateView();
00081           layout_->addWidget(tempWidget, row_counter, col_counter);
00082 
00083           ++view_iterator;
00084         }
00085       }
00086     }
00087   }
00088 
00089   view_id_container_type ViewContainerWidget::getHoldedViews()
00090   {
00091     return holded_views_;
00092   }
00093 }

Generated on Sun Aug 13 18:19:40 2006 for iMEDgine by  doxygen 1.4.6