equal
deleted
inserted
replaced
29 { |
29 { |
30 m_whitespace = QRegExp("\\s"); |
30 m_whitespace = QRegExp("\\s"); |
31 |
31 |
32 m_cmds = new QStringList(); |
32 m_cmds = new QStringList(); |
33 m_nicks = new QStringList(); |
33 m_nicks = new QStringList(); |
|
34 m_sorted_nicks = new QMap<QString, QString>(); |
34 |
35 |
35 resetAutoCompletionStatus(); |
36 resetAutoCompletionStatus(); |
36 |
37 |
37 // reset autocompletion status when cursor is moved or content is changed |
38 // reset autocompletion status when cursor is moved or content is changed |
38 connect(this, SIGNAL(cursorPositionChanged(int, int)), |
39 connect(this, SIGNAL(cursorPositionChanged(int, int)), |
40 connect(this, SIGNAL(textChanged(const QString&)), |
41 connect(this, SIGNAL(textChanged(const QString&)), |
41 this, SLOT(resetAutoCompletionStatus())); |
42 this, SLOT(resetAutoCompletionStatus())); |
42 } |
43 } |
43 |
44 |
44 |
45 |
|
46 SmartLineEdit::~SmartLineEdit() |
|
47 { |
|
48 delete m_cmds; |
|
49 delete m_nicks; |
|
50 delete m_sorted_nicks; |
|
51 } |
|
52 |
|
53 |
45 void SmartLineEdit::addCommands(const QStringList & commands) |
54 void SmartLineEdit::addCommands(const QStringList & commands) |
46 { |
55 { |
47 m_keywordMutex.lock(); |
56 m_keywordMutex.lock(); |
48 |
57 |
49 m_cmds->append(commands); |
58 m_cmds->append(commands); |
67 |
76 |
68 void SmartLineEdit::addNickname(const QString & name) |
77 void SmartLineEdit::addNickname(const QString & name) |
69 { |
78 { |
70 m_keywordMutex.lock(); |
79 m_keywordMutex.lock(); |
71 |
80 |
|
81 m_sorted_nicks->insert(name.toLower(), name); |
72 m_nicks->append(name); |
82 m_nicks->append(name); |
73 |
83 |
74 m_keywordMutex.unlock(); |
84 m_keywordMutex.unlock(); |
75 } |
85 } |
76 |
86 |
77 |
87 |
78 void SmartLineEdit::removeNickname(const QString & name) |
88 void SmartLineEdit::removeNickname(const QString & name) |
79 { |
89 { |
80 m_keywordMutex.lock(); |
90 m_keywordMutex.lock(); |
81 |
91 |
|
92 m_sorted_nicks->remove(name.toLower()); |
82 m_nicks->removeAll(name); |
93 m_nicks->removeAll(name); |
83 |
94 |
84 m_keywordMutex.unlock(); |
95 m_keywordMutex.unlock(); |
85 } |
96 } |
86 |
97 |
89 { |
100 { |
90 // forget keywords |
101 // forget keywords |
91 m_keywordMutex.lock(); |
102 m_keywordMutex.lock(); |
92 |
103 |
93 m_cmds->clear(); |
104 m_cmds->clear(); |
|
105 m_sorted_nicks->clear(); |
94 m_nicks->clear(); |
106 m_nicks->clear(); |
95 resetAutoCompletionStatus(); |
107 resetAutoCompletionStatus(); |
96 |
108 |
97 m_keywordMutex.unlock(); |
109 m_keywordMutex.unlock(); |
98 |
110 |
161 } |
173 } |
162 else |
174 else |
163 { |
175 { |
164 m_keywordMutex.lock(); |
176 m_keywordMutex.lock(); |
165 m_cmds->sort(); |
177 m_cmds->sort(); |
166 m_nicks->sort(); |
178 m_nicks = new QStringList(m_sorted_nicks->values()); |
167 m_keywordMutex.unlock(); |
179 m_keywordMutex.unlock(); |
168 |
180 |
169 int cp = cursorPosition(); |
181 int cp = cursorPosition(); |
170 |
182 |
171 // cursor is not in or at end/beginning of word |
183 // cursor is not in or at end/beginning of word |