Wii KnightQuest 0.2

The next version of KnightsQuest is released with the following changes.

31-03-2010 Version 0.2

  • GUI:
    • Update menu screen information.
  • Core:
    • Changed WiiMote idle timeout from 60 to 300 seconds.
    • Rewrite settings class (username is now one setting item)
    • Improve stability.
    • Use libfat 1.0.7 as disk access engine.
    • Use libogc 1.8.3 as Wii interface engine
  • General:
    • Make source code compliant with r21 compiler.
    • Build game with devkitPPC r21 compiler.

Download

Click here for more information and the download link.

Wii TowerDefense 0.95

PlaatSoft has released TowerDefense v0.95. The following changes were made:

31-03-2010 Version 0.95
GUI:
– Update menu screen information.
Core:
– WiiMote timeout increase from 60 to 300 seconds.
– Improve stability.
– Use libfat 1.0.7 as disk access engine.
– Use libogc 1.8.3 as Wii interface engine
General:
– Make source code compliant with r21 compiler.
– Build game with devkitPPC r21 compiler.

Download

Click here for more information and the download link.

Wii SpaceBubble 0.95

This evening SpaceBubble 0.95 is released by PlaatSoft. The following changes were made:

31-03-2010 Version 0.95
GUI:
– Update menu screen information.
Core:
– WiiMote timeout increase from 60 to 300 seconds.
– Added local highscore position calculation.
– Improve stability.
– Use libfat 1.0.7 as disk access engine.
– Use libogc 1.8.3 as Wii interface engine
General:
– Make source code compliant with r21 compiler.
– Improve source code documentation.
– Added screenshots to source code documentation.
– Build game with devkitPPC r21 compiler.

Download

Click here for more information and the download link.

Wii RedSquare 0.97

This evening RedSquare 0.97 for Nintendo Wii is released by PlaatSoft. The following changes were made:

31-03-2009 Version 0.97
GUI:
– Show played game level on high score screens.
– Update menu screen information.
Core:
– Improve stability.
– WiiMote timeout increase from 60 to 300 seconds.
– Use libfat 1.0.7 as disk access engine.
– Use libogc 1.8.3 as Wii interface engine
General:
– Make source code compliant with r21 compiler.
– Build game with devkitPPC r21 compiler.

If anybody has a good idea how to improve this game, please post a comment

Wii BibleQuiz 0.95

This evening BibleQuiz 0.95 for Nintendo Wii is released by PlaatSoft.

31-03-2010 Version 0.95
GUI:
– Update main menu screen information.
– Improve game icon.
Core:
– WiiMote timeout increase from 60 to 300 seconds.
– Improve stability.
– Improve network thread.
– Use libfat 1.0.7 as disk access engine.
– Use libogc 1.8.3 as Wii interface engine.
General:
– Make source code compliant with r21 compiler.
– Added source code to Google Code Repository.
– Added source code documentation (Javadoc style).
– Added Doxygen (automatic documentation generation tool) config file.
– Build game with devkitPPC r21 compiler.

Download

Click here for more information and the download link.

Wii Pong2 1.0

This evening Pong2 0.99 for Nintendo Wii is released by Plaatsoft.

31-03-2010 Version 1.0

GUI:
– Update main menu screen information.
– Improve game icon.
Core:
– Improve stability.
– Improve network thread.
– Use libfat 1.0.7 as disk access engine.
– Use libogc 1.8.3 as Wii interface engine.
General:
– Make source code compliant with r21 compiler.
– Added source code to Google Code Repository
– Added source code documentation (Javadoc style).
– Added Doxygen (automatic documentation generation tool) config file.
– Build game with devkitPPC r21 compiler.

Download

Click here for more information and the download link.

Windows PlaatScore 0.50

This evening PlaatSoft has released PlaatScore v0.50

30-03-2010 Version 0.50
– Show popup window when internet connect fails.
– Added release notes window.
– Added donate window.
– Added credits window.
– Build with QtCreator v1.3.1
– Released app on freewarefiles.com.

Download

Click here for more information and the download link.

Windows PlaatStats 0.60

This evening PlaatSoft has released PlaatStats v0.60

29-03-2010 Version 0.60
– Rename registry key names.
– Improve source code documentation.
– Improve about window (Add plaatsoft logo).
– Added settings window.
– Added support for http proxy.
– Added new version check.
– Build PlaatStats with QtCreator v1.3.1.
– Released app on freewarefiles.com.

Download

Click here for detail PlaatStats information and download links.

Windows PlaatScore 0.40

This evening PlaatSoft has released PlaatScore v0.40

28-03-2010 Version 0.40
– Encrypt / Decrypt entered passwords in windows registry.
– Added improve about window.
– Improve screen layout.
– Add new version detection.
– Disable menu buttons when http request is executed.
– Build with QtCreator v1.3.1
– Released app on freewarefiles.com.

Download

Click here for more information and the download link.

Windows PlaatScore 0.30

This afternoon PlaatSoft has released PlaatScore v0.30

27-03-2010 Version 0.30
– Added support for dynamic xml data.
– Make table resizable.
– Added popup menu.
– Disable column sorting (Did not work good).
– Improve screen layout.
– Build with QtCreator v1.3.1
– Released app on freewarefiles.com.

Download

Click here for more information and the download link.

Windows PlaatScore 0.2

This evening PlaatSoft has released PlaatScore v0.20. PlaatScore collects from a webservices xml formatted highscore data. This information is displayed in a nice form. User can update this data if the webservices support this feature.

26-03-2010 Version 0.2
– First release for the windows (Qt) scene
– Added settings page.
– Added Http Proxy support
– Cleanup code
– Build with QtCreator v1.3.1
– Released app on freewarefiles.com.

Download

Click here for more information and the download link.

Windows PlaatScore 0.1

This evening PlaatSoft has released PlaatScore v0.20. PlaatScore collects from a webservices xml formatted highscore data. This information is displayed in a nice form. User can update this data if the webservices support this feature.

24-03-2010 Version 0.10
– Start building.
– Created GUI.
– Added basic menu.
– Added basic about box.
– Load / Save window position on start / exit.
– Added application icon.
– Build with QtCreator v1.3.1

Download

Click here for more information and the download link.

QtCreator 1.3.81 not stable

Hi everybody, Some days ago i have upgraded QtCreator (Windows release) from 1.3.1 to 1.3.81 (2.0.0 alpha). This release is not stable with a SubVersion Qt project. Problem is that with or without a Windows subversion client installed (Tigris.org SubVersion client v1.5.8) QtCreator is crashing during the indexing of the Qt SVN project. When I remove all .svn directories out of my Qt project QtCreator is running fine. So what could be wrong? Looking forward to a fix for this critical issue?

My bug report send to the Qt

P.S. With QtCreator 1.3.1 with trigris.org SubVersion plugin is working fine!

Windows PlaatStats 0.50

This evening PlaatSoft has released PlaatStats v0.50

21-03-2010 Version 0.50
– Improve number formatting (Add dot character after 3 digits).
– Added Windows setup file.
– Added source code to Google Code repository.
– Build tool with QtCreator v1.3.81.
– Released app on freewarefiles.com.

Download

Click here for detail PlaatStats information and download links.

PlaatSoft 150.000 downloads

Today PlaatSoft registered the 150.000e Wii homebrew game download! Many thanks to all the Wii Homebrew players around the world. 🙂 Looking forward to provide you with more high quality Wii Homebrew games in 2010!

Game PlaatSoft CodeMii Google Code Totals
Wii Pong2 3.443 36.970 414 40.827
Wii BibleQuiz 2.279 15.195 221 17.695
Wii RedSquare 2.993 22.718 459 26.170
Wii SpaceBubble 2.817 28.129 501 31.447
Wii TowerDefense 2.395 30.247 1.278 33.920
Totals 13.927 133.259 2.873 150.059

* Counting is based on my website, CodeMii (HomeBrew browser) and Google code site downloads.
** The following windows tool PlaatStats generated this statistics.

Windows PlaatStats 0.30

Hi everybody, Last three days i have invested some time to build a Qt Windows application (32bits). The application collects from my Website, CodeMii (Homebrew Browser) and Google Code the download statistics of my homebrew software. This information is the displayed in a nice form.

17-03-2010 Version 0.30
– First official release.
– Cleanup code.
– If internet is down show 0 values in boxes.
– Move clipboard functionality to Menu action.
– Build tool with QtCreator v1.3.1.
– Released app on freewarefiles.com.

16-03-2010 Version 0.20
– Added fix window size.
– Store window position in Windows registry.
– Improve GUI layout.
– Fetch data from Google Code sites.
– When application is started, information is directly fetched.
– Add windows clipboard support (HTML output is added)
– Build tool with QtCreator v1.3.1.

15-03-2010 Version 0.10
– Start building.
– Created GUI.
– Added network call (Plaatsoft and CodeMii website).
– Added state Machine.
– Build tool with QtCreator v1.3.1.

Download

Click here for detail PlaatStats information and download links.

JasperReports basic example

Hi everybody,

Today i have played around with JasperReports. Really nice java tool to created very easy reports. I did not find many examples on internet. Therefor I post my first try. I hope this will help other developers starting up with this great tool.

This example runs a query (JDBC connected) with some parameters define in Java. The result is converted to PDF and then zipped.

Test.java file


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import java.sql.Connection;
import java.sql.DriverManager;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;

/**
 * The Class Test.
 */
public class Test {

	/** The Constant LOG. */
	private static final Logger LOG = Logger.getLogger(test.class);
	
	/** The Constant BUFFER. */
	final static int BUFFER = 10240;
	
	/** The connection. */
	static Connection connection = null;

	/**
	 * Connect database.
	 */
	static void ConnectDatabase() {
		try {			
			// Load the JDBC driver
			String driverName = "oracle.jdbc.driver.OracleDriver";
			Class.forName(driverName);

			// Create a connection to the database
			String serverName = "127.0.0.1";
			String portNumber = "1521";
			String sid = "XE";
			String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
			String username = "test";
			String password = "test";
			connection = DriverManager.getConnection(url, username, password);
		} catch (ClassNotFoundException e) {
			System.err.println("Could not find the database driver");
		} catch (Exception e) {
			System.err.println("Could not connect to the database");
		}
	}

	/**
	 * File zip.
	 */
	static void fileZip() {
		
		BufferedInputStream origin = null;
		try
		{
			FileOutputStream dest = new FileOutputStream("test.zip");
			ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));
			byte data[] = new byte[BUFFER];
			
			// get a list of files from current directory
			File f = new File("src/.");
			String files[] = f.list();

			for (int i=0; i<files.length; i++) {
			
				System.out.println("Adding: "+files[i]);
				FileInputStream fi = new FileInputStream("src/"+files[i]);
				origin = new BufferedInputStream(fi, BUFFER);
				ZipEntry entry = new ZipEntry(files[i]);
				out.putNextEntry(entry);
				int count;
				while((count = origin.read(data, 0, BUFFER)) != -1) {
					out.write(data, 0, count);
				}
				origin.close();
			}
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
     
	/**
	 * The main method.
	 * 
	 * @param args the arguments
	 */
	public static void main(String[] args) {
		JasperReport jasperReport;
		JasperPrint jasperPrint;
		
		long start = System.currentTimeMillis();
		
		try {			
			// Log log4j configuration
			final Properties log4jProperties = new Properties();
			log4jProperties.load(new FileInputStream("etc/log4j.properties"));
			PropertyConfigurator.configure(log4jProperties);
			
			LOG.info("Start");
			LOG.info("--------");
						
			LOG.info("Compile Jasper XML Report");
			jasperReport = JasperCompileManager.compileReport("src/test.jrxml");
			LOG.info("time : " + (System.currentTimeMillis() - start)+ " ms.");
			
			LOG.info("Create Database connection");
			ConnectDatabase();
			LOG.info("time : " + (System.currentTimeMillis() - start)+ " ms.");
			
			LOG.info("Create parameters");
			Map <String, Object> parameters = new HashMap<String, Object>();
			parameters.put("ReportTitle", "User Report");
			parameters.put("DataFile", "src/test1.jrxml");
			parameters.put("IdRange", 10);	
			
			LOG.info("Generated report");
			jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
			LOG.info("time : " + (System.currentTimeMillis() - start)+ " ms.");
			
			LOG.info("Generated PDF");
			JasperExportManager.exportReportToPdfFile(jasperPrint, "src/test.pdf");
			LOG.info("time : " + (System.currentTimeMillis() - start)+ " ms.");
			
			LOG.info("Create Zip File");
			fileZip();
			LOG.info("time : " + (System.currentTimeMillis() - start)+ " ms.");
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		LOG.info("--------");
		LOG.info("Done");
	}
}

JaspersReports test.jrxml (Report template) file.

<?xml version="1.0"?>

<jasperReport
		xmlns="http://jasperreports.sourceforge.net/jasperreports"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
		name="User Overview" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="50" bottomMargin="50">


	<style name="Sans_Bold" isDefault="false" fontName="DejaVu Sans" fontSize="8" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
	<style name="Sans_Normal" isDefault="true" fontName="DejaVu Sans" fontSize="8" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
	<style name="Title" style="Sans_Bold" fontSize="12"/>
	<style name="ColumnHeader" style="Sans_Bold" forecolor="white"/>
	
	<parameter name="ReportTitle" class="java.lang.String"></parameter>
	<parameter name="DataFile" class="java.lang.String"></parameter>
	<parameter name="IdRange" class="java.lang.Integer"></parameter>
	
	<queryString><![CDATA[SELECT id, displaynaam, puik_id FROM gebruiker WHERE id <=$P{IdRange} order by id]]></queryString>
	<field name="id" class="java.lang.Integer"/>
	<field name="displaynaam" class="java.lang.String"/>
	<field name="puik_id" class="java.lang.String"/>
	
	<title>
		<band height="70">
			<line>
				<reportElement x="0" y="0" width="515" height="1"/>
				<graphicElement/>
			</line>
			<textField isBlankWhenNull="true" bookmarkLevel="1">
				<reportElement x="0" y="10" width="515" height="30" style="Sans_Normal"/>
				<textElement textAlignment="Center">
					<font size="22"/>
				</textElement>
				<textFieldExpression class="java.lang.String"><![CDATA[$P{ReportTitle}]]></textFieldExpression>
				<anchorNameExpression><![CDATA["Title"]]></anchorNameExpression>
			</textField>
			<textField isBlankWhenNull="true">
				<reportElement x="0" y="40" width="515" height="20" style="Sans_Normal"/>
				<textElement textAlignment="Center">
					<font size="14"/>
				</textElement>
				<textFieldExpression class="java.lang.String"><![CDATA[$P{DataFile}]]></textFieldExpression>
			</textField>
		</band>

	</title>
	
	<pageHeader>
		<band height="15">
			<frame>
				<reportElement x="0" y="0" width="555" height="15" mode="Opaque" backcolor="black"/>
				<staticText>
					<reportElement x="5" y="0" width="155" height="15" style="ColumnHeader"/>
					<textElement verticalAlignment="Middle" textAlignment="Left"/>
					<text>Id</text>
				</staticText>
				<staticText>
					<reportElement x="125" y="0" width="100" height="15" style="ColumnHeader"/>
					<textElement verticalAlignment="Middle"/>
					<text>Displaynaam</text>
				</staticText>
				<staticText>
					<reportElement x="270" y="0" width="60" height="15" style="ColumnHeader"/>
					<textElement verticalAlignment="Middle" textAlignment="Left"/>
					<text>PuikId</text>
				</staticText>
				</frame>
		</band>
	</pageHeader>
							
 <detail>
 	<band height="15">
			<frame>
				<reportElement x="0" y="0" width="555" height="15" />
				<textField>
					<reportElement x="5" y="0" width="155" height="15"/>
					<textElement verticalAlignment="Middle" textAlignment="Left"/>
					<textFieldExpression>$F{id}.toString()</textFieldExpression>
				</textField>
				<textField>
					<reportElement x="125" y="0" width="100" height="15"/>
					<textElement verticalAlignment="Middle"/>
					<textFieldExpression>$F{displaynaam}</textFieldExpression>
				</textField>
				<textField pattern="#,###.00">
					<reportElement x="270" y="0" width="60" height="15"/>
					<textElement verticalAlignment="Middle" textAlignment="Left"/>
					<textFieldExpression>$F{puik_id}</textFieldExpression>
				</textField>
			</frame>			
		</band>	
  </detail>
  
  <pageFooter>
		<band height="40">
			<line>
				<reportElement x="0" y="10" width="515" height="1"/>
				<graphicElement/>
			</line>
			<textField>
				<reportElement x="200" y="20" width="80" height="15"/>
				<textElement textAlignment="Right"/>
				<textFieldExpression class="java.lang.String"><![CDATA["Page " + String.valueOf($V{PAGE_NUMBER}) + " of"]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Report">
				<reportElement x="280" y="20" width="75" height="15"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[" " + String.valueOf($V{PAGE_NUMBER})]]></textFieldExpression>
			</textField>			
		</band>
	</pageFooter>
  	
	<lastPageFooter>
		<band height="60">
			<textField bookmarkLevel="1">
				<reportElement x="0" y="10" width="515" height="15"/>
				<textElement textAlignment="Center"/>
				<textFieldExpression class="java.lang.String"><![CDATA["There were " + 
					String.valueOf($V{REPORT_COUNT}) + 
					" address records on this report."]]></textFieldExpression>
				<anchorNameExpression><![CDATA["Summary"]]></anchorNameExpression>
			</textField>
			<line>
				<reportElement x="0" y="30" width="515" height="1"/>
				<graphicElement/>
			</line>
			<textField>
				<reportElement x="200" y="40" width="80" height="15"/>
				<textElement textAlignment="Right"/>
				<textFieldExpression class="java.lang.String"><![CDATA["Page " + String.valueOf($V{PAGE_NUMBER}) + " of"]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Report">
				<reportElement x="280" y="40" width="75" height="15"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[" " + String.valueOf($V{PAGE_NUMBER})]]></textFieldExpression>
			</textField>
		</band>
	</lastPageFooter>
		
</jasperReport>

Log4j.properties file

log4j.rootLogger=INFO, console, logfile
log4j.appender.logfile.File=../log/test.log

# Appender to log4j.log
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.MaxFileSize=1000KB
log4j.appender.logfile.MaxBackupIndex=9
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss,SSS} %-5p (%c:%L) - %M: %m%n
log4j.appender.logfile.Append=true

# Appender to Console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss,SSS} %-5p (%c:%L) - %M: %m%n

Wii RedSquare 0.96

This evening RedSquare 0.96 for Nitendo Wii is released by PlaatSoft. The following changes were made:

02-03-2009 Version 0.96
GUI:
– Improve local high score screen. Add score stars.
– Improve game over screen. Add score stars.
– Added three extra game settings buttons.
– Improve square images.
– Update menu screen information.
– Disable Wii DVD light thread. Not stable.
Core:
– Added support for maximum four concurrent players.
– Added game level: Easy, Medium and Hard.
– Gameboard border size is now related to selected game level.
– Amount of blue squares is now related to selected game level.
– Start position of blue squares can now be randomized.
– Enable A and B button to select red square during game.
– Press Home button to go back to the main menu.
General:
– Added screenshots to source code documentation.
– Improve debug trace information.
– Build game with devkitPPC r19 compiler.