blob: 31494bac8a4ca171885285e039e33575711d6349 [file] [log] [blame]
// Copyright (C) 2008 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.reviewdb.client;
import com.google.gwtorm.client.Column;
/** Preferences about a single user. */
public final class AccountGeneralPreferences {
/** Default number of items to display per page. */
public static final short DEFAULT_PAGESIZE = 25;
/** Valid choices for the page size. */
public static final short[] PAGESIZE_CHOICES = {10, 25, 50, 100};
/** Preferred scheme type to download a change. */
public static enum DownloadScheme {
ANON_GIT, ANON_HTTP, HTTP, SSH, REPO_DOWNLOAD, DEFAULT_DOWNLOADS
}
/** Preferred method to download a change. */
public static enum DownloadCommand {
REPO_DOWNLOAD, PULL, CHECKOUT, CHERRY_PICK, FORMAT_PATCH, DEFAULT_DOWNLOADS
}
public static enum DateFormat {
/** US style dates: Apr 27, Feb 14, 2010 */
STD("MMM d", "MMM d, yyyy"),
/** US style dates: 04/27, 02/14/10 */
US("MM/dd", "MM/dd/yy"),
/** ISO style dates: 2010-02-14 */
ISO("MM-dd", "yyyy-MM-dd"),
/** European style dates: 27. Apr, 27.04.2010 */
EURO("d. MMM", "dd.MM.yyyy"),
/** UK style dates: 27/04, 27/04/2010 */
UK("dd/MM", "dd/MM/yyyy");
private final String shortFormat;
private final String longFormat;
DateFormat(String shortFormat, String longFormat) {
this.shortFormat = shortFormat;
this.longFormat = longFormat;
}
public String getShortFormat() {
return shortFormat;
}
public String getLongFormat() {
return longFormat;
}
}
public static enum ReviewCategoryStrategy {
NONE,
NAME,
EMAIL,
USERNAME,
ABBREV
}
public static enum DiffView {
SIDE_BY_SIDE,
UNIFIED_DIFF
}
public static enum TimeFormat {
/** 12-hour clock: 1:15 am, 2:13 pm */
HHMM_12("h:mm a"),
/** 24-hour clock: 01:15, 14:13 */
HHMM_24("HH:mm");
private final String format;
TimeFormat(String format) {
this.format = format;
}
public String getFormat() {
return format;
}
}
public static AccountGeneralPreferences createDefault() {
AccountGeneralPreferences p = new AccountGeneralPreferences();
p.resetToDefaults();
return p;
}
/** Number of changes to show in a screen. */
@Column(id = 2)
protected short maximumPageSize;
/** Should the site header be displayed when logged in ? */
@Column(id = 3)
protected boolean showSiteHeader;
/** Should the Flash helper movie be used to copy text to the clipboard? */
@Column(id = 4)
protected boolean useFlashClipboard;
/** Type of download URL the user prefers to use. */
@Column(id = 5, length = 20, notNull = false)
protected String downloadUrl;
/** Type of download command the user prefers to use. */
@Column(id = 6, length = 20, notNull = false)
protected String downloadCommand;
/** If true we CC the user on their own changes. */
@Column(id = 7)
protected boolean copySelfOnEmail;
@Column(id = 8, length = 10, notNull = false)
protected String dateFormat;
@Column(id = 9, length = 10, notNull = false)
protected String timeFormat;
// DELETED: id = 10 (reversePatchSetOrder)
// DELETED: id = 11 (showUserInReview)
@Column(id = 12)
protected boolean relativeDateInChangeTable;
// DELETED: id = 13 (commentVisibilityStrategy)
@Column(id = 14, length = 20, notNull = false)
protected String diffView;
// DELETED: id = 15 (changeScreen)
@Column(id = 16)
protected boolean sizeBarInChangeTable;
@Column(id = 17)
protected boolean legacycidInChangeTable;
@Column(id = 18, length = 20, notNull = false)
protected String reviewCategoryStrategy;
@Column(id = 19)
protected boolean muteCommonPathPrefixes;
public AccountGeneralPreferences() {
}
public short getMaximumPageSize() {
return maximumPageSize;
}
public void setMaximumPageSize(final short s) {
maximumPageSize = s;
}
public boolean isShowSiteHeader() {
return showSiteHeader;
}
public void setShowSiteHeader(final boolean b) {
showSiteHeader = b;
}
public boolean isUseFlashClipboard() {
return useFlashClipboard;
}
public void setUseFlashClipboard(final boolean b) {
useFlashClipboard = b;
}
public DownloadScheme getDownloadUrl() {
if (downloadUrl == null) {
return null;
}
return DownloadScheme.valueOf(downloadUrl);
}
public void setDownloadUrl(DownloadScheme url) {
if (url != null) {
downloadUrl = url.name();
} else {
downloadUrl = null;
}
}
public DownloadCommand getDownloadCommand() {
if (downloadCommand == null) {
return null;
}
return DownloadCommand.valueOf(downloadCommand);
}
public void setDownloadCommand(DownloadCommand cmd) {
if (cmd != null) {
downloadCommand = cmd.name();
} else {
downloadCommand = null;
}
}
public boolean isCopySelfOnEmails() {
return copySelfOnEmail;
}
public void setCopySelfOnEmails(boolean includeSelfOnEmail) {
copySelfOnEmail = includeSelfOnEmail;
}
public boolean isShowInfoInReviewCategory() {
return getReviewCategoryStrategy() != ReviewCategoryStrategy.NONE;
}
public DateFormat getDateFormat() {
if (dateFormat == null) {
return DateFormat.STD;
}
return DateFormat.valueOf(dateFormat);
}
public void setDateFormat(DateFormat fmt) {
dateFormat = fmt.name();
}
public TimeFormat getTimeFormat() {
if (timeFormat == null) {
return TimeFormat.HHMM_12;
}
return TimeFormat.valueOf(timeFormat);
}
public void setTimeFormat(TimeFormat fmt) {
timeFormat = fmt.name();
}
public boolean isRelativeDateInChangeTable() {
return relativeDateInChangeTable;
}
public void setRelativeDateInChangeTable(final boolean relativeDateInChangeTable) {
this.relativeDateInChangeTable = relativeDateInChangeTable;
}
public ReviewCategoryStrategy getReviewCategoryStrategy() {
if (reviewCategoryStrategy == null) {
return ReviewCategoryStrategy.NONE;
}
return ReviewCategoryStrategy.valueOf(reviewCategoryStrategy);
}
public void setReviewCategoryStrategy(
ReviewCategoryStrategy strategy) {
reviewCategoryStrategy = strategy.name();
}
public DiffView getDiffView() {
if (diffView == null) {
return DiffView.SIDE_BY_SIDE;
}
return DiffView.valueOf(diffView);
}
public void setDiffView(DiffView diffView) {
this.diffView = diffView.name();
}
public boolean isSizeBarInChangeTable() {
return sizeBarInChangeTable;
}
public void setSizeBarInChangeTable(boolean sizeBarInChangeTable) {
this.sizeBarInChangeTable = sizeBarInChangeTable;
}
public boolean isLegacycidInChangeTable() {
return legacycidInChangeTable;
}
public void setLegacycidInChangeTable(boolean legacycidInChangeTable) {
this.legacycidInChangeTable = legacycidInChangeTable;
}
public boolean isMuteCommonPathPrefixes() {
return muteCommonPathPrefixes;
}
public void setMuteCommonPathPrefixes(
boolean muteCommonPathPrefixes) {
this.muteCommonPathPrefixes = muteCommonPathPrefixes;
}
public void resetToDefaults() {
maximumPageSize = DEFAULT_PAGESIZE;
showSiteHeader = true;
useFlashClipboard = true;
copySelfOnEmail = false;
reviewCategoryStrategy = null;
downloadUrl = null;
downloadCommand = null;
dateFormat = null;
timeFormat = null;
relativeDateInChangeTable = false;
diffView = null;
sizeBarInChangeTable = true;
legacycidInChangeTable = false;
muteCommonPathPrefixes = true;
}
}