Browse Source

Merge branch 'master' of github.com:commontk/CTK

Julien Finet 14 years ago
parent
commit
7cf5815393

+ 10 - 3
Libs/DICOM/Widgets/Resources/UI/ctkDICOMAppWidget.ui

@@ -35,9 +35,6 @@
     </widget>
    </item>
    <item>
-    <widget class="QStatusBar" name="statusbar"/>
-   </item>
-   <item>
     <layout class="QVBoxLayout" name="verticalLayout">
      <item>
       <layout class="QHBoxLayout" name="topLayout">
@@ -111,6 +108,16 @@
       </layout>
      </item>
      <item>
+      <widget class="QFrame" name="userFrame">
+       <property name="frameShape">
+        <enum>QFrame::StyledPanel</enum>
+       </property>
+       <property name="frameShadow">
+        <enum>QFrame::Raised</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
       <layout class="QHBoxLayout" name="viewerLayout">
        <item>
         <widget class="ctkDICOMThumbnailListWidget" name="thumbnailsWidget" native="true">

+ 25 - 2
Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp

@@ -77,8 +77,18 @@ ctkDICOMAppWidget::ctkDICOMAppWidget(QWidget* _parent):Superclass(_parent),
   d->QueryRetrieveWidget = new ctkDICOMQueryRetrieveWidget();
   d->QueryRetrieveWidget->setWindowModality ( Qt::ApplicationModal );
 
-  //initialize default directory, then listen for changes
-  this->setDatabaseDirectory(d->directoryButton->directory());
+  //initialize directory from settings, then listen for changes
+  QSettings settings;
+  if ( settings.value("DatabaseDirectory", "") == "" )
+    {
+    QString directory = QString("./ctkDICOM-Database");
+    settings.setValue("DatabaseDirectory", directory);
+    settings.sync();
+    }
+  QString databaseDirectory = settings.value("DatabaseDirectory").toString();
+  this->setDatabaseDirectory(databaseDirectory);
+  d->directoryButton->setDirectory(databaseDirectory);
+
   connect(d->directoryButton, SIGNAL(directoryChanged(const QString&)), this, SLOT(setDatabaseDirectory(const QString&)));
 
   //Initialize import widget
@@ -102,6 +112,7 @@ ctkDICOMAppWidget::ctkDICOMAppWidget(QWidget* _parent):Superclass(_parent),
   connect(d->ImportDialog, SIGNAL(fileSelected(QString)),this,SLOT(onImportDirectory(QString)));
 
   connect(d->DICOMDatabase.data(), SIGNAL( databaseChanged() ), &(d->DICOMModel), SLOT( reset() ) );
+  connect(d->QueryRetrieveWidget, SIGNAL( canceled() ), d->QueryRetrieveWidget, SLOT( hide() ) );
 
 }
 
@@ -142,6 +153,17 @@ void ctkDICOMAppWidget::setDatabaseDirectory(const QString& directory)
   //pass DICOM database instance to Import widget
   // d->ImportDialog->setDICOMDatabase(d->DICOMDatabase);
   d->QueryRetrieveWidget->setRetrieveDatabase(d->DICOMDatabase);
+
+  // update the button and let any connected slots know about the change
+  d->directoryButton->setDirectory(directory);
+  emit databaseDirectoryChanged(directory);
+}
+
+//----------------------------------------------------------------------------
+QString ctkDICOMAppWidget::databaseDirectory() const
+{
+  QSettings settings;
+  return settings.value("DatabaseDirectory").toString();
 }
 
 void ctkDICOMAppWidget::onAddToDatabase()
@@ -173,6 +195,7 @@ void ctkDICOMAppWidget::openQueryDialog()
 
   d->QueryRetrieveWidget->show();
   d->QueryRetrieveWidget->raise();
+
 }
 
 //----------------------------------------------------------------------------

+ 16 - 8
Libs/DICOM/Widgets/ctkDICOMAppWidget.h

@@ -32,22 +32,30 @@ class ctkDICOMThumbnailWidget;
 
 class CTK_DICOM_WIDGETS_EXPORT ctkDICOMAppWidget : public QWidget
 {
-Q_OBJECT;
+  Q_OBJECT
+  Q_PROPERTY(QString databaseDirectory READ databaseDirectory WRITE setDatabaseDirectory)
+
 public:
   typedef QWidget Superclass;
   explicit ctkDICOMAppWidget(QWidget* parent=0);
   virtual ~ctkDICOMAppWidget();
 
+  QString databaseDirectory() const;
+
 public slots:
-    void setDatabaseDirectory(const QString& directory);
-    void onAddToDatabase();
+  void setDatabaseDirectory(const QString& directory);
+  void onAddToDatabase();
+
+  void onDICOMModelSelected(const QModelIndex& index);
+  void onThumbnailSelected(const ctkDICOMThumbnailWidget& widget);
 
-    void onDICOMModelSelected(const QModelIndex& index);
-    void onThumbnailSelected(const ctkDICOMThumbnailWidget& widget);
+  void openImportDialog();
+  void openExportDialog();
+  void openQueryDialog();
 
-    void openImportDialog();
-    void openExportDialog();
-    void openQueryDialog();
+signals:
+  /// Emited when directory is changed
+  void databaseDirectoryChanged(const QString&);
 
 protected:
     QScopedPointer<ctkDICOMAppWidgetPrivate> d_ptr;

+ 1 - 0
Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp

@@ -293,6 +293,7 @@ void ctkDICOMQueryRetrieveWidget::retrieve()
 void ctkDICOMQueryRetrieveWidget::cancel()
 {
   emit studiesRetrieved(QStringList());
+  emit canceled();
 }
 
 //----------------------------------------------------------------------------

+ 2 - 0
Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.h

@@ -53,6 +53,8 @@ signals:
   /// "Retrieve" button) or when the widget is cancelled (user clicked on the
   /// "Cancel" button).
   void studiesRetrieved(QStringList);
+  /// Signal to emit when cancel button pressed (after studiesRetrieved is emitted)
+  void canceled();
 
 protected slots:
   void onQueryProgressChanged(int value);

+ 1 - 1
Libs/DICOM/Widgets/ctkDICOMServerNodeWidget.cpp

@@ -184,7 +184,7 @@ void ctkDICOMServerNodeWidget::readSettings()
       settings.value("ServerNodeCount").toInt() == 0)
     {
     d->StorageAETitle->setText("CTKSTORE");
-    d->StoragePort->setText("11112");
+    d->StoragePort->setText("11113");
     d->CallingAETitle->setText("FINDSCU");
 
     QMap<QString, QVariant> defaultServerNode;

+ 13 - 4
Libs/Widgets/ctkCheckableComboBox.cpp

@@ -111,6 +111,7 @@ class ctkCheckableComboBoxPrivate
 protected:
   ctkCheckableComboBox* const q_ptr;
   QModelIndexList checkedIndexes()const;
+  QModelIndexList uncheckedIndexes()const;
 public:
   ctkCheckableComboBoxPrivate(ctkCheckableComboBox& object);
   void init();
@@ -163,9 +164,17 @@ QModelIndexList ctkCheckableComboBoxPrivate::checkedIndexes()const
 {
   Q_Q(const ctkCheckableComboBox);
   return q->model()->match(
-      q->model()->index(0,0), Qt::CheckStateRole, Qt::Checked, -1, Qt::MatchRecursive);
+    q->rootModelIndex().child(0,0), Qt::CheckStateRole, Qt::Checked, -1, Qt::MatchRecursive);
 }
- 
+
+//-----------------------------------------------------------------------------
+QModelIndexList ctkCheckableComboBoxPrivate::uncheckedIndexes()const
+{
+  Q_Q(const ctkCheckableComboBox);
+  return q->model()->match(
+    q->rootModelIndex().child(0,0), Qt::CheckStateRole, Qt::Unchecked, -1, Qt::MatchRecursive);
+}
+
 //-----------------------------------------------------------------------------
 ctkCheckableComboBox::ctkCheckableComboBox(QWidget* parentWidget)
   : QComboBox(parentWidget)
@@ -260,14 +269,14 @@ QModelIndexList ctkCheckableComboBox::checkedIndexes()const
 bool ctkCheckableComboBox::allChecked()const
 {
   Q_D(const ctkCheckableComboBox);
-  return d->CheckableModelHelper->headerCheckState(0) == Qt::Checked;
+  return d->uncheckedIndexes().count() == 0;
 }
 
 //-----------------------------------------------------------------------------
 bool ctkCheckableComboBox::noneChecked()const
 {
   Q_D(const ctkCheckableComboBox);
-  return d->CheckableModelHelper->headerCheckState(0) == Qt::Unchecked;
+  return d->CheckedList.count() == 0;
 }
 
 //-----------------------------------------------------------------------------

+ 2 - 0
Libs/Widgets/ctkWorkflowWidgetStep.h

@@ -62,7 +62,9 @@ class CTK_WIDGETS_EXPORT ctkWorkflowWidgetStep : public QWidget, public ctkWorkf
   Q_PROPERTY(QIcon icon READ icon WRITE setIcon)
   Q_PROPERTY(QString backButtonText READ backButtonText WRITE setBackButtonText)
   Q_PROPERTY(QString nextButtonText READ nextButtonText WRITE setNextButtonText)
+  Q_FLAGS(ButtonBoxHint ButtonBoxHints)
   Q_ENUMS(ButtonBoxHint)
+  Q_PROPERTY(ButtonBoxHints buttonBoxHints READ buttonBoxHints WRITE setButtonBoxHints)
 public:
 
   enum ButtonBoxHint {