diff --git a/src/EditDialog.cpp b/src/EditDialog.cpp index ec429a38..b60a3b88 100644 --- a/src/EditDialog.cpp +++ b/src/EditDialog.cpp @@ -12,8 +12,10 @@ EditDialog::EditDialog(QWidget* parent) { ui->setupUi(this); + QHBoxLayout* hexLayout = new QHBoxLayout; hexEdit = new QHexEdit(this); - hexEdit->setVisible(false); + hexLayout->addWidget(hexEdit); + ui->editorBinary->setLayout(hexLayout); reset(); } @@ -27,8 +29,9 @@ void EditDialog::reset() { curRow = -1; curCol = -1; - ui->editData->setPlainText(""); - ui->editData->setFocus(); + ui->editorText->clear(); + ui->editorText->setFocus(); + ui->editorImage->clear(); hexEdit->setData(QByteArray()); setDataType(kSQLiteMediaType_Void, 0); } @@ -47,7 +50,7 @@ void EditDialog::setDataType(int type, int size) { case kSQLiteMediaType_String: ui->labelType->setText(tr("Type of data currently in cell: Text / Numeric")); - ui->labelSize->setText(tr("%n char(s)", "", ui->editData->toPlainText().length())); + ui->labelSize->setText(tr("%n char(s)", "", hexEdit->data().length())); enableExport(true); break; case kSQLiteMediaType_Void: @@ -65,9 +68,27 @@ void EditDialog::closeEvent(QCloseEvent*) void EditDialog::loadText(const QByteArray& data, int row, int col) { - ui->editData->setPlainText(data); - ui->editData->setFocus(); - ui->editData->selectAll(); + // Check if data is text only + if(QString(data).toAscii() == data) // Any proper way?? + { + ui->editorStack->setCurrentIndex(0); + } else { + // It's not. So it might be an image. + QImage img; + if(img.loadFromData(data)) + { + // It is. + ui->editorImage->setPixmap(QPixmap::fromImage(img)); + ui->editorStack->setCurrentIndex(1); + } else { + // It's not. So it's probably some random binary data. + ui->editorStack->setCurrentIndex(2); + } + } + + ui->editorText->setPlainText(data); + ui->editorText->setFocus(); + ui->editorText->selectAll(); hexEdit->setData(data); curRow = row; curCol = col; @@ -93,7 +114,7 @@ void EditDialog::importData() { QByteArray d = file.readAll(); hexEdit->setData(d); - ui->editData->setPlainText(d); + ui->editorText->setPlainText(d); file.close(); } setDataType(type, hexEdit->data().length()); @@ -140,7 +161,8 @@ void EditDialog::exportData() void EditDialog::clearData() { - ui->editData->setPlainText(""); + ui->editorText->clear(); + ui->editorImage->clear(); hexEdit->setData(QByteArray()); setDataType(kSQLiteMediaType_Void, 0); } @@ -158,8 +180,8 @@ void EditDialog::accept() void EditDialog::editTextChanged() { - if(ui->editData->hasFocus()) - hexEdit->setData(ui->editData->toPlainText().toUtf8()); + if(ui->editorText->hasFocus()) + hexEdit->setData(ui->editorText->toPlainText().toUtf8()); int newtype = kSQLiteMediaType_String; if(hexEdit->data().length() == 0) diff --git a/src/EditDialog.ui b/src/EditDialog.ui index 545df0bf..27710947 100644 --- a/src/EditDialog.ui +++ b/src/EditDialog.ui @@ -71,10 +71,17 @@ - - - This area displays information about the data present in this database cell + + + 0 + + + This area displays information about the data present in this database cell + + + + @@ -107,7 +114,6 @@ buttomImport buttonExport buttonClear - editData buttonBox @@ -193,7 +199,7 @@ - editData + editorText textChanged() EditDialog editTextChanged()