mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-01-20 11:00:44 -06:00
Kind of fix the find dialog when using the SqliteTableModel
This commit is contained in:
@@ -23,7 +23,7 @@ void FindDialog::showResults(const resultMap& rmap)
|
||||
for(it=rmap.begin(),rowNum=0;it!=rmap.end();++it,rowNum++)
|
||||
{
|
||||
QString firstline = it.value().section('\n', 0, 0);
|
||||
ui->tableResults->setItem(rowNum, 0, new QTableWidgetItem(QString::number(it.key() + 1)));
|
||||
ui->tableResults->setItem(rowNum, 0, new QTableWidgetItem(QString::number(it.key())));
|
||||
ui->tableResults->setItem(rowNum, 1, new QTableWidgetItem(firstline));
|
||||
}
|
||||
QString results = tr("Found: %1").arg(ui->tableResults->rowCount());
|
||||
@@ -51,7 +51,7 @@ void FindDialog::recordSelected(QTableWidgetItem* witem)
|
||||
if(witem)
|
||||
{
|
||||
int recNum = ui->tableResults->item(witem->row(), 0)->text().toInt();
|
||||
emit showrecord(recNum - 1);
|
||||
emit showrecord(recNum);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -273,47 +273,34 @@ void MainWindow::populateStructure()
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::populateTable( const QString & tablename, bool keepColumnWidths)
|
||||
void MainWindow::populateTable( const QString & tablename)
|
||||
{
|
||||
QApplication::setOverrideCursor( Qt::WaitCursor );
|
||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
|
||||
// Set new table
|
||||
if(!tablename.isEmpty())
|
||||
m_browseTableModel->setTable(tablename);
|
||||
// bool mustreset = false;
|
||||
// if (tablename.compare(db.curBrowseTableName)!=0)
|
||||
// {
|
||||
// mustreset = true;
|
||||
// curBrowseOrderByIndex = 1;
|
||||
// curBrowseOrderByMode = ORDERMODE_ASC;
|
||||
// }
|
||||
|
||||
// QString orderby = QString::number(curBrowseOrderByIndex) + " " + (curBrowseOrderByMode == ORDERMODE_ASC ? "ASC" : "DESC");
|
||||
// if(!db.browseTable(tablename, orderby))
|
||||
// {
|
||||
// browseTableModel->setRowCount(0);
|
||||
// browseTableModel->setColumnCount(0);
|
||||
// QApplication::restoreOverrideCursor();
|
||||
// if(findWin)
|
||||
// findWin->resetFields(db.getTableFields(""));
|
||||
// return;
|
||||
// }
|
||||
// Reset sorting
|
||||
curBrowseOrderByIndex = 1;
|
||||
curBrowseOrderByMode = Qt::AscendingOrder;
|
||||
m_browseTableSortProxy->sort(curBrowseOrderByIndex, curBrowseOrderByMode);
|
||||
|
||||
// // Activate the add and delete record buttons and editing only if a table has been selected
|
||||
// bool is_table = db.getObjectByName(tablename).gettype() == "table";
|
||||
// ui->buttonNewRecord->setEnabled(is_table);
|
||||
// ui->buttonDeleteRecord->setEnabled(is_table);
|
||||
// ui->dataTable->setEditTriggers(is_table ? QAbstractItemView::DoubleClicked | QAbstractItemView::AnyKeyPressed | QAbstractItemView::EditKeyPressed : QAbstractItemView::NoEditTriggers);
|
||||
// Get table layout
|
||||
db.browseTable(tablename);
|
||||
|
||||
// Activate the add and delete record buttons and editing only if a table has been selected
|
||||
bool is_table = db.getObjectByName(tablename).gettype() == "table";
|
||||
ui->buttonNewRecord->setEnabled(is_table);
|
||||
ui->buttonDeleteRecord->setEnabled(is_table);
|
||||
ui->dataTable->setEditTriggers(is_table ? QAbstractItemView::DoubleClicked | QAbstractItemView::AnyKeyPressed | QAbstractItemView::EditKeyPressed : QAbstractItemView::NoEditTriggers);
|
||||
|
||||
//got to keep findWin in synch
|
||||
if(findWin)
|
||||
findWin->resetFields();
|
||||
if(editWin)
|
||||
editWin->reset();
|
||||
|
||||
// if (mustreset){
|
||||
// updateTableView(0, keepColumnWidths);
|
||||
// if (findWin) findWin->resetFields(db.getTableFields(db.curBrowseTableName));
|
||||
// } else {
|
||||
// updateTableView(-1, keepColumnWidths);
|
||||
// }
|
||||
// //got to keep findWin in synch
|
||||
// if(findWin)
|
||||
// findWin->resetFields();
|
||||
// if(editWin)
|
||||
// editWin->reset();
|
||||
QApplication::restoreOverrideCursor();
|
||||
}
|
||||
|
||||
@@ -483,9 +470,8 @@ void MainWindow::updateTableView(int lineToSelect, bool keepColumnWidths)
|
||||
void MainWindow::selectTableLine(int lineToSelect)
|
||||
{
|
||||
ui->dataTable->clearSelection();
|
||||
ui->dataTable->selectRow(lineToSelect);
|
||||
ui->dataTable->setCurrentIndex(ui->dataTable->currentIndex().sibling(lineToSelect, 0));
|
||||
ui->dataTable->scrollTo(ui->dataTable->currentIndex().sibling(lineToSelect, 0));
|
||||
ui->dataTable->selectRow(m_browseTableSortProxy->mapFromSource(m_browseTableModel->index(lineToSelect, 0)).row());
|
||||
ui->dataTable->scrollTo(ui->dataTable->currentIndex());
|
||||
}
|
||||
|
||||
void MainWindow::navigatePrevious()
|
||||
@@ -538,7 +524,7 @@ void MainWindow::browseFind(bool open)
|
||||
{
|
||||
findWin = new FindDialog(this);
|
||||
connect(findWin, SIGNAL(lookfor(const QString&, const QString&, const QString&)), this, SLOT(lookfor(const QString&, const QString&, const QString&)));
|
||||
connect(findWin, SIGNAL(showrecord(int)),this, SLOT(updateTableView(int)));
|
||||
connect(findWin, SIGNAL(showrecord(int)),this, SLOT(selectTableLine(int)));
|
||||
connect(findWin, SIGNAL(goingAway()),this, SLOT(browseFindAway()));
|
||||
}
|
||||
findWin->resetFields(db.getTableFields(db.curBrowseTableName));
|
||||
@@ -556,7 +542,7 @@ void MainWindow::browseFindAway()
|
||||
|
||||
void MainWindow::browseRefresh()
|
||||
{
|
||||
populateTable(ui->comboBrowseTable->currentText(), true);
|
||||
populateTable(ui->comboBrowseTable->currentText());
|
||||
}
|
||||
|
||||
void MainWindow::lookfor( const QString & wfield, const QString & woperator, const QString & wsearchterm )
|
||||
@@ -580,15 +566,7 @@ void MainWindow::lookfor( const QString & wfield, const QString & woperator, con
|
||||
finalsearchterm = QString(newsearchterm);
|
||||
}
|
||||
QApplication::setOverrideCursor( Qt::WaitCursor );
|
||||
QString statement = "SELECT rowid, ";
|
||||
statement.append(wfield);
|
||||
statement.append(" FROM ");
|
||||
statement.append(db.curBrowseTableName);
|
||||
statement.append(" WHERE ");
|
||||
statement.append(wfield);
|
||||
statement.append(" ");
|
||||
statement.append(finaloperator);
|
||||
statement.append(" ");
|
||||
QString statement = QString("SELECT rowid, `%1` FROM `%2` WHERE `%3` %4 ").arg(wfield).arg(db.curBrowseTableName).arg(wfield).arg(finaloperator);
|
||||
//searchterm needs to be quoted if it is not a number
|
||||
bool ok = false;
|
||||
finalsearchterm.toDouble(&ok);
|
||||
@@ -600,7 +578,7 @@ void MainWindow::lookfor( const QString & wfield, const QString & woperator, con
|
||||
} else {//append the number, unquoted
|
||||
statement.append(finalsearchterm);
|
||||
}
|
||||
statement.append(" ORDER BY rowid; ");
|
||||
statement.append(" ORDER BY rowid;");
|
||||
resultMap res = db.getFindResults(statement);
|
||||
findWin->showResults(res);
|
||||
QApplication::restoreOverrideCursor();
|
||||
|
||||
@@ -100,7 +100,7 @@ private slots:
|
||||
virtual void fileOpen();
|
||||
virtual void fileNew();
|
||||
virtual void populateStructure();
|
||||
virtual void populateTable(const QString & tablename , bool keepColumnWidths = false);
|
||||
virtual void populateTable(const QString& tablename);
|
||||
virtual void resetBrowser();
|
||||
virtual void fileClose();
|
||||
virtual void fileExit();
|
||||
|
||||
@@ -507,12 +507,12 @@ bool DBBrowserDB::updateRecord(const QString& table, const QString& column, int
|
||||
}
|
||||
}
|
||||
|
||||
bool DBBrowserDB::browseTable( const QString & tablename, const QString& orderby )
|
||||
bool DBBrowserDB::browseTable( const QString & tablename, const QString& /*orderby*/ )
|
||||
{
|
||||
QStringList testFields = getTableFields( tablename );
|
||||
|
||||
if (testFields.count()>0) {//table exists
|
||||
getTableRecords( tablename, orderby );
|
||||
//getTableRecords( tablename, orderby );
|
||||
browseFields = testFields;
|
||||
hasValidBrowseSet = true;
|
||||
curBrowseTableName = tablename;
|
||||
@@ -789,9 +789,6 @@ resultMap DBBrowserDB::getFindResults( const QString & wstatement)
|
||||
sqlite3_stmt *vm;
|
||||
const char *tail;
|
||||
|
||||
int ncol;
|
||||
|
||||
// char *errmsg;
|
||||
int err=0;
|
||||
resultMap res;
|
||||
lastErrorMessage = QObject::tr("no error");
|
||||
@@ -799,25 +796,13 @@ resultMap DBBrowserDB::getFindResults( const QString & wstatement)
|
||||
QByteArray statementutf8 = wstatement.toUtf8();
|
||||
err=sqlite3_prepare_v2(_db, statementutf8, statementutf8.length(),
|
||||
&vm, &tail);
|
||||
if (err == SQLITE_OK){
|
||||
int rownum = 0;
|
||||
int recnum = 0;
|
||||
QString r;
|
||||
while ( sqlite3_step(vm) == SQLITE_ROW ){
|
||||
ncol = sqlite3_data_count(vm);
|
||||
for (int e=0; e<ncol; ++e){
|
||||
r = QString::fromUtf8((const char *) sqlite3_column_text(vm, e));
|
||||
if (e==0){
|
||||
rownum = r.toInt();
|
||||
rowIdMap::iterator mit = idmap.find(rownum);
|
||||
recnum = *mit;
|
||||
}
|
||||
}
|
||||
res.insert(recnum, r);
|
||||
}
|
||||
if (err == SQLITE_OK)
|
||||
{
|
||||
while ( sqlite3_step(vm) == SQLITE_ROW )
|
||||
res.insert(sqlite3_column_int(vm, 0)-1, QString::fromUtf8((const char *)sqlite3_column_text(vm, 1)));
|
||||
|
||||
sqlite3_finalize(vm);
|
||||
}else{
|
||||
} else {
|
||||
lastErrorMessage = QString::fromUtf8((const char*)sqlite3_errmsg(_db));
|
||||
}
|
||||
return res;
|
||||
|
||||
Reference in New Issue
Block a user