void medDatabaseRemover::removePatient ( int patientDbId ) { QSqlDatabase db(d->db); QSqlQuery query ( db ); QString patientName; QString patientBirthdate; QString patientId; query.prepare ( "SELECT thumbnail, patientId FROM " + d->T_PATIENT + " WHERE id = :patient " ); query.bindValue ( ":patient", patientDbId ); EXEC_QUERY ( query ); if ( query.next() ) { QString thumbnail = query.value ( 0 ).toString(); this->removeFile ( thumbnail ); patientId = query.value ( 1 ).toString(); } if( removeTableRow ( d->T_PATIENT, patientDbId ) ) emit removed(medDataIndex(1, patientDbId, -1, -1, -1)); medDatabaseController * dbi = medDatabaseController::instance(); QDir patientDir ( medStorage::dataLocation() + "/" + dbi->stringForPath ( patientId ) ); if ( patientDir.exists() ) patientDir.rmdir ( patientDir.path() ); // only removes if empty }
void medDatabaseRemover::removeImage ( int patientDbId, int studyDbId, int seriesDbId, int imageId ) { QSqlDatabase db(d->db); QSqlQuery query ( db ); query.prepare ( "SELECT thumbnail FROM " + d->T_IMAGE + " WHERE id = :imageId " ); query.bindValue ( ":id", imageId ); EXEC_QUERY ( query ); if ( query.next() ) { QString thumbnail = query.value ( 0 ).toString(); this->removeFile ( thumbnail ); } removeTableRow ( d->T_IMAGE, imageId ); }
void medDatabaseRemover::removeStudy ( int patientDbId, int studyDbId ) { QSqlDatabase db(d->db); QSqlQuery query ( db ); query.prepare ( "SELECT thumbnail, name, uid FROM " + d->T_STUDY + " WHERE id = :id " ); query.bindValue ( ":id", studyDbId ); EXEC_QUERY ( query ); QString thumbnail; if ( query.next() ) { thumbnail = query.value ( 0 ).toString(); this->removeFile ( thumbnail ); } if( removeTableRow ( d->T_STUDY, studyDbId ) ) emit removed(medDataIndex(1, patientDbId, studyDbId, -1, -1)); }
void medDatabaseRemover::removeSeries ( int patientDbId, int studyDbId, int seriesDbId ) { QSqlDatabase db(d->db); QSqlQuery query ( db ); query.prepare ( "SELECT thumbnail, path, name FROM " + d->T_SERIES + " WHERE id = :series " ); query.bindValue ( ":series", seriesDbId ); EXEC_QUERY ( query ); QString thumbnail; if ( query.next() ) { thumbnail = query.value ( 0 ).toString(); this->removeFile ( thumbnail ); QString path = query.value ( 1 ).toString(); // if path is empty then it was an indexed series if ( !path.isNull() && !path.isEmpty() ) this->removeDataFile ( medDataIndex::makeSeriesIndex ( d->index.dataSourceId(), patientDbId, studyDbId, seriesDbId ) , path ); } if( removeTableRow ( d->T_SERIES, seriesDbId ) ) emit removed(medDataIndex(1, patientDbId, studyDbId, seriesDbId, -1)); // we want to remove the directory if empty QFileInfo seriesFi ( medStorage::dataLocation() + thumbnail ); if ( seriesFi.dir().exists() ) { bool res = seriesFi.dir().rmdir ( seriesFi.absolutePath() ); // only removes if empty // the serie's directory has been deleted, let's check if the patient directory is empty // this can happen after moving series if(res) { QDir parentDir = seriesFi.dir(); res = parentDir.cdUp(); if ( res && parentDir.exists() ) { res = seriesFi.dir().rmdir ( parentDir.absolutePath() ); // only removes if empty } } } }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), logfileIndicator (new QLabel ( this)), ui(new Ui::MainWindow) { ui->setupUi(this); this->setWindowTitle( tr("QT Logger") ); version = "1.1.2"; this->setMouseTracking(true); this->setBackgroundRole(QPalette::Base); QCoreApplication::setOrganizationName("openhpsdr"); QCoreApplication::setOrganizationDomain("openhpsdr.org"); QCoreApplication::setApplicationName("QtLogger"); //logfileIndicator->setStyleSheet (QString ("QLabel {color:red}")); logfileIndicator->setPixmap(QPixmap(":/icons/filefoldergrey16.svg")); logfileIndicator->setToolTip(QString("Logfile: No file") ); About *about = new About(); about->setVersion( version ); Help *help = new Help(); data = new Data(); data->setMinimumHeader(); add = new addDialog( this ); readDefinitions(":/xml/adif_codes_2.2.7.xml"); add->loadmodeComboBox( modes ); add->loadcountryComboBox( country ); add->loadsubdivisionsComboBox( subdivisions ); add->loadbandsData( bands ); last = new lastContact( this ); pref = new Preferences( this ); pref->setPreferences( QString("radio"), settings.value("preference_radio").toString() ); pref->setPreferences( QString("location"), settings.value("preference_location").toString() ); pref->setPreferences( QString("event"), settings.value("preference_event").toString() ); pref->setPreferences( QString("owner"), settings.value("preference_owner").toString() ); pref->setPreferences( QString("qsl"), settings.value("preference_qsl").toString() ); pref->setPreferences( QString("callfilter"), settings.value("callsign_filter").toString() ); add->callsign_filter = pref->getPreferences("callfilter"); udpSocket = new QUdpSocket(this); udpSocket->bind( 11500, QUdpSocket::ShareAddress ); statusBar ()->addPermanentWidget (logfileIndicator); ui->tableView->verticalScrollBar()->setValue(ui->tableView->verticalScrollBar()->maximum()); deleteFlag = false; connect(udpSocket, SIGNAL(readyRead()), this, SLOT(processPendingDatagrams())); connect(ui->actionQuit,SIGNAL(triggered()),this,SLOT(closeDown())); connect(ui->actionAbout,SIGNAL(triggered()),about,SLOT(aboutMessage())); connect(ui->actionHelp,SIGNAL(triggered()),help,SLOT(show())); connect(ui->actionPreferences,SIGNAL(triggered()),pref,SLOT(show())); connect(pref,SIGNAL(preferencesChanged()),this,SLOT(updateView())); connect(ui->actionOpen,SIGNAL(triggered()),data,SLOT(readData())); connect(ui->actionLast_Contact,SIGNAL(triggered()),last,SLOT(show())); connect(ui->actionOpen,SIGNAL(triggered()),this,SLOT(updateStatus())); connect(ui->actionSave,SIGNAL(triggered()),this,SLOT(writeData())); connect(ui->actionSupport_Directory,SIGNAL(triggered()),this,SLOT(setSupportDirectory())); connect(ui->actionLog_Directory,SIGNAL(triggered()),this,SLOT(setLogDirectory())); connect(ui->tableView,SIGNAL(clicked(QModelIndex)),this,SLOT(removeTableRow(QModelIndex))); connect(ui->tableView,SIGNAL(activated(QModelIndex)),ui->tableView,SLOT(resizeRowsToContents())); connect(ui->actionAdd,SIGNAL(triggered()),add,SLOT(show())); connect(add,SIGNAL(newdata()),this,SLOT(update())); connect(data,SIGNAL(refresh()),this,SLOT(update())); connect(ui->actionDelete,SIGNAL(toggled(bool)),this,SLOT(setDeleteFlag(bool))); connect(add,SIGNAL(ownerChanged()),this,SLOT(updateOwner())); connect(add,SIGNAL(prefixChanged(QString)),last->proxyModel,SLOT(setFilterRegExp(QString))); connect(add,SIGNAL(prefixChanged(QString)),last,SLOT(setCallLabel(QString))); connect(add,SIGNAL(prefixChanged(QString)),add->proxyModel,SLOT(setFilterRegExp(QString))); }