# ChangeLog for net-dialup/qtwvdialer
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/net-dialup/qtwvdialer/ChangeLog,v 1.20 2010/01/20 20:36:54 maekke Exp $

  20 Jan 2010; Markus Meier <maekke@gentoo.org>
  qtwvdialer-0.4.4_p20091228.ebuild:
  x86 stable, bug #300034

  07 Jan 2010; <hwoarang@gentoo.org> qtwvdialer-0.4.4_p20091228.ebuild:
  replace qt4 with qt4-r2 eclass

  28 Dec 2009; Samuli Suominen <ssuominen@gentoo.org>
  qtwvdialer-0.4.4.ebuild:
  Stop using deprecated kde-functions.eclass.

*qtwvdialer-0.4.4_p20091228 (28 Dec 2009)

  28 Dec 2009; Samuli Suominen <ssuominen@gentoo.org>
  +qtwvdialer-0.4.4_p20091228.ebuild:
  Version bump to Qt4 port wrt #297513.

  14 Dec 2008; Alin Năstac <mrness@gentoo.org> qtwvdialer-0.4.4.ebuild:
  Fix build failure when qt-4 is installed (#247948).

  18 Jul 2007; Alin Năstac <mrness@gentoo.org> -files/g++configure.patch,
  -qtwvdialer-0.4.2.ebuild:
  Remove obsolete version.

  16 Apr 2007; Christian Faulhammer <opfer@gentoo.org>
  qtwvdialer-0.4.4.ebuild:
  stable x86, bug 174668

*qtwvdialer-0.4.4 (10 Feb 2007)

  10 Feb 2007; Alin Năstac <mrness@gentoo.org> +qtwvdialer-0.4.4.ebuild:
  Version bump. Add ~amd64 keyword.

  16 Mar 2006; Alin Nastac <mrness@gentoo.org> qtwvdialer-0.4.2.ebuild:
  Simplify dependencies. Quote $WORKDIR and $S.

  07 Jan 2006; Carsten Lohrke <carlo@gentoo.org> qtwvdialer-0.4.2.ebuild:
  QA: need-qt() needs to be called after R/DEPEND.

  04 Oct 2005; Alin Nastac <mrness@gentoo.org> qtwvdialer-0.4.2.ebuild:
  Remove COPYING from docs.

  12 Aug 2005; David Holm <dholm@gentoo.org> qtwvdialer-0.4.2.ebuild:
  Added to ~ppc.

  12 Feb 2005; Alin Nastac <mrness@gentoo.org> -qtwvdialer-0.3.1-r2.ebuild:
  Remove old ebuild.

  20 Nov 2004; Alin Nastac <mrness@gentoo.org> qtwvdialer-0.4.2.ebuild:
  Correct makefile to use our CXXFLAGS and mark it stable on x86.

*qtwvdialer-0.4.2 (27 Sep 2004)

  27 Sep 2004; Daniel Black <dragonheart@gentoo.org>
  +files/g++configure.patch, qtwvdialer-0.3.1-r2.ebuild,
  +qtwvdialer-0.4.2.ebuild:
  version bump and fixed old version. Solves bug #48097. Thanks to Robin
  Thellend <gentoo@robin.pfft.net> and Adam Bolte <boltronics@fusemail.com>.

  19 Nov 2003; Heinrich Wendel <lanius@gentoo.org> metadata.xml:
  metadata.xml

*qtwvdialer-0.3.1-r2 (23 May 2003)

  23 May 2003; Chuck Brewer <killian@gentoo.org>:
  Added manifest.

*qtwvdialer-0.3.1-r2 (1 Feb 2002)

  1 Feb 2002; G.Bevin <gbevin@gentoo.org> ChangeLog :
  Added initial ChangeLog which should be updated whenever the package is
  updated in any way. This changelog is targetted to users. This means that the
  comments should well explained and written in clean English. The details about
  writing correct changelogs are explained in the skel.ChangeLog file which you
  can find in the root directory of the portage repository.
