[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdegames/kpat
From:       Parker Coates <parker.coates () kdemail ! net>
Date:       2012-02-15 4:45:45
Message-ID: 20120215044545.BEBCFAC895 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1280181 by coates:

Fix loading files via KIO.

I'm not sure how long this has been broken, but loading remote files now
works correctly.

 M  +13 -15    mainwindow.cpp  


--- trunk/KDE/kdegames/kpat/mainwindow.cpp #1280180:1280181
@@ -64,7 +64,6 @@
 #include <KFileDialog>
 #include <KGlobal>
 #include <KIcon>
-#include <KInputDialog>
 #include <KLocale>
 #include <KMessageBox>
 #include <KRandom>
@@ -82,7 +81,6 @@
 #include <QtCore/QTimer>
 #include <QtCore/QXmlStreamReader>
 #include <QtGui/QDesktopWidget>
-#include <QtGui/QStackedWidget>
 
 
 namespace
@@ -809,28 +807,18 @@
 
 bool MainWindow::loadGame( const KUrl & url, bool addToRecentFiles )
 {
-    // Some trickery to be able to use the same code to handle local and remote files.
-    KTemporaryFile tempFile;
-    QFile localFile;
-    if ( url.isLocalFile() )
-    {
-        localFile.setFileName( url.toLocalFile() );
-    }
-    else
-    {
-        tempFile.open();
-        QString fileName = tempFile.fileName();
+    QString fileName;
         if( !KIO::NetAccess::download( url, fileName, this ) )
         {
             KMessageBox::error( this, i18n("Downloading file failed.") );
             return false;
         }
-    }
-    QFile & file = url.isLocalFile() ? localFile : tempFile;
+    QFile file( fileName );
     
     if ( !file.open( QIODevice::ReadOnly ) )
     {
         KMessageBox::error( this, i18n("Opening file failed.") );
+        KIO::NetAccess::removeTempFile( fileName );
         return false;
     }
 
@@ -838,6 +826,7 @@
     if ( !xml.readNextStartElement() )
     {
         KMessageBox::error( this, i18n("Error reading XML file: ") + xml.errorString() );
+        KIO::NetAccess::removeTempFile( fileName );
         return false;
     }
 
@@ -868,19 +857,24 @@
     else
     {
         KMessageBox::error( this, i18n("XML file is not a KPat save.") );
+        KIO::NetAccess::removeTempFile( fileName );
         return false;
     }
 
     if ( !m_dealer_map.contains( gameId ) )
     {
         KMessageBox::error( this, i18n("Unrecognized game id.") );
+        KIO::NetAccess::removeTempFile( fileName );
         return false;
     }
 
     // Only bother the user to ask for permission after we've determined the
     // save game file is at least somewhat valid.
     if ( m_dealer && !m_dealer->allowedToStartNewGame() )
+    {
+        KIO::NetAccess::removeTempFile( fileName );
         return false;
+    }
 
     setGameType( gameId );
     
@@ -889,6 +883,10 @@
 
     bool success = isLegacyFile ? m_dealer->loadLegacyFile( &file )
                                 : m_dealer->loadFile( &file );
+
+    file.close();
+    KIO::NetAccess::removeTempFile( fileName );
+
     if ( !success )
     {
         KMessageBox::error( this, i18n("Errors encountered while parsing file.") );
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic