Fixed search
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "mainwindow.h"
|
||||
#include "./ui_mainwindow.h"
|
||||
#include <utility>
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QDir>
|
||||
@@ -43,15 +44,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
if (configuration.contains("last-dir") && (QDir()).exists(configuration["last-dir"].toString())) {
|
||||
ui->projectDir->setText(configuration["last-dir"].toString());
|
||||
crawlProject();
|
||||
qDebug() << "project crawled";
|
||||
qDebug() << configuration["last-language"].toString();
|
||||
qDebug() << ui->languageCombo->count();
|
||||
for (int i=0; i < ui->languageCombo->count(); ++i) {
|
||||
qDebug() << ui->languageCombo->itemText(i);
|
||||
}
|
||||
qDebug() << ui->languageCombo->findText(configuration["last-language"].toString());
|
||||
if (configuration.contains("last-language") && ui->languageCombo->findText(configuration["last-language"].toString()) >= 0) {
|
||||
qDebug() << "language crawl";
|
||||
ui->languageCombo->setCurrentText(configuration["last-language"].toString());
|
||||
}
|
||||
}
|
||||
@@ -99,15 +92,8 @@ void MainWindow::crawlProject() {
|
||||
ui->languageCombo->setCurrentIndex(-1);
|
||||
}
|
||||
|
||||
void MainWindow::on_reloadButton_clicked()
|
||||
{
|
||||
crawlProject();
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::on_languageCombo_currentTextChanged(const QString &selectedLanguage)
|
||||
{
|
||||
qDebug() << "language selected";
|
||||
setConfigValue("last-language", selectedLanguage);
|
||||
fileContentsMap.clear();
|
||||
ui->treeWidget->clear();
|
||||
@@ -138,7 +124,7 @@ void MainWindow::populateTreeWidgetFromMap() {
|
||||
fileItem->setText(0, fileName);
|
||||
fileItem->setData(0, Qt::UserRole, false);
|
||||
auto parsedBlocks = parseTextBlock(pair.second);
|
||||
for (const auto& block : qAsConst(parsedBlocks)) {
|
||||
for (const auto& block : std::as_const(parsedBlocks)) {
|
||||
QTreeWidgetItem *blockItem = new QTreeWidgetItem(fileItem);
|
||||
blockItem->setText(0, QString::number(block.line));
|
||||
blockItem->setText(1, block.oldText);
|
||||
@@ -163,9 +149,10 @@ QVector<MainWindow::TranslationItem> MainWindow::parseTextBlock(const QString& i
|
||||
QString identifier, originalText, translatedText;
|
||||
for (const QString& line : std::as_const(lines)) {
|
||||
if (line.contains("# game/")) {
|
||||
QRegExp regExp("# game/.+:(\\d+)");
|
||||
if (regExp.indexIn(line.trimmed()) != -1) {
|
||||
lineNumber = regExp.cap(1).toInt();
|
||||
QRegularExpression regExp("# game/.+:(\\d+)");
|
||||
QRegularExpressionMatch match = regExp.match(line.trimmed());
|
||||
if (match.hasMatch()) {
|
||||
lineNumber = match.captured(1).toInt();
|
||||
}
|
||||
} else if (line.startsWith(" # ") || line.startsWith(" old ")) {
|
||||
originalText = line.mid(line.indexOf("\"") + 1).trimmed();
|
||||
@@ -565,31 +552,34 @@ void MainWindow::on_searchButton_clicked() {
|
||||
searchNext();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_searchNextButton_clicked() {
|
||||
if (searchQuery.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
qDebug() << "clicked";
|
||||
searchNext();
|
||||
}
|
||||
|
||||
void MainWindow::searchInTree(QTreeWidgetItem *item, const QString &query) {
|
||||
for (int i = 0; i < item->childCount(); ++i) {
|
||||
QTreeWidgetItem *childItem = item->child(i);
|
||||
for (int column = 1; column <= 2; ++column) {
|
||||
if (childItem->text(column).contains(query, Qt::CaseInsensitive)) {
|
||||
ui->treeWidget->setCurrentItem(childItem);
|
||||
ui->treeWidget->scrollToItem(childItem);
|
||||
void MainWindow::searchNext() {
|
||||
auto currentItem = ui->treeWidget->currentItem();
|
||||
for (int fileItemPos = 0; fileItemPos < ui->treeWidget->invisibleRootItem()->childCount(); ++fileItemPos) {
|
||||
auto fileItem {ui->treeWidget->invisibleRootItem()->child(fileItemPos)};
|
||||
for (int linePos = 0; linePos < fileItem->childCount(); ++linePos) {
|
||||
auto line {fileItem->child(linePos)};
|
||||
if (currentItem == NULL && (line->text(1).contains(searchQuery, Qt::CaseInsensitive)
|
||||
|| line->text(2).contains(searchQuery, Qt::CaseInsensitive))) {
|
||||
ui->treeWidget->setCurrentItem(line);
|
||||
ui->treeWidget->scrollToItem(line);
|
||||
return;
|
||||
}
|
||||
if (currentItem == line) {
|
||||
currentItem = NULL;
|
||||
}
|
||||
}
|
||||
searchInTree(childItem, query);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::searchNext() {
|
||||
if (searchQuery.isEmpty()) return;
|
||||
QTreeWidgetItem *startItem = ui->treeWidget->currentItem();
|
||||
if (!startItem) startItem = ui->treeWidget->topLevelItem(0);
|
||||
searchInTree(startItem, searchQuery);
|
||||
}
|
||||
|
||||
void MainWindow::setConfigValue(const QString &key, const QString &value) {
|
||||
if (noConfigChange) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user