00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
#include <kurlrequester.h>
00016
#include <kfiledialog.h>
00017
#include <klocale.h>
00018
#include <kstandarddirs.h>
00019
#include <kconfig.h>
00020
#include <kdebug.h>
00021
00022
00023
#include "doctreeprojectconfigwidget.h"
00024
#include "doctreeviewpart.h"
00025
#include "doctreeviewwidget.h"
00026
#include "doctreeviewfactory.h"
00027
#include "misc.h"
00028
00029
00030
#include "kdevproject.h"
00031
#include "domutil.h"
00032
00033
00034 class DocCheckItem:
public QCheckListItem
00035 {
00036
public:
00037 enum DocType
00038 {
00039
QT_XML,
00040
DOXYGEN,
00041
KDOC,
00042
TOC,
00043
DEVHELP
00044 };
00045
00046 DocCheckItem (
DocTreeProjectConfigWidget *widget, DocType type,
QCheckListItem * parent,
const QString & text, Type tt = Controller )
00047 :
QCheckListItem(parent,
text, tt),
m_widget(widget),
m_type(type)
00048 {
00049 }
00050
00051 DocCheckItem (
DocTreeProjectConfigWidget *widget, DocType type,
QListViewItem * parent,
const QString & text, Type tt = Controller )
00052 :
QCheckListItem(parent,
text, tt),
m_widget(widget),
m_type(type)
00053 {
00054 }
00055
00056 DocCheckItem (
DocTreeProjectConfigWidget *widget, DocType type,
QListView * parent,
const QString & text, Type tt = Controller )
00057 :
QCheckListItem(parent,
text, tt),
m_widget(widget),
m_type(type)
00058 {
00059 }
00060
00061 virtual DocType type()
00062 {
00063
return m_type;
00064 }
00065
00066 virtual QString name()
const
00067
{
00068
return m_name;
00069 }
00070 void setName(
const QString &name)
00071 {
00072
m_name = name;
00073 }
00074
00075
protected:
00076 virtual void stateChange (
bool state )
00077 {
00078
if (state ==
true)
00079 {
00080
switch (
type())
00081 {
00082
case QT_XML:
00083
m_widget->
m_ignoreQT_XML.remove(
name() );
00084
break;
00085
00086
case DOXYGEN:
00087
m_widget->
m_ignoreDoxygen.remove(
name() );
00088
break;
00089
00090
case KDOC:
00091
m_widget->
m_ignoreKDoc.remove(
name() );
00092
break;
00093
00094
case TOC:
00095
m_widget->
m_ignoreToc.remove(
name() );
00096
break;
00097
00098
case DEVHELP:
00099
m_widget->
m_ignoreDevHelp.remove(
name() );
00100
break;
00101
00102
default:
00103
kdDebug(9002) <<
"item unchecked with unknown DocType: " <<
name() <<
endl;
00104 }
00105 }
00106
else
00107 {
00108
switch (
type())
00109 {
00110
case QT_XML:
00111
m_widget->
m_ignoreQT_XML <<
name();
00112
break;
00113
00114
case DOXYGEN:
00115
m_widget->
m_ignoreDoxygen <<
name();
00116
break;
00117
00118
case KDOC:
00119
m_widget->
m_ignoreKDoc <<
name();
00120
break;
00121
00122
case TOC:
00123
m_widget->
m_ignoreToc <<
name();
00124
break;
00125
00126
case DEVHELP:
00127
m_widget->
m_ignoreDevHelp <<
name();
00128
break;
00129
00130
default:
00131
kdDebug(9002) <<
"item unchecked with unknown DocType: " <<
name() <<
endl;
00132 }
00133 }
00134 }
00135
00136
private:
00137 DocTreeProjectConfigWidget *
m_widget;
00138 DocType m_type;
00139 QString m_name;
00140 };
00141
00142
00143 DocTreeProjectConfigWidget::DocTreeProjectConfigWidget(
DocTreeViewWidget *widget,
00144
QWidget *parent,
KDevProject *project,
const char *name):
DocTreeProjectConfigWidgetBase(parent, name)
00145
00146 {
00147
m_widget = widget;
00148
m_project = project;
00149
00150
readConfig();
00151
00152 docListView->
addColumn(i18n(
"Title"));
00153 docListView->
addColumn(i18n(
"URL"));
00154 docListView->setAllColumnsShowFocus(
true);
00155 }
00156
00157
00158
00159
00160
00161
00162 void DocTreeProjectConfigWidget::readConfig()
00163 {
00164
QMap<QString, QString> xmap;
00165
QDomDocument d;
00166
KConfig* config = DocTreeViewFactory::instance()->config();
00167
KStandardDirs* dirs = DocTreeViewFactory::instance()->dirs();
00168
QStringList tocs;
00169
00170
if (
m_project->
projectDom())
00171 d = *
m_project->
projectDom();
00172
00173
QString userdocDir = DomUtil::readEntry(d ,
00174
"/kdevdoctreeview/projectdoc/userdocDir",
m_project->
projectDirectory() +
"/html/" );
00175 userdocdirEdit->
setURL( userdocDir[0] !=
QChar(
'/') ?
m_project->
projectDirectory() +
QString(
"/") + userdocDir : userdocDir );
00176 userdocdirEdit->
fileDialog()->
setMode( KFile::Directory );
00177
00178
QString apidocDir = DomUtil::readEntry(d,
00179
"/kdevdoctreeview/projectdoc/apidocDir",
m_project->
projectDirectory() +
"/html/" );
00180 apidocdirEdit->
setURL( apidocDir[0] !=
QChar(
'/') ?
m_project->
projectDirectory() +
QString(
"/") + apidocDir : apidocDir );
00181 apidocdirEdit->
fileDialog()->
setMode( KFile::Directory );
00182
00183
m_ignoreQT_XML = DomUtil::readListEntry(d,
"/kdevdoctreeview/ignoreqt_xml",
"toc");
00184
m_ignoreDoxygen = DomUtil::readListEntry(d,
"/kdevdoctreeview/ignoredoxygen",
"toc");
00185
m_ignoreKDoc = DomUtil::readListEntry(d,
"/kdevdoctreeview/ignorekdocs",
"toc");
00186
m_ignoreToc = DomUtil::readListEntry(d,
"/kdevdoctreeview/ignoretocs",
"toc");
00187
m_ignoreDevHelp = DomUtil::readListEntry(d,
"/kdevdoctreeview/ignoredevhelp",
"toc");
00188
00189
m_qtDocs =
new QListViewItem(docListView, i18n(
"Qt Documentation Collection"));
00190
m_qtDocs->setOpen(
true);
00191
m_doxygenDocs =
new QListViewItem(docListView, i18n(
"Doxygen Documentation Collection"));
00192
m_doxygenDocs->setOpen(
true);
00193
m_kdocDocs =
new QListViewItem(docListView, i18n(
"KDoc Documentation Collection"));
00194
m_kdocDocs->setOpen(
true);
00195
m_tocDocs =
new QListViewItem(docListView, i18n(
"KDevelopTOC Documentation Collection"));
00196
m_tocDocs->setOpen(
true);
00197
m_devHelpDocs =
new QListViewItem(docListView, i18n(
"DevHelp Documentation Collection"));
00198
m_devHelpDocs->setOpen(
true);
00199
00200
00201 xmap = config->
entryMap(
"General Qt");
00202
for (
QMap<QString, QString>::Iterator itx = xmap.begin(); itx != xmap.end(); ++itx)
00203 {
00205
const QString name(itx.key());
00206
DocCheckItem *item =
new DocCheckItem(
this, DocCheckItem::QT_XML,
m_qtDocs, itx.key(), QCheckListItem::CheckBox);
00207 item->setText(1, config->
readPathEntry(itx.key()));
00208 item->
setName(name);
00209 item->setOn(!
m_ignoreQT_XML.contains( name ));
00210 }
00211
00212
00213 xmap = config->
entryMap(
"General Doxygen");
00214
for (
QMap<QString, QString>::Iterator itx = xmap.begin(); itx != xmap.end(); ++itx)
00215 {
00217
const QString name(itx.key());
00218
DocCheckItem *item =
new DocCheckItem(
this, DocCheckItem::DOXYGEN,
m_doxygenDocs, itx.key(), QCheckListItem::CheckBox);
00219 item->setText(1, config->
readPathEntry(itx.key()));
00220 item->
setName(name);
00221 item->setOn(!
m_ignoreDoxygen.contains( name ));
00222 }
00223
00224
00225
00226 xmap = config->
entryMap(
"General KDoc");
00227
for (
QMap<QString, QString>::Iterator itx = xmap.begin(); itx != xmap.end(); ++itx)
00228 {
00230
const QString name(itx.key());
00231
DocCheckItem *item =
new DocCheckItem(
this, DocCheckItem::KDOC,
m_kdocDocs, itx.key(), QCheckListItem::CheckBox);
00232 item->setText(1, config->
readPathEntry(itx.key()));
00233 item->
setName(name);
00234 item->setOn(!
m_ignoreKDoc.contains( name ));
00235 }
00236
00237
00238 tocs = dirs->
findAllResources(
"doctocs", QString::null,
false,
true);
00239
for (QStringList::Iterator tit = tocs.begin(); tit != tocs.end(); ++tit)
00240 {
00241
const QString name(
QFileInfo(*tit).baseName() );
00242
const QString location( DocTreeViewTool::tocLocation( *tit ) );
00243
const QString title (DocTreeViewTool::tocTitle( *tit ));
00244
DocCheckItem *item =
new DocCheckItem(
this, DocCheckItem::TOC,
m_tocDocs, title, QCheckListItem::CheckBox);
00245 item->setText(1, location);
00246 item->
setName(name);
00247 item->setOn(!
m_ignoreToc.contains( name ));
00248 }
00249
00250
00251 tocs = dirs->
findAllResources(
"docdevhelp", QString::null,
false,
true);
00252
for (QStringList::Iterator tit = tocs.begin(); tit != tocs.end(); ++tit)
00253 {
00254
const QString name(
QFileInfo(*tit).baseName() );
00255
BookInfo inf = DocTreeViewTool::devhelpInfo(*tit);
00256
DocCheckItem *item =
new DocCheckItem(
this, DocCheckItem::DEVHELP,
m_devHelpDocs, inf.
title, QCheckListItem::CheckBox);
00257 item->setText(1, DocTreeViewTool::devhelpLocation(name, inf.
defaultLocation));
00258 item->
setName(name);
00259 item->setOn(!
m_ignoreDevHelp.contains( name ));
00260 }
00261 }
00262
00263 void DocTreeProjectConfigWidget::storeConfig()
00264 {
00265
QDomDocument d;
00266
00267
if (
m_project->
projectDom())
00268 d = *
m_project->
projectDom();
00269
00270
QString userdocUrl = userdocdirEdit->
url();
00271
QString apidocUrl = apidocdirEdit->
url();
00272
00273
if( userdocUrl.startsWith(
m_project->
projectDirectory()) )
00274 userdocUrl = userdocUrl.mid(
m_project->
projectDirectory().length() + 1 );
00275
00276
if( apidocUrl.startsWith(
m_project->
projectDirectory()) )
00277 apidocUrl = apidocUrl.mid(
m_project->
projectDirectory().length() + 1 );
00278
00279 DomUtil::writeEntry(d,
00280
"/kdevdoctreeview/projectdoc/userdocDir", userdocUrl );
00281 DomUtil::writeEntry(d,
00282
"/kdevdoctreeview/projectdoc/apidocDir", apidocUrl );
00283
00284 DomUtil::writeListEntry(d,
00285
"/kdevdoctreeview/ignoreqt_xml",
"toc",
m_ignoreQT_XML );
00286 DomUtil::writeListEntry(d,
00287
"/kdevdoctreeview/ignoredoxygen",
"toc",
m_ignoreDoxygen );
00288 DomUtil::writeListEntry(d,
00289
"/kdevdoctreeview/ignorekdocs",
"toc",
m_ignoreKDoc );
00290 DomUtil::writeListEntry(d,
00291
"/kdevdoctreeview/ignoretocs",
"toc",
m_ignoreToc );
00292 DomUtil::writeListEntry(d,
00293
"/kdevdoctreeview/ignoredevhelp",
"toc",
m_ignoreDevHelp );
00294 }
00295
00296 void DocTreeProjectConfigWidget::accept()
00297 {
00298
storeConfig();
00299
m_widget->
configurationChanged();
00300 }
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
#include "doctreeprojectconfigwidget.moc"