Merge pull request #284 from barsv/fix_1_menuChecks

Code improvements and fixes for pull request "Change check behavior for Destinations->Image uploader->File uploader #283"
This commit is contained in:
Jaex 2014-09-14 12:57:18 +03:00
commit ddd87cd4e1
4 changed files with 80 additions and 31 deletions

View file

@ -96,17 +96,12 @@ private void InitControls()
// if click on "folder" with file destinations then set ImageFileDestination and check it
if (x == ImageDestination.FileUploader)
{
Program.DefaultTaskSettings.ImageFileDestination =
Program.DefaultTaskSettings.ImageFileDestination ?? FileDestination.Dropbox;
SetEnumChecked(Program.DefaultTaskSettings.ImageFileDestination, tsmiImageFileUploaders,
tsmiTrayImageFileUploaders);
}
else // if click not on "folder" with destinations then uncheck file destinations
{
if (Program.DefaultTaskSettings.ImageFileDestination != null)
{
Uncheck(tsmiImageFileUploaders, tsmiTrayImageFileUploaders);
}
Uncheck(tsmiImageFileUploaders, tsmiTrayImageFileUploaders);
}
}, tsmiImageUploaders, tsmiTrayImageUploaders);
tsmiImageFileUploaders = (ToolStripDropDownItem)tsmiImageUploaders.DropDownItems[tsmiImageUploaders.DropDownItems.Count - 1];
@ -124,17 +119,12 @@ private void InitControls()
// if click on "folder" with file destinations then set TextFileDestination and check it
if (x == TextDestination.FileUploader)
{
Program.DefaultTaskSettings.TextFileDestination = Program.DefaultTaskSettings.TextFileDestination
?? FileDestination.Dropbox;
SetEnumChecked(Program.DefaultTaskSettings.TextFileDestination, tsmiTextFileUploaders,
tsmiTrayTextFileUploaders);
}
else // if click not on "folder" with destinations then uncheck file destinations
{
if (Program.DefaultTaskSettings.TextFileDestination != null)
{
Uncheck(tsmiTextFileUploaders, tsmiTrayTextFileUploaders);
}
Uncheck(tsmiTextFileUploaders, tsmiTrayTextFileUploaders);
}
}, tsmiTextUploaders, tsmiTrayTextUploaders);
tsmiTextFileUploaders = (ToolStripDropDownItem)tsmiTextUploaders.DropDownItems[tsmiTextUploaders.DropDownItems.Count - 1];
@ -289,7 +279,7 @@ private void AddEnumItems<T>(Action<T> selectedEnum, params ToolStripDropDownIte
/// </summary>
/// <param name="value">Enum item</param>
/// <param name="parents">DropDowns where enum-th item must be checked.</param>
private void SetEnumChecked(Enum value, params ToolStripDropDownItem[] parents)
private static void SetEnumChecked(Enum value, params ToolStripDropDownItem[] parents)
{
if (value == null)
return;
@ -571,14 +561,54 @@ public void UpdateMainFormSettings()
SetMultiEnumChecked(Program.DefaultTaskSettings.AfterCaptureJob, tsddbAfterCaptureTasks, tsmiTrayAfterCaptureTasks);
SetMultiEnumChecked(Program.DefaultTaskSettings.AfterUploadJob, tsddbAfterUploadTasks, tsmiTrayAfterUploadTasks);
SetEnumChecked(Program.DefaultTaskSettings.ImageDestination, tsmiImageUploaders, tsmiTrayImageUploaders);
SetEnumChecked(Program.DefaultTaskSettings.ImageFileDestination, tsmiImageFileUploaders, tsmiTrayImageFileUploaders);
SetImageFileDestinationChecked(Program.DefaultTaskSettings.ImageDestination,
Program.DefaultTaskSettings.ImageFileDestination, tsmiImageFileUploaders, tsmiTrayImageFileUploaders);
SetEnumChecked(Program.DefaultTaskSettings.TextDestination, tsmiTextUploaders, tsmiTrayTextUploaders);
SetEnumChecked(Program.DefaultTaskSettings.TextFileDestination, tsmiTextFileUploaders, tsmiTrayTextFileUploaders);
SetTextFileDestinationChecked(Program.DefaultTaskSettings.TextDestination,
Program.DefaultTaskSettings.TextFileDestination , tsmiTextFileUploaders, tsmiTrayTextFileUploaders);
SetEnumChecked(Program.DefaultTaskSettings.FileDestination, tsmiFileUploaders, tsmiTrayFileUploaders);
SetEnumChecked(Program.DefaultTaskSettings.URLShortenerDestination, tsmiURLShorteners, tsmiTrayURLShorteners);
SetEnumChecked(Program.DefaultTaskSettings.URLSharingServiceDestination, tsmiURLSharingServices, tsmiTrayURLSharingServices);
}
/// <summary>
/// Sets necessary menu item checked in Text Uploader->File Uploader.
/// </summary>
/// <param name="textDestination">Currently checked menu item inside Text Uploader</param>
/// <param name="textFileDestination">Currently checked menu item inside Text Uploader->File Uploader</param>
/// <param name="lists">List of menu items to be analysed for being checked.</param>
public static void SetTextFileDestinationChecked(TextDestination textDestination,
FileDestination textFileDestination, params ToolStripDropDownItem[] lists)
{
if (textDestination == TextDestination.FileUploader)
{
SetEnumChecked(textFileDestination, lists);
}
else
{
Uncheck(lists);
}
}
/// <summary>
/// Sets necessary menu item checked in Image Uploader->File Uploader.
/// </summary>
/// <param name="imageDestination">Currently checked menu item inside Image Uploader</param>
/// <param name="imageFileDestination">Currently checked menu item inside Image Uploader->File Uploader</param>
/// <param name="lists">List of menu items to be analysed for being checked.</param>
public static void SetImageFileDestinationChecked(ImageDestination imageDestination,
FileDestination imageFileDestination, params ToolStripDropDownItem[] lists)
{
if (imageDestination == ImageDestination.FileUploader)
{
SetEnumChecked(imageFileDestination, lists);
}
else
{
Uncheck(lists);
}
}
private void UpdateUploaderMenuNames()
{
string imageUploader = Program.DefaultTaskSettings.ImageDestination == ImageDestination.FileUploader ?

View file

@ -83,30 +83,47 @@ public TaskSettingsForm(TaskSettings hotkeySetting, bool isDefault = false)
}, cmsTask);
AddMultiEnumItemsContextMenu<AfterCaptureTasks>(x => TaskSettings.AfterCaptureJob = TaskSettings.AfterCaptureJob.Swap(x), cmsAfterCapture);
AddMultiEnumItemsContextMenu<AfterUploadTasks>(x => TaskSettings.AfterUploadJob = TaskSettings.AfterUploadJob.Swap(x), cmsAfterUpload);
// Destinations -> Image uploader
AddEnumItems<ImageDestination>(x =>
{
TaskSettings.ImageDestination = x;
// if click on "folder" with file destinations then set ImageFileDestination and check it
if (x == ImageDestination.FileUploader)
{
TaskSettings.ImageFileDestination = TaskSettings.ImageFileDestination
?? FileDestination.Dropbox;
SetEnumChecked(TaskSettings.ImageFileDestination, tsmiImageFileUploaders);
}
else // if click not on "folder" with destinations then uncheck file destinations
{
if (TaskSettings.ImageFileDestination != null)
{
MainForm.Uncheck(tsmiImageFileUploaders);
}
MainForm.Uncheck(tsmiImageFileUploaders);
}
TaskSettings.ImageFileDestination = null;
}, tsmiImageUploaders);
tsmiImageFileUploaders = (ToolStripDropDownItem)tsmiImageUploaders.DropDownItems[tsmiImageUploaders.DropDownItems.Count - 1];
AddEnumItems<FileDestination>(x => TaskSettings.ImageFileDestination = x, tsmiImageFileUploaders);
AddEnumItems<TextDestination>(x => TaskSettings.TextDestination = x, tsmiTextUploaders);
AddEnumItems<FileDestination>(x =>
{
TaskSettings.ImageFileDestination = x;
tsmiImageFileUploaders.PerformClick();
}, tsmiImageFileUploaders);
// Destinations -> Text uploader
AddEnumItems<TextDestination>(x =>
{
TaskSettings.TextDestination = x;
// if click on "folder" with file destinations then set TextFileDestination and check it
if (x == TextDestination.FileUploader)
{
SetEnumChecked(TaskSettings.TextFileDestination, tsmiTextFileUploaders);
}
else // if click not on "folder" with destinations then uncheck file destinations
{
MainForm.Uncheck(tsmiTextFileUploaders);
}
}, tsmiTextUploaders);
tsmiTextFileUploaders = (ToolStripDropDownItem)tsmiTextUploaders.DropDownItems[tsmiTextUploaders.DropDownItems.Count - 1];
AddEnumItems<FileDestination>(x => TaskSettings.TextFileDestination = x, tsmiTextFileUploaders);
AddEnumItems<FileDestination>(x =>
{
TaskSettings.TextFileDestination = x;
tsmiTextFileUploaders.PerformClick();
}, tsmiTextFileUploaders);
// Destinations -> File uploader
AddEnumItems<FileDestination>(x => TaskSettings.FileDestination = x, tsmiFileUploaders);
AddEnumItems<UrlShortenerType>(x => TaskSettings.URLShortenerDestination = x, tsmiURLShorteners);
AddEnumItems<URLSharingServices>(x => TaskSettings.URLSharingServiceDestination = x, tsmiURLSharingServices);
@ -115,9 +132,11 @@ public TaskSettingsForm(TaskSettings hotkeySetting, bool isDefault = false)
SetMultiEnumCheckedContextMenu(TaskSettings.AfterCaptureJob, cmsAfterCapture);
SetMultiEnumCheckedContextMenu(TaskSettings.AfterUploadJob, cmsAfterUpload);
SetEnumChecked(TaskSettings.ImageDestination, tsmiImageUploaders);
SetEnumChecked(TaskSettings.ImageFileDestination, tsmiImageFileUploaders);
MainForm.SetImageFileDestinationChecked(TaskSettings.ImageDestination,
TaskSettings.ImageFileDestination, tsmiImageFileUploaders);
SetEnumChecked(TaskSettings.TextDestination, tsmiTextUploaders);
SetEnumChecked(TaskSettings.TextFileDestination, tsmiTextFileUploaders);
MainForm.SetTextFileDestinationChecked(TaskSettings.TextDestination,
TaskSettings.TextFileDestination, tsmiTextFileUploaders);
SetEnumChecked(TaskSettings.FileDestination, tsmiFileUploaders);
SetEnumChecked(TaskSettings.URLShortenerDestination, tsmiURLShorteners);
SetEnumChecked(TaskSettings.URLSharingServiceDestination, tsmiURLSharingServices);

View file

@ -63,9 +63,9 @@ public string Description
public bool UseDefaultDestinations = true;
public ImageDestination ImageDestination = ImageDestination.Imgur;
public FileDestination? ImageFileDestination = null;
public FileDestination ImageFileDestination = FileDestination.Dropbox;
public TextDestination TextDestination = TextDestination.Pastebin;
public FileDestination? TextFileDestination = null;
public FileDestination TextFileDestination = FileDestination.Dropbox;
public FileDestination FileDestination = FileDestination.Dropbox;
public UrlShortenerType URLShortenerDestination = UrlShortenerType.BITLY;
public URLSharingServices URLSharingServiceDestination = URLSharingServices.Twitter;

View file

@ -796,10 +796,10 @@ public UploadResult UploadFile(Stream stream, string fileName)
switch (Info.DataType)
{
case EDataType.Image:
fileDestination = Info.TaskSettings.ImageFileDestination ?? FileDestination.Dropbox;
fileDestination = Info.TaskSettings.ImageFileDestination;
break;
case EDataType.Text:
fileDestination = Info.TaskSettings.TextFileDestination ?? FileDestination.Dropbox;
fileDestination = Info.TaskSettings.TextFileDestination;
break;
default:
case EDataType.File: