┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/places/placesitemmodel.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2012-04-28 23:58:56 +0200
committerPeter Penz <[email protected]>2012-04-29 00:00:38 +0200
commitb419cfc5974192f3445b6a439b40bae4af119615 (patch)
tree3e31094427b7f54fd6ffb5771890ed02e0662795 /src/panels/places/placesitemmodel.cpp
parent0a00f13bf246d37182dafcd053776048f63d2299 (diff)
Places Panel fixes
Implement adding, editing and removing of entries. Note that the result currently is still not stored in bookmarks.xml (this needs to wait until the hiding is implemented in the model).
Diffstat (limited to 'src/panels/places/placesitemmodel.cpp')
-rw-r--r--src/panels/places/placesitemmodel.cpp192
1 files changed, 118 insertions, 74 deletions
diff --git a/src/panels/places/placesitemmodel.cpp b/src/panels/places/placesitemmodel.cpp
index f3162e7b2..ae6163e03 100644
--- a/src/panels/places/placesitemmodel.cpp
+++ b/src/panels/places/placesitemmodel.cpp
@@ -49,8 +49,8 @@ PlacesItemModel::PlacesItemModel(QObject* parent) :
m_nepomukRunning(false),
m_availableDevices(),
m_bookmarkManager(0),
- m_defaultBookmarks(),
- m_defaultBookmarksIndexes()
+ m_systemBookmarks(),
+ m_systemBookmarksIndexes()
{
#ifdef HAVE_NEPOMUK
m_nepomukRunning = (Nepomuk::ResourceManager::instance()->initialized());
@@ -58,7 +58,7 @@ PlacesItemModel::PlacesItemModel(QObject* parent) :
const QString file = KStandardDirs::locateLocal("data", "kfileplaces/bookmarks.xml");
m_bookmarkManager = KBookmarkManager::managerForFile(file, "kfilePlaces");
- createDefaultBookmarks();
+ createSystemBookmarks();
loadBookmarks();
}
@@ -71,6 +71,49 @@ int PlacesItemModel::hiddenCount() const
return 0;
}
+bool PlacesItemModel::isSystemItem(int index) const
+{
+ if (index >= 0 && index < count()) {
+ const KUrl url = data(index).value("url").value<KUrl>();
+ return m_systemBookmarksIndexes.contains(url);
+ }
+ return false;
+}
+
+int PlacesItemModel::closestItem(const KUrl& url) const
+{
+ int foundIndex = -1;
+ int maxLength = 0;
+
+ for (int i = 0; i < count(); ++i) {
+ const KUrl itemUrl = data(i).value("url").value<KUrl>();
+ if (itemUrl.isParentOf(url)) {
+ const int length = itemUrl.prettyUrl().length();
+ if (length > maxLength) {
+ foundIndex = i;
+ maxLength = length;
+ }
+ }
+ }
+
+ return foundIndex;
+}
+
+QString PlacesItemModel::placesGroupName() const
+{
+ return i18nc("@item", "Places");
+}
+
+QString PlacesItemModel::recentlyAccessedGroupName() const
+{
+ return i18nc("@item", "Recently Accessed");
+}
+
+QString PlacesItemModel::searchForGroupName() const
+{
+ return i18nc("@item", "Search For");
+}
+
QAction* PlacesItemModel::ejectAction(int index) const
{
Q_UNUSED(index);
@@ -89,9 +132,9 @@ void PlacesItemModel::loadBookmarks()
KBookmark bookmark = root.first();
QSet<QString> devices = m_availableDevices;
- QSet<KUrl> missingDefaultBookmarks;
- foreach (const DefaultBookmarkData& data, m_defaultBookmarks) {
- missingDefaultBookmarks.insert(data.url);
+ QSet<KUrl> missingSystemBookmarks;
+ foreach (const SystemBookmarkData& data, m_systemBookmarks) {
+ missingSystemBookmarks.insert(data.url);
}
while (!bookmark.isNull()) {
@@ -109,16 +152,16 @@ void PlacesItemModel::loadBookmarks()
item->setDataValue("address", bookmark.address());
item->setDataValue("url", url);
- if (missingDefaultBookmarks.contains(url)) {
- missingDefaultBookmarks.remove(url);
- // Apply the translated text to the default bookmarks, otherwise an outdated
+ if (missingSystemBookmarks.contains(url)) {
+ missingSystemBookmarks.remove(url);
+ // Apply the translated text to the system bookmarks, otherwise an outdated
// translation might be shown.
- const int index = m_defaultBookmarksIndexes.value(url);
- item->setText(m_defaultBookmarks[index].text);
+ const int index = m_systemBookmarksIndexes.value(url);
+ item->setText(m_systemBookmarks[index].text);
- // The default bookmarks don't contain "real" queries stored as URLs, so
+ // The system bookmarks don't contain "real" queries stored as URLs, so
// they must be translated first.
- item->setDataValue("url", translatedDefaultBookmarkUrl(url));
+ item->setDataValue("url", translatedSystemBookmarkUrl(url));
} else {
item->setText(bookmark.text());
}
@@ -136,13 +179,13 @@ void PlacesItemModel::loadBookmarks()
bookmark = root.next(bookmark);
}
- if (!missingDefaultBookmarks.isEmpty()) {
- foreach (const DefaultBookmarkData& data, m_defaultBookmarks) {
- if (missingDefaultBookmarks.contains(data.url)) {
+ if (!missingSystemBookmarks.isEmpty()) {
+ foreach (const SystemBookmarkData& data, m_systemBookmarks) {
+ if (missingSystemBookmarks.contains(data.url)) {
KStandardItem* item = new KStandardItem();
item->setIcon(KIcon(data.icon));
item->setText(data.text);
- item->setDataValue("url", translatedDefaultBookmarkUrl(data.url));
+ item->setDataValue("url", translatedSystemBookmarkUrl(data.url));
item->setGroup(data.group);
appendItem(item);
}
@@ -150,76 +193,77 @@ void PlacesItemModel::loadBookmarks()
}
}
-void PlacesItemModel::createDefaultBookmarks()
+void PlacesItemModel::createSystemBookmarks()
{
- Q_ASSERT(m_defaultBookmarks.isEmpty());
- Q_ASSERT(m_defaultBookmarksIndexes.isEmpty());
+ Q_ASSERT(m_systemBookmarks.isEmpty());
+ Q_ASSERT(m_systemBookmarksIndexes.isEmpty());
- const QString placesGroup = i18nc("@item", "Places");
- const QString recentlyAccessedGroup = i18nc("@item", "Recently Accessed");
- const QString searchForGroup = i18nc("@item", "Search For");
+ const QString placesGroup = placesGroupName();
+ const QString recentlyAccessedGroup = recentlyAccessedGroupName();
+ const QString searchForGroup = searchForGroupName();
const QString timeLineIcon = "package_utility_time"; // TODO: Ask the Oxygen team to create
// a custom icon for the timeline-protocol
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl(KUser().homeDir()),
- "user-home",
- i18nc("@item", "Home"),
- placesGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("remote:/"),
- "network-workgroup",
- i18nc("@item", "Network"),
- placesGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("/"),
- "folder-red",
- i18nc("@item", "Root"),
- placesGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("trash:/"),
- "user-trash",
- i18nc("@item", "Trash"),
- placesGroup));
+ m_systemBookmarks.append(SystemBookmarkData(KUrl(KUser().homeDir()),
+ "user-home",
+ i18nc("@item", "Home"),
+ placesGroup));
+ m_systemBookmarks.append(SystemBookmarkData(KUrl("remote:/"),
+ "network-workgroup",
+ i18nc("@item", "Network"),
+ placesGroup));
+ m_systemBookmarks.append(SystemBookmarkData(KUrl("/"),
+ "folder-red",
+ i18nc("@item", "Root"),
+ placesGroup));
+ m_systemBookmarks.append(SystemBookmarkData(KUrl("trash:/"),
+ "user-trash",
+ i18nc("@item", "Trash"),
+ placesGroup));
if (m_nepomukRunning) {
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("timeline:/today"),
- timeLineIcon,
- i18nc("@item Recently Accessed", "Today"),
- recentlyAccessedGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("timeline:/yesterday"),
- timeLineIcon,
- i18nc("@item Recently Accessed", "Yesterday"),
- recentlyAccessedGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("timeline:/thismonth"),
- timeLineIcon,
- i18nc("@item Recently Accessed", "This Month"),
- recentlyAccessedGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("timeline:/lastmonth"),
- timeLineIcon,
- i18nc("@item Recently Accessed", "Last Month"),
- recentlyAccessedGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("search:/documents"),
- "folder-txt",
- i18nc("@item Commonly Accessed", "Documents"),
- searchForGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("search:/images"),
- "folder-image",
- i18nc("@item Commonly Accessed", "Images"),
- searchForGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("search:/audio"),
- "folder-sound",
- i18nc("@item Commonly Accessed", "Audio"),
- searchForGroup));
- m_defaultBookmarks.append(DefaultBookmarkData(KUrl("search:/videos"),
- "folder-video",
- i18nc("@item Commonly Accessed", "Videos"),
- searchForGroup));
+ m_systemBookmarks.append(SystemBookmarkData(KUrl("timeline:/today"),
+ timeLineIcon,
+ i18nc("@item Recently Accessed", "Today"),
+ recentlyAccessedGroup));
+ m_systemBookmarks.append(SystemBookmarkData(KUrl("timeline:/yesterday"),
+ timeLineIcon,
+ i18nc("@item Recently Accessed", "Yesterday"),
+ recentlyAccessedGroup));
+ m_systemBookmarks.append(SystemBookmarkData(KUrl("timeline:/thismonth"),
+ timeLineIcon,
+ i18nc("@item Recently Accessed", "This Month"),
+ recentlyAccessedGroup));
+ m_systemBookmarks.append(SystemBookmarkData(KUrl("timeline:/lastmonth"),
+ timeLineIcon,
+ i18nc("@item Recently Accessed", "Last Month"),
+ recentlyAccessedGroup));
+ m_systemBookmarks.append(SystemBookmarkData(KUrl("search:/documents"),
+ "folder-txt",
+ i18nc("@item Commonly Accessed", "Documents"),
+ searchForGroup));
+ m_systemBookmarks.append(SystemBookmarkData(KUrl("search:/images"),
+ "folder-image",
+ i18nc("@item Commonly Accessed", "Images"),
+ searchForGroup));
+ m_systemBookmarks.append(SystemBookmarkData(KUrl("search:/audio"),
+ "folder-sound",
+ i18nc("@item Commonly Accessed", "Audio"),
+ searchForGroup));
+ m_systemBookmarks.append(SystemBookmarkData(KUrl("search:/videos"),
+ "folder-video",
+ i18nc("@item Commonly Accessed", "Videos"),
+ searchForGroup));
}
- for (int i = 0; i < m_defaultBookmarks.count(); ++i) {
- m_defaultBookmarksIndexes.insert(m_defaultBookmarks[i].url, i);
+ for (int i = 0; i < m_systemBookmarks.count(); ++i) {
+ const KUrl url = translatedSystemBookmarkUrl(m_systemBookmarks[i].url);
+ m_systemBookmarksIndexes.insert(url, i);
}
}
-KUrl PlacesItemModel::translatedDefaultBookmarkUrl(const KUrl& url) const
+KUrl PlacesItemModel::translatedSystemBookmarkUrl(const KUrl& url) const
{
KUrl translatedUrl = url;
if (url.protocol() == QLatin1String("timeline")) {