# HG changeset patch
# User lbajardsilogic
# Date 1201627302 0
# Node ID 74d1b3bda5a3480b3ae1ab4fd662615b26e08d24
# Parent bb04d9df8b4148f4c515ed63be867795e1b24928
allow to save and restore the filter settings from an easaier session
diff -r bb04d9df8b41 -r 74d1b3bda5a3 sv/document/Document.cpp
--- a/sv/document/Document.cpp Tue Jan 29 12:46:03 2008 +0000
+++ b/sv/document/Document.cpp Tue Jan 29 17:21:42 2008 +0000
@@ -909,6 +909,8 @@
s += indent + indent + indent + QString("\n");
+ s += m_filterStack->toEasaierXmlString(indent + indent + indent, extraAttributes);
+
s += indent + indent + QString("\n");
s += indent + "\n";
diff -r bb04d9df8b41 -r 74d1b3bda5a3 sv/document/ESFileReader.cpp
--- a/sv/document/ESFileReader.cpp Tue Jan 29 12:46:03 2008 +0000
+++ b/sv/document/ESFileReader.cpp Tue Jan 29 17:21:42 2008 +0000
@@ -109,6 +109,14 @@
QString filename = attributes.value("value");
m_document->setAudioSourceInfoFileName(filename);
+ } else if (name == "filters") {
+ // nothing needed
+ ok = true;
+
+ } else if (name == "filter") {
+ // nothing needed
+ ok = readFilter(attributes);;
+
} else if (name == "display") {
// nothing needed
ok = true;
@@ -346,3 +354,32 @@
return true;
}
+bool
+ESFileReader::readFilter(const QXmlAttributes &attributes)
+{
+ QString name = attributes.value("name");
+
+ FilterStack *filterStack = m_document->getRealTimeFilterStack();
+
+ if (!filterStack)
+ {
+ std::cerr << "WARNING: Easaier session-XML: Failed to get filterStack \""
+ << name.toLocal8Bit().data()
+ << "\"" << std::endl;
+ return false;
+ }
+
+ Filter *curFilter = filterStack->findFilter(name);
+
+ if (!curFilter)
+ {
+ std::cerr << "WARNING: Easaier session-XML: Failed to get filter \""
+ << name.toLocal8Bit().data()
+ << "\"" << std::endl;
+ return false;
+ }
+
+ curFilter->setProperties(attributes);
+
+ return true;
+}
diff -r bb04d9df8b41 -r 74d1b3bda5a3 sv/document/ESFileReader.h
--- a/sv/document/ESFileReader.h Tue Jan 29 12:46:03 2008 +0000
+++ b/sv/document/ESFileReader.h Tue Jan 29 17:21:42 2008 +0000
@@ -71,6 +71,7 @@
bool readWindow(const QXmlAttributes &);
bool readView(const QXmlAttributes &);
bool readLayer(const QXmlAttributes &);
+ bool readFilter(const QXmlAttributes &);
Document *m_document;
ESFileReaderPaneCallback &m_paneCallback;
diff -r bb04d9df8b41 -r 74d1b3bda5a3 sv/filter/Filter.cpp
--- a/sv/filter/Filter.cpp Tue Jan 29 12:46:03 2008 +0000
+++ b/sv/filter/Filter.cpp Tue Jan 29 17:21:42 2008 +0000
@@ -21,19 +21,53 @@
Filter::~Filter()
{}
-bool Filter::isFilterEnabled(){
+bool Filter::isFilterEnabled() const {
return filterEnabled;
}
void Filter::setFilterEnabled(bool b){
filterEnabled=b;
- emit filterEnableChanged(b);
}
void Filter::setFilterEnabled(int b){
- filterEnabled=b;
- emit filterEnableChanged(b);
+ filterEnabled=(bool)b;
+
}
+QString Filter::toEasaierXmlString(QString indent, QString extraAttributes) const
+{
+ QString s;
+
+ int enable = isFilterEnabled();
+ s += indent + QString("\n").arg(extraAttributes);
+
+ return s;
+}
+void Filter::setProperties(const QXmlAttributes &attributes)
+{
+ int enable = attributes.value("enable").toInt();
+ setFilterEnabled(enable);
+ emit filterEnableChange(enable);
+
+ PropertyContainer::PropertyList propertyList = getProperties();
+ int value;
+ for(int i=0; i< ((int) propertyList.size());i++)
+ {
+ value = attributes.value(propertyList[i]).toInt();
+ setProperty(propertyList[i], value);
+ }
+
+ emit propertiesChanged(this);
+}
\ No newline at end of file
diff -r bb04d9df8b41 -r 74d1b3bda5a3 sv/filter/Filter.h
--- a/sv/filter/Filter.h Tue Jan 29 12:46:03 2008 +0000
+++ b/sv/filter/Filter.h Tue Jan 29 17:21:42 2008 +0000
@@ -14,6 +14,8 @@
#ifndef _FILTER_H_
#define _FILTER_H_
+#include
+
#include "base/PropertyContainer.h"
class Filter : public PropertyContainer
@@ -45,13 +47,19 @@
inline void setSourceChannelCount(size_t channel){m_sourceChannelCount = channel;}
inline size_t getSourceChannelCount(){return m_sourceChannelCount;}
- bool isFilterEnabled();
+ bool isFilterEnabled() const;
/*allow or not to add another filter of this type*/
virtual bool allowMultiple() = 0;
+ QString toEasaierXmlString(QString indent, QString extraAttributes) const;
+
+ void setProperties(const QXmlAttributes &attributes);
+
signals :
- void filterEnableChanged(bool);
+ void filterEnableChange(bool);
+
+ void propertiesChanged(PropertyContainer *);
protected:
diff -r bb04d9df8b41 -r 74d1b3bda5a3 sv/filter/FilterStack.cpp
--- a/sv/filter/FilterStack.cpp Tue Jan 29 12:46:03 2008 +0000
+++ b/sv/filter/FilterStack.cpp Tue Jan 29 17:21:42 2008 +0000
@@ -190,4 +190,22 @@
}
return true;
+}
+
+QString FilterStack::toEasaierXmlString(QString indent, QString extraAttributes) const
+{
+ QString s;
+
+ s += indent + QString("\n");
+
+ std::map::const_iterator iter;
+ for (iter = m_filters.begin(); iter != m_filters.end(); iter++)
+ {
+ Filter * filter = iter->second;
+ s += filter->toEasaierXmlString(indent + indent, extraAttributes);
+ }
+
+ s += indent + "\n";
+
+ return s;
}
\ No newline at end of file
diff -r bb04d9df8b41 -r 74d1b3bda5a3 sv/filter/FilterStack.h
--- a/sv/filter/FilterStack.h Tue Jan 29 12:46:03 2008 +0000
+++ b/sv/filter/FilterStack.h Tue Jan 29 17:21:42 2008 +0000
@@ -46,6 +46,8 @@
bool allowOtherFilter(QString &labelType);
+ QString toEasaierXmlString(QString indent, QString extraAttributes) const;
+
signals:
void newFilterAdded(Filter *);
void filterRemoved(QString);
diff -r bb04d9df8b41 -r 74d1b3bda5a3 sv/filter/TimeStretchFilter.cpp
--- a/sv/filter/TimeStretchFilter.cpp Tue Jan 29 12:46:03 2008 +0000
+++ b/sv/filter/TimeStretchFilter.cpp Tue Jan 29 17:21:42 2008 +0000
@@ -452,8 +452,7 @@
void TimeStretchFilter::setFilterEnabled(bool b){
filterEnabled=b;
- emit filterEnableChanged(b);
-
+
if (filterEnabled)
{
if (!m_bypass)
@@ -465,8 +464,7 @@
void TimeStretchFilter::setFilterEnabled(int b){
filterEnabled=b;
- emit filterEnableChanged(b);
-
+
if (filterEnabled)
{
if (!m_bypass)
@@ -475,3 +473,5 @@
else
emit playSpeedChanged(1);
}
+
+
diff -r bb04d9df8b41 -r 74d1b3bda5a3 sv/main/MainWindow.cpp
--- a/sv/main/MainWindow.cpp Tue Jan 29 12:46:03 2008 +0000
+++ b/sv/main/MainWindow.cpp Tue Jan 29 17:21:42 2008 +0000
@@ -3117,7 +3117,8 @@
createMultiPaneLayerContainer();
PaneCallback callback(this);
m_viewManager->clearSelections();
-
+ setupFiltersMenu();
+
SVFileReader reader(m_document, callback, location);
QXmlInputSource inputSource(&bzFile);
reader.parse(inputSource);
@@ -3157,8 +3158,6 @@
m_EasaierManager->newSession();
- setupFiltersMenu();
-
return ok ? FileOpenSucceeded : FileOpenFailed;
}
@@ -3393,8 +3392,6 @@
s += "\n";
-// s += m_viewManager->getSelection().toXmlString();
-
s += m_document->toEasaierXmlString(indent, "");
s += "\n";
@@ -5233,6 +5230,7 @@
createMultiPaneLayerContainer();
PaneCallback callback(this);
m_viewManager->clearSelections();
+ setupFiltersMenu();
ESFileReader reader(m_document, callback);
QXmlInputSource inputSource(&file);
@@ -5261,8 +5259,6 @@
m_EasaierManager->openSession(m_document);
- setupFiltersMenu();
-
return ok;
}
diff -r bb04d9df8b41 -r 74d1b3bda5a3 widgets/ItemAudioFilterList.cpp
--- a/widgets/ItemAudioFilterList.cpp Tue Jan 29 12:46:03 2008 +0000
+++ b/widgets/ItemAudioFilterList.cpp Tue Jan 29 17:21:42 2008 +0000
@@ -62,6 +62,7 @@
this->setLayout(m_layoutMain);
connect(this, SIGNAL(doubleClicked()), this, SLOT(openPropertyBox()));
+
}
ItemAudioFilterList::~ItemAudioFilterList(){
@@ -91,7 +92,8 @@
m_container = (Filter *) m_propertyBox->container();
updateCheckboxs();
connect(m_propertyBox, SIGNAL(showLayer(bool)), this, SLOT(showLayer(bool)));
-
+ connect(m_checkBoxPlay, SIGNAL(stateChanged(int)),m_container, SLOT(setFilterEnabled(int)));
+ connect(m_container, SIGNAL(filterEnableChange(bool)),this, SLOT(updateCheckboxs()));
}
}
@@ -109,11 +111,7 @@
void ItemAudioFilterList::updateCheckboxs(){
- m_checkBoxPlay->setEnabled(true);
m_checkBoxPlay->setChecked(m_container->isFilterEnabled());
-
- connect(m_container, SIGNAL(filterEnableChanged(bool)),m_checkBoxPlay, SLOT(setState(bool)));
- connect(m_checkBoxPlay, SIGNAL(stateChanged(int)),m_container, SLOT(setFilterEnabled(int)));
}
diff -r bb04d9df8b41 -r 74d1b3bda5a3 widgets/PropertyBox.cpp
--- a/widgets/PropertyBox.cpp Tue Jan 29 12:46:03 2008 +0000
+++ b/widgets/PropertyBox.cpp Tue Jan 29 17:21:42 2008 +0000
@@ -447,9 +447,9 @@
}
if (slider->value() != value) {
- slider->blockSignals(true);
+ //slider->blockSignals(true);
slider->setValue(value);
- slider->blockSignals(false);
+ //slider->blockSignals(false);
}
break;
}
diff -r bb04d9df8b41 -r 74d1b3bda5a3 widgets/RealTimeFilterPropertyStack.cpp
--- a/widgets/RealTimeFilterPropertyStack.cpp Tue Jan 29 12:46:03 2008 +0000
+++ b/widgets/RealTimeFilterPropertyStack.cpp Tue Jan 29 17:21:42 2008 +0000
@@ -24,6 +24,9 @@
{
PropertyBox *box = new PropertyBox(filter);
+ connect(filter, SIGNAL(propertiesChanged(PropertyContainer *)),
+ box, SLOT(propertyContainerPropertyChanged(PropertyContainer *)));
+
ItemAudioFilterList *itAudio = new ItemAudioFilterList;
QString name(filter->objectName());
itAudio->setName(name);