2 * This file is part of Jenirok.
4 * Jenirok is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * Jenirok is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with Jenirok. If not, see <http://www.gnu.org/licenses/>.
19 #include <QtCore/QDateTime>
20 #include <QtCore/QDebug>
21 #include <QtGui/QLabel>
22 #include <QtGui/QHBoxLayout>
23 #include <QtGui/QVBoxLayout>
24 #include <QtGui/QMenuBar>
25 #include "logwindow.h"
27 LogWindow::LogWindow(QWidget* parent): QMainWindow(parent), list_(0)
29 setAttribute(Qt::WA_Maemo5StackedWindow);
30 setWindowTitle(tr("Incoming call log"));
31 menuBar()->addAction(tr("Clear log"), this, SLOT(clearLog()));
34 void LogWindow::setVisible(bool visible)
41 QMainWindow::setVisible(visible);
44 void LogWindow::loadLogItems()
48 list_ = new ListWidget(this);
49 setCentralWidget(list_);
50 connect(list_, SIGNAL(itemClicked(int)), this,
51 SLOT(itemClicked(int)));
58 QList<Cache::LogDetails> logList;
60 Cache::instance().getLogItems(logList, LOG_MAX_ITEMS);
62 if(logList.size() == 0)
64 QLabel* info = new QLabel(tr("There are currently no logged calls"));
65 info->setAlignment(Qt::AlignCenter);
66 setCentralWidget(info);
71 for(int i = 0; i < logList.size(); i++)
73 QMap <QString, QVariant> data;
74 data["name"] = QVariant(logList.at(i).result.name);
75 data["street"] = QVariant(logList.at(i).result.street);
76 data["city"] = QVariant(logList.at(i).result.city);
77 data["number"] = QVariant(logList.at(i).result.number);
78 data["country"] = QVariant(logList.at(i).result.country);
80 list_->addWidget(createWidget(logList.at(i)), data);
85 void LogWindow::itemClicked(int index)
92 QMap <QString, QVariant> data = list_->getData(index).toMap();
94 if(data["name"].toString().isEmpty())
96 emit openSearch(data["number"].toString());
100 Source::Result details;
101 details.name = data["name"].toString();
102 details.street = data["street"].toString();
103 details.city = data["city"].toString();
104 details.number = data["number"].toString();
105 details.country = data["country"].toString();
107 emit logItemSelected(details);
111 QWidget* LogWindow::createWidget(Cache::LogDetails const& details)
113 QWidget* widget = new QWidget;
114 QHBoxLayout* layout = new QHBoxLayout;
120 icon = QIcon::fromTheme("general_missed");
124 icon = QIcon::fromTheme("general_received");
127 QLabel* label = new QLabel;
128 label->setPixmap(icon.pixmap(48, 48));
130 layout->addWidget(label);
132 QVBoxLayout* content = new QVBoxLayout;
136 if(details.result.name.isEmpty())
138 text = tr("%1 (no search results)").arg(details.result.number);
142 text = details.result.name;
144 if(!details.result.street.isEmpty())
146 text += ", " + details.result.street;
149 if(!details.result.city.isEmpty())
151 text += ", " + details.result.city;
155 QLabel* nameLabel = new QLabel(text);
157 QDateTime date = QDateTime::fromTime_t(details.time);
158 QLabel* dateLabel = new QLabel(date.toString(Qt::SystemLocaleShortDate));
160 font.setPointSize(11);
161 dateLabel->setFont(font);
163 content->addWidget(nameLabel);
164 content->addWidget(dateLabel);
166 layout->addLayout(content, Qt::AlignLeft);
168 widget->setLayout(layout);
173 void LogWindow::clearLog()
175 Cache::instance().clearLog();