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
00036
00037 Controller::getInstance().deleteViews(holded_views_);
00038 }
00039
00040 void ViewContainerWidget::addViews(
00041 std::vector<view_pointer_type> const& widget_vector)
00042 {
00043
00044
00045
00046
00047
00048
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 }