summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorClaudio Maradonna <penguyman@stronzi.org>2018-08-18 10:45:23 +0200
committerClaudio Maradonna <penguyman@stronzi.org>2018-08-18 10:45:23 +0200
commit2abe0bb12392b7e3487c05eeeaf6918c47ec045e (patch)
treedf9683c555d6606c13307fe42036a0e9e805a1ff /src
parenta3f7fc4710fc3a22a521460ea37931c8b26c3fc2 (diff)
Profile Table cell has red background whenn text is empty. Added some tooltips for disabled checkbox like TrayIcon and OTP. Fixed Sort for QTreeView. Now when search is empty all QTreeView is collapsed and keys are not selected. Another fix when you press enter and proxyModel is empty.
Diffstat (limited to 'src')
-rw-r--r--src/configdialog.cpp10
-rw-r--r--src/configdialog.h2
-rw-r--r--src/mainwindow.cpp22
3 files changed, 24 insertions, 10 deletions
diff --git a/src/configdialog.cpp b/src/configdialog.cpp
index ca13dfcf..ae07ad2c 100644
--- a/src/configdialog.cpp
+++ b/src/configdialog.cpp
@@ -44,6 +44,7 @@ ConfigDialog::ConfigDialog(MainWindow *parent)
ui->checkBoxStartMinimized->setChecked(QtPassSettings::isStartMinimized());
} else {
ui->checkBoxUseTrayIcon->setEnabled(false);
+ ui->checkBoxUseTrayIcon->setToolTip(tr("System tray is not available"));
ui->checkBoxHideOnClose->setEnabled(false);
ui->checkBoxStartMinimized->setEnabled(false);
}
@@ -66,6 +67,8 @@ ConfigDialog::ConfigDialog(MainWindow *parent)
if (!isPassOtpAvailable()) {
ui->checkBoxUseOtp->setEnabled(false);
+ ui->checkBoxUseOtp->setToolTip(
+ tr("Pass OTP extension needs to be installed"));
}
setProfiles(QtPassSettings::getProfiles(), QtPassSettings::getProfile());
@@ -143,7 +146,7 @@ void ConfigDialog::usePass(bool usePass) {
setGroupBoxState();
}
-void ConfigDialog::validate(const QTableWidgetItem *item) {
+void ConfigDialog::validate(QTableWidgetItem *item) {
bool status = true;
if (item == nullptr) {
@@ -152,6 +155,7 @@ void ConfigDialog::validate(const QTableWidgetItem *item) {
QTableWidgetItem *_item = ui->profileTable->item(i, j);
if (_item->text().isEmpty()) {
+ _item->setBackgroundColor(Qt::red);
status = false;
break;
}
@@ -162,6 +166,7 @@ void ConfigDialog::validate(const QTableWidgetItem *item) {
}
} else {
if (item->text().isEmpty()) {
+ item->setBackgroundColor(Qt::red);
status = false;
}
}
@@ -467,11 +472,12 @@ QHash<QString, QString> ConfigDialog::getProfiles() {
void ConfigDialog::on_addButton_clicked() {
int n = ui->profileTable->rowCount();
ui->profileTable->insertRow(n);
+ ui->profileTable->setItem(n, 0, new QTableWidgetItem());
ui->profileTable->setItem(n, 1, new QTableWidgetItem(ui->storePath->text()));
ui->profileTable->selectRow(n);
ui->deleteButton->setEnabled(true);
- ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
+ validate();
}
/**
diff --git a/src/configdialog.h b/src/configdialog.h
index 13782100..46e36272 100644
--- a/src/configdialog.h
+++ b/src/configdialog.h
@@ -85,7 +85,7 @@ private:
void criticalMessage(const QString &title, const QString &text);
bool isPassOtpAvailable();
- void validate(const QTableWidgetItem *item = nullptr);
+ void validate(QTableWidgetItem *item = nullptr);
MainWindow *mainWindow;
};
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 13916636..0f674f98 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -66,7 +66,7 @@ MainWindow::MainWindow(const QString &searchText, QWidget *parent)
proxyModel.setSourceModel(&model);
proxyModel.setModelAndStore(&model, passStore);
- proxyModel.sort(0, Qt::AscendingOrder);
+ // proxyModel.sort(0, Qt::AscendingOrder);
selectionModel.reset(new QItemSelectionModel(&proxyModel));
model.fetchMore(model.setRootPath(passStore));
// model.sort(0, Qt::AscendingOrder);
@@ -82,6 +82,7 @@ MainWindow::MainWindow(const QString &searchText, QWidget *parent)
ui->treeView->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);
ui->treeView->header()->setSectionResizeMode(0, QHeaderView::Stretch);
+ ui->treeView->sortByColumn(0, Qt::AscendingOrder);
connect(ui->treeView, &QWidget::customContextMenuRequested, this,
&MainWindow::showContextMenu);
connect(ui->treeView, &DeselectableTreeView::emptyClicked, this,
@@ -498,6 +499,7 @@ void MainWindow::onConfig() { config(); }
*/
void MainWindow::on_lineEdit_textChanged(const QString &arg1) {
ui->statusBar->showMessage(tr("Looking for: %1").arg(arg1), 1000);
+ ui->treeView->expandAll();
searchTimer.start();
}
@@ -507,15 +509,19 @@ void MainWindow::on_lineEdit_textChanged(const QString &arg1) {
* time from two keypresses is elapsed
*/
void MainWindow::onTimeoutSearch() {
- ui->treeView->expandAll();
-
QString query = ui->lineEdit->text();
+
+ if (query.isEmpty())
+ ui->treeView->collapseAll();
+
query.replace(QRegExp(" "), ".*");
QRegExp regExp(query, Qt::CaseInsensitive);
proxyModel.setFilterRegExp(regExp);
ui->treeView->setRootIndex(proxyModel.mapFromSource(
model.setRootPath(QtPassSettings::getPassStore())));
- selectFirstFile();
+
+ if (proxyModel.rowCount() > 0 && !query.isEmpty())
+ selectFirstFile();
}
/**
@@ -525,9 +531,10 @@ void MainWindow::onTimeoutSearch() {
*/
void MainWindow::on_lineEdit_returnPressed() {
#ifdef QT_DEBUG
- dbg() << "on_lineEdit_returnPressed";
+ dbg() << "on_lineEdit_returnPressed" << proxyModel.rowCount();
#endif
- if (ui->treeView->selectionModel()->hasSelection()) {
+
+ if (proxyModel.rowCount() > 0) {
selectFirstFile();
on_treeView_clicked(ui->treeView->currentIndex());
}
@@ -881,7 +888,8 @@ void MainWindow::keyPressEvent(QKeyEvent *event) {
break;
case Qt::Key_Return:
case Qt::Key_Enter:
- on_treeView_clicked(ui->treeView->currentIndex());
+ if (proxyModel.rowCount() > 0)
+ on_treeView_clicked(ui->treeView->currentIndex());
break;
case Qt::Key_Escape:
ui->lineEdit->clear();