initial commit
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package at.windesign.application.serie;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Objects;
|
||||
import java.util.SortedMap;
|
||||
|
||||
class serie
|
||||
@@ -16,12 +18,15 @@ class serie
|
||||
private SortedMap<Integer, Integer> m_episodeState;
|
||||
private int m_minSeason;
|
||||
private int m_maxSeason;
|
||||
private int m_stateInit;
|
||||
private int m_stateProg;
|
||||
private int m_stateDone;
|
||||
|
||||
public serie()
|
||||
{
|
||||
}
|
||||
|
||||
public serie(int seriesID, String seriesName, int seriesFirstAired, String seriesResolution, boolean seriesCliffhanger, String seriesStatus, String seriesDownload, String seriesPoster, String seriesBackdrop, SortedMap<Integer, Integer> episodeState, int minSeason, int maxSeason)
|
||||
public serie(int seriesID, String seriesName, int seriesFirstAired, String seriesResolution, boolean seriesCliffhanger, String seriesStatus, String seriesDownload, String seriesPoster, String seriesBackdrop, SortedMap<Integer, Integer> episodeState, int minSeason, int maxSeason, int stateInit, int stateProg, int stateDone)
|
||||
{
|
||||
m_seriesID = seriesID;
|
||||
m_seriesName = seriesName;
|
||||
@@ -35,6 +40,9 @@ class serie
|
||||
m_episodeState = episodeState;
|
||||
m_minSeason = minSeason;
|
||||
m_maxSeason = maxSeason;
|
||||
m_stateInit = stateInit;
|
||||
m_stateProg = stateProg;
|
||||
m_stateDone = stateDone;
|
||||
}
|
||||
|
||||
public int getSeriesID()
|
||||
@@ -156,4 +164,58 @@ class serie
|
||||
{
|
||||
m_maxSeason = maxSeason;
|
||||
}
|
||||
|
||||
public int getStateInit()
|
||||
{
|
||||
return m_stateInit;
|
||||
}
|
||||
|
||||
public void setStateInit(int stateInit)
|
||||
{
|
||||
m_stateInit = stateInit;
|
||||
}
|
||||
|
||||
public int getStateProg()
|
||||
{
|
||||
return m_stateProg;
|
||||
}
|
||||
|
||||
public void setStateProg(int stateProg)
|
||||
{
|
||||
m_stateProg = stateProg;
|
||||
}
|
||||
|
||||
public int getStateDone()
|
||||
{
|
||||
return m_stateDone;
|
||||
}
|
||||
|
||||
public void setStateDone(int stateDone)
|
||||
{
|
||||
m_stateDone = stateDone;
|
||||
}
|
||||
|
||||
public String getSeriesStyle()
|
||||
{
|
||||
String style = "";
|
||||
|
||||
if(m_seriesCliffhanger)
|
||||
style = style + "font-style: italic; ";
|
||||
|
||||
if(Objects.equals(m_seriesStatus, "Returning Series"))
|
||||
style = style + "font-weight: bold; ";
|
||||
|
||||
String color = "";
|
||||
|
||||
if(m_stateProg > 0)
|
||||
color = "background-color: #0000C0; color: #FFFFFF";
|
||||
else if(m_stateInit > 0)
|
||||
color = "background-color: #C0C0C0;";
|
||||
else if(m_stateDone > 0)
|
||||
color = "background-color: #00C000;";
|
||||
|
||||
style += color;
|
||||
|
||||
return style;
|
||||
}
|
||||
}
|
||||
@@ -9,16 +9,17 @@ import org.zkoss.zul.Label;
|
||||
import org.zkoss.zul.Window;
|
||||
|
||||
import java.net.URL;
|
||||
import java.sql.SQLException;
|
||||
|
||||
public class serieDetailsForwardComposer extends GenericForwardComposer<Component>
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Wire
|
||||
private Window resultWin;
|
||||
private Window detailsSerie;
|
||||
|
||||
@Wire
|
||||
protected Label title;
|
||||
protected Label seriesName;
|
||||
|
||||
private serie m_serie;
|
||||
|
||||
@@ -27,41 +28,53 @@ public class serieDetailsForwardComposer extends GenericForwardComposer<Componen
|
||||
{
|
||||
super.doAfterCompose(comp);
|
||||
|
||||
int hD = (int)self.getDesktop().getAttribute("desktopHeight");
|
||||
int wD = (int)self.getDesktop().getAttribute("desktopWidth");
|
||||
|
||||
resultWin.setWidth(wD - 10 + "px");
|
||||
resultWin.setHeight(hD - 10 + "px");
|
||||
|
||||
if(arg.containsKey("serie"))
|
||||
m_serie = (serie) arg.get("serie");
|
||||
else
|
||||
resultWin.detach();
|
||||
|
||||
String uri = "http://image.tmdb.org/t/p/original" + m_serie.getSeriesBackdrop();
|
||||
URL url = new URL(uri);
|
||||
AImage img = new AImage(url);
|
||||
|
||||
int w = Integer.parseInt(resultWin.getWidth().replace("px", ""));
|
||||
int h = Integer.parseInt(resultWin.getHeight().replace("px", ""));
|
||||
int wI = img.getWidth();
|
||||
int hI = img.getHeight();
|
||||
int wR = w;
|
||||
int hR = hI*w/wI;
|
||||
|
||||
if(hR < h)
|
||||
try
|
||||
{
|
||||
hR = h;
|
||||
wR = wI*h/hI;
|
||||
}
|
||||
int hD = (int) self.getDesktop().getAttribute("desktopHeight");
|
||||
int wD = (int) self.getDesktop().getAttribute("desktopWidth");
|
||||
|
||||
String size = String.valueOf(wR) + "px " + String.valueOf(hR) + "px";
|
||||
String format = "background:url('%1$s') no-repeat center center fixed; -webkit-background-size: " + size + "; -moz-background-size: \" + size + \"; -o-background-size: \" + size + \"; background-size: \" + size + \";";
|
||||
String style = String.format(format, uri);
|
||||
resultWin.setContentStyle(style);
|
||||
// resultWin.setTitle(m_serie.getSeriesName());
|
||||
// resultWin.setTitle(resultWin.getWidth() + " x " + resultWin.getHeight());
|
||||
// resultWin.setTitle(m_serie.getParentWidth() + " x " + m_serie.getParentHeight());
|
||||
// resultWin.setTitle(wD + " x " + hD);
|
||||
detailsSerie.setWidth(wD - 10 + "px");
|
||||
detailsSerie.setHeight(hD - 10 + "px");
|
||||
|
||||
if(arg.containsKey("serie"))
|
||||
m_serie = (serie) arg.get("serie");
|
||||
else
|
||||
detailsSerie.detach();
|
||||
|
||||
if(m_serie.getSeriesBackdrop() != null)
|
||||
{
|
||||
String uri = "http://image.tmdb.org/t/p/original" + m_serie.getSeriesBackdrop();
|
||||
URL url = new URL(uri);
|
||||
AImage img = new AImage(url);
|
||||
|
||||
int w = Integer.parseInt(detailsSerie.getWidth().replace("px", ""));
|
||||
int h = Integer.parseInt(detailsSerie.getHeight().replace("px", ""));
|
||||
int wI = img.getWidth();
|
||||
int hI = img.getHeight();
|
||||
int wR = w;
|
||||
int hR = hI * w / wI;
|
||||
|
||||
if(hR < h)
|
||||
{
|
||||
hR = h;
|
||||
wR = wI * h / hI;
|
||||
}
|
||||
|
||||
String size = String.valueOf(wR) + "px " + String.valueOf(hR) + "px";
|
||||
String format = "background:url('%1$s') no-repeat center center fixed; -webkit-background-size: " + size + "; -moz-background-size: \" + size + \"; -o-background-size: \" + size + \"; background-size: \" + size + \";";
|
||||
String style = String.format(format, uri);
|
||||
detailsSerie.setContentStyle(style);
|
||||
}
|
||||
|
||||
detailsSerie.setTitle(m_serie.getSeriesName() + " (" + m_serie.getSeriesFirstAired() + ")");
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
detailsSerie.detach();
|
||||
e.printStackTrace();
|
||||
}
|
||||
finally
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ public class serieDetailsSelectorComposer extends SelectorComposer<Component>
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Wire
|
||||
private Window resultWin;
|
||||
private Window detailsSerie;
|
||||
|
||||
@Wire
|
||||
protected Label title;
|
||||
@@ -22,18 +22,18 @@ public class serieDetailsSelectorComposer extends SelectorComposer<Component>
|
||||
@Listen("onClick = #saveButton")
|
||||
public void save()
|
||||
{
|
||||
resultWin.onClose();
|
||||
detailsSerie.onClose();
|
||||
}
|
||||
|
||||
@Listen("onClick = #cancelButton")
|
||||
public void cancel()
|
||||
{
|
||||
resultWin.onClose();
|
||||
detailsSerie.onClose();
|
||||
}
|
||||
|
||||
@Listen("onClick = #deleteButton")
|
||||
public void delete()
|
||||
{
|
||||
resultWin.onClose();
|
||||
detailsSerie.onClose();
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,9 @@ public class serieListForwardComposer extends GenericForwardComposer
|
||||
private ListModelList seriesListModel; // the model of the listbox
|
||||
private serieRenderer renderer;
|
||||
|
||||
private Integer stateWidth = 4;
|
||||
private Integer stateHeight = 20;
|
||||
|
||||
private final serieDataSource ds = serieDataSource.INSTANCE;
|
||||
|
||||
@Override
|
||||
@@ -24,8 +27,10 @@ public class serieListForwardComposer extends GenericForwardComposer
|
||||
{
|
||||
super.doAfterCompose(comp);
|
||||
|
||||
int minSeason = 0;
|
||||
int maxSeason = 0;
|
||||
int minSeason = 0;
|
||||
int maxSeason = 0;
|
||||
SortedMap<Integer, Integer> maxEpisode = new TreeMap<>();
|
||||
SortedMap<Integer, Listheader> listHeader = new TreeMap<>();
|
||||
|
||||
try
|
||||
{
|
||||
@@ -41,7 +46,8 @@ public class serieListForwardComposer extends GenericForwardComposer
|
||||
minSeason = rs.getInt("minSeason");
|
||||
maxSeason = rs.getInt("maxSeason");
|
||||
}
|
||||
} catch(SQLException e)
|
||||
}
|
||||
catch(SQLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -68,8 +74,10 @@ public class serieListForwardComposer extends GenericForwardComposer
|
||||
for(int i = minSeason; i <= maxSeason; i++)
|
||||
{
|
||||
Listheader seasonHeader = new Listheader("Season " + i);
|
||||
seasonHeader.setHflex("min");
|
||||
// seasonHeader.setHflex("min");
|
||||
head.appendChild(seasonHeader);
|
||||
maxEpisode.put(i, 0);
|
||||
listHeader.put(i, seasonHeader);
|
||||
}
|
||||
|
||||
renderer = new serieRenderer();
|
||||
@@ -107,6 +115,9 @@ public class serieListForwardComposer extends GenericForwardComposer
|
||||
// fetch all events from database
|
||||
serie serie = new serie();
|
||||
int oldID = -1;
|
||||
int stateInit = 0;
|
||||
int stateProg = 0;
|
||||
int stateDone = 0;
|
||||
SortedMap<Integer, Integer> episodeState = new TreeMap<>();
|
||||
|
||||
serie.setSeriesID(-1);
|
||||
@@ -118,8 +129,15 @@ public class serieListForwardComposer extends GenericForwardComposer
|
||||
if(oldID != -1)
|
||||
{
|
||||
serie.setEpisodeState(episodeState);
|
||||
serie.setStateInit(stateInit);
|
||||
serie.setStateProg(stateProg);
|
||||
serie.setStateDone(stateDone);
|
||||
|
||||
seriesListModel.add(serie);
|
||||
episodeState = new TreeMap<>();
|
||||
stateInit = 0;
|
||||
stateProg = 0;
|
||||
stateDone = 0;
|
||||
}
|
||||
|
||||
oldID = rs.getInt("seriesID");
|
||||
@@ -138,18 +156,49 @@ public class serieListForwardComposer extends GenericForwardComposer
|
||||
serie.setMaxSeason(rs.getInt("maxSeason"));
|
||||
}
|
||||
episodeState.put((rs.getInt("seasonNumber") << 8) + rs.getInt("episodeNumber"), rs.getInt("episodeState"));
|
||||
|
||||
switch(rs.getInt("episodeState"))
|
||||
{
|
||||
case 1:
|
||||
stateInit++;
|
||||
break;
|
||||
case 2:
|
||||
stateProg++;
|
||||
break;
|
||||
case 3:
|
||||
stateDone++;
|
||||
break;
|
||||
}
|
||||
int _seasonNumber = rs.getInt("seasonNumber");
|
||||
int _episodeNumber = rs.getInt("episodeNumber");
|
||||
|
||||
if(_seasonNumber != 0)
|
||||
{
|
||||
if(maxEpisode.get(_seasonNumber) < _episodeNumber)
|
||||
maxEpisode.put(_seasonNumber, _episodeNumber);
|
||||
}
|
||||
}
|
||||
if(serie.getSeriesID() != -1)
|
||||
{
|
||||
serie.setEpisodeState(episodeState);
|
||||
serie.setStateInit(stateInit);
|
||||
serie.setStateProg(stateProg);
|
||||
serie.setStateDone(stateDone);
|
||||
seriesListModel.add(serie);
|
||||
}
|
||||
} catch(
|
||||
SQLException e)
|
||||
|
||||
for(int i = minSeason; i <= maxSeason; i++)
|
||||
{
|
||||
int size = maxEpisode.get(i) * stateWidth;
|
||||
Listheader header = listHeader.get(i);
|
||||
header.setWidth(size + 40 + "px");
|
||||
}
|
||||
}
|
||||
catch(SQLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
} finally
|
||||
}
|
||||
finally
|
||||
{
|
||||
ds.close();
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ public class serieRenderer implements ListitemRenderer
|
||||
Listcell seriesFirstAiredCell = new Listcell(String.valueOf(data.getSeriesFirstAired()));
|
||||
Listcell seriesResolution = new Listcell(data.getSeriesResolution());
|
||||
|
||||
seriesNameCell.setStyle(data.getSeriesStyle());
|
||||
seriesNameCell.setParent(item);
|
||||
seriesFirstAiredCell.setParent(item);
|
||||
seriesResolution.setParent(item);
|
||||
@@ -33,6 +34,7 @@ public class serieRenderer implements ListitemRenderer
|
||||
Listcell imageCell = new Listcell();
|
||||
imageCell.setImageContent(Images.encode("bla.png", getStateImage(s, data.getEpisodeState())));
|
||||
imageCell.setParent(item);
|
||||
imageCell.setTooltiptext(getStateText(s, data.getEpisodeState()));
|
||||
}
|
||||
|
||||
item.setValue(data);
|
||||
@@ -101,4 +103,64 @@ public class serieRenderer implements ListitemRenderer
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
private String getStateText(Integer curSeason, SortedMap<Integer, Integer> state)
|
||||
{
|
||||
int season = -1;
|
||||
int episode = -1;
|
||||
SortedMap<Integer, Integer> seasonState = new TreeMap<>();
|
||||
|
||||
for(int key : state.keySet())
|
||||
{
|
||||
season = key >> 8;
|
||||
episode = key & 0xFF;
|
||||
|
||||
if(season == curSeason)
|
||||
seasonState.put(episode, state.get(key));
|
||||
else if(season > curSeason)
|
||||
break;
|
||||
}
|
||||
|
||||
if(seasonState.size() == 0)
|
||||
return "";
|
||||
|
||||
String stateInit = "";
|
||||
String stateProg = "";
|
||||
String stateDone = "";
|
||||
|
||||
for(Integer key : seasonState.keySet())
|
||||
{
|
||||
switch(seasonState.get(key))
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
if(stateInit != "")
|
||||
stateInit = stateInit + ", ";
|
||||
stateInit = stateInit + key;
|
||||
break;
|
||||
case 2:
|
||||
if(stateProg != "")
|
||||
stateProg = stateProg + ", ";
|
||||
stateProg = stateProg + key;
|
||||
break;
|
||||
case 3:
|
||||
if(stateDone != "")
|
||||
stateDone = stateDone + ", ";
|
||||
stateDone = stateDone + key;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(stateInit == "")
|
||||
stateInit = "none";
|
||||
|
||||
if(stateProg == "")
|
||||
stateProg = "none";
|
||||
|
||||
if(stateDone == "")
|
||||
stateDone = "none";
|
||||
|
||||
return "Init: " + stateInit + "\nProgress: " + stateProg + "\nDone: " + stateDone;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user