• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KDEUI

  • kdeui
  • util
kcompletionbase.cpp
Go to the documentation of this file.
1/* This file is part of the KDE libraries
2
3 Copyright (c) 2000 Dawit Alemayehu <adawit@kde.org>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License (LGPL) as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19*/
20
21#include <QtCore/QMap>
22#include <QtCore/QObject>
23
24#include <kcompletion.h>
25
26class KCompletionBasePrivate
27{
28public:
29 KCompletionBasePrivate()
30 // Assign the default completion type to use.
31 : m_iCompletionMode( KGlobalSettings::completionMode() )
32 , m_delegate( 0 )
33 {
34 }
35 ~KCompletionBasePrivate()
36 {
37 if( m_bAutoDelCompObj && m_pCompObj )
38 {
39 delete m_pCompObj;
40 }
41 }
42 // Flag that determined whether the completion object
43 // should be deleted when this object is destroyed.
44 bool m_bAutoDelCompObj;
45 // Determines whether this widget handles completion signals
46 // internally or not
47 bool m_bHandleSignals;
48 // Determines whether this widget fires rotation signals
49 bool m_bEmitSignals;
50 // Stores the completion mode locally.
51 KGlobalSettings::Completion m_iCompletionMode;
52 // Pointer to Completion object.
53 QPointer<KCompletion> m_pCompObj;
54 // Keybindings
55 KCompletionBase::KeyBindingMap m_keyMap;
56 // we may act as a proxy to another KCompletionBase object
57 KCompletionBase *m_delegate;
58};
59
60KCompletionBase::KCompletionBase()
61 : d( new KCompletionBasePrivate )
62{
63 // Initialize all key-bindings to 0 by default so that
64 // the event filter will use the global settings.
65 useGlobalKeyBindings();
66
67 // By default we initialize everything except hsig to false.
68 // All the variables would be setup properly when
69 // the appropriate member functions are called.
70 setup( false, true, false );
71}
72
73KCompletionBase::~KCompletionBase()
74{
75 delete d;
76}
77
78void KCompletionBase::setDelegate( KCompletionBase *delegate )
79{
80 d->m_delegate = delegate;
81
82 if ( delegate ) {
83 delegate->d->m_bAutoDelCompObj = d->m_bAutoDelCompObj;
84 delegate->d->m_bHandleSignals = d->m_bHandleSignals;
85 delegate->d->m_bEmitSignals = d->m_bEmitSignals;
86 delegate->d->m_iCompletionMode = d->m_iCompletionMode;
87 delegate->d->m_keyMap = d->m_keyMap;
88 }
89}
90
91KCompletionBase *KCompletionBase::delegate() const
92{
93 return d->m_delegate;
94}
95
96KCompletion* KCompletionBase::completionObject( bool hsig )
97{
98 if ( d->m_delegate )
99 return d->m_delegate->completionObject( hsig );
100
101 if ( !d->m_pCompObj )
102 {
103 setCompletionObject( new KCompletion(), hsig );
104 d->m_bAutoDelCompObj = true;
105 }
106 return d->m_pCompObj;
107}
108
109void KCompletionBase::setCompletionObject( KCompletion* compObj, bool hsig )
110{
111 if ( d->m_delegate ) {
112 d->m_delegate->setCompletionObject( compObj, hsig );
113 return;
114 }
115
116 if ( d->m_bAutoDelCompObj && compObj != d->m_pCompObj )
117 delete d->m_pCompObj;
118
119 d->m_pCompObj = compObj;
120
121 // We emit rotation and completion signals
122 // if completion object is not NULL.
123 setup( false, hsig, !d->m_pCompObj.isNull() );
124}
125
126// BC: Inline this function and possibly rename it to setHandleEvents??? (DA)
127void KCompletionBase::setHandleSignals( bool handle )
128{
129 if ( d->m_delegate )
130 d->m_delegate->setHandleSignals( handle );
131 else
132 d->m_bHandleSignals = handle;
133}
134
135bool KCompletionBase::isCompletionObjectAutoDeleted() const
136{
137 return d->m_delegate ? d->m_delegate->isCompletionObjectAutoDeleted()
138 : d->m_bAutoDelCompObj;
139}
140
141void KCompletionBase::setAutoDeleteCompletionObject( bool autoDelete )
142{
143 if ( d->m_delegate )
144 d->m_delegate->setAutoDeleteCompletionObject( autoDelete );
145 else
146 d->m_bAutoDelCompObj = autoDelete;
147}
148
149void KCompletionBase::setEnableSignals( bool enable )
150{
151 if ( d->m_delegate )
152 d->m_delegate->setEnableSignals( enable );
153 else
154 d->m_bEmitSignals = enable;
155}
156
157bool KCompletionBase::handleSignals() const
158{
159 return d->m_delegate ? d->m_delegate->handleSignals() : d->m_bHandleSignals;
160}
161
162bool KCompletionBase::emitSignals() const
163{
164 return d->m_delegate ? d->m_delegate->emitSignals() : d->m_bEmitSignals;
165}
166
167void KCompletionBase::setCompletionMode( KGlobalSettings::Completion mode )
168{
169 if ( d->m_delegate ) {
170 d->m_delegate->setCompletionMode( mode );
171 return;
172 }
173
174 d->m_iCompletionMode = mode;
175 // Always sync up KCompletion mode with ours as long as we
176 // are performing completions.
177 if( d->m_pCompObj && d->m_iCompletionMode != KGlobalSettings::CompletionNone )
178 d->m_pCompObj->setCompletionMode( d->m_iCompletionMode );
179}
180
181KGlobalSettings::Completion KCompletionBase::completionMode() const
182{
183 return d->m_delegate ? d->m_delegate->completionMode() : d->m_iCompletionMode;
184}
185
186bool KCompletionBase::setKeyBinding( KeyBindingType item, const KShortcut& cut )
187{
188 if ( d->m_delegate )
189 return d->m_delegate->setKeyBinding( item, cut );
190
191
192 if( !cut.isEmpty() )
193 {
194 for( KeyBindingMap::Iterator it = d->m_keyMap.begin(); it != d->m_keyMap.end(); ++it )
195 if( it.value() == cut ) return false;
196 }
197 d->m_keyMap.insert( item, cut );
198 return true;
199}
200
201KShortcut KCompletionBase::getKeyBinding( KeyBindingType item ) const
202{
203 return d->m_delegate ? d->m_delegate->getKeyBinding( item ) : d->m_keyMap[ item ];
204}
205
206void KCompletionBase::useGlobalKeyBindings()
207{
208 if ( d->m_delegate ) {
209 d->m_delegate->useGlobalKeyBindings();
210 return;
211 }
212
213 d->m_keyMap.clear();
214 d->m_keyMap.insert( TextCompletion, KShortcut() );
215 d->m_keyMap.insert( PrevCompletionMatch, KShortcut() );
216 d->m_keyMap.insert( NextCompletionMatch, KShortcut() );
217 d->m_keyMap.insert( SubstringCompletion, KShortcut() );
218}
219
220KCompletion* KCompletionBase::compObj() const
221{
222 return d->m_delegate ? d->m_delegate->compObj()
223 : static_cast<KCompletion*>(d->m_pCompObj);
224}
225
226KCompletionBase::KeyBindingMap KCompletionBase::getKeyBindings() const
227{
228 return d->m_delegate ? d->m_delegate->getKeyBindings() : d->m_keyMap;
229}
230
231void KCompletionBase::setup( bool autodel, bool hsig, bool esig )
232{
233 if ( d->m_delegate ) {
234 d->m_delegate->setup( autodel, hsig, esig );
235 return;
236 }
237
238 d->m_bAutoDelCompObj = autodel;
239 d->m_bHandleSignals = hsig;
240 d->m_bEmitSignals = esig;
241}
242
243void KCompletionBase::virtual_hook( int, void* )
244{ /*BASE::virtual_hook( id, data );*/ }
245
KCompletionBase
An abstract base class for adding a completion feature into widgets.
Definition: kcompletion.h:646
KCompletionBase::delegate
KCompletionBase * delegate() const
Returns the delegation object.
Definition: kcompletionbase.cpp:91
KCompletionBase::handleSignals
bool handleSignals() const
Returns true if the object handles the signals.
Definition: kcompletionbase.cpp:157
KCompletionBase::setDelegate
void setDelegate(KCompletionBase *delegate)
Sets or removes the delegation object.
Definition: kcompletionbase.cpp:78
KCompletionBase::completionMode
KGlobalSettings::Completion completionMode() const
Returns the current completion mode.
Definition: kcompletionbase.cpp:181
KCompletionBase::setHandleSignals
virtual void setHandleSignals(bool handle)
Enables this object to handle completion and rotation events internally.
Definition: kcompletionbase.cpp:127
KCompletionBase::compObj
KCompletion * compObj() const
Returns a pointer to the completion object.
Definition: kcompletionbase.cpp:220
KCompletionBase::virtual_hook
virtual void virtual_hook(int id, void *data)
Virtual hook, used to add new "virtual" functions while maintaining binary compatibility.
Definition: kcompletionbase.cpp:243
KCompletionBase::emitSignals
bool emitSignals() const
Returns true if the object emits the signals.
Definition: kcompletionbase.cpp:162
KCompletionBase::setCompletionObject
virtual void setCompletionObject(KCompletion *compObj, bool hsig=true)
Sets up the completion object to be used.
Definition: kcompletionbase.cpp:109
KCompletionBase::getKeyBindings
KeyBindingMap getKeyBindings() const
Returns a key-binding map.
Definition: kcompletionbase.cpp:226
KCompletionBase::completionObject
KCompletion * completionObject(bool hsig=true)
Returns a pointer to the current completion object.
Definition: kcompletionbase.cpp:96
KCompletionBase::getKeyBinding
KShortcut getKeyBinding(KeyBindingType item) const
Returns the key-binding used for the specified item.
Definition: kcompletionbase.cpp:201
KCompletionBase::setAutoDeleteCompletionObject
void setAutoDeleteCompletionObject(bool autoDelete)
Sets the completion object when this widget's destructor is called.
Definition: kcompletionbase.cpp:141
KCompletionBase::~KCompletionBase
virtual ~KCompletionBase()
Destructor.
Definition: kcompletionbase.cpp:73
KCompletionBase::setEnableSignals
void setEnableSignals(bool enable)
Sets the widget's ability to emit text completion and rotation signals.
Definition: kcompletionbase.cpp:149
KCompletionBase::KCompletionBase
KCompletionBase()
Default constructor.
Definition: kcompletionbase.cpp:60
KCompletionBase::isCompletionObjectAutoDeleted
bool isCompletionObjectAutoDeleted() const
Returns true if the completion object is deleted upon this widget's destruction.
Definition: kcompletionbase.cpp:135
KCompletionBase::setKeyBinding
bool setKeyBinding(KeyBindingType item, const KShortcut &key)
Sets the key-binding to be used for manual text completion, text rotation in a history list as well a...
Definition: kcompletionbase.cpp:186
KCompletionBase::useGlobalKeyBindings
void useGlobalKeyBindings()
Sets this object to use global values for key-bindings.
Definition: kcompletionbase.cpp:206
KCompletionBase::setCompletionMode
virtual void setCompletionMode(KGlobalSettings::Completion mode)
Sets the type of completion to be used.
Definition: kcompletionbase.cpp:167
KCompletionBase::KeyBindingType
KeyBindingType
Constants that represent the items whose short-cut key-binding is programmable.
Definition: kcompletion.h:653
KCompletionBase::SubstringCompletion
@ SubstringCompletion
Substring completion (by default Ctrl-T).
Definition: kcompletion.h:669
KCompletionBase::NextCompletionMatch
@ NextCompletionMatch
Switch to next completion (by default Ctrl-Down).
Definition: kcompletion.h:665
KCompletionBase::PrevCompletionMatch
@ PrevCompletionMatch
Switch to previous completion (by default Ctrl-Up).
Definition: kcompletion.h:661
KCompletionBase::TextCompletion
@ TextCompletion
Text completion (by default Ctrl-E).
Definition: kcompletion.h:657
KCompletion
A generic class for completing QStrings.
Definition: kcompletion.h:131
KGlobalSettings
Access the KDE global configuration.
Definition: kglobalsettings.h:59
KGlobalSettings::Completion
Completion
This enum describes the completion mode used for by the KCompletion class.
Definition: kglobalsettings.h:179
KGlobalSettings::CompletionNone
@ CompletionNone
No completion is used.
Definition: kglobalsettings.h:183
KShortcut
Represents a keyboard shortcut.
Definition: kshortcut.h:58
QMap
kcompletion.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDEUI

Skip menu "KDEUI"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal