25 #ifndef KLFSEARCHBAR_H
26 #define KLFSEARCHBAR_H
129 virtual bool equals(PosData *other)
const = 0;
135 int ref() {
return ++r; }
136 int deref() {
return --r; }
140 virtual bool wantAutoDelete() {
return true; }
150 Pos(
const Pos& other) : posdata(other.posdata)
157 posdata.setAutoDelete(posdata->wantAutoDelete());
160 Pos& operator=(
const Pos& other)
163 posdata = other.posdata;
170 klfDbg(
"posdata="<<posdata) ;
171 return (posdata != NULL) ;
180 bool equals(
const Pos& other)
const {
181 if (valid() && other.valid())
182 return posdata->equals(other.data<PosData>());
184 return (valid() == other.valid());
212 inline TT * data()
const
215 KLF_ASSERT_NOT_NULL(ptr,
"accessing a posdata that is NULL or of incompatible type!",
return NULL;) ;
232 virtual Pos searchStartFrom(
bool forward);
252 virtual Pos searchFind(
const QString& queryString,
const Pos& fromPos,
bool forward) = 0;
256 virtual void searchMoveToPos(
const Pos& pos) { Q_UNUSED(pos); }
262 virtual void searchPerformed(
const QString& queryString,
bool found,
const Pos& pos)
263 { Q_UNUSED(queryString); Q_UNUSED(found); Q_UNUSED(pos); }
267 virtual void searchAborted() = 0;
272 virtual void searchReinitialized() { }
279 virtual QString searchQueryString()
const {
klfDbg(
"pQString="<<pQString) ;
return pQString; }
284 virtual void setSearchQueryString(
const QString& s) {
klfDbg(
"pQString="<<pQString<<
"; setting to "<<s) ; pQString = s; }
286 virtual bool searchHasInterruptRequested() {
return pInterruptRequested; }
288 virtual void setSearchInterruptRequested(
bool on);
292 bool pInterruptRequested;
305 virtual Pos
searchFind(
const QString& queryString,
const Pos& fromPos,
bool forward);
319 virtual const KLFPosSearchable *target()
const {
return dynamic_cast<KLFPosSearchable*>(pTarget); }
386 virtual bool searchFindNext(
bool forward) = 0;
393 virtual void searchAbort() = 0;
400 { Q_UNUSED(queryString); Q_UNUSED(found); Q_UNUSED(pos); }
426 virtual KLFSearchable *target() {
return dynamic_cast<KLFSearchable*>(pTarget); }
432 struct KLFSearchBarPrivate;
468 Q_PROPERTY(
QString currentSearchText READ currentSearchText) ;
469 Q_PROPERTY(
bool autoHide READ autoHide WRITE setAutoHide) ;
470 Q_PROPERTY(
bool showOverlayMode READ showOverlayMode WRITE setShowOverlayMode) ;
471 Q_PROPERTY(
QRect showOverlayRelativeGeometry READ showOverlayRelativeGeometry
472 WRITE setShowOverlayRelativeGeometry ) ;
473 Q_PROPERTY(
QString focusOutText READ focusOutText WRITE setFocusOutText) ;
474 Q_PROPERTY(
QColor colorFound READ colorFound WRITE setColorFound) ;
475 Q_PROPERTY(
QColor colorNotFound READ colorNotFound WRITE setColorNotFound) ;
476 Q_PROPERTY(
bool showHideButton READ hideButtonShown WRITE setShowHideButton) ;
477 Q_PROPERTY(
bool showSearchLabel READ showSearchLabel WRITE setShowSearchLabel) ;
478 Q_PROPERTY(
bool emacsStyleBackspace READ emacsStyleBackspace WRITE setEmacsStyleBackspace) ;
479 Q_PROPERTY(
int resetTimeout READ resetTimeout WRITE setResetTimeout) ;
482 enum SearchState { Default, FocusOut, Found, NotFound, Aborted };
488 virtual void registerShortcuts(QWidget *parent);
495 QString currentSearchText()
const;
496 bool autoHide()
const;
497 bool showOverlayMode()
const;
498 QRect showOverlayRelativeGeometry()
const;
501 QColor colorFound()
const;
503 QColor colorNotFound()
const;
504 bool hideButtonShown()
const;
505 bool showSearchLabel()
const;
506 bool emacsStyleBackspace()
const;
507 int resetTimeout()
const;
513 SearchState currentState()
const;
517 void setAutoHide(
bool autohide);
524 void setShowOverlayMode(
bool showOverlayMode);
525 void setShowOverlayRelativeGeometry(
const QRect& relativeGeometryPercent);
526 void setShowOverlayRelativeGeometry(
int widthPercent,
int heightPercent,
527 int positionXPercent,
int positionYPercent);
528 void setColorFound(
const QColor& color);
529 void setColorNotFound(
const QColor& color);
530 void setShowHideButton(
bool showHideButton);
531 void setShowSearchLabel(
bool show);
532 void setEmacsStyleBackspace(
bool on);
537 void setResetTimeout(
int ms);
541 QLineEdit * editor();
544 void stateChanged(SearchState state);
545 void searchPerformed(
bool found);
546 void searchPerformed(
const QString& queryString,
bool found);
548 void found(
const QString& queryString,
bool forward);
551 void didNotFind(
const QString& queryString,
bool forward);
552 void searchAborted();
553 void escapePressed();
554 void searchReinitialized();
560 void hasMatch(
bool hasmatch);
562 void visibilityChanged(
bool isShown);
570 void focusOrNext(
bool forward =
true);
573 void focusOrPrev() { focusOrNext(
false); }
574 void find(
const QString&
string);
575 void find(
const QString&
string,
bool forward);
576 void findNext(
bool forward =
true);
577 void findPrev() { findNext(
false); }
582 virtual void setSearchText(
const QString& text);
583 void setFocusOutText(
const QString& focusOutText);
589 bool searchBarHasFocus();
591 virtual bool event(
QEvent *event);
594 bool _isInQtDesigner;
595 friend class KLFSearchBarDesPlugin;
599 virtual void slotSearchFocusIn();
600 virtual void slotSearchFocusOut();
601 virtual void slotSearchReset();
602 virtual void updateSearchFound(
bool found);
604 void promptEmptySearch();
616 void showSearchBarText(
const QString& text);
620 inline KLFPosSearchable *target() {
return dynamic_cast<KLFPosSearchable*>(pTarget); }
622 KLFSearchBarPrivate *d;
624 void adjustOverlayGeometry();
626 QString palettePropName(SearchState state)
const;
627 QString statePropValue(SearchState state)
const;
633 void performFind(
bool forward,
bool isFindNext =
false);