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