feat: Online search button

- MailListView: new '🌐 Online' button in search bar
- Clicking button emits onlineSearchRequested(query)
- If search box empty, shows QInputDialog for query entry
- MainMainWindow::onOnlineSearchRequested() handler:
  - Validates current folder selected
  - Gets account for folder
  - Shows status message
  - Shows info dialog with query/folder/account (placeholder for IMAP SEARCH)
- Signal: onlineSearchRequested(const QString& query)
- Button styled in blue (online theme)
This commit is contained in:
2026-08-26 04:45:10 +02:00
parent 6d1feabfc5
commit 6f348b17f0
14 changed files with 6066 additions and 7566 deletions
+31
View File
@@ -19,6 +19,7 @@
#include <QMenu>
#include <QDrag>
#include <QMimeData>
#include <QInputDialog>
#include "ui/delegates/CompactMailDelegate.h"
MailListView::MailListView(QWidget *parent) : QWidget(parent), m_sourceModel(nullptr), m_multiSelectMode(false)
@@ -51,6 +52,20 @@ void MailListView::setupUI()
searchLayout->addWidget(m_searchEdit);
connect(m_searchEdit, &QLineEdit::textChanged, this, &MailListView::onSearchTextChanged);
// Online search button
m_onlineSearchBtn = new QToolButton();
m_onlineSearchBtn->setText("🌐 Online");
m_onlineSearchBtn->setToolTip("Buscar en servidor (IMAP)");
m_onlineSearchBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
m_onlineSearchBtn->setStyleSheet(
"QToolButton { background: #e3f2fd; border: 1px solid #90caf9; border-radius: 6px; "
"padding: 6px 12px; font-size: 12px; color: #1565c0; }"
"QToolButton:hover { background: #bbdefb; border-color: #42a5f5; }"
"QToolButton:pressed { background: #90caf9; }"
);
connect(m_onlineSearchBtn, &QToolButton::clicked, this, &MailListView::onOnlineSearchClicked);
searchLayout->addWidget(m_onlineSearchBtn);
layout->addWidget(searchBar);
// Filter bar
@@ -687,6 +702,22 @@ void MailListView::initDrag()
Q_UNUSED(dropAction);
}
void MailListView::onOnlineSearchClicked()
{
QString query = m_searchEdit->text().trimmed();
if (query.isEmpty()) {
// If search box is empty, show a dialog to enter search query
bool ok;
query = QInputDialog::getText(this, "Buscar en servidor",
"Introduce términos de búsqueda:",
QLineEdit::Normal,
"", &ok);
if (!ok || query.trimmed().isEmpty()) return;
}
emit onlineSearchRequested(query);
}
void MailListView::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {