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

KDEUI

  • sources
  • kde-4.14
  • kdelibs
  • 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 
26 class KCompletionBasePrivate
27 {
28 public:
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 
60 KCompletionBase::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 
73 KCompletionBase::~KCompletionBase()
74 {
75  delete d;
76 }
77 
78 void 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 
91 KCompletionBase *KCompletionBase::delegate() const
92 {
93  return d->m_delegate;
94 }
95 
96 KCompletion* 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 
109 void 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)
127 void 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 
135 bool KCompletionBase::isCompletionObjectAutoDeleted() const
136 {
137  return d->m_delegate ? d->m_delegate->isCompletionObjectAutoDeleted()
138  : d->m_bAutoDelCompObj;
139 }
140 
141 void 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 
149 void 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 
157 bool KCompletionBase::handleSignals() const
158 {
159  return d->m_delegate ? d->m_delegate->handleSignals() : d->m_bHandleSignals;
160 }
161 
162 bool KCompletionBase::emitSignals() const
163 {
164  return d->m_delegate ? d->m_delegate->emitSignals() : d->m_bEmitSignals;
165 }
166 
167 void 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 
181 KGlobalSettings::Completion KCompletionBase::completionMode() const
182 {
183  return d->m_delegate ? d->m_delegate->completionMode() : d->m_iCompletionMode;
184 }
185 
186 bool 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 
201 KShortcut KCompletionBase::getKeyBinding( KeyBindingType item ) const
202 {
203  return d->m_delegate ? d->m_delegate->getKeyBinding( item ) : d->m_keyMap[ item ];
204 }
205 
206 void 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 
220 KCompletion* KCompletionBase::compObj() const
221 {
222  return d->m_delegate ? d->m_delegate->compObj()
223  : static_cast<KCompletion*>(d->m_pCompObj);
224 }
225 
226 KCompletionBase::KeyBindingMap KCompletionBase::getKeyBindings() const
227 {
228  return d->m_delegate ? d->m_delegate->getKeyBindings() : d->m_keyMap;
229 }
230 
231 void 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 
243 void KCompletionBase::virtual_hook( int, void* )
244 { /*BASE::virtual_hook( id, data );*/ }
245 
KStandardAction::cut
KAction * cut(const QObject *recvr, const char *slot, QObject *parent)
Cut selected area and store it in the clipboard.
Definition: kstandardaction.cpp:294
KCompletionBase::getKeyBindings
KeyBindingMap getKeyBindings() const
Returns a key-binding map.
Definition: kcompletionbase.cpp:226
KCompletionBase::setEnableSignals
void setEnableSignals(bool enable)
Sets the widget's ability to emit text completion and rotation signals.
Definition: kcompletionbase.cpp:149
KCompletionBase::delegate
KCompletionBase * delegate() const
Returns the delegation object.
Definition: kcompletionbase.cpp:91
QMap
QPointer< KCompletion >
KCompletionBase::NextCompletionMatch
Switch to next completion (by default Ctrl-Down).
Definition: kcompletion.h:665
KCompletionBase::compObj
KCompletion * compObj() const
Returns a pointer to the completion object.
Definition: kcompletionbase.cpp:220
KCompletionBase::TextCompletion
Text completion (by default Ctrl-E).
Definition: kcompletion.h:657
KCompletionBase::useGlobalKeyBindings
void useGlobalKeyBindings()
Sets this object to use global values for key-bindings.
Definition: kcompletionbase.cpp:206
KShortcut
Represents a keyboard shortcut.
Definition: kshortcut.h:57
KCompletionBase::getKeyBinding
KShortcut getKeyBinding(KeyBindingType item) const
Returns the key-binding used for the specified item.
Definition: kcompletionbase.cpp:201
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::~KCompletionBase
virtual ~KCompletionBase()
Destructor.
Definition: kcompletionbase.cpp:73
KCompletionBase::SubstringCompletion
Substring completion (by default Ctrl-T).
Definition: kcompletion.h:669
KCompletionBase::PrevCompletionMatch
Switch to previous completion (by default Ctrl-Up).
Definition: kcompletion.h:661
KShortcut::isEmpty
bool isEmpty() const
Returns whether this shortcut contains any nonempty key sequences.
Definition: kshortcut.cpp:144
KCompletionBase::setHandleSignals
virtual void setHandleSignals(bool handle)
Enables this object to handle completion and rotation events internally.
Definition: kcompletionbase.cpp:127
KCompletionBase::setCompletionMode
virtual void setCompletionMode(KGlobalSettings::Completion mode)
Sets the type of completion to be used.
Definition: kcompletionbase.cpp:167
KCompletion
A generic class for completing QStrings.
Definition: kcompletion.h:130
KCompletionBase::handleSignals
bool handleSignals() const
Returns true if the object handles the signals.
Definition: kcompletionbase.cpp:157
KCompletionBase::setAutoDeleteCompletionObject
void setAutoDeleteCompletionObject(bool autoDelete)
Sets the completion object when this widget's destructor is called.
Definition: kcompletionbase.cpp:141
KCompletionBase::isCompletionObjectAutoDeleted
bool isCompletionObjectAutoDeleted() const
Returns true if the completion object is deleted upon this widget's destruction.
Definition: kcompletionbase.cpp:135
kcompletion.h
KGlobalSettings
Access the KDE global configuration.
Definition: kglobalsettings.h:58
KCompletionBase::completionObject
KCompletion * completionObject(bool hsig=true)
Returns a pointer to the current completion object.
Definition: kcompletionbase.cpp:96
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
An abstract base class for adding a completion feature into widgets.
Definition: kcompletion.h:645
KGlobalSettings::CompletionNone
No completion is used.
Definition: kglobalsettings.h:183
KCompletionBase::KCompletionBase
KCompletionBase()
Default constructor.
Definition: kcompletionbase.cpp:60
KGlobalSettings::Completion
Completion
This enum describes the completion mode used for by the KCompletion class.
Definition: kglobalsettings.h:179
KCompletionBase::setCompletionObject
virtual void setCompletionObject(KCompletion *compObj, bool hsig=true)
Sets up the completion object to be used.
Definition: kcompletionbase.cpp:109
KCompletionBase::emitSignals
bool emitSignals() const
Returns true if the object emits the signals.
Definition: kcompletionbase.cpp:162
KCompletionBase::KeyBindingType
KeyBindingType
Constants that represent the items whose short-cut key-binding is programmable.
Definition: kcompletion.h:653
QMap::Iterator
typedef Iterator
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
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:23:59 by doxygen 1.8.7 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 API Reference

Skip menu "kdelibs 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

Search



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