/// <summary>
        /// Aktualisiert einen Eintrag oder fügt einen neuen hinzu
        /// </summary>
        /// <param name="entry">Der zu speichernde Eintrag</param>
        /// <param name="adding">Angabe, ob ein neuer hinzugefügt werden soll oder nicht</param>
        public static void UpdateEntry(SqliteConnectionManager connectionManager, RdpFolderStructureEntry entry, bool adding = false)
        {
            //Prüfen, dass nix null ist
            if (connectionManager == null)
            {
                throw new ArgumentNullException(nameof(connectionManager));
            }
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }

            string sqlc = ""; //Der SQL-Befehl, der ausgeführt werden soll

            if (adding)       //Es soll ein Insert-Befehl ausgeführt werden
            {
                //Befehl erstellen
                sqlc += "insert into " + TABLE_CONNECTIONS + " (ParentId, Name, Type, Bemerkung";
                if (entry.Type == 0)
                {
                    sqlc += ", Hostname, Username, Password";
                }
                sqlc += ") values (" + entry.ParentId.ToString() + ", '" + entry.Caption + "', " + entry.Type.ToString() + ", '" + entry.Bemerkung + "'";
                if (entry.Type == 0)
                {
                    RdpFolderStructureRdpEntry t_rdpentry = (RdpFolderStructureRdpEntry)entry;
                    sqlc += ", '" + t_rdpentry.HostName + "', '" + t_rdpentry.UserName + "', '" + t_rdpentry.Password + "'";
                }
                sqlc += ");";
            }
            else //Es soll ein Update-Befehl ausgeführt werden
            {
                //Befehl erstellen
                sqlc += "update " + TABLE_CONNECTIONS + " set ParentId=" + entry.ParentId.ToString() + ", Name='" + entry.Caption + "', Type=" + entry.Type.ToString();
                sqlc += ", Bemerkung='" + entry.Bemerkung + "'";
                if (entry.Type == 0)
                {
                    RdpFolderStructureRdpEntry t_rdpentry = (RdpFolderStructureRdpEntry)entry;
                    sqlc += ", Hostname='" + t_rdpentry.HostName + "', Username='******', Password='******'";
                }
                sqlc += " where Id=" + entry.Id.ToString() + ";";
            }

            //Befehl ausführen
            connectionManager.ExecuteSql(sqlc); //Befehl ausführen

            //Wenn es ein Add-Vorgang war, dann soll dem Eintrag noch die Id gegeben werden

            /*if (adding)
             * {
             *  /*SqliteDataReader t_r = connectionManager.GetSqlResult("Select Max(Id) as MaxId from " + TABLE_CONNECTIONS);
             *  if (t_r.HasRows) //Nur wenn Zeilen vorhanden sind, bringt das ganze was
             *  {
             *      t_r.Read();
             *      entry.Id = Convert.ToInt32(t_r["MaxId"]);
             *  }
             *  else
             *      entry.Id = -1; //Damit das Programm damit einen Fehler feststellt
             * }*/
        }
        /// <summary>
        /// Gibt eine Liste aller Einträge zurück
        /// </summary>
        /// <param name="connectionManager">Der ConnectionManager für die Datenbankverbindung</param>
        /// <returns></returns>
        public static List <RdpFolderStructureEntry> GetEntries(SqliteConnectionManager connectionManager)
        {
            //Wenn Parameter null ist, direkt eine ArgumentNullException zurückgeben
            if (connectionManager == null)
            {
                throw new ArgumentNullException(nameof(connectionManager));
            }

            //Die Daten per DataReader herunterladen
            SqliteDataReader reader = connectionManager.GetSqlResult("Select * from " + TABLE_CONNECTIONS + " order by Name");

            //Mit einer If prüfen, ob Rows im Reader erhalten sind. Wenn nicht, direkt zum Ende der Methode gehen
            if (reader.HasRows)
            {
                //Die einzelnen Zeilen lesen und in eine Liste eintragen
                List <RdpFolderStructureEntry> t_lentries = new List <RdpFolderStructureEntry>(); //Liste wird erstellt

                while (reader.Read())                                                             //Solange noch Zeilen existieren, weiterlesen
                {
                    //Mit einer If-Abfrage anhand des Typs arbeiten
                    if (Convert.ToInt32(reader["Type"]) == 0)
                    {
                        //Daten speichern
                        RdpFolderStructureRdpEntry entry = new RdpFolderStructureRdpEntry();
                        entry.Id        = Convert.ToInt32(reader["Id"]);
                        entry.ParentId  = Convert.ToInt32(reader["ParentId"]);
                        entry.Caption   = reader["Name"].ToString();
                        entry.Type      = Convert.ToInt32(reader["Type"]);
                        entry.Bemerkung = reader["Bemerkung"].ToString();
                        entry.HostName  = reader["Hostname"].ToString();
                        entry.UserName  = reader["Username"].ToString();
                        entry.Password  = reader["Password"].ToString();
                        entry.PingHost  = Convert.ToBoolean(Convert.ToInt32(reader["PingHost"]));

                        //Eintrag der Liste hinzufügen
                        t_lentries.Add(entry);
                    }
                    else if (Convert.ToInt32(reader["Type"]) == 1)
                    {
                        //Daten speichern
                        RdpFolderStructureEntry entry = new RdpFolderStructureEntry();
                        entry.Id        = Convert.ToInt32(reader["Id"]);
                        entry.ParentId  = Convert.ToInt32(reader["ParentId"]);
                        entry.Caption   = reader["Name"].ToString();
                        entry.Type      = Convert.ToInt32(reader["Type"]);
                        entry.Bemerkung = reader["Bemerkung"].ToString();

                        //Eintrag der Liste hinzufügen
                        t_lentries.Add(entry);
                    }
                }
                //Liste zurückgeben
                return(t_lentries);
            }
            //null zurückgeben
            return(null);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Event-Methode:
        /// Erlaubt das Hinzufügen eines neue Eintrags
        /// </summary>
        private void btnadd_Click(object sender, EventArgs e)
        {
            //Dialog zur Auswahl einer Eintragsoption öffnen
            dlgrdplistnewelement dlg = new dlgrdplistnewelement();

            dlg.ShowDialog();
            if (dlg.DialogResultId == 0)
            {
                return;                          //wenn nichts ausgewählt wurde, hier beenden
            }
            //Anhand des Ergebnisses weiterarbeiten
            if (dlg.DialogResultId == 1) //Ein neuer Ordner soll erstellt werden
            {
                frmfolderentry frm = new frmfolderentry();
                frm.ShowDialog();
                if (frm.FolderData != null) //Nur wenn es NICHT leer ist, darf die Methode fortgesetzt werden
                {
                    //RdpFolderStructureEntry erstellen
                    RdpFolderStructureEntry re = frm.FolderData;
                    re.ParentId = m_actualid;
                    re.Type     = 1; //Für Ordner

                    //Eintrag speichern
                    SqliteDataIO.UpdateEntry(m_conmanager, re, true);

                    //Einträge neu laden
                    LoadEntryList();
                    RefreshList();
                }
            }
            else if (dlg.DialogResultId == 2)                            //Ein neuer Eintrag soll erstellt werden
            {
                frmremotedesktopentry frm = new frmremotedesktopentry(); //Standard-Konstruktor benutzen
                frm.ShowDialog();
                if (frm.RemoteDesktopData != null)                       //Nur wenn es NICHT null ist, darf die Methode fortgesetzt werden
                {
                    //RdpFolderStructureRemoteEntry erstellen
                    RdpFolderStructureRdpEntry re = frm.RemoteDesktopData;
                    re.ParentId = m_actualid;
                    re.Type     = 0; //Für RDP-Einträge

                    //Eintrag speichern
                    SqliteDataIO.UpdateEntry(m_conmanager, re, true);

                    //Einträge neu laden
                    LoadEntryList();
                    RefreshList();
                }
            }
        }
        /// <summary>
        /// Erstellt eine neue Instanz von frmremotedesktopentry.
        /// Dieser Konstruktor ist für die Bearbeitung eines bestehenden Eintrags zuständig
        /// </summary>
        /// <param name="rdpEntry">Die Daten zur Rdp-Verbindung</param>
        public frmremotedesktopentry(RdpFolderStructureRdpEntry rdpEntry)
        {
            InitializeComponent();
            BindEvents();
            t_rdp = rdpEntry;

            //Werte anzeigen
            txtconnectionname.Text = rdpEntry.Caption;
            txthostname.Text       = rdpEntry.HostName;
            txtusername.Text       = rdpEntry.UserName;
            txtpassword.Text       = rdpEntry.Password;
            txtbemerkung.Text      = rdpEntry.Bemerkung;
            chpinghost.Checked     = rdpEntry.PingHost;

            //Title anpassen
            Text = "Verbindung bearbeiten";
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Erstellt eine neue Instanz von RemoteDesktopTabPage
        /// </summary>
        /// <param name="rdpData">Die RemoteDesktop-Daten, die für die Anzeige verwendet werden sollen</param>
        public RemoteDesktopTabPage(RdpFolderStructureRdpEntry rdpEntry) : base(rdpEntry.Caption + " (" + rdpEntry.HostName + ")")
        {
            //Das Passwort ist ein optionaler Parameter. Wenn keiner gespeichert wurde, dann soll das Eingabefenster erscheinen
            //Bei Direktverbindungen wird dieses generell geöffnet, da dort keine Passwörter gespeichert werden können
            string password = "";

            //Wenn kein Passwort übergeben wurde, dann soll das Eingabefenster dazu geöffnet werden
            if (rdpEntry.Password != "")
            {
                password = rdpEntry.Password;
            }
            else
            {
                //Eingabefenster anzeigen
                frmenterpassword frmpw = new frmenterpassword(rdpEntry.UserName);
                frmpw.ShowDialog();

                //Wenn es nicht leer ist, frotsetzen
                if (frmpw.Password != "")
                {
                    password = frmpw.Password;
                }
                else
                {
                    MessageBox.Show("Es wurde kein Passwort eingegeben! Der Vorgang wird abgebrochen", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    m_dispose = true;
                    return;
                }
            }

            //Fenster wird erstellt und mit Daten gefüttert
            rdpView                 = new RemoteDesktopTabPageView(rdpEntry.HostName, rdpEntry.GetUserAndDomain().Value, password, rdpEntry.GetUserAndDomain().Key);
            rdpView.Dock            = DockStyle.Fill;
            rdpView.TopLevel        = false;
            rdpView.FormBorderStyle = FormBorderStyle.None;

            //Vorher hinzufügen, damit die Größe stimmt
            Controls.Add(rdpView);

            //jetzt Element anzeigen
            rdpView.Show();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Event-Methode:
        /// Ändert die Daten in der Datenbank
        /// </summary>
        /// <param name="rdpStructureEntry">Das Objekt mit den Daten</param>
        public void EntryChanged(RdpFolderStructureEntry rdpStructureEntry)
        {
            //Hier wird der SQL-Befehl gespeichert. Es sollen nur die Felder geändert werden, die auch geändert werden können
            string sql = "update tblConnectionStructure set Name='" + rdpStructureEntry.Caption + "', Bemerkung='" + rdpStructureEntry.Bemerkung + "'";

            if (rdpStructureEntry.Type == 0)                                                   //Es ist eine Verbindung
            {
                RdpFolderStructureRdpEntry re = (RdpFolderStructureRdpEntry)rdpStructureEntry; //Objekt casten, um an die zusätzlichen Felder zu kommen

                //SQL-Befehl vervollständigen
                sql += ", Hostname='" + re.HostName + "', Username='******', Password='******', PingHost=" + Convert.ToInt32(re.PingHost).ToString();
            }

            //Ausführung abschliessen
            sql += " where Id=" + rdpStructureEntry.Id.ToString() + ";";
            m_conmanager.ExecuteSql(sql);

            //Einträge neu laden
            LoadEntryList();
            RefreshList();
        }
        /// <summary>
        /// Erstellt eine neue Instanz von RemoteDesktopListItem
        /// </summary>
        /// <param name="rdpEntry">Die Daten zur Remote-Desktop-Verbindung</param>
        public RemoteDesktopListItem(RdpFolderStructureRdpEntry rdpEntry)
        {
            InitializeComponent();
            m_rdp          = rdpEntry;
            lbconname.Text = m_rdp.Caption;
            lbip.Text      = m_rdp.HostName;

            //Wenn ein Passwort vergeben wurde, dann soll das ! angezeigt werden
            if (m_rdp.Password != "")
            {
                lbpassword.Visible = true;
            }
            else
            {
                lbpassword.Visible = false;
            }

            //Events anbinden
            picimagerdp.DoubleClick       += Redirect_DoubleClick;
            lbconname.DoubleClick         += Redirect_DoubleClick;
            lbip.DoubleClick              += Redirect_DoubleClick;
            tsmenuitemconnect.DoubleClick += Redirect_DoubleClick;
        }