Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/UICloudNetworkingStuff.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/UICloudNetworkingStuff.cpp	(revision 89968)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/UICloudNetworkingStuff.cpp	(revision 89972)
@@ -399,4 +399,102 @@
         return true;
     }
+    return false;
+}
+
+bool UICloudNetworkingStuff::listCloudImages(const CCloudClient &comCloudClient,
+                                             CStringArray &comNames,
+                                             CStringArray &comIDs,
+                                             QWidget *pParent /* = 0 */)
+{
+    /* Currently we are interested in Available images only: */
+    const QVector<KCloudImageState> cloudImageStates  = QVector<KCloudImageState>()
+                                                     << KCloudImageState_Available;
+    /* Execute ListImages async method: */
+    CProgress comProgress = comCloudClient.ListImages(cloudImageStates, comNames, comIDs);
+    if (!comCloudClient.isOk())
+        msgCenter().cannotAcquireCloudClientParameter(comCloudClient, pParent);
+    else
+    {
+        /* Show "Acquire cloud images" progress: */
+        msgCenter().showModalProgressDialog(comProgress,
+                                            QString(),
+                                            ":/progress_reading_appliance_90px.png", pParent, 0);
+        if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
+            msgCenter().cannotAcquireCloudClientParameter(comProgress, pParent);
+        else
+            return true;
+    }
+    /* Return false by default: */
+    return false;
+}
+
+bool UICloudNetworkingStuff::listCloudImages(const CCloudClient &comCloudClient,
+                                             CStringArray &comNames,
+                                             CStringArray &comIDs,
+                                             QString &strErrorMessage)
+{
+    /* Currently we are interested in Available images only: */
+    const QVector<KCloudImageState> cloudImageStates  = QVector<KCloudImageState>()
+                                                     << KCloudImageState_Available;
+    /* Execute ListImages async method: */
+    CProgress comProgress = comCloudClient.ListImages(cloudImageStates, comNames, comIDs);
+    if (!comCloudClient.isOk())
+        strErrorMessage = UIErrorString::formatErrorInfo(comCloudClient);
+    else
+    {
+        /* Wait for "Acquire cloud images" progress: */
+        comProgress.WaitForCompletion(-1);
+        if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
+            strErrorMessage = UIErrorString::formatErrorInfo(comProgress);
+        else
+            return true;
+    }
+    /* Return false by default: */
+    return false;
+}
+
+bool UICloudNetworkingStuff::listCloudSourceBootVolumes(const CCloudClient &comCloudClient,
+                                                        CStringArray &comNames,
+                                                        CStringArray &comIDs,
+                                                        QWidget *pParent /* = 0 */)
+{
+    /* Execute ListSourceBootVolumes async method: */
+    CProgress comProgress = comCloudClient.ListSourceBootVolumes(comNames, comIDs);
+    if (!comCloudClient.isOk())
+        msgCenter().cannotAcquireCloudClientParameter(comCloudClient, pParent);
+    else
+    {
+        /* Show "Acquire cloud source boot volumes" progress: */
+        msgCenter().showModalProgressDialog(comProgress,
+                                            QString(),
+                                            ":/progress_reading_appliance_90px.png", pParent, 0);
+        if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
+            msgCenter().cannotAcquireCloudClientParameter(comProgress, pParent);
+        else
+            return true;
+    }
+    /* Return false by default: */
+    return false;
+}
+
+bool UICloudNetworkingStuff::listCloudSourceBootVolumes(const CCloudClient &comCloudClient,
+                                                        CStringArray &comNames,
+                                                        CStringArray &comIDs,
+                                                        QString &strErrorMessage)
+{
+    /* Execute ListSourceBootVolumes async method: */
+    CProgress comProgress = comCloudClient.ListSourceBootVolumes(comNames, comIDs);
+    if (!comCloudClient.isOk())
+        strErrorMessage = UIErrorString::formatErrorInfo(comCloudClient);
+    else
+    {
+        /* Wait for "Acquire cloud source boot volumes" progress: */
+        comProgress.WaitForCompletion(-1);
+        if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
+            strErrorMessage = UIErrorString::formatErrorInfo(comProgress);
+        else
+            return true;
+    }
+    /* Return false by default: */
     return false;
 }
Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/UICloudNetworkingStuff.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/UICloudNetworkingStuff.h	(revision 89968)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/UICloudNetworkingStuff.h	(revision 89972)
@@ -126,4 +126,25 @@
                                                      QVector<QString> &values,
                                                      QWidget *pParent = 0);
+
+    /** Acquires cloud images of certain @a comCloudClient, using @a pParent to show messages according to. */
+    SHARED_LIBRARY_STUFF bool listCloudImages(const CCloudClient &comCloudClient,
+                                              CStringArray &comNames,
+                                              CStringArray &comIDs,
+                                              QWidget *pParent = 0);
+    /** Acquires cloud images of certain @a comCloudClient, using @a strErrorMessage to store messages to. */
+    SHARED_LIBRARY_STUFF bool listCloudImages(const CCloudClient &comCloudClient,
+                                              CStringArray &comNames,
+                                              CStringArray &comIDs,
+                                              QString &strErrorMessage);
+    /** Acquires cloud source boot volumes of certain @a comCloudClient, using @a pParent to show messages according to. */
+    SHARED_LIBRARY_STUFF bool listCloudSourceBootVolumes(const CCloudClient &comCloudClient,
+                                                         CStringArray &comNames,
+                                                         CStringArray &comIDs,
+                                                         QWidget *pParent = 0);
+    /** Acquires cloud source boot volumes of certain @a comCloudClient, using @a strErrorMessage to store messages to. */
+    SHARED_LIBRARY_STUFF bool listCloudSourceBootVolumes(const CCloudClient &comCloudClient,
+                                                         CStringArray &comNames,
+                                                         CStringArray &comIDs,
+                                                         QString &strErrorMessage);
 
     /** Acquires cloud machines of certain @a comCloudClient, using @a pParent to show messages according to. */
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.cpp	(revision 89968)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.cpp	(revision 89972)
@@ -29,4 +29,5 @@
 #include "QIRichTextLabel.h"
 #include "QIToolButton.h"
+#include "UICloudNetworkingStuff.h"
 #include "UIIconPool.h"
 #include "UIMessageCenter.h"
@@ -232,55 +233,28 @@
             CStringArray comNames;
             CStringArray comIDs;
-            CProgress comProgress;
+            bool fResult = false;
             switch (m_pSourceTabBar->currentIndex())
             {
-                case 0:
+                /* Ask for cloud images, currently we are interested in Available images only: */
+                case 0: fResult = listCloudImages(comCloudClient, comNames, comIDs, wizardImp()); break;
+                /* Ask for cloud boot-volumes, currently we are interested in Source boot-volumes only: */
+                case 1: fResult = listCloudSourceBootVolumes(comCloudClient, comNames, comIDs, wizardImp()); break;
+                default: break;
+            }
+
+            /* Push acquired names to list rows: */
+            if (fResult)
+            {
+                const QVector<QString> names = comNames.GetValues();
+                const QVector<QString> ids = comIDs.GetValues();
+                for (int i = 0; i < names.size(); ++i)
                 {
-                    /* Ask for cloud images, currently we are interested in Available images only: */
-                    const QVector<KCloudImageState> cloudImageStates  = QVector<KCloudImageState>()
-                                                                     << KCloudImageState_Available;
-                    comProgress = comCloudClient.ListImages(cloudImageStates, comNames, comIDs);
-                    break;
-                }
-                case 1:
-                {
-                    /* Ask for cloud boot-volumes, currently we are interested in Source boot-volumes only: */
-                    comProgress = comCloudClient.ListSourceBootVolumes(comNames, comIDs);
-                    break;
-                }
-                default:
-                    break;
-            }
-            if (!comCloudClient.isOk())
-            {
-                msgCenter().cannotAcquireCloudClientParameter(comCloudClient);
-                break;
-            }
-
-            /* Show "Acquire cloud images" progress: */
-            msgCenter().showModalProgressDialog(comProgress, QString(),
-                                                ":/progress_reading_appliance_90px.png", 0, 0);
-            if (comProgress.GetCanceled())
-            {
-                wizardImp()->reject();
-                break;
-            }
-            if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
-            {
-                msgCenter().cannotAcquireCloudClientParameter(comProgress);
-                break;
-            }
-
-            /* Push acquired names to list rows: */
-            const QVector<QString> names = comNames.GetValues();
-            const QVector<QString> ids = comIDs.GetValues();
-            for (int i = 0; i < names.size(); ++i)
-            {
-                /* Create list item: */
-                QListWidgetItem *pItem = new QListWidgetItem(names.at(i), m_pSourceImageList);
-                if (pItem)
-                {
-                    pItem->setFlags(pItem->flags() & ~Qt::ItemIsEditable);
-                    pItem->setData(Qt::UserRole, ids.at(i));
+                    /* Create list item: */
+                    QListWidgetItem *pItem = new QListWidgetItem(names.at(i), m_pSourceImageList);
+                    if (pItem)
+                    {
+                        pItem->setFlags(pItem->flags() & ~Qt::ItemIsEditable);
+                        pItem->setData(Qt::UserRole, ids.at(i));
+                    }
                 }
             }
