committing work in progress
[ptas] / zouba / src / journeys.cpp
1 #include "journeys.h"
2
3 #include <QDebug>
4 #include <QHash>
5 #include <QSettings>
6 #include <QString>
7 #include <QStringList>
8 #include <QCoreApplication>
9
10 QHash<QString,Journey *> Journeys::journeyHash;
11 bool Journeys::initialised = false;
12
13 Journeys::Journeys()
14 {
15     if ( !initialised ) {
16         restoreJourneys();
17         initialised = true;
18     }
19 }
20
21 Journeys::~Journeys()
22 {
23 }
24
25 bool Journeys::addJourney( Journey *journey )
26 {
27   bool succeeded=false;
28
29   saveJourney( journey );
30
31   if ( !journeyHash.contains( journey->label() ) ) {
32     qDebug() << "Adding journey" << journey->label();
33     journeyHash[ journey->label() ] = journey;
34     succeeded = true;
35   } else {
36     qDebug() << "FAILED to add journey" << journey->label();
37   }
38
39   return succeeded;
40 }
41
42 void Journeys::restoreJourneys()
43 {
44   QSettings settings;
45
46   settings.beginGroup( "Journeys" );
47   QStringList labels = settings.childGroups();
48
49   for( int i=0; i<labels.size(); ++i ) {
50     QString label = labels[i];
51     settings.beginGroup( label );
52     QString from = settings.value( "from" ).toString();
53     QString to   = settings.value( "to" ).toString();
54     settings.endGroup();
55
56     qDebug() << "restoring" << label;
57     Journey *journey = new Journey();
58     journey->setJourney( from, to, label );
59
60     journeyHash[ label ] = journey;
61   }
62
63   settings.endGroup();
64 }
65
66 void Journeys::saveJourney( Journey *journey )
67 {
68   qDebug() << "Saving journey" << journey->label();
69   QSettings settings;
70   settings.beginGroup( "Journeys" );
71   settings.beginGroup( journey->label() );
72   settings.setValue( "from", journey->from() );
73   settings.setValue( "to", journey->to() );
74   settings.endGroup();
75   settings.endGroup();
76 }
77
78 void Journeys::saveJourney()
79 {
80   Journey *journey = qobject_cast<Journey*>(sender());
81
82   saveJourney( journey );
83 }
84
85 Journey *Journeys::journey( const QString &label )
86 {
87   qDebug() << "requesting journey" << label;
88   Journey *retVal = 0;
89
90   if ( journeyHash.contains( label ) ) {
91     qDebug() << "found journey" << label;
92     retVal = journeyHash[ label ];
93   } else {
94     qDebug() << "didn't find journey" << label;
95   }
96
97   return retVal;
98 }