11#include " EditDialog.h"
22#include " ui_EditDialog.h"
3- #include < QTextStream>
4- #include < QMessageBox>
53#include < QFileDialog>
64#include " sqlitedb.h"
75#include < src/qhexedit.h>
@@ -12,17 +10,17 @@ EditDialog::EditDialog(QWidget* parent)
1210{
1311 ui->setupUi (this );
1412
15- QHBoxLayout* hexLayout = new QHBoxLayout;
13+ QHBoxLayout* hexLayout = new QHBoxLayout (ui-> editorBinary ) ;
1614 hexEdit = new QHexEdit (this );
1715 hexLayout->addWidget (hexEdit);
18- ui->editorBinary ->setLayout (hexLayout);
1916
2017 reset ();
2118}
2219
2320EditDialog::~EditDialog ()
2421{
2522 delete ui;
23+ delete hexEdit;
2624}
2725
2826void EditDialog::reset ()
@@ -33,32 +31,7 @@ void EditDialog::reset()
3331 ui->editorText ->setFocus ();
3432 ui->editorImage ->clear ();
3533 hexEdit->setData (QByteArray ());
36- setDataType (kSQLiteMediaType_Void , 0 );
37- }
38-
39- void EditDialog::enableExport (bool enabled)
40- {
41- ui->buttonExport ->setEnabled (enabled);
42- }
43-
44- void EditDialog::setDataType (int type, int size)
45- {
46- dataType = type;
47- dataSize = size;
48- QString charstr;
49- switch (dataType)
50- {
51- case kSQLiteMediaType_String :
52- ui->labelType ->setText (tr (" Type of data currently in cell: Text / Numeric" ));
53- ui->labelSize ->setText (tr (" %n char(s)" , " " , hexEdit->data ().length ()));
54- enableExport (true );
55- break ;
56- case kSQLiteMediaType_Void :
57- ui->labelType ->setText (tr (" Type of data currently in cell: Empty" ));
58- ui->labelSize ->setText (tr (" " ));
59- enableExport (false );
60- break ;
61- }
34+ checkDataType ();
6235}
6336
6437void EditDialog::closeEvent (QCloseEvent*)
@@ -68,93 +41,52 @@ void EditDialog::closeEvent(QCloseEvent*)
6841
6942void EditDialog::loadText (const QByteArray& data, int row, int col)
7043{
71- // Check if data is text only
72- if (QString (data).toAscii () == data) // Any proper way??
73- {
74- ui->editorStack ->setCurrentIndex (0 );
75- } else {
76- // It's not. So it might be an image.
77- QImage img;
78- if (img.loadFromData (data))
79- {
80- // It is.
81- ui->editorImage ->setPixmap (QPixmap::fromImage (img));
82- ui->editorStack ->setCurrentIndex (1 );
83- } else {
84- // It's not. So it's probably some random binary data.
85- ui->editorStack ->setCurrentIndex (2 );
86- }
87- }
44+ curRow = row;
45+ curCol = col;
8846
8947 ui->editorText ->setPlainText (data);
9048 ui->editorText ->setFocus ();
9149 ui->editorText ->selectAll ();
9250 hexEdit->setData (data);
93- curRow = row;
94- curCol = col;
95- if (hexEdit->data ().length () > 0 )
96- setDataType (kSQLiteMediaType_String , 0 );
97- else
98- setDataType (kSQLiteMediaType_Void , 0 );
51+ checkDataType ();
9952}
10053
10154void EditDialog::importData ()
10255{
103- int type = kSQLiteMediaType_Void ;
10456 QString fileName = QFileDialog::getOpenFileName (
10557 this ,
10658 tr (" Choose a file" ),
10759 defaultlocation,
10860 tr (" Text files(*.txt);;All files(*)" ));
10961 if (QFile::exists (fileName))
11062 {
111- type = kSQLiteMediaType_String ;
11263 QFile file (fileName);
11364 if (file.open (QIODevice::ReadOnly))
11465 {
11566 QByteArray d = file.readAll ();
11667 hexEdit->setData (d);
11768 ui->editorText ->setPlainText (d);
69+ checkDataType ();
11870 file.close ();
11971 }
120- setDataType (type, hexEdit->data ().length ());
12172 }
12273}
12374
12475void EditDialog::exportData ()
12576{
126- QString filter;
127- switch (dataType)
128- {
129- case kSQLiteMediaType_String :
130- filter = tr (" Text files(*.txt)" );
131- break ;
132- default :
133- return ;
134- }
135-
13677 QString fileName = QFileDialog::getSaveFileName (
13778 this ,
13879 tr (" Choose a filename to export data" ),
13980 defaultlocation,
140- filter );
81+ tr ( " Text files(*.txt);;All files(*) " ) );
14182
14283 if (fileName.size () > 0 )
14384 {
144- switch (dataType)
85+ QFile file (fileName);
86+ if (file.open (QIODevice::WriteOnly))
14587 {
146- case kSQLiteMediaType_String :
147- {
148- QFile file (fileName);
149- if (file.open (QIODevice::WriteOnly))
150- {
151- file.write (hexEdit->data ());
152- file.close ();
153- }
154- }
155- break ;
156- default :
157- return ;
88+ file.write (hexEdit->data ());
89+ file.close ();
15890 }
15991 }
16092}
@@ -164,17 +96,12 @@ void EditDialog::clearData()
16496 ui->editorText ->clear ();
16597 ui->editorImage ->clear ();
16698 hexEdit->setData (QByteArray ());
167- setDataType ( kSQLiteMediaType_Void , 0 );
99+ checkDataType ( );
168100}
169101
170102void EditDialog::accept ()
171103{
172- if (dataType == kSQLiteMediaType_String )
173- emit updateRecordText (curRow, curCol, hexEdit->data ());
174-
175- if (dataType == kSQLiteMediaType_Void )
176- emit updateRecordText (curRow, curCol, " " );
177-
104+ emit updateRecordText (curRow, curCol, hexEdit->data ());
178105 emit goingAway ();
179106}
180107
@@ -183,8 +110,35 @@ void EditDialog::editTextChanged()
183110 if (ui->editorText ->hasFocus ())
184111 hexEdit->setData (ui->editorText ->toPlainText ().toUtf8 ());
185112
186- int newtype = kSQLiteMediaType_String ;
187- if (hexEdit->data ().length () == 0 )
188- newtype = kSQLiteMediaType_Void ;
189- setDataType (newtype, hexEdit->data ().length ());
113+ checkDataType ();
114+ }
115+
116+ void EditDialog::checkDataType ()
117+ {
118+ // Check if data is text only
119+ if (QString (hexEdit->data ()).toAscii () == hexEdit->data ()) // Any proper way??
120+ {
121+ ui->editorStack ->setCurrentIndex (0 );
122+
123+ ui->labelType ->setText (tr (" Type of data currently in cell: Text / Numeric" ));
124+ ui->labelSize ->setText (tr (" %n char(s)" , " " , hexEdit->data ().length ()));
125+ } else {
126+ // It's not. So it might be an image.
127+ QImage img;
128+ if (img.loadFromData (hexEdit->data ()))
129+ {
130+ // It is.
131+ ui->editorImage ->setPixmap (QPixmap::fromImage (img));
132+ ui->editorStack ->setCurrentIndex (1 );
133+
134+ ui->labelType ->setText (tr (" Type of data currently in cell: Image" ));
135+ ui->labelSize ->setText (tr (" %1x%2 pixel" ).arg (ui->editorImage ->pixmap ()->size ().width ()).arg (ui->editorImage ->pixmap ()->size ().height ()));
136+ } else {
137+ // It's not. So it's probably some random binary data.
138+ ui->editorStack ->setCurrentIndex (2 );
139+
140+ ui->labelType ->setText (tr (" Type of data currently in cell: Binary" ));
141+ ui->labelSize ->setText (tr (" %n byte(s)" , " " , hexEdit->data ().length ()));
142+ }
143+ }
190144}
0 commit comments