1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
/***************************************************************************
* Copyright (C) 2007 by Andreas Pakulat *
* apaku@gmx.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. *
* *
***************************************************************************/
#include "selectnewfilesdialog.h"
#include <tqlistview.h>
#include <tdelistview.h>
#include <tqheader.h>
#include <tqstringlist.h>
#include <tdelocale.h>
#include <kdebug.h>
#include "selectnewfilesdialogbase.h"
SelectNewFilesDialog::SelectNewFilesDialog( TQStringList paths, TQWidget* parent, const char* name )
: KDialogBase( parent, name, true, i18n("Add newly created files to project"), KDialogBase::Ok|KDialogBase::Cancel )
{
m_widget = new SelectNewFilesDialogBase(this);
m_widget->fileView->header()->hide();
m_widget->fileView->addColumn(i18n("Path") );
for( TQStringList::const_iterator it = paths.begin(); it != paths.end(); ++it)
{
addPath(0, *it);
}
setMainWidget( m_widget );
resize( 300,400 );
}
SelectNewFilesDialog::~SelectNewFilesDialog()
{}
void SelectNewFilesDialog::slotCancel()
{
excludePaths.clear();
includePaths.clear();
KDialogBase::slotCancel();
}
void SelectNewFilesDialog::checkItem( TQCheckListItem* item, const TQString& curpath )
{
if( !item )
return;
TQString path = curpath + item->text();
if( item->state() != TQCheckListItem::Off )
includePaths << path;
else
excludePaths << path;
if( item->firstChild() )
{
checkItem( static_cast<TQCheckListItem*>(item->firstChild()), path+"/" );
}
if( item->nextSibling() )
{
checkItem( static_cast<TQCheckListItem*>(item->nextSibling()), curpath );
}
}
void SelectNewFilesDialog::slotOk()
{
TQCheckListItem* item = static_cast<TQCheckListItem*> (m_widget->fileView->firstChild());
checkItem( item, "" );
kdDebug(9025) << "Inc List:" << includePaths << endl;
kdDebug(9025) << "Exc List:" << excludePaths << endl;
KDialogBase::slotOk();
}
void SelectNewFilesDialog::addPath( TQCheckListItem* item, const TQString& path )
{
if( path.isEmpty() )
return;
TQStringList parts = TQStringList::split("/", path );
TQString name = parts.first();
parts.pop_front();
TQCheckListItem* i = createItem( item, name, parts.size() );
i->setState( TQCheckListItem::On );
i->setTristate( true );
addPath(i, parts.join("/") );
}
TQCheckListItem* SelectNewFilesDialog::createItem( TQCheckListItem* parent, const TQString& name, int count )
{
TQCheckListItem::Type t = TQCheckListItem::CheckBox;
if( count > 0 )
t = TQCheckListItem::CheckBoxController;
if( parent == 0 )
{
TQListViewItem* item = m_widget->fileView->firstChild();
while( item )
{
if( item->text( 0 ) == name )
return static_cast<TQCheckListItem*>(item);
item = item->nextSibling();
}
return new TQCheckListItem( m_widget->fileView, name, t );
}else
{
TQListViewItem* item = parent->firstChild();
while( item )
{
if( item->text( 0 ) == name )
return static_cast<TQCheckListItem*>(item);
item = item->nextSibling();
}
return new TQCheckListItem( parent, name, t );
}
}
TQStringList SelectNewFilesDialog::excludedPaths() const
{
return excludePaths;
}
TQStringList SelectNewFilesDialog::includedPaths() const
{
return includePaths;
}
#include "selectnewfilesdialog.moc"
|