author | drw <drw> | 2003-05-17 15:34:26 (UTC) |
---|---|---|
committer | drw <drw> | 2003-05-17 15:34:26 (UTC) |
commit | 325096fb28d129429b17a781c4c1e8d6ca9aa585 (patch) (unidiff) | |
tree | 1e241dcf42a2eb1caf146282c3a20e9716ebc1e2 | |
parent | c48833d1d58c3d691c39df5326c6daff811a6d07 (diff) | |
download | opie-325096fb28d129429b17a781c4c1e8d6ca9aa585.zip opie-325096fb28d129429b17a781c4c1e8d6ca9aa585.tar.gz opie-325096fb28d129429b17a781c4c1e8d6ca9aa585.tar.bz2 |
Fix for bug #913 - added periodic qApp->processEvents() while updating ipkg status file to improve UI responsiveness
-rw-r--r-- | noncore/settings/aqpkg/ipkg.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/noncore/settings/aqpkg/ipkg.cpp b/noncore/settings/aqpkg/ipkg.cpp index 08ae386..3df569b 100644 --- a/noncore/settings/aqpkg/ipkg.cpp +++ b/noncore/settings/aqpkg/ipkg.cpp | |||
@@ -214,66 +214,77 @@ void Ipkg :: removeStatusEntry() | |||
214 | } | 214 | } |
215 | 215 | ||
216 | if ( !out.is_open() ) | 216 | if ( !out.is_open() ) |
217 | { | 217 | { |
218 | tempstr = "Couldn't create tempory status file - "; | 218 | tempstr = "Couldn't create tempory status file - "; |
219 | tempstr.append( outStatusFile ); | 219 | tempstr.append( outStatusFile ); |
220 | emit outputText( tempstr ); | 220 | emit outputText( tempstr ); |
221 | return; | 221 | return; |
222 | } | 222 | } |
223 | 223 | ||
224 | char line[1001]; | 224 | char line[1001]; |
225 | char k[21]; | 225 | char k[21]; |
226 | char v[1001]; | 226 | char v[1001]; |
227 | QString key; | 227 | QString key; |
228 | QString value; | 228 | QString value; |
229 | vector<QString> lines; | 229 | vector<QString> lines; |
230 | int i = 0; | ||
230 | do | 231 | do |
231 | { | 232 | { |
232 | in.getline( line, 1000 ); | 233 | in.getline( line, 1000 ); |
233 | if ( in.eof() ) | 234 | if ( in.eof() ) |
234 | continue; | 235 | continue; |
235 | 236 | ||
236 | k[0] = '\0'; | 237 | k[0] = '\0'; |
237 | v[0] = '\0'; | 238 | v[0] = '\0'; |
238 | 239 | ||
239 | sscanf( line, "%[^:]: %[^\n]", k, v ); | 240 | sscanf( line, "%[^:]: %[^\n]", k, v ); |
240 | key = k; | 241 | key = k; |
241 | value = v; | 242 | value = v; |
242 | key = key.stripWhiteSpace(); | 243 | key = key.stripWhiteSpace(); |
243 | value = value.stripWhiteSpace(); | 244 | value = value.stripWhiteSpace(); |
244 | if ( key == "Package" && value == package ) | 245 | if ( key == "Package" && value == package ) |
245 | { | 246 | { |
246 | // Ignore all lines up to next empty | 247 | // Ignore all lines up to next empty |
247 | do | 248 | do |
248 | { | 249 | { |
249 | in.getline( line, 1000 ); | 250 | in.getline( line, 1000 ); |
250 | if ( in.eof() || QString( line ).stripWhiteSpace() == "" ) | 251 | if ( in.eof() || QString( line ).stripWhiteSpace() == "" ) |
251 | continue; | 252 | continue; |
252 | } while ( !in.eof() && QString( line ).stripWhiteSpace() != "" ); | 253 | } while ( !in.eof() && QString( line ).stripWhiteSpace() != "" ); |
253 | } | 254 | } |
254 | 255 | ||
255 | lines.push_back( QString( line ) ); | 256 | lines.push_back( QString( line ) ); |
256 | out << line << endl; | 257 | out << line << endl; |
258 | |||
259 | // Improve UI responsiveness | ||
260 | i++; | ||
261 | if ( ( i % 50 ) == 0 ) | ||
262 | qApp->processEvents(); | ||
257 | } while ( !in.eof() ); | 263 | } while ( !in.eof() ); |
258 | 264 | ||
259 | // Write lines out | 265 | // Write lines out |
260 | vector<QString>::iterator it; | 266 | vector<QString>::iterator it; |
261 | for ( it = lines.begin() ; it != lines.end() ; ++it ) | 267 | for ( it = lines.begin() ; it != lines.end() ; ++it ) |
262 | { | 268 | { |
263 | out << (const char *)(*it) << endl; | 269 | out << (const char *)(*it) << endl; |
270 | |||
271 | // Improve UI responsiveness | ||
272 | i++; | ||
273 | if ( ( i % 50 ) == 0 ) | ||
274 | qApp->processEvents(); | ||
264 | } | 275 | } |
265 | 276 | ||
266 | in.close(); | 277 | in.close(); |
267 | out.close(); | 278 | out.close(); |
268 | 279 | ||
269 | // Remove old status file and put tmp stats file in its place | 280 | // Remove old status file and put tmp stats file in its place |
270 | remove( statusFile ); | 281 | remove( statusFile ); |
271 | rename( outStatusFile, statusFile ); | 282 | rename( outStatusFile, statusFile ); |
272 | } | 283 | } |
273 | 284 | ||
274 | int Ipkg :: executeIpkgCommand( QStringList &cmd, const QString /*option*/ ) | 285 | int Ipkg :: executeIpkgCommand( QStringList &cmd, const QString /*option*/ ) |
275 | { | 286 | { |
276 | // If one is already running - should never be but just to be safe | 287 | // If one is already running - should never be but just to be safe |
277 | if ( proc ) | 288 | if ( proc ) |
278 | { | 289 | { |
279 | delete proc; | 290 | delete proc; |