repo: Cache folder sizes and update them after a sync. Closes #535

This commit is contained in:
Hylke Bons 2012-01-18 23:21:09 +00:00
parent 3fa8917607
commit 1bf440872e
4 changed files with 44 additions and 15 deletions

View file

@ -71,22 +71,48 @@ namespace SparkleLib {
public override double Size {
get {
return CalculateSize (
new DirectoryInfo (LocalPath)
);
string file_path = Path.Combine (LocalPath, ".git", "repo_size");
try {
return double.Parse (File.ReadAllText (file_path));
} catch {
return 0;
}
}
}
public override double HistorySize {
get {
return CalculateSize (
new DirectoryInfo (Path.Combine (LocalPath, ".git"))
);
string file_path = Path.Combine (LocalPath, ".git", "repo_history_size");
try {
return double.Parse (File.ReadAllText (file_path));
} catch {
return 0;
}
}
}
private void CalculateSizes ()
{
double size = CalculateSize (
new DirectoryInfo (LocalPath));
double history_size = CalculateSize (
new DirectoryInfo (Path.Combine (LocalPath, ".git")));
string size_file_path = Path.Combine (LocalPath, ".git", "repo_size");
string history_size_file_path = Path.Combine (LocalPath, ".git", "repo_history_size");
File.WriteAllText (size_file_path, size.ToString ());
File.WriteAllText (history_size_file_path, history_size.ToString ());
}
public override string [] UnsyncedFilePaths {
get {
List<string> file_paths = new List<string> ();
@ -221,6 +247,7 @@ namespace SparkleLib {
git.WaitForExit ();
CalculateSizes ();
if (git.ExitCode == 0)
return true;
@ -277,6 +304,7 @@ namespace SparkleLib {
git.WaitForExit ();
CalculateSizes ();
if (git.ExitCode == 0) {
Rebase ();

View file

@ -84,7 +84,7 @@ namespace SparkleShare {
if (Controller.Folders.Length == 0)
StateText = _("Welcome to SparkleShare!");
else
StateText = _("Up to date") + " — " + Controller.FolderSize;
StateText = _("Up to date") + Controller.FolderSize;
CreateMenu ();
@ -102,7 +102,7 @@ namespace SparkleShare {
if (Controller.Folders.Length == 0)
StateText = _("Welcome to SparkleShare!");
else
StateText = _("Up to date") + " — " + Controller.FolderSize;
StateText = _("Up to date") + Controller.FolderSize;
StateMenuItem.Title = StateText;
CreateMenu ();

View file

@ -74,7 +74,7 @@ namespace SparkleShare {
if (Controller.Folders.Length == 0)
StateText = _("Welcome to SparkleShare!");
else
StateText = _("Up to date") + " — " + Controller.FolderSize;
StateText = _("Up to date") + Controller.FolderSize;
CreateMenu ();
@ -88,7 +88,7 @@ namespace SparkleShare {
if (Controller.Folders.Length == 0)
StateText = _("Welcome to SparkleShare!");
else
StateText = _("Up to date") + " — " + Controller.FolderSize;
StateText = _("Up to date") + Controller.FolderSize;
#if HAVE_APP_INDICATOR
this.indicator.IconName = "process-syncing-sparkleshare-i";

View file

@ -50,19 +50,20 @@ namespace SparkleShare {
get {
double size = 0;
foreach (SparkleRepoBase repo in
Program.Controller.Repositories.GetRange (0,
Program.Controller.Repositories.Count)) {
Program.Controller.Repositories.GetRange (
0, Program.Controller.Repositories.Count)) {
size += repo.Size + repo.HistorySize;
}
return Program.Controller.FormatSize (size);
if (size == 0)
return "";
else
return " — " + Program.Controller.FormatSize (size);
}
}
public int ProgressPercentage {
get {
return (int) Program.Controller.ProgressPercentage;