mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
allow to configure the additional information of the view inside the viewproperties dialog
svn path=/trunk/KDE/kdebase/apps/; revision=731150
This commit is contained in:
parent
d9f5e191a6
commit
496872dddc
|
@ -69,6 +69,7 @@ install(FILES dolphinpart.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
|
|||
##########################################
|
||||
|
||||
set(dolphin_SRCS
|
||||
additionalinfodialog.cpp
|
||||
applyviewpropsjob.cpp
|
||||
columnviewsettingspage.cpp
|
||||
detailsviewsettingspage.cpp
|
||||
|
|
104
src/additionalinfodialog.cpp
Normal file
104
src/additionalinfodialog.cpp
Normal file
|
@ -0,0 +1,104 @@
|
|||
/***************************************************************************
|
||||
* Copyright (C) 2007 by Peter Penz (peter.penz@gmx.at) *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
|
||||
***************************************************************************/
|
||||
|
||||
#include "additionalinfodialog.h"
|
||||
|
||||
#include <klocale.h>
|
||||
#include <kvbox.h>
|
||||
|
||||
#include <QCheckBox>
|
||||
|
||||
AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent,
|
||||
KFileItemDelegate::InformationList info) :
|
||||
KDialog(parent),
|
||||
m_info(info),
|
||||
m_size(0),
|
||||
m_date(0),
|
||||
m_permissions(0),
|
||||
m_owner(0),
|
||||
m_group(0),
|
||||
m_type(0)
|
||||
{
|
||||
setCaption(i18nc("@title:window", "Additional Information"));
|
||||
setButtons(Ok | Cancel);
|
||||
setDefaultButton(Ok);
|
||||
|
||||
KVBox* box = new KVBox(this);
|
||||
|
||||
m_size = new QCheckBox(i18nc("@option:check Additional Information", "Size"), box);
|
||||
m_date = new QCheckBox(i18nc("@option:check Additional Information", "Date"), box);
|
||||
m_permissions = new QCheckBox(i18nc("@option:check Additional Information", "Permissions"), box);
|
||||
m_owner = new QCheckBox(i18nc("@option:check Additional Information", "Owner"), box);
|
||||
m_group = new QCheckBox(i18nc("@option:check Additional Information", "Group"), box);
|
||||
m_type = new QCheckBox(i18nc("@option:check Additional Information", "Type"), box);
|
||||
connect(this, SIGNAL(okClicked()), this, SLOT(slotOk()));
|
||||
|
||||
m_size->setChecked(info.contains(KFileItemDelegate::Size));
|
||||
m_date->setChecked(info.contains(KFileItemDelegate::ModificationTime));
|
||||
m_permissions->setChecked(info.contains(KFileItemDelegate::Permissions));
|
||||
m_owner->setChecked(info.contains(KFileItemDelegate::Owner));
|
||||
m_group->setChecked(info.contains(KFileItemDelegate::OwnerAndGroup));
|
||||
m_type->setChecked(info.contains(KFileItemDelegate::FriendlyMimeType));
|
||||
|
||||
setMainWidget(box);
|
||||
|
||||
const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"),
|
||||
"AdditionalInfoDialog");
|
||||
restoreDialogSize(dialogConfig);
|
||||
|
||||
}
|
||||
|
||||
AdditionalInfoDialog::~AdditionalInfoDialog()
|
||||
{
|
||||
KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"),
|
||||
"AdditionalInfoDialog");
|
||||
saveDialogSize(dialogConfig, KConfigBase::Persistent);
|
||||
|
||||
}
|
||||
|
||||
KFileItemDelegate::InformationList AdditionalInfoDialog::additionalInfo() const
|
||||
{
|
||||
return m_info;
|
||||
}
|
||||
|
||||
void AdditionalInfoDialog::slotOk()
|
||||
{
|
||||
m_info.clear();
|
||||
|
||||
if (m_size->isChecked()) {
|
||||
m_info.append(KFileItemDelegate::Size);
|
||||
}
|
||||
if (m_date->isChecked()) {
|
||||
m_info.append(KFileItemDelegate::ModificationTime);
|
||||
}
|
||||
if (m_permissions->isChecked()) {
|
||||
m_info.append(KFileItemDelegate::Permissions);
|
||||
}
|
||||
if (m_owner->isChecked()) {
|
||||
m_info.append(KFileItemDelegate::Owner);
|
||||
}
|
||||
if (m_group->isChecked()) {
|
||||
m_info.append(KFileItemDelegate::OwnerAndGroup);
|
||||
}
|
||||
if (m_type->isChecked()) {
|
||||
m_info.append(KFileItemDelegate::FriendlyMimeType);
|
||||
}
|
||||
}
|
||||
|
||||
#include "additionalinfodialog.moc"
|
53
src/additionalinfodialog.h
Normal file
53
src/additionalinfodialog.h
Normal file
|
@ -0,0 +1,53 @@
|
|||
/***************************************************************************
|
||||
* Copyright (C) 2007 by Peter Penz (peter.penz@gmx.at) *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef ADDITIONALINFODIALOG_H
|
||||
#define ADDITIONALINFODIALOG_H
|
||||
|
||||
#include <kdialog.h>
|
||||
#include <kfileitemdelegate.h>
|
||||
|
||||
class QCheckBox;
|
||||
|
||||
/**
|
||||
* @brief Dialog for changing the additional information properties of a directory.
|
||||
*/
|
||||
class AdditionalInfoDialog : public KDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit AdditionalInfoDialog(QWidget* parent, KFileItemDelegate::InformationList info);
|
||||
virtual ~AdditionalInfoDialog();
|
||||
KFileItemDelegate::InformationList additionalInfo() const;
|
||||
|
||||
private slots:
|
||||
void slotOk();
|
||||
|
||||
private:
|
||||
KFileItemDelegate::InformationList m_info;
|
||||
QCheckBox* m_size;
|
||||
QCheckBox* m_date;
|
||||
QCheckBox* m_permissions;
|
||||
QCheckBox* m_owner;
|
||||
QCheckBox* m_group;
|
||||
QCheckBox* m_type;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -19,12 +19,14 @@
|
|||
***************************************************************************/
|
||||
|
||||
#include "viewpropertiesdialog.h"
|
||||
#include "viewpropsprogressinfo.h"
|
||||
|
||||
#include "additionalinfodialog.h"
|
||||
#include "dolphinview.h"
|
||||
#include "dolphinsettings.h"
|
||||
#include "dolphinsortfilterproxymodel.h"
|
||||
#include "dolphin_generalsettings.h"
|
||||
#include "viewproperties.h"
|
||||
#include "viewpropsprogressinfo.h"
|
||||
|
||||
#include <config-nepomuk.h>
|
||||
#ifdef HAVE_NEPOMUK
|
||||
|
@ -59,10 +61,10 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
|
|||
m_viewMode(0),
|
||||
m_sortOrder(0),
|
||||
m_sorting(0),
|
||||
m_additionalInfo(0),
|
||||
m_showPreview(0),
|
||||
m_showInGroups(0),
|
||||
m_showHiddenFiles(0),
|
||||
m_additionalInfo(0),
|
||||
m_applyToCurrentFolder(0),
|
||||
m_applyToSubFolders(0),
|
||||
m_useAsDefault(0)
|
||||
|
@ -120,39 +122,23 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
|
|||
sortingLayout->addWidget(m_sorting);
|
||||
sortingBox->setLayout(sortingLayout);
|
||||
|
||||
QLabel* additionalInfoLabel = new QLabel(i18nc("@label:listbox", "Additional information:"), propsBox);
|
||||
m_additionalInfo = new QComboBox(propsBox);
|
||||
m_additionalInfo->addItem(i18nc("@item:inlistbox Additional info",
|
||||
"No Information"), NoInfo);
|
||||
m_additionalInfo->addItem(i18nc("@item:inlistbox Additional info",
|
||||
"Type"), TypeInfo);
|
||||
m_additionalInfo->addItem(i18nc("@item:inlistbox Additional info",
|
||||
"Size"), SizeInfo);
|
||||
m_additionalInfo->addItem(i18nc("@item:inlistbox Additional info",
|
||||
"Date"), DateInfo);
|
||||
m_additionalInfo->addItem(i18nc("@item:inlistbox Additional info",
|
||||
"Type, Size"), TypeInfo | SizeInfo);
|
||||
m_additionalInfo->addItem(i18nc("@item:inlistbox Additional info",
|
||||
"Type, Date"), TypeInfo | DateInfo);
|
||||
m_additionalInfo->addItem(i18nc("@item:inlistbox Additional info",
|
||||
"Size, Date"), SizeInfo | DateInfo);
|
||||
m_additionalInfo->addItem(i18nc("@item:inlistbox Additional info",
|
||||
"Type, Size, Date"),TypeInfo | SizeInfo | DateInfo);
|
||||
|
||||
m_showPreview = new QCheckBox(i18nc("@option:check", "Show preview"), propsBox);
|
||||
m_showInGroups = new QCheckBox(i18nc("@option:check", "Show in Groups"), propsBox);
|
||||
m_showHiddenFiles = new QCheckBox(i18nc("@option:check", "Show hidden files"), propsBox);
|
||||
|
||||
m_additionalInfo = new QPushButton(i18nc("@action:button", "Additional Information"), propsBox);
|
||||
connect(m_additionalInfo, SIGNAL(clicked()),
|
||||
this, SLOT(configureAdditionalInfo()));
|
||||
|
||||
QGridLayout* propsBoxLayout = new QGridLayout(propsBox);
|
||||
propsBoxLayout->addWidget(viewModeLabel, 0, 0);
|
||||
propsBoxLayout->addWidget(m_viewMode, 0, 1);
|
||||
propsBoxLayout->addWidget(sortingLabel, 1, 0);
|
||||
propsBoxLayout->addWidget(sortingBox, 1, 1);
|
||||
propsBoxLayout->addWidget(additionalInfoLabel, 2, 0);
|
||||
propsBoxLayout->addWidget(m_additionalInfo, 2, 1);
|
||||
propsBoxLayout->addWidget(m_showPreview, 3, 0);
|
||||
propsBoxLayout->addWidget(m_showInGroups, 4, 0);
|
||||
propsBoxLayout->addWidget(m_showHiddenFiles, 5, 0);
|
||||
propsBoxLayout->addWidget(m_showPreview, 2, 0);
|
||||
propsBoxLayout->addWidget(m_showInGroups, 3, 0);
|
||||
propsBoxLayout->addWidget(m_showHiddenFiles, 4, 0);
|
||||
propsBoxLayout->addWidget(m_additionalInfo, 5, 0);
|
||||
|
||||
topLayout->addWidget(propsBox);
|
||||
|
||||
|
@ -250,12 +236,9 @@ void ViewPropertiesDialog::slotViewModeChanged(int index)
|
|||
m_viewProps->setViewMode(static_cast<DolphinView::Mode>(index));
|
||||
m_isDirty = true;
|
||||
|
||||
const bool iconsViewEnabled = (m_viewProps->viewMode() == DolphinView::IconsView);
|
||||
m_showInGroups->setEnabled(iconsViewEnabled);
|
||||
|
||||
// TODO: a different approach is required now due to having a lot more additional infos
|
||||
m_additionalInfo->setEnabled(false);
|
||||
//m_additionalInfo->setEnabled(iconsViewEnabled);
|
||||
const DolphinView::Mode mode = m_viewProps->viewMode();
|
||||
m_showInGroups->setEnabled(mode == DolphinView::IconsView);
|
||||
m_additionalInfo->setEnabled(mode != DolphinView::ColumnView);
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::slotSortingChanged(int index)
|
||||
|
@ -278,25 +261,6 @@ void ViewPropertiesDialog::slotCategorizedSortingChanged()
|
|||
m_isDirty = true;
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::slotAdditionalInfoChanged(int index)
|
||||
{
|
||||
const int info = m_additionalInfo->itemData(index).toInt();
|
||||
|
||||
KFileItemDelegate::InformationList list;
|
||||
if (info & TypeInfo) {
|
||||
list.append(KFileItemDelegate::FriendlyMimeType);
|
||||
}
|
||||
if (info & SizeInfo) {
|
||||
list.append(KFileItemDelegate::Size);
|
||||
}
|
||||
if (info & DateInfo) {
|
||||
list.append(KFileItemDelegate::ModificationTime);
|
||||
}
|
||||
|
||||
m_viewProps->setAdditionalInfo(list);
|
||||
m_isDirty = true;
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::slotShowPreviewChanged()
|
||||
{
|
||||
const bool show = m_showPreview->isChecked();
|
||||
|
@ -316,6 +280,16 @@ void ViewPropertiesDialog::markAsDirty()
|
|||
m_isDirty = true;
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::configureAdditionalInfo()
|
||||
{
|
||||
const KFileItemDelegate::InformationList info = m_viewProps->additionalInfo();
|
||||
AdditionalInfoDialog dialog(this, info);
|
||||
if (dialog.exec() == QDialog::Accepted) {
|
||||
m_viewProps->setAdditionalInfo(dialog.additionalInfo());
|
||||
m_isDirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
void ViewPropertiesDialog::applyViewProperties()
|
||||
{
|
||||
const bool applyToSubFolders = m_isDirty &&
|
||||
|
@ -385,43 +359,19 @@ void ViewPropertiesDialog::loadSettings()
|
|||
// load view mode
|
||||
const int index = static_cast<int>(m_viewProps->viewMode());
|
||||
m_viewMode->setCurrentIndex(index);
|
||||
const bool iconsViewEnabled = (index == DolphinView::IconsView);
|
||||
|
||||
// load sort order and sorting
|
||||
const int sortOrderIndex = (m_viewProps->sortOrder() == Qt::AscendingOrder) ? 0 : 1;
|
||||
m_sortOrder->setCurrentIndex(sortOrderIndex);
|
||||
m_sorting->setCurrentIndex(m_viewProps->sorting());
|
||||
|
||||
// load additional info
|
||||
const KFileItemDelegate::InformationList list = m_viewProps->additionalInfo();
|
||||
int info = NoInfo;
|
||||
foreach (KFileItemDelegate::Information currentInfo, list) {
|
||||
switch (currentInfo) {
|
||||
case KFileItemDelegate::FriendlyMimeType:
|
||||
info = info | TypeInfo;
|
||||
break;
|
||||
case KFileItemDelegate::Size:
|
||||
info = info | SizeInfo;
|
||||
break;
|
||||
case KFileItemDelegate::ModificationTime:
|
||||
info = info | DateInfo;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const int addInfoIndex = m_additionalInfo->findData(info);
|
||||
m_additionalInfo->setCurrentIndex(addInfoIndex);
|
||||
// TODO: a different approach is required now due to having a lot more additional infos
|
||||
m_additionalInfo->setEnabled(false);
|
||||
//m_additionalInfo->setEnabled(iconsViewEnabled);
|
||||
m_additionalInfo->setEnabled(index != DolphinView::ColumnView);
|
||||
|
||||
// load show preview, show in groups and show hidden files settings
|
||||
m_showPreview->setChecked(m_viewProps->showPreview());
|
||||
|
||||
m_showInGroups->setChecked(m_viewProps->categorizedSorting());
|
||||
m_showInGroups->setEnabled(iconsViewEnabled); // only the icons view supports categorized sorting
|
||||
m_showInGroups->setEnabled(index == DolphinView::IconsView); // only the icons view supports categorized sorting
|
||||
|
||||
m_showHiddenFiles->setChecked(m_viewProps->showHiddenFiles());
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
class QCheckBox;
|
||||
class QComboBox;
|
||||
class QPushButton;
|
||||
class QRadioButton;
|
||||
class ViewProperties;
|
||||
class DolphinView;
|
||||
|
@ -51,23 +52,16 @@ private slots:
|
|||
void slotSortingChanged(int index);
|
||||
void slotSortOrderChanged(int index);
|
||||
void slotCategorizedSortingChanged();
|
||||
void slotAdditionalInfoChanged(int index);
|
||||
void slotShowPreviewChanged();
|
||||
void slotShowHiddenFilesChanged();
|
||||
void markAsDirty();
|
||||
void configureAdditionalInfo();
|
||||
|
||||
private:
|
||||
void applyViewProperties();
|
||||
void loadSettings();
|
||||
|
||||
private:
|
||||
enum AdditionalInfoValues
|
||||
{
|
||||
NoInfo = 0,
|
||||
TypeInfo = 1,
|
||||
SizeInfo = 2,
|
||||
DateInfo = 4
|
||||
};
|
||||
|
||||
bool m_isDirty;
|
||||
DolphinView* m_dolphinView;
|
||||
ViewProperties* m_viewProps;
|
||||
|
@ -75,16 +69,14 @@ private:
|
|||
QComboBox* m_viewMode;
|
||||
QComboBox* m_sortOrder;
|
||||
QComboBox* m_sorting;
|
||||
QComboBox* m_additionalInfo;
|
||||
QCheckBox* m_showPreview;
|
||||
QCheckBox* m_showInGroups;
|
||||
QCheckBox* m_showHiddenFiles;
|
||||
QPushButton* m_additionalInfo;
|
||||
QRadioButton* m_applyToCurrentFolder;
|
||||
QRadioButton* m_applyToSubFolders;
|
||||
QRadioButton* m_applyToAllFolders;
|
||||
QCheckBox* m_useAsDefault;
|
||||
|
||||
void applyViewProperties();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue