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) {
m_controller->setUrl(m_dirLister->url());
}
- ViewProperties props(url());
+ const KUrl viewPropsUrl = viewPropertiesUrl();
+ ViewProperties props(viewPropsUrl);
props.setViewMode(m_mode);
createView();
- startDirLister(url());
+ startDirLister(viewPropsUrl);
emit modeChanged();
}
void DolphinView::setShowPreview(bool show)
{
- ViewProperties props(url());
+ const KUrl viewPropsUrl = viewPropertiesUrl();
+ ViewProperties props(viewPropsUrl);
props.setShowPreview(show);
m_controller->setShowPreview(show);
emit showPreviewChanged();
- startDirLister(url(), true);
+ startDirLister(viewPropsUrl, true);
}
bool DolphinView::showPreview() const
return;
}
- ViewProperties props(url());
+ const KUrl viewPropsUrl = viewPropertiesUrl();
+ ViewProperties props(viewPropsUrl);
props.setShowHiddenFiles(show);
m_dirLister->setShowingDotFiles(show);
emit showHiddenFilesChanged();
- startDirLister(url(), true);
+ startDirLister(viewPropsUrl, true);
}
bool DolphinView::showHiddenFiles() const
delete categorizer;
}
- ViewProperties props(url());
+ ViewProperties props(viewPropertiesUrl());
props.setCategorizedSorting(categorized);
props.save();
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);
void DolphinView::setAdditionalInfo(KFileItemDelegate::AdditionalInformation info)
{
- ViewProperties props(url());
+ const KUrl viewPropsUrl = viewPropertiesUrl();
+ ViewProperties props(viewPropsUrl);
props.setAdditionalInfo(info);
m_controller->setShowAdditionalInfo(info != KFileItemDelegate::NoInformation);
m_fileItemDelegate->setAdditionalInformation(info);
emit additionalInfoChanged(info);
- startDirLister(url(), true);
+ startDirLister(viewPropsUrl, true);
}
KFileItemDelegate::AdditionalInformation DolphinView::additionalInfo() const
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&)));
}
}
}
+KUrl DolphinView::viewPropertiesUrl() const
+{
+ if (isColumnViewActive()) {
+ return m_dirLister->url();
+ }
+
+ return url();
+}
+
void DolphinView::applyViewProperties(const KUrl& url)
{
+ if (isColumnViewActive() && m_dirLister->url().isParentOf(url)) {
+ // The column view is active, hence don't apply the view properties
+ // of sub directories (represented by columns) to the view. The
+ // view always represents the properties of the first column.
+ return;
+ }
+
const ViewProperties props(url);
const Mode mode = props.viewMode();
- bool changeMode = (m_mode != mode);
- if (changeMode && isColumnViewActive()) {
- // The column view is active. Only change the
- // mode if the current URL is no child of the column view.
- if (m_dirLister->url().isParentOf(url)) {
- changeMode = false;
- }
- }
-
- if (changeMode) {
+ if (m_mode != mode) {
m_mode = mode;
createView();
emit modeChanged();
}
}
-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);
}
void DolphinView::updateSorting(DolphinView::Sorting sorting)
{
- ViewProperties props(url());
+ ViewProperties props(viewPropertiesUrl());
props.setSorting(sorting);
m_proxyModel->setSorting(sorting);
void DolphinView::updateSortOrder(Qt::SortOrder order)
{
- ViewProperties props(url());
+ ViewProperties props(viewPropertiesUrl());
props.setSortOrder(order);
m_proxyModel->setSortOrder(order);
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"