subform.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2005 by Tomeu Borras Riera                              *
00003  *   tborras@conetxia.com                                                  *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU General Public License as published by  *
00007  *   the Free Software Foundation; either version 2 of the License, or     *
00008  *   (at your option) any later version.                                   *
00009  *                                                                         *
00010  *   This program is distributed in the hope that it will be useful,       *
00011  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00012  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00013  *   GNU General Public License for more details.                          *
00014  *                                                                         *
00015  *   You should have received a copy of the GNU General Public License     *
00016  *   along with this program; if not, write to the                         *
00017  *   Free Software Foundation, Inc.,                                       *
00018  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
00019  ***************************************************************************/
00020 
00021 #include <QKeyEvent>
00022 #include <QEvent>
00023 #include <QFile>
00024 #include <QLocale>
00025 #include <QRegExp>
00026 
00027 #include "subform.h"
00028 
00029 
00031 
00034 SDBRecord::SDBRecord(postgresiface2 *con) : DBRecord(con) {
00035   _depura("SDBRecord::SDBRecord", 0);
00036   static int creaciones = 0;
00037   creaciones++;
00038   _depura("SDBrecord::creados: ",0,  QString::number(creaciones));
00039   _depura("END SDBRecord::SDBRecord", 0);
00040 }
00041 
00042 
00044 
00046 SDBRecord::~SDBRecord() {
00047   static int destrucciones = 0;
00048   _depura("SDBRecord::~SDBRecord", 0);
00049   destrucciones++;
00050   _depura("SDBrecord::destruidos: ",0 ,  QString::number(destrucciones));
00051   _depura("SDBRecord::~SDBRecord", 0);
00052 }
00053 
00054 
00056 
00060 int SDBRecord::DBsave(QString &id) {
00061   _depura("SDBRecord::DBsave", 0);
00062   refresh();
00063   _depura("END SDBRecord::DBsave", 0);
00064   return DBRecord::DBsave(id);
00065 }
00066 
00067 
00069 
00071 void SDBRecord::refresh() {
00072   _depura("SDBRecord::refresh", 0);
00073   SDBCampo *camp;
00074   for (int i = 0; i < m_lista.size(); ++i) {
00075     camp = (SDBCampo *) m_lista.at(i);
00076     camp->refresh();
00077   } // end for
00078   _depura("END SDBRecord::refresh", 0);
00079 }
00080 
00081 
00083 
00090 int SDBRecord::addDBCampo(QString nom, DBCampo::dbtype typ, int res, QString nomp) {
00091   _depura("SDBRecord::addDBCampo", 0);
00092   SDBCampo *camp = new SDBCampo(this, m_conexionbase, nom, typ, res, nomp);
00093   camp->set("");
00094   m_lista.append(camp);
00095   _depura("END SDBRecord::addDBCampo", 0);
00096   return 0;
00097 }
00098 
00099 
00101 
00109 SDBCampo::SDBCampo(SDBRecord *par, postgresiface2 *com, QString nom, dbtype typ, int res, QString nomp)
00110   :QTableWidgetItem2(), DBCampo(com, nom, typ, res, nomp) {
00111   _depura("SDBCampo::SDBCampo", 0);
00112   m_pare = par;
00113   _depura("SDBCampo::SDBCampo", 0);
00114 }
00115 
00116 
00118 
00120 SDBCampo::~SDBCampo() {
00121   _depura("SDBCampo::~SDBCampo()", 0);
00122   _depura("END SDBCampo::~SDBCampo()", 0);
00123 }
00124 
00125 
00127 
00129 void SDBCampo::refresh() {
00130   _depura("SDBCampo::refresh", 0);
00131   if (this->tipo() == DBCampo::DBboolean)
00132     DBCampo::set(checkState() == Qt::Checked ? "TRUE" : "FALSE");
00133   else
00134     DBCampo::set(text());
00135   // end if
00136   _depura("END SDBCampo::refresh", 0);
00137 }
00138 
00139 
00141 
00145 int SDBCampo::set(QString val) {
00146   _depura("SDBCampo::set", 0, nomcampo() + " = " + val);
00147   QRegExp importe("^\\d*\\.\\d{2}$"); 
00148   if (tipo() == DBCampo::DBboolean) {
00149     if (restrictcampo() == SHeader::DBNoWrite) {
00150       setFlags(this->flags() & (~Qt::ItemIsUserCheckable));
00151     } // end if
00152     if (val == "TRUE" || val == "t") {
00153       setCheckState(Qt::Checked);
00154     } else {
00155       setCheckState(Qt::Unchecked);
00156     } // end if
00157   } else if (tipo() == DBCampo::DBnumeric && importe.exactMatch(val)) {
00158     setText(val);
00159   } else if (tipo() == DBCampo::DBdate) {
00160     setText(val.left(10));
00161   } else {
00162     setText(val);
00163   } // end if
00164   DBCampo::set(val);
00165   _depura("END SDBCampo::set", 0, val);
00166   return 0;
00167 }
00168 
00169 
00171 
00175 bool SDBCampo::operator< (const QTableWidgetItem &other) {
00176   _depura("SDBCampo::operator <", 0, text());
00177   SDBCampo *ot = (SDBCampo *) &other;
00178   dbtype tip = ot->tipo();
00179   if (tip == this->tipo()) {
00180     QString val = ot->valorcampo();
00181 
00182     if (this->tipo() == DBCampo::DBnumeric || this->tipo() == DBCampo::DBint) {
00183       _depura("SDBCampo::operator < es del tipo numerico:", 0, this->nomcampo() + QString::number(this->tipo()));
00184       double db1 = this->valorcampo().toDouble();
00185       double db2 = val.toDouble();
00186       return (db1 < db2);
00187     } // end if
00188 
00189     if (this->tipo() == DBCampo::DBdate) {
00190       _depura("SDBCampo::operator < es del tipo fecha:", 0, this->nomcampo() + QString::number(this->tipo()));
00191       QDate fech = normalizafecha(this->valorcampo());
00192       QString db1 = fech.toString(Qt::ISODate);
00193       QDate fech1 = normalizafecha(val);
00194       QString db2 = fech1.toString(Qt::ISODate);
00195       return (db1 < db2);
00196     } // end if
00197 
00198     if (this->tipo() == DBCampo::DBvarchar) {
00199       _depura("SDBCampo::operator < es del tipo varchar:", 0, this->nomcampo() + QString::number(this->tipo()));
00200       return (this->valorcampo() < val);
00201     } // end if
00202     _depura("tipo desconocido", 0);
00203   }
00204   _depura("END SDBCampo::operator <", 0, text());
00205   return FALSE;
00206 }
00207 
00208 
00210 
00213 SDBRecord *SDBCampo::pare() {
00214   _depura("SDBCampo::pare", 0);
00215   _depura("END SDBCampo::pare", 0);
00216   return m_pare;
00217 }
00218 
00219 
00221 
00228 SHeader::SHeader(QString nom, DBCampo::dbtype typ, int res, int opt, QString nomp) {
00229   _depura("SHeader::SHeader", 0);
00230   m_nomcampo = nom;
00231   m_tipo = typ;
00232   m_restricciones = res;
00233   m_options = opt;
00234   m_nompresentacion = nomp;
00235   m_valorcampo = "";
00236   _depura("END SHeader::SHeader", 0);
00237 }
00238 
00239 
00241 
00243 SHeader::~SHeader() {
00244   _depura("SHeader::~SHeader", 0);
00245   _depura("END SHeader::~SHeader", 0);
00246 }
00247 
00248 
00250 
00254 int SHeader::set(QString val) {
00255   _depura("SHeader::set", 0); 
00256   m_valorcampo = val;
00257   _depura("END SHeader::set", 0); 
00258   return 0;
00259 }
00260 
00261 
00263 
00266 unsigned int SHeader::options() {
00267   _depura("SHeader::options", 0);
00268   _depura("END SHeader::options", 0);
00269   return m_options;
00270 }
00271 
00272 
00274 
00277 unsigned int SHeader::restricciones() {
00278   _depura("SHeader::restricciones", 0);
00279   _depura("END SHeader::restricciones", 0);
00280   return m_restricciones;
00281 }
00282 
00283 
00285 
00288 DBCampo::dbtype SHeader::tipo() {
00289   _depura("DBCampo::dbtype SHeader::tipo", 0);
00290   _depura("END DBCampo::dbtype SHeader::tipo", 0);
00291   return m_tipo;
00292 
00293 }
00294 
00295 
00297 
00300 QString SHeader::nompresentacion() {
00301   _depura("SHeader::nompresentacion", 0);
00302   _depura("EDN SHeader::nompresentacion", 0);
00303   return m_nompresentacion;
00304 }
00305 
00306 
00308 
00311 int SHeader::restrictcampo() {
00312   _depura("SHeader::restrictcampo", 0);
00313   _depura("END SHeader::restrictcampo", 0);
00314   return m_restricciones;
00315 }
00316 
00317 
00319 
00322 QString SHeader::nomcampo() {
00323   _depura("SHeader::nomcampo", 0); 
00324   _depura("END SHeader::nomcampo", 0); 
00325   return m_nomcampo;
00326 }
00327 

Generated on Sat Dec 15 00:01:23 2007 for BulmaGes by  doxygen 1.5.1