@@ -20,6 +20,7 @@ private set
2020 }
2121
2222 public DirectoryNode RootDirectory { get ; }
23+ private int itemsProcessed = 0 ;
2324
2425 private int _fileCount ;
2526 /// <summary>
@@ -142,19 +143,25 @@ public void GoToRoot()
142143 /// </summary>
143144 public void AddItemsToArchive ( DirectoryNode directory , ZipArchive archive , IProgress < float > progress )
144145 {
145- int itemsDone = 0 ;
146- foreach ( var item in directory . Children )
146+ itemsProcessed = 0 ;
147+ _AddItemsToArchive ( directory , archive , progress ) ;
148+ }
149+
150+ private void _AddItemsToArchive ( DirectoryNode directory , ZipArchive archive , IProgress < float > progress )
151+ {
152+ foreach ( var item in directory . Children )
147153 {
148154 if ( item == null ) continue ;
149- else if ( item is DirectoryNode )
155+ else if ( item is DirectoryNode )
150156 {
151- AddItemsToArchive ( ( DirectoryNode ) item , archive , progress ) ;
152- } else
157+ _AddItemsToArchive ( ( DirectoryNode ) item , archive , progress ) ;
158+ }
159+ else
153160 {
154161 var fileItem = ( FileNode ) item ;
155162 archive . CreateEntryFromFile ( fileItem . RealPath , fileItem . GetVirtualPath ( ) ) ;
156- itemsDone += 1 ;
157- progress . Report ( ( float ) itemsDone * 100.0f / FileCount ) ;
163+ itemsProcessed += 1 ;
164+ progress . Report ( ( float ) itemsProcessed * 100.0f / FileCount ) ;
158165 }
159166 }
160167 }
@@ -165,10 +172,6 @@ public void AddItemsToArchive(DirectoryNode directory, ZipArchive archive, IProg
165172 /// <returns>Whether the root directory is empty or not.</returns>
166173 public bool IsEmpty ( )
167174 {
168- var cd = CurrentDirectory ;
169- GoToRoot ( ) ;
170- var c = CurrentDirectory . Children . Count ;
171- GoTo ( cd ) ;
172- return c == 0 ;
175+ return RootDirectory . Children . Count == 0 ;
173176 }
174177}
0 commit comments