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
|
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// copyright : (C) 2014 The CodeLite Team
// file name : SSHAccountManagerDlg.cpp
//
// -------------------------------------------------------------------------
// A
// _____ _ _ _ _
// / __ \ | | | | (_) |
// | / \/ ___ __| | ___| | _| |_ ___
// | | / _ \ / _ |/ _ \ | | | __/ _ )
// | \__/\ (_) | (_| | __/ |___| | || __/
// \____/\___/ \__,_|\___\_____/_|\__\___|
//
// F i l e
//
// 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.
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#include "SSHAccountManagerDlg.h"
#if USE_SFTP
#include "AddSSHAcountDlg.h"
#include "ssh_account_info.h"
#include "sftp_settings.h"
#include "windowattrmanager.h"
#include <wx/msgdlg.h>
SSHAccountManagerDlg::SSHAccountManagerDlg(wxWindow* parent)
: SSHAccountManagerDlgBase(parent)
{
SFTPSettings settings;
settings.Load();
const SSHAccountInfo::Vect_t& accounts = settings.GetAccounts();
SSHAccountInfo::Vect_t::const_iterator iter = accounts.begin();
for(; iter != accounts.end(); ++iter) {
DoAddAccount( *iter );
}
WindowAttrManager::Load(this, "SSHAccountManagerDlg", NULL);
}
SSHAccountManagerDlg::~SSHAccountManagerDlg()
{
for(int i=0; i<m_dvListCtrlAccounts->GetItemCount(); ++i) {
wxDataViewItem item = m_dvListCtrlAccounts->RowToItem(i);
SSHAccountInfo* pAccount = (SSHAccountInfo*)(m_dvListCtrlAccounts->GetItemData( item ));
delete pAccount;
m_dvListCtrlAccounts->SetItemData(item, (wxUIntPtr)NULL);
}
m_dvListCtrlAccounts->DeleteAllItems();
WindowAttrManager::Save(this, "SSHAccountManagerDlg", NULL);
}
void SSHAccountManagerDlg::OnAddAccount(wxCommandEvent& event)
{
AddSSHAcountDlg dlg(this);
if ( dlg.ShowModal() == wxID_OK ) {
SSHAccountInfo account;
dlg.GetAccountInfo( account );
DoAddAccount( account );
}
}
void SSHAccountManagerDlg::OnDeleteAccount(wxCommandEvent& event)
{
wxDataViewItemArray sels;
m_dvListCtrlAccounts->GetSelections( sels );
if ( ::wxMessageBox(_("Are you sure you want to delete the selected accounts?"), "SFTP", wxYES_NO|wxCENTER|wxCANCEL|wxICON_QUESTION|wxNO_DEFAULT) != wxYES ) {
return;
}
for(size_t i=0; i<sels.GetCount(); ++i) {
wxDataViewItem item = sels.Item(i);
m_dvListCtrlAccounts->DeleteItem( m_dvListCtrlAccounts->ItemToRow( item ) );
}
m_dvListCtrlAccounts->Refresh();
}
void SSHAccountManagerDlg::OnEditAccount(wxDataViewEvent& event)
{
SSHAccountInfo *account = (SSHAccountInfo*)(m_dvListCtrlAccounts->GetItemData( event.GetItem() ));
AddSSHAcountDlg dlg(this, *account);
if ( dlg.ShowModal() == wxID_OK ) {
// update the user info
dlg.GetAccountInfo(*account);
// update the UI
m_dvListCtrlAccounts->GetStore()->SetValue(account->GetAccountName(), event.GetItem(), 0);
m_dvListCtrlAccounts->GetStore()->SetValue(account->GetUsername(), event.GetItem(), 1);
m_dvListCtrlAccounts->Refresh();
}
}
void SSHAccountManagerDlg::DoAddAccount(const SSHAccountInfo& account)
{
wxVector<wxVariant> cols;
cols.push_back( account.GetAccountName() );
cols.push_back( account.GetUsername() );
m_dvListCtrlAccounts->AppendItem( cols, (wxUIntPtr)(new SSHAccountInfo(account)));
}
SSHAccountInfo::Vect_t SSHAccountManagerDlg::GetAccounts() const
{
SSHAccountInfo::Vect_t accounts;
for(int i=0; i<m_dvListCtrlAccounts->GetItemCount(); ++i) {
accounts.push_back( *(SSHAccountInfo*)(m_dvListCtrlAccounts->GetItemData( m_dvListCtrlAccounts->RowToItem(i))) );
}
return accounts;
}
void SSHAccountManagerDlg::OnDeleteAccountUI(wxUpdateUIEvent& event)
{
event.Enable( m_dvListCtrlAccounts->GetSelectedItemsCount() );
}
#endif // USE_SFTP
|