this, SLOT(updateSorting(DolphinView::Sorting)));
connect(m_controller, SIGNAL(sortOrderChanged(Qt::SortOrder)),
this, SLOT(updateSortOrder(Qt::SortOrder)));
- connect(m_controller, SIGNAL(itemTriggered(const QModelIndex&)),
- this, SLOT(triggerItem(const QModelIndex&)));
+ connect(m_controller, SIGNAL(itemTriggered(const KFileItem&)),
+ this, SLOT(triggerItem(const KFileItem&)));
connect(m_controller, SIGNAL(activated()),
this, SLOT(activate()));
connect(m_controller, SIGNAL(itemEntered(const KFileItem&)),
KUrl DolphinView::rootUrl() const
{
- return isColumnViewActive() ? m_dirLister->url() : url();
+ return isColumnViewActive() ? m_columnView->rootUrl() : url();
}
void DolphinView::setActive(bool active)
m_active = active;
- updateViewportColor();
+ QColor color = KColorScheme(QPalette::Active, KColorScheme::View).background().color();
+ if (active) {
+ // TODO: emitting urlChanged() is a hack, as the URL hasn't really changed. It
+ // bypasses the problem when having a split view and changing the active view to
+ // update the some URL dependent states. A nicer approach should be no big deal...
+ emit urlChanged(url());
+ emit selectionChanged(selectedItems());
+ } else {
+ color.setAlpha(150);
+ }
+
+ QWidget* viewport = itemView()->viewport();
+ QPalette palette;
+ palette.setColor(viewport->backgroundRole(), color);
+ viewport->setPalette(palette);
+
update();
if (active) {
emit activated();
}
+
+ m_controller->indicateActivationChange(active);
}
bool DolphinView::isActive() const
// to go back to the root URL of the column view automatically.
// Otherwise there it would not be possible to turn off the column view
// without focusing the first column.
- setUrl(m_dirLister->url());
- m_controller->setUrl(m_dirLister->url());
+ const KUrl root = rootUrl();
+ setUrl(root);
+ m_controller->setUrl(root);
}
const KUrl viewPropsUrl = viewPropertiesUrl();
void DolphinView::refresh()
{
+ const bool oldActivationState = m_active;
+ m_active = true;
+
createView();
applyViewProperties(m_controller->url());
reload();
- updateViewportColor();
+
+ setActive(oldActivationState);
}
void DolphinView::updateView(const KUrl& url, const KUrl& rootUrl)
// that the view properties have been changed or deleted in the meantime, so
// it cannot be asserted that really a column view has been created:
if (itemView() == m_columnView) {
+ m_columnView->setRootUrl(rootUrl);
m_columnView->showColumn(url);
}
} else {
setActive(true);
}
-void DolphinView::triggerItem(const QModelIndex& index)
+void DolphinView::triggerItem(const KFileItem& item)
{
- Q_ASSERT(index.isValid());
-
const Qt::KeyboardModifiers modifier = QApplication::keyboardModifiers();
if ((modifier & Qt::ShiftModifier) || (modifier & Qt::ControlModifier)) {
// items are selected by the user, hence don't trigger the
return;
}
- const KFileItem item = m_dolphinModel->itemForIndex(m_proxyModel->mapToSource(index));
-
if (item.isNull()) {
return;
}
m_dirLister->stop();
m_dirLister->openUrl(url, reload ? KDirLister::Reload : KDirLister::NoFlags);
- if (isColumnViewActive() && reload) {
- // reloading the directory lister is not enough in the case of the
+ if (isColumnViewActive()) {
+ // adjusting the directory lister is not enough in the case of the
// column view, as each column has its own directory lister internally...
- m_columnView->reload();
+ if (reload) {
+ m_columnView->reload();
+ } else {
+ m_columnView->showColumn(url);
+ }
}
}
void DolphinView::applyViewProperties(const KUrl& url)
{
- if (isColumnViewActive() && m_dirLister->url().isParentOf(url)) {
+ if (isColumnViewActive() && rootUrl().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.
const KFileItem item = *it;
if (isCutItem(item)) {
const QModelIndex index = m_dolphinModel->indexForItem(item);
- // Huh? the item is already known
- //const KFileItem item = m_dolphinModel->itemForIndex(index);
const QVariant value = m_dolphinModel->data(index, Qt::DecorationRole);
if (value.type() == QVariant::Icon) {
const QIcon icon(qvariant_cast<QIcon>(value));
}
}
-void DolphinView::updateViewportColor()
-{
- QColor color = KColorScheme(QPalette::Active, KColorScheme::View).background().color();
- if (m_active) {
- emit urlChanged(url()); // Hmm, this is a hack; the url hasn't really changed.
- emit selectionChanged(selectedItems());
- } else {
- color.setAlpha(0);
- }
-
- QWidget* viewport = itemView()->viewport();
- QPalette palette;
- palette.setColor(viewport->backgroundRole(), color);
- viewport->setPalette(palette);
-}
-
#include "dolphinview.moc"