private void ShowOwncloudDialog(Activity activity, Util.FileSelectedHandler onStartBrowse, Action onCancel, string defaultPath)
        {
#if !EXCLUDE_JAVAFILESTORAGE && !NoNet
            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            View dlgContents            = activity.LayoutInflater.Inflate(Resource.Layout.owncloudcredentials, null);
            builder.SetView(dlgContents);
            builder.SetPositiveButton(Android.Resource.String.Ok,
                                      (sender, args) =>
            {
                string host = dlgContents.FindViewById <EditText>(Resource.Id.owncloud_url).Text;

                string user     = dlgContents.FindViewById <EditText>(Resource.Id.http_user).Text;
                string password = dlgContents.FindViewById <EditText>(Resource.Id.http_password).Text;

                string scheme = defaultPath.Substring(0, defaultPath.IndexOf(_schemeSeparator, StringComparison.Ordinal));
                if (host.Contains(_schemeSeparator) == false)
                {
                    host = scheme + _schemeSeparator + host;
                }
                string httpPath = new Keepass2android.Javafilestorage.WebDavStorage(null).BuildFullPath(WebDavFileStorage.Owncloud2Webdav(host), user,
                                                                                                        password);
                onStartBrowse(httpPath);
            });
            EventHandler <DialogClickEventArgs> evtH = new EventHandler <DialogClickEventArgs>((sender, e) => onCancel());

            builder.SetNegativeButton(Android.Resource.String.Cancel, evtH);
            builder.SetTitle(activity.GetString(Resource.String.enter_owncloud_login_title));
            Dialog dialog = builder.Create();

            dialog.Show();
#endif
        }
Example #2
0
        private void ShowSftpDialog(Activity activity, Util.FileSelectedHandler onStartBrowse, Action onCancel)
        {
#if !EXCLUDE_JAVAFILESTORAGE && !NoNet
            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            View dlgContents            = activity.LayoutInflater.Inflate(Resource.Layout.sftpcredentials, null);
            builder.SetView(dlgContents);
            builder.SetPositiveButton(Android.Resource.String.Ok,
                                      (sender, args) =>
            {
                string host     = dlgContents.FindViewById <EditText>(Resource.Id.sftp_host).Text;
                string portText = dlgContents.FindViewById <EditText>(Resource.Id.sftp_port).Text;
                int port        = Keepass2android.Javafilestorage.SftpStorage.DefaultSftpPort;
                if (!string.IsNullOrEmpty(portText))
                {
                    int.TryParse(portText, out port);
                }
                string user        = dlgContents.FindViewById <EditText>(Resource.Id.sftp_user).Text;
                string password    = dlgContents.FindViewById <EditText>(Resource.Id.sftp_password).Text;
                string initialPath = dlgContents.FindViewById <EditText>(Resource.Id.sftp_initial_dir).Text;
                string sftpPath    = new Keepass2android.Javafilestorage.SftpStorage().BuildFullPath(host, port, initialPath, user,
                                                                                                     password);
                onStartBrowse(sftpPath);
            });
            EventHandler <DialogClickEventArgs> evtH = new EventHandler <DialogClickEventArgs>((sender, e) => onCancel());

            builder.SetNegativeButton(Android.Resource.String.Cancel, evtH);
            builder.SetTitle(activity.GetString(Resource.String.enter_sftp_login_title));
            Dialog dialog = builder.Create();

            dialog.Show();
#endif
        }
Example #3
0
        private void ShowFtpDialog(Activity activity, Util.FileSelectedHandler onStartBrowse, Action onCancel)
        {
#if !NoNet
            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            View dlgContents            = activity.LayoutInflater.Inflate(Resource.Layout.ftpcredentials, null);
            builder.SetView(dlgContents);
            builder.SetPositiveButton(Android.Resource.String.Ok,
                                      (sender, args) =>
            {
                string host     = dlgContents.FindViewById <EditText>(Resource.Id.ftp_host).Text;
                string portText = dlgContents.FindViewById <EditText>(Resource.Id.ftp_port).Text;
                FtpEncryptionMode encryption =
                    (FtpEncryptionMode)dlgContents.FindViewById <Spinner>(Resource.Id.ftp_encryption).SelectedItemPosition;
                int port = NetFtpFileStorage.GetDefaultPort(encryption);
                if (!string.IsNullOrEmpty(portText))
                {
                    int.TryParse(portText, out port);
                }
                string user        = dlgContents.FindViewById <EditText>(Resource.Id.ftp_user).Text;
                string password    = dlgContents.FindViewById <EditText>(Resource.Id.ftp_password).Text;
                string initialPath = dlgContents.FindViewById <EditText>(Resource.Id.ftp_initial_dir).Text;
                string ftpPath     = new NetFtpFileStorage(_activity, App.Kp2a).BuildFullPath(host, port, initialPath, user,
                                                                                              password, encryption);
                onStartBrowse(ftpPath);
            });
            EventHandler <DialogClickEventArgs> evtH = new EventHandler <DialogClickEventArgs>((sender, e) => onCancel());

            builder.SetNegativeButton(Android.Resource.String.Cancel, evtH);
            builder.SetTitle(activity.GetString(Resource.String.enter_ftp_login_title));
            Dialog dialog = builder.Create();

            dialog.Show();
#endif
        }
Example #4
0
        private void ShowMegaDialog(Activity activity, Util.FileSelectedHandler onStartBrowse, Action onCancel, string defaultPath)
        {
#if !NoNet
            var settings = MegaFileStorage.GetAccountSettings(activity);
            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            View dlgContents            = activity.LayoutInflater.Inflate(Resource.Layout.megacredentials, null);
            if (!defaultPath.EndsWith(_schemeSeparator))
            {
                string user     = "";
                string password = "";
                if (!defaultPath.EndsWith(_schemeSeparator))
                {
                    user = MegaFileStorage.GetAccount(defaultPath);
                    if (!settings.PasswordByUsername.TryGetValue(user, out password))
                    {
                        password = "";
                    }
                    dlgContents.FindViewById <EditText>(Resource.Id.mega_user).Enabled = false;
                }
                dlgContents.FindViewById <EditText>(Resource.Id.mega_user).Text     = user;
                dlgContents.FindViewById <EditText>(Resource.Id.mega_password).Text = password;
            }

            var userView = ((AutoCompleteTextView)dlgContents.FindViewById(Resource.Id.mega_user));
            userView.Adapter = new ArrayAdapter(activity, Android.Resource.Layout.SimpleListItem1, Android.Resource.Id.Text1, settings.PasswordByUsername.Keys.ToArray());

            userView.TextChanged += (sender, args) =>
            {
                if (userView.Text != null && settings.PasswordByUsername.TryGetValue(userView.Text, out string pwd))
                {
                    dlgContents.FindViewById <EditText>(Resource.Id.mega_password).Text = pwd;
                }
            };
            builder.SetCancelable(false);
            builder.SetView(dlgContents);
            builder.SetPositiveButton(Android.Resource.String.Ok,
                                      (sender, args) =>
            {
                string user     = dlgContents.FindViewById <EditText>(Resource.Id.mega_user).Text;
                string password = dlgContents.FindViewById <EditText>(Resource.Id.mega_password).Text;
                //store the credentials in the mega credentials store:


                settings.PasswordByUsername[user] = password;

                MegaFileStorage.UpdateAccountSettings(settings, activity);

                onStartBrowse(MegaFileStorage.ProtocolId + "://" + user);
            });
            EventHandler <DialogClickEventArgs> evtH = new EventHandler <DialogClickEventArgs>((sender, e) => onCancel());

            builder.SetNegativeButton(Android.Resource.String.Cancel, evtH);
            builder.SetTitle(activity.GetString(Resource.String.enter_mega_login_title));
            Dialog dialog = builder.Create();

            dialog.Show();
#endif
        }
        private void ShowFtpDialog(Activity activity, Util.FileSelectedHandler onStartBrowse, Action onCancel, string defaultPath)
        {
#if !NoNet
            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            View dlgContents            = activity.LayoutInflater.Inflate(Resource.Layout.ftpcredentials, null);
            if (!defaultPath.EndsWith(_schemeSeparator))
            {
                var connection = NetFtpFileStorage.ConnectionSettings.FromIoc(IOConnectionInfo.FromPath(defaultPath));
                dlgContents.FindViewById <EditText>(Resource.Id.ftp_user).Text     = connection.Username;
                dlgContents.FindViewById <EditText>(Resource.Id.ftp_password).Text = connection.Password;
                dlgContents.FindViewById <Spinner>(Resource.Id.ftp_encryption).SetSelection((int)connection.EncryptionMode);

                var    uri          = NetFtpFileStorage.IocToUri(IOConnectionInfo.FromPath(defaultPath));
                string pathAndQuery = uri.PathAndQuery;

                var host      = uri.Host;
                var localPath = pathAndQuery;


                if (!uri.IsDefaultPort)
                {
                    dlgContents.FindViewById <EditText>(Resource.Id.ftp_port).Text = uri.Port.ToString();
                }
                dlgContents.FindViewById <EditText>(Resource.Id.ftp_host).Text        = host;
                dlgContents.FindViewById <EditText>(Resource.Id.ftp_initial_dir).Text = localPath;
            }
            builder.SetView(dlgContents);
            builder.SetPositiveButton(Android.Resource.String.Ok,
                                      (sender, args) =>
            {
                string host     = dlgContents.FindViewById <EditText>(Resource.Id.ftp_host).Text;
                string portText = dlgContents.FindViewById <EditText>(Resource.Id.ftp_port).Text;
                FtpEncryptionMode encryption =
                    (FtpEncryptionMode)dlgContents.FindViewById <Spinner>(Resource.Id.ftp_encryption).SelectedItemPosition;
                int port = NetFtpFileStorage.GetDefaultPort(encryption);
                if (!string.IsNullOrEmpty(portText))
                {
                    int.TryParse(portText, out port);
                }
                string user        = dlgContents.FindViewById <EditText>(Resource.Id.ftp_user).Text;
                string password    = dlgContents.FindViewById <EditText>(Resource.Id.ftp_password).Text;
                string initialPath = dlgContents.FindViewById <EditText>(Resource.Id.ftp_initial_dir).Text;
                string ftpPath     = new NetFtpFileStorage(_activity, App.Kp2a).BuildFullPath(host, port, initialPath, user,
                                                                                              password, encryption);
                onStartBrowse(ftpPath);
            });
            EventHandler <DialogClickEventArgs> evtH = new EventHandler <DialogClickEventArgs>((sender, e) => onCancel());

            builder.SetNegativeButton(Android.Resource.String.Cancel, evtH);
            builder.SetTitle(activity.GetString(Resource.String.enter_ftp_login_title));
            Dialog dialog = builder.Create();

            dialog.Show();
#endif
        }
        private void ShowSftpDialog(Activity activity, Util.FileSelectedHandler onStartBrowse, Action onCancel, string defaultPath)
        {
#if !EXCLUDE_JAVAFILESTORAGE && !NoNet
            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            View dlgContents            = activity.LayoutInflater.Inflate(Resource.Layout.sftpcredentials, null);

            var spinner = dlgContents.FindViewById <Spinner>(Resource.Id.sftp_auth_mode_spinner);
            dlgContents.FindViewById <Button>(Resource.Id.send_public_key_button).Click += (sender, args) =>
            {
                var    fileStorage  = new Keepass2android.Javafilestorage.SftpStorage(activity.ApplicationContext);
                string pub_filename = fileStorage.CreateKeyPair();

                Intent sendIntent = new Intent();
                sendIntent.SetAction(Intent.ActionSend);
                sendIntent.PutExtra(Intent.ExtraText, System.IO.File.ReadAllText(pub_filename));

                sendIntent.PutExtra(Intent.ExtraSubject, "Keepass2Android sftp public key");
                sendIntent.SetType("text/plain");
                activity.StartActivity(Intent.CreateChooser(sendIntent, "Send public key to..."));
            };


            spinner.ItemSelected += (sender, args) =>
            {
                if (spinner.SelectedItemPosition == 0)
                {
                    dlgContents.FindViewById <EditText>(Resource.Id.sftp_password).Visibility        = ViewStates.Visible;
                    dlgContents.FindViewById <Button>(Resource.Id.send_public_key_button).Visibility = ViewStates.Gone;
                }
                else
                {
                    dlgContents.FindViewById <EditText>(Resource.Id.sftp_password).Visibility        = ViewStates.Gone;
                    dlgContents.FindViewById <Button>(Resource.Id.send_public_key_button).Visibility = ViewStates.Visible;
                }
            };

            if (!defaultPath.EndsWith(_schemeSeparator))
            {
                var fileStorage = new Keepass2android.Javafilestorage.SftpStorage(activity.ApplicationContext);
                SftpStorage.ConnectionInfo ci = fileStorage.SplitStringToConnectionInfo(defaultPath);
                dlgContents.FindViewById <EditText>(Resource.Id.sftp_host).Text        = ci.Host;
                dlgContents.FindViewById <EditText>(Resource.Id.sftp_port).Text        = ci.Port.ToString();
                dlgContents.FindViewById <EditText>(Resource.Id.sftp_user).Text        = ci.Username;
                dlgContents.FindViewById <EditText>(Resource.Id.sftp_password).Text    = ci.Password;
                dlgContents.FindViewById <EditText>(Resource.Id.sftp_initial_dir).Text = ci.LocalPath;
                if (string.IsNullOrEmpty(ci.Password))
                {
                    spinner.SetSelection(1);
                }
            }

            builder.SetView(dlgContents);
            builder.SetPositiveButton(Android.Resource.String.Ok,
                                      (sender, args) =>
            {
                string host     = dlgContents.FindViewById <EditText>(Resource.Id.sftp_host).Text;
                string portText = dlgContents.FindViewById <EditText>(Resource.Id.sftp_port).Text;
                int port        = Keepass2android.Javafilestorage.SftpStorage.DefaultSftpPort;
                if (!string.IsNullOrEmpty(portText))
                {
                    int.TryParse(portText, out port);
                }
                string user        = dlgContents.FindViewById <EditText>(Resource.Id.sftp_user).Text;
                string password    = dlgContents.FindViewById <EditText>(Resource.Id.sftp_password).Text;
                string initialPath = dlgContents.FindViewById <EditText>(Resource.Id.sftp_initial_dir).Text;
                if (string.IsNullOrEmpty(initialPath))
                {
                    initialPath = "/";
                }
                string sftpPath = new Keepass2android.Javafilestorage.SftpStorage(activity.ApplicationContext).BuildFullPath(host, port, initialPath, user,
                                                                                                                             password);
                onStartBrowse(sftpPath);
            });
            EventHandler <DialogClickEventArgs> evtH = new EventHandler <DialogClickEventArgs>((sender, e) => onCancel());

            builder.SetNegativeButton(Android.Resource.String.Cancel, evtH);
            builder.SetTitle(activity.GetString(Resource.String.enter_sftp_login_title));
            Dialog dialog = builder.Create();

            dialog.Show();
#endif
        }