Exemple #1
0
void KXmlCommandAdvancedDlg::recreateGroup(TQListViewItem *item, DrGroup *grp)
{
	if (!item)
		return;

	TQListViewItem	*child = item->firstChild();
	while (child)
	{
		DrBase	*opt = (m_opts.contains(child->text(1)) ? m_opts[child->text(1)] : 0);
		if (opt)
		{
			if (opt->type() == DrBase::Group)
			{
				DrGroup	*childGroup = static_cast<DrGroup*>(opt);
				recreateGroup(child, childGroup);
				grp->addGroup(childGroup);
			}
			else
			{
				opt->setName("_kde-"+m_xmlcmd->name()+"-"+opt->name());
				grp->addOption(opt);
			}
			m_opts.remove(child->text(1));
		}
		child = child->nextSibling();
	}
}
Exemple #2
0
void ConfFilters::slotChange()
{
	TQListViewItem	*item = m_filters->currentItem();
	if (item)
	{
		TQString	mime(item->text(0)), cmd(item->text(1));
		if (FilterDlg::doIt(this, &mime, &cmd))
		{
			item->setText(0, mime);
			item->setText(1, cmd);
		}
	}
}
Exemple #3
0
void ConfFilters::save()
{
	TQListViewItem	*item = m_filters->firstChild();
	TQFile	f(locateLocal("data","tdeprintfax/faxfilters"));
	if (f.open(IO_WriteOnly))
	{
		TQTextStream	t(&f);
		while (item)
		{
			t << item->text(0) << ' ' << item->text(1) << endl;
			item = item->nextSibling();
		}
	}
}
Exemple #4
0
void IconThemesConfig::updateRemoveButton()
{
  TQListViewItem *selected = m_iconThemes->selectedItem();
  bool enabled = false;
  if (selected)
  {
    TDEIconTheme icontheme(m_themeNames[selected->text(0)]);
    TQFileInfo fi(icontheme.dir());
    enabled = fi.isWritable();
    // Don't let users remove the current theme.
    if(m_themeNames[selected->text(0)] == TDEIconTheme::current() || 
			 m_themeNames[selected->text(0)] == TDEIconTheme::defaultThemeName())
      enabled = false;
  }
  m_removeButton->setEnabled(enabled);
}
Exemple #5
0
void IconThemesConfig::save()
{
  if (!m_bChanged)
     return;
  TQListViewItem *selected = m_iconThemes->selectedItem();
  if (!selected)
     return;

  KSimpleConfig *config = new KSimpleConfig("kdeglobals", false);
  config->setGroup("Icons");
  config->writeEntry("Theme", m_themeNames[selected->text(0)]);
  delete config;

  TDEIconTheme::reconfigure();
  emit changed(false);

  for (int i=0; i<TDEIcon::LastGroup; i++)
  {
    KIPC::sendMessageAll(KIPC::IconChanged, i);
  }

  KService::rebuildKSycoca(this);

  m_bChanged = false;
  m_removeButton->setEnabled(false);
}
void CustomSmileyManager::slotFaceValueChanged( int row, int col )
{
	if(!m_Config) return;

	TQListViewItem *item = lvGroups->selectedItem();
	if(item){
		int gId = m_Config->groupIndex( item->text( 0 ) );
		if(gId < 0) return;
		TQString text = tblFaceList->text(row, col);
		switch(col){
		case 1:  // tip
			m_Config->updateFaceTip(gId, row, tblFaceList->text(row, col));
			m_Config->saveXML();
			m_IsChanged = true;
			break;
		case 2:  // shortcut
			m_Config->updateFaceShortcut(gId, row, tblFaceList->text(row, col));
			m_Config->saveXML();
			m_IsChanged = true;
			break;
		default: // anything else, ignore
			break;
		}
	}
}
Exemple #7
0
void KDFConfigWidget::applySettings( void )
{
  TDEConfig &config = *kapp->config();
  config.setGroup("KDFConfig");

  if( GUI )
  {
    //config.writeEntry( "Width", width() );
    //config.writeEntry( "Height", height() );

    mStd.setFileManager( mFileManagerEdit->text() );
    mStd.setUpdateFrequency( mScroll->value() );
    mStd.setPopupIfFull( mPopupFullCheck->isChecked() );
    mStd.setOpenFileManager( mOpenMountCheck->isChecked() );
    mStd.writeConfiguration();

    TQListViewItem *item = mList->firstChild();
    if( item != 0 )
    {
      for( int i=mList->header()->count(); i>0; i-- )
      {
	bool state = item->text(i-1) == i18n("visible") ? true : false;
	config.writeEntry( mTabName[i-1]->mRes, state );
      }
    }
  }
  else
  {
    mStd.writeDefaultFileManager();
  }
  config.sync();
}
Exemple #8
0
bool GetInfo_Sound (TQListView *lbox)
{
	lbox->setSorting(false);

	if (!GetDmesgInfo(lbox, "audio", NULL))
		new TQListViewItem(lbox, i18n("No audio devices found."));

	// append information for each audio devices found
	TQListViewItem *lvitem = lbox->firstChild();
	for(; lvitem; lvitem = lvitem->nextSibling()) {
		TQString s;
		int pos, len;
		const char *start;
		char *dev;

		s = lvitem->text(0);
		// The autoconf message is in form 'audio0 at auvia0: ...'
		if (s.find("audio") == 0 && (pos = s.find(" at ")) > 0) {
			pos += 4;	// skip " at "
			start = s.ascii() + pos;
			len = (int) strcspn(start, ":\n\t ");
			dev = (char *) malloc(1 + len + 1);
			sprintf(dev, "^%.*s", len, start);	/* safe */

			GetDmesgInfo(lbox, dev, NULL);

			free(dev);
		}
	}

	return true;
}
Exemple #9
0
void KMWLocal::updatePrinter(KMPrinter *printer)
{
	TQListViewItem *item = m_ports->selectedItem();
	if ( item && item->depth() == 3 )
		printer->setOption( "kde-autodetect", item->text( 0 ) );
	printer->setDevice(m_localuri->text());
}
Exemple #10
0
TQListViewItem *IconThemesConfig::iconThemeItem(const TQString &name)
{
  TQListViewItem *item;
  for ( item=m_iconThemes->firstChild(); item ; item=item->nextSibling() )
    if (m_themeNames[item->text(0)]==name) return item;

  return 0L;
}
Exemple #11
0
void KMConfigFonts::slotDown()
{
	TQListViewItem	*citem = m_fontpath->selectedItem(), *nitem = 0;
	if (!citem || !citem->itemBelow())
		return;
	nitem = new TQListViewItem(m_fontpath, citem->itemBelow(), citem->text(0));
	delete citem;
	m_fontpath->setSelected(nitem, true);
}
Exemple #12
0
void IconThemesConfig::removeSelectedTheme()
{
  TQListViewItem *selected = m_iconThemes->selectedItem();
  if (!selected)
     return;

  TQString question=i18n("<qt>Are you sure you want to remove the "
        "<strong>%1</strong> icon theme?<br>"
        "<br>"
        "This will delete the files installed by this theme.</qt>").
	arg(selected->text(0));

  bool deletingCurrentTheme=(selected==iconThemeItem(TDEIconTheme::current()));

  int r=KMessageBox::warningContinueCancel(this,question,i18n("Confirmation"),KStdGuiItem::del());
  if (r!=KMessageBox::Continue) return;

  TDEIconTheme icontheme(m_themeNames[selected->text(0)]);

  // delete the index file before the async TDEIO::del so loadThemes() will
  // ignore that dir.
  unlink(TQFile::encodeName(icontheme.dir()+"/index.theme").data());
  unlink(TQFile::encodeName(icontheme.dir()+"/index.desktop").data());
  TDEIO::del(KURL( icontheme.dir() ));

  TDEGlobal::instance()->newIconLoader();

  loadThemes();

  TQListViewItem *item=0L;
  //Fallback to the default if we've deleted the current theme
  if (!deletingCurrentTheme)
     item=iconThemeItem(TDEIconTheme::current());
  if (!item)
     item=iconThemeItem(TDEIconTheme::defaultThemeName());

  m_iconThemes->setSelected(item, true);
  updateRemoveButton();

  if (deletingCurrentTheme) // Change the configuration
    save();
}
Exemple #13
0
void CustomSmileyManager::slotMoveSmileyTo( int Id )
{
	if(!m_Config) return;

	TQListViewItem *item = lvGroups->selectedItem();
	if(item){
		TQString srcGName = item->text(0); // selected group name
		int gId = m_Config->groupIndex( srcGName );  // selected group index
		TQString destGName = m_Config->groupName( Id); // dest group name
		if( (gId < 0) || (Id < 0) || (gId == Id) ) return;

		TQString dir = EvaMain::user->getSetting()->getCustomSmileyDir() + "/";
		TQString src = dir, dest = dir;
		if(gId != 0) src += (srcGName + "/");
		if(Id != 0 ) dest += (destGName + "/");

		int row = 0;
		bool moved = false;

		// as removing row also clear the selection( or change to the last row),
		// so we have to record the selection first
		bool *flags = new bool[tblFaceList->numRows()];
		for(row = 0; row < tblFaceList->numRows(); row++){
			if (tblFaceList->isRowSelected(row))
				flags[row] = true;
			else
				flags[row] = false;
		}

		for( row = tblFaceList->numRows() -1; row >= 0; row--){
			if (flags[row]){
				CustomFace face = m_Config->getFace( gId, row);
				if(m_Config->moveFaceTo( gId, row, Id)){  // if update config true

					EvaHelper::copyFile( src + face.fixed(), dest + face.fixed());
					EvaHelper::copyFile( src + face.org(), dest + face.org());
			
					TQDir smileyDir(src);
					smileyDir.remove( src + face.fixed());
					smileyDir.remove( src +  + face.org());

					// update display
					tblFaceList->removeRow(row);

					m_IsChanged = true;
					moved = true;
				}
			}
		}
		delete []flags;
		if(moved)
			m_Config->saveXML(); // save config in case of some unexpected situations
	}
}
Exemple #14
0
void KMConfigFonts::saveConfig(TDEConfig *)
{
	TQSettings	settings;
	settings.writeEntry("/qt/embedFonts", m_embedfonts->isChecked());
	TQStringList	l;
	TQListViewItem	*item = m_fontpath->firstChild();
	while (item)
	{
		l << item->text(0);
		item = item->nextSibling();
	}
	settings.writeEntry("/qt/fontPath", l, ':');
}
Exemple #15
0
void CustomSmileyManager::slotFaceSelectionChanged( )
{
	// TQTable::numSelections() doesn't return the correct value
	// if use select some rows by pressing shift key

	int numSelections = 0;
	int first = -1;
	for(int r = 0; r < tblFaceList->numRows(); r++){
		numSelections += ((tblFaceList->isRowSelected(r))?1:0);
		if( (numSelections == 1) && (first == -1) ){
			first = r;
		}
	}
	bool isSingle = (numSelections == 1);
	btnEdit->setEnabled(isSingle);
	btnUp->setEnabled(isSingle);
	btnDown->setEnabled(isSingle);
	if(numSelections){
		TQListViewItem *item = lvGroups->selectedItem();
		if(item){
			int gId = m_Config->groupIndex( item->text( 0 ) );
			if(gId < 0) return;
			CustomFace face = m_Config->getFace( gId, first);
			TQString path = EvaMain::user->getSetting()->getCustomSmileyDir() + "/";
			if(gId > 0 )
				path += (item->text(0) + "/");
			TQString ext = face.org().right(3);
			lblPreview->clear();
			if(ext.lower() == "gif"){
				lblPreview->setMovie( TQMovie(path + face.org()));
			} else {
				TQImage img(path + face.org() );
				
				lblPreview->setPixmap( TQPixmap(img.smoothScale( lblPreview->size(), TQImage::ScaleMin)));
			}
		}
	}
}
Exemple #16
0
// rename the group
void CustomSmileyManager::slotEditGroupClicked( )
{
	TQListViewItem *item = lvGroups->selectedItem();
	if(item){
		if(item == lvGroups->firstChild()) return;

		d->m_Action = GroupActionPrivate::GEdit;
		d->m_Item = item;
		d->m_OldName = item->text( 0 );

		item->setRenameEnabled( 0, true );
		item->startRename( 0 );
	}
}
Exemple #17
0
void CustomSmileyManager::slotAddSmiley( )
{
	if(!m_Config) return;

	TQListViewItem *item = lvGroups->selectedItem();
	if(! item) return;

	int gId = m_Config->groupIndex( item->text( 0 ) );
	if(gId < 0) return;
	
	CreateSmileyWindow *win = new CreateSmileyWindow(TQString::null, gId);
	connect(win, SIGNAL(addCustomSmileyReady( bool )), this, SLOT(slotAddCustomSmileyReady( bool )));
	win->show();
}
Exemple #18
0
TQListViewItem* KMWLocal::lookForItem( const TQString& uri )
{
	for ( int i=0; i<4; i++ )
	{
		TQListViewItem *item = m_parents[ i ]->firstChild();
		while ( item )
			if ( item->text( 1 ) == uri )
				if ( item->firstChild() )
					return item->firstChild();
				else
					return item;
			else
				item = item->nextSibling();
	}
	return 0;
}
Exemple #19
0
void CustomSmileyManager::slotAddCustomSmileyReady( bool ok)
{
	if(!ok) return;
	if(!m_Config) return;

	TQListViewItem *item = lvGroups->selectedItem();
	if(! item) return;

	int gId = m_Config->groupIndex( item->text( 0 ) );
	if(gId < 0) return;

	m_Config->loadXML();
	loadSmileys(gId);
	// notify smiley popup window to update
	emit customSmileyChanged();
}
Exemple #20
0
bool GetInfo_SCSI (TQListView *lbox)
{
	if (!GetDmesgInfo(lbox, "scsibus", NULL))
		new TQListViewItem(lbox, i18n("No SCSI devices found."));

	// remove the 'waiting %d seconds for devices to settle' message
	TQListViewItem *lvitem = lbox->firstChild();
	for(; lvitem; lvitem = lvitem->nextSibling()) {
		TQString s = lvitem->text(0);

		if (s.contains("seconds for devices to settle")) {
			lbox->removeItem(lvitem);
			break;
		}
	}
	
	return true;
}
Exemple #21
0
void KXmlCommandDlg::slotOk()
{
	if (m_cmd)
	{
		m_cmd->setMimeType((m_mimetype->currentText() == "all/all" ? TQString::null : m_mimetype->currentText()));
		m_cmd->setDescription(m_description->text());
		TQStringList	l;
		TQListViewItem	*item = m_requirements->firstChild();
		while (item)
		{
			l << item->text(0);
			item = item->nextSibling();
		}
		m_cmd->setRequirements(l);
		l.clear();
		for (uint i=0; i<m_selectedmime->count(); i++)
			l << m_selectedmime->text(i);
		m_cmd->setInputMimeTypes(l);
	}
	KDialogBase::slotOk();
}
Exemple #22
0
void CustomSmileyManager::slotUpSmiley( )
{
	if(!m_Config) return;

	TQListViewItem *item = lvGroups->selectedItem();
	if(item){
		int gId = m_Config->groupIndex( item->text( 0 ) );
		if(gId < 0) return;
		int row = 1; // the first row cannot be moved up
		for(row = 1; row < tblFaceList->numRows(); row++){
			if (tblFaceList->isRowSelected(row)){
				m_Config->moveFaceUp(gId, row);
				tblFaceList->swapRows(row, row -1);
				//tblFaceList->updateContents();
				tblFaceList->clearSelection();
				tblFaceList->selectRow(row - 1);
				m_IsChanged = true;
				break;
			}
		}
	}
}
Exemple #23
0
void CustomSmileyManager::slotDownSmiley( )
{
	if(!m_Config) return;

	TQListViewItem *item = lvGroups->selectedItem();
	if(item){
		int gId = m_Config->groupIndex( item->text( 0 ) );
		if(gId < 0) return;
		int row = 0;
		for(row = 0; row < tblFaceList->numRows() - 1; row++){  // ignore the last row
			if (tblFaceList->isRowSelected(row)) {
				m_Config->moveFaceDown( gId, row);
				tblFaceList->swapRows(row, row + 1);
				//tblFaceList->updateContents();
				tblFaceList->clearSelection();
				tblFaceList->selectRow(row + 1);
				m_IsChanged = true;
				break;
			}
		}
	}
}
Exemple #24
0
void CustomSmileyManager::slotRemoveSmiley( )
{
	if(!m_Config) return;

	TQListViewItem *item = lvGroups->selectedItem();
	if(item){
		int gId = m_Config->groupIndex( item->text( 0 ) );
		if(gId < 0) return;

		// as removing row also clear the selection( or change to the last row),
		// so we have to record the selection first
		bool *flags = new bool[tblFaceList->numRows()];
		int row = 0;
		for(row = 0; row < tblFaceList->numRows(); row++){
			if (tblFaceList->isRowSelected(row))
				flags[row] = true;
			else
				flags[row] = false;
		}

		for( row = tblFaceList->numRows() -1; row >= 0; row--){
			if (flags[row]){
				CustomFace face = m_Config->getFace( gId, row);
				if(removeSmileyFile(face)){
					// update config first
					m_Config->removeFace( gId, row);
					m_Config->saveXML(); // update config file in case
			
					// update display
					tblFaceList->removeRow(row);
		
					m_IsChanged = true;
				}
			}
		}
		delete []flags;
	}
}
Exemple #25
0
void CustomSmileyManager::slotMoveToSmiley( )
{
	if(!m_Config) return;

	TQListViewItem *item = lvGroups->selectedItem();
	if(item){
		if(m_MoveToMenu){
			disconnect(m_MoveToMenu, 0, 0, 0);
			delete m_MoveToMenu;
		}
		m_MoveToMenu = new TQPopupMenu(0,"moveto");

		int currIndex = m_Config->groupIndex( item->text( 0 ) );
		TQStringList groups = m_Config->groupNames();
		for( int i=0; i < (int)(groups.count()); i++){
			if(i != currIndex )  // ignore the group we are operating on
				m_MoveToMenu->insertItem(groups[i], i);
		}
		connect(m_MoveToMenu, SIGNAL(activated(int)), this, SLOT(slotMoveSmileyTo(int)));
		TQPoint p = btnMoveTo->mapToGlobal(TQPoint(btnMoveTo->width()+1,0));
		m_MoveToMenu->popup( p );
	}
}
Exemple #26
0
void KXmlCommandAdvancedDlg::slotApplyChanges()
{
	TQListViewItem	*item = m_view->currentItem();
	if (item)
	{
		if (m_name->text().isEmpty() || m_name->text() == "__root__")
		{
			KMessageBox::error(this, i18n("Invalid identification name. Empty strings and \"__root__\" are not allowed."));
			return;
		}

		m_apply->setEnabled(false);

		DrBase	*opt = (m_opts.contains(item->text(1)) ? m_opts[item->text(1)] : 0);
		m_opts.remove(item->text(1));
		delete opt;

		// update tree item
		item->setText(0, m_desc->text());
		item->setText(1, m_name->text());

		// recreate option
		if (m_type->isEnabled())
		{
			int	type = m_type->currentItem() + DrBase::String;
			switch (type)
			{
				case DrBase::Integer:
				case DrBase::Float:
					if (type == DrBase::Integer)
						opt = new DrIntegerOption;
					else
						opt = new DrFloatOption;
					opt->set("minval", m_edit1->text());
					opt->set("maxval", m_edit2->text());
					break;
				case DrBase::List:
				case DrBase::Boolean:
					{
						if (type == DrBase::List)
							opt = new DrListOption;
						else
							opt = new DrBooleanOption;
						DrListOption	*lopt = static_cast<DrListOption*>(opt);
						TQListViewItem	*item = m_values->firstChild();
						while (item)
						{
							DrBase	*choice = new DrBase;
							choice->setName(item->text(0));
							choice->set("text", item->text(1));
							lopt->addChoice(choice);
							item = item->nextSibling();
						}
						break;
					}
				case DrBase::String:
					opt = new DrStringOption;
					break;

			}
			opt->set("format", m_format->text());
			opt->set("default", m_default->text());
			opt->setValueText(opt->get("default"));
		}
		else
			opt = new DrGroup;

		opt->setName((m_name->text().isEmpty() ? generateId(m_opts) : m_name->text()));
		opt->set("text", m_desc->text());
		opt->set( "persistent", m_persistent->isChecked() ? "1" : "0" );

		m_opts[opt->name()] = opt;
	}
}
Exemple #27
0
void KXmlCommandAdvancedDlg::viewItem(TQListViewItem *item)
{
	m_dummy->setEnabled((item != 0));
	m_name->setText("");
	m_desc->setText("");
	m_format->setText("");
	m_default->setText("");
	m_values->clear();
	m_edit1->setText("");
	m_edit2->setText("");
	m_persistent->setChecked( false );
	int	typeId(-1);
	if (item)
	{
		m_name->setText(item->text(1));
		m_desc->setText(item->text(0));

		DrBase	*opt = (m_opts.contains(item->text(1)) ? m_opts[item->text(1)] : 0);
		if (opt)
		{
			bool	isgroup = (opt->type() < DrBase::String);
			if (!isgroup)
			{
				m_type->setCurrentItem(opt->type() - DrBase::String);
				typeId = m_type->currentItem();
				m_format->setText(opt->get("format"));
				m_default->setText(opt->get("default"));
			}
			m_type->setEnabled(!isgroup);
			m_default->setEnabled(!isgroup);
			m_format->setEnabled(!isgroup);
			m_stack->setEnabled(!isgroup);

			switch (opt->type())
			{
				case DrBase::Float:
				case DrBase::Integer:
					m_edit1->setText(opt->get("minval"));
					m_edit2->setText(opt->get("maxval"));
					break;
				case DrBase::Boolean:
				case DrBase::List:
					{
						TQPtrListIterator<DrBase>	it(*(static_cast<DrListOption*>(opt)->choices()));
						TQListViewItem	*item(0);
						for (; it.current(); ++it)
						{
							item = new TQListViewItem(m_values, item, it.current()->name(), it.current()->get("text"));
							item->setRenameEnabled(0, true);
							item->setRenameEnabled(1, true);
						}
						break;
					}
				default:
					break;
			}

			m_addgrp->setEnabled(isgroup);
			m_addopt->setEnabled(isgroup);

			TQListViewItem	*prevItem = findPrev(item), *nextItem = findNext(item);
			DrBase	*prevOpt = (prevItem && m_opts.contains(prevItem->text(1)) ? m_opts[prevItem->text(1)] : 0);
			DrBase	*nextOpt = (nextItem && m_opts.contains(nextItem->text(1)) ? m_opts[nextItem->text(1)] : 0);
			m_up->setEnabled(prevOpt && !(prevOpt->type() < DrBase::String && opt->type() >= DrBase::String));
			m_down->setEnabled(nextOpt && !(isgroup && nextOpt->type() >= DrBase::String));

			m_persistent->setChecked( opt->get( "persistent" ) == "1" );
		}

		m_delopt->setEnabled(true);
		m_dummy->setEnabled(opt);
	}
	else
	{
		m_delopt->setEnabled(false);
		m_addopt->setEnabled(m_view->currentItem() && m_view->isEnabled());
		m_addgrp->setEnabled(m_view->currentItem() && m_view->isEnabled());
		m_up->setEnabled(false);
		m_down->setEnabled(false);
	}
	slotTypeChanged(typeId);
	m_apply->setEnabled(false);
}
Exemple #28
0
/** remove one group, 2 options:
      1: remove all smileys in this group, then remove the group itself
      2: move all sub items into another group, then remove the empty group

     NOTE: this operation is un-recoverable.
*/
void CustomSmileyManager::slotRemoveGroupClicked( )
{
	if(!m_Config) return;

	TQListViewItem *item = lvGroups->selectedItem();
	if(item){
		if(item == lvGroups->firstChild()) return; // never remove default group

		int index = m_Config->groupIndex( item->text( 0 ) );
		if(index <= -1) return;

		TQString path = EvaMain::user->getSetting()->getCustomSmileyDir() + "/";
		TQDir dir( path + item->text(0) );
		FaceList list = m_Config->groupMembers( index);
		int result = -2;
		if(list.size() > 0 ){
			result = RmSmileyGroupDialog::QueryDialog( index, m_Config, this);
			switch(result){
				case -2: // abort
					return;
					break;
				case -1:  // remove all
					break;
				default: // otherwise, move to result
				{
					if(dir.exists()){
						dir.setFilter( TQDir::Files | TQDir::Hidden | TQDir::NoSymLinks );
						const TQFileInfoList *list = dir.entryInfoList();
						TQFileInfoListIterator it( *list);
						TQFileInfo *fi;
						TQString destDir = path;
						if(result>0)
							destDir += ( m_Config->groupName( result ) + "/") ;
						while( (fi = it.current() ) != 0 ){
							EvaHelper::copyFile(fi->absFilePath(), (destDir + fi->fileName()) );
							++it;
						}
					}
					m_Config->moveChildrenTo(index, result);
					m_IsChanged = true;
				}
			}
		}

		if(dir.exists()){
			// update the in-memory config
			if(m_Config->removeGroup( index )){
				lvGroups->takeItem( item);
				delete item;
				m_IsChanged = true;
			} else return;

			dir.setFilter( TQDir::Files | TQDir::Hidden | TQDir::NoSymLinks );
			const TQFileInfoList *list = dir.entryInfoList();
			TQFileInfoListIterator it( *list);
			TQFileInfo *fi;
			while( (fi = it.current() ) != 0 ){
				dir.remove( fi->absFilePath() );
				++it;
			}
			// as all files have been deleted,  we need keep the config file up to date.
			m_Config->saveXML();
			if( ! dir.rmdir( dir.path(), true)){
				KMessageBox::error( this, i18n( "Remove directory \"%1\" failed. " ).arg( dir.path() ),
							i18n( "Remove Directory!" ) );
			}
		}
	}
}