/*************************************************************************** * Copyright (C) 2003 by KDevelop authors * * tdevelop-devel@kde.org * * * * 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 "partwidget.h" #include #include #include #include #include #include #include #include #include #include #include #include "kdevversioncontrol.h" #include "kdevcore.h" #include "kdevproject.h" #include "kdevmainwindow.h" #include "fileviewpart.h" #include "filetreewidget.h" /////////////////////////////////////////////////////////////////////////////// // class PartWidget /////////////////////////////////////////////////////////////////////////////// PartWidget::PartWidget( FileViewPart *part, TQWidget *parent ) : TQVBox( parent, "fileviewpartwidget" ), m_filetree( 0 ), m_filter( 0 ), m_btnFilter( 0 ), m_part( part ) { Q_ASSERT( part && parent ); KDevVCSFileInfoProvider *infoProvider = 0; if (part && part->versionControl() && part->versionControl()->fileInfoProvider()) infoProvider = part->versionControl()->fileInfoProvider(); m_filetree = new FileTreeWidget( m_part, this, infoProvider ); setCaption(i18n("File Tree")); m_filetree->setCaption(i18n("File Tree")); m_filetree->setIcon(SmallIcon("folder")); TQWhatsThis::add(m_filetree, i18n("File tree

" "The file viewer shows all files of the project " "in a tree layout.")); TQHBox* filterBox = new TQHBox( this ); m_btnFilter = new TQToolButton( filterBox ); m_btnFilter->setIconSet( SmallIconSet("filter" ) ); m_btnFilter->setToggleButton( true ); m_filter = new KHistoryCombo( true, filterBox, "filter"); m_filter->setSizePolicy( TQSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Fixed )); filterBox->setStretchFactor(m_filter, 2); connect( m_btnFilter, TQT_SIGNAL( clicked() ), this, TQT_SLOT( slotBtnFilterClick() ) ); connect( m_filter, TQT_SIGNAL( activated(const TQString&) ), this, TQT_SLOT( slotFilterChange(const TQString&) ) ); connect( m_filter, TQT_SIGNAL( returnPressed(const TQString&) ), m_filter, TQT_SLOT( addToHistory(const TQString&) ) ); TQWhatsThis::add ( m_filter, i18n("

Here you can enter a name filter to limit which files are not displayed." "

To clear the filter, toggle off the filter button to the left." "

To reapply the last filter used, toggle on the filter button." ) ); TQWhatsThis::add ( m_btnFilter, i18n("

This button clears the name filter when toggled off, or " "reapplies the last filter used when toggled on.") ); m_filter->insertItem( m_filetree->hidePatterns() ); } /////////////////////////////////////////////////////////////////////////////// PartWidget::~PartWidget() { } /////////////////////////////////////////////////////////////////////////////// void PartWidget::showProjectFiles() { m_filetree->openDirectory( m_part->project()->projectDirectory() ); m_filetree->applyHidePatterns( m_filetree->hidePatterns() ); } /////////////////////////////////////////////////////////////////////////////// void PartWidget::slotFilterChange( const TQString & nf ) { TQString f = nf.stripWhiteSpace(); bool empty = f.isEmpty() || f == "*"; if ( empty ) { m_filter->lineEdit()->setText( TQString() ); TQToolTip::add( m_btnFilter, i18n("Apply last filter (\"%1\")").arg( m_lastFilter ) ); } else { m_lastFilter = f; TQToolTip::add( m_btnFilter, i18n("Clear filter") ); } m_btnFilter->setOn( !empty ); // this will be never true after the m_filter has been used;) m_btnFilter->setEnabled( !( empty && m_lastFilter.isEmpty() ) ); m_filetree->applyHidePatterns( f ); } /////////////////////////////////////////////////////////////////////////////// /* When the button in the filter box toggles: If off: If the name filer is anything but "" or "*", reset it. If on: Set last filter. */ void PartWidget::slotBtnFilterClick() { if ( !m_btnFilter->isOn() ) { slotFilterChange( TQString() ); } else { m_filter->lineEdit()->setText( m_lastFilter ); slotFilterChange( m_lastFilter ); } } void PartWidget::focusInEvent( TQFocusEvent * ) { m_filetree->setFocus(); } #include "partwidget.moc"