kdeui Library API Documentation

kcombobox.h

00001 /* This file is part of the KDE libraries
00002 
00003    Copyright (c) 2000,2001 Dawit Alemayehu <adawit@kde.org>
00004    Copyright (c) 2000,2001 Carsten Pfeiffer <pfeiffer@kde.org>
00005 
00006    This library is free software; you can redistribute it and/or
00007    modify it under the terms of the GNU Lesser General Public
00008    License (LGPL) as published by the Free Software Foundation; either
00009    version 2 of the License, or (at your option) any later version.
00010 
00011    This library is distributed in the hope that it will be useful,
00012    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014    Lesser General Public License for more details.
00015 
00016    You should have received a copy of the GNU Lesser General Public License
00017    along with this library; see the file COPYING.LIB.  If not, write to
00018    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00019    Boston, MA 02111-1307, USA.
00020 */
00021 
00022 #ifndef _KCOMBOBOX_H
00023 #define _KCOMBOBOX_H
00024 
00025 #include <qlineedit.h>
00026 #include <qcombobox.h>
00027 
00028 #include <kcompletion.h>
00029 
00030 class QListBoxItem;
00031 class QPopupMenu;
00032 class QLineEdit;
00033 
00034 class KCompletionBox;
00035 class KURL;
00036 
00121 class KComboBox : public QComboBox, public KCompletionBase
00122 {
00123   Q_OBJECT
00124   Q_PROPERTY( bool autoCompletion READ autoCompletion WRITE setAutoCompletion )
00125   Q_PROPERTY( bool contextMenuEnabled READ isContextMenuEnabled WRITE setContextMenuEnabled )
00126   Q_PROPERTY( bool urlDropsEnabled READ isURLDropsEnabled WRITE setURLDropsEnabled )
00127 
00128 public:
00129 
00137     KComboBox( QWidget *parent=0, const char *name=0 );
00138 
00148     KComboBox( bool rw, QWidget *parent=0, const char *name=0 );
00149 
00153     virtual ~KComboBox();
00154 
00160     void setEditURL( const KURL& url );
00161 
00167     void insertURL( const KURL& url, int index = -1 );
00168 
00175     void insertURL( const QPixmap& pixmap, const KURL& url, int index = -1 );
00176 
00182     void changeURL( const KURL& url, int index );
00183 
00189     void changeURL( const QPixmap& pixmap, const KURL& url, int index );
00190 
00199     int cursorPosition() const { return ( lineEdit() ) ? lineEdit()->cursorPosition() : -1; }
00200 
00211     virtual void setAutoCompletion( bool autocomplete );
00212 
00222     bool autoCompletion() const {
00223         return completionMode() == KGlobalSettings::CompletionAuto;
00224     }
00225 
00242     virtual void setContextMenuEnabled( bool showMenu );
00243 
00247     bool isContextMenuEnabled() const { return m_bEnableMenu; }
00248 
00256     void setURLDropsEnabled( bool enable );
00257 
00261     bool isURLDropsEnabled() const;
00262 
00272     bool contains( const QString& text ) const;
00273 
00288     void setTrapReturnKey( bool trap );
00289 
00296     bool trapReturnKey() const;
00297 
00303     virtual bool eventFilter( QObject *, QEvent * );
00304 
00314     KCompletionBox * completionBox( bool create = true );
00315 
00316     virtual void setLineEdit( QLineEdit * );
00317 
00318 signals:
00325     void returnPressed();
00326 
00339     void returnPressed( const QString& );
00340 
00352     void completion( const QString& );
00353 
00357     void substringCompletion( const QString& );
00358 
00371     void textRotation( KCompletionBase::KeyBindingType );
00372 
00377     void completionModeChanged( KGlobalSettings::Completion );
00378 
00391     void aboutToShowContextMenu( QPopupMenu * );
00392 
00393 public slots:
00394 
00412     void rotateText( KCompletionBase::KeyBindingType /* type */ );
00413 
00420     virtual void setCompletedText( const QString& );
00421 
00426     void setCompletedItems( const QStringList& items );
00427 
00433     void setCurrentItem( const QString& item, bool insert = false, int index = -1 );
00434     void setCurrentItem(int index) { QComboBox::setCurrentItem(index); }
00435 
00436 protected slots:
00437 
00441     virtual void itemSelected( QListBoxItem* ) {};
00442 
00454     virtual void makeCompletion( const QString& );
00455 
00456 protected:
00457     /*
00458     * This function simply sets the lineedit text and
00459     * highlights the text appropriately if the boolean
00460     * value is set to true.
00461     *
00462     * @param
00463     * @param
00464     */
00465     virtual void setCompletedText( const QString& /* */, bool /*marked*/ );
00466 
00470     virtual void create( WId = 0, bool initializeWindow = true,
00471                          bool destroyOldWindow = true );
00472 
00473     virtual void wheelEvent( QWheelEvent *ev );
00474 
00475 private slots:
00476     void lineEditDeleted();
00477 
00478 private:
00479     // Constants that represent the ID's of the popup menu.
00480     // TODO: See if we can replace this mess with KActionMenu
00481     // in the future though this is working lovely.
00482     enum MenuID {
00483         Default=0,
00484         Cut,
00485         Copy,
00486         Paste,
00487         Clear,
00488         Unselect,
00489         SelectAll,
00490         NoCompletion,
00491         AutoCompletion,
00492         ShellCompletion,
00493         PopupCompletion,
00494         SemiAutoCompletion
00495     };
00496 
00500     void init();
00501 
00502     // BC: No longer needed...
00503     bool m_bEnableMenu;
00504 
00505     // Flag to determine whether return-key events should be propagated...
00506     bool m_trapReturnKey; // ### BCI: unused, remove in KDE4
00507 
00508 protected:
00509     virtual void virtual_hook( int id, void* data );
00510 
00511 private:
00512     class KComboBoxPrivate;
00513     KComboBoxPrivate *d;
00514 };
00515 
00516 
00517 class KPixmapProvider;
00518 
00535 class KHistoryCombo : public KComboBox
00536 {
00537     Q_OBJECT
00538     Q_PROPERTY( QStringList historyItems READ historyItems WRITE setHistoryItems )
00539 
00540 public:
00560     KHistoryCombo( QWidget *parent = 0L, const char *name = 0L );
00561 
00562     // ### merge these two constructors
00569     KHistoryCombo( bool useCompletion,
00570            QWidget *parent = 0L, const char *name = 0L );
00571 
00575     ~KHistoryCombo();
00576 
00583     inline void setHistoryItems( QStringList items ) {
00584         setHistoryItems(items, false);
00585     }
00586 
00628     void setHistoryItems( QStringList items, bool setCompletionList );
00629 
00636     QStringList historyItems() const;
00637 
00645     bool removeFromHistory( const QString& item );
00646 
00659     void setPixmapProvider( KPixmapProvider *prov );
00660 
00666     KPixmapProvider * pixmapProvider() const { return myPixProvider; }
00667 
00672     void reset() { slotReset(); }
00673 
00674 public slots:
00694     void addToHistory( const QString& item );
00695 
00699     void clearHistory();
00700 
00701 signals:
00705     void cleared();
00706 
00707 protected:
00711     virtual void keyPressEvent( QKeyEvent * );
00712 
00716     virtual void wheelEvent( QWheelEvent *ev );
00717 
00726     void insertItems( const QStringList& items );
00727 
00731     bool useCompletion() const { return compObj() != 0L; }
00732 
00733 private slots:
00737     void slotReset();
00738 
00743     void slotClear();
00744 
00748     void addContextMenuItems( QPopupMenu* );
00749 
00750 private:
00751     void init( bool useCompletion );
00752     void rotateUp();
00753     void rotateDown();
00754 
00758     int myIterateIndex;
00759 
00763     QString myText;
00764 
00769     bool myRotated;
00770     KPixmapProvider *myPixProvider;
00771 
00772 protected:
00773     virtual void virtual_hook( int id, void* data );
00774 private:
00775     class KHistoryComboPrivate;
00776     KHistoryComboPrivate *d;
00777 };
00778 
00779 
00780 #endif
00781 
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.0.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Wed Oct 8 12:20:58 2003 by doxygen 1.2.18 written by Dimitri van Heesch, © 1997-2001