1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
|
#ifndef SshConnectionAttributes_h
#define SshConnectionAttributes_h
/******************************************************************************
*
* Copyright (C) 2002 Hugo PEREIRA <mailto: hugo.pereira@free.fr>
*
* This 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 software 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, see <http://www.gnu.org/licenses/>.
*
*******************************************************************************/
#include "SshTunnelAttributes.h"
#include "Counter.h"
#include <QString>
#include <QList>
namespace Ssh
{
//_________________________________________________________
class ConnectionAttributes: private Base::Counter<ConnectionAttributes>
{
public:
//* used to drag and drop in models
static const QString MimeType;
using List = QList<ConnectionAttributes>;
using ListIterator = QListIterator<ConnectionAttributes>;
//* constructor
explicit ConnectionAttributes():
Counter( "Ssh::ConnectionAttributes" )
{}
virtual ~ConnectionAttributes() = default;
//*@name accessors
//@{
//* name
const QString& name() const
{ return name_; }
//* host
const QString& host() const
{ return host_; }
//* user name
const QString& userName() const
{ return userName_; }
//* password
const QString& password() const
{ return password_; }
//* true if password is to be remembered
bool rememberPassword() const
{ return rememberPassword_; }
//* true if auto connect
bool autoConnect() const
{ return autoConnect_; }
//* port
int port() const
{ return port_; }
//* tunnels
TunnelAttributes::Set tunnels() const
{ return tunnels_; }
//* validity
bool isValid() const;
//@}
//*@name modifiers
//@{
//* name
void setName( const QString& name )
{ name_ = name; }
//* host
void setHost( const QString& host )
{ host_ = host; }
//* user name
void setUserName( const QString& userName )
{ userName_ = userName; }
//* password
void setPassword( const QString& password )
{ password_ = password; }
//* remember password
void setRememberPassword( bool value )
{ rememberPassword_ = value; }
//* set auto connect
void setAutoConnect( bool value )
{ autoConnect_ = value; }
//* port
void setPort( int port )
{ port_ = port; }
//* set tunnels
void setTunnels( const TunnelAttributes::List );
//* add tunnel
void addTunnel( const TunnelAttributes& );
//@}
//* used to find attributes with same names
class SameNameFTor
{
public:
//* constructor
explicit SameNameFTor( const QString& name ):
name_( name )
{}
//* predicate
bool operator() (const ConnectionAttributes& other ) const
{ return other.name() == name_; }
private:
//* prediction
const QString name_;
};
private:
//* connection name
QString name_;
//* host
QString host_;
//* user
QString userName_;
//* password
QString password_;
//* remember password
bool rememberPassword_ = false;
//* auto connect
bool autoConnect_ = false;
//* port
int port_ = 22;
//* tunnels
TunnelAttributes::Set tunnels_;
//* equal to operator
friend bool operator == (const ConnectionAttributes&, const ConnectionAttributes&);
};
//* less than operator
inline bool operator < (const ConnectionAttributes& first, const ConnectionAttributes& second)
{ return first.name() < second.name(); }
}
#endif
|