diff options
| author | Tobias Markmann <tm@ayena.de> | 2015-01-18 19:12:02 (GMT) | 
|---|---|---|
| committer | Swift Review <review@swift.im> | 2015-02-05 09:34:57 (GMT) | 
| commit | edfd69a55e4f52576ab58306da8a82b1df890d5f (patch) | |
| tree | 3d2a72b1014d11435f0a5592984d2894441c97e8 | |
| parent | 53c86d070255ae1a33b7a3642bb6eb9ce42e7f70 (diff) | |
| download | swift-edfd69a55e4f52576ab58306da8a82b1df890d5f.zip swift-edfd69a55e4f52576ab58306da8a82b1df890d5f.tar.bz2 | |
Add "Reset defaults" button to highlight editor window.
The button is only shown if the current rules are *not* the default
set of rules.
Test-Information:
Tested on Mac OS X 10.9.5.
Change-Id: Ibf1856af04c6bdacf6102d240e6fe5f6071cb46a
| -rw-r--r-- | Swift/Controllers/HighlightAction.cpp | 34 | ||||
| -rw-r--r-- | Swift/Controllers/HighlightAction.h | 5 | ||||
| -rw-r--r-- | Swift/Controllers/HighlightManager.cpp | 11 | ||||
| -rw-r--r-- | Swift/Controllers/HighlightManager.h | 5 | ||||
| -rw-r--r-- | Swift/Controllers/HighlightRule.cpp | 38 | ||||
| -rw-r--r-- | Swift/Controllers/HighlightRule.h | 4 | ||||
| -rw-r--r-- | Swift/QtUI/QtHighlightEditor.cpp | 17 | ||||
| -rw-r--r-- | Swift/QtUI/QtHighlightEditor.h | 4 | ||||
| -rw-r--r-- | Swift/QtUI/QtHighlightEditor.ui | 15 | 
9 files changed, 112 insertions, 21 deletions
| diff --git a/Swift/Controllers/HighlightAction.cpp b/Swift/Controllers/HighlightAction.cpp index 492d4d2..80d9d85 100644 --- a/Swift/Controllers/HighlightAction.cpp +++ b/Swift/Controllers/HighlightAction.cpp @@ -4,6 +4,12 @@   * See Documentation/Licenses/BSD-simplified.txt for more information.   */ +/* + * Copyright (c) 2015 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ +  #include <Swift/Controllers/HighlightAction.h>  namespace Swift { @@ -25,4 +31,32 @@ void HighlightAction::setPlaySound(bool playSound)  	}  } +bool operator ==(HighlightAction const& a, HighlightAction const& b) { +	if (a.highlightAllText() != b.highlightAllText()) { +		return false; +	} + +	if (a.getTextColor() != b.getTextColor()) { +		return false; +	} + +	if (a.getTextBackground() != b.getTextBackground()) { +		return false; +	} + +	if (a.playSound() != b.playSound()) { +		return false; +	} + +	if (a.getSoundFile() != b.getSoundFile()) { +		return false; +	} + +	return true; +} + +bool operator !=(HighlightAction const& a, HighlightAction const& b) { +	return !(a == b); +} +  } diff --git a/Swift/Controllers/HighlightAction.h b/Swift/Controllers/HighlightAction.h index 8136c62..a9e0cee 100644 --- a/Swift/Controllers/HighlightAction.h +++ b/Swift/Controllers/HighlightAction.h @@ -5,7 +5,7 @@   */  /* - * Copyright (c) 2014 Isode Limited. + * Copyright (c) 2014-2015 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -66,6 +66,9 @@ namespace Swift {  			std::string soundFile_;  	}; +	bool operator ==(HighlightAction const& a, HighlightAction const& b); +	bool operator !=(HighlightAction const& a, HighlightAction const& b); +  	template<class Archive>  	void HighlightAction::serialize(Archive& ar, const unsigned int /*version*/)  	{ diff --git a/Swift/Controllers/HighlightManager.cpp b/Swift/Controllers/HighlightManager.cpp index ee1e9ed..383f5df 100644 --- a/Swift/Controllers/HighlightManager.cpp +++ b/Swift/Controllers/HighlightManager.cpp @@ -5,7 +5,7 @@   */  /* - * Copyright (c) 2014 Isode Limited. + * Copyright (c) 2014-2015 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -75,6 +75,7 @@ std::vector<HighlightRule> HighlightManager::getDefaultRules()  	HighlightRule r;  	r.setMatchChat(true);  	r.getAction().setPlaySound(true); +	r.setMatchWholeWords(true);  	rules.push_back(r);  	return rules;  } @@ -136,4 +137,12 @@ Highlighter* HighlightManager::createHighlighter()  	return new Highlighter(this);  } +bool HighlightManager::isDefaultRulesList() const { +	return getDefaultRules() == rules_->list_; +} + +void HighlightManager::resetToDefaultRulesList() { +	rules_->list_ = getDefaultRules(); +} +  } diff --git a/Swift/Controllers/HighlightManager.h b/Swift/Controllers/HighlightManager.h index 4d94bd2..d37643d 100644 --- a/Swift/Controllers/HighlightManager.h +++ b/Swift/Controllers/HighlightManager.h @@ -5,7 +5,7 @@   */  /* - * Copyright (c) 2014 Isode Limited. + * Copyright (c) 2014-2015 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -48,6 +48,9 @@ namespace Swift {  			boost::shared_ptr<const HighlightManager::HighlightRulesList> getRules() const { return rules_; } +			bool isDefaultRulesList() const; +			void resetToDefaultRulesList(); +  			HighlightRule getRule(int index) const;  			void setRule(int index, const HighlightRule& rule);  			void insertRule(int index, const HighlightRule& rule); diff --git a/Swift/Controllers/HighlightRule.cpp b/Swift/Controllers/HighlightRule.cpp index f1a7cef..40b7560 100644 --- a/Swift/Controllers/HighlightRule.cpp +++ b/Swift/Controllers/HighlightRule.cpp @@ -5,7 +5,7 @@   */  /* - * Copyright (c) 2014 Isode Limited. + * Copyright (c) 2014-2015 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -149,4 +149,40 @@ bool HighlightRule::isEmpty() const  	return senders_.empty() && keywords_.empty() && !nickIsKeyword_ && !matchChat_ && !matchMUC_ && action_.isEmpty();  } +bool operator ==(HighlightRule const& a, HighlightRule const& b) { +	if (a.getSenders() != b.getSenders()) { +		return false; +	} + +	if (a.getKeywords() != b.getKeywords()) { +		return false; +	} + +	if (a.getNickIsKeyword() != b.getNickIsKeyword()) { +		return false; +	} + +	if (a.getMatchChat() != b.getMatchChat()) { +		return false; +	} + +	if (a.getMatchMUC() != b.getMatchMUC()) { +		return false; +	} + +	if (a.getMatchCase() != b.getMatchCase()) { +		return false; +	} + +	if (a.getMatchWholeWords() != b.getMatchWholeWords()) { +		return false; +	} + +	if (a.getAction() != b.getAction()) { +		return false; +	} + +	return true; +} +  } diff --git a/Swift/Controllers/HighlightRule.h b/Swift/Controllers/HighlightRule.h index fdc6109..02b4864 100644 --- a/Swift/Controllers/HighlightRule.h +++ b/Swift/Controllers/HighlightRule.h @@ -5,7 +5,7 @@   */  /* - * Copyright (c) 2014 Isode Limited. + * Copyright (c) 2014-2015 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -84,6 +84,8 @@ namespace Swift {  			HighlightAction action_;  	}; +	bool operator ==(HighlightRule const& a, HighlightRule const& b); +  	template<class Archive>  	void HighlightRule::serialize(Archive& ar, const unsigned int /*version*/)  	{ diff --git a/Swift/QtUI/QtHighlightEditor.cpp b/Swift/QtUI/QtHighlightEditor.cpp index df9f6b2..c6e4319 100644 --- a/Swift/QtUI/QtHighlightEditor.cpp +++ b/Swift/QtUI/QtHighlightEditor.cpp @@ -5,7 +5,7 @@   */  /* - * Copyright (c) 2014 Isode Limited. + * Copyright (c) 2014-2015 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -38,6 +38,7 @@ QtHighlightEditor::QtHighlightEditor(QtSettingsProvider* settings, QWidget* pare  	connect(ui_.buttonBox->button(QDialogButtonBox::Apply), SIGNAL(clicked()), SLOT(onApplyButtonClick()));  	connect(ui_.buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), SLOT(onCancelButtonClick()));  	connect(ui_.buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), SLOT(onOkButtonClick())); +	connect(ui_.buttonBox->button(QDialogButtonBox::RestoreDefaults), SIGNAL(clicked()), SLOT(onResetToDefaultRulesClicked()));  	connect(ui_.noColorRadio, SIGNAL(clicked()), SLOT(colorOtherSelect()));  	connect(ui_.customColorRadio, SIGNAL(clicked()), SLOT(colorCustomSelect())); @@ -122,6 +123,8 @@ void QtHighlightEditor::show()  		selectRow(0);  	} +	updateResetToDefaultRulesVisibility(); +  	/* prepare default states */  	widgetClick(); @@ -246,6 +249,8 @@ void QtHighlightEditor::onCurrentRowChanged(int currentRow)  	}  	previousRow_ = currentRow; + +	updateResetToDefaultRulesVisibility();  }  void QtHighlightEditor::onApplyButtonClick() @@ -350,6 +355,12 @@ void QtHighlightEditor::selectSoundFile()  	ui_.soundFile->setText(path);  } +void QtHighlightEditor::onResetToDefaultRulesClicked() { +	highlightManager_->resetToDefaultRulesList(); +	populateList(); +	updateResetToDefaultRulesVisibility(); +} +  void QtHighlightEditor::handleOnUserSelected(const Contact::ref& contact) {  	/* this might seem like it should be standard behaviour for the suggesting input box, but is not desirable in all cases */  	if (contact->jid.isValid()) { @@ -539,4 +550,8 @@ void QtHighlightEditor::ruleToDialog(const HighlightRule& rule)  	setChildWidgetStates();  } +void QtHighlightEditor::updateResetToDefaultRulesVisibility() { +	ui_.buttonBox->button(QDialogButtonBox::RestoreDefaults)->setVisible(!highlightManager_->isDefaultRulesList()); +} +  } diff --git a/Swift/QtUI/QtHighlightEditor.h b/Swift/QtUI/QtHighlightEditor.h index ad51820..bcceb72 100644 --- a/Swift/QtUI/QtHighlightEditor.h +++ b/Swift/QtUI/QtHighlightEditor.h @@ -5,7 +5,7 @@   */  /* - * Copyright (c) 2014 Isode Limited. + * Copyright (c) 2014-2015 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -51,6 +51,7 @@ namespace Swift {  			void disableDialog();  			void handleContactSuggestionRequested(const QString& text);  			void selectSoundFile(); +			void onResetToDefaultRulesClicked();  		private:  			void handleOnUserSelected(const Contact::ref& contact); @@ -59,6 +60,7 @@ namespace Swift {  			int getSelectedRow() const;  			HighlightRule ruleFromDialog();  			void ruleToDialog(const HighlightRule& rule); +			void updateResetToDefaultRulesVisibility();  			Ui::QtHighlightEditor ui_;  			QtSettingsProvider* settings_; diff --git a/Swift/QtUI/QtHighlightEditor.ui b/Swift/QtUI/QtHighlightEditor.ui index 775771f..6d2338d 100644 --- a/Swift/QtUI/QtHighlightEditor.ui +++ b/Swift/QtUI/QtHighlightEditor.ui @@ -444,22 +444,9 @@     <item>      <layout class="QHBoxLayout" name="horizontalLayout_9">       <item> -      <spacer name="horizontalSpacer_4"> -       <property name="orientation"> -        <enum>Qt::Horizontal</enum> -       </property> -       <property name="sizeHint" stdset="0"> -        <size> -         <width>40</width> -         <height>20</height> -        </size> -       </property> -      </spacer> -     </item> -     <item>        <widget class="QDialogButtonBox" name="buttonBox">         <property name="standardButtons"> -        <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> +        <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::RestoreDefaults</set>         </property>        </widget>       </item> | 
 Swift
 Swift