#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright (C) 2008-2014 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 .
*/
#endregion License Information (GPL v3)
using CG.Web.MegaApiClient;
using HelpersLib;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using UploadersLib.FileUploaders;
using UploadersLib.ImageUploaders;
namespace UploadersLib
{
public partial class UploadersConfigForm : Form
{
public UploadersConfig Config { get; private set; }
public UploadersConfigForm(UploadersConfig uploadersConfig)
{
InitializeComponent();
Icon = ShareXResources.Icon;
Config = uploadersConfig;
ControlSettings();
CreateUserControlEvents();
LoadSettings(uploadersConfig);
Text = "ShareX - Outputs Configuration" + (string.IsNullOrEmpty(uploadersConfig.FilePath) ? string.Empty : " - " + uploadersConfig.FilePath);
}
private void UploadersConfigForm_FormClosed(object sender, FormClosedEventArgs e)
{
DialogResult = DialogResult.OK;
}
private void UploadersConfigForm_Resize(object sender, EventArgs e)
{
Refresh();
}
#region Image Uploaders
#region ImageShack
private void atcImageShackAccountType_AccountTypeChanged(AccountType accountType)
{
Config.ImageShackSettings.AccountType = accountType;
}
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("Login successful.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Login failed.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
DebugHelper.WriteException(ex);
MessageBox.Show(ex.ToString(), "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))
{
Helpers.LoadBrowserAsync("https://imageshack.com/user/" + Config.ImageShackSettings.Username);
}
else
{
txtImageShackUsername.Focus();
}
}
private void btnImageShackOpenMyImages_Click(object sender, EventArgs e)
{
Helpers.LoadBrowserAsync("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("Login successful.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Login failed.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
DebugHelper.WriteException(ex);
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void btnTinyPicOpenMyImages_Click(object sender, EventArgs e)
{
Helpers.LoadBrowserAsync("http://tinypic.com/yourstuff.php");
}
#endregion TinyPic
#region Imgur
private void atcImgurAccountType_AccountTypeChanged(AccountType accountType)
{
Config.ImgurAccountType = accountType;
}
private void cbImgurThumbnailType_SelectedIndexChanged(object sender, EventArgs e)
{
Config.ImgurThumbnailType = (ImgurThumbnailType)cbImgurThumbnailType.SelectedIndex;
}
private void txtImgurAlbumID_TextChanged(object sender, EventArgs e)
{
Config.ImgurAlbumID = txtImgurAlbumID.Text;
}
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)
{
ImgurAlbumData album = (ImgurAlbumData)lvi.Tag;
txtImgurAlbumID.Text = album.id;
}
}
}
private void oauth2Imgur_OpenButtonClicked()
{
ImgurAuthOpen();
}
private void oauth2Imgur_CompleteButtonClicked(string code)
{
ImgurAuthComplete(code);
}
private void oauth2Imgur_RefreshButtonClicked()
{
ImgurAuthRefresh();
}
#endregion Imgur
#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_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 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 TwitPic
private void cboTwitPicThumbnailMode_SelectedIndexChanged(object sender, EventArgs e)
{
Config.TwitPicThumbnailMode = (TwitPicThumbnailType)cboTwitPicThumbnailMode.SelectedIndex;
}
private void chkTwitPicShowFull_CheckedChanged(object sender, EventArgs e)
{
Config.TwitPicShowFull = chkTwitPicShowFull.Checked;
}
#endregion TwitPic
#region YFrog
private void txtYFrogUsername_TextChanged(object sender, EventArgs e)
{
Config.YFrogUsername = txtYFrogUsername.Text;
}
private void txtYFrogPassword_TextChanged(object sender, EventArgs e)
{
Config.YFrogPassword = txtYFrogPassword.Text;
}
#endregion YFrog
#endregion Image Uploaders
#region Text Uploaders
#region Pastebin
private void btnPastebinLogin_Click(object sender, EventArgs e)
{
PastebinLogin();
}
#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 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
#endregion Text Uploaders
#region File Uploaders
#region Dropbox
private void pbDropboxLogo_Click(object sender, EventArgs e)
{
Helpers.LoadBrowserAsync("https://www.dropbox.com");
}
private void btnDropboxRegister_Click(object sender, EventArgs e)
{
Helpers.LoadBrowserAsync("http://db.tt/CtPYXvu");
}
private void btnDropboxAuthOpen_Click(object sender, EventArgs e)
{
DropboxAuthOpen();
}
private void btnDropboxAuthComplete_Click(object sender, EventArgs e)
{
DropboxAuthComplete();
}
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 Google Drive
private void oauth2GoogleDrive_OpenButtonClicked()
{
GoogleDriveAuthOpen();
}
private void oauth2GoogleDrive_CompleteButtonClicked(string code)
{
GoogleDriveAuthComplete(code);
}
private void oauth2GoogleDrive_RefreshButtonClicked()
{
GoogleDriveAuthRefresh();
}
private void cbGoogleDriveIsPublic_CheckedChanged(object sender, EventArgs e)
{
Config.GoogleDriveIsPublic = cbGoogleDriveIsPublic.Checked;
}
#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 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 = "Selected folder: " + file.name;
}
}
}
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 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 void btnFTPImport_Click(object sender, EventArgs e)
{
FTPAccountsImport();
}
private void btnFTPExport_Click(object sender, EventArgs e)
{
FTPAccountsExport();
}
#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 RapidShare
private void txtRapidShareUsername_TextChanged(object sender, EventArgs e)
{
Config.RapidShareUsername = txtRapidShareUsername.Text;
}
private void txtRapidSharePassword_TextChanged(object sender, EventArgs e)
{
Config.RapidSharePassword = txtRapidSharePassword.Text;
}
private void txtRapidShareFolderID_TextChanged(object sender, EventArgs e)
{
Config.RapidShareFolderID = txtRapidShareFolderID.Text;
}
private void btnRapidShareRefreshFolders_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Config.RapidShareUsername) || string.IsNullOrEmpty(Config.RapidSharePassword))
{
MessageBox.Show("RapidShare account username or password is empty.", "RapidShare refresh folders list failed", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
tvRapidShareFolders.Nodes.Clear();
RapidShareFolderInfo root = new RapidShare(Config.RapidShareUsername, Config.RapidSharePassword).GetRootFolderWithChilds();
RapidShareRecursiveAddChilds(tvRapidShareFolders.Nodes, root);
tvRapidShareFolders.ExpandAll();
}
}
private void RapidShareRecursiveAddChilds(TreeNodeCollection treeNodes, RapidShareFolderInfo folderInfo)
{
TreeNode treeNode = treeNodes.Add(folderInfo.FolderName);
treeNode.Tag = folderInfo;
foreach (RapidShareFolderInfo folderInfo2 in folderInfo.ChildFolders)
{
RapidShareRecursiveAddChilds(treeNode.Nodes, folderInfo2);
}
}
private void tvRapidShareFolders_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Node != null && e.Node.Tag is RapidShareFolderInfo)
{
RapidShareFolderInfo folderInfo = (RapidShareFolderInfo)e.Node.Tag;
txtRapidShareFolderID.Text = folderInfo.RealFolderID;
}
}
#endregion RapidShare
#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_RefreshButtonClicked()
{
MessageBox.Show("Refresh authorization is not supported.", Application.ProductName, 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 = "Not configured";
lblMegaStatus.ForeColor = NokColor;
}
else
{
cbMegaFolder.Items.Clear();
Mega mega = new Mega(Config.MegaAuthInfos);
if (!tryLogin || mega.TryLogin())
{
lblMegaStatus.Text = "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("[Click refresh folders]");
cbMegaFolder.SelectedIndex = 0;
}
}
else
{
lblMegaStatus.Text = "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)
{
Helpers.LoadBrowserAsync("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)
{
Helpers.LoadBrowserAsync("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)
{
Config.AmazonS3Settings.Endpoint = cbAmazonS3Endpoint.Text;
}
private void cbAmazonS3Endpoint_TextChanged(object sender, EventArgs e)
{
Config.AmazonS3Settings.Endpoint = cbAmazonS3Endpoint.Text;
}
private void txtAmazonS3BucketName_TextChanged(object sender, EventArgs e)
{
Config.AmazonS3Settings.Bucket = txtAmazonS3BucketName.Text;
}
private void btnAmazonS3BucketNameOpen_Click(object sender, EventArgs e)
{
Helpers.LoadBrowserAsync("https://console.aws.amazon.com/s3/home");
}
private void txtAmazonS3ObjectPrefix_TextChanged(object sender, EventArgs e)
{
Config.AmazonS3Settings.ObjectPrefix = txtAmazonS3ObjectPrefix.Text;
}
private void cbAmazonS3UseRRS_CheckedChanged(object sender, EventArgs e)
{
Config.AmazonS3Settings.UseReducedRedundancyStorage = cbAmazonS3UseRRS.Checked;
}
private void cbAmazonS3CustomCNAME_CheckedChanged(object sender, EventArgs e)
{
Config.AmazonS3Settings.UseCustomCNAME = cbAmazonS3CustomCNAME.Checked;
}
#endregion Amazon S3
#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
#endregion File Uploaders
#region URL Shorteners
#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();
}
#endregion Google URL Shortener
#region bit.ly
private void oauth2Bitly_OpenButtonClicked()
{
BitlyAuthOpen();
}
private void oauth2Bitly_CompleteButtonClicked(string code)
{
BitlyAuthComplete(code);
}
#endregion bit.ly
#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
#endregion URL Shorteners
#region Other Services
private void btnTwitterLogin_Click(object sender, EventArgs e)
{
TwitterLogin();
}
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 Other Services
#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 void btnCustomUploaderExport_Click(object sender, EventArgs e)
{
ExportCustomUploader();
}
private void btnCustomUploaderImport_Click(object sender, EventArgs e)
{
ImportCustomUploader();
}
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;
}
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))
{
btnCustomUploaderImageUploaderTest.Enabled = btnCustomUploaderTextUploaderTest.Enabled =
btnCustomUploaderFileUploaderTest.Enabled = btnCustomUploaderURLShortenerTest.Enabled = false;
TestCustomUploader(CustomUploaderType.Image, Config.CustomUploadersList[Config.CustomImageUploaderSelected]);
}
}
private void btnCustomUploaderTextUploaderTest_Click(object sender, EventArgs e)
{
UpdateCustomUploader();
if (Config.CustomUploadersList.IsValidIndex(Config.CustomTextUploaderSelected))
{
btnCustomUploaderImageUploaderTest.Enabled = btnCustomUploaderTextUploaderTest.Enabled =
btnCustomUploaderFileUploaderTest.Enabled = btnCustomUploaderURLShortenerTest.Enabled = false;
TestCustomUploader(CustomUploaderType.Text, Config.CustomUploadersList[Config.CustomTextUploaderSelected]);
}
}
private void btnCustomUploaderFileUploaderTest_Click(object sender, EventArgs e)
{
UpdateCustomUploader();
if (Config.CustomUploadersList.IsValidIndex(Config.CustomFileUploaderSelected))
{
btnCustomUploaderImageUploaderTest.Enabled = btnCustomUploaderTextUploaderTest.Enabled =
btnCustomUploaderFileUploaderTest.Enabled = btnCustomUploaderURLShortenerTest.Enabled = false;
TestCustomUploader(CustomUploaderType.File, Config.CustomUploadersList[Config.CustomFileUploaderSelected]);
}
}
private void btnCustomUploaderURLShortenerTest_Click(object sender, EventArgs e)
{
UpdateCustomUploader();
if (Config.CustomUploadersList.IsValidIndex(Config.CustomURLShortenerSelected))
{
btnCustomUploaderImageUploaderTest.Enabled = btnCustomUploaderTextUploaderTest.Enabled =
btnCustomUploaderFileUploaderTest.Enabled = btnCustomUploaderURLShortenerTest.Enabled = false;
TestCustomUploader(CustomUploaderType.URL, Config.CustomUploadersList[Config.CustomURLShortenerSelected]);
}
}
private void btnCustomUploaderHelp_Click(object sender, EventArgs e)
{
Helpers.LoadBrowserAsync(Links.URL_DOCS_CUSTOM_UPLOADER);
}
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)
{
Helpers.LoadBrowserAsync(e.LinkText);
}
#endregion Custom Uploaders
}
}