#include <QtGui/QGraphicsBlurEffect>
#include <QtGui/QGraphicsItem>
#include "blureffect.h"
+#include "graphicselement.h"
namespace
{
}
}
-void BlurEffect::apply(QGraphicsItem* item)
+void BlurEffect::apply(GraphicsElement* item)
{
- item->setGraphicsEffect(effect_);
+ item->getElement()->setGraphicsEffect(effect_);
}
enum Attribute {RADIUS, ATTRIBUTE_COUNT};
BlurEffect();
virtual bool setAttribute(QString const& name, QString const& value);
- virtual void apply(QGraphicsItem* item);
+ virtual void apply(GraphicsElement* item);
private:
QGraphicsBlurEffect* effect_;
#include <QtGui/QGraphicsDropShadowEffect>
#include <QtGui/QGraphicsItem>
#include "dropshadoweffect.h"
+#include "graphicselement.h"
namespace
{
}
}
-void DropshadowEffect::apply(QGraphicsItem* item)
+void DropshadowEffect::apply(GraphicsElement* item)
{
- item->setGraphicsEffect(effect_);
+ item->getElement()->setGraphicsEffect(effect_);
}
#include "effect.h"
class QGraphicsDropShadowEffect;
-class QGraphicsItem;
+class GraphicsElement;
class DropshadowEffect : public Effect
{
enum Attribute {RADIUS, COLOR, XOFFSET, YOFFSET, ATTRIBUTE_COUNT};
DropshadowEffect();
virtual bool setAttribute(QString const& name, QString const& value);
- virtual void apply(QGraphicsItem* item);
+ virtual void apply(GraphicsElement* item);
private:
QGraphicsDropShadowEffect* effect_;
#define EFFECT_H
class QString;
-class QGraphicsItem;
+class GraphicsElement;
class Effect
{
Effect();
static Effect* getEffect(QString const& name);
virtual bool setAttribute(QString const& name, QString const& value) = 0;
- virtual void apply(QGraphicsItem* item) = 0;
+ virtual void apply(GraphicsElement* item) = 0;
protected:
int getAttribute(QString const& name, QString const& value, const AttributeDetails details[], int count, qreal& realValue);
#include <QtGui/QGraphicsItem>
#include <math.h>
#include "flickereffect.h"
+#include "graphicselement.h"
namespace
{
}
}
-void FlickerEffect::apply(QGraphicsItem* item)
+void FlickerEffect::apply(GraphicsElement* item)
{
if(interval_ > 0)
{
void FlickerEffect::updateVisibility()
{
- if(item_)
+ if(item_ && item_->canBeVisible())
{
- item_->setVisible(!item_->isVisible());
+ item_->getElement()->setVisible(!item_->getElement()->isVisible());
}
}
#include "effect.h"
class QString;
-class QGraphicsItem;
class QTimer;
+class GraphicsElement;
class FlickerEffect : public QObject, public Effect
{
FlickerEffect();
~FlickerEffect();
virtual bool setAttribute(QString const& name, QString const& value);
- virtual void apply(QGraphicsItem* item);
+ virtual void apply(GraphicsElement* item);
private slots:
void updateVisibility();
private:
int interval_;
QTimer* timer_;
- QGraphicsItem* item_;
+ GraphicsElement* item_;
};
#endif
#include "poialerts.h"
#include "speedalarm.h"
-GraphicsElement::GraphicsElement(Reader* reader): QObject(0), reader_(reader), error_(""), effect_(0), visibleWhen_(ALWAYS)
+GraphicsElement::GraphicsElement(Reader* reader): QObject(0),
+reader_(reader), error_(""), effect_(0), visibleWhen_(ALWAYS), canBeVisible_(true)
{
}
void GraphicsElement::applyEffect()
{
- effect_->apply(getElement());
+ effect_->apply(this);
}
void GraphicsElement::setVisibleWhen(VisibleWhen when)
switch(when)
{
case POI_VISIBLE:
+ updateVisibility(false);
connect(&(PoiAlerts::instance()), SIGNAL(visibilityChanged(bool)), this, SLOT(updateVisibility(bool)));
break;
case SPEED_EXCEEDED:
+ updateVisibility(false);
connect(&(SpeedAlarm::instance()), SIGNAL(speedExceedChanged(bool)), this, SLOT(updateVisibility(bool)));
break;
case ALWAYS:
disconnect(&(PoiAlerts::instance()), SIGNAL(visibilityChanged(bool)), this, SLOT(updateVisibility(bool)));
disconnect(&(SpeedAlarm::instance()), SIGNAL(speedExceedChanged(bool)), this, SLOT(updateVisibility(bool)));
+ updateVisibility(true);
break;
}
}
if(item)
{
item->setVisible(visible);
+
+ if(!visible)
+ {
+ canBeVisible_ = false;
+ }
+ else
+ {
+ canBeVisible_ = true;
+ }
}
}
+
+bool GraphicsElement::canBeVisible() const
+{
+ return canBeVisible_;
+}
bool setEffect(QString const& effect);
bool setEffectAttribute(QString const& name, QString const& value);
void applyEffect();
+ bool canBeVisible() const;
protected:
enum VisibleWhen {ALWAYS, POI_VISIBLE, SPEED_EXCEEDED};
Effect* effect_;
QMap<QString, QString> loadedFonts_;
VisibleWhen visibleWhen_;
+ bool canBeVisible_;
};
#endif
#include <QtGui/QGraphicsOpacityEffect>
#include <QtGui/QGraphicsItem>
#include "opacityeffect.h"
+#include "graphicselement.h"
namespace
{
}
}
-void OpacityEffect::apply(QGraphicsItem* item)
+void OpacityEffect::apply(GraphicsElement* item)
{
- item->setGraphicsEffect(effect_);
+ item->getElement()->setGraphicsEffect(effect_);
}
enum Attribute {OPACITY, ATTRIBUTE_COUNT};
OpacityEffect();
virtual bool setAttribute(QString const& name, QString const& value);
- virtual void apply(QGraphicsItem* item);
+ virtual void apply(GraphicsElement* item);
private:
QGraphicsOpacityEffect* effect_;
#include <QtCore/QFile>
#include <QtCore/QString>
#include <QtCore/QByteArray>
+#include <QtCore/QStringList>
#include <QtCore/QDebug>
#include <QtCore/QRegExp>
#include "poiascreader.h"
return false;
}
- QString data = QString(file.readAll());
- static QRegExp matcher("([0-9]{1,3})\\.([0-9]+), ([0-9]{1,3})\\.([0-9]+), \"(.*)\"");
- matcher.setMinimal(true);
-
- int pos = 0;
-
- while((pos = matcher.indexIn(data, pos)) != -1)
+ while(!file.atEnd())
{
- pos += matcher.matchedLength();
+ QString data(file.readLine());
+ QStringList parts = data.split(",");
- Poi poi;
+ if(parts.size() < 3)
+ {
+ continue;
+ }
- bool ok;
+ QString longitude = parts.at(0).trimmed();
+ QString latitude = parts.at(1).trimmed();
- QString latitude = matcher.cap(3) + "." + matcher.cap(4);
- QString longitude = matcher.cap(1) + "." + matcher.cap(2);
+ bool ok;
double doubleLatitude = latitude.toDouble(&ok);
continue;
}
+ QString name = parts.at(2).trimmed();
+ name.remove('"');
+
+ Poi poi;
poi.latitude = doubleLatitude;
poi.longitude = doubleLongitude;
- poi.name = matcher.cap(5);
+ poi.name = name;
pois.push_back(poi);
layout->addWidget(selector_, Qt::AlignLeft);
ButtonBox* buttons = new ButtonBox;
+ buttons->setOrientation(Qt::Horizontal);
connect(buttons->addButton(tr("Save"), QDialogButtonBox::AcceptRole), SIGNAL(clicked(bool)), this, SLOT(saveUnit()));
layout->addWidget(buttons);