/***************************************************************************
projectnewgeneral . cpp - description
- - - - - - - - - - - - - - - - - - -
begin : Fri Oct 27 2000
copyright : ( C ) 2000 by Dmitry Poplavsky & Alexander Yakovlev & Eric Laffoon < pdima @ users . sourceforge . net , yshurik @ penguinpowered . com , sequitur @ easystreet . com >
( C ) 2001 - 2002 by Andras Mantia < amantia @ 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 . *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// qt includes
# include <tqdir.h>
# include <tqevent.h>
# include <tqlabel.h>
# include <tqlayout.h>
# include <tqlineedit.h>
# include <tqpushbutton.h>
# include <tqradiobutton.h>
# include <tqcombobox.h>
// kde includes
# include <tdefiledialog.h>
# include <kiconloader.h>
# include <klocale.h>
# include <kmessagebox.h>
# include <kurl.h>
# include <kprotocolinfo.h>
# include <tdeversion.h>
//app includes
# include "projectnewgeneral.h"
# include "quantacommon.h"
# include "qextfileinfo.h"
ProjectNewGeneral : : ProjectNewGeneral ( TQWidget * parent , const char * name )
: ProjectNewGeneralS ( parent , name )
{
imagelabel - > setPixmap ( UserIcon ( " wiznewprjglb " ) ) ;
linePrjName - > setFocus ( ) ;
TQStringList protocols = KProtocolInfo : : protocols ( ) ;
protocols . sort ( ) ;
for ( uint i = 0 ; i < protocols . count ( ) ; i + + )
{
KURL p ;
p . setProtocol ( protocols [ i ] ) ;
TQString protocol = protocols [ i ] ;
if ( KProtocolInfo : : supportsWriting ( p ) & &
KProtocolInfo : : supportsMakeDir ( p ) & &
KProtocolInfo : : supportsDeleting ( p ) & &
( protocol ! = " file " & & protocol ! = " fonts " & & protocol ! = " floppy " & & protocol ! = " newcd " ) )
{
comboProtocol - > insertItem ( protocol ) ;
}
}
comboProtocol - > setCurrentItem ( 0 ) ;
slotProtocolChanged ( i18n ( " Local " ) ) ;
linePrjTmpl - > setText ( " templates " ) ;
linePrjToolbar - > setText ( " toolbars " ) ;
connect ( comboProtocol , TQT_SIGNAL ( activated ( const TQString & ) ) , TQT_SLOT ( slotProtocolChanged ( const TQString & ) ) ) ;
connect ( linePrjFile , TQT_SIGNAL ( textChanged ( const TQString & ) ) ,
this , TQT_SLOT ( slotLinePrjFile ( const TQString & ) ) ) ;
connect ( linePrjName , TQT_SIGNAL ( textChanged ( const TQString & ) ) ,
this , TQT_SLOT ( slotLinePrjFile ( const TQString & ) ) ) ;
connect ( linePrjDir , TQT_SIGNAL ( textChanged ( const TQString & ) ) ,
this , TQT_SLOT ( slotLinePrjFile ( const TQString & ) ) ) ;
connect ( buttonDir , TQT_SIGNAL ( clicked ( ) ) ,
this , TQT_SLOT ( slotButtonDir ( ) ) ) ;
connect ( linePrjName , TQT_SIGNAL ( textChanged ( const TQString & ) ) ,
this , TQT_SLOT ( slotChangeNames ( const TQString & ) ) ) ;
connect ( linePrjTmpl , TQT_SIGNAL ( textChanged ( const TQString & ) ) , TQT_SLOT ( slotLinePrjFile ( const TQString & ) ) ) ;
connect ( buttonTmpl , TQT_SIGNAL ( clicked ( ) ) , TQT_SLOT ( slotButtonTmpl ( ) ) ) ;
connect ( linePrjToolbar , TQT_SIGNAL ( textChanged ( const TQString & ) ) , TQT_SLOT ( slotLinePrjFile ( const TQString & ) ) ) ;
connect ( buttonToolbar , TQT_SIGNAL ( clicked ( ) ) , TQT_SLOT ( slotButtonToolbar ( ) ) ) ;
linePrjTmpl - > installEventFilter ( this ) ;
linePrjToolbar - > installEventFilter ( this ) ;
}
ProjectNewGeneral : : ~ ProjectNewGeneral ( ) {
}
void ProjectNewGeneral : : slotButtonDir ( )
{
slotLinePrjFile ( " " ) ; // make sure baseUrl is correct
KURL url = KFileDialog : : getExistingURL ( baseUrl . url ( ) , this ,
i18n ( " Select Project Folder " ) ) ;
if ( ! url . isEmpty ( ) )
{
linePrjDir - > setText ( url . path ( ) ) ;
}
}
void ProjectNewGeneral : : slotLinePrjFile ( const TQString & )
{
bool valid = ! ( linePrjFile - > text ( ) . isEmpty ( ) | |
linePrjName - > text ( ) . isEmpty ( ) | |
linePrjDir - > text ( ) . isEmpty ( ) | |
linePrjTmpl - > text ( ) . isEmpty ( ) | |
linePrjToolbar - > text ( ) . isEmpty ( ) ) ;
KURL url ;
TQString s = lineHost - > text ( ) ;
if ( ! s . isEmpty ( ) )
url . setHost ( s ) ;
s = lineUser - > text ( ) ;
if ( ! s . isEmpty ( ) )
url . setUser ( s ) ;
s = linePasswd - > text ( ) ;
if ( ! s . isEmpty ( ) )
url . setPass ( s ) ;
s = linePort - > text ( ) ;
if ( ! s . isEmpty ( ) )
url . setPort ( linePort - > text ( ) . toInt ( ) ) ;
url . setProtocol ( comboProtocol - > currentText ( ) ) ;
if ( url . protocol ( ) = = i18n ( " Local " ) ) url . setProtocol ( " file " ) ;
url . setPath ( linePrjDir - > text ( ) ) ;
url . adjustPath ( 1 ) ;
if ( ! url . path ( ) . startsWith ( " / " ) ) url . setPath ( " / " + url . path ( ) ) ;
if ( url . isValid ( ) )
{
emit setBaseURL ( url ) ;
baseUrl = url ;
if ( baseUrl . isLocalFile ( ) )
{
s = QExtFileInfo : : canonicalPath ( baseUrl . path ( ) ) ;
if ( ! s . isEmpty ( ) )
baseUrl . setPath ( s ) ;
}
}
emit enableNextButton ( this , valid ) ;
}
void ProjectNewGeneral : : slotChangeNames ( const TQString & text )
{
int i ;
TQString fname = text . lower ( ) ;
while ( ( i = fname . find ( " " ) ) > = 0 ) fname . remove ( i , 1 ) ;
linePrjFile - > setText ( fname + " .webprj " ) ;
}
TQString ProjectNewGeneral : : type ( )
{
// if ( radioCvs ->isChecked() ) return "CVS";
if ( radioLocal - > isChecked ( ) ) return " Local " ;
if ( radioWeb - > isChecked ( ) ) return " Web " ;
return " Local " ;
}
void ProjectNewGeneral : : setMargin ( int i )
{
layout ( ) - > setMargin ( i ) ;
}
void ProjectNewGeneral : : slotButtonTmpl ( )
{
slotLinePrjFile ( " " ) ; // make sure baseUrl is correct
KURL url = KFileDialog : : getExistingURL ( baseUrl . url ( ) , this ,
i18n ( " Select Project Template Folder " ) ) ;
if ( ! url . isEmpty ( ) & & baseUrl . isParentOf ( url ) )
{
linePrjTmpl - > setText ( KURL : : relativeURL ( baseUrl , url ) ) ;
} else
{
KMessageBox : : sorry ( this , i18n ( " <qt>The project templates must be stored under the main project folder: <br><br><b>%1</b></qt> " ) . arg ( baseUrl . prettyURL ( 0 , KURL : : StripFileProtocol ) ) ) ;
}
}
void ProjectNewGeneral : : slotButtonToolbar ( )
{
slotLinePrjFile ( " " ) ; // make sure baseUrl is correct
KURL url = KFileDialog : : getExistingURL ( baseUrl . url ( ) , this ,
i18n ( " Select Project Toolbar & Actions Folder " ) ) ;
if ( ! url . isEmpty ( ) & & baseUrl . isParentOf ( url ) )
{
linePrjToolbar - > setText ( KURL : : relativeURL ( baseUrl , url ) ) ;
}
{
KMessageBox : : sorry ( 0 , i18n ( " <qt>The project toolbars must be stored under the main project folder: <br><br><b>%1</b></qt> " )
. arg ( baseUrl . prettyURL ( 0 , KURL : : StripFileProtocol ) ) ) ;
}
}
void ProjectNewGeneral : : slotProtocolChanged ( const TQString & protocol )
{
bool status = true ;
if ( protocol = = i18n ( " Local " ) )
{
status = false ;
}
lineHost - > setEnabled ( status ) ;
lineUser - > setEnabled ( status ) ;
linePasswd - > setEnabled ( status ) ;
linePort - > setEnabled ( status ) ;
radioWeb - > setEnabled ( ! status ) ;
slotChangeNames ( linePrjName - > text ( ) ) ;
if ( ! status )
lineHost - > clear ( ) ;
}
bool ProjectNewGeneral : : eventFilter ( TQObject * watched , TQEvent * e )
{
if ( e - > type ( ) = = TQEvent : : FocusOut )
{
if ( TQT_BASE_OBJECT ( watched ) = = TQT_BASE_OBJECT ( linePrjTmpl ) )
{
KURL url = baseUrl ;
QuantaCommon : : setUrl ( url , linePrjTmpl - > text ( ) ) ;
url = QExtFileInfo : : toAbsolute ( url , baseUrl ) ;
if ( ! baseUrl . isParentOf ( url ) )
{
KMessageBox : : sorry ( this , i18n ( " <qt>The project templates must be stored under the main project folder: <br><br><b>%1</b></qt> " ) . arg ( baseUrl . prettyURL ( 0 , KURL : : StripFileProtocol ) ) ) ;
linePrjTmpl - > setFocus ( ) ;
emit enableNextButton ( this , false ) ;
} else
emit enableNextButton ( this , true ) ;
} else
if ( TQT_BASE_OBJECT ( watched ) = = TQT_BASE_OBJECT ( linePrjToolbar ) )
{
KURL url = baseUrl ;
QuantaCommon : : setUrl ( url , linePrjToolbar - > text ( ) ) ;
url = QExtFileInfo : : toAbsolute ( url , baseUrl ) ;
if ( ! baseUrl . isParentOf ( url ) )
{
KMessageBox : : sorry ( 0 , i18n ( " <qt>The project toolbars must be stored under the main project folder: <br><br><b>%1</b></qt> " )
. arg ( baseUrl . prettyURL ( 0 , KURL : : StripFileProtocol ) ) ) ;
linePrjToolbar - > setFocus ( ) ;
emit enableNextButton ( this , false ) ;
} else
emit enableNextButton ( this , true ) ;
}
}
return false ;
}
# include "projectnewgeneral.moc"