[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-devel
Subject: Toggle advanced search options in Find/Replace dialog
From: Mashrab Kuvatov <kmashrab () sat ! physik ! uni-bremen ! de>
Date: 2005-04-23 12:52:55
Message-ID: 200504231453.01067.kmashrab () sat ! physik ! uni-bremen ! de
[Download RAW message or body]
[Attachment #2 (multipart/signed)]
[Attachment #4 (multipart/mixed)]
Hi all,
the changes I made for find dialog from kdelibs/kutils/kfind.cpp make
it possible to toggle (show/hide) search options. It is demonstrated in
attached shots, patch is included.
This dialog is used in many places, Konqi, KOffice apps, Kate, KPDF,
Akregator etc.
Originally, I posted it in kde-usability [1]. There were some good
suggestions.
Now, I'd like to know your opinion.
Second, could anyone please help me to fix the following issues:
- align Advanced/Basic button to the left
- resize the dialog to min. size when Basic button pressed
1. http://lists.kde.org/?l=kde-usability&m=111404468824806&w=2
Cheers,
Mashrab.
--
Mashrab Kuvatov
Ph.D student
University of Bremen, IUP
Home-page: www.sat.uni-bremen.de/members/mashrab
PGP key: www.uni-bremen.de/~kmashrab/kmashrab.asc
["kspread-find-advanced.jpg" (image/jpeg)]
["kspread-replace-basic.jpg" (image/jpeg)]
["kspread-replace-advanced.jpg" (image/jpeg)]
["kspread-find-basic.jpg" (image/jpeg)]
["kdelibs-kutils-kfind-toggle-options.patch" (text/x-diff)]
Index: kfinddialog.cpp
===================================================================
RCS file: /home/kde/kdelibs/kutils/kfinddialog.cpp,v
retrieving revision 1.27
diff -u -3 -p -r1.27 kfinddialog.cpp
--- kfinddialog.cpp 8 Jan 2005 22:49:58 -0000 1.27
+++ kfinddialog.cpp 23 Apr 2005 10:49:51 -0000
@@ -52,7 +52,7 @@ public:
};
KFindDialog::KFindDialog(QWidget *parent, const char *name, long options, const \
QStringList &findStrings, bool hasSelection) :
- KDialogBase(parent, name, true, i18n("Find Text"), Ok | Cancel, Ok),
+ KDialogBase(parent, name, true, i18n("Find Text"), User1 | Ok | Cancel, Ok),
m_findExtension (0),
m_replaceExtension (0)
{
@@ -63,7 +63,7 @@ KFindDialog::KFindDialog(QWidget *parent
}
KFindDialog::KFindDialog(bool modal, QWidget *parent, const char *name, long \
options, const QStringList &findStrings, bool hasSelection) :
- KDialogBase(parent, name, modal, i18n("Find Text"), Ok | Cancel, Ok),
+ KDialogBase(parent, name, modal, i18n("Find Text"), User1 | Ok | Cancel, Ok),
m_findExtension (0),
m_replaceExtension (0)
{
@@ -74,7 +74,7 @@ KFindDialog::KFindDialog(bool modal, QWi
}
KFindDialog::KFindDialog(QWidget *parent, const char *name, bool /*forReplace*/) :
- KDialogBase(parent, name, true, i18n("Replace Text"), Ok | Cancel, Ok),
+ KDialogBase(parent, name, true, i18n("Replace Text"), User1 | Ok | Cancel, Ok),
m_findExtension (0),
m_replaceExtension (0)
{
@@ -116,7 +116,11 @@ void KFindDialog::init(bool forReplace,
topLayout->setSpacing( KDialog::spacingHint() );
topLayout->setMargin( 0 );
- m_findGrp = new QGroupBox(0, Qt::Vertical, i18n("Find"), page);
+ m_findGrp = new QGroupBox(0, Qt::Vertical, QString::null, page);
+ m_findGrp->setFrameStyle( QFrame::NoFrame );
+ m_findGrp->setFrameShape( QFrame::NoFrame );
+ m_findGrp->setFrameShadow( QFrame::Raised );
+
m_findGrp->layout()->setSpacing( KDialog::spacingHint() );
// m_findGrp->layout()->setMargin( KDialog::marginHint() );
m_findLayout = new QGridLayout(m_findGrp->layout());
@@ -137,12 +141,15 @@ void KFindDialog::init(bool forReplace,
m_findLayout->addWidget(m_regExpItem, 2, 1);
topLayout->addWidget(m_findGrp);
- m_replaceGrp = new QGroupBox(0, Qt::Vertical, i18n("Replace With"), page);
+ m_replaceGrp = new QGroupBox(0, Qt::Vertical, QString::null, page);
m_replaceGrp->layout()->setSpacing( KDialog::spacingHint() );
// m_replaceGrp->layout()->setMargin( KDialog::marginHint() );
m_replaceLayout = new QGridLayout(m_replaceGrp->layout());
m_replaceLayout->setSpacing( KDialog::spacingHint() );
// m_replaceLayout->setMargin( KDialog::marginHint() );
+ m_replaceGrp->setFrameStyle( QFrame::NoFrame );
+ m_replaceGrp->setFrameShape( QFrame::NoFrame );
+ m_replaceGrp->setFrameShadow( QFrame::Raised );
m_replaceLabel = new QLabel(i18n("Replace&ment text:"), m_replaceGrp);
m_replace = new KHistoryCombo(true, m_replaceGrp);
@@ -158,7 +165,7 @@ void KFindDialog::init(bool forReplace,
m_replaceLayout->addWidget(m_backRefItem, 2, 1);
topLayout->addWidget(m_replaceGrp);
- m_optionGrp = new QGroupBox(0, Qt::Vertical, i18n("Options"), page);
+ m_optionGrp = new QGroupBox(0, Qt::Vertical, i18n("Search Options"), page);
m_optionGrp->layout()->setSpacing(KDialog::spacingHint());
// m_optionGrp->layout()->setMargin(KDialog::marginHint());
optionsLayout = new QGridLayout(m_optionGrp->layout());
@@ -197,6 +204,7 @@ void KFindDialog::init(bool forReplace,
connect(m_backRef, SIGNAL(toggled(bool)), m_backRefItem, \
SLOT(setEnabled(bool))); connect(m_regExpItem, SIGNAL(clicked()), this, \
SLOT(showPatterns()));
connect(m_backRefItem, SIGNAL(clicked()), this, SLOT(showPlaceholders()));
+ connect(this, SIGNAL(user1Clicked()), this, SLOT(toggleOptions()));
connect(m_find, SIGNAL(textChanged ( const QString & )),this, \
SLOT(textSearchChanged( const QString & )));
@@ -242,6 +250,11 @@ void KFindDialog::init(bool forReplace,
"above is searched for within the document.</qt>")));
}
+ setButtonGuiItem( User1, KGuiItem( i18n("&Advanced"), QString::null,
+ i18n("Toggle Options"),
+ i18n("<qt>If pressed, shows advanced options like "
+ "<b>Case sensetive</b>, <b>Find backwards</b>,"
+ " etc.</qt>")) );
// QWhatsthis texts
QWhatsThis::add ( m_find, i18n(
"Enter a pattern to search for, or select a previous pattern from "
@@ -274,6 +287,48 @@ void KFindDialog::init(bool forReplace,
"Search backwards.") );
QWhatsThis::add ( m_promptOnReplace, i18n(
"Ask before replacing each match found.") );
+ // Hide advanced options
+ m_optionGrp->hide();
+ m_regExp->hide();
+ m_regExpItem->hide();
+ m_backRef->hide();
+ m_backRefItem->hide();
+
+}
+
+void KFindDialog::toggleOptions()
+{
+ if( m_optionGrp->isShown() ){
+ // if options tab is visible, hide it
+ m_optionGrp->hide();
+ // change button text accordingly
+ setButtonGuiItem( User1, KGuiItem( i18n("&Advanced"), QString::null,
+ i18n("Toggle Options"),
+ i18n("<qt>If pressed, shows advanced options like "
+ "<b>Case sensetive</b>, <b>Find backwards</b>,"
+ " etc.</qt>")) );
+ m_regExp->hide();
+ m_regExpItem->hide();
+ m_backRef->hide();
+ m_backRefItem->hide();
+ adjustSize();
+ }
+ else {
+ // if options tab is hidden, show it
+ m_optionGrp->show();
+ // change button text accordingly
+ setButtonGuiItem( User1, KGuiItem( i18n("&Basic"), QString::null,
+ i18n("Toggle Options"),
+ i18n("<qt>If pressed, hides advanced options like "
+ "<b>Case sensetive</b>, <b>Find backwards</b>,"
+ " etc.</qt>")) );
+ m_regExp->show();
+ m_regExpItem->show();
+ m_backRef->show();
+ m_backRefItem->show();
+ adjustSize();
+
+ }
}
void KFindDialog::textSearchChanged( const QString & text)
Index: kfinddialog.h
===================================================================
RCS file: /home/kde/kdelibs/kutils/kfinddialog.h,v
retrieving revision 1.21
diff -u -3 -p -r1.21 kfinddialog.h
--- kfinddialog.h 8 Jan 2005 22:49:58 -0000 1.21
+++ kfinddialog.h 23 Apr 2005 10:49:51 -0000
@@ -240,6 +240,7 @@ protected slots:
void showPatterns();
void showPlaceholders();
void textSearchChanged( const QString &);
+ void toggleOptions();
protected:
virtual void showEvent ( QShowEvent * );
[Attachment #12 (application/pgp-signature)]
>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic