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.
tdesvn/src/svnfrontend/fronthelpers/propertylist.cpp

167 lines
5.8 KiB

/***************************************************************************
* Copyright (C) 2007 by Rajko Albrecht ral@alwins-world.de *
* http://tdesvn.alwins-world.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 02110-1301, USA. *
***************************************************************************/
#include "propertylist.h"
#include "src/svnfrontend/fronthelpers/propertyitem.h"
#include <klocale.h>
#include <kdebug.h>
#include <kmessagebox.h>
Propertylist::Propertylist(TQWidget *parent, const char *name)
: KListView(parent, name),m_commitit(false)
{
addColumn(i18n("Property"));
addColumn(i18n("Value"));
setShowSortIndicator(true);
setAllColumnsShowFocus (true);
setRootIsDecorated(false);
setSortColumn(0);
setAcceptDrops(false);
connect(this,TQT_SIGNAL(itemRenamed(TQListViewItem*,const TQString&,int)),this,TQT_SLOT(slotItemRenamed(TQListViewItem*,const TQString&,int)));
connect(this,TQT_SIGNAL(contextMenuRequested(TQListViewItem *, const TQPoint &, int)),this,
TQT_SLOT(slotContextMenuRequested(TQListViewItem *, const TQPoint &, int)));
//setFullWidth( TRUE );
}
Propertylist::~Propertylist()
{
}
void Propertylist::displayList(const svn::PathPropertiesMapListPtr&propList,bool editable,const TQString&aCur)
{
viewport()->setUpdatesEnabled(false);
clear();
setItemsRenameable(editable);
setRenameable(0,editable);
setRenameable(1,editable);
if (propList) {
m_current = aCur;
svn::PathPropertiesMapList::const_iterator lit;
svn::PropertiesMap pmap;
for (lit=propList->begin();lit!=propList->end();++lit) {
pmap = (*lit).second;
/* just want the first one */
break;
}
svn::PropertiesMap::const_iterator pit;
for (pit=pmap.begin();pit!=pmap.end();++pit) {
PropertyListViewItem * ki = new PropertyListViewItem(this,
pit.key(),
pit.data());
}
}
viewport()->setUpdatesEnabled(true);
viewport()->tqrepaint();
}
void Propertylist::clear()
{
KListView::clear();
}
/*!
\fn PropertiesDlg::slotItemRenamed(TQListViewItem*item,const TQString & str,int col )
*/
void Propertylist::slotItemRenamed(TQListViewItem*_item,const TQString & text,int col )
{
if (!_item || _item->rtti()!=PropertyListViewItem::_RTTI_) return;
PropertyListViewItem*item = static_cast<PropertyListViewItem*> (_item);
kdDebug()<<"Text: "<< text << " in col "<<col << endl;
if (text.isEmpty()&&col == 0) {
// fresh added
if (item->currentName().isEmpty()) {
delete item;
} else {
item->setText(0,item->currentName());
}
return;
}
if (PropertyListViewItem::protected_Property(item->text(0)) ||
PropertyListViewItem::protected_Property(item->currentName())) {
KMessageBox::error(this,i18n("This property may not set by users.\nRejecting it."),i18n("Protected property"));
item->setText(0,item->currentName());
item->setText(1,item->currentValue());
return;
}
if (checkExisting(item->text(0),item)) {
KMessageBox::error(this,i18n("A property with that name exists.\nRejecting it."),i18n("Double property"));
item->setText(0,item->currentName());
item->setText(1,item->currentValue());
return;
}
if (col==0) {
item->checkName();
} else {
item->checkValue();
}
if (commitchanges() && item->different()) {
svn::PropertiesMap pm;
TQValueList<TQString> dels;
pm[item->currentName()]=item->currentValue();
if (item->currentName()!=item->startName()){
dels.push_back(item->startName());
}
emit sigSetProperty(pm,dels,m_current);
}
}
bool Propertylist::checkExisting(const TQString&aName,TQListViewItem*it)
{
if (!it) {
return findItem(aName,0)!=0;
}
TQListViewItemIterator iter(this);
while ( iter.current() ) {
if ( iter.current()==it) {
++iter;
continue;
}
if (iter.current()->text(0)==aName) {
return true;
}
++iter;
}
return false;
}
void Propertylist::addCallback(TQObject*ob)
{
if (ob) {
connect(this,TQT_SIGNAL(sigSetProperty(const svn::PropertiesMap&,const TQValueList<TQString>&,const TQString&)),
ob,TQT_SLOT(slotChangeProperties(const svn::PropertiesMap&,const TQValueList<TQString>&,const TQString&)));
}
}
/*!
\fn Propertylist::slotContextMenuRequested(TQListViewItem *, const TQPoint &, int)
*/
void Propertylist::slotContextMenuRequested(TQListViewItem *, const TQPoint &, int)
{
/// @todo implement me
}
#include "propertylist.moc"