]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincolumnwidget.cpp
SVN_SILENT made messages (.desktop file)
[dolphin.git] / src / dolphincolumnwidget.cpp
index abd236c7ddb59edc3478c4d6eb417adbc66055d5..ad18f03bb8ac0b4f5b03f673a4501bbec58beacb 100644 (file)
@@ -55,7 +55,8 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     m_view(columnView),
     m_url(url),
     m_childUrl(),
-    m_viewOptions(),
+    m_font(),
+    m_decorationSize(),
     m_dirLister(0),
     m_dolphinModel(0),
     m_proxyModel(0),
@@ -84,17 +85,12 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     const ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
     Q_ASSERT(settings != 0);
 
-    m_viewOptions = QListView::viewOptions();
-
-    QFont font(settings->fontFamily(), settings->fontSize());
-    font.setItalic(settings->italicFont());
-    font.setBold(settings->boldFont());
-    m_viewOptions.font = font;
+    m_font = QFont(settings->fontFamily(), settings->fontSize());
+    m_font.setItalic(settings->italicFont());
+    m_font.setBold(settings->boldFont());
 
     const int iconSize = settings->iconSize();
-    m_viewOptions.decorationSize = QSize(iconSize, iconSize);
-
-    m_viewOptions.showDecorationSelected = true;
+    m_decorationSize = QSize(iconSize, iconSize);
 
     KFileItemDelegate* delegate = new KFileItemDelegate(this);
     setItemDelegate(delegate);
@@ -115,27 +111,32 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     m_dirLister->setShowingDotFiles(showHiddenFiles);
     connect(m_dirLister, SIGNAL(newItems(const KFileItemList&)),
             this, SLOT(generatePreviews(const KFileItemList&)));
-}
 
-void DolphinColumnWidget::setModel ( QAbstractItemModel * model )
-{
-    m_proxyModel = dynamic_cast<DolphinSortFilterProxyModel *>(model);
-    if(m_proxyModel)
-        m_dolphinModel = dynamic_cast<DolphinModel *>(m_proxyModel->sourceModel());
+    m_dolphinModel = new DolphinModel(this);
+    m_dolphinModel->setDirLister(m_dirLister);
+    m_dolphinModel->setDropsAllowed(DolphinModel::DropOnDirectory);
+
+    m_proxyModel = new DolphinSortFilterProxyModel(this);
+    m_proxyModel->setSourceModel(m_dolphinModel);
+
+    setModel(m_proxyModel);
     new KMimeTypeResolver(this, m_dolphinModel);
-    m_dirLister->openUrl(m_url, KDirLister::NoFlags);
-    QListView::setModel(m_proxyModel);
+
+    m_dirLister->openUrl(url, KDirLister::NoFlags);
 }
 
 DolphinColumnWidget::~DolphinColumnWidget()
 {
-    delete m_dirLister;
-    m_dirLister = 0;
+    delete m_proxyModel;
+    m_proxyModel = 0;
+    delete m_dolphinModel;
+    m_dolphinModel = 0;
+    m_dirLister = 0; // deleted by m_dolphinModel
 }
 
 void DolphinColumnWidget::setDecorationSize(const QSize& size)
 {
-    m_viewOptions.decorationSize = size;
+    m_decorationSize = size;
     doItemsLayout();
 }
 
@@ -195,6 +196,16 @@ void DolphinColumnWidget::setNameFilter(const QString& nameFilter)
     m_proxyModel->setFilterRegExp(nameFilter);
 }
 
+
+QStyleOptionViewItem DolphinColumnWidget::viewOptions() const
+{
+    QStyleOptionViewItem viewOptions = QListView::viewOptions();
+    viewOptions.font = m_font;
+    viewOptions.decorationSize = m_decorationSize;
+    viewOptions.showDecorationSelected = true;
+    return viewOptions;
+}
+
 void DolphinColumnWidget::startDrag(Qt::DropActions supportedActions)
 {
     DragAndDropHelper::startDrag(this, supportedActions);
@@ -276,7 +287,7 @@ void DolphinColumnWidget::paintEvent(QPaintEvent* event)
 
     // TODO: remove this code when the issue #160611 is solved in Qt 4.4
     if (m_dragging) {
-        const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight);
+        const QBrush& brush = viewOptions().palette.brush(QPalette::Normal, QPalette::Highlight);
         DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush);
     }
 }