/*
This file is part of Subsonic.
Subsonic 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 3 of the License, or
(at your option) any later version.
Subsonic is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
Copyright 2009 (C) Sindre Mehus
*/
package net.sourceforge.subsonic.controller;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.ParameterizableViewController;
import net.sourceforge.subsonic.domain.MusicFolder;
import net.sourceforge.subsonic.domain.User;
import net.sourceforge.subsonic.domain.UserSettings;
import net.sourceforge.subsonic.service.SecurityService;
import net.sourceforge.subsonic.service.SettingsService;
import net.sourceforge.subsonic.service.VersionService;
/**
* Controller for the top frame.
*
* @author Sindre Mehus
*/
public class TopController extends ParameterizableViewController {
private SettingsService settingsService;
private VersionService versionService;
private SecurityService securityService;
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
List<MusicFolder> allMusicFolders = settingsService.getAllMusicFolders();
User user = securityService.getCurrentUser(request);
Date trialExpires = settingsService.getTrialExpires();
Date now = new Date();
boolean trialValid = trialExpires.after(now);
long trialDaysLeft = trialValid ? (trialExpires.getTime() - now.getTime()) / (24L * 3600L * 1000L) : 0L;
map.put("user", user);
map.put("musicFoldersExist", !allMusicFolders.isEmpty());
map.put("brand", settingsService.getBrand());
if (settingsService.isUsePremiumServices()) {
map.put("licensed", settingsService.isLicenseValid());
map.put("licenseInfo", settingsService.getLicenseInfo());
} else
{
map.put("licensed", true);
}
UserSettings userSettings = settingsService.getUserSettings(user.getUsername());
if (userSettings.isFinalVersionNotificationEnabled() && versionService.isNewFinalVersionAvailable()) {
map.put("newVersionAvailable", true);
map.put("latestVersion", versionService.getLatestFinalVersion());
} else if (userSettings.isBetaVersionNotificationEnabled() && versionService.isNewBetaVersionAvailable()) {
map.put("newVersionAvailable", true);
map.put("latestVersion", versionService.getLatestBetaVersion());
}
map.put("NotificationEnabled", userSettings.isBetaVersionNotificationEnabled() || userSettings.isFinalVersionNotificationEnabled());
if (user.isAdminRole()){
map.put("NotificationEnabled", true);
}
map.put("listType", userSettings.getListType());
map.put("listRows", userSettings.getListRows());
map.put("listColumns", userSettings.getListColumns());
map.put("showRight", userSettings.isShowNowPlayingEnabled() || userSettings.isShowChatEnabled());
map.put("leftframeSize", settingsService.getLeftframeSize());
map.put("showIconHome", settingsService.showIconHome());
map.put("showIconArtist", settingsService.showIconArtist());
map.put("showIconPlaying", settingsService.showIconPlaying());
map.put("showIconCover", settingsService.showIconCover());
map.put("showIconStarred", settingsService.showIconStarred());
map.put("showIconRadio", settingsService.showIconRadio());
try {
if (userSettings.getLastFmUsername().length() > 0) {
map.put("showIconLastFM", true);
}
} catch (Throwable ex) {
}
map.put("showIconPodcast", settingsService.showIconPodcast());
map.put("showIconSettings", settingsService.showIconSettings());
map.put("showIconStatus", settingsService.showIconStatus());
map.put("showIconSocial", settingsService.showIconSocial());
map.put("showIconHistory", settingsService.showIconHistory());
map.put("showIconStatistics", settingsService.showIconStatistics());
map.put("showIconPlaylists", settingsService.showIconPlaylists());
map.put("showIconPlaylistEditor", settingsService.showIconPlaylistEditor());
map.put("showIconMore", settingsService.showIconMore());
map.put("showIconGenre", settingsService.showIconGenre());
map.put("showIconMoods", settingsService.showIconMoods());
map.put("showIconAbout", settingsService.showIconAbout());
if (settingsService.showIconAdmins()){
// to default
} else {
map.put("showIconHome", true);
map.put("showIconArtist", true);
map.put("showIconPlaying", true);
map.put("showIconCover", true);
map.put("showIconStarred", true);
map.put("showIconRadio", true);
map.put("showIconPodcast", true);
map.put("showIconSettings", true);
map.put("showIconStatus", true);
map.put("showIconSocial", true);
map.put("showIconStatistics", true);
map.put("showIconPlaylists", true);
map.put("showIconPlaylistEditor", true);
map.put("showIconMore", true);
map.put("showIconGenre", false);
map.put("showIconMoods", true);
map.put("showIconAbout", false);
}
// if (user.isAdminRole()){
ModelAndView result = super.handleRequestInternal(request, response);
result.addObject("model", map);
return result;
}
public void setSettingsService(SettingsService settingsService) {
this.settingsService = settingsService;
}
public void setVersionService(VersionService versionService) {
this.versionService = versionService;
}
public void setSecurityService(SecurityService securityService) {
this.securityService = securityService;
}
}