2015-06-08 01:34:33 +12:00
|
|
|
|
#region License Information (GPL v3)
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
ShareX - A program that allows you to take screenshots and share any file type
|
|
|
|
|
Copyright © 2007-2015 ShareX Developers
|
|
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
|
modify it under the terms of the GNU General Public License
|
|
|
|
|
as published by the Free Software Foundation; either version 2
|
|
|
|
|
of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
|
along with this program; if not, write to the Free Software
|
|
|
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
|
|
|
|
|
|
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#endregion License Information (GPL v3)
|
|
|
|
|
|
|
|
|
|
using CG.Web.MegaApiClient;
|
|
|
|
|
using ShareX.HelpersLib;
|
|
|
|
|
using ShareX.UploadersLib.FileUploaders;
|
|
|
|
|
using ShareX.UploadersLib.HelperClasses;
|
|
|
|
|
using ShareX.UploadersLib.ImageUploaders;
|
|
|
|
|
using ShareX.UploadersLib.Properties;
|
|
|
|
|
using ShareX.UploadersLib.TextUploaders;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Linq;
|
2015-06-16 01:59:57 +12:00
|
|
|
|
using System.Text.RegularExpressions;
|
2015-06-08 01:34:33 +12:00
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
|
|
|
|
namespace ShareX.UploadersLib
|
|
|
|
|
{
|
|
|
|
|
public partial class UploadersConfigForm : Form
|
|
|
|
|
{
|
|
|
|
|
public UploadersConfig Config { get; private set; }
|
|
|
|
|
|
|
|
|
|
private ImageList uploadersImageList;
|
|
|
|
|
|
|
|
|
|
public UploadersConfigForm(UploadersConfig uploadersConfig)
|
|
|
|
|
{
|
|
|
|
|
Config = uploadersConfig;
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(Config.FilePath))
|
|
|
|
|
{
|
|
|
|
|
Text += " - " + Config.FilePath;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Icon = ShareXResources.Icon;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UploadersConfigForm_Shown(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FormSettings();
|
|
|
|
|
LoadSettings(Config);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UploadersConfigForm_Resize(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Refresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void FormSettings()
|
|
|
|
|
{
|
|
|
|
|
uploadersImageList = new ImageList();
|
|
|
|
|
uploadersImageList.ColorDepth = ColorDepth.Depth32Bit;
|
|
|
|
|
|
|
|
|
|
AddIconToTab(tpAdFly, Resources.AdFly);
|
|
|
|
|
AddIconToTab(tpAmazonS3, Resources.AmazonS3);
|
|
|
|
|
AddIconToTab(tpBitly, Resources.Bitly);
|
|
|
|
|
AddIconToTab(tpBox, Resources.Box);
|
|
|
|
|
AddIconToTab(tpCopy, Resources.Copy);
|
|
|
|
|
AddIconToTab(tpHubic, Resources.Hubic);
|
|
|
|
|
AddIconToTab(tpChevereto, Resources.Chevereto);
|
2015-07-21 08:21:06 +12:00
|
|
|
|
AddIconToTab(tpCoinURL, Resources.CoinURL);
|
2015-06-08 01:34:33 +12:00
|
|
|
|
AddIconToTab(tpCustomUploaders, Resources.globe_network);
|
|
|
|
|
AddIconToTab(tpDropbox, Resources.Dropbox);
|
|
|
|
|
AddIconToTab(tpEmail, Resources.mail);
|
|
|
|
|
AddIconToTab(tpFlickr, Resources.Flickr);
|
|
|
|
|
AddIconToTab(tpFTP, Resources.folder_network);
|
|
|
|
|
AddIconToTab(tpGe_tt, Resources.Gett);
|
|
|
|
|
AddIconToTab(tpGist, Resources.GitHub);
|
|
|
|
|
AddIconToTab(tpGoogleDrive, Resources.GoogleDrive);
|
|
|
|
|
AddIconToTab(tpGoogleURLShortener, Resources.Google);
|
|
|
|
|
AddIconToTab(tpHastebin, Resources.Hastebin);
|
|
|
|
|
AddIconToTab(tpHostr, Resources.Hostr);
|
|
|
|
|
AddIconToTab(tpImageShack, Resources.ImageShack);
|
|
|
|
|
AddIconToTab(tpImgur, Resources.Imgur);
|
|
|
|
|
AddIconToTab(tpJira, Resources.jira);
|
2015-07-21 07:01:57 +12:00
|
|
|
|
AddIconToTab(tpLnkU, Resources.LnkU);
|
2015-06-08 01:34:33 +12:00
|
|
|
|
AddIconToTab(tpMediaFire, Resources.MediaFire);
|
|
|
|
|
AddIconToTab(tpMega, Resources.Mega);
|
|
|
|
|
AddIconToTab(tpMinus, Resources.Minus);
|
|
|
|
|
AddIconToTab(tpOneDrive, Resources.OneDrive);
|
|
|
|
|
AddIconToTab(tpOwnCloud, Resources.OwnCloud);
|
|
|
|
|
AddIconToTab(tpPastebin, Resources.Pastebin);
|
|
|
|
|
AddIconToTab(tpPaste_ee, Resources.page_white_text);
|
|
|
|
|
AddIconToTab(tpPhotobucket, Resources.Photobucket);
|
|
|
|
|
AddIconToTab(tpPicasa, Resources.Picasa);
|
|
|
|
|
AddIconToTab(tpPushbullet, Resources.Pushbullet);
|
|
|
|
|
AddIconToTab(tpSendSpace, Resources.SendSpace);
|
|
|
|
|
AddIconToTab(tpSharedFolder, Resources.server_network);
|
|
|
|
|
AddIconToTab(tpTinyPic, Resources.TinyPic);
|
|
|
|
|
AddIconToTab(tpTwitter, Resources.Twitter);
|
|
|
|
|
AddIconToTab(tpUpaste, Resources.Upaste);
|
|
|
|
|
AddIconToTab(tpYourls, Resources.Yourls);
|
|
|
|
|
AddIconToTab(tpLambda, Resources.Lambda);
|
2015-06-29 05:18:47 +12:00
|
|
|
|
AddIconToTab(tpUp1, Resources.Up1);
|
2015-06-08 01:34:33 +12:00
|
|
|
|
|
|
|
|
|
tcFileUploaders.TabPages.Remove(tpHubic);
|
|
|
|
|
|
|
|
|
|
ttlvMain.ImageList = uploadersImageList;
|
|
|
|
|
ttlvMain.MainTabControl = tcUploaders;
|
|
|
|
|
ttlvMain.FocusListView();
|
|
|
|
|
|
|
|
|
|
CodeMenu.Create(txtDropboxPath, ReplCodeMenuEntry.n, ReplCodeMenuEntry.t, ReplCodeMenuEntry.pn);
|
|
|
|
|
CodeMenu.Create(txtCopyPath, ReplCodeMenuEntry.n, ReplCodeMenuEntry.t, ReplCodeMenuEntry.pn);
|
|
|
|
|
CodeMenu.Create(txtAmazonS3ObjectPrefix, ReplCodeMenuEntry.n, ReplCodeMenuEntry.t, ReplCodeMenuEntry.pn);
|
|
|
|
|
CodeMenu.Create(txtMediaFirePath, ReplCodeMenuEntry.n, ReplCodeMenuEntry.t, ReplCodeMenuEntry.pn);
|
|
|
|
|
CodeMenu.Create(txtCustomUploaderArgValue, ReplCodeMenuEntry.n);
|
|
|
|
|
|
|
|
|
|
txtCustomUploaderLog.AddContextMenu();
|
|
|
|
|
|
|
|
|
|
// FTP
|
|
|
|
|
ucFTPAccounts.btnAdd.Click += FTPAccountAddButton_Click;
|
|
|
|
|
ucFTPAccounts.btnRemove.Click += FTPAccountRemoveButton_Click;
|
|
|
|
|
ucFTPAccounts.btnDuplicate.Click += FTPAccountDuplicateButton_Click;
|
|
|
|
|
ucFTPAccounts.btnTest.Click += FTPAccountTestButton_Click;
|
|
|
|
|
ucFTPAccounts.pgSettings.PropertyValueChanged += FtpAccountSettingsGrid_PropertyValueChanged;
|
|
|
|
|
|
|
|
|
|
// Localhost
|
|
|
|
|
ucLocalhostAccounts.btnAdd.Click += LocalhostAccountAddButton_Click;
|
|
|
|
|
ucLocalhostAccounts.btnRemove.Click += LocalhostAccountRemoveButton_Click;
|
|
|
|
|
ucLocalhostAccounts.btnDuplicate.Click += LocalhostAccountDuplicateButton_Click;
|
|
|
|
|
ucLocalhostAccounts.btnTest.Visible = false;
|
|
|
|
|
ucLocalhostAccounts.pgSettings.PropertyValueChanged += SettingsGrid_LocalhostPropertyValueChanged;
|
|
|
|
|
|
|
|
|
|
eiFTP.ObjectType = typeof(FTPAccount);
|
|
|
|
|
eiCustomUploaders.ObjectType = typeof(CustomUploaderItem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void AddIconToTab(TabPage tp, Icon icon)
|
|
|
|
|
{
|
|
|
|
|
uploadersImageList.Images.Add(tp.Name, icon);
|
|
|
|
|
tp.ImageKey = tp.Name;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void AddIconToTab(TabPage tp, Bitmap bitmap)
|
|
|
|
|
{
|
|
|
|
|
uploadersImageList.Images.Add(tp.Name, bitmap);
|
|
|
|
|
tp.ImageKey = tp.Name;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void LoadSettings(UploadersConfig uploadersConfig)
|
|
|
|
|
{
|
|
|
|
|
#region Image uploaders
|
|
|
|
|
|
|
|
|
|
// Imgur
|
|
|
|
|
|
|
|
|
|
oauth2Imgur.Enabled = Config.ImgurAccountType == AccountType.User;
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.ImgurOAuth2Info))
|
|
|
|
|
{
|
|
|
|
|
oauth2Imgur.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
btnImgurRefreshAlbumList.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
atcImgurAccountType.SelectedAccountType = Config.ImgurAccountType;
|
|
|
|
|
cbImgurDirectLink.Checked = Config.ImgurDirectLink;
|
|
|
|
|
cbImgurThumbnailType.Items.Clear();
|
|
|
|
|
cbImgurThumbnailType.Items.AddRange(Helpers.GetEnumDescriptions<ImgurThumbnailType>());
|
|
|
|
|
cbImgurThumbnailType.SelectedIndex = (int)Config.ImgurThumbnailType;
|
|
|
|
|
cbImgurUploadSelectedAlbum.Checked = Config.ImgurUploadSelectedAlbum;
|
|
|
|
|
ImgurFillAlbumList();
|
|
|
|
|
|
|
|
|
|
// ImageShack
|
|
|
|
|
|
|
|
|
|
txtImageShackUsername.Text = Config.ImageShackSettings.Username;
|
|
|
|
|
txtImageShackPassword.Text = Config.ImageShackSettings.Password;
|
|
|
|
|
cbImageShackIsPublic.Checked = Config.ImageShackSettings.IsPublic;
|
|
|
|
|
|
|
|
|
|
// TinyPic
|
|
|
|
|
|
|
|
|
|
atcTinyPicAccountType.SelectedAccountType = Config.TinyPicAccountType;
|
|
|
|
|
txtTinyPicUsername.Text = Config.TinyPicUsername;
|
|
|
|
|
txtTinyPicPassword.Text = Config.TinyPicPassword;
|
|
|
|
|
|
|
|
|
|
// Flickr
|
|
|
|
|
|
|
|
|
|
pgFlickrAuthInfo.SelectedObject = Config.FlickrAuthInfo;
|
|
|
|
|
pgFlickrSettings.SelectedObject = Config.FlickrSettings;
|
|
|
|
|
|
|
|
|
|
// Photobucket
|
|
|
|
|
|
|
|
|
|
if (OAuthInfo.CheckOAuth(Config.PhotobucketOAuthInfo))
|
|
|
|
|
{
|
|
|
|
|
lblPhotobucketAccountStatus.Text = Resources.UploadersConfigForm_Login_successful;
|
|
|
|
|
txtPhotobucketDefaultAlbumName.Text = Config.PhotobucketAccountInfo.AlbumID;
|
|
|
|
|
lblPhotobucketParentAlbumPath.Text = Resources.UploadersConfigForm_LoadSettings_Parent_album_path_e_g_ + " " +
|
|
|
|
|
Config.PhotobucketAccountInfo.AlbumID + "/Personal/" + DateTime.Now.Year;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (Config.PhotobucketAccountInfo != null)
|
|
|
|
|
{
|
|
|
|
|
cboPhotobucketAlbumPaths.Items.Clear();
|
|
|
|
|
|
|
|
|
|
if (Config.PhotobucketAccountInfo.AlbumList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
cboPhotobucketAlbumPaths.Items.AddRange(Config.PhotobucketAccountInfo.AlbumList.ToArray());
|
|
|
|
|
cboPhotobucketAlbumPaths.SelectedIndex = Config.PhotobucketAccountInfo.ActiveAlbumID.
|
|
|
|
|
BetweenOrDefault(0, Config.PhotobucketAccountInfo.AlbumList.Count - 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Picasa
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.PicasaOAuth2Info))
|
|
|
|
|
{
|
|
|
|
|
oauth2Picasa.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
btnPicasaRefreshAlbumList.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
txtPicasaAlbumID.Text = Config.PicasaAlbumID;
|
|
|
|
|
|
|
|
|
|
// Chevereto
|
|
|
|
|
|
|
|
|
|
txtCheveretoWebsite.Text = Config.CheveretoWebsite;
|
|
|
|
|
txtCheveretoAPIKey.Text = Config.CheveretoAPIKey;
|
|
|
|
|
cbCheveretoDirectURL.Checked = Config.CheveretoDirectURL;
|
|
|
|
|
|
|
|
|
|
#endregion Image uploaders
|
|
|
|
|
|
|
|
|
|
#region Text uploaders
|
|
|
|
|
|
|
|
|
|
// Pastebin
|
|
|
|
|
|
|
|
|
|
txtPastebinUsername.Text = Config.PastebinSettings.Username;
|
|
|
|
|
txtPastebinPassword.Text = Config.PastebinSettings.Password;
|
|
|
|
|
UpdatePastebinStatus();
|
|
|
|
|
cbPastebinPrivacy.Items.AddRange(Helpers.GetEnumDescriptions<PastebinPrivacy>());
|
|
|
|
|
cbPastebinPrivacy.SelectedIndex = (int)Config.PastebinSettings.Exposure;
|
|
|
|
|
cbPastebinExpiration.Items.AddRange(Helpers.GetEnumDescriptions<PastebinExpiration>());
|
|
|
|
|
cbPastebinExpiration.SelectedIndex = (int)Config.PastebinSettings.Expiration;
|
|
|
|
|
cbPastebinSyntax.Items.AddRange(Pastebin.GetSyntaxList().ToArray());
|
|
|
|
|
cbPastebinSyntax.SelectedIndex = 0;
|
|
|
|
|
for (int i = 0; i < cbPastebinSyntax.Items.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
PastebinSyntaxInfo pastebinSyntaxInfo = (PastebinSyntaxInfo)cbPastebinSyntax.Items[i];
|
|
|
|
|
if (pastebinSyntaxInfo.Value.Equals(Config.PastebinSettings.TextFormat, StringComparison.InvariantCultureIgnoreCase))
|
|
|
|
|
{
|
|
|
|
|
cbPastebinSyntax.SelectedIndex = i;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
txtPastebinTitle.Text = Config.PastebinSettings.Title;
|
|
|
|
|
|
|
|
|
|
// Paste.ee
|
|
|
|
|
|
|
|
|
|
txtPaste_eeUserAPIKey.Text = Config.Paste_eeUserAPIKey;
|
|
|
|
|
|
|
|
|
|
// Gist
|
|
|
|
|
|
|
|
|
|
atcGistAccountType.SelectedAccountType = Config.GistAnonymousLogin ? AccountType.Anonymous : AccountType.User;
|
|
|
|
|
chkGistPublishPublic.Checked = Config.GistPublishPublic;
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.GistOAuth2Info))
|
|
|
|
|
{
|
|
|
|
|
oAuth2Gist.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Upaste
|
|
|
|
|
|
|
|
|
|
txtUpasteUserKey.Text = Config.UpasteUserKey;
|
|
|
|
|
cbUpasteIsPublic.Checked = Config.UpasteIsPublic;
|
|
|
|
|
|
|
|
|
|
// Hastebin
|
|
|
|
|
|
|
|
|
|
txtHastebinCustomDomain.Text = Config.HastebinCustomDomain;
|
|
|
|
|
txtHastebinSyntaxHighlighting.Text = Config.HastebinSyntaxHighlighting;
|
|
|
|
|
|
|
|
|
|
#endregion Text uploaders
|
|
|
|
|
|
|
|
|
|
#region File uploaders
|
|
|
|
|
|
|
|
|
|
// Dropbox
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.DropboxOAuth2Info))
|
|
|
|
|
{
|
|
|
|
|
oauth2Dropbox.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
txtDropboxPath.Text = Config.DropboxUploadPath;
|
|
|
|
|
cbDropboxAutoCreateShareableLink.Checked = Config.DropboxAutoCreateShareableLink;
|
|
|
|
|
cbDropboxURLType.Enabled = Config.DropboxAutoCreateShareableLink;
|
|
|
|
|
cbDropboxURLType.Items.AddRange(Helpers.GetEnumNamesProper<DropboxURLType>());
|
|
|
|
|
cbDropboxURLType.SelectedIndex = (int)Config.DropboxURLType;
|
|
|
|
|
UpdateDropboxStatus();
|
|
|
|
|
|
|
|
|
|
// Copy
|
|
|
|
|
|
|
|
|
|
if (OAuthInfo.CheckOAuth(Config.CopyOAuthInfo))
|
|
|
|
|
{
|
|
|
|
|
oAuthCopy.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
txtCopyPath.Text = Config.CopyUploadPath;
|
|
|
|
|
cbCopyURLType.Items.AddRange(Helpers.GetEnumNamesProper<CopyURLType>());
|
|
|
|
|
cbCopyURLType.SelectedIndex = (int)Config.CopyURLType;
|
|
|
|
|
UpdateCopyStatus();
|
|
|
|
|
|
|
|
|
|
// Google Drive
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.GoogleDriveOAuth2Info))
|
|
|
|
|
{
|
|
|
|
|
oauth2GoogleDrive.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
btnGoogleDriveRefreshFolders.Enabled = true;
|
|
|
|
|
|
|
|
|
|
tvOneDrive.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cbGoogleDriveIsPublic.Checked = Config.GoogleDriveIsPublic;
|
|
|
|
|
cbGoogleDriveUseFolder.Checked = Config.GoogleDriveUseFolder;
|
|
|
|
|
txtGoogleDriveFolderID.Enabled = Config.GoogleDriveUseFolder;
|
|
|
|
|
txtGoogleDriveFolderID.Text = Config.GoogleDriveFolderID;
|
|
|
|
|
|
|
|
|
|
// OneDrive
|
|
|
|
|
|
|
|
|
|
tvOneDrive.Nodes.Clear();
|
|
|
|
|
OneDriveAddFolder(OneDrive.RootFolder, null);
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.OneDriveOAuth2Info))
|
|
|
|
|
{
|
|
|
|
|
oAuth2OneDrive.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cbOneDriveCreateShareableLink.Checked = Config.OneDriveAutoCreateShareableLink;
|
|
|
|
|
lblOneDriveFolderID.Text = Resources.UploadersConfigForm_LoadSettings_Selected_folder_ + " " + Config.OneDriveSelectedFolder.name;
|
|
|
|
|
tvOneDrive.CollapseAll();
|
|
|
|
|
|
|
|
|
|
// Minus
|
|
|
|
|
|
|
|
|
|
cbMinusURLType.Items.Clear();
|
|
|
|
|
cbMinusURLType.Items.AddRange(Enum.GetNames(typeof(MinusLinkType)));
|
|
|
|
|
MinusUpdateControls();
|
|
|
|
|
|
|
|
|
|
// Box
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.BoxOAuth2Info))
|
|
|
|
|
{
|
|
|
|
|
oauth2Box.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
btnBoxRefreshFolders.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cbBoxShare.Checked = Config.BoxShare;
|
|
|
|
|
lblBoxFolderID.Text = Resources.UploadersConfigForm_LoadSettings_Selected_folder_ + " " + Config.BoxSelectedFolder.name;
|
|
|
|
|
|
|
|
|
|
// Hubic
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.HubicOAuth2Info))
|
|
|
|
|
{
|
|
|
|
|
oauth2Hubic.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
btnHubicRefreshFolders.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cbHubicPublishLink.Checked = Config.HubicPublish;
|
|
|
|
|
|
|
|
|
|
// Ge.tt
|
|
|
|
|
|
|
|
|
|
if (Config.Ge_ttLogin != null && !string.IsNullOrEmpty(Config.Ge_ttLogin.AccessToken))
|
|
|
|
|
{
|
|
|
|
|
lblGe_ttStatus.Text = Resources.UploadersConfigForm_Login_successful;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Localhostr
|
|
|
|
|
|
|
|
|
|
txtLocalhostrEmail.Text = Config.LocalhostrEmail;
|
|
|
|
|
txtLocalhostrPassword.Text = Config.LocalhostrPassword;
|
|
|
|
|
cbLocalhostrDirectURL.Checked = Config.LocalhostrDirectURL;
|
|
|
|
|
|
|
|
|
|
// FTP
|
|
|
|
|
|
|
|
|
|
if (Config.FTPAccountList == null || Config.FTPAccountList.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
FTPSetup(new List<FTPAccount>());
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
FTPSetup(Config.FTPAccountList);
|
|
|
|
|
if (ucFTPAccounts.lbAccounts.Items.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
ucFTPAccounts.lbAccounts.SelectedIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Email
|
|
|
|
|
|
|
|
|
|
txtEmailSmtpServer.Text = Config.EmailSmtpServer;
|
|
|
|
|
nudEmailSmtpPort.Value = Config.EmailSmtpPort;
|
|
|
|
|
txtEmailFrom.Text = Config.EmailFrom;
|
|
|
|
|
txtEmailPassword.Text = Config.EmailPassword;
|
|
|
|
|
chkEmailConfirm.Checked = Config.EmailConfirmSend;
|
|
|
|
|
cbEmailRememberLastTo.Checked = Config.EmailRememberLastTo;
|
|
|
|
|
txtEmailDefaultSubject.Text = Config.EmailDefaultSubject;
|
|
|
|
|
txtEmailDefaultBody.Text = Config.EmailDefaultBody;
|
|
|
|
|
|
|
|
|
|
// SendSpace
|
|
|
|
|
|
|
|
|
|
atcSendSpaceAccountType.SelectedAccountType = Config.SendSpaceAccountType;
|
|
|
|
|
txtSendSpacePassword.Text = Config.SendSpacePassword;
|
|
|
|
|
txtSendSpaceUserName.Text = Config.SendSpaceUsername;
|
|
|
|
|
|
|
|
|
|
// Localhost
|
|
|
|
|
|
|
|
|
|
if (Config.LocalhostAccountList == null || Config.LocalhostAccountList.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
LocalhostAccountsSetup(new List<LocalhostAccount>());
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
LocalhostAccountsSetup(Config.LocalhostAccountList);
|
|
|
|
|
if (ucLocalhostAccounts.lbAccounts.Items.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
ucLocalhostAccounts.lbAccounts.SelectedIndex = 0;
|
|
|
|
|
cboSharedFolderImages.SelectedIndex = Config.LocalhostSelectedImages.Between(0, ucLocalhostAccounts.lbAccounts.Items.Count - 1);
|
|
|
|
|
cboSharedFolderText.SelectedIndex = Config.LocalhostSelectedText.Between(0, ucLocalhostAccounts.lbAccounts.Items.Count - 1);
|
|
|
|
|
cboSharedFolderFiles.SelectedIndex = Config.LocalhostSelectedFiles.Between(0, ucLocalhostAccounts.lbAccounts.Items.Count - 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Custom uploaders
|
|
|
|
|
|
|
|
|
|
lbCustomUploaderList.Items.Clear();
|
|
|
|
|
|
|
|
|
|
if (Config.CustomUploadersList == null)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomUploadersList = new List<CustomUploaderItem>();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
foreach (CustomUploaderItem customUploader in Config.CustomUploadersList)
|
|
|
|
|
{
|
|
|
|
|
lbCustomUploaderList.Items.Add(customUploader.Name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PrepareCustomUploaderList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cbCustomUploaderRequestType.Items.AddRange(Enum.GetNames(typeof(CustomUploaderRequestType)));
|
|
|
|
|
cbCustomUploaderResponseType.Items.AddRange(Helpers.GetLocalizedEnumDescriptions<ResponseType>());
|
|
|
|
|
|
|
|
|
|
CustomUploaderClear();
|
|
|
|
|
|
|
|
|
|
// Jira
|
|
|
|
|
|
|
|
|
|
txtJiraHost.Text = Config.JiraHost;
|
|
|
|
|
txtJiraIssuePrefix.Text = Config.JiraIssuePrefix;
|
|
|
|
|
txtJiraConfigHelp.Text = string.Format(@"Howto configure your Jira server:
|
|
|
|
|
|
|
|
|
|
- Go to 'Administration' -> 'Add-ons'
|
|
|
|
|
- Select 'Application Links'
|
|
|
|
|
|
|
|
|
|
- Add a new 'Application Link' with following settings:
|
|
|
|
|
- Server URL: {0}
|
|
|
|
|
- Application Name: {1}
|
|
|
|
|
- Application Type: Generic Application
|
|
|
|
|
|
|
|
|
|
- Now, you have to configure Incoming Authentication
|
|
|
|
|
- Consumer Key: {2}
|
|
|
|
|
- Consumer Name: {1}
|
|
|
|
|
- Public Key (without quotes): '{3}'
|
|
|
|
|
|
|
|
|
|
- You can now authenticate to Jira", Links.URL_WEBSITE, "ShareX", APIKeys.JiraConsumerKey, Jira.PublicKey);
|
|
|
|
|
|
|
|
|
|
if (OAuthInfo.CheckOAuth(Config.JiraOAuthInfo))
|
|
|
|
|
{
|
|
|
|
|
oAuthJira.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Mega
|
|
|
|
|
|
|
|
|
|
MegaConfigureTab(false);
|
|
|
|
|
|
|
|
|
|
//Pushbullet
|
|
|
|
|
|
|
|
|
|
txtPushbulletUserKey.Text = Config.PushbulletSettings.UserAPIKey;
|
|
|
|
|
|
|
|
|
|
if (Config.PushbulletSettings.DeviceList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
Config.PushbulletSettings.DeviceList.ForEach(x => cboPushbulletDevices.Items.Add(x.Name ?? Resources.UploadersConfigForm_LoadSettings_Invalid_device_name));
|
|
|
|
|
|
|
|
|
|
if (Config.PushbulletSettings.DeviceList.IsValidIndex(Config.PushbulletSettings.SelectedDevice))
|
|
|
|
|
{
|
|
|
|
|
cboPushbulletDevices.SelectedIndex = Config.PushbulletSettings.SelectedDevice;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
cboPushbulletDevices.SelectedIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Amazon S3
|
|
|
|
|
|
|
|
|
|
txtAmazonS3AccessKey.Text = Config.AmazonS3Settings.AccessKeyID;
|
|
|
|
|
txtAmazonS3SecretKey.Text = Config.AmazonS3Settings.SecretAccessKey;
|
|
|
|
|
txtAmazonS3BucketName.Text = Config.AmazonS3Settings.Bucket;
|
|
|
|
|
txtAmazonS3ObjectPrefix.Text = Config.AmazonS3Settings.ObjectPrefix;
|
|
|
|
|
cbAmazonS3CustomCNAME.Checked = Config.AmazonS3Settings.UseCustomCNAME;
|
|
|
|
|
txtAmazonS3CustomDomain.Enabled = Config.AmazonS3Settings.UseCustomCNAME;
|
|
|
|
|
txtAmazonS3CustomDomain.Text = Config.AmazonS3Settings.CustomDomain;
|
|
|
|
|
cbAmazonS3UseRRS.Checked = Config.AmazonS3Settings.UseReducedRedundancyStorage;
|
|
|
|
|
|
|
|
|
|
cbAmazonS3Endpoint.Items.AddRange(AmazonS3.RegionEndpoints.ToArray());
|
|
|
|
|
cbAmazonS3Endpoint.SelectedItem = AmazonS3.GetCurrentRegion(Config.AmazonS3Settings);
|
|
|
|
|
cbAmazonS3Endpoint.DisplayMember = "Name";
|
|
|
|
|
UpdateAmazonS3Status();
|
|
|
|
|
|
|
|
|
|
// ownCloud
|
|
|
|
|
|
|
|
|
|
txtOwnCloudHost.Text = Config.OwnCloudHost;
|
|
|
|
|
txtOwnCloudUsername.Text = Config.OwnCloudUsername;
|
|
|
|
|
txtOwnCloudPassword.Text = Config.OwnCloudPassword;
|
|
|
|
|
txtOwnCloudPath.Text = Config.OwnCloudPath;
|
|
|
|
|
cbOwnCloudCreateShare.Checked = Config.OwnCloudCreateShare;
|
|
|
|
|
cbOwnCloudDirectLink.Checked = Config.OwnCloudDirectLink;
|
|
|
|
|
cbOwnCloudIgnoreInvalidCert.Checked = Config.OwnCloudIgnoreInvalidCert;
|
|
|
|
|
|
|
|
|
|
// MediaFire
|
|
|
|
|
|
|
|
|
|
txtMediaFireEmail.Text = Config.MediaFireUsername;
|
|
|
|
|
txtMediaFirePassword.Text = Config.MediaFirePassword;
|
|
|
|
|
txtMediaFirePath.Text = Config.MediaFirePath;
|
|
|
|
|
cbMediaFireUseLongLink.Checked = Config.MediaFireUseLongLink;
|
|
|
|
|
|
2015-06-29 04:16:22 +12:00
|
|
|
|
// Up1
|
|
|
|
|
|
|
|
|
|
txtUp1Host.Text = Config.Up1Host;
|
|
|
|
|
txtUp1Key.Text = Config.Up1Key;
|
|
|
|
|
|
2015-06-08 01:34:33 +12:00
|
|
|
|
// Lambda
|
|
|
|
|
|
|
|
|
|
txtLambdaApiKey.Text = Config.LambdaSettings.UserAPIKey;
|
|
|
|
|
|
|
|
|
|
#endregion File uploaders
|
|
|
|
|
|
|
|
|
|
#region URL Shorteners
|
|
|
|
|
|
|
|
|
|
// Google URL Shortener
|
|
|
|
|
|
|
|
|
|
atcGoogleURLShortenerAccountType.SelectedAccountType = Config.GoogleURLShortenerAccountType;
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.GoogleURLShortenerOAuth2Info))
|
|
|
|
|
{
|
|
|
|
|
oauth2GoogleURLShortener.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// bit.ly
|
|
|
|
|
|
|
|
|
|
if (OAuth2Info.CheckOAuth(Config.BitlyOAuth2Info))
|
|
|
|
|
{
|
|
|
|
|
oauth2Bitly.Status = OAuthLoginStatus.LoginSuccessful;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
txtBitlyDomain.Text = Config.BitlyDomain;
|
|
|
|
|
|
|
|
|
|
// yourls.org
|
|
|
|
|
|
|
|
|
|
txtYourlsAPIURL.Text = Config.YourlsAPIURL;
|
|
|
|
|
txtYourlsSignature.Text = Config.YourlsSignature;
|
|
|
|
|
txtYourlsUsername.Enabled = txtYourlsPassword.Enabled = string.IsNullOrEmpty(Config.YourlsSignature);
|
|
|
|
|
txtYourlsUsername.Text = Config.YourlsUsername;
|
|
|
|
|
txtYourlsPassword.Text = Config.YourlsPassword;
|
|
|
|
|
|
|
|
|
|
// adf.ly
|
|
|
|
|
|
|
|
|
|
txtAdflyAPIKEY.Text = Config.AdFlyAPIKEY;
|
|
|
|
|
txtAdflyAPIUID.Text = Config.AdFlyAPIUID;
|
|
|
|
|
|
2015-07-21 07:01:57 +12:00
|
|
|
|
// lnku.co
|
2015-07-21 02:51:34 +12:00
|
|
|
|
|
2015-07-21 07:01:57 +12:00
|
|
|
|
txtLnkUAPIKEY.Text = Config.LnkUAPIKEY;
|
2015-07-21 02:51:34 +12:00
|
|
|
|
|
2015-07-21 08:21:06 +12:00
|
|
|
|
// coinurl.com
|
|
|
|
|
|
|
|
|
|
txtCoinURLUUID.Text = Config.CoinURLUUID;
|
|
|
|
|
|
2015-06-08 01:34:33 +12:00
|
|
|
|
#endregion URL Shorteners
|
|
|
|
|
|
|
|
|
|
#region Other Services
|
|
|
|
|
|
|
|
|
|
// Twitter
|
|
|
|
|
|
|
|
|
|
lvTwitterAccounts.Items.Clear();
|
|
|
|
|
|
|
|
|
|
foreach (OAuthInfo twitterOAuth in Config.TwitterOAuthInfoList)
|
|
|
|
|
{
|
|
|
|
|
lvTwitterAccounts.Items.Add(twitterOAuth.Description);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
lvTwitterAccounts.Select(Config.TwitterSelectedAccount);
|
|
|
|
|
|
|
|
|
|
TwitterUpdateSelected();
|
|
|
|
|
|
|
|
|
|
cbTwitterSkipMessageBox.Checked = Config.TwitterSkipMessageBox;
|
|
|
|
|
txtTwitterDefaultMessage.Text = Config.TwitterDefaultMessage;
|
|
|
|
|
|
|
|
|
|
#endregion Other Services
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region Image Uploaders
|
|
|
|
|
|
|
|
|
|
#region Imgur
|
|
|
|
|
|
|
|
|
|
private void atcImgurAccountType_AccountTypeChanged(AccountType accountType)
|
|
|
|
|
{
|
|
|
|
|
Config.ImgurAccountType = accountType;
|
|
|
|
|
oauth2Imgur.Enabled = Config.ImgurAccountType == AccountType.User;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Imgur_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
ImgurAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Imgur_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
ImgurAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Imgur_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
Config.ImgurOAuth2Info = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Imgur_RefreshButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
ImgurAuthRefresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbImgurDirectLink_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.ImgurDirectLink = cbImgurDirectLink.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbImgurThumbnailType_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.ImgurThumbnailType = (ImgurThumbnailType)cbImgurThumbnailType.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbImgurUploadSelectedAlbum_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.ImgurUploadSelectedAlbum = cbImgurUploadSelectedAlbum.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnImgurRefreshAlbumList_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
ImgurRefreshAlbumList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void lvImgurAlbumList_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (lvImgurAlbumList.SelectedItems.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
ListViewItem lvi = lvImgurAlbumList.SelectedItems[0];
|
|
|
|
|
if (lvi.Tag is ImgurAlbumData)
|
|
|
|
|
{
|
|
|
|
|
Config.ImgurSelectedAlbum = (ImgurAlbumData)lvi.Tag;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Config.ImgurSelectedAlbum = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Imgur
|
|
|
|
|
|
|
|
|
|
#region ImageShack
|
|
|
|
|
|
|
|
|
|
private void txtImageShackUsername_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.ImageShackSettings.Username = txtImageShackUsername.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtImageShackPassword_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.ImageShackSettings.Password = txtImageShackPassword.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnImageShackLogin_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
ImageShackUploader imageShackUploader = new ImageShackUploader(APIKeys.ImageShackKey, Config.ImageShackSettings);
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (imageShackUploader.GetAccessToken())
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_successful, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_failed, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
DebugHelper.WriteException(ex);
|
|
|
|
|
MessageBox.Show(ex.ToString(), Resources.UploadersConfigForm_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbImageShackIsPublic_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.ImageShackSettings.IsPublic = cbImageShackIsPublic.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnImageShackOpenPublicProfile_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(Config.ImageShackSettings.Username))
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("https://imageshack.com/user/" + Config.ImageShackSettings.Username);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
txtImageShackUsername.Focus();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnImageShackOpenMyImages_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("https://imageshack.com/my/images");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion ImageShack
|
|
|
|
|
|
|
|
|
|
#region TinyPic
|
|
|
|
|
|
|
|
|
|
private void atcTinyPicAccountType_AccountTypeChanged(AccountType accountType)
|
|
|
|
|
{
|
|
|
|
|
Config.TinyPicAccountType = accountType;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtTinyPicUsername_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (Config.TinyPicRememberUserPass)
|
|
|
|
|
{
|
|
|
|
|
Config.TinyPicUsername = txtTinyPicUsername.Text;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtTinyPicPassword_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (Config.TinyPicRememberUserPass)
|
|
|
|
|
{
|
|
|
|
|
Config.TinyPicPassword = txtTinyPicPassword.Text;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnTinyPicLogin_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string username = txtTinyPicUsername.Text;
|
|
|
|
|
string password = txtTinyPicPassword.Text;
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
TinyPicUploader tpu = new TinyPicUploader(APIKeys.TinyPicID, APIKeys.TinyPicKey);
|
|
|
|
|
string registrationCode = tpu.UserAuth(username, password);
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(registrationCode))
|
|
|
|
|
{
|
|
|
|
|
Config.TinyPicRegistrationCode = registrationCode;
|
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_successful, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_Login_failed, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
DebugHelper.WriteException(ex);
|
|
|
|
|
MessageBox.Show(ex.ToString(), Resources.UploadersConfigForm_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnTinyPicOpenMyImages_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("http://tinypic.com/yourstuff.php");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion TinyPic
|
|
|
|
|
|
|
|
|
|
#region Flickr
|
|
|
|
|
|
|
|
|
|
private void btnFlickrOpenAuthorize_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FlickrAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnFlickrCompleteAuth_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FlickrAuthComplete();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnFlickrCheckToken_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FlickrCheckToken();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnFlickrOpenImages_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FlickrOpenImages();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Flickr
|
|
|
|
|
|
|
|
|
|
#region Photobucket
|
|
|
|
|
|
|
|
|
|
private void btnPhotobucketAuthOpen_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
PhotobucketAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnPhotobucketAuthComplete_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
PhotobucketAuthComplete();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnPhotobucketCreateAlbum_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
PhotobucketCreateAlbum();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cboPhotobucketAlbumPaths_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (Config.PhotobucketAccountInfo != null)
|
|
|
|
|
{
|
|
|
|
|
Config.PhotobucketAccountInfo.ActiveAlbumID = cboPhotobucketAlbumPaths.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnPhotobucketAddAlbum_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string albumPath = cboPhotobucketAlbumPaths.Text;
|
|
|
|
|
if (!Config.PhotobucketAccountInfo.AlbumList.Contains(albumPath))
|
|
|
|
|
{
|
|
|
|
|
Config.PhotobucketAccountInfo.AlbumList.Add(albumPath);
|
|
|
|
|
cboPhotobucketAlbumPaths.Items.Add(albumPath);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnPhotobucketRemoveAlbum_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (cboPhotobucketAlbumPaths.Items.Count > 1)
|
|
|
|
|
{
|
|
|
|
|
cboPhotobucketAlbumPaths.Items.RemoveAt(cboPhotobucketAlbumPaths.SelectedIndex);
|
|
|
|
|
cboPhotobucketAlbumPaths.SelectedIndex = cboPhotobucketAlbumPaths.Items.Count - 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Photobucket
|
|
|
|
|
|
|
|
|
|
#region Picasa
|
|
|
|
|
|
|
|
|
|
private void oauth2Picasa_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
PicasaAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Picasa_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
PicasaAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Picasa_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
Config.PicasaOAuth2Info = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Picasa_RefreshButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
PicasaAuthRefresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtPicasaAlbumID_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.PicasaAlbumID = txtPicasaAlbumID.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnPicasaRefreshAlbumList_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
PicasaRefreshAlbumList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void lvPicasaAlbumList_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (lvPicasaAlbumList.SelectedItems.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
ListViewItem lvi = lvPicasaAlbumList.SelectedItems[0];
|
|
|
|
|
if (lvi.Tag is PicasaAlbumInfo)
|
|
|
|
|
{
|
|
|
|
|
PicasaAlbumInfo album = (PicasaAlbumInfo)lvi.Tag;
|
|
|
|
|
txtPicasaAlbumID.Text = album.ID;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Picasa
|
|
|
|
|
|
|
|
|
|
#region Chevereto
|
|
|
|
|
|
|
|
|
|
private void txtCheveretoWebsite_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.CheveretoWebsite = txtCheveretoWebsite.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtCheveretoAPIKey_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.CheveretoAPIKey = txtCheveretoAPIKey.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbCheveretoDirectURL_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.CheveretoDirectURL = cbCheveretoDirectURL.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Chevereto
|
|
|
|
|
|
|
|
|
|
#endregion Image Uploaders
|
|
|
|
|
|
|
|
|
|
#region Text Uploaders
|
|
|
|
|
|
|
|
|
|
#region Pastebin
|
|
|
|
|
|
|
|
|
|
private void txtPastebinUsername_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.PastebinSettings.Username = txtPastebinUsername.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtPastebinPassword_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.PastebinSettings.Password = txtPastebinPassword.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnPastebinRegister_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("http://pastebin.com/signup");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnPastebinLogin_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
PastebinLogin();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbPastebinPrivacy_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.PastebinSettings.Exposure = (PastebinPrivacy)cbPastebinPrivacy.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbPastebinExpiration_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.PastebinSettings.Expiration = (PastebinExpiration)cbPastebinExpiration.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbPastebinSyntax_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.PastebinSettings.TextFormat = ((PastebinSyntaxInfo)cbPastebinSyntax.SelectedItem).Value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtPastebinTitle_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.PastebinSettings.Title = txtPastebinTitle.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Pastebin
|
|
|
|
|
|
|
|
|
|
#region Paste.ee
|
|
|
|
|
|
|
|
|
|
private void txtPaste_eeUserAPIKey_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.Paste_eeUserAPIKey = txtPaste_eeUserAPIKey.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Paste.ee
|
|
|
|
|
|
|
|
|
|
#region Gist
|
|
|
|
|
|
|
|
|
|
private void atcGistAccountType_AccountTypeChanged(AccountType accountType)
|
|
|
|
|
{
|
|
|
|
|
Config.GistAnonymousLogin = accountType == AccountType.Anonymous;
|
|
|
|
|
oAuth2Gist.Enabled = !Config.GistAnonymousLogin;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuth2Gist_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
GistAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuth2Gist_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
GistAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuth2Gist_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
Config.GistOAuth2Info = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void chkGistPublishPublic_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.GistPublishPublic = ((CheckBox)sender).Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Gist
|
|
|
|
|
|
|
|
|
|
#region uPaste
|
|
|
|
|
|
|
|
|
|
private void txtUpasteUserKey_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.UpasteUserKey = txtUpasteUserKey.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbUpasteIsPublic_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.UpasteIsPublic = cbUpasteIsPublic.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion uPaste
|
|
|
|
|
|
|
|
|
|
#region Hastebin
|
|
|
|
|
|
|
|
|
|
private void txtHastebinCustomDomain_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.HastebinCustomDomain = txtHastebinCustomDomain.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtHastebinSyntaxHighlighting_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.HastebinSyntaxHighlighting = txtHastebinSyntaxHighlighting.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Hastebin
|
|
|
|
|
|
|
|
|
|
#endregion Text Uploaders
|
|
|
|
|
|
|
|
|
|
#region File Uploaders
|
|
|
|
|
|
|
|
|
|
#region Dropbox
|
|
|
|
|
|
|
|
|
|
private void pbDropboxLogo_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("https://www.dropbox.com");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Dropbox_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
DropboxAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Dropbox_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
DropboxAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Dropbox_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
Config.DropboxOAuth2Info = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtDropboxPath_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.DropboxUploadPath = txtDropboxPath.Text;
|
|
|
|
|
UpdateDropboxStatus();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnDropboxShowFiles_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
DropboxOpenFiles();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbDropboxAutoCreateShareableLink_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.DropboxAutoCreateShareableLink = cbDropboxAutoCreateShareableLink.Checked;
|
|
|
|
|
cbDropboxURLType.Enabled = Config.DropboxAutoCreateShareableLink;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbDropboxURLType_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.DropboxURLType = (DropboxURLType)cbDropboxURLType.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Dropbox
|
|
|
|
|
|
|
|
|
|
#region Copy
|
|
|
|
|
|
|
|
|
|
private void pbCopyLogo_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("https://copy.com");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtCopyPath_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.CopyUploadPath = txtCopyPath.Text;
|
|
|
|
|
UpdateCopyStatus();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuthCopy_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
CopyAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuthCopy_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
CopyAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuthCopy_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
Config.CopyOAuthInfo = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbCopyURLType_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.CopyURLType = (CopyURLType)cbCopyURLType.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Copy
|
|
|
|
|
|
|
|
|
|
#region Hubic
|
|
|
|
|
|
|
|
|
|
private void oAuth2Hubic_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
HubicAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuth2Hubic_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
HubicAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuth2Hubic_RefreshButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
HubicAuthRefresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuth2Hubic_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
Config.HubicOAuth2Info = null;
|
|
|
|
|
Config.HubicOpenstackAuthInfo = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnHubicRefreshFolders_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
HubicListFolders(Hubic.RootFolder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void lvHubicFolders_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (lvHubicFolders.SelectedItems.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
ListViewItem lvi = lvHubicFolders.SelectedItems[0];
|
|
|
|
|
HubicFolderInfo folder = lvi.Tag as HubicFolderInfo;
|
|
|
|
|
if (folder != null)
|
|
|
|
|
{
|
|
|
|
|
lblHubicSelectedFolder.Text = Resources.UploadersConfigForm_LoadSettings_Selected_folder_ + " " + folder.name;
|
|
|
|
|
Config.HubicSelectedFolder = folder;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void lvHubicFolders_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (e.Button == MouseButtons.Left && lvHubicFolders.SelectedItems.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
ListViewItem lvi = lvHubicFolders.SelectedItems[0];
|
|
|
|
|
HubicFolderInfo folder = lvi.Tag as HubicFolderInfo;
|
|
|
|
|
if (folder != null)
|
|
|
|
|
{
|
|
|
|
|
lvHubicFolders.Items.Clear();
|
|
|
|
|
HubicListFolders(folder);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbHubicPublishLink_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.HubicPublish = cbHubicPublishLink.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Hubic
|
|
|
|
|
|
|
|
|
|
#region OneDrive
|
|
|
|
|
|
|
|
|
|
private void oAuth2OneDrive_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
OneDriveAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuth2OneDrive_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
OneDriveAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuth2OneDrive_RefreshButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
OneDriveAuthRefresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuth2OneDrive_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
Config.OneDriveOAuth2Info = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbOneDriveCreateShareableLink_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.OneDriveAutoCreateShareableLink = cbOneDriveCreateShareableLink.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void tvOneDrive_AfterSelect(object sender, TreeViewEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
OneDriveFileInfo file = e.Node.Tag as OneDriveFileInfo;
|
|
|
|
|
if (file != null)
|
|
|
|
|
{
|
|
|
|
|
lblOneDriveFolderID.Text = Resources.UploadersConfigForm_LoadSettings_Selected_folder_ + " " + file.name;
|
|
|
|
|
Config.OneDriveSelectedFolder = file;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void tvOneDrive_AfterExpand(object sender, TreeViewEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
OneDriveFileInfo file = e.Node.Tag as OneDriveFileInfo;
|
|
|
|
|
if (file != null)
|
|
|
|
|
{
|
|
|
|
|
OneDriveListFolders(file, e.Node);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion OneDrive
|
|
|
|
|
|
|
|
|
|
#region Google Drive
|
|
|
|
|
|
|
|
|
|
private void oauth2GoogleDrive_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
GoogleDriveAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2GoogleDrive_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
GoogleDriveAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2GoogleDrive_RefreshButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
GoogleDriveAuthRefresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2GoogleDrive_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
Config.GoogleDriveOAuth2Info = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbGoogleDriveIsPublic_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.GoogleDriveIsPublic = cbGoogleDriveIsPublic.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbGoogleDriveUseFolder_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.GoogleDriveUseFolder = cbGoogleDriveUseFolder.Checked;
|
|
|
|
|
txtGoogleDriveFolderID.Enabled = Config.GoogleDriveUseFolder;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtGoogleDriveFolderID_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.GoogleDriveFolderID = txtGoogleDriveFolderID.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnGoogleDriveRefreshFolders_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
GoogleDriveRefreshFolders();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void lvGoogleDriveFoldersList_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (lvGoogleDriveFoldersList.SelectedItems.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
ListViewItem lvi = lvGoogleDriveFoldersList.SelectedItems[0];
|
|
|
|
|
var folder = lvi.Tag as GoogleDrive.GoogleDriveFile;
|
|
|
|
|
if (folder != null)
|
|
|
|
|
{
|
|
|
|
|
txtGoogleDriveFolderID.Text = folder.id;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Google Drive
|
|
|
|
|
|
|
|
|
|
#region Box
|
|
|
|
|
|
|
|
|
|
private void oauth2Box_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
BoxAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Box_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
BoxAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Box_RefreshButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
BoxAuthRefresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Box_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
Config.BoxOAuth2Info = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbBoxShare_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.BoxShare = cbBoxShare.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnBoxRefreshFolders_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
BoxListFolders();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void lvBoxFolders_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (lvBoxFolders.SelectedItems.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
ListViewItem lvi = lvBoxFolders.SelectedItems[0];
|
|
|
|
|
BoxFileEntry file = lvi.Tag as BoxFileEntry;
|
|
|
|
|
if (file != null)
|
|
|
|
|
{
|
|
|
|
|
lblBoxFolderID.Text = Resources.UploadersConfigForm_LoadSettings_Selected_folder_ + " " + file.name;
|
|
|
|
|
Config.BoxSelectedFolder = file;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void lvBoxFolders_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (e.Button == MouseButtons.Left && lvBoxFolders.SelectedItems.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
ListViewItem lvi = lvBoxFolders.SelectedItems[0];
|
|
|
|
|
BoxFileEntry file = lvi.Tag as BoxFileEntry;
|
|
|
|
|
if (file != null)
|
|
|
|
|
{
|
|
|
|
|
lvBoxFolders.Items.Clear();
|
|
|
|
|
BoxListFolders(file);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Box
|
|
|
|
|
|
|
|
|
|
#region Minus
|
|
|
|
|
|
|
|
|
|
private void btnMinusAuth_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
MinusAuth();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnAuthRefresh_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
MinusAuthRefresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cboMinusFolders_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (Config.MinusConfig != null)
|
|
|
|
|
{
|
|
|
|
|
Config.MinusConfig.FolderID = cboMinusFolders.SelectedIndex;
|
|
|
|
|
MinusFolder tempMf = Config.MinusConfig.GetActiveFolder();
|
|
|
|
|
chkMinusPublic.Checked = tempMf.is_public;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnMinusFolderAdd_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(cboMinusFolders.Text) && !MinusHasFolder(cboMinusFolders.Text))
|
|
|
|
|
{
|
|
|
|
|
btnMinusFolderAdd.Enabled = false;
|
|
|
|
|
|
|
|
|
|
Minus minus = new Minus(Config.MinusConfig, Config.MinusOAuth2Info);
|
|
|
|
|
MinusFolder dir = minus.CreateFolder(cboMinusFolders.Text, chkMinusPublic.Checked);
|
|
|
|
|
if (dir != null)
|
|
|
|
|
{
|
|
|
|
|
cboMinusFolders.Items.Add(dir);
|
|
|
|
|
cboMinusFolders.SelectedIndex = cboMinusFolders.Items.Count - 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
btnMinusFolderAdd.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnMinusFolderRemove_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(cboMinusFolders.Text) && MinusHasFolder(cboMinusFolders.Text))
|
|
|
|
|
{
|
|
|
|
|
btnMinusFolderRemove.Enabled = false;
|
|
|
|
|
|
|
|
|
|
Minus minus = new Minus(Config.MinusConfig, Config.MinusOAuth2Info);
|
|
|
|
|
|
|
|
|
|
int index = cboMinusFolders.SelectedIndex;
|
|
|
|
|
|
|
|
|
|
if (minus.DeleteFolder(index))
|
|
|
|
|
{
|
|
|
|
|
cboMinusFolders.Items.RemoveAt(index);
|
|
|
|
|
|
|
|
|
|
if (cboMinusFolders.Items.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
cboMinusFolders.SelectedIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
btnMinusFolderRemove.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnMinusReadFolderList_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (Config.MinusConfig != null)
|
|
|
|
|
{
|
|
|
|
|
btnMinusReadFolderList.Enabled = false;
|
|
|
|
|
|
|
|
|
|
List<MinusFolder> tempListMf = new Minus(Config.MinusConfig, Config.MinusOAuth2Info).ReadFolderList();
|
|
|
|
|
|
|
|
|
|
if (tempListMf.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
cboMinusFolders.Items.Clear();
|
|
|
|
|
cboMinusFolders.Items.AddRange(tempListMf.ToArray());
|
|
|
|
|
cboMinusFolders.SelectedIndex = Config.MinusConfig.FolderID;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
btnMinusReadFolderList.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbMinusURLType_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (Config.MinusConfig != null)
|
|
|
|
|
{
|
|
|
|
|
Config.MinusConfig.LinkType = (MinusLinkType)cbMinusURLType.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Minus
|
|
|
|
|
|
|
|
|
|
#region FTP
|
|
|
|
|
|
|
|
|
|
private void cboFtpImages_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.FTPSelectedImage = cboFtpImages.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cboFtpText_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.FTPSelectedText = cboFtpText.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cboFtpFiles_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.FTPSelectedFile = cboFtpFiles.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnFtpClient_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FTPOpenClient();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private object eiFTP_ExportRequested()
|
|
|
|
|
{
|
|
|
|
|
return GetSelectedFTPAccount();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void eiFTP_ImportRequested(object obj)
|
|
|
|
|
{
|
|
|
|
|
AddFTPAccount(obj as FTPAccount);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void FTPSetup(IEnumerable<FTPAccount> accs)
|
|
|
|
|
{
|
|
|
|
|
if (accs != null)
|
|
|
|
|
{
|
|
|
|
|
int selFtpList = ucFTPAccounts.lbAccounts.SelectedIndex;
|
|
|
|
|
|
|
|
|
|
ucFTPAccounts.lbAccounts.Items.Clear();
|
|
|
|
|
ucFTPAccounts.pgSettings.PropertySort = PropertySort.Categorized;
|
|
|
|
|
cboFtpImages.Items.Clear();
|
|
|
|
|
cboFtpText.Items.Clear();
|
|
|
|
|
cboFtpFiles.Items.Clear();
|
|
|
|
|
|
|
|
|
|
Config.FTPAccountList = new List<FTPAccount>();
|
|
|
|
|
Config.FTPAccountList.AddRange(accs);
|
|
|
|
|
|
|
|
|
|
foreach (FTPAccount acc in Config.FTPAccountList)
|
|
|
|
|
{
|
|
|
|
|
ucFTPAccounts.lbAccounts.Items.Add(acc);
|
|
|
|
|
cboFtpImages.Items.Add(acc);
|
|
|
|
|
cboFtpText.Items.Add(acc);
|
|
|
|
|
cboFtpFiles.Items.Add(acc);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ucFTPAccounts.lbAccounts.Items.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
ucFTPAccounts.lbAccounts.SelectedIndex = selFtpList.Between(0, ucFTPAccounts.lbAccounts.Items.Count - 1);
|
|
|
|
|
cboFtpImages.SelectedIndex = Config.FTPSelectedImage.Between(0, ucFTPAccounts.lbAccounts.Items.Count - 1);
|
|
|
|
|
cboFtpText.SelectedIndex = Config.FTPSelectedText.Between(0, ucFTPAccounts.lbAccounts.Items.Count - 1);
|
|
|
|
|
cboFtpFiles.SelectedIndex = Config.FTPSelectedFile.Between(0, ucFTPAccounts.lbAccounts.Items.Count - 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void FTPAccountAddButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
AddFTPAccount(new FTPAccount());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void FTPAccountRemoveButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
int sel = ucFTPAccounts.lbAccounts.SelectedIndex;
|
|
|
|
|
if (ucFTPAccounts.RemoveItem(sel))
|
|
|
|
|
{
|
|
|
|
|
Config.FTPAccountList.RemoveAt(sel);
|
|
|
|
|
}
|
|
|
|
|
FTPSetup(Config.FTPAccountList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void FTPAccountDuplicateButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FTPAccount src = (FTPAccount)ucFTPAccounts.lbAccounts.Items[ucFTPAccounts.lbAccounts.SelectedIndex];
|
|
|
|
|
FTPAccount clone = src.Clone();
|
|
|
|
|
AddFTPAccount(clone);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void FTPAccountTestButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
TestFTPAccountAsync(GetSelectedFTPAccount());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void FtpAccountSettingsGrid_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FTPSetup(Config.FTPAccountList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion FTP
|
|
|
|
|
|
|
|
|
|
#region Email
|
|
|
|
|
|
|
|
|
|
private void txtSmtpServer_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.EmailSmtpServer = txtEmailSmtpServer.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void nudSmtpPort_ValueChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.EmailSmtpPort = (int)nudEmailSmtpPort.Value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtEmail_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.EmailFrom = txtEmailFrom.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtPassword_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.EmailPassword = txtEmailPassword.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void chkEmailConfirm_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.EmailConfirmSend = chkEmailConfirm.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbRememberLastToEmail_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.EmailRememberLastTo = cbEmailRememberLastTo.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtDefaultSubject_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.EmailDefaultSubject = txtEmailDefaultSubject.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtDefaultBody_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.EmailDefaultBody = txtEmailDefaultBody.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Email
|
|
|
|
|
|
|
|
|
|
#region SendSpace
|
|
|
|
|
|
|
|
|
|
private void atcSendSpaceAccountType_AccountTypeChanged(AccountType accountType)
|
|
|
|
|
{
|
|
|
|
|
Config.SendSpaceAccountType = accountType;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnSendSpaceRegister_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
using (UserPassBox upb = SendSpaceRegister())
|
|
|
|
|
{
|
|
|
|
|
if (upb.Success)
|
|
|
|
|
{
|
|
|
|
|
txtSendSpaceUserName.Text = upb.UserName;
|
|
|
|
|
txtSendSpacePassword.Text = upb.Password;
|
|
|
|
|
atcSendSpaceAccountType.SelectedAccountType = AccountType.User;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtSendSpaceUserName_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.SendSpaceUsername = txtSendSpaceUserName.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtSendSpacePassword_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.SendSpacePassword = txtSendSpacePassword.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion SendSpace
|
|
|
|
|
|
|
|
|
|
#region Ge.tt
|
|
|
|
|
|
|
|
|
|
private void btnGe_ttLogin_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Ge_ttLogin();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Ge.tt
|
|
|
|
|
|
|
|
|
|
#region Localhostr
|
|
|
|
|
|
|
|
|
|
private void txtLocalhostrEmail_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.LocalhostrEmail = txtLocalhostrEmail.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtLocalhostrPassword_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.LocalhostrPassword = txtLocalhostrPassword.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbLocalhostrDirectURL_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.LocalhostrDirectURL = cbLocalhostrDirectURL.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Localhostr
|
|
|
|
|
|
|
|
|
|
#region Jira
|
|
|
|
|
|
|
|
|
|
private void txtJiraHost_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.JiraHost = txtJiraHost.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtJiraIssuePrefix_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.JiraIssuePrefix = txtJiraIssuePrefix.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuthJira_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
JiraAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuthJira_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
JiraAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuthJira_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
Config.JiraOAuthInfo = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oAuthJira_RefreshButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(Resources.UploadersConfigForm_oAuthJira_RefreshButtonClicked_Refresh_authorization_is_not_supported_, "ShareX", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Jira
|
|
|
|
|
|
|
|
|
|
#region Mega
|
|
|
|
|
|
|
|
|
|
private void MegaConfigureTab(bool tryLogin)
|
|
|
|
|
{
|
|
|
|
|
Color OkColor = Color.Green;
|
|
|
|
|
Color NokColor = Color.DarkRed;
|
|
|
|
|
|
|
|
|
|
tpMega.Enabled = false;
|
|
|
|
|
|
|
|
|
|
if (Config.MegaAuthInfos != null)
|
|
|
|
|
{
|
|
|
|
|
txtMegaEmail.Text = Config.MegaAuthInfos.Email;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (Config.MegaAuthInfos == null)
|
|
|
|
|
{
|
|
|
|
|
lblMegaStatus.Text = Resources.UploadersConfigForm_MegaConfigureTab_Not_configured;
|
|
|
|
|
lblMegaStatus.ForeColor = NokColor;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
cbMegaFolder.Items.Clear();
|
|
|
|
|
|
|
|
|
|
Mega mega = new Mega(Config.MegaAuthInfos);
|
|
|
|
|
if (!tryLogin || mega.TryLogin())
|
|
|
|
|
{
|
|
|
|
|
lblMegaStatus.Text = Resources.UploadersConfigForm_MegaConfigureTab_Configured;
|
|
|
|
|
lblMegaStatus.ForeColor = OkColor;
|
|
|
|
|
|
|
|
|
|
if (tryLogin)
|
|
|
|
|
{
|
|
|
|
|
Mega.DisplayNode[] nodes = mega.GetDisplayNodes().ToArray();
|
|
|
|
|
cbMegaFolder.Items.AddRange(nodes);
|
|
|
|
|
cbMegaFolder.SelectedItem = nodes.FirstOrDefault(n => n.Node != null && n.Node.Id == Config.MegaParentNodeId) ?? Mega.DisplayNode.EmptyNode;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
cbMegaFolder.Items.Add("[" + Resources.UploadersConfigForm_MegaConfigureTab_Click_refresh_button + "]");
|
|
|
|
|
cbMegaFolder.SelectedIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
lblMegaStatus.Text = Resources.UploadersConfigForm_MegaConfigureTab_Invalid_authentication;
|
|
|
|
|
lblMegaStatus.ForeColor = NokColor;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tpMega.Enabled = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnMegaLogin_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(txtMegaEmail.Text) || string.IsNullOrEmpty(txtMegaPassword.Text))
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Config.MegaAuthInfos = MegaApiClient.GenerateAuthInfos(txtMegaEmail.Text, txtMegaPassword.Text);
|
|
|
|
|
|
|
|
|
|
MegaConfigureTab(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbMegaFolder_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Mega.DisplayNode selectedNode = ((ComboBox)sender).SelectedItem as Mega.DisplayNode;
|
|
|
|
|
if (selectedNode != null)
|
|
|
|
|
{
|
|
|
|
|
Config.MegaParentNodeId = selectedNode == Mega.DisplayNode.EmptyNode ? null : selectedNode.Node.Id;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnMegaRegister_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("https://mega.co.nz/#register");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnMegaRefreshFolders_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
MegaConfigureTab(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Mega
|
|
|
|
|
|
|
|
|
|
#region Amazon S3
|
|
|
|
|
|
|
|
|
|
private void txtAmazonS3AccessKey_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.AmazonS3Settings.AccessKeyID = txtAmazonS3AccessKey.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnAmazonS3AccessKeyOpen_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("https://console.aws.amazon.com/iam/home?#security_credential");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtAmazonS3SecretKey_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.AmazonS3Settings.SecretAccessKey = txtAmazonS3SecretKey.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbAmazonS3Endpoint_SelectionChangeCommitted(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
var region = cbAmazonS3Endpoint.SelectedItem as AmazonS3Region;
|
|
|
|
|
if (region != null)
|
|
|
|
|
{
|
|
|
|
|
Config.AmazonS3Settings.Endpoint = region.Identifier;
|
|
|
|
|
UpdateAmazonS3Status();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtAmazonS3BucketName_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.AmazonS3Settings.Bucket = txtAmazonS3BucketName.Text;
|
|
|
|
|
UpdateAmazonS3Status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnAmazonS3BucketNameOpen_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("https://console.aws.amazon.com/s3/home");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtAmazonS3ObjectPrefix_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.AmazonS3Settings.ObjectPrefix = txtAmazonS3ObjectPrefix.Text;
|
|
|
|
|
UpdateAmazonS3Status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbAmazonS3CustomCNAME_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.AmazonS3Settings.UseCustomCNAME = cbAmazonS3CustomCNAME.Checked;
|
|
|
|
|
txtAmazonS3CustomDomain.Enabled = Config.AmazonS3Settings.UseCustomCNAME;
|
|
|
|
|
UpdateAmazonS3Status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtAmazonS3CustomDomain_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.AmazonS3Settings.CustomDomain = txtAmazonS3CustomDomain.Text;
|
|
|
|
|
UpdateAmazonS3Status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbAmazonS3UseRRS_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.AmazonS3Settings.UseReducedRedundancyStorage = cbAmazonS3UseRRS.Checked;
|
|
|
|
|
UpdateAmazonS3Status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Amazon S3
|
|
|
|
|
|
|
|
|
|
#region ownCloud
|
|
|
|
|
|
|
|
|
|
private void txtOwnCloudHost_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.OwnCloudHost = txtOwnCloudHost.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtOwnCloudUsername_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.OwnCloudUsername = txtOwnCloudUsername.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtOwnCloudPassword_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.OwnCloudPassword = txtOwnCloudPassword.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtOwnCloudPath_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.OwnCloudPath = txtOwnCloudPath.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbOwnCloudCreateShare_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.OwnCloudCreateShare = cbOwnCloudCreateShare.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbOwnCloudDirectLink_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.OwnCloudDirectLink = cbOwnCloudDirectLink.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbOwnCloudIgnoreInvalidCert_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.OwnCloudIgnoreInvalidCert = cbOwnCloudIgnoreInvalidCert.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion ownCloud
|
|
|
|
|
|
2015-06-29 04:16:22 +12:00
|
|
|
|
#region Up1
|
|
|
|
|
|
|
|
|
|
private void txtUp1Host_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.Up1Host = txtUp1Host.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtUp1Key_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.Up1Key = txtUp1Key.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Up1
|
|
|
|
|
|
2015-06-08 01:34:33 +12:00
|
|
|
|
#region Pushbullet
|
|
|
|
|
|
|
|
|
|
private void txtPushbulletUserKey_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
bool enable = !string.IsNullOrEmpty(txtPushbulletUserKey.Text.Trim());
|
|
|
|
|
|
|
|
|
|
cboPushbulletDevices.Enabled = enable;
|
|
|
|
|
btnPushbulletGetDeviceList.Enabled = enable;
|
|
|
|
|
|
|
|
|
|
Config.PushbulletSettings.UserAPIKey = txtPushbulletUserKey.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cboPushbulletDevices_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.PushbulletSettings.SelectedDevice = cboPushbulletDevices.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnPushbulletGetDeviceList_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
PushbulletGetDevices();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Pushbullet
|
|
|
|
|
|
|
|
|
|
#region Shared folder
|
|
|
|
|
|
|
|
|
|
private void LocalhostAccountsSetup(IEnumerable<LocalhostAccount> accs)
|
|
|
|
|
{
|
|
|
|
|
if (accs != null)
|
|
|
|
|
{
|
|
|
|
|
int sel = ucLocalhostAccounts.lbAccounts.SelectedIndex;
|
|
|
|
|
|
|
|
|
|
ucLocalhostAccounts.lbAccounts.Items.Clear();
|
|
|
|
|
Config.LocalhostAccountList = new List<LocalhostAccount>();
|
|
|
|
|
Config.LocalhostAccountList.AddRange(accs);
|
|
|
|
|
|
|
|
|
|
cboSharedFolderFiles.Items.Clear();
|
|
|
|
|
cboSharedFolderImages.Items.Clear();
|
|
|
|
|
cboSharedFolderText.Items.Clear();
|
|
|
|
|
|
|
|
|
|
foreach (LocalhostAccount acc in Config.LocalhostAccountList)
|
|
|
|
|
{
|
|
|
|
|
ucLocalhostAccounts.lbAccounts.Items.Add(acc);
|
|
|
|
|
cboSharedFolderFiles.Items.Add(acc);
|
|
|
|
|
cboSharedFolderImages.Items.Add(acc);
|
|
|
|
|
cboSharedFolderText.Items.Add(acc);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ucLocalhostAccounts.lbAccounts.Items.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
ucLocalhostAccounts.lbAccounts.SelectedIndex = sel.Between(0, ucLocalhostAccounts.lbAccounts.Items.Count - 1);
|
|
|
|
|
cboSharedFolderFiles.SelectedIndex = Config.LocalhostSelectedFiles.Between(0, ucLocalhostAccounts.lbAccounts.Items.Count - 1);
|
|
|
|
|
cboSharedFolderImages.SelectedIndex = Config.LocalhostSelectedImages.Between(0, ucLocalhostAccounts.lbAccounts.Items.Count - 1);
|
|
|
|
|
cboSharedFolderText.SelectedIndex = Config.LocalhostSelectedText.Between(0, ucLocalhostAccounts.lbAccounts.Items.Count - 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void LocalhostAccountAddButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
LocalhostAccount acc = new LocalhostAccount();
|
|
|
|
|
Config.LocalhostAccountList.Add(acc);
|
|
|
|
|
ucLocalhostAccounts.AddItem(acc);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void LocalhostAccountRemoveButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
int sel = ucLocalhostAccounts.lbAccounts.SelectedIndex;
|
|
|
|
|
if (ucLocalhostAccounts.RemoveItem(sel))
|
|
|
|
|
{
|
|
|
|
|
Config.LocalhostAccountList.RemoveAt(sel);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void LocalhostAccountDuplicateButton_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
LocalhostAccount src = (LocalhostAccount)ucLocalhostAccounts.lbAccounts.Items[ucLocalhostAccounts.lbAccounts.SelectedIndex];
|
|
|
|
|
LocalhostAccount clone = src.Clone();
|
|
|
|
|
Config.LocalhostAccountList.Add(clone);
|
|
|
|
|
ucLocalhostAccounts.AddItem(clone);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SettingsGrid_LocalhostPropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
LocalhostAccountsSetup(Config.LocalhostAccountList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cboSharedFolderImages_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.LocalhostSelectedImages = cboSharedFolderImages.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cboSharedFolderText_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.LocalhostSelectedText = cboSharedFolderText.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cboSharedFolderFiles_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.LocalhostSelectedFiles = cboSharedFolderFiles.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Shared folder
|
|
|
|
|
|
|
|
|
|
#region MediaFire
|
|
|
|
|
|
|
|
|
|
private void txtMediaFireUsername_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.MediaFireUsername = txtMediaFireEmail.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtMediaFirePassword_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.MediaFirePassword = txtMediaFirePassword.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtMediaFirePath_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.MediaFirePath = txtMediaFirePath.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbMediaFireUseLongLink_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.MediaFireUseLongLink = cbMediaFireUseLongLink.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion MediaFire
|
|
|
|
|
|
|
|
|
|
#region Lambda
|
|
|
|
|
|
|
|
|
|
private void lambdaInfoLabel_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("https://lambda.sx/usercp");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtLambdaApiKey_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.LambdaSettings.UserAPIKey = txtLambdaApiKey.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Lambda
|
|
|
|
|
|
|
|
|
|
#endregion File Uploaders
|
|
|
|
|
|
|
|
|
|
#region URL Shorteners
|
|
|
|
|
|
|
|
|
|
#region bit.ly
|
|
|
|
|
|
|
|
|
|
private void oauth2Bitly_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
BitlyAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Bitly_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
BitlyAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2Bitly_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
Config.BitlyOAuth2Info = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtBitlyDomain_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.BitlyDomain = txtBitlyDomain.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion bit.ly
|
|
|
|
|
|
|
|
|
|
#region Google URL Shortener
|
|
|
|
|
|
|
|
|
|
private void atcGoogleURLShortenerAccountType_AccountTypeChanged(AccountType accountType)
|
|
|
|
|
{
|
|
|
|
|
Config.GoogleURLShortenerAccountType = accountType;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2GoogleURLShortener_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
GoogleURLShortenerAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2GoogleURLShortener_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
GoogleURLShortenerAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2GoogleURLShortener_RefreshButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
GoogleURLShortenerAuthRefresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauth2GoogleURLShortener_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
Config.GoogleURLShortenerOAuth2Info = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Google URL Shortener
|
|
|
|
|
|
|
|
|
|
#region yourls.org
|
|
|
|
|
|
|
|
|
|
private void txtYourlsAPIURL_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.YourlsAPIURL = txtYourlsAPIURL.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtYourlsSignature_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.YourlsSignature = txtYourlsSignature.Text.Trim();
|
|
|
|
|
txtYourlsUsername.Enabled = txtYourlsPassword.Enabled = string.IsNullOrEmpty(Config.YourlsSignature);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtYourlsUsername_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.YourlsUsername = txtYourlsUsername.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtYourlsPassword_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.YourlsPassword = txtYourlsPassword.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion yourls.org
|
|
|
|
|
|
|
|
|
|
#region adf.ly
|
|
|
|
|
|
|
|
|
|
private void txtAdflyAPIKEY_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.AdFlyAPIKEY = txtAdflyAPIKEY.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtAdflyAPIUID_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.AdFlyAPIUID = txtAdflyAPIUID.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void llAdflyLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("https://adf.ly/publisher/tools#tools-api");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion adf.ly
|
|
|
|
|
|
2015-07-21 07:01:57 +12:00
|
|
|
|
#region LnkU.co
|
2015-07-21 02:51:34 +12:00
|
|
|
|
|
2015-07-21 07:01:57 +12:00
|
|
|
|
private void txtLnkUAPIKEY_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.LnkUAPIKEY = txtLnkUAPIKEY.Text;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
2015-07-21 08:21:06 +12:00
|
|
|
|
|
|
|
|
|
#region CoinURL
|
|
|
|
|
|
|
|
|
|
private void txtCoinURLUUID_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.CoinURLUUID = txtCoinURLUUID.Text;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
2015-07-21 02:51:34 +12:00
|
|
|
|
|
2015-07-21 07:01:57 +12:00
|
|
|
|
#endregion URL Shorteners
|
2015-06-08 01:34:33 +12:00
|
|
|
|
|
2015-07-21 07:01:57 +12:00
|
|
|
|
#region Other Uploaders
|
2015-06-08 01:34:33 +12:00
|
|
|
|
|
2015-07-21 07:01:57 +12:00
|
|
|
|
#region Twitter
|
2015-06-08 01:34:33 +12:00
|
|
|
|
|
2015-07-21 07:01:57 +12:00
|
|
|
|
private void btnTwitterAdd_Click(object sender, EventArgs e)
|
2015-06-08 01:34:33 +12:00
|
|
|
|
{
|
|
|
|
|
OAuthInfo oauth = new OAuthInfo();
|
|
|
|
|
Config.TwitterOAuthInfoList.Add(oauth);
|
|
|
|
|
lvTwitterAccounts.Items.Add(oauth.Description);
|
|
|
|
|
lvTwitterAccounts.SelectLast();
|
|
|
|
|
|
|
|
|
|
TwitterUpdateSelected();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnTwitterRemove_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
int selected = lvTwitterAccounts.SelectedIndex;
|
|
|
|
|
|
|
|
|
|
if (selected > -1)
|
|
|
|
|
{
|
|
|
|
|
lvTwitterAccounts.Items.RemoveAt(selected);
|
|
|
|
|
Config.TwitterOAuthInfoList.RemoveAt(selected);
|
|
|
|
|
|
|
|
|
|
if (lvTwitterAccounts.Items.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
lvTwitterAccounts.SelectedIndex = selected >= lvTwitterAccounts.Items.Count ? lvTwitterAccounts.Items.Count - 1 : selected;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TwitterUpdateSelected();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void lvTwitterAccounts_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
TwitterUpdateSelected();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtTwitterDescription_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
OAuthInfo oauth = GetSelectedTwitterAccount();
|
|
|
|
|
|
|
|
|
|
if (oauth != null)
|
|
|
|
|
{
|
|
|
|
|
oauth.Description = txtTwitterDescription.Text;
|
|
|
|
|
lvTwitterAccounts.SelectedItems[0].Text = oauth.Description;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauthTwitter_OpenButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
TwitterAuthOpen();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauthTwitter_CompleteButtonClicked(string code)
|
|
|
|
|
{
|
|
|
|
|
TwitterAuthComplete(code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void oauthTwitter_ClearButtonClicked()
|
|
|
|
|
{
|
|
|
|
|
TwitterAuthClear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbTwitterSkipMessageBox_CheckedChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.TwitterSkipMessageBox = cbTwitterSkipMessageBox.Checked;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtTwitterDefaultMessage_TextChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.TwitterDefaultMessage = txtTwitterDefaultMessage.Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Twitter
|
|
|
|
|
|
|
|
|
|
#region Custom Uploaders
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderAdd_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(txtCustomUploaderName.Text))
|
|
|
|
|
{
|
|
|
|
|
CustomUploaderItem item = GetCustomUploaderFromFields();
|
|
|
|
|
Config.CustomUploadersList.Add(item);
|
|
|
|
|
lbCustomUploaderList.Items.Add(item.Name);
|
|
|
|
|
lbCustomUploaderList.SelectedIndex = lbCustomUploaderList.Items.Count - 1;
|
|
|
|
|
PrepareCustomUploaderList();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderRemove_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (lbCustomUploaderList.SelectedIndex > -1)
|
|
|
|
|
{
|
|
|
|
|
int index = lbCustomUploaderList.SelectedIndex;
|
|
|
|
|
Config.CustomUploadersList.RemoveAt(index);
|
|
|
|
|
lbCustomUploaderList.Items.RemoveAt(index);
|
|
|
|
|
CustomUploaderClear();
|
|
|
|
|
FixSelectedUploader(index);
|
|
|
|
|
PrepareCustomUploaderList();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void FixSelectedUploader(int removedIndex)
|
|
|
|
|
{
|
|
|
|
|
if (Config.CustomImageUploaderSelected == removedIndex) Config.CustomImageUploaderSelected = 0;
|
|
|
|
|
else if (Config.CustomImageUploaderSelected > removedIndex) Config.CustomImageUploaderSelected--;
|
|
|
|
|
|
|
|
|
|
if (Config.CustomTextUploaderSelected == removedIndex) Config.CustomTextUploaderSelected = 0;
|
|
|
|
|
else if (Config.CustomTextUploaderSelected > removedIndex) Config.CustomTextUploaderSelected--;
|
|
|
|
|
|
|
|
|
|
if (Config.CustomFileUploaderSelected == removedIndex) Config.CustomFileUploaderSelected = 0;
|
|
|
|
|
else if (Config.CustomFileUploaderSelected > removedIndex) Config.CustomFileUploaderSelected--;
|
|
|
|
|
|
|
|
|
|
if (Config.CustomURLShortenerSelected == removedIndex) Config.CustomURLShortenerSelected = 0;
|
|
|
|
|
else if (Config.CustomURLShortenerSelected > removedIndex) Config.CustomURLShortenerSelected--;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderUpdate_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
UpdateCustomUploader();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void lbCustomUploaderList_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
int index = lbCustomUploaderList.SelectedIndex;
|
|
|
|
|
|
|
|
|
|
if (index > -1)
|
|
|
|
|
{
|
|
|
|
|
LoadCustomUploader(Config.CustomUploadersList[index]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private object eiCustomUploaders_ExportRequested()
|
|
|
|
|
{
|
|
|
|
|
return GetSelectedCustomUploader();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void eiCustomUploaders_ImportRequested(object obj)
|
|
|
|
|
{
|
|
|
|
|
AddCustomUploader(obj as CustomUploaderItem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbCustomUploaderRequestType_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
txtCustomUploaderFileForm.Enabled = (CustomUploaderRequestType)cbCustomUploaderRequestType.SelectedIndex == CustomUploaderRequestType.POST;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderRegexpAdd_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string regexp = txtCustomUploaderRegexp.Text;
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(regexp))
|
|
|
|
|
{
|
|
|
|
|
lvCustomUploaderRegexps.Items.Add(regexp);
|
|
|
|
|
txtCustomUploaderRegexp.Text = string.Empty;
|
|
|
|
|
txtCustomUploaderRegexp.Focus();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderRegexpRemove_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (lvCustomUploaderRegexps.SelectedItems.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
lvCustomUploaderRegexps.SelectedItems[0].Remove();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderRegexpEdit_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string regexp = txtCustomUploaderRegexp.Text;
|
|
|
|
|
|
|
|
|
|
if (lvCustomUploaderRegexps.SelectedItems.Count > 0 && !string.IsNullOrEmpty(regexp))
|
|
|
|
|
{
|
|
|
|
|
lvCustomUploaderRegexps.SelectedItems[0].Text = regexp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void lvCustomUploaderRegexps_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string regex = string.Empty;
|
|
|
|
|
|
|
|
|
|
if (lvCustomUploaderRegexps.SelectedItems.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
regex = lvCustomUploaderRegexps.SelectedItems[0].Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
txtCustomUploaderRegexp.Text = regex;
|
|
|
|
|
}
|
|
|
|
|
|
2015-06-16 01:59:57 +12:00
|
|
|
|
private void lvCustomUploaderRegexps_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (e.Button == MouseButtons.Left && lvCustomUploaderRegexps.SelectedIndices.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
int selectedIndex = lvCustomUploaderRegexps.SelectedIndices[0];
|
|
|
|
|
string regex = lvCustomUploaderRegexps.Items[selectedIndex].Text;
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(regex))
|
|
|
|
|
{
|
|
|
|
|
Match match = Regex.Match(regex, @"\((?:\?<(.+?)>)?.+?\)");
|
|
|
|
|
|
|
|
|
|
if (match.Success)
|
|
|
|
|
{
|
|
|
|
|
string syntax;
|
|
|
|
|
|
|
|
|
|
if (match.Groups.Count > 1 && !string.IsNullOrEmpty(match.Groups[1].Value))
|
|
|
|
|
{
|
|
|
|
|
syntax = string.Format("${0},{1}$", selectedIndex + 1, match.Groups[1].Value);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
syntax = string.Format("${0},1$", selectedIndex + 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
txtCustomUploaderURL.AppendText(syntax);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-06-08 01:34:33 +12:00
|
|
|
|
private void btnCustomUploaderArgAdd_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string name = txtCustomUploaderArgName.Text;
|
|
|
|
|
string value = txtCustomUploaderArgValue.Text;
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(name))
|
|
|
|
|
{
|
|
|
|
|
lvCustomUploaderArguments.Items.Add(name).SubItems.Add(value);
|
|
|
|
|
txtCustomUploaderArgName.Text = string.Empty;
|
|
|
|
|
txtCustomUploaderArgValue.Text = string.Empty;
|
|
|
|
|
txtCustomUploaderArgName.Focus();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderArgRemove_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (lvCustomUploaderArguments.SelectedItems.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
lvCustomUploaderArguments.SelectedItems[0].Remove();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderArgEdit_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string name = txtCustomUploaderArgName.Text;
|
|
|
|
|
string value = txtCustomUploaderArgValue.Text;
|
|
|
|
|
|
|
|
|
|
if (lvCustomUploaderArguments.SelectedItems.Count > 0 && !string.IsNullOrEmpty(name))
|
|
|
|
|
{
|
|
|
|
|
lvCustomUploaderArguments.SelectedItems[0].Text = name;
|
|
|
|
|
lvCustomUploaderArguments.SelectedItems[0].SubItems[1].Text = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void lvCustomUploaderArguments_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string name = string.Empty;
|
|
|
|
|
string value = string.Empty;
|
|
|
|
|
|
|
|
|
|
if (lvCustomUploaderArguments.SelectedItems.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
name = lvCustomUploaderArguments.SelectedItems[0].Text;
|
|
|
|
|
value = lvCustomUploaderArguments.SelectedItems[0].SubItems[1].Text;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
txtCustomUploaderArgName.Text = name;
|
|
|
|
|
txtCustomUploaderArgValue.Text = value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderClear_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
CustomUploaderClear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbCustomUploaderImageUploader_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomImageUploaderSelected = cbCustomUploaderImageUploader.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbCustomUploaderTextUploader_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomTextUploaderSelected = cbCustomUploaderTextUploader.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbCustomUploaderFileUploader_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomFileUploaderSelected = cbCustomUploaderFileUploader.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void cbCustomUploaderURLShortener_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
Config.CustomURLShortenerSelected = cbCustomUploaderURLShortener.SelectedIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderImageUploaderTest_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
UpdateCustomUploader();
|
|
|
|
|
|
|
|
|
|
if (Config.CustomUploadersList.IsValidIndex(Config.CustomImageUploaderSelected))
|
|
|
|
|
{
|
|
|
|
|
TestCustomUploader(CustomUploaderType.Image, Config.CustomUploadersList[Config.CustomImageUploaderSelected]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderTextUploaderTest_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
UpdateCustomUploader();
|
|
|
|
|
|
|
|
|
|
if (Config.CustomUploadersList.IsValidIndex(Config.CustomTextUploaderSelected))
|
|
|
|
|
{
|
|
|
|
|
TestCustomUploader(CustomUploaderType.Text, Config.CustomUploadersList[Config.CustomTextUploaderSelected]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderFileUploaderTest_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
UpdateCustomUploader();
|
|
|
|
|
|
|
|
|
|
if (Config.CustomUploadersList.IsValidIndex(Config.CustomFileUploaderSelected))
|
|
|
|
|
{
|
|
|
|
|
TestCustomUploader(CustomUploaderType.File, Config.CustomUploadersList[Config.CustomFileUploaderSelected]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderURLShortenerTest_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
UpdateCustomUploader();
|
|
|
|
|
|
|
|
|
|
if (Config.CustomUploadersList.IsValidIndex(Config.CustomURLShortenerSelected))
|
|
|
|
|
{
|
|
|
|
|
TestCustomUploader(CustomUploaderType.URL, Config.CustomUploadersList[Config.CustomURLShortenerSelected]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderHelp_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("https://github.com/ShareX/ShareX/wiki/Custom-Uploader");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderExamples_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL("https://github.com/ShareX/ShareX/wiki/Custom-Uploader-examples");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCustomUploaderShowLastResponse_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
string response = btnCustomUploaderShowLastResponse.Tag as string;
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(response))
|
|
|
|
|
{
|
|
|
|
|
using (ResponseForm form = new ResponseForm(response))
|
|
|
|
|
{
|
|
|
|
|
form.ShowDialog();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txtCustomUploaderLog_LinkClicked(object sender, LinkClickedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
URLHelpers.OpenURL(e.LinkText);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion Custom Uploaders
|
|
|
|
|
|
|
|
|
|
#endregion Other Uploaders
|
|
|
|
|
}
|
2015-06-29 23:38:47 +12:00
|
|
|
|
}
|