initial commit

This commit is contained in:
2020-11-03 15:57:47 +01:00
parent 68d2127729
commit 68cd782a03
15 changed files with 271 additions and 56 deletions
+22
View File
@@ -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>
+5
View File
@@ -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;
}
}
+4 -3
View File
@@ -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>
+4 -1
View File
@@ -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"/>
@@ -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