00001
00002
00013
00014
00015 #include "settings_dialog.h"
00016 #include "algorithm_settings_widget.h"
00017 #include "window_level_settings_widget.h"
00018
00019 namespace imedgine {
00020
00021
00022
00023 SettingsDialog::SettingsDialog(QWidget* parent)
00024 : QDialog(parent),
00025 algorithm_settings_widget_(0),
00026 window_level_settings_widget_(0)
00027 {
00028 setupUi(this);
00029 initializePages();
00030
00031 }
00032
00033
00034
00035 SettingsDialog::~SettingsDialog()
00036 {
00037
00038 }
00039
00040
00041
00042
00043 void SettingsDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous)
00044 {
00045 if (!current)
00046 {
00047 current = previous;
00048 }
00049
00050 pages_stacked_widget_->setCurrentIndex(page_selection_list_widget_->row(current));
00051 }
00052
00053
00054
00055 void SettingsDialog::checkChanges()
00056 {
00057 for(int count = 0; count < pages_stacked_widget_->count(); count++)
00058 {
00059 (dynamic_cast<SettingsWidgetInterface*>(pages_stacked_widget_->widget(count)))->
00060 checkChanges();
00061 }
00062 }
00063
00064
00065
00066 void SettingsDialog::setupUi(QDialog* settings_dialog)
00067 {
00068 main_grid_layout_ = new QGridLayout(settings_dialog);
00069 pages_stacked_widget_ = new QStackedWidget(settings_dialog);
00070 pages_stacked_widget_->setMinimumSize(QSize(100, 16));
00071
00072 main_grid_layout_->addWidget(pages_stacked_widget_, 0, 1, 1, 1);
00073
00074 page_selection_list_widget_ = new QListWidget(settings_dialog);
00075 page_selection_list_widget_->setMaximumSize(QSize(100, 16777215));
00076
00077 main_grid_layout_->addWidget(page_selection_list_widget_, 0, 0, 1, 1);
00078
00079 button_layout_ = new QHBoxLayout();
00080 spacer_item_ = new QSpacerItem(81, 31, QSizePolicy::Expanding, QSizePolicy::Minimum);
00081
00082 button_layout_->addItem(spacer_item_);
00083
00084 ok_push_button_ = new QPushButton(settings_dialog);
00085 ok_push_button_->setText(tr("OK"));
00086
00087 button_layout_->addWidget(ok_push_button_);
00088
00089 apply_push_button_ = new QPushButton(settings_dialog);
00090 apply_push_button_->setText(tr("Apply"));
00091
00092 button_layout_->addWidget(apply_push_button_);
00093
00094 cancel_push_button_ = new QPushButton(settings_dialog);
00095 cancel_push_button_->setText(tr("Cancel"));
00096
00097 button_layout_->addWidget(cancel_push_button_);
00098
00099 main_grid_layout_->addLayout(button_layout_, 1, 0, 1, 2);
00100
00101 connect(ok_push_button_, SIGNAL(clicked()),
00102 settings_dialog, SLOT(accept()));
00103 connect(cancel_push_button_, SIGNAL(clicked()),
00104 settings_dialog, SLOT(reject()));
00105
00106 }
00107
00108
00109
00110 void SettingsDialog::initializePages()
00111 {
00112
00113 window_level_settings_widget_ = new WindowLevelSettingsWidget(pages_stacked_widget_);
00114 pages_stacked_widget_->addWidget(window_level_settings_widget_);
00115 pages_stacked_widget_->setCurrentWidget(window_level_settings_widget_);
00116
00117 QListWidgetItem* window_level_settings_item =
00118 new QListWidgetItem(page_selection_list_widget_);
00119 window_level_settings_item->setText(tr("Window / Level"));
00120
00121 algorithm_settings_widget_ = new AlgorithmSettingsWidget(pages_stacked_widget_);
00122 pages_stacked_widget_->addWidget(algorithm_settings_widget_);
00123
00124 QListWidgetItem* algorithm_settings_item =
00125 new QListWidgetItem(page_selection_list_widget_);
00126 algorithm_settings_item->setText(tr("Algorithms"));
00127
00128 connect(page_selection_list_widget_,
00129 SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
00130 this, SLOT(changePage(QListWidgetItem *, QListWidgetItem*)));
00131
00132 connect(apply_push_button_, SIGNAL(clicked()),
00133 this, SLOT(checkChanges()));
00134 connect(ok_push_button_, SIGNAL(clicked()),
00135 this, SLOT(checkChanges()));
00136
00137 }
00138
00139 }