2
* Copyright (C) 2007, 2008, 2009, 2010 Ivan Cukic <ivan.cukic(at)kde.org>
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU Lesser/Library General Public License version 2,
6
* or (at your option) any later version, as published by the Free
9
* This program 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 Lesser/Library General Public License for more details
14
* You should have received a copy of the GNU Lesser/Library General Public
15
* License along with this program; if not, write to the
16
* Free Software Foundation, Inc.,
17
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
#include "FavoriteApplications.h"
25
#include <KConfigGroup>
26
#include <KStandardDirs>
27
#include <KTemporaryFile>
28
#include "Serializator.h"
33
FavoriteApplications * FavoriteApplications::m_instance = NULL;
35
FavoriteApplications::FavoriteApplications()
38
setSelfTitle(i18n("Favorites"));
39
setSelfIcon(KIcon("favorites"));
43
FavoriteApplications::~FavoriteApplications()
47
bool FavoriteApplications::addFavorite(QString url)
56
FavoriteApplications * FavoriteApplications::self()
59
m_instance = new FavoriteApplications();
64
void FavoriteApplications::load()
66
KConfig cfg(KStandardDirs::locate("config", "lancelotrc"));
67
KConfigGroup favoritesGroup = cfg.group("Favorites");
69
QStringList favoriteList = favoritesGroup.readEntry("FavoriteURLs", QStringList());
71
if (favoriteList.empty()) {
72
loadDefaultApplications();
75
addUrls(favoriteList);
79
void FavoriteApplications::save()
81
KConfig cfg(KStandardDirs::locate("config", "lancelotrc"));
82
KConfigGroup favoritesGroup = cfg.group("Favorites");
84
QStringList favoriteList;
85
for (int i = 0; i < size(); i++) {
86
favoriteList << itemAt(i).data.toString();
89
favoritesGroup.writeEntry("FavoriteURLs", favoriteList);
90
favoritesGroup.sync();
93
void FavoriteApplications::loadDefaultApplications()
97
// First, we check whether Kickoff is already set up,
98
// if it is, we are using its Favorites
99
KConfig cfg(KStandardDirs::locate("config", "kickoffrc"));
100
KConfigGroup favoritesGroup = cfg.group("Favorites");
101
result = favoritesGroup.readEntry("FavoriteURLs", QStringList());
102
if (!result.empty()) {
107
QStringList applications;
109
<< "firefox|konqbrowser"
110
<< "kmail|thunderbird"
114
addServices(applications);
117
bool FavoriteApplications::hasContextActions(int index) const
123
void FavoriteApplications::setContextActions(int index, Lancelot::PopupMenu * menu)
126
menu->addAction(KIcon("list-remove"), i18n("Remove From Favorites"))
127
->setData(QVariant(0));
130
void FavoriteApplications::contextActivate(int index, QAction * context)
136
if (context->data().toInt() == 0) {
142
FavoriteApplications::PassagewayViewProxy::PassagewayViewProxy()
143
: ActionTreeModelProxy(Models::FavoriteApplications::self(),
144
i18n("Favorites"), KIcon("favorites"))
148
FavoriteApplications::PassagewayViewProxy::~PassagewayViewProxy()
152
QMimeData * FavoriteApplications::PassagewayViewProxy::selfMimeData() const
154
QMap < QString , QString > map;
155
map["version"] = "1.0";
156
map["type"] = "list";
157
map["model"] = "FavoriteApplications";
159
QMimeData * data = new QMimeData();
160
data->setData("text/x-lancelotpart", Serializator::serialize(map).toAscii());
164
bool FavoriteApplications::dataDropAvailable(int where, const QMimeData * mimeData)
167
return (mimeData->formats().contains("text/uri-list"));
170
void FavoriteApplications::dataDropped(int where, const QMimeData * mimeData)
172
if (mimeData->formats().contains("text/uri-list")) {
175
KUrl url = KUrl(QString(mimeData->data("text/uri-list")));
177
for (int i = 0; i < size(); i++) {
178
if (url.path() == itemAt(i).data) {
187
insertUrl(where, url);
193
} // namespace Models
194
} // namespace Lancelot