summaryrefslogtreecommitdiffstats
path: root/tdefilereplace/knewprojectdlg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tdefilereplace/knewprojectdlg.cpp')
-rw-r--r--tdefilereplace/knewprojectdlg.cpp533
1 files changed, 533 insertions, 0 deletions
diff --git a/tdefilereplace/knewprojectdlg.cpp b/tdefilereplace/knewprojectdlg.cpp
new file mode 100644
index 0000000..06b703d
--- /dev/null
+++ b/tdefilereplace/knewprojectdlg.cpp
@@ -0,0 +1,533 @@
+/***************************************************************************
+ knewprojectdlg.cpp - description
+ -------------------
+ begin : Tue Dec 28 1999
+ copyright : (C) 1999 by Fran�is Dupoux
+ (C) 2004 Emiliano Gulmini <emi_barbarossa@yahoo.it>
+ email : dupoux@dupoux.com
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+
+//QT
+#include <tqwhatsthis.h>
+#include <tqcheckbox.h>
+#include <tqspinbox.h>
+#include <tqdatetimeedit.h>
+#include <tqlabel.h>
+#include <tqradiobutton.h>
+#include <tqtextedit.h>
+#include <tqlistview.h>
+
+//KDE
+#include <kseparator.h>
+#include <tdemessagebox.h>
+#include <kcharsets.h>
+#include <kcombobox.h>
+#include <tdeconfig.h>
+#include <tdefiledialog.h>
+#include <klineedit.h>
+#include <tdeglobal.h>
+#include <tdelocale.h>
+#include <kpushbutton.h>
+#include <kstandarddirs.h>
+#include <tdeversion.h>
+#include <kiconloader.h>
+#include <kdebug.h>
+#include <tdeapplication.h>
+
+// local
+#include "knewprojectdlg.h"
+#include "whatthis.h"
+
+using namespace whatthisNameSpace;
+
+
+KNewProjectDlg::KNewProjectDlg(RCOptions* info, TQWidget *parent, const char *name) : KNewProjectDlgS(parent, name)
+{
+ m_searchNowFlag = "";
+ m_option = info;
+
+ initGUI();
+
+ connect(m_pbLocation, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotDir()));
+ connect(m_pbCancel, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotReject()));
+ connect(m_pbSearchNow, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotSearchNow()));
+ connect(m_pbSearchLater, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotSearchLater()));
+ connect(m_leSearch, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(slotSearchLineEdit(const TQString&)));
+ connect(m_chbSizeMin, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotEnableSpinboxSizeMin(bool)));
+ connect(m_chbSizeMax, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotEnableSpinboxSizeMax(bool)));
+ connect(m_chbDateMin, TQT_SIGNAL(toggled(bool)), m_dedDateMin, TQT_SLOT(setEnabled(bool)));
+ connect(m_chbDateMax, TQT_SIGNAL(toggled(bool)), m_dedDateMax, TQT_SLOT(setEnabled(bool)));
+ connect(m_chbDateMin,TQT_SIGNAL(toggled(bool)),this, TQT_SLOT(slotEnableCbValidDate(bool)));
+ connect(m_chbDateMax,TQT_SIGNAL(toggled(bool)),this, TQT_SLOT(slotEnableCbValidDate(bool)));
+ connect(m_chbOwnerUser, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotEnableChbUser(bool)));
+ connect(m_chbOwnerGroup, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotEnableChbGroup(bool)));
+ connect(m_chbBackup, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotEnableChbBackup(bool)));
+ connect(m_pbHelp, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotHelp()));
+
+ whatsThis();
+}
+
+KNewProjectDlg::~KNewProjectDlg()
+{
+}
+
+void KNewProjectDlg::saveRCOptions()
+{
+ saveOptions();
+ saveFileSizeOptions();
+ saveDateAccessOptions();
+ saveOwnerOptions();
+ saveLocationsList();
+ saveFiltersList();
+ saveBackupExtensionOptions();
+}
+
+void KNewProjectDlg::slotDir()
+{
+ TQString directoryString = KFileDialog::getExistingDirectory(TQString(), this, i18n("Project Directory"));
+ if(!directoryString.isEmpty())
+ m_cbLocation->setEditText(directoryString);
+}
+
+void KNewProjectDlg::slotOK()
+{
+ // Check that Search text and Filter are not empty
+ m_option->m_directories = m_cbLocation->currentText();
+ m_option->m_filters = m_cbFilter->currentText();
+ if(!m_leSearch->text().isEmpty())
+ {
+ if(m_leReplace->text().isEmpty())
+ m_option->m_searchingOnlyMode = true;
+ else
+ m_option->m_searchingOnlyMode = false;
+ }
+ m_option->m_quickSearchString = m_searchNowFlag + m_leSearch->text();
+ m_option->m_quickReplaceString = m_searchNowFlag + m_leReplace->text();
+
+ if (m_option->m_directories.isEmpty() || m_option->m_filters.isEmpty())
+ {
+ KMessageBox::error(this, i18n("You must fill the combo boxes (location and filter) before continuing."));
+ return;
+ }
+
+ // OWNER OPTIONS
+ if ((m_chbOwnerUser->isChecked() && m_edOwnerUser->text().isEmpty()) ||
+ (m_chbOwnerGroup->isChecked() && m_edOwnerGroup->text().isEmpty()))
+ {
+ KMessageBox::error(this, i18n("Some edit boxes are empty in the <b>Owner</b> page."));
+ return ;
+ }
+
+ // Check option "Size Min/Max": check MinSize is not greater than MaxSize
+ int minSize = m_spbSizeMin->value(),
+ maxSize = m_spbSizeMax->value();
+ if ((minSize != FileSizeOption) && (maxSize != FileSizeOption))
+ if (minSize > maxSize)
+ {
+ KMessageBox::error(this, i18n("The minimum size is greater than the maximum size."));
+ return ;
+ }
+
+ accept();
+}
+
+void KNewProjectDlg::slotReject()
+{
+ m_option->m_quickSearchString = m_searchNowFlag;
+ m_option->m_quickReplaceString = m_searchNowFlag;
+
+ reject();
+}
+
+void KNewProjectDlg::slotSearchNow()
+{ //Add a 'N' to represent the status search-now
+ m_searchNowFlag = "N";
+ slotOK();
+}
+
+void KNewProjectDlg::slotSearchLater()
+{ //Add a 'L' to represent the status search-later
+ m_searchNowFlag = "L";
+ slotOK();
+}
+
+void KNewProjectDlg::slotSearchLineEdit(const TQString& t)
+{
+ m_pbSearchNow->setEnabled(!t.isEmpty());
+}
+
+void KNewProjectDlg::slotEnableSpinboxSizeMin(bool b)
+{
+ m_spbSizeMin->setEnabled(b);
+}
+
+void KNewProjectDlg::slotEnableSpinboxSizeMax(bool b)
+{
+ m_spbSizeMax->setEnabled(b);
+}
+
+void KNewProjectDlg::slotEnableCbValidDate(bool b)
+{
+ Q_UNUSED(b);
+ m_cbDateValid->setEnabled(m_chbDateMax->isChecked() || m_chbDateMin->isChecked());
+}
+
+void KNewProjectDlg::slotEnableChbUser(bool b)
+{
+ m_cbOwnerUserType->setEnabled(b);
+ m_cbOwnerUserBool->setEnabled(b);
+ m_edOwnerUser->setEnabled(b);
+}
+
+void KNewProjectDlg::slotEnableChbGroup(bool b)
+{
+ m_cbOwnerGroupType->setEnabled(b);
+ m_cbOwnerGroupBool->setEnabled(b);
+ m_edOwnerGroup->setEnabled(b);
+}
+
+void KNewProjectDlg::slotEnableChbBackup(bool b)
+{
+ m_leBackup->setEnabled(b);
+ m_tlBackup->setEnabled(b);
+}
+
+//PRIVATE
+void KNewProjectDlg::initGUI()
+{
+ TQIconSet iconSet = SmallIconSet("document-open");
+ TQPixmap pixMap = iconSet.pixmap( TQIconSet::Small, TQIconSet::Normal );
+
+ m_pbLocation->setIconSet(iconSet);
+ m_pbLocation->setFixedSize(pixMap.width() + 8, pixMap.height() + 8);
+
+ m_pbSearchNow->setEnabled(false);
+
+ loadOptions();
+ loadFileSizeOptions();
+ loadDateAccessOptions();
+ loadOwnerOptions();
+ loadBackupExtensionOptions();
+ loadLocationsList();
+ loadFiltersList();
+
+ m_leSearch->setFocus();
+}
+
+void KNewProjectDlg::loadOptions()
+{
+ TQStringList availableEncodingNames(TDEGlobal::charsets()->availableEncodingNames());
+ m_cbEncoding->insertStringList(availableEncodingNames);
+ int idx = -1;
+ int utf8Idx = -1;
+ for (uint i = 0; i < availableEncodingNames.count(); i++)
+ {
+ if (availableEncodingNames[i] == m_option->m_encoding)
+ {
+ idx = i;
+ break;
+ }
+ if (availableEncodingNames[i] == "utf8")
+ {
+ utf8Idx = i;
+ }
+ }
+ if (idx != -1)
+ m_cbEncoding->setCurrentItem(idx);
+ else
+ m_cbEncoding->setCurrentItem(utf8Idx);
+
+ m_chbIncludeSubfolders->setChecked(m_option->m_recursive);
+ m_chbCaseSensitive->setChecked(m_option->m_caseSensitive);
+ m_chbEnableVariables->setChecked(m_option->m_variables);
+ m_chbRegularExpressions->setChecked(m_option->m_regularExpressions);
+}
+
+void KNewProjectDlg::loadFileSizeOptions()
+{
+ int size = m_option->m_minSize;
+ if(size == FileSizeOption)
+ {
+ m_chbSizeMin->setChecked(false);
+ m_spbSizeMin->setEnabled(false);
+ m_spbSizeMin->setValue(0);
+ }
+ else
+ {
+ m_chbSizeMin->setChecked(true);
+ m_spbSizeMin->setEnabled(true);
+ m_spbSizeMin->setValue(size);
+ }
+
+ size = m_option->m_maxSize;
+ if(size == FileSizeOption)
+ {
+ m_chbSizeMax->setChecked(false);
+ m_spbSizeMax->setEnabled(false);
+ m_spbSizeMax->setValue(0);
+ }
+ else
+ {
+ m_chbSizeMax->setChecked(true);
+ m_spbSizeMax->setEnabled(true);
+ m_spbSizeMax->setValue(size);
+ }
+}
+
+void KNewProjectDlg::loadDateAccessOptions()
+{
+ // ================== DATE OPTIONS ========================
+
+ TQString date = m_option->m_minDate;
+ if(date == AccessDateOption)
+ {
+ m_chbDateMin->setChecked(false);
+ m_dedDateMin->setDate(m_dedDateMin->minValue());
+ m_dedDateMin->setEnabled(false);
+ }
+ else
+ {
+ m_chbDateMin->setChecked(true);
+ m_dedDateMin->setDate(TQDate::fromString(date,Qt::ISODate));
+ m_dedDateMin->setEnabled(true);
+ }
+
+ date = m_option->m_maxDate;
+ if(date == AccessDateOption)
+ {
+ m_chbDateMax->setChecked(false);
+ m_dedDateMax->setDate(m_dedDateMax->maxValue());
+ m_dedDateMax->setEnabled(false);
+ }
+ else
+ {
+ m_chbDateMax->setChecked(true);
+ m_dedDateMax->setDate(TQDate::fromString(date,Qt::ISODate));
+ m_dedDateMax->setEnabled(true);
+ }
+
+ m_cbDateValid->setEnabled(m_chbDateMax->isChecked() || m_chbDateMin->isChecked());
+
+}
+
+void KNewProjectDlg::loadOwnerOptions()
+{
+ bool enableOwner = m_option->m_ownerUserIsChecked;
+
+ m_chbOwnerUser->setChecked(enableOwner);
+ m_cbOwnerUserType->setEnabled(enableOwner);
+ m_cbOwnerUserBool->setEnabled(enableOwner);
+ m_edOwnerUser->setEnabled(enableOwner);
+
+ m_cbOwnerUserType->setCurrentText(m_option->m_ownerUserType);
+ m_cbOwnerUserBool->setCurrentText(m_option->m_ownerUserBool);
+
+ m_edOwnerUser->setText(m_option->m_ownerUserValue);
+
+ enableOwner = m_option->m_ownerGroupIsChecked;
+
+ m_chbOwnerGroup->setChecked(enableOwner);
+ m_cbOwnerGroupType->setEnabled(enableOwner);
+ m_cbOwnerGroupBool->setEnabled(enableOwner);
+ m_edOwnerGroup->setEnabled(enableOwner);
+
+ m_cbOwnerGroupType->setCurrentText(m_option->m_ownerGroupType);
+ m_cbOwnerGroupBool->setCurrentText(m_option->m_ownerGroupBool);
+ m_edOwnerGroup->setText(m_option->m_ownerGroupValue);
+}
+
+void KNewProjectDlg::loadLocationsList()
+{
+ m_cbLocation->insertStringList(m_option->m_directories);
+}
+
+void KNewProjectDlg::loadFiltersList()
+{
+ m_cbFilter->insertStringList(m_option->m_filters);
+}
+
+void KNewProjectDlg::loadBackupExtensionOptions()
+{
+ bool enableBackup = m_option->m_backup;
+
+ m_chbBackup->setChecked(enableBackup);
+ m_leBackup->setEnabled(enableBackup);
+ m_tlBackup->setEnabled(enableBackup);
+ m_leBackup->setText(m_option->m_backupExtension);
+}
+
+void KNewProjectDlg::saveOptions()
+{
+ m_option->m_encoding = m_cbEncoding->currentText();
+ m_option->m_recursive = m_chbIncludeSubfolders->isChecked();
+ m_option->m_caseSensitive = m_chbCaseSensitive->isChecked();
+ m_option->m_variables = m_chbEnableVariables->isChecked();
+ m_option->m_regularExpressions = m_chbRegularExpressions->isChecked();
+}
+
+void KNewProjectDlg::saveFileSizeOptions()
+{
+ if(m_chbSizeMax->isChecked())
+ m_option->m_maxSize = m_spbSizeMax->value();
+ else
+ m_option->m_maxSize = FileSizeOption;
+
+ if(m_chbSizeMin->isChecked())
+ m_option->m_minSize = m_spbSizeMin->value();
+ else
+ m_option->m_minSize = FileSizeOption;
+}
+
+void KNewProjectDlg::saveDateAccessOptions()
+{
+ if(m_chbDateMin->isChecked() || m_chbDateMax->isChecked())
+ m_option->m_dateAccess = m_cbDateValid->currentText();
+ else
+ m_option->m_dateAccess = ValidAccessDateOption;
+
+ if(m_chbDateMin->isChecked())
+ {
+ TQString date = m_dedDateMin->date().toString(Qt::ISODate);
+ m_option->m_minDate = date;
+ }
+ else
+ m_option->m_minDate = AccessDateOption;
+
+ if(m_chbDateMax->isChecked())
+ {
+ TQString date = m_dedDateMax->date().toString(Qt::ISODate);
+ m_option->m_maxDate = date;
+ }
+ else
+ m_option->m_maxDate = AccessDateOption;
+}
+
+void KNewProjectDlg::saveOwnerOptions()
+{
+ bool isChecked = m_chbOwnerUser->isChecked();
+ if(isChecked)
+ {
+ m_option->m_ownerUserIsChecked = true;
+ m_option->m_ownerUserType = m_cbOwnerUserType->currentText();
+ m_option->m_ownerUserBool = m_cbOwnerUserBool->currentText();
+ m_option->m_ownerUserValue = m_edOwnerUser->text();
+ }
+ else
+ {
+ m_option->m_ownerUserIsChecked = false;
+ m_option->m_ownerUserType = "Name";
+ m_option->m_ownerUserBool = "Equals To";
+ m_option->m_ownerUserValue = "";
+ }
+
+ isChecked = m_chbOwnerGroup->isChecked();
+ if(isChecked)
+ {
+ m_option->m_ownerGroupIsChecked = true;
+ m_option->m_ownerGroupType = m_cbOwnerGroupType->currentText();
+ m_option->m_ownerGroupBool = m_cbOwnerGroupBool->currentText();
+ m_option->m_ownerGroupValue = m_edOwnerGroup->text();
+ }
+ else
+ {
+ m_option->m_ownerGroupIsChecked = false;
+ m_option->m_ownerGroupType = "Name";
+ m_option->m_ownerGroupBool = "Equals To";
+ m_option->m_ownerGroupValue = "";
+ }
+}
+
+void KNewProjectDlg::saveLocationsList()
+{
+ TQString current = m_cbLocation->currentText();
+ TQStringList list = current;
+
+ int count = m_cbLocation->listBox()->count(),
+ i;
+ for(i = 0; i < count; i++)
+ {
+ TQString text = m_cbLocation->listBox()->item(i)->text();
+ if(text != current)
+ list.append(text);
+ }
+ m_option->m_directories = list;
+}
+
+void KNewProjectDlg::saveFiltersList()
+{
+ TQString current = m_cbFilter->currentText();
+ TQStringList list = current;
+
+ int count = m_cbFilter->listBox()->count(),
+ i;
+ for(i = 0; i < count; i++)
+ {
+ TQString text = m_cbFilter->listBox()->item(i)->text();
+ if(text != current)
+ list.append(text);
+ }
+ m_option->m_filters = list;
+}
+
+void KNewProjectDlg::saveBackupExtensionOptions()
+{
+ TQString backupExt = m_leBackup->text();
+ m_option->m_backup = (m_chbBackup->isChecked() && !backupExt.isEmpty());
+ m_option->m_backupExtension = backupExt;
+}
+
+void KNewProjectDlg::setDatas(const TQString& directoryString, const TQString& filterString)
+{
+ if (!directoryString.isEmpty())
+ m_cbLocation->setEditText(directoryString);
+
+ if (!filterString.isEmpty())
+ m_cbFilter->setEditText(filterString);
+}
+
+bool KNewProjectDlg::contains(TQListView* lv,const TQString& s, int column)
+{
+ TQListViewItem* i = lv->firstChild();
+ while (i != 0)
+ {
+ if(i->text(column) == s)
+ return true;
+ i = i->nextSibling();
+ }
+ return false;
+}
+
+void KNewProjectDlg::whatsThis()
+{
+ TQWhatsThis::add(m_cbLocation, cbLocationWhatthis);
+ TQWhatsThis::add(m_cbFilter, cbFilterWhatthis);
+
+ TQWhatsThis::add(m_spbSizeMin, edSizeMinWhatthis);
+ TQWhatsThis::add(m_spbSizeMax, edSizeMaxWhatthis);
+
+ TQWhatsThis::add(m_cbDateValid, cbDateValidWhatthis);
+ TQWhatsThis::add(m_chbDateMin, chbDateMinWhatthis);
+ TQWhatsThis::add(m_chbDateMax, chbDateMaxWhatthis);
+
+ TQWhatsThis::add(m_chbIncludeSubfolders, chbRecursiveWhatthis);
+ TQWhatsThis::add(m_chbRegularExpressions, chbRegularExpressionsWhatthis);
+ TQWhatsThis::add(m_chbEnableVariables, chbVariablesWhatthis);
+ TQWhatsThis::add(m_chbCaseSensitive, chbCaseSensitiveWhatthis);
+ TQWhatsThis::add(m_chbBackup, chbBackupWhatthis);
+ TQWhatsThis::add(m_leBackup, chbBackupWhatthis);
+ TQWhatsThis::add(m_leSearch, leSearchWhatthis);
+ TQWhatsThis::add(m_leReplace, leReplaceWhatthis);
+}
+
+#include "knewprojectdlg.moc"
+