Las primeras pruebas fueron muy sastifactorias debido a que la parte principal de zmviewer funciona perfectamente y el rendimiento en el dispositivo móvil fue muy bueno. Para las primeras pruebas lo que hice fue crear una widget con una sola camara reutilizando solo el core de zmviewer y estaticamente le agregue una camara de mi zoneminder. Cuando logre una version usable publicaré el código.
Por ahora un video en http://www.youtube.com/watch?v=Oq2c7PYfPy8
]]>Las primeras pruebas fueron muy sastifactorias debido a que la parte principal de zmviewer funciona perfectamente y el rendimiento en el dispositivo móvil fue muy bueno. Para las primeras pruebas lo que hice fue crear una widget con una sola camara reutilizando solo el core de zmviewer y estaticamente le agregue una camara de mi zoneminder. Cuando logre una version usable publicaré el código.
Por ahora un video en http://www.youtube.com/watch?v=Oq2c7PYfPy8
]]>Primero debemos tener algunas cosas:
Al instalar este paquete debemos decirle al instalador que la instalación sea "custom" y debemos decirle que instale los encabezados o seleccionamos todo y listo :) . Yo lo instale en c:\mysql
Para esto debemos hacer lo siguiente:
El binario reimp lo pueden conseguir de mingw-utils, yo lo bajé de aquí: http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=61599&release_id=126568 y lo descomprimi como puede verse en c:\mingw-utils ( el archivo es un tar.gz )
Primero debemos tener algunas cosas:
Al instalar este paquete debemos decirle al instalador que la instalación sea "custom" y debemos decirle que instale los encabezados o seleccionamos todo y listo :) . Yo lo instale en c:\mysql
Para esto debemos hacer lo siguiente:
El binario reimp lo pueden conseguir de mingw-utils, yo lo bajé de aquí: http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=61599&release_id=126568 y lo descomprimi como puede verse en c:\mingw-utils ( el archivo es un tar.gz )
Esta clase de ejemplo aclara todo. Lo único que hago es extender QCalendarWidget y agregarle un método appendDate que marcará nuestros eventos( sacado del core de zmviewer ) Ademaś utilizo el método setDateTextFormat( const QDate & date, const QTextCharFormat & format ) de QCalendarWidget para setear el formato que quiera ( por ahora solo un background en amarillo y el texto subrayado )
QList <QDate> eventsDateList() const{
return m_eventsDateList;
}
private:
QList <QDate> m_eventsDateList;
};
Por lo que utilizar este widget sería tan sencillo como:
Esta clase de ejemplo aclara todo. Lo único que hago es extender QCalendarWidget y agregarle un método appendDate que marcará nuestros eventos( sacado del core de zmviewer ) Ademaś utilizo el método setDateTextFormat( const QDate & date, const QTextCharFormat & format ) de QCalendarWidget para setear el formato que quiera ( por ahora solo un background en amarillo y el texto subrayado )
QList <QDate> eventsDateList() const{
return m_eventsDateList;
}
private:
QList <QDate> m_eventsDateList;
};
Por lo que utilizar este widget sería tan sencillo como:
#include <QApplication>
#include <QWidget>
#include <QPainter>
class VerticalText : public QWidget
{
public:
VerticalText(QWidget *parent = 0)
: QWidget(parent){ text = "No text";}
void paintEvent(QPaintEvent *)
{
QPainter p(this);
drawRotatedText(&p, 90, width() / 2, 0, text);
}
void drawRotatedText(QPainter *painter, float degrees, int x, int y, const QString &text)
{
painter->save();
painter->drawImage( QPoint( x , y ) , QImage("/usr/share/icons/crystalsvg/32x32/apps/colors.png") );
//comenzar a dibujar a la posicion de y + 35 ( la imagen ocupa 32px y dejo 3px de espacio )
painter->translate(x, y + 35);
painter->rotate(degrees);
painter->drawText(0, 0, text);
painter->restore();
}
QString text;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
VerticalText text;
text.text = "Hola, soy un texto vertical :)";
text.show();
return app.exec();
}
Ahora bien, este widget es muy sencillo si queremos cambiar el texto deberiamos hacer algo así:
#include <QApplication>
#include <QWidget>
#include <QPainter>
class VerticalText : public QWidget
{
public:
VerticalText(QWidget *parent = 0)
: QWidget(parent){ text = "No text";}
void paintEvent(QPaintEvent *)
{
QPainter p(this);
drawRotatedText(&p, 90, width() / 2, 0, text);
}
void drawRotatedText(QPainter *painter, float degrees, int x, int y, const QString &text)
{
painter->save();
painter->drawImage( QPoint( x , y ) , QImage("/usr/share/icons/crystalsvg/32x32/apps/colors.png") );
//comenzar a dibujar a la posicion de y + 35 ( la imagen ocupa 32px y dejo 3px de espacio )
painter->translate(x, y + 35);
painter->rotate(degrees);
painter->drawText(0, 0, text);
painter->restore();
}
QString text;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
VerticalText text;
text.text = "Hola, soy un texto vertical :)";
text.show();
return app.exec();
}
Ahora bien, este widget es muy sencillo si queremos cambiar el texto deberiamos hacer algo así:
Primero vamos a donde tenemos instalado o tenemos los fuentes de qt:
Luego solo llamamos a qmake con dos variables para evitar errores: INCLUDEPATH = donde buscará el include mysql.h LIBS = donde buscará la librería de mysql para enlazar
Esto quedaría algo así en ubuntu/kubuntu:
Y luego:
Primero vamos a donde tenemos instalado o tenemos los fuentes de qt:
Luego solo llamamos a qmake con dos variables para evitar errores: INCLUDEPATH = donde buscará el include mysql.h LIBS = donde buscará la librería de mysql para enlazar
Esto quedaría algo así en ubuntu/kubuntu:
Y luego:
Gracias a esto podremos renderizar páginas web con solo estas lineas de código:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWebView *view = new QWebView( );
view->load(QUrl("http://www.lugoroverde.com.ar"));
view->show();
return app.exec();
}
¿No les parece impresionante? A mi si :p
Abajo un screenshot de la aplicacion compilada:
Y no solo eso, también pasa el test acid por si alguien quiere saber:

Pueden descargar el snapshot de qt4.4 desde aquí: http://trolltech.com/developer/downloads/qt/qt44-preview-download
Gracias a esto podremos renderizar páginas web con solo estas lineas de código:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWebView *view = new QWebView( );
view->load(QUrl("http://www.lugoroverde.com.ar"));
view->show();
return app.exec();
}
¿No les parece impresionante? A mi si :p
Abajo un screenshot de la aplicacion compilada:
Y no solo eso, también pasa el test acid por si alguien quiere saber:

Pueden descargar el snapshot de qt4.4 desde aquí: http://trolltech.com/developer/downloads/qt/qt44-preview-download
ZMViewer es un front-end de zoneminder ( http://www.zoneminder.com ) el cual es un sistema de video vigilancia exelente. Hoy lanze una nueva versión del zmviewer, en esta versión incorporé una nueva clase para manejar el stream, más que nada para leer los boundary, ya que zoneminder envia frames del tipo: Content-Type: multipart/x-mixed-replace;boundary=ZoneMinderFrame , lo que significa que cada "--ZoneMinderFrame" viene un paquete. La versión anterior de zmviewer hacia esto un poco desprolijo. Ahora creo que con la nueva versión esto será casi perfecto :); para esto agregue una clase llamada QMultiPartReader ya que creo que puede leer casi cualquier tipo de frames multipartes.
ZMViewer permite lo siguiente:
La página del proyecto esta en http://sourceforge.net/projects/zmviewer
ZMViewer es un front-end de zoneminder ( http://www.zoneminder.com ) el cual es un sistema de video vigilancia exelente. Hoy lanze una nueva versión del zmviewer, en esta versión incorporé una nueva clase para manejar el stream, más que nada para leer los boundary, ya que zoneminder envia frames del tipo: Content-Type: multipart/x-mixed-replace;boundary=ZoneMinderFrame , lo que significa que cada "--ZoneMinderFrame" viene un paquete. La versión anterior de zmviewer hacia esto un poco desprolijo. Ahora creo que con la nueva versión esto será casi perfecto :); para esto agregue una clase llamada QMultiPartReader ya que creo que puede leer casi cualquier tipo de frames multipartes.
ZMViewer permite lo siguiente:
La página del proyecto esta en http://sourceforge.net/projects/zmviewer
Aseguran que Qt y Qtopia seguiran por el mismo camino.
]]>Aseguran que Qt y Qtopia seguiran por el mismo camino.
]]>