void setUrl(const KUrl& url);
/** Returns the directory URL that is shown inside the column widget. */
- inline const KUrl& url() const;
+ const KUrl& url() const;
protected:
virtual QStyleOptionViewItem viewOptions() const;
viewport()->setAttribute(Qt::WA_Hover);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
- // TODO: enable ScrollPerPixel again as soon as a Qt-patch
- // is supplied which fixes a possible crash
- //setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
+ setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
setSelectionBehavior(SelectItems);
setSelectionMode(QAbstractItemView::ExtendedSelection);
setDragDropMode(QAbstractItemView::DragDrop);
const int iconSize = settings->iconSize();
m_viewOptions.decorationSize = QSize(iconSize, iconSize);
+ m_viewOptions.showDecorationSelected = true;
+
KFileItemDelegate* delegate = new KFileItemDelegate(this);
setItemDelegate(delegate);
m_url = url;
}
-const KUrl& ColumnWidget::url() const
+inline const KUrl& ColumnWidget::url() const
{
return m_url;
}
-QStyleOptionViewItem ColumnWidget::viewOptions() const
+inline QStyleOptionViewItem ColumnWidget::viewOptions() const
{
return m_viewOptions;
}
QAbstractItemView(parent),
m_controller(controller),
m_restoreActiveColumnFocus(false),
- m_dirListerCompleted(false),
m_index(-1),
m_contentX(0),
m_columns(),
connect(horizontalScrollBar(), SIGNAL(valueChanged(int)),
this, SLOT(moveContentHorizontally(int)));
+ m_animation = new QTimeLine(500, this);
+ connect(m_animation, SIGNAL(frameChanged(int)), horizontalScrollBar(), SLOT(setValue(int)));
+
ColumnWidget* column = new ColumnWidget(viewport(), this, m_controller->url());
m_columns.append(column);
setActiveColumnIndex(0);
updateDecorationSize();
- m_animation = new QTimeLine(500, this);
- connect(m_animation, SIGNAL(frameChanged(int)), horizontalScrollBar(), SLOT(setValue(int)));
-
// dim the background of the viewport
QColor bgColor = KColorScheme(QPalette::Active, KColorScheme::View).background().color();
const QColor fgColor = KColorScheme(QPalette::Active, KColorScheme::View).foreground().color();
this, SLOT(triggerReloadColumns(const QModelIndex&)));
KDirLister* dirLister = m_dolphinModel->dirLister();
- connect(dirLister, SIGNAL(started(const KUrl&)),
- this, SLOT(slotDirListerStarted(const KUrl&)));
connect(dirLister, SIGNAL(completed()),
- this, SLOT(slotDirListerCompleted()));
+ this, SLOT(triggerExpandToActiveUrl()));
activeColumn()->setModel(model);
QAbstractItemView::setModel(model);
KDirLister* dirLister = m_dolphinModel->dirLister();
const KFileItemList list = dirLister->itemsForDir(column->url());
- foreach (KFileItem* item, list) {
- const QModelIndex index = m_dolphinModel->indexForUrl(item->url());
+ foreach (const KFileItem item, list) {
+ const QModelIndex index = m_dolphinModel->indexForUrl(item.url());
selModel->select(m_proxyModel->mapFromSource(index), QItemSelectionModel::Toggle);
}
}
columnIndex++;
ColumnWidget* column = new ColumnWidget(viewport(), this, childUrl);
- column->setVerticalScrollMode(ColumnWidget::ScrollPerPixel);
- column->setHorizontalScrollMode(ColumnWidget::ScrollPerPixel);
column->setModel(model());
column->setRootIndex(proxyIndex);
column->setActive(false);
activeColumn()->setActive(false);
m_index = columnIndex;
activeColumn()->setActive(true);
+ assureVisibleActiveColumn();
}
void DolphinColumnView::selectAll()
{
if (isZoomInPossible()) {
ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
- // TODO: get rid of K3Icon sizes
switch (settings->iconSize()) {
- case K3Icon::SizeSmall: settings->setIconSize(K3Icon::SizeMedium); break;
- case K3Icon::SizeMedium: settings->setIconSize(K3Icon::SizeLarge); break;
+ case KIconLoader::SizeSmall: settings->setIconSize(KIconLoader::SizeMedium); break;
+ case KIconLoader::SizeMedium: settings->setIconSize(KIconLoader::SizeLarge); break;
default: Q_ASSERT(false); break;
}
updateDecorationSize();
{
if (isZoomOutPossible()) {
ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
- // TODO: get rid of K3Icon sizes
switch (settings->iconSize()) {
- case K3Icon::SizeLarge: settings->setIconSize(K3Icon::SizeMedium); break;
- case K3Icon::SizeMedium: settings->setIconSize(K3Icon::SizeSmall); break;
+ case KIconLoader::SizeLarge: settings->setIconSize(KIconLoader::SizeMedium); break;
+ case KIconLoader::SizeMedium: settings->setIconSize(KIconLoader::SizeSmall); break;
default: Q_ASSERT(false); break;
}
updateDecorationSize();
void DolphinColumnView::moveContentHorizontally(int x)
{
- m_contentX = -x;
+ m_contentX = isRightToLeft() ? +x : -x;
layoutColumns();
}
Q_ASSERT(lastIndex >= 0);
const KUrl& activeUrl = m_columns[lastIndex]->url();
const KUrl rootUrl = m_dolphinModel->dirLister()->url();
- const bool expand = m_dirListerCompleted
- && rootUrl.isParentOf(activeUrl)
+ const bool expand = rootUrl.isParentOf(activeUrl)
&& !rootUrl.equals(activeUrl, KUrl::CompareWithoutTrailingSlash);
if (expand) {
m_dolphinModel->expandToUrl(activeUrl);
const int end = m_columns.count() - 2; // next to last column
for (int i = 0; i <= end; ++i) {
ColumnWidget* nextColumn = m_columns[i + 1];
-
- KDirLister* dirLister = m_dolphinModel->dirLister();
- dirLister->updateDirectory(nextColumn->url());
-
const QModelIndex rootIndex = nextColumn->rootIndex();
if (rootIndex.isValid()) {
nextColumn->show();
}
}
}
- assureVisibleActiveColumn();
-}
-
-void DolphinColumnView::slotDirListerStarted(const KUrl& url)
-{
- Q_UNUSED(url);
- m_dirListerCompleted = false;
}
-void DolphinColumnView::slotDirListerCompleted()
+void DolphinColumnView::triggerExpandToActiveUrl()
{
- m_dirListerCompleted = true;
QMetaObject::invokeMethod(this, "expandToActiveUrl", Qt::QueuedConnection);
}
bool DolphinColumnView::isZoomInPossible() const
{
ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
- return settings->iconSize() < K3Icon::SizeLarge;
+ return settings->iconSize() < KIconLoader::SizeLarge;
}
bool DolphinColumnView::isZoomOutPossible() const
{
ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
- return settings->iconSize() > K3Icon::SizeSmall;
+ return settings->iconSize() > KIconLoader::SizeSmall;
}
void DolphinColumnView::setActiveColumnIndex(int index)
m_columns[m_index]->setActive(true);
m_controller->setUrl(m_columns[m_index]->url());
+
+ assureVisibleActiveColumn();
}
void DolphinColumnView::layoutColumns()
{
- int x = m_contentX;
ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
const int columnWidth = settings->columnWidth();
- foreach (ColumnWidget* column, m_columns) {
- column->setGeometry(QRect(x, 0, columnWidth, viewport()->height()));
- x += columnWidth;
+ if (isRightToLeft()) {
+ int x = viewport()->width() - columnWidth + m_contentX;
+ foreach (ColumnWidget* column, m_columns) {
+ column->setGeometry(QRect(x, 0, columnWidth, viewport()->height()));
+ x -= columnWidth;
+ }
+ } else {
+ int x = m_contentX;
+ foreach (ColumnWidget* column, m_columns) {
+ column->setGeometry(QRect(x, 0, columnWidth, viewport()->height()));
+ x += columnWidth;
+ }
}
}
const int x = activeColumn()->x();
const int width = activeColumn()->width();
if (x + width > viewportWidth) {
- int newContentX = m_contentX - x - width + viewportWidth;
- if (newContentX > 0) {
- newContentX = 0;
+ const int newContentX = m_contentX - x - width + viewportWidth;
+ if (isRightToLeft()) {
+ m_animation->setFrameRange(m_contentX, newContentX);
+ } else {
+ m_animation->setFrameRange(-m_contentX, -newContentX);
}
- m_animation->setFrameRange(-m_contentX, -newContentX);
m_animation->start();
} else if (x < 0) {
const int newContentX = m_contentX - x;
- m_animation->setFrameRange(-m_contentX, -newContentX);
+ if (isRightToLeft()) {
+ m_animation->setFrameRange(m_contentX, newContentX);
+ } else {
+ m_animation->setFrameRange(-m_contentX, -newContentX);
+ }
m_animation->start();
}
}
foreach (ColumnWidget* currColumn, m_columns) {
if (currColumn == column) {
setActiveColumnIndex(index);
- assureVisibleActiveColumn();
return;
}
++index;