]> cloud.milkyroute.net Git - dolphin.git/commitdiff
polish look of column view:
authorPeter Penz <peter.penz19@gmail.com>
Tue, 16 Oct 2007 22:24:52 +0000 (22:24 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Tue, 16 Oct 2007 22:24:52 +0000 (22:24 +0000)
- don't show a focused border above all columns
- provide a small gap between the columns
- assure that the background of inactive columns works well with more complex styles like Oxygen

CCMAIL: cbr@boemann.dk

svn path=/trunk/KDE/kdebase/apps/; revision=726042

src/dolphincolumnview.cpp
src/dolphincolumnview.h
src/dolphincolumnwidget.cpp
src/dolphindetailsview.cpp
src/dolphiniconsview.cpp
src/dolphinview.cpp

index c0f08eaeb2b0edf3d5ff94aa51403ba4d1b78e84..9724740008c5accdcca621b18b18b3e861d05c3a 100644 (file)
@@ -47,6 +47,7 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* control
     m_index(-1),
     m_contentX(0),
     m_columns(),
     m_index(-1),
     m_contentX(0),
     m_columns(),
+    m_emptyViewport(0),
     m_animation(0)
 {
     Q_ASSERT(controller != 0);
     m_animation(0)
 {
     Q_ASSERT(controller != 0);
@@ -55,6 +56,8 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* control
     setDragDropMode(QAbstractItemView::DragDrop);
     setDropIndicatorShown(false);
     setSelectionMode(ExtendedSelection);
     setDragDropMode(QAbstractItemView::DragDrop);
     setDropIndicatorShown(false);
     setSelectionMode(ExtendedSelection);
+    setFocusPolicy(Qt::NoFocus);
+    setFrameShape(QFrame::NoFrame);
 
     connect(this, SIGNAL(entered(const QModelIndex&)),
             controller, SLOT(emitItemEntered(const QModelIndex&)));
 
     connect(this, SIGNAL(entered(const QModelIndex&)),
             controller, SLOT(emitItemEntered(const QModelIndex&)));
@@ -81,6 +84,9 @@ DolphinColumnView::DolphinColumnView(QWidget* parent, DolphinController* control
     m_columns.append(column);
     setActiveColumnIndex(0);
 
     m_columns.append(column);
     setActiveColumnIndex(0);
 
+    m_emptyViewport = new QFrame(viewport());
+    m_emptyViewport->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
+
     updateDecorationSize();
     updateColumnsBackground(true);
 }
     updateDecorationSize();
     updateColumnsBackground(true);
 }
@@ -392,11 +398,8 @@ void DolphinColumnView::updateColumnsBackground(bool active)
     m_active = active;
 
     // dim the background of the viewport
     m_active = active;
 
     // dim the background of the viewport
-    QColor color = KColorScheme(QPalette::Active, KColorScheme::View).background().color();
-    color.setAlpha(150);
-
     QPalette palette;
     QPalette palette;
-    palette.setColor(viewport()->backgroundRole(), color);
+    palette.setColor(viewport()->backgroundRole(), QColor(0, 0, 0, 0));
     viewport()->setPalette(palette);
 
     foreach (DolphinColumnWidget* column, m_columns) {
     viewport()->setPalette(palette);
 
     foreach (DolphinColumnWidget* column, m_columns) {
@@ -449,29 +452,40 @@ void DolphinColumnView::setActiveColumnIndex(int index)
 
 void DolphinColumnView::layoutColumns()
 {
 
 void DolphinColumnView::layoutColumns()
 {
+    const int gap = 4;
+
     ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
     const int columnWidth = settings->columnWidth();
     ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
     const int columnWidth = settings->columnWidth();
+
+    QRect emptyViewportRect;
     if (isRightToLeft()) {
         int x = viewport()->width() - columnWidth + m_contentX;
         foreach (DolphinColumnWidget* column, m_columns) {
     if (isRightToLeft()) {
         int x = viewport()->width() - columnWidth + m_contentX;
         foreach (DolphinColumnWidget* column, m_columns) {
-            column->setGeometry(QRect(x, 0, columnWidth, viewport()->height()));
+            column->setGeometry(QRect(x, 0, columnWidth - gap, viewport()->height()));
             x -= columnWidth;
         }
             x -= columnWidth;
         }
+        emptyViewportRect = QRect(0, 0, x + columnWidth - gap, viewport()->height());
     } else {
         int x = m_contentX;
         foreach (DolphinColumnWidget* column, m_columns) {
     } else {
         int x = m_contentX;
         foreach (DolphinColumnWidget* column, m_columns) {
-            column->setGeometry(QRect(x, 0, columnWidth, viewport()->height()));
+            column->setGeometry(QRect(x, 0, columnWidth - gap, viewport()->height()));
             x += columnWidth;
         }
             x += columnWidth;
         }
+        emptyViewportRect = QRect(x, 0, viewport()->width() - x - gap, viewport()->height());
+    }
+
+    if (emptyViewportRect.isValid()) {
+        m_emptyViewport->show();
+        m_emptyViewport->setGeometry(emptyViewportRect);
+    } else {
+        m_emptyViewport->hide();
     }
 }
 
 void DolphinColumnView::updateScrollBar()
 {
     }
 }
 
 void DolphinColumnView::updateScrollBar()
 {
-    int contentWidth = 0;
-    foreach (DolphinColumnWidget* column, m_columns) {
-        contentWidth += column->width();
-    }
+    ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
+    const int contentWidth = m_columns.count() * settings->columnWidth();
 
     horizontalScrollBar()->setPageStep(contentWidth);
     horizontalScrollBar()->setRange(0, contentWidth - viewport()->width());
 
     horizontalScrollBar()->setPageStep(contentWidth);
     horizontalScrollBar()->setRange(0, contentWidth - viewport()->width());
@@ -481,7 +495,10 @@ void DolphinColumnView::assureVisibleActiveColumn()
 {
     const int viewportWidth = viewport()->width();
     const int x = activeColumn()->x();
 {
     const int viewportWidth = viewport()->width();
     const int x = activeColumn()->x();
-    const int width = activeColumn()->width();
+
+    ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
+    const int width = settings->columnWidth();
+
     if (x + width > viewportWidth) {
         const int newContentX = m_contentX - x - width + viewportWidth;
         if (isRightToLeft()) {
     if (x + width > viewportWidth) {
         const int newContentX = m_contentX - x - width + viewportWidth;
         if (isRightToLeft()) {
index 95a16a80d9c509bdd8f2938c938de3bb854474de..b12c5d82d4c0a6a8cc490a82921c891d6c86dcc9 100644 (file)
@@ -31,6 +31,7 @@ class DolphinColumnWidget;
 class DolphinController;
 class DolphinModel;
 class QAbstractProxyModel;
 class DolphinController;
 class DolphinModel;
 class QAbstractProxyModel;
+class QFrame;
 class QTimeLine;
 
 /**
 class QTimeLine;
 
 /**
@@ -169,6 +170,7 @@ private:
     int m_index;
     int m_contentX;
     QList<DolphinColumnWidget*> m_columns;
     int m_index;
     int m_contentX;
     QList<DolphinColumnWidget*> m_columns;
+    QFrame* m_emptyViewport;
     QTimeLine* m_animation;
 
     friend class DolphinColumnWidget;
     QTimeLine* m_animation;
 
     friend class DolphinColumnWidget;
index 92fbd4e79064595bbd26090179d9b0f4f8fab91f..7bf644a9592488af5c4657b78fef0508692fda69 100644 (file)
@@ -69,7 +69,6 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     setSelectionMode(QAbstractItemView::ExtendedSelection);
     setDragDropMode(QAbstractItemView::DragDrop);
     setDropIndicatorShown(false);
     setSelectionMode(QAbstractItemView::ExtendedSelection);
     setDragDropMode(QAbstractItemView::DragDrop);
     setDropIndicatorShown(false);
-    setFocusPolicy(Qt::NoFocus);
 
 // TODO: Remove this check when 4.3.2 is released and KDE requires it... this
 //       check avoids a division by zero happening on versions before 4.3.1.
 
 // TODO: Remove this check when 4.3.2 is released and KDE requires it... this
 //       check avoids a division by zero happening on versions before 4.3.1.
@@ -181,7 +180,7 @@ void DolphinColumnWidget::updateBackground()
 {
     QColor color = KColorScheme(QPalette::Active, KColorScheme::View).background().color();
     if (!m_active || !m_view->m_active) {
 {
     QColor color = KColorScheme(QPalette::Active, KColorScheme::View).background().color();
     if (!m_active || !m_view->m_active) {
-        color.setAlpha(0);
+        color.setAlpha(150);
     }
     QPalette palette = viewport()->palette();
     palette.setColor(viewport()->backgroundRole(), color);
     }
     QPalette palette = viewport()->palette();
     palette.setColor(viewport()->backgroundRole(), color);
@@ -386,10 +385,7 @@ void DolphinColumnWidget::slotEntered(const QModelIndex& index)
 
 void DolphinColumnWidget::activate()
 {
 
 void DolphinColumnWidget::activate()
 {
-    if (m_view->hasFocus()) {
-        setFocus(Qt::OtherFocusReason);
-    }
-    m_view->setFocusProxy(this);
+    setFocus(Qt::OtherFocusReason);
 
     // TODO: Connecting to the signal 'activated()' is not possible, as kstyle
     // does not forward the single vs. doubleclick to it yet (KDE 4.1?). Hence it is
 
     // TODO: Connecting to the signal 'activated()' is not possible, as kstyle
     // does not forward the single vs. doubleclick to it yet (KDE 4.1?). Hence it is
@@ -415,6 +411,8 @@ void DolphinColumnWidget::activate()
 
 void DolphinColumnWidget::deactivate()
 {
 
 void DolphinColumnWidget::deactivate()
 {
+    clearFocus();
+
     // TODO: Connecting to the signal 'activated()' is not possible, as kstyle
     // does not forward the single vs. doubleclick to it yet (KDE 4.1?). Hence it is
     // necessary connecting the signal 'singleClick()' or 'doubleClick'.
     // TODO: Connecting to the signal 'activated()' is not possible, as kstyle
     // does not forward the single vs. doubleclick to it yet (KDE 4.1?). Hence it is
     // necessary connecting the signal 'singleClick()' or 'doubleClick'.
index 8e8eec2ec1624b88c38efcb780e7c4fa34089827..57d5eb81c3f09707701841ce26e757e54ed4392a 100644 (file)
@@ -120,6 +120,8 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr
 #endif
 
     updateDecorationSize();
 #endif
 
     updateDecorationSize();
+
+    setFocus();
 }
 
 DolphinDetailsView::~DolphinDetailsView()
 }
 
 DolphinDetailsView::~DolphinDetailsView()
index 670dcc13efca20e1326ddd86069dd42b6bbee0f2..7b8fa869d1e976827befe8d3c868560ad58fe4a4 100644 (file)
@@ -99,6 +99,8 @@ DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controlle
 
     m_categoryDrawer = new DolphinCategoryDrawer();
     setCategoryDrawer(m_categoryDrawer);
 
     m_categoryDrawer = new DolphinCategoryDrawer();
     setCategoryDrawer(m_categoryDrawer);
+
+    setFocus();
 }
 
 DolphinIconsView::~DolphinIconsView()
 }
 
 DolphinIconsView::~DolphinIconsView()
index 87170bfb7820a0d0504a532d4f59d9ec00ca36a9..f4b533d6194cf45abfc868dd4aa84e24ff794223 100644 (file)
@@ -488,8 +488,6 @@ void DolphinView::updateView(const KUrl& url, const KUrl& rootUrl)
         loadDirectory(url);
     }
 
         loadDirectory(url);
     }
 
-    itemView()->setFocus();
-
     emit startedPathLoading(url);
 }
 
     emit startedPathLoading(url);
 }
 
@@ -886,7 +884,6 @@ void DolphinView::createView()
             this, SLOT(emitContentsMoved()));
     connect(view->horizontalScrollBar(), SIGNAL(valueChanged(int)),
             this, SLOT(emitContentsMoved()));
             this, SLOT(emitContentsMoved()));
     connect(view->horizontalScrollBar(), SIGNAL(valueChanged(int)),
             this, SLOT(emitContentsMoved()));
-    view->setFocus();
 }
 
 QAbstractItemView* DolphinView::itemView() const
 }
 
 QAbstractItemView* DolphinView::itemView() const