This allows inserting items to the corresponding group.
#include <kabstractfileitemactionplugin.h>
#include <KFileItemActions>
#include <KFileItemListProperties>
-#include <KFilePlacesModel>
#include <KGlobal>
#include <KIconLoader>
#include <KIO/NetAccess>
#include <KStandardDirs>
#include <KToolBar>
+#include <panels/places/placesitem.h>
+#include <panels/places/placesitemmodel.h>
+
#include <QApplication>
#include <QClipboard>
#include <QDir>
if (activatedAction == addToPlacesAction) {
const KUrl selectedUrl(m_fileInfo.url());
if (selectedUrl.isValid()) {
- KFilePlacesModel model;
- model.addPlace(placesName(selectedUrl), selectedUrl);
+ PlacesItemModel model;
+ PlacesItem* item = model.createPlacesItem(placesName(selectedUrl),
+ selectedUrl);
+ model.appendItemToGroup(item);
}
} else if (activatedAction == openParentInNewWindowAction) {
m_command = OpenParentFolderInNewWindow;
if (addToPlacesAction && (action == addToPlacesAction)) {
const KUrl url = m_mainWindow->activeViewContainer()->url();
if (url.isValid()) {
- KFilePlacesModel model;
- model.addPlace(placesName(url), url);
+ PlacesItemModel model;
+ PlacesItem* item = model.createPlacesItem(placesName(url), url);
+ model.appendItemToGroup(item);
}
}
}
bool DolphinContextMenu::placeExists(const KUrl& url) const
{
- KFilePlacesModel model;
+ PlacesItemModel model;
- const int count = model.rowCount();
+ const int count = model.count();
for (int i = 0; i < count; ++i) {
- const QModelIndex index = model.index(i, 0);
- if (url.equals(model.url(index), KUrl::CompareWithoutTrailingSlash)) {
+ const KUrl placeUrl = model.placesItem(i)->url();
+ if (placeUrl.equals(url, KUrl::CompareWithoutTrailingSlash)) {
return true;
}
}
+
return false;
}
#include <kdeversion.h>
#include <kdualaction.h>
#include <KFileDialog>
-#include <KFilePlacesModel>
#include <KGlobal>
#include <KLineEdit>
#include <KToolBar>
#include <KDialog>
#include <KFileItem>
#include <kfilemetadatawidget.h>
-#include <KFilePlacesModel>
#include <KGlobalSettings>
#include <KIO/JobUiDelegate>
#include <KIO/PreviewJob>
#include <kseparator.h>
#include <KStringHandler>
+#include <panels/places/placesitem.h>
+#include <panels/places/placesitemmodel.h>
+
#include <Phonon/BackendCapabilities>
#include <Phonon/MediaObject>
#include <Phonon/SeekSlider>
m_nameLabel(0),
m_metaDataWidget(0),
m_metaDataArea(0),
- m_placesModel(0)
+ m_placesItemModel(0)
{
parent->installEventFilter(this);
layout->addWidget(new KSeparator());
layout->addWidget(m_metaDataArea);
- m_placesModel = new KFilePlacesModel(this);
+ m_placesItemModel = new PlacesItemModel(this);
}
InformationPanelContent::~InformationPanelContent()
bool InformationPanelContent::applyPlace(const KUrl& url)
{
- const int count = m_placesModel->rowCount();
+ const int count = m_placesItemModel->count();
for (int i = 0; i < count; ++i) {
- QModelIndex index = m_placesModel->index(i, 0);
- if (url.equals(m_placesModel->url(index), KUrl::CompareWithoutTrailingSlash)) {
- setNameLabelText(m_placesModel->text(index));
- m_preview->setPixmap(m_placesModel->icon(index).pixmap(128, 128));
+ const PlacesItem* item = m_placesItemModel->placesItem(i);
+ if (item->url().equals(url, KUrl::CompareWithoutTrailingSlash)) {
+ setNameLabelText(item->text());
+ m_preview->setPixmap(KIcon(item->icon()).pixmap(128, 128));
return true;
}
}
class KFileItemList;
class KFileMetaDataWidget;
-class KFilePlacesModel;
class PhononWidget;
class PixmapViewer;
+class PlacesItemModel;
class QPixmap;
class QString;
class QLabel;
KFileMetaDataWidget* m_metaDataWidget;
QScrollArea* m_metaDataArea;
- KFilePlacesModel* m_placesModel;
+ PlacesItemModel* m_placesItemModel;
};
#endif // INFORMATIONPANELCONTENT_H
delete m_volume;
delete m_disc;
+
const QString udi = bookmark.metaDataItem("UDI");
if (udi.isEmpty()) {
setIcon(bookmark.icon());
initializeDevice(udi);
}
- switch (groupType()) {
+ const GroupType type = groupType();
+ if (icon().isEmpty()) {
+ switch (type) {
+ case RecentlyAccessedType: setIcon("package_utility_time"); break;
+ case SearchForType: setIcon("nepomuk"); break;
+ case PlacesType:
+ default: setIcon("folder");
+ }
+
+ }
+
+ switch (type) {
case PlacesType: setGroup(i18nc("@item", "Places")); break;
case RecentlyAccessedType: setGroup(i18nc("@item", "Recently Accessed")); break;
case SearchForType: setGroup(i18nc("@item", "Search For")); break;
return RecentlyAccessedType;
}
- if (protocol == QLatin1String("search")) {
+ if (protocol.contains(QLatin1String("search"))) {
return SearchForType;
}
return foundIndex;
}
+void PlacesItemModel::appendItemToGroup(PlacesItem* item)
+{
+ if (!item) {
+ return;
+ }
+
+ int i = 0;
+ while (i < count() && placesItem(i)->group() != item->group()) {
+ ++i;
+ }
+
+ bool inserted = false;
+ while (!inserted && i < count()) {
+ if (placesItem(i)->group() != item->group()) {
+ insertItem(i, item);
+ inserted = true;
+ }
+ ++i;
+ }
+
+ if (!inserted) {
+ appendItem(item);
+ }
+}
+
+
QAction* PlacesItemModel::ejectAction(int index) const
{
const PlacesItem* item = placesItem(index);
text = url.host();
}
- KBookmark bookmark = PlacesItem::createBookmark(m_bookmarkManager,
- text,
- url,
- "folder");
- PlacesItem* newItem = new PlacesItem(bookmark);
+ PlacesItem* newItem = createPlacesItem(text, url);
const int dropIndex = groupedDropIndex(index, newItem);
insertItem(dropIndex, newItem);
}
if (item->isHidden() && !m_hiddenItemsShown) {
m_bookmarkedItems.append(item);
} else {
- appendItem(item);
+ appendItemToGroup(item);
}
}
}
*/
PlacesItem* createPlacesItem(const QString& text,
const KUrl& url,
- const QString& iconName);
+ const QString& iconName = QString());
PlacesItem* placesItem(int index) const;
*/
int closestItem(const KUrl& url) const;
+ /**
+ * Appends the item \a item as last element of the group
+ * the item belongs to. If no item with the same group is
+ * present, the item gets appended as last element of the
+ * model. PlacesItemModel takes the ownership
+ * of the item.
+ */
+ void appendItemToGroup(PlacesItem* item);
+
QAction* ejectAction(int index) const;
QAction* teardownAction(int index) const;
dialog->setUrl(url);
if (dialog->exec() == QDialog::Accepted) {
PlacesItem* item = m_model->createPlacesItem(dialog->text(), dialog->url(), dialog->icon());
-
- // Insert the item as last item of the corresponding group.
- int i = 0;
- while (i < m_model->count() && m_model->placesItem(i)->group() != item->group()) {
- ++i;
- }
-
- bool inserted = false;
- while (!inserted && i < m_model->count()) {
- if (m_model->placesItem(i)->group() != item->group()) {
- m_model->insertItem(i, item);
- inserted = true;
- }
- ++i;
- }
-
- if (!inserted) {
- m_model->appendItem(item);
- }
+ m_model->appendItemToGroup(item);
}
delete dialog;