You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
217 lines
5.0 KiB
217 lines
5.0 KiB
/*
|
|
Copyright (c) 2004 Jan Schaefer <j_schaef@informatik.uni-kl.de>
|
|
|
|
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.
|
|
|
|
This program 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, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
|
|
#include <qradiobutton.h>
|
|
#include <qpushbutton.h>
|
|
#include <qgroupbox.h>
|
|
#include <qlineedit.h>
|
|
#include <qbuttongroup.h>
|
|
#include <qlayout.h>
|
|
|
|
#include <kdebug.h>
|
|
#include <kmessagebox.h>
|
|
#include <kfiledialog.h>
|
|
#include <klocale.h>
|
|
#include <klistview.h>
|
|
#include <kaccel.h>
|
|
|
|
#include "nfsdialog.h"
|
|
#include "nfsentry.h"
|
|
#include "nfshostdlg.h"
|
|
#include "nfsfile.h"
|
|
#include "nfsdialoggui.h"
|
|
|
|
NFSDialog::NFSDialog(QWidget * parent, NFSEntry* entry)
|
|
: KDialogBase(Plain, i18n("NFS Options"), Ok|Cancel, Ok, parent),
|
|
m_nfsEntry(entry),
|
|
m_modified(false)
|
|
{
|
|
if (m_nfsEntry)
|
|
m_workEntry = m_nfsEntry->copy();
|
|
else
|
|
kdWarning() << "NFSDialog::NFSDialog: entry is null!" << endl;
|
|
|
|
initGUI();
|
|
initSlots();
|
|
initListView();
|
|
}
|
|
|
|
NFSDialog::~NFSDialog()
|
|
{
|
|
delete m_workEntry;
|
|
}
|
|
|
|
void NFSDialog::initGUI() {
|
|
QWidget* page = plainPage();
|
|
m_gui = new NFSDialogGUI(page);
|
|
|
|
QVBoxLayout *layout = new QVBoxLayout( page );
|
|
layout->addWidget( m_gui );
|
|
|
|
KAccel* accel = new KAccel( m_gui->listView );
|
|
accel->insert( "Delete", Qt::Key_Delete, this, SLOT(slotRemoveHost()));
|
|
}
|
|
|
|
void NFSDialog::initSlots()
|
|
{
|
|
connect( m_gui->removeHostBtn, SIGNAL(clicked()), this, SLOT( slotRemoveHost()));
|
|
connect( m_gui->addHostBtn, SIGNAL(clicked()), this, SLOT( slotAddHost()));
|
|
connect( m_gui->modifyHostBtn, SIGNAL(clicked()), this, SLOT( slotModifyHost()));
|
|
connect( m_gui->listView, SIGNAL(doubleClicked(QListViewItem*)),
|
|
this, SLOT( slotModifyHost()));
|
|
|
|
}
|
|
|
|
void NFSDialog::initListView()
|
|
{
|
|
if (m_workEntry) {
|
|
HostIterator it = m_workEntry->getHosts();
|
|
|
|
NFSHost* host;
|
|
while ( (host = it.current()) != 0 ) {
|
|
++it;
|
|
createItemFromHost(host);
|
|
}
|
|
}
|
|
}
|
|
|
|
QListViewItem* NFSDialog::createItemFromHost(NFSHost* host)
|
|
{
|
|
if (!host)
|
|
return 0;
|
|
|
|
QListViewItem* item = new QListViewItem(m_gui->listView);
|
|
updateItem(item, host);
|
|
return item;
|
|
}
|
|
|
|
void NFSDialog::updateItem(QListViewItem* item, NFSHost* host)
|
|
{
|
|
item->setText(0,host->name);
|
|
item->setText(1,host->paramString());
|
|
}
|
|
|
|
void NFSDialog::slotAddHost()
|
|
{
|
|
NFSHost *host = new NFSHost();
|
|
|
|
// Set some secure parameters
|
|
//host->allSquash=true;
|
|
host->readonly=true;
|
|
|
|
HostList hostList;
|
|
hostList.append(host);
|
|
|
|
NFSHostDlg *dlg = new NFSHostDlg(this, &hostList, m_workEntry);
|
|
dlg->exec();
|
|
|
|
|
|
if (dlg->result()==QDialog::Accepted) {
|
|
m_workEntry->addHost(host);
|
|
createItemFromHost(host);
|
|
setModified();
|
|
} else {
|
|
delete host;
|
|
}
|
|
|
|
delete dlg;
|
|
}
|
|
|
|
void NFSDialog::slotOk() {
|
|
if (m_modified) {
|
|
m_nfsEntry->copyFrom(m_workEntry);
|
|
}
|
|
KDialogBase::slotOk();
|
|
}
|
|
|
|
void NFSDialog::slotRemoveHost()
|
|
{
|
|
QPtrList<QListViewItem> items = m_gui->listView->selectedItems();
|
|
if (items.count()==0)
|
|
return;
|
|
|
|
QListViewItem *item;
|
|
for ( item = items.first(); item; item = items.next() ) {
|
|
QString name = item->text(0);
|
|
m_gui->listView->takeItem(item);
|
|
|
|
NFSHost* host = m_workEntry->getHostByName(name);
|
|
if (host) {
|
|
m_workEntry->removeHost(host);
|
|
} else {
|
|
kdWarning() << "NFSDialog::slotRemoveHost: no host "
|
|
<< name << " << found!" << endl;
|
|
}
|
|
|
|
}
|
|
|
|
m_gui->modifyHostBtn->setDisabled(true);
|
|
m_gui->removeHostBtn->setDisabled(true);
|
|
setModified();
|
|
}
|
|
|
|
void NFSDialog::slotModifyHost()
|
|
{
|
|
QPtrList<QListViewItem> items = m_gui->listView->selectedItems();
|
|
if (items.count()==0)
|
|
return;
|
|
|
|
HostList hostList;
|
|
|
|
QListViewItem *item;
|
|
for ( item = items.first(); item; item = items.next() ) {
|
|
|
|
NFSHost* host = m_workEntry->getHostByName(item->text(0));
|
|
if (host)
|
|
hostList.append(host);
|
|
else
|
|
kdWarning() << "NFSDialog::slogModifyHost: host "
|
|
<< item->text(0) << " is null!" << endl;
|
|
}
|
|
|
|
NFSHostDlg *dlg = new NFSHostDlg(this, &hostList, m_workEntry);
|
|
if (dlg->exec() == QDialog::Accepted &&
|
|
dlg->isModified())
|
|
{
|
|
setModified();
|
|
}
|
|
|
|
delete dlg;
|
|
|
|
NFSHost* host = hostList.first();
|
|
for ( item = items.first(); item; item = items.next() ) {
|
|
if (item && host)
|
|
updateItem( item,host);
|
|
host = hostList.next();
|
|
}
|
|
}
|
|
|
|
void NFSDialog::setModified()
|
|
{
|
|
m_modified = true;
|
|
}
|
|
|
|
bool NFSDialog::modified() {
|
|
return m_modified;
|
|
}
|
|
|
|
#include "nfsdialog.moc"
|
|
|