[kune-commits] r1661 - in trunk/src/main/java/cc/kune: core/client/state/impl gspace/client/options/general
Vicente J. Ruiz Jurado
vjrj_ at ourproject.org
Thu Jan 12 15:45:37 CET 2012
Author: vjrj_
Date: 2012-01-12 15:45:36 +0100 (Thu, 12 Jan 2012)
New Revision: 1661
Modified:
trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralView.java
Log:
CLOSED - # 185: Implement email notification levels (hourly and daily) similar to Google Wave
http://kune.ourproject.org/issues/ticket/185
Modified: trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java 2012-01-12 14:05:46 UTC (rev 1660)
+++ trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java 2012-01-12 14:45:36 UTC (rev 1661)
@@ -258,7 +258,9 @@
if (!isLogged()) {
return false;
}
- if (getCurrentStateToken().getGroup().equals(getCurrentUser().getShortName())) {
+ final StateToken currentStateToken = getCurrentStateToken();
+ if (currentStateToken != null
+ && currentStateToken.getGroup().equals(getCurrentUser().getShortName())) {
return true;
}
return false;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java 2012-01-12 14:05:46 UTC (rev 1660)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPanel.java 2012-01-12 14:45:36 UTC (rev 1661)
@@ -20,26 +20,37 @@
package cc.kune.gspace.client.options.general;
import cc.kune.common.client.ui.MaskWidget;
-import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.auth.UserFieldFactory;
+import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.ui.DefaultFormUtils;
+import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.gspace.client.i18n.LanguageSelectorPanel;
-import com.extjs.gxt.ui.client.widget.form.CheckBox;
+import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
+import com.extjs.gxt.ui.client.widget.form.Radio;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.google.inject.Inject;
public class UserOptGeneralPanel extends EntityOptGeneralPanel implements UserOptGeneralView {
+ public static final String DAILY_TYPE_ID = "k-ngp-type_daily";
+ public static final String HOURLY_TYPE_ID = "k-ngp-type_hourly";
+ public static final String IMMEDIATE_TYPE_ID = "k-ngp-type_immedi";
private static final String LONG_NAME_FIELD = "k-uogp-lname";
- private final CheckBox emailNotifField;
+ public static final String NO_TYPE_ID = "k-ngp-type_no";
+ public static final String TYPEOFEMAILNOTIF_FIELD = "k-ngp-type_of_email_notif";
+ private final Radio dailyRadio;
+ private final Radio hourlyRadio;
+ private final Radio immediateRadio;
private final LanguageSelectorPanel langSelector;
private final TextField<String> longName;
+ private final Radio noRadio;
@Inject
- public UserOptGeneralPanel(final I18nTranslationService i18n, final CoreResources res,
+ public UserOptGeneralPanel(final I18nUITranslationService i18n, final CoreResources res,
final MaskWidget maskWidget, final LanguageSelectorPanel langSelector,
final UserFieldFactory userFieldFactory) {
super(maskWidget, res.emblemSystem(), i18n.t("General"), i18n.t("Change this values:"));
@@ -50,12 +61,63 @@
langSelector.setLabelAlign(LabelAlign.LEFT);
langSelector.setLangSeparator(":");
add(langSelector);
- emailNotifField = new CheckBox();
- emailNotifField.setFieldLabel(i18n.t("Email notifications"));
- add(emailNotifField);
+
+ final FieldSet emailNotifTypeFieldSet = new FieldSet();
+ emailNotifTypeFieldSet.setHeading(i18n.t("How often do you want to receive email notifications?"));
+ emailNotifTypeFieldSet.addStyleName("k-form-fieldset");
+ emailNotifTypeFieldSet.setCollapsible(false);
+ emailNotifTypeFieldSet.setWidth("310px");
+ emailNotifTypeFieldSet.setAutoHeight(true);
+
+ immediateRadio = DefaultFormUtils.createRadio(emailNotifTypeFieldSet, i18n.t("almost immediately"),
+ TYPEOFEMAILNOTIF_FIELD, i18n.t(
+ "you will receive an email with any new messages in your inbox at [%s] almost immediately",
+ i18n.getSiteCommonName()), IMMEDIATE_TYPE_ID);
+ immediateRadio.setTabIndex(3);
+ immediateRadio.setValue(true);
+
+ hourlyRadio = DefaultFormUtils.createRadio(emailNotifTypeFieldSet, i18n.t("at most hourly"),
+ TYPEOFEMAILNOTIF_FIELD, i18n.t(
+ "you will receive an email with any new messages in your inbox at [%s] at most hourly",
+ i18n.getSiteCommonName()), HOURLY_TYPE_ID);
+ hourlyRadio.setTabIndex(4);
+ hourlyRadio.setValue(false);
+
+ dailyRadio = DefaultFormUtils.createRadio(emailNotifTypeFieldSet, i18n.t("at most daily"),
+ TYPEOFEMAILNOTIF_FIELD, i18n.t(
+ "you will receive an email with any new messages in your inbox at [%s] at most daily",
+ i18n.getSiteCommonName()), DAILY_TYPE_ID);
+ dailyRadio.setTabIndex(5);
+ dailyRadio.setValue(false);
+
+ noRadio = DefaultFormUtils.createRadio(
+ emailNotifTypeFieldSet,
+ i18n.t("I don't need email notifications"),
+ TYPEOFEMAILNOTIF_FIELD,
+ i18n.t("you will no receive an email with any new messages in your inbox at [%s]",
+ i18n.getSiteCommonName()), NO_TYPE_ID);
+ noRadio.setTabIndex(6);
+ noRadio.setValue(false);
+
+ add(emailNotifTypeFieldSet);
}
@Override
+ public EmailNotificationFrequency getEmailNotif() {
+ if (immediateRadio.getValue()) {
+ return EmailNotificationFrequency.immediately;
+ }
+ if (hourlyRadio.getValue()) {
+ return EmailNotificationFrequency.hourly;
+ }
+ if (dailyRadio.getValue()) {
+ return EmailNotificationFrequency.daily;
+ }
+ // if (noRadio.getValue())
+ return EmailNotificationFrequency.no;
+ }
+
+ @Override
public I18nLanguageSimpleDTO getLanguage() {
return langSelector.getLanguage();
}
@@ -65,14 +127,24 @@
return longName.getValue();
}
- public boolean isEmailNofifField() {
- return emailNotifField.getValue();
+ @Override
+ public void setEmailNotifChecked(final EmailNotificationFrequency freq) {
+ switch (freq) {
+ case no:
+ noRadio.setValue(true);
+ break;
+ case hourly:
+ hourlyRadio.setValue(true);
+ break;
+ case daily:
+ dailyRadio.setValue(true);
+ break;
+ case immediately:
+ immediateRadio.setValue(true);
+ break;
+ }
}
- public void setEmailNofifField(final boolean value) {
- emailNotifField.setValue(value);
- }
-
@Override
public void setLanguage(final I18nLanguageSimpleDTO language) {
langSelector.setLanguage(language);
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2012-01-12 14:05:46 UTC (rev 1660)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2012-01-12 14:45:36 UTC (rev 1661)
@@ -28,7 +28,6 @@
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.core.shared.dto.UserDTO;
@@ -75,8 +74,7 @@
final UserSimpleDTO currentUser = session.getCurrentUser();
userView.setLongName(currentUser.getName());
userView.setLanguage(I18nLanguageSimpleDTO.create(currentUser.getLanguage()));
- userView.setEmailNofifField(currentUser.getEmailNotifFreq().equals(
- EmailNotificationFrequency.immediately));
+ userView.setEmailNotifChecked(currentUser.getEmailNotifFreq());
}
@Override
@@ -89,8 +87,7 @@
final String longName = userView.getLongName();
user.setName(longName);
final I18nLanguageSimpleDTO lang = userView.getLanguage();
- user.setEmailNotifFreq(userView.isEmailNofifField() ? EmailNotificationFrequency.immediately
- : EmailNotificationFrequency.no);
+ user.setEmailNotifFreq(userView.getEmailNotif());
userService.get().updateUser(session.getUserHash(), user, userView.getLanguage(),
new AsyncCallbackSimple<StateAbstractDTO>() {
@Override
@@ -110,8 +107,7 @@
}
});
};
- }
- );
+ });
}
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralView.java 2012-01-12 14:05:46 UTC (rev 1660)
+++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralView.java 2012-01-12 14:45:36 UTC (rev 1661)
@@ -19,19 +19,21 @@
*/
package cc.kune.gspace.client.options.general;
+import cc.kune.core.shared.domain.dto.EmailNotificationFrequency;
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
public interface UserOptGeneralView extends EntityOptGeneralView {
+ EmailNotificationFrequency getEmailNotif();
+
I18nLanguageSimpleDTO getLanguage();
String getLongName();
- boolean isEmailNofifField();
+ void setEmailNotifChecked(EmailNotificationFrequency freq);
- void setEmailNofifField(boolean value);
-
void setLanguage(I18nLanguageSimpleDTO language);
void setLongName(String longName);
+
}
More information about the kune-commits
mailing list