44#include < gui/server_ui.h>
55#include < gui/server_windowmanager.h>
66
7+ #define MAX_FIND_COMBO_SZ 20
8+
9+ mbServerDialogFindReplace::Strings::Strings () :
10+ cachePrefix (QStringLiteral(" Ui.Dialogs.FindReplace." )),
11+ findComboBox(QStringLiteral(" findComboBox" ))
12+ {
13+ }
14+
15+ const mbServerDialogFindReplace::Strings &mbServerDialogFindReplace::Strings::instance ()
16+ {
17+ static const Strings s;
18+ return s;
19+ }
20+
721mbServerDialogFindReplace::mbServerDialogFindReplace (QWidget *parent) :
8- QDialog( parent),
22+ mbCoreDialogBase(Strings::instance().cachePrefix, parent),
923 ui(new Ui::mbServerDialogFindReplace)
1024{
1125 ui->setupUi (this );
@@ -20,6 +34,40 @@ mbServerDialogFindReplace::~mbServerDialogFindReplace()
2034 delete ui;
2135}
2236
37+ MBSETTINGS mbServerDialogFindReplace::cachedSettings () const
38+ {
39+ const Strings &ds = Strings::instance ();
40+ const QString &prefix = ds.cachePrefix ;
41+
42+ QStringList lsFindComboBox;
43+ for (int i = 0 ; i < ui->cmbFind ->count (); ++i)
44+ lsFindComboBox.append (ui->cmbFind ->itemText (i));
45+ MBSETTINGS m = mbCoreDialogBase::cachedSettings ();
46+ m[prefix+ds.findComboBox ] = lsFindComboBox;
47+ return m;
48+ }
49+
50+ void mbServerDialogFindReplace::setCachedSettings (const MBSETTINGS &settings)
51+ {
52+ mbCoreDialogBase::setCachedSettings (settings);
53+ const Strings &ds = Strings::instance ();
54+ const QString &prefix = ds.cachePrefix ;
55+
56+ MBSETTINGS::const_iterator it;
57+ MBSETTINGS::const_iterator end = settings.end ();
58+ it = settings.find (prefix+ds.findComboBox );
59+ if (it != end)
60+ {
61+ QStringList ls = it.value ().toStringList ();
62+ int i = 0 ;
63+ Q_FOREACH (const QString &s, ls)
64+ {
65+ ui->cmbFind ->insertItem (i, s);
66+ ++i;
67+ }
68+ }
69+ }
70+
2371void mbServerDialogFindReplace::execFindReplace (bool replace)
2472{
2573 if (replace)
@@ -34,12 +82,14 @@ void mbServerDialogFindReplace::execFindReplace(bool replace)
3482
3583void mbServerDialogFindReplace::findNext ()
3684{
85+ processFindCombo ();
3786 int flags = getFindFlags ();
3887 mbServer::global ()->ui ()->windowManager ()->find (ui->cmbFind ->currentText (), flags);
3988}
4089
4190void mbServerDialogFindReplace::findPrevious ()
4291{
92+ processFindCombo ();
4393 int flags = getFindFlags ();
4494 flags |= mb::FindBackward;
4595 mbServer::global ()->ui ()->windowManager ()->find (ui->cmbFind ->currentText (), flags);
@@ -57,3 +107,27 @@ int mbServerDialogFindReplace::getFindFlags()
57107 if (ui->chbMatchWord ->isChecked ()) flags |= mb::FindWholeWords ;
58108 return flags;
59109}
110+
111+ void mbServerDialogFindReplace::processFindCombo ()
112+ {
113+ QComboBox *cmb = ui->cmbFind ;
114+ QString text = cmb->currentText ();
115+ if (text.size ())
116+ {
117+ if (text != cmb->itemText (0 ))
118+ {
119+ int i = cmb->findText (text);
120+ if (i > 0 )
121+ {
122+ cmb->removeItem (i);
123+ cmb->insertItem (0 , text);
124+ cmb->setCurrentText (text);
125+ }
126+ else if (i < 0 )
127+ cmb->insertItem (0 , text);
128+
129+ while (cmb->count () > MAX_FIND_COMBO_SZ)
130+ cmb->removeItem (MAX_FIND_COMBO_SZ);
131+ }
132+ }
133+ }
0 commit comments