?? qpegps.cpp
字號(hào):
case Client::STA: // status
if ( stackViewer->visibleWidget() == viewMapDisp ) {
stackViewer->visibleWidget()->repaint();
} else {
if ( tb == viewMapDisp ) {
// update moving map
viewMapDisp->repaint();
} else if ( tb == viewGpsStatus ) {
// update full GPS status
viewGpsStatus->update();
}
}
break;
case Client::SAT: // satellite
if ( stackViewer->visibleWidget() != viewMapDisp &&
tb == viewGpsStatus ) {
// update full GPS status
viewGpsStatus->update();
}
break;
}
}
void Qpegps::quitInProgress()
{
#ifndef DESKTOP
// re-enable "light off" and "power off"
QCopEnvelope e("QPE/System", "setScreenSaverMode(int)");
e << (int)QPEApplication::Enable;
#endif
// write track in memory to file
if ( viewTrack->wDo ) {
viewTrack->Write(viewTrack->wLog->currentText());
}
// close client connection
gpsd->closeConnection();
delete gpsd;
}
void Qpegps::initMaps()
{
// read maps later
QTimer *t = new QTimer(this);
connect(t, SIGNAL(timeout()), mapSelector, SLOT(reReadMaps()));
t->start(500, true);
}
void Qpegps::adjustDatum(Position &pos, Altitude &altitude)
{
double lat, lon;
lat = deg2rad(pos.lat);
lon = deg2rad(pos.lon);
geoDatum->convertDatum(geodatumOptions.gpsDatumIdx,
geodatumOptions.mapDatumIdx,
&lat, &lon, &altitude.val );
pos.lat = rad2deg(lat);
pos.lon= rad2deg(lon);
// waypoint position ? altitude of waypoint ?
};
void Qpegps::setCurrentConfig(const QString &newConfig, bool add)
{
configName = "qpegps_" + newConfig;
// new Settings are valid
if (!add)
readConfig();
writeConfig(); //creates file if it is not existing, yet
}
void Qpegps::readConfig()
{
Config qpegpsConfig(configName);
qpegpsConfig.setGroup("units");
Altitude::unit =
(Altitude::Unit)qpegpsConfig.readNumEntry("altitude", Altitude::Feet);
Speed::unit =
(Speed::Unit)qpegpsConfig.readNumEntry("speed", Speed::Knots);
Distance::unit =
(Distance::Unit)qpegpsConfig.readNumEntry("distance", Distance::Naut);
Position::unit =
(Position::Unit)qpegpsConfig.readNumEntry("position", Position::DegMin);
qpegpsConfig.setGroup("show");
viewMapDisp->mapDispOptions.showBearing = qpegpsConfig.readBoolEntry("bearing", true);
viewMapDisp->mapDispOptions.showHeading = qpegpsConfig.readBoolEntry("heading", true);
viewMapDisp->mapDispOptions.showTime = qpegpsConfig.readBoolEntry("time", true);
viewMapDisp->mapDispOptions.rotateMap = qpegpsConfig.readBoolEntry("rotate", false);
viewMapDisp->mapDispOptions.textSize = qpegpsConfig.readNumEntry("textSize", 15);
viewMapDisp->mapDispOptions.zoom2x = qpegpsConfig.readBoolEntry("zoom2x", false);
qpegpsConfig.setGroup("gps");
gpsd->gpsOptions.startScript = qpegpsConfig.readListEntry("start", '@');
if ( gpsd->gpsOptions.startScript.isEmpty() ) {
gpsd->gpsOptions.startScript << "READY=`cardctl status 0 | grep ready | wc -l`;"
<< "if [ $READY -gt 0 ];"
<< "then"
<< " echo \"card ready\";"
<< "else"
<< " echo \"executing cardctl resume\";"
<< " cardctl resume;"
<< "fi;"
<< "/opt/Qtopia/bin/gpsd /dev/ttyS3";
}
gpsd->gpsOptions.resumeScript = qpegpsConfig.readListEntry("resume", '@');
if ( gpsd->gpsOptions.resumeScript.isEmpty() ) {
gpsd->gpsOptions.resumeScript << "READY=`cardctl status 0 | grep ready | wc -l`;"
<< "if [ $READY -gt 0 ];"
<< "then"
<< " echo \"card ready\";"
<< "else"
<< " echo \"executing cardctl resume\";"
<< " cardctl resume;"
<< "fi;";
}
gpsd->gpsOptions.stopScript = qpegpsConfig.readListEntry("stop", '@');
if ( gpsd->gpsOptions.stopScript.isEmpty() ) {
gpsd->gpsOptions.stopScript << "killall gpsd";
}
gpsd->gpsOptions.host = qpegpsConfig.readEntry("host", gpsdDefaultHost);
gpsd->gpsOptions.port = qpegpsConfig.readNumEntry("port", gpsdDefaultPort);
qpegpsConfig.setGroup("map");
mapSelector->mapOptions.mapPathStr =
qpegpsConfig.readEntry("path", qpedir + "qpegps/maps");
mapSelector->mapOptions.searchMapsInSubdirs =
qpegpsConfig.readBoolEntry("subdirs", false);
#if 0
gpsData->updateRate = qpegpsConfig.readNumEntry("rate", 500);
#endif
#if 0 // PROXY
qpegpsConfig.setGroup("download");
gpsData->proxyUrl = qpegpsConfig.readEntry("proxy", "");
#endif
qpegpsConfig.setGroup("datum");
geodatumOptions.gpsDatumIdx = qpegpsConfig.readNumEntry("GpsDatum", 1);
geodatumOptions.mapDatumIdx = qpegpsConfig.readNumEntry("MapsDatum", 1);
qpegpsConfig.setGroup("color");
QString colorName;
colorName = qpegpsConfig.readEntry("ok", "#000000");
viewMapDisp->mapDispOptions.statusOkColor.setNamedColor(colorName);
colorName = qpegpsConfig.readEntry("noFix", "#ffff00");
viewMapDisp->mapDispOptions.statusNoFixColor.setNamedColor(colorName);
colorName = qpegpsConfig.readEntry("heading", "#00ff00");
viewMapDisp->mapDispOptions.headColor.setNamedColor(colorName);
colorName = qpegpsConfig.readEntry("bearing", "#ff0000");
viewMapDisp->mapDispOptions.bearColor.setNamedColor(colorName);
colorName = qpegpsConfig.readEntry("trackC", "#ff0000");
viewTrack->trackOptions.trackColor.setNamedColor(colorName);
colorName = qpegpsConfig.readEntry("scale", "#ff0000");
viewMapDisp->mapDispOptions.scaleColor.setNamedColor(colorName);
colorName = qpegpsConfig.readEntry("places", "#000000");
viewMapDisp->placesOptions.placesColor.setNamedColor(colorName);
qpegpsConfig.setGroup("track");
viewTrack->trackOptions.trackPathStr =
qpegpsConfig.readEntry("path", qpedir + "qpegps/tracks");
//QDir md3(gpsData->trackPathStr);
//gpsData->trackPathStr = md3.canonicalPath();
viewTrack->trackOptions.updt_freq = qpegpsConfig.readNumEntry("updt_freq", 10);
viewTrack->trackOptions.track_thick = qpegpsConfig.readNumEntry("track_thick", 2);
qpegpsConfig.setGroup("places");
viewMapDisp->placesOptions.showPlaces = qpegpsConfig.readBoolEntry("show", false);
viewMapDisp->placesOptions.placesTextSize = qpegpsConfig.readNumEntry("textSize", 15);
// read data according to new config:
// read places
places->readPlaces(viewTrack->trackOptions.trackPathStr + "/places.txt");
initMaps();
// restart gpsd
gpsd->restartGpsd();
// update all the pages
emit configReaded();
}
void Qpegps::writeConfig()
{
Config qpegpsConfig(configName);
qpegpsConfig.setGroup("units");
qpegpsConfig.writeEntry("altitude", (int)Altitude::unit);
//qpegpsConfig->writeEntry("altitude",(int)gpsData->altitude.altUnit);
qpegpsConfig.writeEntry("speed", (int)Speed::unit);
//qpegpsConfig->writeEntry("speed",(int)gpsData->speed.speedUnit);
qpegpsConfig.writeEntry("distance", (int)Distance::unit);
//qpegpsConfig->writeEntry("distance",(int)gpsData->wpDistance.distUnit);
qpegpsConfig.writeEntry("position", (int)Position::unit);
qpegpsConfig.setGroup("show");
qpegpsConfig.writeEntry("bearing", viewMapDisp->mapDispOptions.showBearing);
qpegpsConfig.writeEntry("heading", viewMapDisp->mapDispOptions.showHeading);
qpegpsConfig.writeEntry("time", viewMapDisp->mapDispOptions.showTime);
qpegpsConfig.writeEntry("rotate", viewMapDisp->mapDispOptions.rotateMap);
qpegpsConfig.writeEntry("textSize", viewMapDisp->mapDispOptions.textSize);
qpegpsConfig.writeEntry("zoom2x", viewMapDisp->mapDispOptions.zoom2x);
qpegpsConfig.setGroup("gps");
//qpegpsConfig->writeEntry("gpsd", gpsData->gpsdArgStr);
qpegpsConfig.writeEntry("start", gpsd->gpsOptions.startScript, '@');
qpegpsConfig.writeEntry("stop", gpsd->gpsOptions.stopScript, '@');
qpegpsConfig.writeEntry("resume", gpsd->gpsOptions.resumeScript, '@');
qpegpsConfig.writeEntry("host", gpsd->gpsOptions.host);
qpegpsConfig.writeEntry("port", gpsd->gpsOptions.port);
qpegpsConfig.setGroup("map");
qpegpsConfig.writeEntry("path", mapSelector->mapOptions.mapPathStr);
qpegpsConfig.writeEntry("subdirs", mapSelector->mapOptions.searchMapsInSubdirs);
#if 0
qpegpsConfig.writeEntry("rate", gpsData->updateRate);
#endif
#if 0 // PROXY
qpegpsConfig.setGroup("download");
qpegpsConfig.writeEntry("proxy", gpsData->proxyUrl);
#endif
qpegpsConfig.setGroup("color");
qpegpsConfig.writeEntry("ok", viewMapDisp->mapDispOptions.statusOkColor.name());
qpegpsConfig.writeEntry("noFix", viewMapDisp->mapDispOptions.statusNoFixColor.name());
qpegpsConfig.writeEntry("heading", viewMapDisp->mapDispOptions.headColor.name());
qpegpsConfig.writeEntry("bearing", viewMapDisp->mapDispOptions.bearColor.name());
qpegpsConfig.writeEntry("trackC", viewTrack->trackOptions.trackColor.name());
qpegpsConfig.writeEntry("scale", viewMapDisp->mapDispOptions.scaleColor.name());
qpegpsConfig.writeEntry("places", viewMapDisp->placesOptions.placesColor.name());
qpegpsConfig.setGroup("track");
qpegpsConfig.writeEntry("path", viewTrack->trackOptions.trackPathStr);
qpegpsConfig.writeEntry("updt_freq", viewTrack->trackOptions.updt_freq);
qpegpsConfig.writeEntry("track_thick", viewTrack->trackOptions.track_thick);
qpegpsConfig.setGroup("datum");
qpegpsConfig.writeEntry("GpsDatum", (int)geodatumOptions.gpsDatumIdx);
qpegpsConfig.writeEntry("MapsDatum", (int)geodatumOptions.mapDatumIdx);
qpegpsConfig.setGroup("places");
qpegpsConfig.writeEntry("show", viewMapDisp->placesOptions.showPlaces);
qpegpsConfig.writeEntry("textSize", viewMapDisp->placesOptions.placesTextSize);
}
int main(int argc, char ** argv)
{
QString dir = "./";
#ifndef DESKTOP
QPEApplication a(argc, argv);
dir = a.qpeDir();
#else
QApplication a(argc, argv);
#endif
QTranslator translator( 0 );
if ( a.argc() > 1 ) {
printf("command line parameter \"%s\" overrides global setting of \"locale\"\n", a.argv()[1]);
translator.load(QString("qpegps_") + a.argv()[1], dir + "/qpegps");
} else {
translator.load(QString("qpegps_") + QTextCodec::locale(), dir + "/qpegps");
}
a.installTranslator(&translator);
// create the *viewer* which can switch between full screen and normal
QWidgetStack * viewer = new QWidgetStack();
// this is the main widget
viewer->setCaption("qpeGPS 0.9.3.1");
// create the qpegps main appl widget (with viewer as parent)
Qpegps * qpegps = new Qpegps(dir, viewer);
// QObject::connect(&a, SIGNAL(appMessage(const QCString&, const QByteArray&)),
// qpegps, SLOT(appMessage(const QCString&, const QByteArray&)) );
// main widget to show
viewer->addWidget(qpegps, 0);
#ifndef DESKTOP
// register main widget with appl
a.showMainWidget( viewer );
#else
a.setMainWidget( viewer );
viewer->show();
#endif
// start the loop
return a.exec();
}
WaitBox::WaitBox(QWidget * parent, const char * name, WFlags f)
: QWidget( parent, name, f | WStyle_NoBorderEx )
{
}
void WaitBox::show()
{
// resize the widget
QSize size = QSize((2*qApp->desktop()->width())/3,
qApp->desktop()->height()/3);
QSize sizeParent = parentWidget()->size();
setGeometry((sizeParent.width()-size.width())/2,
(sizeParent.height()-size.height())/2, size.width(), size.height());
QWidget::show();
}
void WaitBox::setText(const QString &newtext)
{
strText = newtext;
}
void WaitBox::paintEvent(QPaintEvent *)
{
// draw the text centered on the rect.
QPainter p( this );
QRect r(rect());
p.drawText(r, AlignCenter | WordBreak, strText);
// draw border
p.setPen(colorGroup().dark());
p.moveTo(r.left(), r.top()+2);
p.lineTo(r.left(), r.bottom()-2);
p.lineTo(r.left()+2, r.bottom());
p.lineTo(r.right()-2, r.bottom());
p.lineTo(r.right(), r.bottom()-2);
p.lineTo(r.right(), r.top()+2);
p.lineTo(r.right()-2, r.top());
p.lineTo(r.left()+2, r.top());
p.lineTo(r.left(), r.top()+2);
p.setPen(colorGroup().light());
p.drawLine(r.left()+2, r.top()+1, r.right()-2, r.top()+1);
p.drawLine(r.left()+1, r.top()+2, r.left()+1, r.bottom()-2);
p.setPen(colorGroup().shadow());
p.drawLine(r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1);
p.drawLine(r.right()-1, r.top()+2, r.right()-1, r.bottom()-2);
}
// end of file
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -