소스 검색

Moving TSynchronizeChecklist to RemoteFiles module (it's a good think overall and we will need to access its inner classes in Terminal.h)

Source commit: b4e958953ece9bc73e5aa2c06263bfbe0e803b1c
Martin Prikryl 7 년 전
부모
커밋
5aad5bc8ef
4개의 변경된 파일224개의 추가작업 그리고 224개의 파일을 삭제
  1. 153 0
      source/core/RemoteFiles.cpp
  2. 71 0
      source/core/RemoteFiles.h
  3. 0 153
      source/core/Terminal.cpp
  4. 0 71
      source/core/Terminal.h

+ 153 - 0
source/core/RemoteFiles.cpp

@@ -2689,3 +2689,156 @@ void __fastcall TRemoteProperties::Save(THierarchicalStorage * Storage) const
 
   // TODO
 }
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+TSynchronizeChecklist::TItem::TItem() :
+  Action(saNone), IsDirectory(false), RemoteFile(NULL), Checked(true), ImageIndex(-1), FDirectoryHasSize(false)
+{
+  Local.ModificationFmt = mfFull;
+  Local.Modification = 0;
+  Local.Size = 0;
+  Remote.ModificationFmt = mfFull;
+  Remote.Modification = 0;
+  Remote.Size = 0;
+}
+//---------------------------------------------------------------------------
+TSynchronizeChecklist::TItem::~TItem()
+{
+  delete RemoteFile;
+}
+//---------------------------------------------------------------------------
+const UnicodeString& TSynchronizeChecklist::TItem::GetFileName() const
+{
+  if (!Remote.FileName.IsEmpty())
+  {
+    return Remote.FileName;
+  }
+  else
+  {
+    DebugAssert(!Local.FileName.IsEmpty());
+    return Local.FileName;
+  }
+}
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+TSynchronizeChecklist::TSynchronizeChecklist() :
+  FList(new TList())
+{
+}
+//---------------------------------------------------------------------------
+TSynchronizeChecklist::~TSynchronizeChecklist()
+{
+  for (int Index = 0; Index < FList->Count; Index++)
+  {
+    delete static_cast<TItem *>(FList->Items[Index]);
+  }
+  delete FList;
+}
+//---------------------------------------------------------------------------
+void TSynchronizeChecklist::Add(TItem * Item)
+{
+  FList->Add(Item);
+}
+//---------------------------------------------------------------------------
+int __fastcall TSynchronizeChecklist::Compare(void * AItem1, void * AItem2)
+{
+  TItem * Item1 = static_cast<TItem *>(AItem1);
+  TItem * Item2 = static_cast<TItem *>(AItem2);
+
+  int Result;
+  if (!Item1->Local.Directory.IsEmpty())
+  {
+    Result = AnsiCompareText(Item1->Local.Directory, Item2->Local.Directory);
+  }
+  else
+  {
+    DebugAssert(!Item1->Remote.Directory.IsEmpty());
+    Result = AnsiCompareText(Item1->Remote.Directory, Item2->Remote.Directory);
+  }
+
+  if (Result == 0)
+  {
+    Result = AnsiCompareText(Item1->GetFileName(), Item2->GetFileName());
+  }
+
+  return Result;
+}
+//---------------------------------------------------------------------------
+void TSynchronizeChecklist::Sort()
+{
+  FList->Sort(Compare);
+}
+//---------------------------------------------------------------------------
+int TSynchronizeChecklist::GetCount() const
+{
+  return FList->Count;
+}
+//---------------------------------------------------------------------------
+const TSynchronizeChecklist::TItem * TSynchronizeChecklist::GetItem(int Index) const
+{
+  return static_cast<TItem *>(FList->Items[Index]);
+}
+//---------------------------------------------------------------------------
+void __fastcall TSynchronizeChecklist::Update(const TItem * Item, bool Check, TAction Action)
+{
+  // TSynchronizeChecklist owns non-const items so it can manipulate them freely,
+  // const_cast here is just an optimization
+  TItem * MutableItem = const_cast<TItem *>(Item);
+  DebugAssert(FList->IndexOf(MutableItem) >= 0);
+  MutableItem->Checked = Check;
+  MutableItem->Action = Action;
+}
+//---------------------------------------------------------------------------
+void __fastcall TSynchronizeChecklist::UpdateDirectorySize(const TItem * Item, __int64 Size)
+{
+  // See comment in Update
+  TItem * MutableItem = const_cast<TItem *>(Item);
+  DebugAssert(FList->IndexOf(MutableItem) >= 0);
+  if (DebugAlwaysTrue(Item->IsDirectory))
+  {
+    MutableItem->FDirectoryHasSize = true;
+
+    if (Item->IsRemoteOnly())
+    {
+      MutableItem->Remote.Size = Size;
+    }
+    else if (Item->IsLocalOnly())
+    {
+      MutableItem->Local.Size = Size;
+    }
+    else
+    {
+      // "update" actions are not relevant for directories
+      DebugFail();
+    }
+  }
+}
+//---------------------------------------------------------------------------
+TSynchronizeChecklist::TAction __fastcall TSynchronizeChecklist::Reverse(TSynchronizeChecklist::TAction Action)
+{
+  switch (Action)
+  {
+    case saUploadNew:
+      return saDeleteLocal;
+
+    case saDownloadNew:
+      return saDeleteRemote;
+
+    case saUploadUpdate:
+      return saDownloadUpdate;
+
+    case saDownloadUpdate:
+      return saUploadUpdate;
+
+    case saDeleteRemote:
+      return saDownloadNew;
+
+    case saDeleteLocal:
+      return saUploadNew;
+
+    default:
+    case saNone:
+      DebugFail();
+      return saNone;
+  }
+}

+ 71 - 0
source/core/RemoteFiles.h

@@ -439,6 +439,77 @@ public:
     const TRemoteProperties & OriginalProperties, TRemoteProperties NewProperties);
 };
 //---------------------------------------------------------------------------
+class TSynchronizeChecklist
+{
+friend class TTerminal;
+
+public:
+  enum TAction {
+    saNone, saUploadNew, saDownloadNew, saUploadUpdate, saDownloadUpdate, saDeleteRemote, saDeleteLocal };
+  static const int ActionCount = saDeleteLocal;
+
+  class TItem
+  {
+  friend class TTerminal;
+  friend class TSynchronizeChecklist;
+
+  public:
+    struct TFileInfo
+    {
+      UnicodeString FileName;
+      UnicodeString Directory;
+      TDateTime Modification;
+      TModificationFmt ModificationFmt;
+      __int64 Size;
+    };
+
+    TAction Action;
+    bool IsDirectory;
+    TFileInfo Local;
+    TFileInfo Remote;
+    int ImageIndex;
+    bool Checked;
+    TRemoteFile * RemoteFile;
+
+    const UnicodeString& GetFileName() const;
+    bool IsRemoteOnly() const { return (Action == saDownloadNew) || (Action == saDeleteRemote); }
+    bool IsLocalOnly() const { return (Action == saUploadNew) || (Action == saDeleteLocal); }
+    bool HasSize() const { return !IsDirectory || FDirectoryHasSize; }
+
+    ~TItem();
+
+  private:
+    FILETIME FLocalLastWriteTime;
+    bool FDirectoryHasSize;
+
+    TItem();
+  };
+
+  ~TSynchronizeChecklist();
+
+  void __fastcall Update(const TItem * Item, bool Check, TAction Action);
+  void __fastcall UpdateDirectorySize(const TItem * Item, __int64 Size);
+
+  static TAction __fastcall Reverse(TAction Action);
+
+  __property int Count = { read = GetCount };
+  __property const TItem * Item[int Index] = { read = GetItem };
+
+protected:
+  TSynchronizeChecklist();
+
+  void Sort();
+  void Add(TItem * Item);
+
+  int GetCount() const;
+  const TItem * GetItem(int Index) const;
+
+private:
+  TList * FList;
+
+  static int __fastcall Compare(void * Item1, void * Item2);
+};
+//---------------------------------------------------------------------------
 bool __fastcall IsUnixStyleWindowsPath(const UnicodeString & Path);
 bool __fastcall UnixIsAbsolutePath(const UnicodeString & Path);
 UnicodeString __fastcall UnixIncludeTrailingBackslash(const UnicodeString Path);

+ 0 - 153
source/core/Terminal.cpp

@@ -139,159 +139,6 @@ TOverwriteFileParams::TOverwriteFileParams()
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
-TSynchronizeChecklist::TItem::TItem() :
-  Action(saNone), IsDirectory(false), RemoteFile(NULL), Checked(true), ImageIndex(-1), FDirectoryHasSize(false)
-{
-  Local.ModificationFmt = mfFull;
-  Local.Modification = 0;
-  Local.Size = 0;
-  Remote.ModificationFmt = mfFull;
-  Remote.Modification = 0;
-  Remote.Size = 0;
-}
-//---------------------------------------------------------------------------
-TSynchronizeChecklist::TItem::~TItem()
-{
-  delete RemoteFile;
-}
-//---------------------------------------------------------------------------
-const UnicodeString& TSynchronizeChecklist::TItem::GetFileName() const
-{
-  if (!Remote.FileName.IsEmpty())
-  {
-    return Remote.FileName;
-  }
-  else
-  {
-    DebugAssert(!Local.FileName.IsEmpty());
-    return Local.FileName;
-  }
-}
-//---------------------------------------------------------------------------
-//---------------------------------------------------------------------------
-TSynchronizeChecklist::TSynchronizeChecklist() :
-  FList(new TList())
-{
-}
-//---------------------------------------------------------------------------
-TSynchronizeChecklist::~TSynchronizeChecklist()
-{
-  for (int Index = 0; Index < FList->Count; Index++)
-  {
-    delete static_cast<TItem *>(FList->Items[Index]);
-  }
-  delete FList;
-}
-//---------------------------------------------------------------------------
-void TSynchronizeChecklist::Add(TItem * Item)
-{
-  FList->Add(Item);
-}
-//---------------------------------------------------------------------------
-int __fastcall TSynchronizeChecklist::Compare(void * AItem1, void * AItem2)
-{
-  TItem * Item1 = static_cast<TItem *>(AItem1);
-  TItem * Item2 = static_cast<TItem *>(AItem2);
-
-  int Result;
-  if (!Item1->Local.Directory.IsEmpty())
-  {
-    Result = AnsiCompareText(Item1->Local.Directory, Item2->Local.Directory);
-  }
-  else
-  {
-    DebugAssert(!Item1->Remote.Directory.IsEmpty());
-    Result = AnsiCompareText(Item1->Remote.Directory, Item2->Remote.Directory);
-  }
-
-  if (Result == 0)
-  {
-    Result = AnsiCompareText(Item1->GetFileName(), Item2->GetFileName());
-  }
-
-  return Result;
-}
-//---------------------------------------------------------------------------
-void TSynchronizeChecklist::Sort()
-{
-  FList->Sort(Compare);
-}
-//---------------------------------------------------------------------------
-int TSynchronizeChecklist::GetCount() const
-{
-  return FList->Count;
-}
-//---------------------------------------------------------------------------
-const TSynchronizeChecklist::TItem * TSynchronizeChecklist::GetItem(int Index) const
-{
-  return static_cast<TItem *>(FList->Items[Index]);
-}
-//---------------------------------------------------------------------------
-void __fastcall TSynchronizeChecklist::Update(const TItem * Item, bool Check, TAction Action)
-{
-  // TSynchronizeChecklist owns non-const items so it can manipulate them freely,
-  // const_cast here is just an optimization
-  TItem * MutableItem = const_cast<TItem *>(Item);
-  DebugAssert(FList->IndexOf(MutableItem) >= 0);
-  MutableItem->Checked = Check;
-  MutableItem->Action = Action;
-}
-//---------------------------------------------------------------------------
-void __fastcall TSynchronizeChecklist::UpdateDirectorySize(const TItem * Item, __int64 Size)
-{
-  // See comment in Update
-  TItem * MutableItem = const_cast<TItem *>(Item);
-  DebugAssert(FList->IndexOf(MutableItem) >= 0);
-  if (DebugAlwaysTrue(Item->IsDirectory))
-  {
-    MutableItem->FDirectoryHasSize = true;
-
-    if (Item->IsRemoteOnly())
-    {
-      MutableItem->Remote.Size = Size;
-    }
-    else if (Item->IsLocalOnly())
-    {
-      MutableItem->Local.Size = Size;
-    }
-    else
-    {
-      // "update" actions are not relevant for directories
-      DebugFail();
-    }
-  }
-}
-//---------------------------------------------------------------------------
-TSynchronizeChecklist::TAction __fastcall TSynchronizeChecklist::Reverse(TSynchronizeChecklist::TAction Action)
-{
-  switch (Action)
-  {
-    case saUploadNew:
-      return saDeleteLocal;
-
-    case saDownloadNew:
-      return saDeleteRemote;
-
-    case saUploadUpdate:
-      return saDownloadUpdate;
-
-    case saDownloadUpdate:
-      return saUploadUpdate;
-
-    case saDeleteRemote:
-      return saDownloadNew;
-
-    case saDeleteLocal:
-      return saUploadNew;
-
-    default:
-    case saNone:
-      DebugFail();
-      return saNone;
-  }
-}
-//---------------------------------------------------------------------------
-//---------------------------------------------------------------------------
 class TTunnelThread : public TSimpleThread
 {
 public:

+ 0 - 71
source/core/Terminal.h

@@ -750,77 +750,6 @@ struct TSynchronizeOptions
   bool __fastcall MatchesFilter(const UnicodeString & FileName);
 };
 //---------------------------------------------------------------------------
-class TSynchronizeChecklist
-{
-friend class TTerminal;
-
-public:
-  enum TAction { saNone, saUploadNew, saDownloadNew, saUploadUpdate,
-    saDownloadUpdate, saDeleteRemote, saDeleteLocal };
-  static const int ActionCount = saDeleteLocal;
-
-  class TItem
-  {
-  friend class TTerminal;
-  friend class TSynchronizeChecklist;
-
-  public:
-    struct TFileInfo
-    {
-      UnicodeString FileName;
-      UnicodeString Directory;
-      TDateTime Modification;
-      TModificationFmt ModificationFmt;
-      __int64 Size;
-    };
-
-    TAction Action;
-    bool IsDirectory;
-    TFileInfo Local;
-    TFileInfo Remote;
-    int ImageIndex;
-    bool Checked;
-    TRemoteFile * RemoteFile;
-
-    const UnicodeString& GetFileName() const;
-    bool IsRemoteOnly() const { return (Action == saDownloadNew) || (Action == saDeleteRemote); }
-    bool IsLocalOnly() const { return (Action == saUploadNew) || (Action == saDeleteLocal); }
-    bool HasSize() const { return !IsDirectory || FDirectoryHasSize; }
-
-    ~TItem();
-
-  private:
-    FILETIME FLocalLastWriteTime;
-    bool FDirectoryHasSize;
-
-    TItem();
-  };
-
-  ~TSynchronizeChecklist();
-
-  void __fastcall Update(const TItem * Item, bool Check, TAction Action);
-  void __fastcall UpdateDirectorySize(const TItem * Item, __int64 Size);
-
-  static TAction __fastcall Reverse(TAction Action);
-
-  __property int Count = { read = GetCount };
-  __property const TItem * Item[int Index] = { read = GetItem };
-
-protected:
-  TSynchronizeChecklist();
-
-  void Sort();
-  void Add(TItem * Item);
-
-  int GetCount() const;
-  const TItem * GetItem(int Index) const;
-
-private:
-  TList * FList;
-
-  static int __fastcall Compare(void * Item1, void * Item2);
-};
-//---------------------------------------------------------------------------
 struct TSpaceAvailable
 {
   TSpaceAvailable();