connect(m_dirLister, SIGNAL(completed()),
this, SLOT(updateCutItems()));
- connect(m_dirLister, SIGNAL(newItems(const KFileItemList&)),
- this, SLOT(generatePreviews(const KFileItemList&)));
+ connect(m_dirLister, SIGNAL(newItems(const QList<KFileItem>&)),
+ this, SLOT(generatePreviews(const QList<KFileItem>&)));
m_controller = new DolphinController(this);
m_controller->setUrl(url);
m_active = active;
- QColor color = KColorScheme(KColorScheme::View).background();
- if (active) {
- emit urlChanged(url());
- emit selectionChanged(selectedItems());
- } else {
- color.setAlpha(0);
- }
-
- QWidget* viewport = itemView()->viewport();
- QPalette palette;
- palette.setColor(viewport->backgroundRole(), color);
- viewport->setPalette(palette);
-
+ updateViewportColor();
update();
if (active) {
void DolphinView::selectAll()
{
- selectAll(QItemSelectionModel::Select);
+ itemView()->selectAll();
}
void DolphinView::invertSelection()
{
- selectAll(QItemSelectionModel::Toggle);
+ if (isColumnViewActive()) {
+ // In opposite to QAbstractItemView::selectAll() there is no virtual method
+ // for adjusting the invertion of a selection. As the generic approach by using
+ // the selection model does not work for the column view, we delegate this task:
+ m_columnView->invertSelection();
+ } else {
+ QItemSelectionModel* selectionModel = itemView()->selectionModel();
+ const QAbstractItemModel* itemModel = selectionModel->model();
+
+ const QModelIndex topLeft = itemModel->index(0, 0);
+ const QModelIndex bottomRight = itemModel->index(itemModel->rowCount() - 1,
+ itemModel->columnCount() - 1);
+
+ QItemSelection selection(topLeft, bottomRight);
+ selectionModel->select(selection, QItemSelectionModel::Toggle);
+ }
}
bool DolphinView::hasSelection() const
itemView()->selectionModel()->clear();
}
-KFileItemList DolphinView::selectedItems() const
+QList<KFileItem> DolphinView::selectedItems() const
{
const QAbstractItemView* view = itemView();
Q_ASSERT((view != 0) && (view->selectionModel() != 0));
const QItemSelection selection = m_proxyModel->mapSelectionToSource(view->selectionModel()->selection());
- KFileItemList itemList;
+ QList<KFileItem> itemList;
const QModelIndexList indexList = selection.indexes();
QModelIndexList::const_iterator end = indexList.end();
for (QModelIndexList::const_iterator it = indexList.begin(); it != end; ++it) {
Q_ASSERT((*it).isValid());
- KFileItem* item = m_dirModel->itemForIndex(*it);
- if (item != 0) {
+ KFileItem item = m_dirModel->itemForIndex(*it);
+ if (!item.isNull()) {
itemList.append(item);
}
}
KUrl::List DolphinView::selectedUrls() const
{
KUrl::List urls;
-
- const KFileItemList list = selectedItems();
- KFileItemList::const_iterator it = list.begin();
- const KFileItemList::const_iterator end = list.end();
- while (it != end) {
- KFileItem* item = *it;
- urls.append(item->url());
- ++it;
+ const QList<KFileItem> list = selectedItems();
+ for ( QList<KFileItem>::const_iterator it = list.begin(), end = list.end();
+ it != end; ++it ) {
+ urls.append((*it).url());
}
-
return urls;
}
-KFileItem* DolphinView::fileItem(const QModelIndex index) const
+KFileItem DolphinView::fileItem(const QModelIndex& index) const
{
const QModelIndex dirModelIndex = m_proxyModel->mapToSource(index);
return m_dirModel->itemForIndex(dirModelIndex);
createView();
applyViewProperties(m_controller->url());
reload();
+ updateViewportColor();
}
void DolphinView::setUrl(const KUrl& url)
return;
}
- KFileItem* item = m_dirModel->itemForIndex(m_proxyModel->mapToSource(index));
- if (item == 0) {
+ KFileItem item = m_dirModel->itemForIndex(m_proxyModel->mapToSource(index));
+ if (item.isNull()) {
return;
}
// Prefer the local path over the URL.
bool isLocal;
- KUrl url = item->mostLocalUrl(isLocal);
+ KUrl url = item.mostLocalUrl(isLocal);
- if (item->isDir()) {
+ if (item.isDir()) {
setUrl(url);
- } else if (item->isFile()) {
+ } else if (item.isFile()) {
// allow to browse through ZIP and tar files
- KMimeType::Ptr mime = item->mimeTypePtr();
+ KMimeType::Ptr mime = item.mimeTypePtr();
if (mime->is("application/zip")) {
url.setProtocol("zip");
setUrl(url);
url.setProtocol("tar");
setUrl(url);
} else {
- item->run();
+ item.run();
}
} else {
- item->run();
+ item.run();
}
}
-void DolphinView::generatePreviews(const KFileItemList& items)
+void DolphinView::generatePreviews(const QList<KFileItem>& items)
{
if (m_controller->showPreview()) {
-
- // Must turn QList<KFileItem *> to QList<KFileItem>...
- QList<KFileItem> itemsToPreview;
- foreach( KFileItem* it, items )
- itemsToPreview.append( *it );
-
- KIO::PreviewJob* job = KIO::filePreview(itemsToPreview, 128);
+ KIO::PreviewJob* job = KIO::filePreview(items, 128);
connect(job, SIGNAL(gotPreview(const KFileItem&, const QPixmap&)),
this, SLOT(showPreview(const KFileItem&, const QPixmap&)));
}
const KUrl& dirListerUrl = m_dirLister->url();
if ((dirListerUrl == url) || !m_dirLister->url().isParentOf(url)) {
// The current URL is not a child of the dir lister
- // URL. This may happen when e. g. a bookmark has been selected
+ // URL. This may happen when e. g. a place has been selected
// and hence the view must be reset.
keepOldDirs = false;
}
}
}
-void DolphinView::changeSelection(const KFileItemList& selection)
+void DolphinView::changeSelection(const QList<KFileItem>& selection)
{
clearSelection();
if (selection.isEmpty()) {
const KUrl& baseUrl = url();
KUrl url;
QItemSelection new_selection;
- foreach(KFileItem* item, selection) {
- url = item->url().upUrl();
+ foreach(const KFileItem& item, selection) {
+ url = item.url().upUrl();
if (baseUrl.equals(url, KUrl::CompareWithoutTrailingSlash)) {
- QModelIndex index = m_proxyModel->mapFromSource(m_dirModel->indexForItem(*item));
+ QModelIndex index = m_proxyModel->mapFromSource(m_dirModel->indexForItem(item));
new_selection.select(index, index);
}
}
void DolphinView::openContextMenu(const QPoint& pos)
{
- KFileItem* item = 0;
+ KFileItem item;
const QModelIndex index = itemView()->indexAt(pos);
if (isValidNameIndex(index)) {
const QModelIndex& index,
QWidget* source)
{
- KFileItem* directory = 0;
+ KFileItem directory;
if (isValidNameIndex(index)) {
- KFileItem* item = fileItem(index);
- Q_ASSERT(item != 0);
- if (item->isDir()) {
+ KFileItem item = fileItem(index);
+ Q_ASSERT(!item.isNull());
+ if (item.isDir()) {
// the URLs are dropped above a directory
directory = item;
}
}
- if ((directory == 0) && (source == itemView())) {
+ if ((directory.isNull()) && (source == itemView())) {
// The dropping is done into the same viewport where
// the dragging has been started. Just ignore this...
return;
}
- const KUrl& destination = (directory == 0) ?
- url() : directory->url();
+ const KUrl& destination = (directory.isNull()) ?
+ url() : directory.url();
dropUrls(urls, destination);
}
return;
}
- const KFileItem* item = fileItem(index);
- if (item != 0) {
- emit requestItemInfo(*item);
+ const KFileItem item = fileItem(index);
+ if (!item.isNull()) {
+ emit requestItemInfo(item);
}
}
this, SLOT(emitContentsMoved()));
}
-void DolphinView::selectAll(QItemSelectionModel::SelectionFlags flags)
-{
- QItemSelectionModel* selectionModel = itemView()->selectionModel();
- const QAbstractItemModel* itemModel = selectionModel->model();
-
- const QModelIndex topLeft = itemModel->index(0, 0);
- const QModelIndex bottomRight = itemModel->index(itemModel->rowCount() - 1,
- itemModel->columnCount() - 1);
-
- QItemSelection selection(topLeft, bottomRight);
- selectionModel->select(selection, flags);
-}
-
QAbstractItemView* DolphinView::itemView() const
{
if (m_detailsView != 0) {
KFileItem* item = *it;
if (isCutItem(*item)) {
const QModelIndex index = m_dirModel->indexForItem(*item);
- const KFileItem* item = m_dirModel->itemForIndex(index);
+ // Huh? the item is already known
+ //const KFileItem item = m_dirModel->itemForIndex(index);
const QVariant value = m_dirModel->data(index, Qt::DecorationRole);
- if ((value.type() == QVariant::Icon) && (item != 0)) {
+ if (value.type() == QVariant::Icon) {
const QIcon icon(qvariant_cast<QIcon>(value));
QPixmap pixmap = icon.pixmap(128, 128);
}
}
+void DolphinView::updateViewportColor()
+{
+ QColor color = KColorScheme(KColorScheme::View).background();
+ if (m_active) {
+ emit urlChanged(url());
+ emit selectionChanged(selectedItems());
+ } else {
+ color.setAlpha(0);
+ }
+
+ QWidget* viewport = itemView()->viewport();
+ QPalette palette;
+ palette.setColor(viewport->backgroundRole(), color);
+ viewport->setPalette(palette);
+}
+
#include "dolphinview.moc"