00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#include <qwhatsthis.h>
00013
#include <qvbox.h>
00014
#include <qlayout.h>
00015
#include <qtoolbutton.h>
00016
#include <qdom.h>
00017
#include <kcombobox.h>
00018
#include <kaction.h>
00019
#include <kdebug.h>
00020
#include <kiconloader.h>
00021
#include <klocale.h>
00022
00023
#include "kdevvcsfileinfoprovider.h"
00024
#include "kdevversioncontrol.h"
00025
#include "kdevcore.h"
00026
#include "kdevproject.h"
00027
#include "kdevmainwindow.h"
00028
00029
#include "fileviewpart.h"
00030
#include "filetreewidget.h"
00031
#include "partwidget.h"
00032
00034
00036
00037 PartWidget::PartWidget(
FileViewPart *part,
QWidget *parent )
00038 :
QVBox( parent, "fileviewpartwidget" ), m_filetree( 0 ),
00039 m_filter( 0 ), m_btnFilter( 0 ), m_part( part )
00040 {
00041
00042
00043
KDevVCSFileInfoProvider *infoProvider = 0;
00044
if (part && part->
versionControl() && part->
versionControl()->
fileInfoProvider())
00045 infoProvider = part->
versionControl()->
fileInfoProvider();
00046
00047
m_filetree =
new FileTreeWidget(
m_part,
this, infoProvider );
00048 setCaption(i18n(
"File Tree"));
00049
m_filetree->setCaption(i18n(
"File Tree"));
00050
m_filetree->setIcon(SmallIcon(
"folder"));
00051 QWhatsThis::add(
m_filetree, i18n(
"<b>File tree</b><p>"
00052
"The file viewer shows all files of the project "
00053
"in a tree layout."));
00054
00055
QHBox* filterBox =
new QHBox(
this );
00056
m_btnFilter =
new QToolButton( filterBox );
00057
m_btnFilter->setIconSet( SmallIconSet(
"filter" ) );
00058
m_btnFilter->setToggleButton(
true );
00059
m_filter =
new KHistoryCombo(
true, filterBox,
"filter");
00060
m_filter->setSizePolicy(
QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ));
00061 filterBox->setStretchFactor(
m_filter, 2);
00062
00063 connect(
m_btnFilter, SIGNAL( clicked() ),
this, SLOT(
slotBtnFilterClick() ) );
00064 connect(
m_filter, SIGNAL( activated(
const QString&) ),
this, SLOT(
slotFilterChange(
const QString&) ) );
00065 connect(
m_filter, SIGNAL( returnPressed(
const QString&) ),
00066
m_filter, SLOT( addToHistory(
const QString&) ) );
00067
00068 QWhatsThis::add
00069 (
m_filter,
00070 i18n(
"<p>Here you can enter a name filter to limit which files are <b>not displayed</b>."
00071
"<p>To clear the filter, toggle off the filter button to the left."
00072
"<p>To reapply the last filter used, toggle on the filter button." ) );
00073 QWhatsThis::add
00074 (
m_btnFilter,
00075 i18n(
"<p>This button clears the name filter when toggled off, or "
00076
"reapplies the last filter used when toggled on.") );
00077
00078 m_filter->insertItem(
m_filetree->
hidePatterns() );
00079 }
00080
00082
00083 PartWidget::~PartWidget()
00084 {
00085 }
00086
00088
00089 void PartWidget::showProjectFiles()
00090 {
00091
m_filetree->
openDirectory(
m_part->
project()->
projectDirectory() );
00092
m_filetree->
applyHidePatterns(
m_filetree->
hidePatterns() );
00093 }
00094
00096
00097 void PartWidget::slotFilterChange(
const QString & nf )
00098 {
00099
QString f = nf.stripWhiteSpace();
00100
bool empty = f.isEmpty() || f ==
"*";
00101
if (
empty )
00102 {
00103
m_filter->lineEdit()->setText( QString::null );
00104 QToolTip::add(
m_btnFilter,
QString( i18n(
"Apply last filter (\"%1\")") ).arg(
m_lastFilter ) );
00105 }
00106
else
00107 {
00108
m_lastFilter = f;
00109 QToolTip::add(
m_btnFilter, i18n(
"Clear filter") );
00110 }
00111
m_btnFilter->setOn( !
empty );
00112
00113
m_btnFilter->setEnabled( !(
empty &&
m_lastFilter.isEmpty() ) );
00114
00115
m_filetree->
applyHidePatterns( f );
00116 }
00117
00119
00120
00121
00122
00123
00124
00125
00126 void PartWidget::slotBtnFilterClick()
00127 {
00128
if ( !
m_btnFilter->isOn() )
00129 {
00130
slotFilterChange( QString::null );
00131 }
00132
else
00133 {
00134
m_filter->lineEdit()->setText(
m_lastFilter );
00135
slotFilterChange(
m_lastFilter );
00136 }
00137 }
00138
00139 void PartWidget::focusInEvent(
QFocusEvent * )
00140 {
00141
m_filetree->setFocus();
00142 }
00143
00144
#include "partwidget.moc"