diff options
Diffstat (limited to 'src/urlbar')
-rw-r--r-- | src/urlbar/webshortcutwidget.cpp | 125 | ||||
-rw-r--r-- | src/urlbar/webshortcutwidget.h | 12 |
2 files changed, 51 insertions, 86 deletions
diff --git a/src/urlbar/webshortcutwidget.cpp b/src/urlbar/webshortcutwidget.cpp index 495e0d2e..111ff836 100644 --- a/src/urlbar/webshortcutwidget.cpp +++ b/src/urlbar/webshortcutwidget.cpp @@ -19,92 +19,70 @@ * Boston, MA 02110-1301, USA. */ +// Self Includes #include "webshortcutwidget.h" #include "rekonq_defines.h" -#include <QtCore/QTimer> -#include <QtCore/QSet> -#include <QtGui/QBoxLayout> -#include <QtGui/QLabel> -#include <QtGui/QLineEdit> -#include <QtGui/QPushButton> -#include <QtGui/QFormLayout> - - +// KDE Includes #include <KGlobalSettings> #include <KIcon> #include <KLocale> #include <KServiceTypeTrader> +// Qt Includes +#include <QSet> +#include <QLabel> +#include <QLineEdit> +#include <QDialogButtonBox> +#include <QFormLayout> + WebShortcutWidget::WebShortcutWidget(QWidget *parent) - : QDialog(parent) + : QMenu(parent) + , m_nameLineEdit(new QLineEdit(this)) + , m_wsLineEdit(new QLineEdit(this)) + , m_noteLabel(new QLabel(this)) { - QVBoxLayout *mainLayout = new QVBoxLayout(); - QHBoxLayout *titleLayout = new QHBoxLayout(); - mainLayout->addLayout(titleLayout); - QLabel *iconLabel = new QLabel(this); + setAttribute(Qt::WA_DeleteOnClose); + setFixedWidth(350); - KIcon wsIcon("edit-web-search"); - if (wsIcon.isNull()) - { - wsIcon = KIcon("preferences-web-browser-shortcuts"); - } + QFormLayout *layout = new QFormLayout(this); + QVBoxLayout *vLay = new QVBoxLayout(this); - iconLabel->setPixmap(wsIcon.pixmap(22, 22)); - titleLayout->addWidget(iconLabel); - m_searchTitleLabel = new QLabel(i18n("Add Search Engine"), this); - QFont boldFont = KGlobalSettings::generalFont(); - boldFont.setBold(true); - m_searchTitleLabel->setFont(boldFont); - titleLayout->addWidget(m_searchTitleLabel); - titleLayout->addStretch(); - - QFormLayout *formLayout = new QFormLayout(); - mainLayout->addLayout(formLayout); - - QFont smallFont = KGlobalSettings::smallestReadableFont(); - m_nameLineEdit = new QLineEdit(this); - m_nameLineEdit->setEnabled(false); - m_nameLineEdit->setFont(smallFont); - QLabel *nameLabel = new QLabel(i18n("Name:"), this); - nameLabel->setFont(smallFont); - formLayout->addRow(nameLabel, m_nameLineEdit); + // Web Search Icon + QLabel *webSearchIcon = new QLabel(this); + webSearchIcon->setPixmap(KIcon("edit-web-search").pixmap(32, 32)); - QLabel *shortcutsLabel = new QLabel(i18n("Shortcuts:"), this); - shortcutsLabel->setFont(smallFont); - m_wsLineEdit = new QLineEdit(this); - m_wsLineEdit->setMinimumWidth(100); - m_wsLineEdit->setFont(smallFont); - formLayout->addRow(shortcutsLabel, m_wsLineEdit); - connect(m_wsLineEdit, SIGNAL(textChanged(QString)), SLOT(shortcutsChanged(const QString&))); + // Title + QLabel *titleLabel = new QLabel(this); + titleLabel->setText("<h4>" + i18n("Add Search Engine") + "</h4>"); + vLay->addWidget(titleLabel); - m_noteLabel = new QLabel(this); - m_noteLabel->setFont(boldFont); - m_noteLabel->setWordWrap(true); - formLayout->addRow(m_noteLabel); - m_noteLabel->setVisible(false); + // Name + vLay->addWidget(m_nameLineEdit); - mainLayout->addStretch(); + layout->addRow(webSearchIcon, vLay); - QHBoxLayout *buttonLayout = new QHBoxLayout(); - mainLayout->addLayout(buttonLayout); - buttonLayout->addStretch(); - m_okButton = new QPushButton(i18n("Ok"), this); - m_okButton->setDefault(true); - buttonLayout->addWidget(m_okButton); - connect(m_okButton, SIGNAL(clicked()), this, SLOT(okClicked())); + // Shortcuts + QLabel *shortcutsLabel = new QLabel(i18n("Shortcuts:"), this); + layout->addRow(shortcutsLabel, m_wsLineEdit); + connect(m_wsLineEdit, SIGNAL(textChanged(QString)), SLOT(shortcutsChanged(const QString&))); - QPushButton *cancelButton = new QPushButton(i18n("Cancel"), this); - buttonLayout->addWidget(cancelButton); - connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancelClicked())); + // Note + m_noteLabel->setWordWrap(true); + layout->addRow(m_noteLabel); + m_noteLabel->hide(); - setLayout(mainLayout); + // Ok & Cancel buttons + QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this); + connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); + connect(buttonBox, SIGNAL(rejected()), this, SLOT(close())); + layout->addWidget(buttonBox); - setMinimumWidth(250); + setLayout(layout); m_providers = KServiceTypeTrader::self()->query("SearchProvider"); - QTimer::singleShot(0, m_wsLineEdit, SLOT(setFocus())); + m_wsLineEdit->setFocus(); } @@ -112,12 +90,9 @@ void WebShortcutWidget::showAt(const QPoint &pos) { adjustSize(); - QPoint p; - p.setX(pos.x() - width()); - p.setY(pos.y() + 10); - + QPoint p(pos.x() - width(), pos.y() + 10); move(p); - QDialog::show(); + exec(); } @@ -130,16 +105,10 @@ void WebShortcutWidget::show(const KUrl &url, const QString &openSearchName, con } -void WebShortcutWidget::okClicked() +void WebShortcutWidget::accept() { - hide(); emit webShortcutSet(m_url, m_nameLineEdit->text(), m_wsLineEdit->text()); -} - - -void WebShortcutWidget::cancelClicked() -{ - hide(); + close(); } @@ -169,14 +138,12 @@ void WebShortcutWidget::shortcutsChanged(const QString& newShorthands) if (!contenderName.isEmpty()) { - m_okButton->setEnabled(false); m_noteLabel->setText(i18n("The shortcut \"%1\" is already assigned to \"%2\".", contenderWS, contenderName)); m_noteLabel->setVisible(true); resize(minimumSize().width(), minimumSizeHint().height() + 15); } else { - m_okButton->setEnabled(true); m_noteLabel->clear(); bool noteIsVisible = m_noteLabel->isVisible(); m_noteLabel->setVisible(false); diff --git a/src/urlbar/webshortcutwidget.h b/src/urlbar/webshortcutwidget.h index 2cf1eedf..2a5ede34 100644 --- a/src/urlbar/webshortcutwidget.h +++ b/src/urlbar/webshortcutwidget.h @@ -22,35 +22,33 @@ #ifndef WEBSHORTCUTWIDGET_H #define WEBSHORTCUTWIDGET_H -#include <QtGui/QDialog> +#include <QMenu> #include <KUrl> #include <KService> class QLabel; class QLineEdit; +class QPushButton; -class WebShortcutWidget : public QDialog +class WebShortcutWidget : public QMenu { Q_OBJECT public: - explicit WebShortcutWidget(QWidget *parent = 0); + WebShortcutWidget(QWidget *parent = 0); void show(const KUrl &url, const QString &openSearchName, const QPoint &pos); private slots: - void okClicked(); - void cancelClicked(); + void accept(); void shortcutsChanged(const QString& newShorthands); signals: void webShortcutSet(const KUrl &url, const QString &openSearchName, const QString &webShortcut); private: - QLabel *m_searchTitleLabel; QLineEdit *m_wsLineEdit; QLineEdit *m_nameLineEdit; QLabel *m_noteLabel; - QPushButton *m_okButton; KService::List m_providers; KUrl m_url; |