27 #include "../../../../common/Translator.h" 
   28 #include "../../../../dataaccess/datasource/DataSource.h" 
   29 #include "../../../../dataaccess/datasource/DataSourceFactory.h" 
   30 #include "../../../../dataaccess/datasource/DataSourceInfo.h" 
   31 #include "../../../widgets/Exception.h" 
   33 #include "ui_GeoFileConnectorDialogForm.h" 
   36 #include <boost/algorithm/string/case_conv.hpp> 
   37 #include <boost/uuid/random_generator.hpp> 
   38 #include <boost/uuid/uuid_io.hpp> 
   39 #include <boost/filesystem.hpp> 
   42 #include <QtGui/QFileDialog> 
   43 #include <QtGui/QIcon> 
   44 #include <QtGui/QMessageBox> 
   48     m_ui(new Ui::GeoFileConnectorDialogForm)
 
   54   m_ui->m_addDatasourceToolButton->setIcon(QIcon::fromTheme(
"list-add"));
 
   55   m_ui->m_removeDatasourceToolButton->setIcon(QIcon::fromTheme(
"list-remove"));
 
   56   m_ui->m_updateDatasourceToolButton->setIcon(QIcon::fromTheme(
"view-refresh"));
 
   67   m_ui->m_openPushButton->setEnabled(
false);
 
   81   m_datasources = datasources;
 
   83   m_ui->m_datasourceListWidget->clear();
 
   85   for(std::list<te::da::DataSourceInfoPtr>::iterator it = m_datasources.begin(); it != m_datasources.end(); ++it)
 
   87     QString 
id = QString::fromStdString((*it)->getId());
 
   88     QString title = QString::fromStdString((*it)->getTitle());
 
   90     QListWidgetItem* item = 
new QListWidgetItem(title);
 
   91     item->setData(Qt::UserRole, QVariant(
id));
 
   93     m_ui->m_datasourceListWidget->addItem(item);
 
   96   if(m_ui->m_datasourceListWidget->count() != 0)
 
   98     QListWidgetItem* item = m_ui->m_datasourceListWidget->item(0);
 
   99     m_ui->m_datasourceListWidget->setCurrentItem(item);
 
  100     dataSourcePressed(item);
 
  102     m_ui->m_openPushButton->setEnabled(
true);
 
  117     QMessageBox::warning(
this,
 
  118                          tr(
"TerraLib Qt Components"),
 
  119                          tr(
"Data source is ok!"));
 
  121   catch(
const std::exception& e)
 
  123     QMessageBox::warning(
this,
 
  124                          tr(
"TerraLib Qt Components"),
 
  129     QMessageBox::warning(
this,
 
  130                          tr(
"TerraLib Qt Components"),
 
  131                          tr(
"Unknown error when probing data source!"));
 
  137   QMessageBox::warning(
this,
 
  138                        tr(
"TerraLib Qt Components"),
 
  139                        tr(
"Not implemented yet!\nWe will provide it soon!"));
 
  144   QString fileName = QFileDialog::getOpenFileName(
this, tr(
"Open Geo Spatial File"), QString(
""), tr(
"Image File (*.png, *.jpg, *.jpeg, *.tif, *.tiff, *.geotif, *.geotiff);; Vector File (*.shp, *.geojson, *.kml);; All Files (*.*)"), 0, QFileDialog::ReadOnly);
 
  146   if(fileName.isEmpty())
 
  149   m_ui->m_datasourceLineEdit->setText(fileName);
 
  158     assert(driver.get());
 
  160     if(driver.get() != 0)
 
  164       nds->setConnInfo(driver->getConnectionInfo());
 
  166       boost::uuids::basic_random_generator<boost::mt19937> gen;
 
  167       boost::uuids::uuid u = gen();
 
  168       std::string dsId = boost::uuids::to_string(u);
 
  170       QString title = m_ui->m_datasourceTitleLineEdit->text().trimmed();
 
  173         title = m_ui->m_datasourceLineEdit->text().trimmed();
 
  176       nds->setTitle(title.toUtf8().data());
 
  177       nds->setDescription(m_ui->m_datasourceDescriptionTextEdit->toPlainText().trimmed().toUtf8().data());
 
  178       nds->setAccessDriver(driver->getType());
 
  179       nds->setType(
"GEOFILE");
 
  181       m_datasources.push_back(nds);
 
  183       QString 
id = QString::fromStdString(nds->getId());
 
  185       QListWidgetItem* item = 
new QListWidgetItem(title);
 
  186       item->setData(Qt::UserRole, QVariant(
id));
 
  188       m_ui->m_datasourceListWidget->addItem(item);
 
  190       m_ui->m_openPushButton->setEnabled(
true);
 
  193   catch(
const std::exception& e)
 
  195     QMessageBox::warning(
this,
 
  196                          tr(
"TerraLib Qt Components"),
 
  201     QMessageBox::warning(
this,
 
  202                          tr(
"TerraLib Qt Components"),
 
  203                          tr(
"Unknown error when probing data source!"));
 
  209   QListWidgetItem* item = m_ui->m_datasourceListWidget->currentItem();
 
  214   QVariant udata = item->data(Qt::UserRole);
 
  216   QString 
id = udata.toString();
 
  221   std::string dsId = 
id.toStdString();
 
  223   std::list<te::da::DataSourceInfoPtr>::iterator it = std::find_if(m_datasources.begin(), m_datasources.end(), 
FindById(dsId));
 
  225   if(it == m_datasources.end())
 
  228   m_datasources.erase(it);
 
  230   int itemRow = m_ui->m_datasourceListWidget->row(item);
 
  232   item = m_ui->m_datasourceListWidget->takeItem(itemRow);
 
  236   if(m_datasources.empty())
 
  237     m_ui->m_openPushButton->setEnabled(
false);
 
  242   QMessageBox::warning(
this,
 
  243                        tr(
"TerraLib Qt Components"),
 
  244                        tr(
"Not implemented yet!\nWe will provide it soon!"));
 
  249   m_ui->m_datasourceLineEdit->setText(
"");
 
  250   m_ui->m_datasourceTitleLineEdit->setText(
"");
 
  251   m_ui->m_datasourceDescriptionTextEdit->setText(
"");
 
  256   QVariant udata = item->data(Qt::UserRole);
 
  258   QString 
id = udata.toString();
 
  263   std::string dsId = 
id.toStdString();
 
  265   std::list<te::da::DataSourceInfoPtr>::iterator it = std::find_if(m_datasources.begin(), m_datasources.end(), 
FindById(dsId));
 
  267   if(it == m_datasources.end())
 
  270   std::map<std::string, std::string>::const_iterator itdsinfo = (*it)->getConnInfo().find(
"SOURCE");  
 
  272   if(itdsinfo == (*it)->getConnInfo().end())
 
  283   m_ui->m_datasourceLineEdit->setText(QString::fromStdString(itdsinfo->second));
 
  284   m_ui->m_datasourceTitleLineEdit->setText(QString::fromStdString((*it)->getTitle()));
 
  285   m_ui->m_datasourceDescriptionTextEdit->setText(QString::fromStdString((*it)->getDescription()));
 
  290   std::map<std::string, std::string> dsInfo;
 
  293   std::string driverType;
 
  295   boost::filesystem::path fp = m_ui->m_datasourceLineEdit->text().trimmed().toUtf8().data();
 
  297   std::string fileExtension = boost::to_upper_copy(fp.extension().string());
 
  299   if((fileExtension == 
".TIF") || (fileExtension == 
".TIFF") || (fileExtension == 
".GEOTIF") || (fileExtension == 
".GEOTIFF") ||
 
  300      (fileExtension == 
".PNG") || (fileExtension == 
".JPG") || (fileExtension == 
".JPEG"))
 
  303       throw te::qt::widgets::Exception(TR_QT_WIDGETS(
"Sorry! No data access driver loaded for GEOFILE data sources!"));
 
  305     dsInfo[
"SOURCE"] = m_ui->m_datasourceLineEdit->text().trimmed().toStdString();
 
  307     driverType = 
"GEOFILE";
 
  309   else if((fileExtension == 
".SHP") || (fileExtension == 
".GEOJSON") || (fileExtension == 
".KML"))
 
  312       throw te::qt::widgets::Exception(TR_QT_WIDGETS(
"Sorry! No data access driver loaded for OGR data sources!"));
 
  314     dsInfo[
"SOURCE"] = m_ui->m_datasourceLineEdit->text().trimmed().toStdString();
 
  320     throw te::qt::widgets::Exception(TR_QT_WIDGETS(
"Sorry! Unknown data access driver for the selected file!"));
 
  326     throw te::qt::widgets::Exception(TR_QT_WIDGETS(
"Could not open data source due to an unexpected error!"));
 
  328   ds->setConnectionInfo(dsInfo);
 
  336   return (ds->getId() == m_id);
 
void set(const std::list< te::da::DataSourceInfoPtr > &datasources)
 
static bool find(const std::string &dsType)
 
bool operator()(const te::da::DataSourceInfoPtr &ds) const 
 
void dataSourcePressed(QListWidgetItem *item)
 
void fileSearchToolButtonPressed()
 
boost::shared_ptr< DataSource > DataSourcePtr
 
void updateDatasourceToolButtonPressed()
 
void helpPushButtonPressed()
 
void testPushButtonPressed()
 
void addDatasourceToolButtonPressed()
 
void openPushButtonPressed()
 
~GeoFileConnectorDialog()
 
const std::list< te::da::DataSourceInfoPtr > & getDataSources() const 
 
static std::auto_ptr< DataSource > make(const std::string &dsType)
 
te::da::DataSourcePtr test()
 
GeoFileConnectorDialog(QWidget *parent=0, Qt::WindowFlags f=0)
 
A dialog window for showing the GeoFile connector widget. 
 
A class that represents a data source component. 
 
void removeDatasourceToolButtonPressed()
 
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr
 
std::auto_ptr< Ui::GeoFileConnectorDialogForm > m_ui