public async void StartLogin()
        {
            LoginFlag flag = 0;

            flag |= LoginFlag.Blogger;
            if (ImgChili.Enabled)
            {
                flag |= LoginFlag.ImgChili;
            }
            if (ImgRock.Enabled)
            {
                flag |= LoginFlag.ImgRock;
            }
            if (PixSense.Enabled)
            {
                flag |= LoginFlag.PixSense;
            }
            if (GetMega)
            {
                flag |= LoginFlag.MEGA;
            }
            if (GetRapidgator)
            {
                flag |= LoginFlag.Rapidgator;
            }
            if (GetUploadGIG)
            {
                flag |= LoginFlag.UploadGIG;
            }
            if (Zippyshare.Enabled)
            {
                flag |= LoginFlag.Zippyshare;
            }

            if (await Login(flag))
            {
                await MahDialog.ShowMessage("Login", "Login Success!", MessageDialogStyle.Affirmative);
            }
            else
            {
                await MahDialog.ShowMessage("Login", "Login Failed!", MessageDialogStyle.Affirmative);
            }
        }
        private async Task <bool> Login(LoginFlag flag)
        {
            Message = "";
            try
            {
                var loginTasks = new List <Task>();
                if (!ImgChili.LoggedIn && flag.HasFlag(LoginFlag.ImgChili))
                {
                    loginTasks.Add(ImgChili.LogIn());
                }
                if (!ImgRock.LoggedIn && flag.HasFlag(LoginFlag.ImgRock))
                {
                    loginTasks.Add(ImgRock.LogIn());
                }
                if (!PixSense.LoggedIn && flag.HasFlag(LoginFlag.PixSense))
                {
                    loginTasks.Add(PixSense.LogIn());
                }

                Task <bool> megaLoginTask = null;
                if (!MegaLoggedIn && flag.HasFlag(LoginFlag.MEGA))
                {
                    megaLoginTask = MEGA.LogIn();
                    loginTasks.Add(megaLoginTask);
                }

                Task <bool> rapidgatorLoginTask = null;
                if (!RapidgatorLoggedIn && flag.HasFlag(LoginFlag.Rapidgator))
                {
                    rapidgatorLoginTask = Rapidgator.LogIn();
                    loginTasks.Add(rapidgatorLoginTask);
                }

                Task <bool> uploadGIGLoginTask = null;
                if (!UploadGIGLoggedIn && flag.HasFlag(LoginFlag.UploadGIG))
                {
                    uploadGIGLoginTask = UploadGIG.LogIn();
                    loginTasks.Add(uploadGIGLoginTask);
                }

                if (!Zippyshare.LoggedIn && flag.HasFlag(LoginFlag.Zippyshare))
                {
                    loginTasks.Add(Zippyshare.LogIn());
                }


                Task <bool> blogLoginTask = null;
                if (!BloggerLoggedIn && flag.HasFlag(LoginFlag.Blogger))
                {
                    blogLoginTask = Blogger.LogIn();
                    loginTasks.Add(blogLoginTask);
                }

                await Task.WhenAll(loginTasks);

                if (megaLoginTask != null)
                {
                    MegaLoggedIn = await megaLoginTask;
                }
                if (rapidgatorLoginTask != null)
                {
                    RapidgatorLoggedIn = await rapidgatorLoginTask;
                }
                if (uploadGIGLoginTask != null)
                {
                    UploadGIGLoggedIn = await uploadGIGLoginTask;
                }
                if (blogLoginTask != null)
                {
                    BloggerLoggedIn = await blogLoginTask;
                }
            }
            catch (Exception ex)
            {
                Message = ex.Message;
                Logger.ErrorException(ex.Message, ex);
            }

            Message = "Login done";

            var ret = true;

            if (flag.HasFlag(LoginFlag.ImgChili))
            {
                ret &= ImgChili.LoggedIn;
            }
            if (flag.HasFlag(LoginFlag.ImgRock))
            {
                ret &= ImgRock.LoggedIn;
            }
            if (flag.HasFlag(LoginFlag.PixSense))
            {
                ret &= PixSense.LoggedIn;
            }
            if (flag.HasFlag(LoginFlag.MEGA))
            {
                ret &= MegaLoggedIn;
            }
            if (flag.HasFlag(LoginFlag.Rapidgator))
            {
                ret &= RapidgatorLoggedIn;
            }
            if (flag.HasFlag(LoginFlag.UploadGIG))
            {
                ret &= UploadGIGLoggedIn;
            }
            if (flag.HasFlag(LoginFlag.Zippyshare))
            {
                ret &= Zippyshare.LoggedIn;
            }
            if (flag.HasFlag(LoginFlag.Blogger))
            {
                ret &= BloggerLoggedIn;
            }
            CanUpload = ret;
            return(ret);
        }