2 * This file is part of jSpeed.
4 * jSpeed 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 * jSpeed 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 jSpeed. If not, see <http://www.gnu.org/licenses/>.
19 #include <QtCore/QString>
20 #include <QtCore/QDebug>
21 #include "themescheduler.h"
26 QString const DEFAULT_THEME = "default";
29 ThemeScheduler::ThemeScheduler(): QObject(0), enabled_(false)
34 ThemeScheduler::~ThemeScheduler()
40 ThemeScheduler& ThemeScheduler::instance()
42 static ThemeScheduler instance;
46 void ThemeScheduler::addItem(QTime const& time, QString const& theme)
49 ItemDetails* details = new ItemDetails;
51 details->theme = theme;
53 int msecs = QTime::currentTime().msecsTo(time);
60 details->timer.setSingleShot(true);
61 details->timer.start(msecs + 500);
62 connect(&details->timer, SIGNAL(timeout()), this, SLOT(emitThemeChanged()));
64 for(int i = 0; i < items_.size(); i++)
66 if(items_.at(i)->time > time)
68 items_.insert(i, details);
73 items_.push_back(details);
76 void ThemeScheduler::removeItem(QTime const& time)
78 for(int i = 0; i < items_.size(); i++)
80 if(items_.at(i)->time == time)
89 void ThemeScheduler::store()
93 Settings::instance().remove("theme_scheduler");
99 for(int i = 0; i < items_.size(); i++)
101 QMap<QString, QVariant> map;
102 map["time"] = items_.at(i)->time.toString();
103 map["theme"] = items_.at(i)->theme;
107 Settings::instance().setValue("theme_scheduler", list);
110 void ThemeScheduler::loadConfig()
112 enabled_ = Settings::instance().value("theme_scheduler_enabled", false).toBool();
114 QList<QVariant> list = Settings::instance().value("theme_scheduler").toList();
116 for(int i = 0; i < list.size(); i++)
118 QMap<QString, QVariant> map = list.at(i).toMap();
119 QTime time = QTime::fromString(map["time"].toString());
120 addItem(time, map["theme"].toString());
124 void ThemeScheduler::setEnabled(bool enabled)
129 bool ThemeScheduler::isEnabled() const
134 QString ThemeScheduler::currentTheme() const
138 QTime time = QTime::currentTime();
140 for(int i = 0; i < items_.size(); i++)
142 if(items_.at(i)->time >= time)
148 index = items_.size() - 1;
151 return items_.at(index)->theme;
155 if(items_.size() > 0)
157 return items_.at(items_.size() - 1)->theme;
161 QString theme = Settings::instance().value("theme", DEFAULT_THEME).toString();
165 return DEFAULT_THEME;
171 QString const& ThemeScheduler::getDefaultTheme()
173 return DEFAULT_THEME;
176 void ThemeScheduler::clear()
178 for(int i = 0; i < items_.size(); i++)
186 void ThemeScheduler::getItems(QList<SchedulerItem>& items)
190 for(int i = 0; i < items_.size(); i++)
193 item.time = items_.at(i)->time;
194 item.theme = items_.at(i)->theme;
195 items.push_back(item);
199 void ThemeScheduler::emitThemeChanged()