┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/viewpropertiesdialog.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2009-01-14 19:26:23 +0000
committerPeter Penz <[email protected]>2009-01-14 19:26:23 +0000
commit307285e9635a4bf584d6e5d7478876b90ef870f0 (patch)
treedb36cbbdc7996ab86c38be8f96fe83597d350dfb /src/viewpropertiesdialog.cpp
parent86d9c40ab71df5b8bd5063251337d5ca0c22380a (diff)
Group classes into folders, Dolphin is too big in the meantime for having a flat directory hierarchy. dolphin/src/CMakeLists.txt will be cleaned up later.
svn path=/trunk/KDE/kdebase/apps/; revision=911065
Diffstat (limited to 'src/viewpropertiesdialog.cpp')
-rw-r--r--src/viewpropertiesdialog.cpp405
1 files changed, 0 insertions, 405 deletions
diff --git a/src/viewpropertiesdialog.cpp b/src/viewpropertiesdialog.cpp
deleted file mode 100644
index 9302ba138..000000000
--- a/src/viewpropertiesdialog.cpp
+++ /dev/null
@@ -1,405 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2006 by Peter Penz *
- * *
- * 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 "viewpropertiesdialog.h"
-
-#include "additionalinfodialog.h"
-#include "dolphinview.h"
-#include "dolphinsettings.h"
-#include "dolphinsortfilterproxymodel.h"
-#include "dolphin_generalsettings.h"
-#include "dolphin_iconsmodesettings.h"
-#include "viewproperties.h"
-#include "viewpropsprogressinfo.h"
-
-#include <config-nepomuk.h>
-#ifdef HAVE_NEPOMUK
-#include <nepomuk/resourcemanager.h>
-#endif
-
-#include <kcomponentdata.h>
-#include <klocale.h>
-#include <kiconloader.h>
-#include <kio/netaccess.h>
-#include <kmessagebox.h>
-#include <kstandarddirs.h>
-#include <kurl.h>
-#include <kcombobox.h>
-
-#include <QAction>
-#include <QButtonGroup>
-#include <QCheckBox>
-#include <QGridLayout>
-#include <QGroupBox>
-#include <QLabel>
-#include <QMenu>
-#include <QPushButton>
-#include <QRadioButton>
-#include <QBoxLayout>
-
-ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
- KDialog(dolphinView),
- m_isDirty(false),
- m_dolphinView(dolphinView),
- m_viewProps(0),
- m_viewMode(0),
- m_sortOrder(0),
- m_sorting(0),
- m_showPreview(0),
- m_showInGroups(0),
- m_showHiddenFiles(0),
- m_additionalInfo(0),
- m_applyToCurrentFolder(0),
- m_applyToSubFolders(0),
- m_applyToAllFolders(0),
- m_useAsDefault(0)
-{
- Q_ASSERT(dolphinView != 0);
- const bool useGlobalViewProps = DolphinSettings::instance().generalSettings()->globalViewProps();
-
- setCaption(i18nc("@title:window", "View Properties"));
- setButtons(KDialog::Ok | KDialog::Cancel | KDialog::Apply);
-
- const KUrl& url = dolphinView->url();
- m_viewProps = new ViewProperties(url);
- m_viewProps->setAutoSaveEnabled(false);
-
- QWidget* main = new QWidget();
- QVBoxLayout* topLayout = new QVBoxLayout();
-
- // create 'Properties' group containing view mode, sorting, sort order and show hidden files
- QWidget* propsBox = main;
- if (!useGlobalViewProps) {
- propsBox = new QGroupBox(i18nc("@title:group", "Properties"), main);
- }
-
- QWidget* propsGrid = new QWidget();
-
- QLabel* viewModeLabel = new QLabel(i18nc("@label:listbox", "View mode:"), propsGrid);
- m_viewMode = new KComboBox(propsGrid);
- m_viewMode->addItem(KIcon("view-list-icons"), i18nc("@item:inlistbox", "Icons"));
- m_viewMode->addItem(KIcon("view-list-details"), i18nc("@item:inlistbox", "Details"));
- m_viewMode->addItem(KIcon("view-file-columns"), i18nc("@item:inlistbox", "Column"));
-
- QLabel* sortingLabel = new QLabel(i18nc("@label:listbox", "Sorting:"), propsGrid);
- QWidget* sortingBox = new QWidget(propsGrid);
-
- m_sortOrder = new KComboBox(sortingBox);
- m_sortOrder->addItem(i18nc("@item:inlistbox Sort", "Ascending"));
- m_sortOrder->addItem(i18nc("@item:inlistbox Sort", "Descending"));
-
- m_sorting = new KComboBox(sortingBox);
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Name"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Size"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Date"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Permissions"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Owner"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Group"));
- m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Type"));
-#ifdef HAVE_NEPOMUK
- // TODO: Hided "sort by rating" and "sort by tags" as without caching the performance
- // is too slow currently (Nepomuk will support caching in future releases).
- //
- // if (!Nepomuk::ResourceManager::instance()->init()) {
- // m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Rating"));
- // m_sorting->addItem(i18nc("@item:inlistbox Sort", "By Tags"));
- // }
-#endif
- 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);
-
- QHBoxLayout* sortingLayout = new QHBoxLayout();
- sortingLayout->setMargin(0);
- sortingLayout->addWidget(m_sortOrder);
- sortingLayout->addWidget(m_sorting);
- sortingBox->setLayout(sortingLayout);
-
- QGridLayout* propsGridLayout = new QGridLayout(propsGrid);
- propsGridLayout->addWidget(viewModeLabel, 0, 0, Qt::AlignRight);
- propsGridLayout->addWidget(m_viewMode, 0, 1);
- propsGridLayout->addWidget(sortingLabel, 1, 0, Qt::AlignRight);
- propsGridLayout->addWidget(sortingBox, 1, 1);
-
- QVBoxLayout* propsBoxLayout = new QVBoxLayout(propsBox);
- propsBoxLayout->addWidget(propsGrid);
- propsBoxLayout->addWidget(m_showPreview);
- propsBoxLayout->addWidget(m_showInGroups);
- propsBoxLayout->addWidget(m_showHiddenFiles);
- propsBoxLayout->addWidget(m_additionalInfo);
-
- topLayout->addWidget(propsBox);
-
- connect(m_viewMode, SIGNAL(activated(int)),
- this, SLOT(slotViewModeChanged(int)));
- connect(m_sorting, SIGNAL(activated(int)),
- this, SLOT(slotSortingChanged(int)));
- connect(m_sortOrder, SIGNAL(activated(int)),
- this, SLOT(slotSortOrderChanged(int)));
- connect(m_additionalInfo, SIGNAL(clicked()),
- this, SLOT(configureAdditionalInfo()));
- connect(m_showPreview, SIGNAL(clicked()),
- this, SLOT(slotShowPreviewChanged()));
- connect(m_showInGroups, SIGNAL(clicked()),
- this, SLOT(slotCategorizedSortingChanged()));
- connect(m_showHiddenFiles, SIGNAL(clicked()),
- this, SLOT(slotShowHiddenFilesChanged()));
-
- connect(this, SIGNAL(okClicked()), this, SLOT(slotOk()));
- connect(this, SIGNAL(applyClicked()), this, SLOT(slotApply()));
-
- // Only show the following settings if the view properties are remembered
- // for each directory:
- if (!useGlobalViewProps) {
- // create 'Apply View Properties To' group
- QGroupBox* applyBox = new QGroupBox(i18nc("@title:group", "Apply View Properties To"), main);
-
- m_applyToCurrentFolder = new QRadioButton(i18nc("@option:radio Apply View Properties To",
- "Current folder"), applyBox);
- m_applyToCurrentFolder->setChecked(true);
- m_applyToSubFolders = new QRadioButton(i18nc("@option:radio Apply View Properties To",
- "Current folder including all sub folders"), applyBox);
- m_applyToAllFolders = new QRadioButton(i18nc("@option:radio Apply View Properties To",
- "All folders"), applyBox);
-
- QButtonGroup* applyGroup = new QButtonGroup(this);
- applyGroup->addButton(m_applyToCurrentFolder);
- applyGroup->addButton(m_applyToSubFolders);
- applyGroup->addButton(m_applyToAllFolders);
-
- QVBoxLayout* applyBoxLayout = new QVBoxLayout(applyBox);
- applyBoxLayout->addWidget(m_applyToCurrentFolder);
- applyBoxLayout->addWidget(m_applyToSubFolders);
- applyBoxLayout->addWidget(m_applyToAllFolders);
-
- m_useAsDefault = new QCheckBox(i18nc("@option:check", "Use as default for new folders"), main);
-
- topLayout->addWidget(applyBox);
- topLayout->addWidget(m_useAsDefault);
-
- connect(m_applyToCurrentFolder, SIGNAL(clicked()),
- this, SLOT(markAsDirty()));
- connect(m_applyToSubFolders, SIGNAL(clicked()),
- this, SLOT(markAsDirty()));
- connect(m_applyToAllFolders, SIGNAL(clicked()),
- this, SLOT(markAsDirty()));
- connect(m_useAsDefault, SIGNAL(clicked()),
- this, SLOT(markAsDirty()));
- }
-
- main->setLayout(topLayout);
- setMainWidget(main);
-
- const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"),
- "ViewPropertiesDialog");
- restoreDialogSize(dialogConfig);
-
- loadSettings();
-}
-
-ViewPropertiesDialog::~ViewPropertiesDialog()
-{
- m_isDirty = false;
- delete m_viewProps;
- m_viewProps = 0;
-
- KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"),
- "ViewPropertiesDialog");
- saveDialogSize(dialogConfig, KConfigBase::Persistent);
-}
-
-void ViewPropertiesDialog::slotOk()
-{
- applyViewProperties();
- accept();
-}
-
-void ViewPropertiesDialog::slotApply()
-{
- applyViewProperties();
-}
-
-void ViewPropertiesDialog::slotViewModeChanged(int index)
-{
- m_viewProps->setViewMode(static_cast<DolphinView::Mode>(index));
- m_isDirty = true;
-
- const DolphinView::Mode mode = m_viewProps->viewMode();
- m_showInGroups->setEnabled(mode == DolphinView::IconsView);
- m_additionalInfo->setEnabled(mode != DolphinView::ColumnView);
-}
-
-void ViewPropertiesDialog::slotSortingChanged(int index)
-{
- const DolphinView::Sorting sorting = DolphinSortFilterProxyModel::sortingForColumn(index);
- m_viewProps->setSorting(sorting);
- m_isDirty = true;
-}
-
-void ViewPropertiesDialog::slotSortOrderChanged(int index)
-{
- const Qt::SortOrder sortOrder = (index == 0) ? Qt::AscendingOrder : Qt::DescendingOrder;
- m_viewProps->setSortOrder(sortOrder);
- m_isDirty = true;
-}
-
-void ViewPropertiesDialog::slotCategorizedSortingChanged()
-{
- m_viewProps->setCategorizedSorting(m_showInGroups->isChecked());
- m_isDirty = true;
-}
-
-void ViewPropertiesDialog::slotShowPreviewChanged()
-{
- const bool show = m_showPreview->isChecked();
- m_viewProps->setShowPreview(show);
- m_isDirty = true;
-}
-
-void ViewPropertiesDialog::slotShowHiddenFilesChanged()
-{
- const bool show = m_showHiddenFiles->isChecked();
- m_viewProps->setShowHiddenFiles(show);
- m_isDirty = true;
-}
-
-void ViewPropertiesDialog::markAsDirty()
-{
- m_isDirty = true;
-}
-
-void ViewPropertiesDialog::configureAdditionalInfo()
-{
- KFileItemDelegate::InformationList info = m_viewProps->additionalInfo();
- const bool useDefaultInfo = (m_viewProps->viewMode() == DolphinView::DetailsView) &&
- (info.isEmpty() || info.contains(KFileItemDelegate::NoInformation));
- if (useDefaultInfo) {
- // 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.
- info.clear();
- info.append(KFileItemDelegate::Size);
- info.append(KFileItemDelegate::ModificationTime);
- m_viewProps->setAdditionalInfo(info);
- }
-
- AdditionalInfoDialog dialog(this, info);
- if (dialog.exec() == QDialog::Accepted) {
- m_viewProps->setAdditionalInfo(dialog.additionalInfo());
- m_isDirty = true;
- }
-}
-
-void ViewPropertiesDialog::applyViewProperties()
-{
- // if nothing changed in the dialog, we have nothing to apply
- if (!m_isDirty) {
- return;
- }
-
- const bool applyToSubFolders = (m_applyToSubFolders != 0) &&
- m_applyToSubFolders->isChecked();
- if (applyToSubFolders) {
- const QString text(i18nc("@info", "The view properties of all sub folders will be changed. Do you want to continue?"));
- if (KMessageBox::questionYesNo(this, text) == KMessageBox::No) {
- return;
- }
-
- ViewPropsProgressInfo* info = new ViewPropsProgressInfo(m_dolphinView,
- m_dolphinView->url(),
- *m_viewProps);
- info->setAttribute(Qt::WA_DeleteOnClose);
- info->setWindowModality(Qt::NonModal);
- info->show();
- }
-
- const bool applyToAllFolders = (m_applyToAllFolders != 0) &&
- m_applyToAllFolders->isChecked();
-
- // If the user selected 'Apply To All Folders' the view properties implicitely
- // are also used as default for new folders.
- const bool useAsDefault = applyToAllFolders ||
- ((m_useAsDefault != 0) && m_useAsDefault->isChecked());
- if (useAsDefault) {
- // For directories where no .directory file is available, the .directory
- // file stored for the global view properties is used as fallback. To update
- // this file we temporary turn on the global view properties mode.
- GeneralSettings* settings = DolphinSettings::instance().generalSettings();
- Q_ASSERT(!settings->globalViewProps());
-
- settings->setGlobalViewProps(true);
- ViewProperties defaultProps(m_dolphinView->url());
- defaultProps.setDirProperties(*m_viewProps);
- defaultProps.save();
- settings->setGlobalViewProps(false);
- }
-
- if (applyToAllFolders) {
- const QString text(i18nc("@info", "The view properties of all folders will be changed. Do you want to continue?"));
- if (KMessageBox::questionYesNo(this, text) == KMessageBox::No) {
- return;
- }
-
- // Updating the global view properties time stamp in the general settings makes
- // all existing viewproperties invalid, as they have a smaller time stamp.
- GeneralSettings* settings = DolphinSettings::instance().generalSettings();
- settings->setViewPropsTimestamp(QDateTime::currentDateTime());
- }
-
- m_dolphinView->setMode(m_viewProps->viewMode());
- m_dolphinView->setSorting(m_viewProps->sorting());
- m_dolphinView->setSortOrder(m_viewProps->sortOrder());
- m_dolphinView->setCategorizedSorting(m_viewProps->categorizedSorting());
- m_dolphinView->setAdditionalInfo(m_viewProps->additionalInfo());
- m_dolphinView->setShowPreview(m_viewProps->showPreview());
- m_dolphinView->setShowHiddenFiles(m_viewProps->showHiddenFiles());
-
- m_viewProps->save();
-
- m_isDirty = false;
-}
-
-void ViewPropertiesDialog::loadSettings()
-{
- // load view mode
- const int index = static_cast<int>(m_viewProps->viewMode());
- m_viewMode->setCurrentIndex(index);
-
- // 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());
-
- const bool enabled = (index == DolphinView::DetailsView) ||
- (index == DolphinView::IconsView);
- m_additionalInfo->setEnabled(enabled);
-
- // 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(index == DolphinView::IconsView); // only the icons view supports categorized sorting
-
- m_showHiddenFiles->setChecked(m_viewProps->showHiddenFiles());
-}
-
-#include "viewpropertiesdialog.moc"