┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2008-01-07 07:38:09 +0000
committerPeter Penz <[email protected]>2008-01-07 07:38:09 +0000
commit0e58c734c16a0de5981d7a0dc40cb9bd1cd91ae2 (patch)
tree958cf123e3ef1a7417659d19f56e51124a8297fc /src
parentdf94e72262e2312f2e39a605c0f2efa1a5196266 (diff)
Backport of bugfix 154434 (trunk revision 757791): Remember the additional-info property (size, date, type, ...) for each view mode (icons view, details view, column view) individually.
svn path=/branches/KDE/4.0/kdebase/apps/; revision=758210
Diffstat (limited to 'src')
-rw-r--r--src/dolphin_iconsmodesettings.kcfg4
-rw-r--r--src/dolphindetailsview.cpp32
-rw-r--r--src/dolphindetailsview.h3
-rw-r--r--src/dolphiniconsview.cpp8
-rw-r--r--src/dolphinmainwindow.cpp3
-rw-r--r--src/dolphinview.cpp3
-rw-r--r--src/iconsviewsettingspage.cpp15
-rw-r--r--src/iconsviewsettingspage.h1
-rw-r--r--src/viewproperties.cpp54
-rw-r--r--src/viewproperties.h31
-rw-r--r--src/viewpropertiesdialog.cpp3
11 files changed, 86 insertions, 71 deletions
diff --git a/src/dolphin_iconsmodesettings.kcfg b/src/dolphin_iconsmodesettings.kcfg
index 0524f7d20..fa1467b19 100644
--- a/src/dolphin_iconsmodesettings.kcfg
+++ b/src/dolphin_iconsmodesettings.kcfg
@@ -26,10 +26,6 @@
<label context="@label">Bold</label>
<default>false</default>
</entry>
- <entry name="ShowAdditionalInfo" type="Bool">
- <label context="@label">Allow showing of additional information</label>
- <default>true</default>
- </entry>
<entry name="ItemHeight" type="Int">
<label context="@label">Item height</label>
<!--
diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp
index 886f3f9a6..4fdb76e1a 100644
--- a/src/dolphindetailsview.cpp
+++ b/src/dolphindetailsview.cpp
@@ -46,7 +46,6 @@ DolphinDetailsView::DolphinDetailsView(QWidget* parent, DolphinController* contr
m_controller(controller),
m_font(),
m_decorationSize(),
- m_clearAdditionalInfo(false),
m_dragging(false),
m_showElasticBand(false),
m_elasticBandOrigin(),
@@ -357,20 +356,6 @@ void DolphinDetailsView::resizeEvent(QResizeEvent* event)
}
}
-void DolphinDetailsView::closeEvent(QCloseEvent* event)
-{
- if (m_clearAdditionalInfo) {
- disconnect(m_controller->dolphinView(), SIGNAL(additionalInfoChanged(const KFileItemDelegate::InformationList&)),
- this, SLOT(updateColumnVisibility()));
-
- KFileItemDelegate::InformationList info;
- info.append(KFileItemDelegate::NoInformation);
- m_controller->indicateAdditionalInfoChange(info);
- m_clearAdditionalInfo = false;
- }
- QTreeView::closeEvent(event);
-}
-
void DolphinDetailsView::setSortIndicatorSection(DolphinView::Sorting sorting)
{
QHeaderView* headerView = header();
@@ -497,27 +482,12 @@ void DolphinDetailsView::configureColumns(const QPoint& pos)
void DolphinDetailsView::updateColumnVisibility()
{
- KFileItemDelegate::InformationList list = m_controller->dolphinView()->additionalInfo();
- const bool useDefaultColumns = !isVisible() &&
- (list.isEmpty() ||
- list.contains(KFileItemDelegate::NoInformation));
- if (useDefaultColumns) {
- // Using the details view without any additional information (-> additional column)
- // makes no sense and leads to a usability problem as no viewport area is available
- // anymore. Hence as fallback provide at least a size and date column.
- list.clear();
- list.append(KFileItemDelegate::Size);
- list.append(KFileItemDelegate::ModificationTime);
- m_controller->indicateAdditionalInfoChange(list);
- m_clearAdditionalInfo = true;
- }
-
+ const KFileItemDelegate::InformationList list = m_controller->dolphinView()->additionalInfo();
for (int i = DolphinModel::Size; i <= DolphinModel::Type; ++i) {
const KFileItemDelegate::Information info = infoForColumn(i);
const bool hide = !list.contains(info);
if (isColumnHidden(i) != hide) {
setColumnHidden(i, hide);
- m_clearAdditionalInfo = false;
}
}
diff --git a/src/dolphindetailsview.h b/src/dolphindetailsview.h
index cfa5062b7..086121f7a 100644
--- a/src/dolphindetailsview.h
+++ b/src/dolphindetailsview.h
@@ -58,7 +58,6 @@ protected:
virtual void paintEvent(QPaintEvent* event);
virtual void keyPressEvent(QKeyEvent* event);
virtual void resizeEvent(QResizeEvent* event);
- virtual void closeEvent(QCloseEvent* event);
private slots:
/**
@@ -149,8 +148,6 @@ private:
QFont m_font;
QSize m_decorationSize;
- bool m_clearAdditionalInfo;
-
bool m_dragging; // TODO: remove this property when the issue #160611 is solved in Qt 4.4
QRect m_dropRect; // TODO: remove this property when the issue #160611 is solved in Qt 4.4
diff --git a/src/dolphiniconsview.cpp b/src/dolphiniconsview.cpp
index de0aaec97..553cdcfe6 100644
--- a/src/dolphiniconsview.cpp
+++ b/src/dolphiniconsview.cpp
@@ -303,11 +303,6 @@ void DolphinIconsView::slotShowPreviewChanged()
void DolphinIconsView::slotAdditionalInfoChanged(const KFileItemDelegate::InformationList& info)
{
- const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
- if (!settings->showAdditionalInfo()) {
- return;
- }
-
const bool showPreview = m_controller->dolphinView()->showPreview();
updateGridSize(showPreview, info.count());
}
@@ -468,8 +463,7 @@ KFileItem DolphinIconsView::itemForIndex(const QModelIndex& index) const
int DolphinIconsView::additionalInfoCount() const
{
const DolphinView* view = m_controller->dolphinView();
- const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
- return settings->showAdditionalInfo() ? view->additionalInfo().count() : 0;
+ return view->additionalInfo().count();
}
#include "dolphiniconsview.moc"
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index 02e99c472..e40166e99 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -273,9 +273,8 @@ void DolphinMainWindow::slotAdditionalInfoChanged(KFileItemDelegate::Information
const DolphinView* view = m_activeViewContainer->view();
- const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
const bool enable = (view->mode() == DolphinView::DetailsView) ||
- ((view->mode() == DolphinView::IconsView) && settings->showAdditionalInfo());
+ (view->mode() == DolphinView::IconsView);
showSizeInfo->setEnabled(enable);
showDateInfo->setEnabled(enable);
diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp
index 7418997d9..ddb7185f0 100644
--- a/src/dolphinview.cpp
+++ b/src/dolphinview.cpp
@@ -206,9 +206,6 @@ void DolphinView::setMode(Mode mode)
deleteView();
- // It is important to read the view properties _after_ deleting the view,
- // as e. g. the detail view might adjust the additional information properties
- // after getting closed:
const KUrl viewPropsUrl = viewPropertiesUrl();
ViewProperties props(viewPropsUrl);
props.setViewMode(m_mode);
diff --git a/src/iconsviewsettingspage.cpp b/src/iconsviewsettingspage.cpp
index 56e75ac10..6bcc78ae8 100644
--- a/src/iconsviewsettingspage.cpp
+++ b/src/iconsviewsettingspage.cpp
@@ -50,7 +50,6 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow,
m_textWidthBox(0),
m_fontRequester(0),
m_textlinesCountBox(0),
- m_showAdditionalInfo(0),
m_arrangementBox(0),
m_gridSpacingBox(0)
{
@@ -84,12 +83,7 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow,
m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Medium"));
m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Large"));
- m_showAdditionalInfo = new QCheckBox(i18nc("@option:check",
- "Allow showing of additional information"), textGroup);
-
- QVBoxLayout* textVBoxLayout = new QVBoxLayout(textGroup);
-
- QGridLayout* textGroupLayout = new QGridLayout();
+ QGridLayout* textGroupLayout = new QGridLayout(textGroup);
textGroupLayout->addWidget(fontLabel, 0, 0);
textGroupLayout->addWidget(m_fontRequester, 0, 1);
textGroupLayout->addWidget(textlinesCountLabel, 1, 0);
@@ -97,9 +91,6 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow,
textGroupLayout->addWidget(textWidthLabel, 2, 0);
textGroupLayout->addWidget(m_textWidthBox, 2, 1);
- textVBoxLayout->addLayout(textGroupLayout);
- textVBoxLayout->addWidget(m_showAdditionalInfo);
-
// create the 'Grid' group for selecting the arrangement and the grid spacing
QGroupBox* gridGroup = new QGroupBox(i18nc("@title:group", "Grid"), this);
gridGroup->setSizePolicy(sizePolicy);
@@ -171,8 +162,6 @@ void IconsViewSettingsPage::applySettings()
settings->setNumberOfTextlines(numberOfTextlines);
- settings->setShowAdditionalInfo(m_showAdditionalInfo->isChecked());
-
settings->setGridSpacing(GridSpacingBase +
m_gridSpacingBox->currentIndex() * GridSpacingInc);
}
@@ -208,8 +197,6 @@ void IconsViewSettingsPage::loadSettings()
m_textlinesCountBox->setValue(settings->numberOfTextlines());
- m_showAdditionalInfo->setChecked(settings->showAdditionalInfo());
-
const bool leftToRightArrangement = (settings->arrangement() == QListView::LeftToRight);
int textWidthIndex = 0;
const int remainingWidth = settings->itemWidth() - settings->iconSize();
diff --git a/src/iconsviewsettingspage.h b/src/iconsviewsettingspage.h
index bfc0c63c1..f45a14fd6 100644
--- a/src/iconsviewsettingspage.h
+++ b/src/iconsviewsettingspage.h
@@ -88,7 +88,6 @@ private:
QComboBox* m_textWidthBox;
KFontRequester* m_fontRequester;
QSpinBox* m_textlinesCountBox;
- QCheckBox* m_showAdditionalInfo;
QComboBox* m_arrangementBox;
QComboBox* m_gridSpacingBox;
diff --git a/src/viewproperties.cpp b/src/viewproperties.cpp
index b46ecb87e..2de807273 100644
--- a/src/viewproperties.cpp
+++ b/src/viewproperties.cpp
@@ -226,16 +226,17 @@ void ViewProperties::setAdditionalInfo(KFileItemDelegate::InformationList list)
}
}
- if (m_node->additionalInfo() != info) {
- m_node->setAdditionalInfo(info);
+ const int encodedInfo = encodedAdditionalInfo(info);
+ if (m_node->additionalInfo() != encodedInfo) {
+ m_node->setAdditionalInfo(encodedInfo);
updateTimeStamp();
}
}
KFileItemDelegate::InformationList ViewProperties::additionalInfo() const
{
- const int info = m_node->additionalInfo();
-
+ const int info = decodedAdditionalInfo();
+
KFileItemDelegate::InformationList list;
if (info & SizeInfo) {
list.append(KFileItemDelegate::Size);
@@ -307,3 +308,48 @@ QString ViewProperties::destinationDir(const QString& subDir) const
basePath.append("/view_properties/").append(subDir);
return KStandardDirs::locateLocal("data", basePath);
}
+
+int ViewProperties::encodedAdditionalInfo(int info) const
+{
+ int encodedInfo = m_node->additionalInfo();
+
+ switch (viewMode()) {
+ case DolphinView::DetailsView:
+ encodedInfo = (encodedInfo & 0xFFFF00) | info;
+ break;
+ case DolphinView::IconsView:
+ encodedInfo = (encodedInfo & 0xFF00FF) | (info << 8);
+ break;
+ case DolphinView::ColumnView:
+ encodedInfo = (encodedInfo & 0x00FFFF) | (info << 16);
+ break;
+ default: break;
+ }
+
+ return encodedInfo;
+}
+
+int ViewProperties::decodedAdditionalInfo() const
+{
+ int decodedInfo = m_node->additionalInfo();
+
+ switch (viewMode()) {
+ case DolphinView::DetailsView:
+ decodedInfo = decodedInfo & 0xFF;
+ if (decodedInfo == NoInfo) {
+ // a details view without any additional info makes no sense, hence
+ // provide at least a size-info and date-info as fallback
+ decodedInfo = SizeInfo | DateInfo;
+ }
+ break;
+ case DolphinView::IconsView:
+ decodedInfo = (decodedInfo >> 8) & 0xFF;
+ break;
+ case DolphinView::ColumnView:
+ decodedInfo = (decodedInfo >> 16) & 0xFF;
+ break;
+ default: break;
+ }
+
+ return decodedInfo;
+}
diff --git a/src/viewproperties.h b/src/viewproperties.h
index b4d6ac724..3237686c7 100644
--- a/src/viewproperties.h
+++ b/src/viewproperties.h
@@ -71,7 +71,18 @@ public:
void setSortOrder(Qt::SortOrder sortOrder);
Qt::SortOrder sortOrder() const;
+ /**
+ * Sets the additional information for the current set view-mode.
+ * Note that the additional-info property is the only property where
+ * the value is dependent from another property (in this case the view-mode).
+ */
void setAdditionalInfo(KFileItemDelegate::InformationList info);
+
+ /**
+ * Returns the additional information for the current set view-mode.
+ * Note that the additional-info property is the only property where
+ * the value is dependent from another property (in this case the view-mode).
+ */
KFileItemDelegate::InformationList additionalInfo() const;
/**
@@ -117,6 +128,26 @@ private:
*/
QString destinationDir(const QString& subDir) const;
+ /**
+ * Returns the encoded additional information that can be stored
+ * in the .directory file. See ViewProperties::decodedAdditionalInfo()
+ * for the coding format.
+ * @param info Additional information for the current view mode.
+ */
+ int encodedAdditionalInfo(int info) const;
+
+ /**
+ * Returns the decoded additional information from the .directory
+ * file by respecting the current set view mode. The additional
+ * information from the .directory file is an integer value, where:
+ * - Byte 0 stores the additional info for the details view
+ * - Byte 1 stores the additional info for the icons view
+ * - Byte 2 stores the additional info for the column view
+ * The additional information property is the only property that is
+ * dependent from another property (in this case the view-mode).
+ */
+ int decodedAdditionalInfo() const;
+
Q_DISABLE_COPY(ViewProperties)
private:
diff --git a/src/viewpropertiesdialog.cpp b/src/viewpropertiesdialog.cpp
index faf17d48b..c5d0ec510 100644
--- a/src/viewpropertiesdialog.cpp
+++ b/src/viewpropertiesdialog.cpp
@@ -381,9 +381,8 @@ void ViewPropertiesDialog::loadSettings()
m_sortOrder->setCurrentIndex(sortOrderIndex);
m_sorting->setCurrentIndex(m_viewProps->sorting());
- const IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings();
const bool enabled = (index == DolphinView::DetailsView) ||
- ((index == DolphinView::IconsView) && settings->showAdditionalInfo());
+ (index == DolphinView::IconsView);
m_additionalInfo->setEnabled(enabled);
// load show preview, show in groups and show hidden files settings