remove buggy implementation of menu overflow. #1015
This commit is contained in:
parent
9f31fb3161
commit
4818a07315
|
@ -190,51 +190,10 @@ namespace SparkleShare {
|
|||
}
|
||||
|
||||
Menu submenu = new Menu ();
|
||||
|
||||
i = 0;
|
||||
foreach (string folder_name in Controller.OverflowFolders) {
|
||||
ImageMenuItem item = new SparkleMenuItem (folder_name);
|
||||
Gdk.Pixbuf folder_icon;
|
||||
|
||||
if (!string.IsNullOrEmpty (Controller.OverflowFolderErrors [i])) {
|
||||
folder_icon = IconTheme.Default.LoadIcon ("dialog-warning", 16,
|
||||
IconLookupFlags.GenericFallback);
|
||||
|
||||
item.Submenu = new Menu ();
|
||||
|
||||
MenuItem error_item = new MenuItem (Controller.OverflowFolderErrors [i]) {
|
||||
Sensitive = false
|
||||
};
|
||||
|
||||
(item.Submenu as Menu).Add (error_item);
|
||||
|
||||
} else {
|
||||
folder_icon = IconTheme.Default.LoadIcon ("folder", 16,
|
||||
IconLookupFlags.GenericFallback);
|
||||
}
|
||||
|
||||
item.Image = new Image (folder_icon);
|
||||
|
||||
item.Activated += OpenFolderDelegate (folder_name);
|
||||
submenu.Add (item);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
if (submenu.Children.Length > 0) {
|
||||
SparkleMenuItem more_item = new SparkleMenuItem ("More Projects") {
|
||||
Submenu = submenu
|
||||
};
|
||||
|
||||
this.menu.Add (new SeparatorMenuItem ());
|
||||
this.menu.Add (more_item);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.menu.Add (new SeparatorMenuItem ());
|
||||
|
||||
|
||||
this.recent_events_item = new MenuItem ("Recent Changes…");
|
||||
|
||||
this.recent_events_item.Sensitive = Controller.RecentEventsItemEnabled;
|
||||
|
|
|
@ -30,16 +30,13 @@ namespace SparkleShare {
|
|||
public SparkleStatusIconController Controller = new SparkleStatusIconController ();
|
||||
|
||||
private NSMenu menu;
|
||||
private NSMenu submenu;
|
||||
|
||||
private NSStatusItem status_item;
|
||||
private NSMenuItem state_item;
|
||||
private NSMenuItem folder_item;
|
||||
|
||||
private NSMenuItem [] folder_menu_items;
|
||||
private NSMenuItem [] submenu_items;
|
||||
|
||||
private NSMenuItem more_item;
|
||||
private NSMenuItem add_item;
|
||||
private NSMenuItem about_item;
|
||||
private NSMenuItem recent_events_item;
|
||||
|
@ -62,7 +59,6 @@ namespace SparkleShare {
|
|||
private NSImage sparkleshare_image;
|
||||
|
||||
private EventHandler [] folder_tasks;
|
||||
private EventHandler [] overflow_tasks;
|
||||
|
||||
|
||||
public SparkleStatusIcon () : base ()
|
||||
|
@ -231,11 +227,9 @@ namespace SparkleShare {
|
|||
this.menu.AddItem (this.folder_item);
|
||||
|
||||
this.folder_menu_items = new NSMenuItem [Controller.Folders.Length];
|
||||
this.submenu_items = new NSMenuItem [Controller.OverflowFolders.Length];
|
||||
|
||||
if (Controller.Folders.Length > 0) {
|
||||
this.folder_tasks = new EventHandler [Controller.Folders.Length];
|
||||
this.overflow_tasks = new EventHandler [Controller.OverflowFolders.Length];
|
||||
|
||||
int i = 0;
|
||||
foreach (string folder_name in Controller.Folders) {
|
||||
|
@ -264,55 +258,11 @@ namespace SparkleShare {
|
|||
|
||||
i++;
|
||||
};
|
||||
|
||||
i = 0;
|
||||
foreach (string folder_name in Controller.OverflowFolders) {
|
||||
NSMenuItem item = new NSMenuItem ();
|
||||
item.Title = folder_name;
|
||||
|
||||
if (!string.IsNullOrEmpty (Controller.OverflowFolderErrors [i])) {
|
||||
item.Image = this.caution_image;
|
||||
item.Submenu = new NSMenu ();
|
||||
|
||||
NSMenuItem error_item = new NSMenuItem () {
|
||||
Title = Controller.OverflowFolderErrors [i]
|
||||
};
|
||||
|
||||
item.Submenu.AddItem (error_item);
|
||||
|
||||
} else {
|
||||
item.Image = this.folder_image;
|
||||
}
|
||||
|
||||
item.Image.Size = new SizeF (16, 16);
|
||||
this.overflow_tasks [i] = OpenFolderDelegate (folder_name);
|
||||
|
||||
this.submenu_items [i] = item;
|
||||
this.submenu_items [i].Activated += this.overflow_tasks [i];
|
||||
|
||||
i++;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
foreach (NSMenuItem item in this.folder_menu_items)
|
||||
this.menu.AddItem (item);
|
||||
|
||||
if (this.submenu_items.Length > 0) {
|
||||
this.submenu = new NSMenu ();
|
||||
|
||||
foreach (NSMenuItem item in this.submenu_items)
|
||||
this.submenu.AddItem (item);
|
||||
|
||||
this.more_item = new NSMenuItem () {
|
||||
Title = "More Projects",
|
||||
Submenu = this.submenu
|
||||
};
|
||||
|
||||
this.menu.AddItem (NSMenuItem.SeparatorItem);
|
||||
this.menu.AddItem (this.more_item);
|
||||
}
|
||||
|
||||
this.menu.AddItem (NSMenuItem.SeparatorItem);
|
||||
this.menu.AddItem (this.recent_events_item);
|
||||
|
|
|
@ -48,15 +48,9 @@ namespace SparkleShare {
|
|||
public IconState CurrentState = IconState.Idle;
|
||||
public string StateText = "Welcome to SparkleShare!";
|
||||
|
||||
public readonly int MenuOverflowThreshold = 9;
|
||||
public readonly int MinSubmenuOverflowCount = 3;
|
||||
|
||||
public string [] Folders;
|
||||
public string [] FolderErrors;
|
||||
|
||||
public string [] OverflowFolders;
|
||||
public string [] OverflowFolderErrors;
|
||||
|
||||
|
||||
public string FolderSize {
|
||||
get {
|
||||
|
@ -228,49 +222,29 @@ namespace SparkleShare {
|
|||
|
||||
private void UpdateFolders ()
|
||||
{
|
||||
int overflow_count = (Program.Controller.Folders.Count - MenuOverflowThreshold);
|
||||
|
||||
if (overflow_count >= MinSubmenuOverflowCount) {
|
||||
Folders = Program.Controller.Folders.GetRange (0, MenuOverflowThreshold).ToArray ();
|
||||
OverflowFolders = Program.Controller.Folders.GetRange (MenuOverflowThreshold, overflow_count).ToArray ();
|
||||
} else {
|
||||
Folders = Program.Controller.Folders.ToArray ();
|
||||
OverflowFolders = new string [0];
|
||||
}
|
||||
|
||||
string [] errors = new string [Folders.Length];
|
||||
string [] overflow_errors = new string [OverflowFolders.Length];
|
||||
FolderErrors = new string [Folders.Length];
|
||||
|
||||
int i = 0;
|
||||
foreach (SparkleRepoBase repo in Program.Controller.Repositories) {
|
||||
string error_message;
|
||||
|
||||
if (repo.Error == ErrorStatus.HostUnreachable) {
|
||||
error_message = "Host unreachable";
|
||||
FolderErrors [i] = "Host unreachable";
|
||||
|
||||
} else if (repo.Error == ErrorStatus.HostIdentityChanged) {
|
||||
error_message = "Host identity changed";
|
||||
FolderErrors [i] = "Host identity changed";
|
||||
|
||||
} else if (repo.Error == ErrorStatus.AuthenticationFailed) {
|
||||
error_message = "Authentication failed";
|
||||
FolderErrors [i] = "Authentication failed";
|
||||
|
||||
} else if (repo.Error == ErrorStatus.DiskSpaceExcedeed) {
|
||||
error_message = "Out of disk space";
|
||||
FolderErrors [i] = "Out of disk space";
|
||||
|
||||
} else {
|
||||
error_message = "";
|
||||
FolderErrors [i] = "";
|
||||
}
|
||||
|
||||
if (i > Folders.Length - 1)
|
||||
overflow_errors [i] = error_message;
|
||||
else
|
||||
errors [i] = error_message;
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
FolderErrors = errors;
|
||||
OverflowFolderErrors = overflow_errors;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -237,54 +237,6 @@ namespace SparkleShare {
|
|||
|
||||
i++;
|
||||
}
|
||||
|
||||
SparkleMenuItem more_item = new SparkleMenuItem () {
|
||||
Header = "More projects"
|
||||
};
|
||||
|
||||
i = 0;
|
||||
foreach (string folder_name in Controller.OverflowFolders) {
|
||||
SparkleMenuItem subfolder_item = new SparkleMenuItem () {
|
||||
Header = folder_name
|
||||
};
|
||||
|
||||
subfolder_item.Click += OpenFolderDelegate (folder_name);
|
||||
|
||||
Image subfolder_image = new Image () {
|
||||
Source = SparkleUIHelpers.GetImageSource ("folder"),
|
||||
Width = 16,
|
||||
Height = 16
|
||||
};
|
||||
|
||||
if (!string.IsNullOrEmpty (Controller.OverflowFolderErrors [i])) {
|
||||
subfolder_item.Icon = new Image () {
|
||||
Source = (BitmapSource) Imaging.CreateBitmapSourceFromHIcon (
|
||||
System.Drawing.SystemIcons.Exclamation.Handle, Int32Rect.Empty,
|
||||
BitmapSizeOptions.FromWidthAndHeight (16,16)
|
||||
)
|
||||
};
|
||||
|
||||
SparkleMenuItem error_item = new SparkleMenuItem () {
|
||||
Header = Controller.OverflowFolderErrors [i],
|
||||
IsEnabled = false
|
||||
};
|
||||
|
||||
subfolder_item.Items.Add (error_item);
|
||||
|
||||
} else {
|
||||
subfolder_item.Icon = subfolder_image;
|
||||
}
|
||||
|
||||
more_item.Items.Add (subfolder_item);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
if (more_item.Items.Count > 0) {
|
||||
this.context_menu.Items.Add (new Separator ());
|
||||
this.context_menu.Items.Add (more_item);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.context_menu.Items.Add (new Separator ());
|
||||
|
|
Loading…
Reference in a new issue