Pārlūkot izejas kodu

Factoring out SelectSessionsToImportIfAny

Source commit: a04520a0b47112deee2362867f2a34c0caad975c
Martin Prikryl 1 gadu atpakaļ
vecāks
revīzija
fecf889f0c

+ 18 - 16
source/core/Configuration.cpp

@@ -1677,6 +1677,20 @@ static TStoredSessionList * CreateSessionsForImport(TStoredSessionList * Session
   return Result.release();
 }
 //---------------------------------------------------------------------
+void TConfiguration::SelectSessionsToImportIfAny(
+  TStoredSessionList * ImportSessionList, TStoredSessionList * Sessions,
+  UnicodeString & Error, const UnicodeString & NoSessionsError)
+{
+  if (ImportSessionList->Count > 0)
+  {
+    ImportSessionList->SelectSessionsToImport(Sessions, true);
+  }
+  else
+  {
+    Error = NoSessionsError;
+  }
+}
+//---------------------------------------------------------------------
 TStoredSessionList * __fastcall TConfiguration::SelectFilezillaSessionsForImport(
   TStoredSessionList * Sessions, UnicodeString & Error)
 {
@@ -1690,14 +1704,8 @@ TStoredSessionList * __fastcall TConfiguration::SelectFilezillaSessionsForImport
   {
     ImportSessionList->ImportFromFilezilla(FilezillaSiteManagerFile, FilezillaConfigurationFile);
 
-    if (ImportSessionList->Count > 0)
-    {
-      ImportSessionList->SelectSessionsToImport(Sessions, true);
-    }
-    else
-    {
-      Error = FMTLOAD(FILEZILLA_NO_SITES, (FilezillaSiteManagerFile));
-    }
+    UnicodeString NoSessionsError = FMTLOAD(FILEZILLA_NO_SITES, (FilezillaSiteManagerFile));
+    SelectSessionsToImportIfAny(ImportSessionList.get(), Sessions, Error, NoSessionsError);
   }
   else
   {
@@ -1822,14 +1830,8 @@ TStoredSessionList * TConfiguration::SelectOpensshSessionsForImport(
 
       ImportSessionList->ImportFromOpenssh(Lines.get());
 
-      if (ImportSessionList->Count > 0)
-      {
-        ImportSessionList->SelectSessionsToImport(Sessions, true);
-      }
-      else
-      {
-        throw Exception(LoadStr(OPENSSH_CONFIG_NO_SITES));
-      }
+      UnicodeString NoSessionsError = FORMAT(L"%s\n(%s)", (LoadStr(OPENSSH_CONFIG_NO_SITES), ConfigFile));
+      SelectSessionsToImportIfAny(ImportSessionList.get(), Sessions, Error, NoSessionsError);
     }
     else
     {

+ 3 - 0
source/core/Configuration.h

@@ -234,6 +234,9 @@ protected:
   THierarchicalStorage * OpenDirectoryStatisticsCache(bool CanCreate);
   UnicodeString __fastcall GetDirectoryStatisticsCacheKey(
     const UnicodeString & SessionKey, const UnicodeString & Path, const TCopyParamType & CopyParam);
+  void SelectSessionsToImportIfAny(
+    TStoredSessionList * ImportSessionList, TStoredSessionList * Sessions,
+    UnicodeString & Error, const UnicodeString & NoSessionsError);
 
   virtual bool __fastcall GetConfirmOverwriting();
   virtual void __fastcall SetConfirmOverwriting(bool value);

+ 2 - 8
source/windows/GUIConfiguration.cpp

@@ -1385,14 +1385,8 @@ TStoredSessionList * __fastcall TGUIConfiguration::SelectPuttySessionsForImport(
   {
     ImportSessionList->Remove(PuttySessionData);
   }
-  if (ImportSessionList->Count > 0)
-  {
-    ImportSessionList->SelectSessionsToImport(Sessions, true);
-  }
-  else
-  {
-    Error = FMTLOAD(PUTTY_NO_SITES2, (Source, SessionsKey));
-  }
+  UnicodeString NoSessionsError = FMTLOAD(PUTTY_NO_SITES2, (Source, SessionsKey));
+  SelectSessionsToImportIfAny(ImportSessionList.get(), Sessions, Error, NoSessionsError);
 
   return ImportSessionList.release();
 }