1 #include "locationsdisplaywindow.h"
2 #include "ui_locationsdisplaywindow.h"
4 #include "addressdialog.h"
7 #include <QListWidgetItem>
11 const QString invalidPostText = " - Invalid address";
12 const QString editText = "Edit list";
14 QString getLocName(const QListWidgetItem *item);
15 Location* getSelectedLocation(QList<QListWidgetItem*> list);
16 /*QString getLocName(const QListWidgetItem *item);
17 Location* getSelectedLocation(QList<QListWidgetItem*> list);*/
19 LocationsDisplayWindow::LocationsDisplayWindow(QWidget *parent) :
21 ui(new Ui::LocationsDisplayWindow)
25 this->setAttribute(Qt::WA_Maemo5StackedWindow);
27 QAction *editListAction = new QAction(editText, this->ui->menuBar);
28 this->ui->menuBar->addAction(editListAction);
29 connect(editListAction, SIGNAL(triggered()), this, SLOT(showEditOptions()));
31 this->ui->editViewWidget->hide();
33 connect(this->ui->newLocButton, SIGNAL(clicked()), this, SLOT(addAddress()));
34 connect(this->ui->locationsWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(editLocation(QListWidgetItem*)));
35 connect(this->ui->deleteButton, SIGNAL(clicked()), this, SLOT(remove()));
36 connect(this->ui->upButton, SIGNAL(clicked()), this, SLOT(moveUp()));
37 connect(this->ui->downButton, SIGNAL(clicked()), this, SLOT(moveDown()));
38 connect(this->ui->doneButton, SIGNAL(clicked()), this, SLOT(closeEditOptions()));
40 this->populateLocations();
42 Locations *locations = Locations::GetInstance();
43 connect(locations, SIGNAL(locationsChanged()), this, SLOT(populateLocations()));
46 LocationsDisplayWindow::~LocationsDisplayWindow()
51 void LocationsDisplayWindow::showEditOptions()
53 disconnect(this->ui->locationsWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(editLocation(QListWidgetItem*)));
54 this->ui->defaultViewWidget->hide();
55 this->ui->editViewWidget->show();
58 void LocationsDisplayWindow::closeEditOptions()
60 connect(this->ui->locationsWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(editLocation(QListWidgetItem*)));
61 this->ui->defaultViewWidget->show();
62 this->ui->editViewWidget->hide();
65 void LocationsDisplayWindow::populateLocations()
67 this->ui->locationsWidget->clear();
68 qDebug() << "Populating locations";
69 Locations *locations = Locations::GetInstance();
71 for (int index = 1; index <= locations->size(); ++index)
73 qDebug() << "Adding location: " << locations->getLocation(index)->label();
74 Location* loc = locations->getLocation(index);
75 QString dispName = loc->label();
77 dispName.append(invalidPostText);
78 new QListWidgetItem(dispName, this->ui->locationsWidget);
80 qDebug() << "Locations populated";
83 void LocationsDisplayWindow::addAddress()
85 AddressDialog *dialog = new AddressDialog(this);
89 void LocationsDisplayWindow::editLocation(QListWidgetItem *item)
93 Locations *locations = Locations::GetInstance();
94 QString findText = getLocName(item);
95 Location *loc = locations->getLocation(findText);
97 qDebug() << "No location with label " << findText << " was found from locations.";
100 AddressDialog *dialog = new AddressDialog(this, loc);
105 QString getLocName(const QListWidgetItem *item)
108 QString retText = item->text();
109 if (retText.contains(" - Invalid address", Qt::CaseSensitive))
114 void LocationsDisplayWindow::remove()
116 qDebug() << "Remove called";
117 Location* loc = getSelectedLocation(this->ui->locationsWidget->selectedItems());
119 qDebug() << "No location with selected label was found from locations.";
122 Locations *locations = Locations::GetInstance();
123 locations->removeLocation(loc);
127 Location* getSelectedLocation(QList<QListWidgetItem*> list)
129 if (list.size() == 0)
131 qDebug() << "No item is selected";
134 QListWidgetItem *item = list.at(0);
135 QString name = getLocName(item);
136 qDebug() << "Selected item is" << name;
137 Locations *locations = Locations::GetInstance();
138 return locations->getLocation(name);
141 void LocationsDisplayWindow::moveUp()
143 qDebug() << "Move up called";
144 Location* loc = getSelectedLocation(this->ui->locationsWidget->selectedItems());
146 qDebug() << "No location with selected label was found from locations.";
149 Locations *locations = Locations::GetInstance();
150 locations->lowerLocationIndex(loc->label());
154 void LocationsDisplayWindow::moveDown()
156 qDebug() << "Move down called";
157 Location* loc = getSelectedLocation(this->ui->locationsWidget->selectedItems());
159 qDebug() << "No location with selected label was found from locations.";
162 Locations *locations = Locations::GetInstance();
163 locations->increaseLocationIndex(loc->label());