You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
232 lines
6.9 KiB
232 lines
6.9 KiB
/***************************************************************************
|
|
kgallerydialog.cpp - description
|
|
-------------------
|
|
begin : mar abr 1 2003
|
|
copyright : (C) 2003 by Javier Campos
|
|
email : javi@asyris.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. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include "kgallerydialog.h"
|
|
#include "kgallerydialog.moc"
|
|
|
|
#include <kdebug.h>
|
|
#include <kconfig.h>
|
|
#include <klocale.h>
|
|
#include <kmessagebox.h>
|
|
#include <kio/netaccess.h>
|
|
|
|
#include <tqlineedit.h>
|
|
#include <tqlistview.h>
|
|
#include <tqsplitter.h>
|
|
#include <tqdom.h>
|
|
#include <tqfileinfo.h>
|
|
|
|
KGalleryDialog::KGalleryDialog(TQWidget *parent, const char *name )
|
|
:KGalleryDialogBase(parent,name)
|
|
{
|
|
configRead();
|
|
}
|
|
|
|
KGalleryDialog::~KGalleryDialog()
|
|
{
|
|
}
|
|
|
|
/** Open keduca file. This function can open a remote or local url. */
|
|
bool KGalleryDialog::openFile(const KURL &url) {
|
|
TQString tmpFile;
|
|
bool returnval=false;
|
|
if( KIO::NetAccess::download( url, tmpFile, this ) )
|
|
{
|
|
returnval=loadFile( tmpFile );
|
|
if (returnval) {
|
|
_currentURL = url;
|
|
kdDebug()<<"... load successful: "<<_currentURL.url()<<endl;
|
|
}
|
|
|
|
KIO::NetAccess::removeTempFile( tmpFile );
|
|
}else
|
|
kdDebug()<<"FileRead::openFile(): download NOT successful: "<<url.url()<<endl;
|
|
|
|
return returnval;
|
|
}
|
|
|
|
bool KGalleryDialog::loadFile( const TQString &filename )
|
|
{
|
|
TQDomDocument doc("document.xml");
|
|
|
|
TQFile file(filename);
|
|
|
|
if(!file.open(IO_ReadOnly))
|
|
{
|
|
return false;
|
|
}
|
|
doc.setContent( &file );
|
|
|
|
if( doc.doctype().name() != "educagallery" )
|
|
{ return false; }
|
|
|
|
TQDomElement docElem = doc.documentElement();
|
|
TQDomNode n = docElem.firstChild();
|
|
|
|
kdDebug()<<"... load attributes: "<< docElem.tagName() <<endl;
|
|
|
|
TQDomNodeList dnList = n.childNodes();
|
|
for( unsigned int i = 0; i < dnList.count(); ++i)
|
|
{
|
|
TQListViewItem *newItem = new TQListViewItem(listDocuments);
|
|
TQDomElement serversNode = dnList.item(i).toElement();
|
|
|
|
kdDebug()<<"... load attributes: "<< serversNode.text() <<endl;
|
|
|
|
newItem->setText( 0, serversNode. text() );
|
|
newItem->setText( 1, serversNode.attribute( "language" ) );
|
|
newItem->setText( 2, serversNode.attribute( "category" ) );
|
|
newItem->setText( 3, serversNode.attribute( "type" ) );
|
|
newItem->setText( 4, serversNode.attribute( "author" ) );
|
|
newItem->setText( 5, serversNode.attribute( "address" ) );
|
|
newItem->setSelected(false);
|
|
}
|
|
|
|
file.close();
|
|
|
|
return true;
|
|
}
|
|
|
|
/** Read servers */
|
|
void KGalleryDialog::configRead()
|
|
{
|
|
KConfig *appconfig = KGlobal::config();
|
|
TQStringList servers;
|
|
TQStringList ipservers;
|
|
TQStringList::Iterator it_ipservers;
|
|
|
|
appconfig->setGroup( "kgallerydialog" );
|
|
_split->setSizes( appconfig->readIntListEntry("Splitter_size") );
|
|
TQSize defaultSize(500,400);
|
|
resize( appconfig->readSizeEntry("Geometry", &defaultSize ) );
|
|
|
|
appconfig->setGroup("Galleries Servers");
|
|
servers = appconfig->readListEntry ( "Servers" );
|
|
ipservers = appconfig->readListEntry ( "ServersIP" );
|
|
|
|
if( ipservers.count() == 0 )
|
|
{
|
|
servers.append( "KEduca Main Server" );
|
|
ipservers.append( "http://keduca.sourceforge.net/gallery/gallery.edugallery" );
|
|
}
|
|
|
|
it_ipservers=ipservers.begin();
|
|
for ( TQStringList::Iterator it_servers = servers.begin(); it_servers != servers.end(); ++it_servers )
|
|
{
|
|
TQListViewItem *newItem = new TQListViewItem(listServers);
|
|
newItem->setText(0,*it_servers);
|
|
newItem->setText(1,*it_ipservers);
|
|
newItem->setSelected(false);
|
|
++it_ipservers;
|
|
}
|
|
}
|
|
|
|
/** Write servers lists */
|
|
void KGalleryDialog::configWrite()
|
|
{
|
|
TQStringList servers;
|
|
TQStringList ipservers;
|
|
KConfig *config = KGlobal::config();
|
|
|
|
config->setGroup( "kgallerydialog" );
|
|
config->writeEntry("Splitter_size", _split->sizes() );
|
|
config->writeEntry("Geometry", size() );
|
|
config->sync();
|
|
|
|
config->setGroup("Galleries Servers");
|
|
TQListViewItem *item = listServers->firstChild();
|
|
while (item) {
|
|
servers.append( item->text(0) );
|
|
ipservers.append( item->text(1) );
|
|
item = item->nextSibling();
|
|
}
|
|
config->writeEntry("Servers", servers);
|
|
config->writeEntry("ServersIP", ipservers);
|
|
|
|
config->sync();
|
|
}
|
|
|
|
/** No descriptions */
|
|
void KGalleryDialog::slotButtonAdd()
|
|
{
|
|
if( (lineName->text()).isEmpty() || (lineAddress->text()).isEmpty() )
|
|
{
|
|
KMessageBox::sorry(this, i18n("You need to specify a server!"));
|
|
return;
|
|
}
|
|
|
|
TQListViewItem *newItem = new TQListViewItem(listServers);
|
|
newItem->setText(0,lineName->text());
|
|
newItem->setText(1,lineAddress->text());
|
|
newItem->setSelected(false);
|
|
}
|
|
|
|
/** Open selected document */
|
|
void KGalleryDialog::accept()
|
|
{
|
|
if (getURL().isEmpty())
|
|
KMessageBox::sorry(this, i18n("You need to specify the file to open!"));
|
|
else
|
|
{
|
|
configWrite();
|
|
KGalleryDialogBase::accept();
|
|
}
|
|
// done( TQDialog::Accepted );
|
|
}
|
|
|
|
/** Select Server */
|
|
void KGalleryDialog::slotServerSelected( TQListViewItem *item )
|
|
{
|
|
if (!item)
|
|
return;
|
|
|
|
KURL url_server = KURL( item->text(1) );
|
|
|
|
listDocuments->clear();
|
|
openFile( url_server );
|
|
}
|
|
|
|
/** Get keduca test url */
|
|
KURL KGalleryDialog::getURL()
|
|
{
|
|
TQListViewItem *item = listDocuments->currentItem();
|
|
|
|
if (!item)
|
|
return KURL();
|
|
|
|
TQString urlAddress = item->text(5);
|
|
|
|
if( _currentURL.isLocalFile() && !KURL(urlAddress).isValid() )
|
|
{
|
|
if( !TQFileInfo(urlAddress).exists() )
|
|
urlAddress = _currentURL.directory(false,true) + urlAddress;
|
|
kdDebug()<< "Imagen en local" <<endl;
|
|
} else if( !_currentURL.isLocalFile() && !KURL(urlAddress).isValid() )
|
|
urlAddress = _currentURL.protocol() + "://" + _currentURL.host() + _currentURL.directory(false,true) + urlAddress;
|
|
|
|
kdDebug()<< urlAddress <<endl;
|
|
return KURL( urlAddress );
|
|
}
|
|
|
|
/** Add url */
|
|
void KGalleryDialog::putURL(const KURL &urlFile)
|
|
{
|
|
TQListViewItem *newItem = new TQListViewItem(listServers);
|
|
newItem->setText( 1, urlFile.url() );
|
|
newItem->setSelected(false);
|
|
}
|