initial commit
This commit is contained in:
Generated
+22
@@ -0,0 +1,22 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<JetCodeStyleSettings>
|
||||
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
|
||||
<value>
|
||||
<package name="java.util" alias="false" withSubpackages="false" />
|
||||
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
|
||||
<package name="io.ktor" alias="false" withSubpackages="true" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="PACKAGES_IMPORT_LAYOUT">
|
||||
<value>
|
||||
<package name="" alias="false" withSubpackages="true" />
|
||||
<package name="java" alias="false" withSubpackages="true" />
|
||||
<package name="javax" alias="false" withSubpackages="true" />
|
||||
<package name="kotlin" alias="false" withSubpackages="true" />
|
||||
<package name="" alias="true" withSubpackages="true" />
|
||||
</value>
|
||||
</option>
|
||||
</JetCodeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
||||
Generated
+5
@@ -0,0 +1,5 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
||||
</state>
|
||||
</component>
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -6,9 +6,10 @@
|
||||
multiple="true"
|
||||
autopaging="true"
|
||||
vflex="true">
|
||||
<listhead>
|
||||
<listhead sizable="true"
|
||||
>
|
||||
</listhead>
|
||||
<!-- https://stackoverflow.com/questions/28629458/display-image-from-db-on-zk-zul-listbox-->
|
||||
<!-- https://www.zkoss.org/zksandbox/#u6-->
|
||||
<!-- https://stackoverflow.com/questions/28629458/display-image-from-db-on-zk-zul-listbox-->
|
||||
<!-- https://www.zkoss.org/zksandbox/#u6-->
|
||||
</listbox>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
<window id="resultWin"
|
||||
<window id="detailsSerie"
|
||||
title=""
|
||||
border="normal"
|
||||
apply="at.windesign.application.serie.serieDetailsForwardComposer, at.windesign.application.serie.serieDetailsSelectorComposer">
|
||||
<box orient="horizontal">
|
||||
<label value="" id="seriesName" zclass="z-window-header" />
|
||||
</box>
|
||||
<hbox width="100%" pack="center">
|
||||
<button id="saveButton" label="Save"/>
|
||||
<button id="cancelButton" label="Cancel"/>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,10 +1,8 @@
|
||||
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieDataSource.java
|
||||
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\main\mainSelectorComposer.java
|
||||
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\main\mainForwardComposer.java
|
||||
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieDetailsSelectorComposer.java
|
||||
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serie.java
|
||||
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieListSelectorComposer.java
|
||||
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieListForwardComposer.java
|
||||
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\main\OXMainLayoutVM.java
|
||||
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieDetailsForwardComposer.java
|
||||
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\main\indexForwardComposer.java
|
||||
C:\Users\birkeh\ownCloud\dev\IntelliJ\zk\multimedia\src\main\java\at\windesign\application\serie\serieRenderer.java
|
||||
|
||||
Reference in New Issue
Block a user