[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