From: Laurent Montel Date: Mon, 25 Jan 2010 13:14:39 +0000 (+0000) Subject: Implement todo (create a dialog box when ok is enable/disable when text is empty... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/8dd3b9d3be28ab5b3faa851919cc794e3a338154 Implement todo (create a dialog box when ok is enable/disable when text is empty or not) (and fix restore size, in old version we didn't save size before to delete element) svn path=/trunk/KDE/kdebase/apps/; revision=1080045 --- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7585ad8e0..1fc017a45 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -137,6 +137,7 @@ set(dolphin_SRCS panels/folders/folderspanel.cpp panels/folders/paneltreeview.cpp search/dolphinsearchbox.cpp + search/searchoptiondialogbox.cpp settings/behaviorsettingspage.cpp settings/columnviewsettingspage.cpp settings/contextmenusettingspage.cpp diff --git a/src/search/dolphinsearchoptionsconfigurator.cpp b/src/search/dolphinsearchoptionsconfigurator.cpp index b24c36b8e..93b7a589c 100644 --- a/src/search/dolphinsearchoptionsconfigurator.cpp +++ b/src/search/dolphinsearchoptionsconfigurator.cpp @@ -41,6 +41,7 @@ #include #include "searchcriterionselector.h" +#include "searchoptiondialogbox.h" #include #include @@ -275,33 +276,11 @@ void DolphinSearchOptionsConfigurator::removeCriterion() void DolphinSearchOptionsConfigurator::saveQuery() { - // TODO: provide a custom dialog class for KDE 4.5, which - // enables/disables the OK button depend on whether a text - // has been entered. - QPointer dialog = new KDialog(0, Qt::Dialog); - - QWidget* container = new QWidget(dialog); - - QLabel* label = new QLabel(i18nc("@label", "Name:"), container); - KLineEdit* lineEdit = new KLineEdit(container); - lineEdit->setMinimumWidth(250); - - QHBoxLayout* layout = new QHBoxLayout(container); - layout->addWidget(label, Qt::AlignRight); - layout->addWidget(lineEdit); - - dialog->setMainWidget(container); - dialog->setCaption(i18nc("@title:window", "Save Search Options")); - dialog->setButtons(KDialog::Ok | KDialog::Cancel); - dialog->setDefaultButton(KDialog::Ok); - dialog->setButtonText(KDialog::Ok, i18nc("@action:button", "Save")); - - KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), - "SaveSearchOptionsDialog"); - dialog->restoreDialogSize(dialogConfig); - if ((dialog->exec() == QDialog::Accepted) && !lineEdit->text().isEmpty()) { + QPointer dialog = new SearchOptionDialogBox( 0 ); + + if (dialog->exec() == QDialog::Accepted) { KFilePlacesModel* model = DolphinSettings::instance().placesModel(); - model->addPlace(lineEdit->text(), nepomukSearchUrl()); + model->addPlace(dialog->text(), nepomukSearchUrl()); } delete dialog; } diff --git a/src/search/searchoptiondialogbox.cpp b/src/search/searchoptiondialogbox.cpp new file mode 100644 index 000000000..487f24bdc --- /dev/null +++ b/src/search/searchoptiondialogbox.cpp @@ -0,0 +1,69 @@ +/***************************************************************************** + * Copyright (C) 2010 by Laurent Montel * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License version 2 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public License * + * along with this library; see the file COPYING.LIB. If not, write to * + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * + * Boston, MA 02110-1301, USA. * + *****************************************************************************/ +#include "searchoptiondialogbox.h" + +#include +#include +#include +#include +#include + +SearchOptionDialogBox::SearchOptionDialogBox( QWidget *parent ) + :KDialog( parent, Qt::Dialog ) +{ + QWidget* container = new QWidget(this); + + QLabel* label = new QLabel(i18nc("@label", "Name:"), container); + KLineEdit* lineEdit = new KLineEdit(container); + lineEdit->setMinimumWidth(250); + + connect( lineEdit, SIGNAL( textChanged ( const QString &) ), SLOT( slotTextChanged( const QString& ) ) ); + QHBoxLayout* layout = new QHBoxLayout(container); + layout->addWidget(label, Qt::AlignRight); + layout->addWidget(lineEdit); + + setMainWidget(container); + setCaption(i18nc("@title:window", "Save Search Options")); + setButtons(KDialog::Ok | KDialog::Cancel); + setDefaultButton(KDialog::Ok); + setButtonText(KDialog::Ok, i18nc("@action:button", "Save")); + + KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), + "SaveSearchOptionsDialog"); + restoreDialogSize(dialogConfig); + enableButtonOk( false ); +} + +SearchOptionDialogBox::~SearchOptionDialogBox() +{ + KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), + "SaveSearchOptionsDialog"); + saveDialogSize(dialogConfig); +} + +QString SearchOptionDialogBox::text() const +{ + return mLineEdit->text(); +} + +void SearchOptionDialogBox::slotTextChanged( const QString & text ) +{ + enableButtonOk( !text.isEmpty() ); +} + +#include "searchoptiondialogbox.moc" diff --git a/src/search/searchoptiondialogbox.h b/src/search/searchoptiondialogbox.h new file mode 100644 index 000000000..dd1c18659 --- /dev/null +++ b/src/search/searchoptiondialogbox.h @@ -0,0 +1,40 @@ +/***************************************************************************** + * Copyright (C) 2010 by Laurent Montel * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License version 2 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public License * + * along with this library; see the file COPYING.LIB. If not, write to * + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * + * Boston, MA 02110-1301, USA. * + *****************************************************************************/ + +#ifndef SEARCH_OPTIONDIALOGBOX +#define SEARCH_OPTIONDIALOGBOX + +#include + +class KLineEdit; + +class SearchOptionDialogBox : public KDialog +{ + Q_OBJECT +public: + SearchOptionDialogBox( QWidget *widget); + ~SearchOptionDialogBox(); + + QString text() const; + +protected slots: + void slotTextChanged( const QString & ); +private: + KLineEdit *mLineEdit; +}; +#endif