┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2006-12-07 20:51:05 +0000
committerPeter Penz <[email protected]>2006-12-07 20:51:05 +0000
commit31d14571959f1bf750ccc43c15d71ca9338baaaf (patch)
tree238becaaa9a5cf93c86d4c5f196d602a6a1f21d7 /src
parent904168ad2a0e2baff0570658c8f9a9c3feba4554 (diff)
Apply the view properties to sub directories without using a modal window. This allows the user to proceed with the work during the view properties are applied.
svn path=/trunk/playground/utils/dolphin/; revision=611369
Diffstat (limited to 'src')
-rw-r--r--src/viewproperties.cpp6
-rw-r--r--src/viewproperties.h9
-rw-r--r--src/viewpropertiesdialog.cpp48
-rw-r--r--src/viewpropertiesdialog.h6
-rw-r--r--src/viewpropsprogressinfo.cpp30
-rw-r--r--src/viewpropsprogressinfo.h7
6 files changed, 46 insertions, 60 deletions
diff --git a/src/viewproperties.cpp b/src/viewproperties.cpp
index d099b3b22..e3e219b24 100644
--- a/src/viewproperties.cpp
+++ b/src/viewproperties.cpp
@@ -50,9 +50,9 @@ ViewProperties::ViewProperties(const KUrl& url) :
return;
}
- // we try and save it to a file in the directory being viewed
- // if the directory is not writable by the user or the directory is not local
- // we store the properties information in a local file
+ // We try and save it to a file in the directory being viewed.
+ // If the directory is not writable by the user or the directory is not local,
+ // we store the properties information in a local file.
QString rootDir("/"); // TODO: should this be set to the root of the bookmark, if any?
if (cleanUrl.isLocalFile()) {
QFileInfo info(m_filepath);
diff --git a/src/viewproperties.h b/src/viewproperties.h
index 7f57f2eed..bdc052ed8 100644
--- a/src/viewproperties.h
+++ b/src/viewproperties.h
@@ -30,23 +30,21 @@
class QFile;
/**
- * @short Maintains the view properties like 'view mode' or 'show hidden files' for a directory.
+ * @brief Maintains the view properties like 'view mode' or 'show hidden files' for a directory.
*
* The view properties are automatically stored inside
* the directory as hidden file called '.dolphinview'. To read out the view properties
* just construct an instance by passing the Url of the directory:
+ *
* \code
* ViewProperties props(KUrl("/home/peter/Documents"));
* const DolphinView::Mode mode = props.viewMode();
* const bool showHiddenFiles = props.isShowHiddenFilesEnabled();
* \endcode
+ *
* When modifying a view property, the '.dolphinview' file is automatically updated
* inside the destructor.
- *
- * @author Peter Penz
*/
-// TODO: provide detailed design description, as mapping the user model to
-// the physical modal is not trivial.
class ViewProperties
{
public:
@@ -71,7 +69,6 @@ public:
void updateTimeStamp();
void save();
-
private:
bool m_changedProps;
bool m_autoSave;
diff --git a/src/viewpropertiesdialog.cpp b/src/viewpropertiesdialog.cpp
index de5c74a01..b13b3d4a6 100644
--- a/src/viewpropertiesdialog.cpp
+++ b/src/viewpropertiesdialog.cpp
@@ -99,22 +99,9 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
propsBoxLayout->addWidget(m_sortOrder, 2, 1);
propsBoxLayout->addWidget(m_showHiddenFiles, 3, 0);
- // create 'Apply view properties to:' group
- QGroupBox* buttonBox = new QGroupBox(i18n("Apply view properties to:"), main);
- m_applyToCurrentFolder = new QRadioButton(i18n("Current folder"), buttonBox);
- m_applyToSubFolders = new QRadioButton(i18n("Current folder including all sub folders"), buttonBox);
- m_applyToAllFolders = new QRadioButton(i18n("All folders"), buttonBox);
-
- QVBoxLayout* buttonBoxLayout = new QVBoxLayout();
- buttonBoxLayout->addWidget(m_applyToCurrentFolder);
- buttonBoxLayout->addWidget(m_applyToSubFolders);
- buttonBoxLayout->addWidget(m_applyToAllFolders);
- buttonBox->setLayout(buttonBoxLayout);
-
- m_applyToCurrentFolder->setChecked(true);
-
+ m_applyToSubFolders = new QCheckBox(i18n("Apply changes to all sub folders"), main);
topLayout->addWidget(propsBox);
- topLayout->addWidget(buttonBox);
+ topLayout->addWidget(m_applyToSubFolders);
connect(m_viewMode, SIGNAL(activated(int)),
this, SLOT(slotViewModeChanged(int)));
@@ -124,12 +111,9 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
this, SLOT(slotSortOrderChanged(int)));
connect(m_showHiddenFiles, SIGNAL(clicked()),
this, SLOT(slotShowHiddenFilesChanged()));
- 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(this, SIGNAL(okClicked()), this, SLOT(slotOk()));
connect(this, SIGNAL(applyClicked()), this, SLOT(slotApply()));
@@ -196,29 +180,17 @@ void ViewPropertiesDialog::markAsDirty()
void ViewPropertiesDialog::applyViewProperties()
{
- if (m_applyToAllFolders->isChecked()) {
- if (m_isDirty) {
- const QString text(i18n("The view properties of all folders will be replaced. Do you want to continue?"));
- if (KMessageBox::questionYesNo(this, text) == KMessageBox::No) {
- return;
- }
- }
-
- //ViewProperties props(QDir::homePath());
- //props.setViewMode(m_viewProps->viewMode());
- //props.setSorting(m_viewProps->sorting());
- //props.setSortOrder(m_viewProps->sortOrder());
- //props.setShowHiddenFilesEnabled(m_viewProps->isShowHiddenFilesEnabled());
- //props.setValidForSubDirs(true);
- }
- else if (m_applyToSubFolders->isChecked() && m_isDirty) {
- const QString text(i18n("The view properties of all sub folders will be replaced. Do you want to continue?"));
+ if (m_applyToSubFolders->isChecked() && m_isDirty) {
+ const QString text(i18n("The view properties of all sub folders will be changed. Do you want to continue?"));
if (KMessageBox::questionYesNo(this, text) == KMessageBox::No) {
return;
}
- ViewPropsProgressInfo dlg(this, m_dolphinView->url(), m_viewProps);
- dlg.exec();
+ ViewPropsProgressInfo* info = new ViewPropsProgressInfo(m_dolphinView,
+ m_dolphinView->url(),
+ *m_viewProps);
+ info->setWindowModality(Qt::NonModal);
+ info->show();
}
m_viewProps->save();
diff --git a/src/viewpropertiesdialog.h b/src/viewpropertiesdialog.h
index 24accfed0..d3cca8616 100644
--- a/src/viewpropertiesdialog.h
+++ b/src/viewpropertiesdialog.h
@@ -34,8 +34,6 @@ class DolphinView;
* It is possible to specify the view mode and whether hidden files
* should be shown. The properties can be assigned to the current folder,
* recursively to all sub folders or to all folders.
- *
- * @author Peter Penz
*/
class ViewPropertiesDialog : public KDialog
{
@@ -63,9 +61,7 @@ private:
QComboBox* m_sorting;
QComboBox* m_sortOrder;
QCheckBox* m_showHiddenFiles;
- QRadioButton* m_applyToCurrentFolder;
- QRadioButton* m_applyToSubFolders;
- QRadioButton* m_applyToAllFolders;
+ QCheckBox* m_applyToSubFolders;
void applyViewProperties();
};
diff --git a/src/viewpropsprogressinfo.cpp b/src/viewpropsprogressinfo.cpp
index 610a6912c..b04e107d5 100644
--- a/src/viewpropsprogressinfo.cpp
+++ b/src/viewpropsprogressinfo.cpp
@@ -34,10 +34,10 @@
ViewPropsProgressInfo::ViewPropsProgressInfo(QWidget* parent,
const KUrl& dir,
- const ViewProperties* viewProps) :
+ const ViewProperties& viewProps) :
KDialog(parent),
m_dir(dir),
- m_viewProps(viewProps),
+ m_viewProps(0),
m_label(0),
m_progressBar(0),
m_dirSizeJob(0),
@@ -47,6 +47,16 @@ ViewPropsProgressInfo::ViewPropsProgressInfo(QWidget* parent,
setCaption(i18n("Applying view properties"));
setButtons(KDialog::Cancel);
+ m_viewProps = new ViewProperties(dir);
+ m_viewProps->setViewMode(viewProps.viewMode());
+ m_viewProps->setShowHiddenFilesEnabled(viewProps.isShowHiddenFilesEnabled());
+ m_viewProps->setSorting(viewProps.sorting());
+ m_viewProps->setSortOrder(viewProps.sortOrder());
+
+ // the view properties are stored by the ViewPropsApplierJob, so prevent
+ // that the view properties are saved twice:
+ m_viewProps->setAutoSaveEnabled(false);
+
QWidget* main = new QWidget();
QVBoxLayout* topLayout = new QVBoxLayout();
@@ -79,7 +89,15 @@ ViewPropsProgressInfo::ViewPropsProgressInfo(QWidget* parent,
ViewPropsProgressInfo::~ViewPropsProgressInfo()
{
+ delete m_viewProps;
+ m_viewProps = 0;
+}
+
+void ViewPropsProgressInfo::closeEvent(QCloseEvent* event)
+{
m_timer->stop();
+ m_applyViewPropsJob = 0;
+ KDialog::closeEvent(event);
}
void ViewPropsProgressInfo::updateProgress()
@@ -88,8 +106,8 @@ void ViewPropsProgressInfo::updateProgress()
const int subdirs = m_dirSizeJob->totalSubdirs();
m_label->setText(i18n("Counting folders: %1", subdirs));
}
- else {
- assert(m_applyViewPropsJob != 0);
+
+ if (m_applyViewPropsJob != 0) {
const int progress = m_applyViewPropsJob->progress();
m_progressBar->setValue(progress);
}
@@ -117,8 +135,8 @@ void ViewPropsProgressInfo::cancelApplying()
if (m_dirSizeJob != 0) {
m_dirSizeJob->doKill();
}
- else {
- assert(m_applyViewPropsJob != 0);
+
+ if (m_applyViewPropsJob != 0) {
m_applyViewPropsJob->doKill();
}
}
diff --git a/src/viewpropsprogressinfo.h b/src/viewpropsprogressinfo.h
index ac591e6bc..b355ef597 100644
--- a/src/viewpropsprogressinfo.h
+++ b/src/viewpropsprogressinfo.h
@@ -52,10 +52,13 @@ public:
*/
ViewPropsProgressInfo(QWidget* parent,
const KUrl& dir,
- const ViewProperties* viewProps);
+ const ViewProperties& viewProps);
virtual ~ViewPropsProgressInfo();
+protected:
+ virtual void closeEvent(QCloseEvent* event);
+
private slots:
void updateProgress();
void applyViewProperties();
@@ -63,7 +66,7 @@ private slots:
private:
const KUrl& m_dir;
- const ViewProperties* m_viewProps;
+ ViewProperties* m_viewProps;
QLabel* m_label;
QProgressBar* m_progressBar;