kcompletionbase.cpp
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 #include <qobject.h>
00022 
00023 #include <kcompletion.h>
00024 
00025 KCompletionBase::KCompletionBase()
00026 {
00027     m_delegate = 0L;
00028     
00029     m_iCompletionMode = KGlobalSettings::completionMode();
00030 
00031     
00032     
00033     useGlobalKeyBindings();
00034 
00035     
00036     
00037     
00038     setup( false, false, false );
00039 }
00040 
00041 KCompletionBase::~KCompletionBase()
00042 {
00043     if( m_bAutoDelCompObj && m_pCompObj )
00044     {
00045         delete m_pCompObj;
00046     }
00047 }
00048 
00049 void KCompletionBase::setDelegate( KCompletionBase *delegate )
00050 {
00051     m_delegate = delegate;
00052 
00053     if ( m_delegate ) {
00054         m_delegate->m_bAutoDelCompObj = m_bAutoDelCompObj;
00055         m_delegate->m_bHandleSignals  = m_bHandleSignals;
00056         m_delegate->m_bEmitSignals    = m_bEmitSignals;
00057         m_delegate->m_iCompletionMode = m_iCompletionMode;
00058         m_delegate->m_keyMap          = m_keyMap;
00059     }
00060 }
00061 
00062 KCompletion* KCompletionBase::completionObject( bool hsig )
00063 {
00064     if ( m_delegate )
00065         return m_delegate->completionObject( hsig );
00066     
00067     if ( !m_pCompObj )
00068     {
00069         setCompletionObject( new KCompletion(), hsig );
00070     m_bAutoDelCompObj = true;
00071     }
00072     return m_pCompObj;
00073 }
00074 
00075 void KCompletionBase::setCompletionObject( KCompletion* compObj, bool hsig )
00076 {
00077     if ( m_delegate ) {
00078         m_delegate->setCompletionObject( compObj, hsig );
00079         return;
00080     }
00081     
00082     if ( m_bAutoDelCompObj && compObj != m_pCompObj )
00083         delete m_pCompObj;
00084 
00085     m_pCompObj = compObj;
00086 
00087     
00088     
00089     setup( false, hsig, !m_pCompObj.isNull() );
00090 }
00091 
00092 
00093 void KCompletionBase::setHandleSignals( bool handle )
00094 {
00095     if ( m_delegate )
00096         m_delegate->setHandleSignals( handle );
00097     else
00098         m_bHandleSignals = handle;
00099 }
00100 
00101 void KCompletionBase::setCompletionMode( KGlobalSettings::Completion mode )
00102 {
00103     if ( m_delegate ) {
00104         m_delegate->setCompletionMode( mode );
00105         return;
00106     }
00107     
00108     m_iCompletionMode = mode;
00109     
00110     
00111     if( m_pCompObj && m_iCompletionMode != KGlobalSettings::CompletionNone )
00112         m_pCompObj->setCompletionMode( m_iCompletionMode );
00113 }
00114 
00115 bool KCompletionBase::setKeyBinding( KeyBindingType item, const KShortcut& cut )
00116 {
00117     if ( m_delegate )
00118         return m_delegate->setKeyBinding( item, cut );
00119 
00120 
00121     if( !cut.isNull() )
00122     {
00123         for( KeyBindingMap::Iterator it = m_keyMap.begin(); it != m_keyMap.end(); ++it )
00124             if( it.data() == cut )  return false;
00125     }
00126     m_keyMap.replace( item, cut );
00127     return true;
00128 }
00129 
00130 void KCompletionBase::useGlobalKeyBindings()
00131 {
00132     if ( m_delegate ) {
00133         m_delegate->useGlobalKeyBindings();
00134         return;
00135     }
00136     
00137     m_keyMap.clear();
00138     m_keyMap.insert( TextCompletion, 0 );
00139     m_keyMap.insert( PrevCompletionMatch, 0 );
00140     m_keyMap.insert( NextCompletionMatch, 0 );
00141     m_keyMap.insert( SubstringCompletion, 0 );
00142 }
00143 
00144 void KCompletionBase::setup( bool autodel, bool hsig, bool esig )
00145 {
00146     if ( m_delegate ) {
00147         m_delegate->setup( autodel, hsig, esig );
00148         return;
00149     }
00150     
00151     m_bAutoDelCompObj = autodel;
00152     m_bHandleSignals = hsig;
00153     m_bEmitSignals = esig;
00154 }
 
This file is part of the documentation for kdecore Library Version 3.2.0.