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

List:       kde-commits
Subject:    [kraft] src: SetupAssistant fixes: Button status set, select proper database.
From:       Klaas Freitag <freitag () kde ! org>
Date:       2015-05-31 19:18:34
Message-ID: E1Yz8kk-0002GM-II () scm ! kde ! org
[Download RAW message or body]

Git commit 9ada4da81b00e91cf116f7565987a35826f1c6b9 by Klaas Freitag.
Committed on 31/05/2015 at 19:16.
Pushed by freitag into branch 'master'.

SetupAssistant fixes: Button status set, select proper database.

A friendly contribution by Andreas Wuest, thanks!

M  +25   -12   src/setupassistant.cpp
M  +1    -0    src/setupassistant.h

http://commits.kde.org/kraft/9ada4da81b00e91cf116f7565987a35826f1c6b9

diff --git a/src/setupassistant.cpp b/src/setupassistant.cpp
index 95968b6..909630d 100644
--- a/src/setupassistant.cpp
+++ b/src/setupassistant.cpp
@@ -66,13 +66,23 @@ DbSelectPage::DbSelectPage(QWidget *parent)
 
 QString DbSelectPage::selectedDriver()
 {
-  QString re = "QSQLITE";
+  QString re("QSQLITE");
   if( ui.mRbMySQL->isChecked() ) {
-    re = "QMYSQL";
+    re = QLatin1String("QMYSQL");
   }
   return re;
 }
 
+void DbSelectPage::selectDriver(const QString& selectedDriver)
+{
+  if ( QLatin1String("QMYSQL") == selectedDriver ) {
+    ui.mRbMySQL->setChecked( true );
+  } else {
+    ui.mRbSqlite3->setChecked( true );
+  }
+}
+
+
 // ---------------------------------------------------------------------------
 
 SqLiteDetailsPage::SqLiteDetailsPage(QWidget *parent)
@@ -411,6 +421,9 @@ void SetupAssistant::back()
 void SetupAssistant::slotCurrentPageChanged( KPageWidgetItem *current, KPageWidgetItem* /* previous */)
 {
   if( current == mCreateDbPageItem ) {
+      // disable next button by default, and enable it only when actions were successful
+      enableButton( KDialog::User2, false );
+
       if( mSqlBackendDriver == QLatin1String("QMYSQL") ) {
       if(!KraftDB::self()->dbConnect( QLatin1String("QMYSQL"),
                                       mMysqlDetailsPage->dbName(),
@@ -422,17 +435,21 @@ void SetupAssistant::slotCurrentPageChanged( KPageWidgetItem *current, KPageWidg
       }
     } else {
       if( !KraftDB::self()->dbConnect( QLatin1String("QSQLITE"), mSqLiteDetailsPage->url().pathOrUrl() ) ) {
-        mCreateDbPage->setStatusText( i18n("<p>Can't open your database file, check the permissions and such."));
+        mCreateDbPage->setStatusText( i18n("<p>Can't open your database file, check the permissions and such.</p>"));
+        return;
       }
     }
 
     if( !KraftDB::self()->databaseExists() ) {
       kDebug() << "Start to create the database";
+      // reset the status text if we are connected to the db and db does not yet exist!
+      mCreateDbPage->setStatusText( QString() );
       startDatabaseCreation();
     } else {
       kDebug() << "CreateDB-Page: Database already existing";
       mCreateDbPage->setStatusText( i18n( "<p>The database is already existing, no action needs to be taken here.</p>"
                                           "<p>Please hit <b>next</b> to proceed.</p>" ) );
+      enableButton( KDialog::User2, true );
     }
   }
 
@@ -568,11 +585,6 @@ void SetupAssistant::startDatabaseUpdate()
 
 void SetupAssistant::startDatabaseCreation()
 {
-  if( ! KraftDB::self()->isOk() ) {
-    mCreateDbPage->setStatusText( i18n("The Database can not be connected. Please check the database credentials!"));
-    enableButton( KDialog::User2, false );
-    return;
-  }
   enableButton( KDialog::User2, true );
 
   mCreateDbPage->setStatusText( i18n("Parse Create Commands...") );
@@ -619,9 +631,9 @@ void SetupAssistant::startDatabaseCreation()
 
   if( res ) {
     mCreateDbPage->setStatusText( i18n( "Successfully finished commands." ) );
+    enableButton( KDialog::User2, true );
   } else {
     mCreateDbPage->setStatusText( i18n( "Failed to perform all commands." ) );
-    // FIXME: Disable next button
   }
   disconnect( KraftDB::self(), SIGNAL(statusMessage( const QString&)),0 ,0 );
   disconnect( KraftDB::self(), SIGNAL(processedSqlCommand(bool)),0 ,0 );
@@ -724,13 +736,14 @@ bool SetupAssistant::init( Mode mode )
         if( KraftDB::self()->currentSchemaVersion() != KraftDB::self()->requiredSchemaVersion() ) {
           kDebug() << "Need a database schema update.";
           startDialog = true;
+          mDbSelectPage->selectDriver(DatabaseSettings::self()->dbDriver());
         } else {
           kDebug() << "Database Schema is OK. Nothing to do for StartupAssistant";
         }
       } else {
         kDebug() << "The database is not existing. It needs to be recreated.";
         startDialog = true;
-
+        mDbSelectPage->selectDriver(DatabaseSettings::self()->dbDriver());
         text = i18n( "<p>The database can be opened, but does not contain valid content.</p>"
                      "<p>A new database can be created automatically from scratch.</p>");
       }
@@ -738,13 +751,13 @@ bool SetupAssistant::init( Mode mode )
       // unable to connect to the database at all
       startDialog = true;
       hitNextClosing = false;
-      text = i18n( "<p>Kraft could not connect to the configured database.<p>" );
+      text = i18n( "<p>Kraft could not connect to the configured database.</p>" );
       if( KraftDB::self()->qtDriver().toUpper() == "QMYSQL" ) {
           text += i18n( "<p>Please check the database server setup and restart Kraft to connect." );
       } else {
           text += i18n("<p>Please check the database file.");
       }
-      text += " " + i18n( "or create a new database by hitting <b>next</b>.</p>" );
+      text += " " + i18n( "Or create a new database by hitting <b>next</b>.</p>" );
     }
   }
 
diff --git a/src/setupassistant.h b/src/setupassistant.h
index 5e431c6..9c5240c 100644
--- a/src/setupassistant.h
+++ b/src/setupassistant.h
@@ -61,6 +61,7 @@ class DbSelectPage:public QWidget
   public:
   DbSelectPage( QWidget *parent = 0 );
   QString selectedDriver();
+  void selectDriver( const QString& );
 
   private:
   Ui::dbSelectForm ui;
[prev in list] [next in list] [prev in thread] [next in thread] 

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