keduca
kgallerydialog.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "kgallerydialog.h"
00019 #include "kgallerydialog.moc"
00020
00021 #include <kdebug.h>
00022 #include <kconfig.h>
00023 #include <klocale.h>
00024 #include <kmessagebox.h>
00025 #include <kio/netaccess.h>
00026
00027 #include <qlineedit.h>
00028 #include <qlistview.h>
00029 #include <qsplitter.h>
00030 #include <qdom.h>
00031 #include <qfileinfo.h>
00032
00033 KGalleryDialog::KGalleryDialog(QWidget *parent, const char *name )
00034 :KGalleryDialogBase(parent,name)
00035 {
00036 configRead();
00037 }
00038
00039 KGalleryDialog::~KGalleryDialog()
00040 {
00041 }
00042
00044 bool KGalleryDialog::openFile(const KURL &url) {
00045 QString tmpFile;
00046 bool returnval=false;
00047 if( KIO::NetAccess::download( url, tmpFile, this ) )
00048 {
00049 returnval=loadFile( tmpFile );
00050 if (returnval) {
00051 _currentURL = url;
00052 kdDebug()<<"... load successful: "<<_currentURL.url()<<endl;
00053 }
00054
00055 KIO::NetAccess::removeTempFile( tmpFile );
00056 }else
00057 kdDebug()<<"FileRead::openFile(): download NOT successful: "<<url.url()<<endl;
00058
00059 return returnval;
00060 }
00061
00062 bool KGalleryDialog::loadFile( const QString &filename )
00063 {
00064 QDomDocument doc("document.xml");
00065
00066 QFile file(filename);
00067
00068 if(!file.open(IO_ReadOnly))
00069 {
00070 return false;
00071 }
00072 doc.setContent( &file );
00073
00074 if( doc.doctype().name() != "educagallery" )
00075 { return false; }
00076
00077 QDomElement docElem = doc.documentElement();
00078 QDomNode n = docElem.firstChild();
00079
00080 kdDebug()<<"... load attributes: "<< docElem.tagName() <<endl;
00081
00082 QDomNodeList dnList = n.childNodes();
00083 for( unsigned int i = 0; i < dnList.count(); ++i)
00084 {
00085 QListViewItem *newItem = new QListViewItem(listDocuments);
00086 QDomElement serversNode = dnList.item(i).toElement();
00087
00088 kdDebug()<<"... load attributes: "<< serversNode.text() <<endl;
00089
00090 newItem->setText( 0, serversNode. text() );
00091 newItem->setText( 1, serversNode.attribute( "language" ) );
00092 newItem->setText( 2, serversNode.attribute( "category" ) );
00093 newItem->setText( 3, serversNode.attribute( "type" ) );
00094 newItem->setText( 4, serversNode.attribute( "author" ) );
00095 newItem->setText( 5, serversNode.attribute( "address" ) );
00096 newItem->setSelected(false);
00097 }
00098
00099 file.close();
00100
00101 return true;
00102 }
00103
00105 void KGalleryDialog::configRead()
00106 {
00107 KConfig *appconfig = KGlobal::config();
00108 QStringList servers;
00109 QStringList ipservers;
00110 QStringList::Iterator it_ipservers;
00111
00112 appconfig->setGroup( "kgallerydialog" );
00113 _split->setSizes( appconfig->readIntListEntry("Splitter_size") );
00114 QSize defaultSize(500,400);
00115 resize( appconfig->readSizeEntry("Geometry", &defaultSize ) );
00116
00117 appconfig->setGroup("Galleries Servers");
00118 servers = appconfig->readListEntry ( "Servers" );
00119 ipservers = appconfig->readListEntry ( "ServersIP" );
00120
00121 if( ipservers.count() == 0 )
00122 {
00123 servers.append( "KEduca Main Server" );
00124 ipservers.append( "http://keduca.sourceforge.net/gallery/gallery.edugallery" );
00125 }
00126
00127 it_ipservers=ipservers.begin();
00128 for ( QStringList::Iterator it_servers = servers.begin(); it_servers != servers.end(); ++it_servers )
00129 {
00130 QListViewItem *newItem = new QListViewItem(listServers);
00131 newItem->setText(0,*it_servers);
00132 newItem->setText(1,*it_ipservers);
00133 newItem->setSelected(false);
00134 ++it_ipservers;
00135 }
00136 }
00137
00139 void KGalleryDialog::configWrite()
00140 {
00141 QStringList servers;
00142 QStringList ipservers;
00143 KConfig *config = KGlobal::config();
00144
00145 config->setGroup( "kgallerydialog" );
00146 config->writeEntry("Splitter_size", _split->sizes() );
00147 config->writeEntry("Geometry", size() );
00148 config->sync();
00149
00150 config->setGroup("Galleries Servers");
00151 QListViewItem *item = listServers->firstChild();
00152 while (item) {
00153 servers.append( item->text(0) );
00154 ipservers.append( item->text(1) );
00155 item = item->nextSibling();
00156 }
00157 config->writeEntry("Servers", servers);
00158 config->writeEntry("ServersIP", ipservers);
00159
00160 config->sync();
00161 }
00162
00164 void KGalleryDialog::slotButtonAdd()
00165 {
00166 if( (lineName->text()).isEmpty() || (lineAddress->text()).isEmpty() )
00167 {
00168 KMessageBox::sorry(this, i18n("You need to specify a server!"));
00169 return;
00170 }
00171
00172 QListViewItem *newItem = new QListViewItem(listServers);
00173 newItem->setText(0,lineName->text());
00174 newItem->setText(1,lineAddress->text());
00175 newItem->setSelected(false);
00176 }
00177
00179 void KGalleryDialog::accept()
00180 {
00181 if (getURL().isEmpty())
00182 KMessageBox::sorry(this, i18n("You need to specify the file to open!"));
00183 else
00184 {
00185 configWrite();
00186 KGalleryDialogBase::accept();
00187 }
00188
00189 }
00190
00192 void KGalleryDialog::slotServerSelected( QListViewItem *item )
00193 {
00194 if (!item)
00195 return;
00196
00197 KURL url_server = KURL( item->text(1) );
00198
00199 listDocuments->clear();
00200 openFile( url_server );
00201 }
00202
00204 KURL KGalleryDialog::getURL()
00205 {
00206 QListViewItem *item = listDocuments->currentItem();
00207
00208 if (!item)
00209 return KURL();
00210
00211 QString urlAddress = item->text(5);
00212
00213 if( _currentURL.isLocalFile() && !KURL(urlAddress).isValid() )
00214 {
00215 if( !QFileInfo(urlAddress).exists() )
00216 urlAddress = _currentURL.directory(false,true) + urlAddress;
00217 kdDebug()<< "Imagen en local" <<endl;
00218 } else if( !_currentURL.isLocalFile() && !KURL(urlAddress).isValid() )
00219 urlAddress = _currentURL.protocol() + "://" + _currentURL.host() + _currentURL.directory(false,true) + urlAddress;
00220
00221 kdDebug()<< urlAddress <<endl;
00222 return KURL( urlAddress );
00223 }
00224
00226 void KGalleryDialog::putURL(const KURL &urlFile)
00227 {
00228 QListViewItem *newItem = new QListViewItem(listServers);
00229 newItem->setText( 1, urlFile.url() );
00230 newItem->setSelected(false);
00231 }