summaryrefslogtreecommitdiff
authordrw <drw>2003-05-17 15:34:26 (UTC)
committer drw <drw>2003-05-17 15:34:26 (UTC)
commit325096fb28d129429b17a781c4c1e8d6ca9aa585 (patch) (unidiff)
tree1e241dcf42a2eb1caf146282c3a20e9716ebc1e2
parentc48833d1d58c3d691c39df5326c6daff811a6d07 (diff)
downloadopie-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
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/ipkg.cpp11
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
274int Ipkg :: executeIpkgCommand( QStringList &cmd, const QString /*option*/ ) 285int 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;