Translate calendar name in settings application
[harmattan-organiser-feed:harmattan-organiser-feed.git] / controlpanel / src / calendarlistmodel.cpp
1 /**
2   * This file is part of Organiser Feed.
3   *
4   * Organiser Feed 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.
8   *
9   * Organiser Feed 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.
13   *
14   * You should have received a copy of the GNU General Public License
15   * along with Organiser Feed.  If not, see <http://www.gnu.org/licenses/>.
16   *
17   */
18
19 #include "calendarlistmodel.h"
20 #include <extendedcalendar.h>
21 #include <extendedstorage.h>
22 #include <QDebug>
23
24 CalendarListModel::CalendarListModel(QObject *parent) :
25     QAbstractListModel(parent)
26 {
27     QHash<int, QByteArray> roles;
28     roles[CalendarListModel::Name] = "name";
29     roles[CalendarListModel::Uid] = "uid";
30     setRoleNames(roles);
31
32     mKCal::ExtendedCalendar::Ptr m_calendarBackendPtr =
33             mKCal::ExtendedCalendar::Ptr(new mKCal::ExtendedCalendar(KDateTime::Spec::LocalZone()));
34     mKCal::ExtendedStorage::Ptr m_storagePtr =
35             mKCal::ExtendedStorage::Ptr(mKCal::ExtendedCalendar::defaultStorage(m_calendarBackendPtr));
36
37     if (!m_storagePtr || !m_storagePtr->open()) {
38         qWarning() << "Failed to access calendar backend.";
39         return;
40     }
41
42     foreach (mKCal::Notebook::Ptr notebook, m_storagePtr->notebooks()) {
43         if (!notebook->isVisible() || !notebook->eventsAllowed())
44             continue;
45         notebooks.append(QPair<QString, QString>(notebook->name(), notebook->uid()));
46     }
47 }
48
49 int CalendarListModel::rowCount(const QModelIndex &parent) const {
50     if (parent.isValid())
51         return 0;
52
53     return notebooks.length() + 1;
54 }
55
56 QVariant CalendarListModel::data(const QModelIndex &index, int role) const {
57     if (!index.isValid())
58         return QVariant();
59
60     if (index.row() == 0) {
61         switch(role) {
62         case Name:
63             return qtTrId("qtn_all_calendars");
64             break;
65         case Uid:
66             return QString();
67         default:
68             return QVariant();
69         }
70     }
71
72     int row = index.row() - 1;
73     if (row >= notebooks.length())
74         return QVariant();
75
76     const QPair<QString, QString> &notebook = notebooks[row];
77     switch(role) {
78     case Name:
79     {
80         QString name = notebook.first;
81         if (name.startsWith("qtn_"))
82             name = qtTrId(qPrintable(name));
83         return name;
84     }
85     case Uid:
86         return notebook.second;
87     default:
88         return QVariant();
89     }
90 }