00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#include "addfiledlg.h"
00013
00014
#include <qcheckbox.h>
00015
#include <qfile.h>
00016
#include <qfileinfo.h>
00017
#include <qlabel.h>
00018
#include <qlayout.h>
00019
#include <qlineedit.h>
00020
#include <qpushbutton.h>
00021
#include <qtextstream.h>
00022
00023
#include <kbuttonbox.h>
00024
#include <kdebug.h>
00025
#include <kdialog.h>
00026
#include <klineedit.h>
00027
#include <kmessagebox.h>
00028
#include <ksqueezedtextlabel.h>
00029
#include <kurl.h>
00030
00031
#include "autolistviewitems.h"
00032
00033
#include "filetemplate.h"
00034
#include "misc.h"
00035
#include "urlutil.h"
00036
#include "autoprojectpart.h"
00037
#include "autoprojectwidget.h"
00038
00039
#include "kdevpartcontroller.h"
00040
00041 AddFileDialog::AddFileDialog(
AutoProjectPart *part,
AutoProjectWidget *widget,
00042
SubprojectItem *spitem,
TargetItem *item,
00043
QWidget *parent,
const char *name)
00044 :
AddFileDlgBase(parent, name, true)
00045 {
00046 connect ( createButton, SIGNAL ( clicked() ),
this, SLOT (
accept() ) );
00047 connect ( cancelButton, SIGNAL ( clicked() ),
this, SLOT ( reject() ) );
00048
00049 directoryLabel->
setText ( spitem->
path );
00050
if ( item->
name.isEmpty() )
00051 targetLabel->setText ( i18n (
"%1 in %2" ).arg ( item->
primary ).arg ( item->
prefix ) );
00052
else
00053 targetLabel->setText ( item->
name );
00054
00055 setIcon ( SmallIcon (
"filenew.png" ) );
00056
00057
m_part = part;
00058
m_widget = widget;
00059
subProject = spitem;
00060
target = item;
00061 }
00062
00063
00064 AddFileDialog::~AddFileDialog()
00065 {}
00066
00067
00068 void AddFileDialog::accept()
00069 {
00070
QString name = fileEdit->text();
00071
if (name.find(
'/') != -1) {
00072 KMessageBox::sorry(
this, i18n(
"Please enter the file name without '/' and so on."));
00073
return;
00074 }
00075
00076
QListViewItem *child =
target->firstChild();
00077
while (child) {
00078
FileItem *item = static_cast<FileItem*>(child);
00079
if (name == item->
name) {
00080 KMessageBox::sorry(
this, i18n(
"This file is already in the target."));
00081
return;
00082 }
00083 child = child->nextSibling();
00084 }
00085
00086
if (templateCheckBox->isChecked()) {
00087
QString srcdir =
m_part->
projectDirectory();
00088
QString destdir =
subProject->
path;
00089
QString destpath = destdir +
"/" + name;
00090
if (
QFileInfo(destpath).exists()) {
00091 KMessageBox::sorry(
this, i18n(
"<b>A file with this name already exists!</b><br><br>Please use the \"Add existing file\" dialog!"));
00092
return;
00093 }
00094
if( !FileTemplate::copy(
m_part,
QFileInfo(name).extension(), destpath) )
00095
kdDebug(9020) <<
"cannot create file " << destpath <<
endl;
00096 }
else {
00097
00098
QString srcdir =
m_part->
projectDirectory();
00099
QString destdir =
subProject->
path;
00100
QString destpath = destdir +
"/" + name;
00101
00102
if (
QFileInfo(destpath).exists()) {
00103 KMessageBox::sorry(
this, i18n(
"<b>A file with this name already exists!</b><br><br>Please use the \"Add existing file\" dialog!"));
00104
return;
00105 }
00106
00107
QFile f( destpath );
00108
if( f.open(IO_WriteOnly) )
00109 f.close();
00110 }
00111
00112
FileItem *fitem =
m_widget->
createFileItem(name,
subProject);
00113
target->
sources.append(fitem);
00114
target->insertItem(fitem);
00115
00116
QString canontargetname = AutoProjectTool::canonicalize(
target->
name);
00117
QString varname;
00118
if(
target->
primary ==
"PROGRAMS" ||
target->
primary ==
"LIBRARIES" ||
target->
primary ==
"LTLIBRARIES" )
00119 varname = canontargetname +
"_SOURCES";
00120
else
00121 varname =
target->
prefix +
"_" +
target->
primary;
00122
subProject->
variables[varname] += (
" " + name);
00123
00124
QMap<QString,QString> replaceMap;
00125 replaceMap.insert(varname,
subProject->
variables[varname]);
00126
00127 AutoProjectTool::modifyMakefileam(
subProject->
path +
"/Makefile.am", replaceMap);
00128
00129
m_widget->
emitAddedFile(
subProject->
path.mid (
m_part->
project()->
projectDirectory().length() + 1 ) +
"/" + name );
00130
m_part->
partController()->
editDocument (
KURL (
subProject->
path +
"/" + name ) );
00131
00132 QDialog::accept();
00133 }
00134
00135
#include "addfiledlg.moc"