[svn-inject] Installing original source of confclerk (0.5.0) upstream/0.5.0
authorgregor herrmann <gregoa@debian.org>
Wed, 29 Jun 2011 19:19:48 +0000 (19:19 -0000)
committergregor herrmann <gregoa@debian.org>
Wed, 29 Jun 2011 19:19:48 +0000 (19:19 -0000)
131 files changed:
AUTHORS [new file with mode: 0644]
BUGS [new file with mode: 0644]
COPYING [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
INSTALL [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
TODO [new file with mode: 0644]
confclerk.pro [new file with mode: 0644]
data/confclerk.1 [new file with mode: 0644]
data/confclerk.desktop [new file with mode: 0644]
data/confclerk.png [new file with mode: 0644]
data/confclerk.pod [new file with mode: 0644]
data/confclerk.svg [new file with mode: 0644]
data/data.qrc [new file with mode: 0644]
docs/fosdem-schedule/AUTHORS [new file with mode: 0644]
docs/fosdem-schedule/Changelog [new file with mode: 0644]
docs/fosdem-schedule/INSTALL [new file with mode: 0644]
docs/fosdem-schedule/NEWS [new file with mode: 0644]
docs/fosdem-schedule/README [new file with mode: 0644]
docs/fosdem-schedule/user-stories.txt [new file with mode: 0644]
src/alarm/alarm.cpp [new file with mode: 0644]
src/alarm/alarm.h [new file with mode: 0644]
src/alarm/alarm.pro [new file with mode: 0644]
src/alarm/calendar.cpp [new file with mode: 0644]
src/alarm/calendar.h [new file with mode: 0644]
src/app/alarmdbus.cpp [new file with mode: 0644]
src/app/alarmdbus.h [new file with mode: 0644]
src/app/alarmdbusadaptor.cpp [new file with mode: 0644]
src/app/alarmdbusadaptorp.h [new file with mode: 0644]
src/app/app.pro [new file with mode: 0644]
src/app/application.cpp [new file with mode: 0644]
src/app/application.h [new file with mode: 0644]
src/app/appsettings.cpp [new file with mode: 0644]
src/app/appsettings.h [new file with mode: 0644]
src/app/main.cpp [new file with mode: 0644]
src/create_tables.sql [new file with mode: 0644]
src/db.qrc [new file with mode: 0644]
src/global.pri [new file with mode: 0644]
src/gui/about.ui [new file with mode: 0644]
src/gui/alarmdialog.cpp [new file with mode: 0644]
src/gui/alarmdialog.h [new file with mode: 0644]
src/gui/alarmdialog.ui [new file with mode: 0644]
src/gui/conferenceeditor.cpp [new file with mode: 0644]
src/gui/conferenceeditor.h [new file with mode: 0644]
src/gui/conferenceeditor.ui [new file with mode: 0644]
src/gui/conflictdialogcontainer.cpp [new file with mode: 0644]
src/gui/conflictdialogcontainer.h [new file with mode: 0644]
src/gui/conflictsdialog.cpp [new file with mode: 0644]
src/gui/conflictsdialog.h [new file with mode: 0644]
src/gui/conflictsdialog.ui [new file with mode: 0644]
src/gui/daynavigatorwidget.cpp [new file with mode: 0644]
src/gui/daynavigatorwidget.h [new file with mode: 0644]
src/gui/daynavigatorwidget.ui [new file with mode: 0644]
src/gui/dayviewtabcontainer.cpp [new file with mode: 0644]
src/gui/dayviewtabcontainer.h [new file with mode: 0644]
src/gui/errormessage.cpp [new file with mode: 0644]
src/gui/errormessage.h [new file with mode: 0644]
src/gui/eventdialog.cpp [new file with mode: 0644]
src/gui/eventdialog.h [new file with mode: 0644]
src/gui/eventdialog.ui [new file with mode: 0644]
src/gui/favtabcontainer.cpp [new file with mode: 0644]
src/gui/favtabcontainer.h [new file with mode: 0644]
src/gui/gui.pro [new file with mode: 0644]
src/gui/mainwindow.cpp [new file with mode: 0644]
src/gui/mainwindow.h [new file with mode: 0644]
src/gui/mainwindow.ui [new file with mode: 0644]
src/gui/mapwindow.cpp [new file with mode: 0644]
src/gui/mapwindow.h [new file with mode: 0644]
src/gui/mapwindow.ui [new file with mode: 0644]
src/gui/nowtabcontainer.cpp [new file with mode: 0644]
src/gui/nowtabcontainer.h [new file with mode: 0644]
src/gui/roomstabcontainer.cpp [new file with mode: 0644]
src/gui/roomstabcontainer.h [new file with mode: 0644]
src/gui/searchhead.cpp [new file with mode: 0644]
src/gui/searchhead.h [new file with mode: 0644]
src/gui/searchhead.ui [new file with mode: 0644]
src/gui/searchtabcontainer.cpp [new file with mode: 0644]
src/gui/searchtabcontainer.h [new file with mode: 0644]
src/gui/settingsdialog.cpp [new file with mode: 0644]
src/gui/settingsdialog.h [new file with mode: 0644]
src/gui/settingsdialog.ui [new file with mode: 0644]
src/gui/tabcontainer.cpp [new file with mode: 0644]
src/gui/tabcontainer.h [new file with mode: 0644]
src/gui/tabcontainer.ui [new file with mode: 0644]
src/gui/trackstabcontainer.cpp [new file with mode: 0644]
src/gui/trackstabcontainer.h [new file with mode: 0644]
src/gui/urlinputdialog.cpp [new file with mode: 0644]
src/gui/urlinputdialog.h [new file with mode: 0644]
src/gui/urlinputdialog.ui [new file with mode: 0644]
src/icons.qrc [new file with mode: 0644]
src/icons/add.png [new file with mode: 0644]
src/icons/applications-internet.png [new file with mode: 0644]
src/icons/appointment-soon-off.png [new file with mode: 0644]
src/icons/appointment-soon.png [new file with mode: 0644]
src/icons/dialog-warning.png [new file with mode: 0644]
src/icons/emblem-new-off.png [new file with mode: 0644]
src/icons/emblem-new.blend [new file with mode: 0644]
src/icons/emblem-new.png [new file with mode: 0644]
src/icons/reload.png [new file with mode: 0644]
src/icons/remove.png [new file with mode: 0644]
src/icons/search.png [new file with mode: 0644]
src/mvc/conference.cpp [new file with mode: 0644]
src/mvc/conference.h [new file with mode: 0644]
src/mvc/conferencemodel.cpp [new file with mode: 0644]
src/mvc/conferencemodel.h [new file with mode: 0644]
src/mvc/delegate.cpp [new file with mode: 0644]
src/mvc/delegate.h [new file with mode: 0644]
src/mvc/event.cpp [new file with mode: 0644]
src/mvc/event.h [new file with mode: 0644]
src/mvc/eventmodel.cpp [new file with mode: 0644]
src/mvc/eventmodel.h [new file with mode: 0644]
src/mvc/mvc.pro [new file with mode: 0644]
src/mvc/room.cpp [new file with mode: 0644]
src/mvc/room.h [new file with mode: 0644]
src/mvc/track.cpp [new file with mode: 0644]
src/mvc/track.h [new file with mode: 0644]
src/mvc/treeview.cpp [new file with mode: 0644]
src/mvc/treeview.h [new file with mode: 0644]
src/orm/orm.pro [new file with mode: 0644]
src/orm/ormrecord.h [new file with mode: 0644]
src/sql/schedulexmlparser.cpp [new file with mode: 0644]
src/sql/schedulexmlparser.h [new file with mode: 0644]
src/sql/sql.pro [new file with mode: 0644]
src/sql/sqlengine.cpp [new file with mode: 0644]
src/sql/sqlengine.h [new file with mode: 0644]
src/src.pro [new file with mode: 0644]
src/test/main.cpp [new file with mode: 0644]
src/test/mvc/eventtest.cpp [new file with mode: 0644]
src/test/mvc/eventtest.h [new file with mode: 0644]
src/test/test.pro [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..1b8dba2
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,14 @@
+This is the AUTHORS file for ConfClerk. ConfClerk is the successor of
+fosdem-schedule; cf. docs/fosdem-schedule for the historic documentation.
+
+Francisco Fortes 
+Matus Hanzes 
+Martin Komara
+Marek Timko
+Matus Uzak
+Monika Berendova
+Pavol Korinek
+Pavol Pavelka
+Maksim Kirillov
+Philipp Spitzer
+gregor herrmann
diff --git a/BUGS b/BUGS
new file mode 100644 (file)
index 0000000..bb2e955
--- /dev/null
+++ b/BUGS
@@ -0,0 +1,2 @@
+Bugs are managed in our trac system:
+http://www.toastfreeware.priv.at/confclerk
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..d511905
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..b9d3e0b
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,1593 @@
+2011-06-28  philipp
+
+       * src/gui/conferenceeditor.cpp, src/gui/daynavigatorwidget.cpp,
+         src/gui/eventdialog.cpp, src/gui/mainwindow.cpp,
+         src/gui/searchhead.cpp, src/mvc/eventmodel.cpp,
+         src/mvc/treeview.cpp, src/orm/ormrecord.h, src/sql/sqlengine.cpp:
+         Removed many of the qDebug() output lines (see ticket #10).
+
+2011-06-28  gregoa
+
+       * README, data/confclerk.pod: add copyright/license for exchanged
+         icons
+
+2011-06-28  philipp
+
+       * src/icons/emblem-new-off.png, src/icons/emblem-new.blend,
+         src/icons/emblem-new.png: Replaced the star icons with self-made
+         versions (Blender 2.57b) that are better distinguishable. Closes
+         ticket #8.
+
+2011-06-27  philipp
+
+       * confclerk.pro, src/app/main.cpp, src/global.pri,
+         src/gui/about.ui, src/gui/mainwindow.cpp: Included application
+         version in the about dialog. This closes ticket #9.
+
+2011-06-26  philipp
+
+       * src/gui/eventdialog.cpp, src/gui/eventdialog.ui: Links in events
+         are now clickable (resolves ticket #4).
+       * src/gui/searchtabcontainer.cpp, src/mvc/conference.h: Searching
+         without active conference doesn't give an error message anymore
+         (resolves ticket #7).
+       * src/gui/searchtabcontainer.cpp, src/sql/sqlengine.cpp: The '%'
+         character doesn't have to be escaped anymore.
+       * src/gui/mainwindow.ui: The window title was still "FOSDEM
+         Schedule".
+
+2011-06-25  gregoa
+
+       * ChangeLog, NEWS: Add entries to NEWS file.
+       * TODO: Shorten TODO.
+       * ChangeLog, confclerk.pro, data/confclerk.pod: Create a simple man
+         page.
+       * README, TODO: Add URLs for FOSDEM 2011, DebConf 2010, and 27C3 to
+         README instead of TODO.
+       * TODO, src/fosdem.sql, src/schedule.en.xml: Remove the remaining
+         last two fosdem files.
+       * ChangeLog, README, TODO: Update contact info.
+
+2011-06-25  philipp
+
+       * BUGS: Bugs are now reported in the trac system.
+
+2011-06-24  gregoa
+
+       * BUGS, ChangeLog: Mark bug 3 as fixed.
+
+2011-06-24  philipp
+
+       * src/gui/searchhead.cpp: Enter or return triggers the search now
+         when the focus is at the searchEdit or at one of the checkboxes.
+       * BUGS: Filed bug 7: Error message when searching without having
+         conferences
+
+2011-06-24  gregoa
+
+       * BUGS: Add another wishlist (more: design discussion) bug
+
+2011-06-24  philipp
+
+       * src/gui/tabcontainer.h, src/mvc/eventmodel.cpp: Removed
+         unnecessary debug output and code.
+       * BUGS, src/mvc/event.cpp: Fixed bug reported by gregor: Too many
+         authors are shown (form other conferences as well).
+
+2011-06-24  gregoa
+
+       * ChangeLog, TODO, confclerk.pro: Improve release target in .pro
+
+2011-06-24  philipp
+
+       * src/gui/daynavigatorwidget.cpp, src/mvc/treeview.cpp: Removed two
+         unused variables to avoid compiler warnings.
+
+2011-06-24  gregoa
+
+       * src/gui/alarmdialog.cpp, src/sql/sqlengine.cpp,
+         src/test/mvc/eventtest.cpp: Somewhere a slash was missing ...
+       * TODO: Updated TODO.
+
+2011-06-23  gregoa
+
+       * README: Add contact info to README.
+       * src/gui/about.ui: Update 'About' dialog.
+       * TODO, src/app/app.pro, src/app/main.cpp, src/maps, src/maps.qrc,
+         src/sql/sqlengine.cpp: Remove ULB, Campus Solbosch maps.
+       * ., ChangeLog, TODO, confclerk.pro, data/fosdem-schedule.svg,
+         fosdem-schedule.pro, src/app/app.pro: The big rename. Which was
+         not so big after all ...
+       * data/26x26, data/40x40, data/48x48, data/64x64, data/Makefile,
+         data/confclerk.desktop, data/maemo: De-maemofy: make .desktop
+         file generic, remove resized (old) icons and Makefile for
+         installing them.
+       * src/app/app.pro: Add new resource file to app.pro
+       * data/data.qrc, src/app/main.cpp, src/gui/about.ui,
+         src/gui/alarmdialog.ui, src/gui/conferenceeditor.ui,
+         src/icons.qrc, src/icons/brain-alone.png, src/icons/fosdem.png:
+         Icons, part 2: replace fosdem/brain icons with ConfClerk logo
+       * README, TODO, src/gui/conferenceeditor.ui,
+         src/gui/eventdialog.cpp, src/gui/eventdialog.ui, src/icons.qrc,
+         src/icons/add.png, src/icons/alarm-offBig.png,
+         src/icons/alarm-onBig.png, src/icons/applications-internet.png,
+         src/icons/appointment-soon-off.png,
+         src/icons/appointment-soon.png, src/icons/compassBig.png,
+         src/icons/dialog-warning.png, src/icons/emblem-new-off.png,
+         src/icons/emblem-new.png, src/icons/exclamation.png,
+         src/icons/favourite-offBig.png, src/icons/favourite-onBig.png,
+         src/icons/reload.png, src/icons/remove.png, src/icons/search.png,
+         src/mvc/delegate.cpp: Icons part 1: replace all icons (except the
+         FOSDEM ones) with icons from current gnome-icon-theme
+       * src/gui/mainwindow.ui, src/icons.qrc, src/icons/collapse.png,
+         src/icons/expand.png, src/icons/info.png, src/icons/settings.png:
+         Remove unused icons.
+       * src/gui/alarmdialog.cpp: Another instance of the databasename.
+         (NOTE: untested, this codepath is only used on maemo)
+       * TODO, src/app/appsettings.cpp, src/app/main.cpp,
+         src/sql/sqlengine.cpp: Move config and sqlite database. They are
+         both at the xdg-specified locations now:
+         ~/.local/share/data/Toastfreeware/ConfClerk/ConfClerk.sqlite
+         ~/.config/Toastfreeware/ConfClerk.conf
+       * src/alarm/alarm.cpp, src/app/alarmdbus.h,
+         src/app/alarmdbusadaptorp.h, src/app/main.cpp: Rename DBus
+         service. Hopefully successful.
+       * TODO: Add some conference URLs to TODO
+       * BUGS: New bug noted.
+       * BUGS: New bug noted.
+       * src/app/app.pro, src/gui/gui.pro, src/mvc/mvc.pro: qmake warning:
+         POST_TARGETDEPS instead of TARGETDEPS
+       * fosdem-schedule.pro: Remove libs in clean target.
+       * ChangeLog, README, TODO, data/confclerk.svg,
+         data/fosdem-schedule.svg, fosdem-schedule.pro,
+         src/icons/appicon.svg: Move and rename logo, create a target to
+         convert it in .pro, add copyright/license to README. Update TODO.
+
+2011-06-23  philipp
+
+       * BUGS: Checked the remaining code. Didn't find possibilities for
+         SQL injections anymore.
+
+2011-06-23  gregoa
+
+       * TODO: Update TODO.
+       * ChangeLog, fosdem-schedule.pro: Add release and changelog targets
+         to project file.
+       * Changelog: Remove empty Changelog.
+
+2011-06-23  philipp
+
+       * src/sql/sqlengine.cpp: Prevented SQL injections in function
+         addPersonToDB.
+
+2011-06-23  gregoa
+
+       * src/alarm/alarm.cpp, src/alarm/alarm.h, src/alarm/calendar.cpp,
+         src/alarm/calendar.h, src/app/alarmdbus.cpp, src/app/alarmdbus.h,
+         src/app/alarmdbusadaptor.cpp, src/app/alarmdbusadaptorp.h,
+         src/app/application.cpp, src/app/application.h,
+         src/app/appsettings.cpp, src/app/appsettings.h, src/app/main.cpp,
+         src/gui/alarmdialog.cpp, src/gui/alarmdialog.h,
+         src/gui/conferenceeditor.cpp, src/gui/conferenceeditor.h,
+         src/gui/conflictdialogcontainer.cpp,
+         src/gui/conflictdialogcontainer.h, src/gui/conflictsdialog.cpp,
+         src/gui/conflictsdialog.h, src/gui/daynavigatorwidget.cpp,
+         src/gui/daynavigatorwidget.h, src/gui/dayviewtabcontainer.cpp,
+         src/gui/dayviewtabcontainer.h, src/gui/errormessage.cpp,
+         src/gui/errormessage.h, src/gui/eventdialog.cpp,
+         src/gui/eventdialog.h, src/gui/favtabcontainer.cpp,
+         src/gui/favtabcontainer.h, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h, src/gui/mapwindow.cpp, src/gui/mapwindow.h,
+         src/gui/nowtabcontainer.cpp, src/gui/nowtabcontainer.h,
+         src/gui/roomstabcontainer.cpp, src/gui/roomstabcontainer.h,
+         src/gui/searchhead.cpp, src/gui/searchhead.h,
+         src/gui/searchtabcontainer.cpp, src/gui/searchtabcontainer.h,
+         src/gui/settingsdialog.cpp, src/gui/settingsdialog.h,
+         src/gui/tabcontainer.cpp, src/gui/tabcontainer.h,
+         src/gui/trackstabcontainer.cpp, src/gui/trackstabcontainer.h,
+         src/gui/urlinputdialog.cpp, src/gui/urlinputdialog.h,
+         src/mvc/conference.cpp, src/mvc/conference.h,
+         src/mvc/conferencemodel.cpp, src/mvc/conferencemodel.h,
+         src/mvc/delegate.cpp, src/mvc/delegate.h, src/mvc/event.cpp,
+         src/mvc/event.h, src/mvc/eventmodel.cpp, src/mvc/eventmodel.h,
+         src/mvc/room.cpp, src/mvc/room.h, src/mvc/track.cpp,
+         src/mvc/track.h, src/mvc/treeview.cpp, src/mvc/treeview.h,
+         src/orm/ormrecord.h, src/sql/schedulexmlparser.cpp,
+         src/sql/schedulexmlparser.h, src/sql/sqlengine.cpp,
+         src/sql/sqlengine.h, src/test/main.cpp,
+         src/test/mvc/eventtest.cpp, src/test/mvc/eventtest.h: Add
+         copyright to source.
+       * src/alarm/alarm.cpp, src/alarm/alarm.h, src/alarm/calendar.cpp,
+         src/alarm/calendar.h, src/app/alarmdbus.cpp, src/app/alarmdbus.h,
+         src/app/alarmdbusadaptor.cpp, src/app/alarmdbusadaptorp.h,
+         src/app/application.cpp, src/app/application.h,
+         src/app/appsettings.cpp, src/app/appsettings.h, src/app/main.cpp,
+         src/gui/alarmdialog.cpp, src/gui/alarmdialog.h,
+         src/gui/conferenceeditor.cpp, src/gui/conferenceeditor.h,
+         src/gui/conflictdialogcontainer.cpp,
+         src/gui/conflictdialogcontainer.h, src/gui/conflictsdialog.cpp,
+         src/gui/conflictsdialog.h, src/gui/daynavigatorwidget.cpp,
+         src/gui/daynavigatorwidget.h, src/gui/dayviewtabcontainer.cpp,
+         src/gui/dayviewtabcontainer.h, src/gui/errormessage.cpp,
+         src/gui/errormessage.h, src/gui/eventdialog.cpp,
+         src/gui/eventdialog.h, src/gui/favtabcontainer.cpp,
+         src/gui/favtabcontainer.h, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h, src/gui/mapwindow.cpp, src/gui/mapwindow.h,
+         src/gui/nowtabcontainer.cpp, src/gui/nowtabcontainer.h,
+         src/gui/roomstabcontainer.cpp, src/gui/roomstabcontainer.h,
+         src/gui/searchhead.cpp, src/gui/searchhead.h,
+         src/gui/searchtabcontainer.cpp, src/gui/searchtabcontainer.h,
+         src/gui/settingsdialog.cpp, src/gui/settingsdialog.h,
+         src/gui/tabcontainer.cpp, src/gui/tabcontainer.h,
+         src/gui/trackstabcontainer.cpp, src/gui/trackstabcontainer.h,
+         src/gui/urlinputdialog.cpp, src/gui/urlinputdialog.h,
+         src/mvc/conference.cpp, src/mvc/conference.h,
+         src/mvc/conferencemodel.cpp, src/mvc/conferencemodel.h,
+         src/mvc/delegate.cpp, src/mvc/delegate.h, src/mvc/event.cpp,
+         src/mvc/event.h, src/mvc/eventmodel.cpp, src/mvc/eventmodel.h,
+         src/mvc/room.cpp, src/mvc/room.h, src/mvc/track.cpp,
+         src/mvc/track.h, src/mvc/treeview.cpp, src/mvc/treeview.h,
+         src/orm/ormrecord.h, src/sql/schedulexmlparser.cpp,
+         src/sql/schedulexmlparser.h, src/sql/sqlengine.cpp,
+         src/sql/sqlengine.h, src/test/main.cpp,
+         src/test/mvc/eventtest.cpp, src/test/mvc/eventtest.h: Update GPL
+         blurb in source files.
+
+2011-06-23  philipp
+
+       * src/icons/appicon.svg: Just adapted the page size to be
+         rectangular.
+       * src/icons/appicon.svg: This suggestion/"doodle"* for the new
+         application icon was created just now by Christian Kling
+         <kling_christian@gmx.at> who (he is sitting next to me right now)
+         agreed to publish it under the GNU GPL (v2 or later).
+         
+         *Christian's words.
+
+2011-06-23  gregoa
+
+       * TODO, debian: Remove ./debian directory, we'll do the packaging
+         outside the "upstream" repository.
+       * AUTHORS, INSTALL, NEWS, README, TODO, docs/fosdem-schedule,
+         docs/fosdem-schedule/AUTHORS, docs/fosdem-schedule/Changelog,
+         docs/fosdem-schedule/INSTALL, docs/fosdem-schedule/NEWS,
+         docs/fosdem-schedule/README,
+         docs/fosdem-schedule/user-stories.txt, docs/user-stories.txt:
+         First round of documentation updates.
+       * ChangeLog, fosdem-schedule.pro: Prepare ChangeLog generation from
+         svn logs.
+
+2011-06-23  philipp
+
+       * src/sql/sqlengine.cpp: Prevented SQL injection in function
+         addLinkToDB.
+
+2011-06-23  gregoa
+
+       * TODO: update TODO
+
+2011-06-23  philipp
+
+       * src/sql/sqlengine.cpp: Fixed SQL error in searchEvent when no
+         table was selected. Prevented SQL injection in searchEvent.
+
+2011-06-23  gregoa
+
+       * TODO: add TODO file
+
+2011-06-23  philipp
+
+       * src/gui/mainwindow.cpp, src/gui/tabcontainer.h,
+         src/mvc/eventmodel.cpp, src/mvc/eventmodel.h,
+         src/orm/ormrecord.h: Added some comments, removed and added some
+         debug information.
+       * src/sql/sqlengine.cpp: Fixed a bug I introduced when reparing the
+         addRoomToDB function.
+       * src/mvc/track.cpp, src/mvc/track.h, src/sql/sqlengine.cpp: Tracks
+         are inserted now when importing new conferences.
+       * src/sql/sqlengine.cpp: void possible SQL injection in function
+         addRoomToDB.
+       * src/app/app.pro: Removed copying the fosdem.sqlite database
+         during the make process.
+
+2011-06-22  philipp
+
+       * src/db.qrc, src/sql/sqlengine.cpp: The database is now created
+         from the program. We don't need to copy or provide fosdem.sqlite
+         anymore.
+       * BUGS, src/sql/sqlengine.cpp: Persons are deleted now when a
+         conference is removed.
+       * BUGS: Added a file with bugs that I noticed when playing with the
+         application.
+       * src/sql/sqlengine.cpp: Rooms are inserted now for additionally
+         imported conferences.
+       * src/create_tables.sql: Importing persons for multiple conferences
+         works now.
+       * src/create_tables.sql, src/sql/sqlengine.cpp: Changed UNIQUE
+         statements in the database table definition so that they make
+         sense for multiple conferences and do no not prevent successful
+         imports.
+
+2011-06-22  gregoa
+
+       * src/mvc/track.cpp, src/mvc/track.h, src/sql/sqlengine.cpp: Insert
+         new field xid_conference into table track, room and person.
+
+2011-06-21  philipp
+
+       * src/create_tables.sql: Created schema for the database with
+         additional colum xid_conference in the tables track, room and
+         person.
+       * src/gui/mainwindow.ui: Added menu item "quit".
+       * ., src/app, src/gui, src/mvc, src/sql: Ignored some files that
+         were created during the build.
+       * fosdem-schedule.pro: Removed data directory from subdirs so that
+         the manually created Makefile is not overwritten by qmake -r.
+       * src/app/app.pro: Removed dbus dependency on non-maemo platforms.
+
+2010-05-05  kirilma
+
+       * src/mvc/delegate.cpp: use enabled flag instead of repeated
+         criateria check
+       * src/mvc/delegate.cpp, src/mvc/delegate.h: add enabled flag
+       * src/mvc/delegate.cpp, src/mvc/delegate.h: refactor: more compact
+         drawing of controls
+       * src/mvc/delegate.cpp, src/mvc/room.h: do not draw showmap button
+         for event is there is no map for its room
+       * src/gui/tabcontainer.cpp, src/mvc/delegate.cpp,
+         src/mvc/event.cpp, src/mvc/event.h: refactor: cache whole Room
+         object in Event
+       * src/fosdem.sql, src/gui/tabcontainer.cpp, src/mvc/room.h,
+         src/sql/schedulexmlparser.cpp: store room map in database
+         
+         show it if it's available, otherwise show a warning set proper
+         values in default database new rooms imported as without maps
+       * src/fosdem.sql, src/gui/conferenceeditor.cpp,
+         src/mvc/conference.cpp, src/mvc/conference.h,
+         src/sql/sqlengine.cpp, src/sql/sqlengine.h: store path to
+         conference map in database
+         
+         path stored as additional field in conference table if it's null
+         or empty, "Show map" button is not shown if existing database
+         does not have the field, it will be automatically added
+
+2010-05-04  kirilma
+
+       * src/gui/conferenceeditor.cpp, src/gui/conferenceeditor.ui,
+         src/gui/settingsdialog.cpp, src/gui/settingsdialog.ui: UI tune:
+         use buttonBox instead of single buttons to comply with platform
+         conventions
+         
+         maemo5 does not print "Cancel" buttons, and names "OK"
+         differently just use buttonBox, and it will behave properly at
+         each platform
+
+2010-04-23  kirilma
+
+       * src/gui/conferenceeditor.cpp, src/gui/conferenceeditor.h,
+         src/gui/conferenceeditor.ui, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h: restore viewing of conference map
+       * src/gui/conferenceeditor.cpp, src/gui/urlinputdialog.ui: minor UI
+         fixes
+         
+         fix size of UrlInputDialog restore [remove] button at the same
+         button as [add]
+
+2010-04-22  kirilma
+
+       * src/gui/importschedulewidget.cpp, src/gui/importschedulewidget.h,
+         src/gui/importschedulewidget.ui, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h, src/sql/schedulexmlparser.cpp,
+         src/sql/schedulexmlparser.h: remove obsoleted code
+         
+         also fix some types
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h: optimization
+       * src/gui/conferenceeditor.cpp, src/gui/conferenceeditor.ui: fine
+         tune geometry to look nicer
+       * AUTHORS, debian/copyright: add authors for files
+       * src/gui/conferenceeditor.cpp, src/gui/conferenceeditor.h,
+         src/gui/conferenceeditor.ui, src/gui/gui.pro,
+         src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/gui/urlinputdialog.cpp,
+         src/gui/urlinputdialog.h, src/gui/urlinputdialog.ui,
+         src/icons.qrc, src/icons/add.png, src/icons/reload.png,
+         src/icons/remove.png, src/mvc/conference.h,
+         src/mvc/conferencemodel.cpp, src/mvc/conferencemodel.h,
+         src/mvc/mvc.pro, src/sql/schedulexmlparser.cpp,
+         src/sql/schedulexmlparser.h: reworked UI for conference editing
+         
+         underlying representation of conference list is also changed
+       * src/sql/schedulexmlparser.h: CC: fix endlines
+
+2010-04-16  kirilma
+
+       * src/app/app.pro, src/app/application.cpp,
+         src/gui/errormessage.cpp, src/gui/errormessage.h,
+         src/gui/gui.pro, src/gui/importschedulewidget.cpp,
+         src/sql/schedulexmlparser.cpp: use visible notifications of
+         errors
+         
+         also early detect parsing errors
+
+2010-04-15  kirilma
+
+       * src/gui/importschedulewidget.cpp,
+         src/gui/importschedulewidget.ui: make label shorter to place all
+         required buttons
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/tabcontainer.cpp, src/gui/tabcontainer.h,
+         src/mvc/eventmodel.cpp, src/mvc/eventmodel.h: fix deletion of
+         last conference
+         
+         implement for cleaning all views in the tabs clean the models
+         when no active conference found fix cleaning model and signalling
+         views
+       * src/gui/importschedulewidget.cpp, src/gui/importschedulewidget.h,
+         src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/mvc/conference.cpp, src/mvc/conference.h,
+         src/sql/sqlengine.cpp, src/sql/sqlengine.h: implement deleting a
+         conference
+         
+         pass event about it to mainwindow to update select control fix
+         Conference::activeConference() to work when first conference is
+         removed
+       * src/gui/importschedulewidget.cpp, src/gui/importschedulewidget.h,
+         src/gui/importschedulewidget.ui, src/mvc/conference.h: add
+         buttons for refreshm new url and delete and partly implement
+         corresponding actions
+         
+         also changed Online -> Refresh delete action is not implemented
+         yet
+       * src/fosdem.sql, src/gui/importschedulewidget.cpp,
+         src/gui/importschedulewidget.h, src/mvc/conference.cpp,
+         src/mvc/conference.h, src/sql/schedulexmlparser.cpp,
+         src/sql/schedulexmlparser.h, src/sql/sqlengine.cpp: store URL's
+         for conferences
+         
+         * use it at update * let user update the url before request
+       * src/gui/importschedulewidget.cpp,
+         src/gui/importschedulewidget.ui, src/sql/sqlengine.cpp,
+         src/sql/sqlengine.h: remove unused code
+       * src/fosdem.sql: fix references in SQL
+
+2010-04-14  kirilma
+
+       * src/gui/about.ui, src/gui/alarmdialog.ui,
+         src/gui/conflictsdialog.ui, src/gui/daynavigatorwidget.ui,
+         src/gui/eventdialog.ui, src/gui/importschedulewidget.ui,
+         src/gui/mainwindow.ui, src/gui/mapwindow.ui,
+         src/gui/searchhead.ui, src/gui/settingsdialog.ui: save output
+         from updater QT designer
+         
+         update all ui files to the output format of the new Qt Designer
+         (version: 4.5.3really4.5.2-0ubuntu1) to avoid unrelated changes
+         in SCM later
+
+2010-04-13  kirilma
+
+       * src/gui/gui.pro, src/gui/tabwidget.cpp, src/gui/tabwidget.h:
+         remove unused class TabWidget
+       * src/gui/gui.pro, src/gui/importschedulewidget.cpp,
+         src/gui/importschedulewidget.h, src/gui/importschedulewidget.ui,
+         src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/gui/proxysettingsdialog.cpp,
+         src/gui/proxysettingsdialog.h, src/gui/proxysettingsdialog.ui,
+         src/gui/settingsdialog.cpp, src/gui/settingsdialog.h,
+         src/gui/settingsdialog.ui: move Settings and About to Window Menu
+         
+         * remove Setting and About controls from widgets * make instead a
+         window menus with the corresponding actions * rename "Proxy
+         settings" to "Settings", placing the proxy button in a control
+         group
+
+2010-04-12  kirilma
+
+       * src/app/app.pro: build fix at maemo
+         
+         force order of computation some versions of qmake-qt4 require it
+       * src/fosdem.sql: remove ON CONFLICE REPLACE for events
+       * src/app/app.pro, src/fosdem.sql, src/fosdem.sqlite: generate
+         default database instead of using binary one
+       * src/sql/sqlengine.cpp: fix event insert or update
+         
+         * add error reporting for queries * actually run check query *
+         properly get conference_is from event * fix checking of non-empty
+         result * fix insert query
+       * src/app/app.pro, src/app/application.cpp, src/app/application.h,
+         src/app/main.cpp: catch exceptions which leak outside of event
+         handlers
+         
+         If we do not do this, QT will exit from event loop.
+
+2010-04-09  kirilma
+
+       * src/sql/sqlengine.cpp: use update for events when they are
+         already exists
+         
+         also use only parameters substitution for these queries
+       * src/sql/schedulexmlparser.cpp, src/sql/sqlengine.cpp,
+         src/sql/sqlengine.h: use transactions to make import faster
+
+2010-03-03  uzakmat
+
+       * data/maemo/fosdem-schedule.desktop, debian/changelog,
+         src/gui/about.ui: Preparing for release 0.4.1
+
+2010-03-03  timkoma
+
+       * src/alarm/alarm.cpp, src/mvc/event.cpp, src/sql/sqlengine.cpp:
+         UTC/LocalTime fix for import conference XML, DB queries for
+         multiple conferences fixes
+
+2010-02-05  timkoma
+
+       * src/fosdem.sqlite, src/sql/sqlengine.cpp: fix for import - ON
+         CONFLICT REPLACE
+
+2010-02-05  uzakmat
+
+       * data/maemo/fosdem-schedule.desktop, debian/changelog,
+         src/alarm/alarm.cpp, src/gui/about.ui: alarm UTC/localtime fix
+
+2010-02-03  uzakmat
+
+       * INSTALL: addition of Diablo specific installation instructions in
+         INSTALL
+       * data/Makefile, data/maemo/fosdem-schedule.desktop: installation
+         of 40x40 icons enabled because of Diablo
+       * NEWS, debian/changelog, src/gui/about.ui: release information
+         added for release 0.3
+
+2010-02-03  timkoma
+
+       * src/mvc/event.cpp, src/mvc/event.h: performance improvement for
+         Events
+       * src/mvc/event.cpp, src/mvc/event.h: performance improvement for
+         load persons
+
+2010-02-02  uzakmat
+
+       * NEWS: NEWS file update
+       * src/alarm/alarm.cpp, src/alarm/alarm.h, src/alarm/calendar.cpp,
+         src/alarm/calendar.h, src/app/alarmdbus.cpp, src/app/alarmdbus.h,
+         src/app/alarmdbusadaptor.cpp, src/app/alarmdbusadaptorp.h,
+         src/app/appsettings.cpp, src/app/appsettings.h, src/app/main.cpp,
+         src/gui/alarmdialog.cpp, src/gui/alarmdialog.h,
+         src/gui/conflictdialogcontainer.cpp,
+         src/gui/conflictdialogcontainer.h, src/gui/conflictsdialog.cpp,
+         src/gui/conflictsdialog.h, src/gui/daynavigatorwidget.cpp,
+         src/gui/daynavigatorwidget.h, src/gui/dayviewtabcontainer.cpp,
+         src/gui/dayviewtabcontainer.h, src/gui/eventdialog.cpp,
+         src/gui/eventdialog.h, src/gui/favtabcontainer.cpp,
+         src/gui/favtabcontainer.h, src/gui/importschedulewidget.cpp,
+         src/gui/importschedulewidget.h, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h, src/gui/mapwindow.cpp, src/gui/mapwindow.h,
+         src/gui/nowtabcontainer.cpp, src/gui/nowtabcontainer.h,
+         src/gui/proxysettingsdialog.cpp, src/gui/proxysettingsdialog.h,
+         src/gui/roomstabcontainer.cpp, src/gui/roomstabcontainer.h,
+         src/gui/searchhead.cpp, src/gui/searchhead.h,
+         src/gui/searchtabcontainer.cpp, src/gui/searchtabcontainer.h,
+         src/gui/tabcontainer.cpp, src/gui/tabcontainer.h,
+         src/gui/tabwidget.cpp, src/gui/tabwidget.h,
+         src/gui/trackstabcontainer.cpp, src/gui/trackstabcontainer.h,
+         src/mvc/conference.cpp, src/mvc/conference.h,
+         src/mvc/delegate.cpp, src/mvc/delegate.h, src/mvc/event.cpp,
+         src/mvc/event.h, src/mvc/eventmodel.cpp, src/mvc/eventmodel.h,
+         src/mvc/room.cpp, src/mvc/room.h, src/mvc/track.cpp,
+         src/mvc/track.h, src/mvc/treeview.cpp, src/mvc/treeview.h,
+         src/orm/ormrecord.h, src/sql/schedulexmlparser.cpp,
+         src/sql/schedulexmlparser.h, src/sql/sqlengine.cpp,
+         src/sql/sqlengine.h, src/test/main.cpp,
+         src/test/mvc/eventtest.cpp, src/test/mvc/eventtest.h: A header
+         with the proper copyright/lincence statement was added into each
+         source/header file.
+
+2010-02-02  pavelpa
+
+       * src/alarm/alarm.cpp: corrected 'exec' path when adding an alarm
+
+2010-02-02  uzakmat
+
+       * NEWS: NEWS file updated
+       * AUTHORS, INSTALL, README, debian/changelog: README, INSTALL,
+         AUTHORS - filled in
+
+2010-02-02  hanzes
+
+       * src/alarm/alarm.cpp, src/app/alarmdbus.h,
+         src/app/alarmdbusadaptor.cpp, src/app/alarmdbusadaptorp.h: Alarm
+         modifications
+
+2010-02-01  hanzes
+
+       * src/mvc/treeview.cpp: Alarm dbus connection added
+       * src/alarm/alarm.cpp, src/alarm/alarm.pro,
+         src/alarm/alarmdbus.cpp, src/alarm/alarmdbus.h,
+         src/alarm/alarmdbusadaptor.cpp, src/alarm/alarmdbusadaptorp.h,
+         src/app/alarmdbus.cpp, src/app/alarmdbus.h,
+         src/app/alarmdbusadaptor.cpp, src/app/alarmdbusadaptorp.h,
+         src/app/app.pro, src/app/main.cpp, src/mvc/mvc.pro,
+         src/mvc/treeview.cpp, src/src.pro: Alarm dbus connection added
+
+2010-02-01  pavelpa
+
+       * src/mvc/delegate.cpp: gradient for treeview items
+       * src/sql/sqlengine.cpp: changed permissions for the db - TODO:
+         check it on the device
+       * src/app/main.cpp, src/src.pro: compilation error fix
+       * src/app/main.cpp: compilation error fix
+       * src/gui/mapwindow.cpp: N810 changes: maximized 'map' dialog
+
+2010-02-01  hanzes
+
+       * src/alarm/alarm.cpp, src/alarm/alarm.pro,
+         src/alarm/alarmdbus.cpp, src/alarm/alarmdbus.h,
+         src/alarm/alarmdbusadaptor.cpp, src/alarm/alarmdbusadaptorp.h,
+         src/app/app.pro, src/app/main.cpp, src/gui/gui.pro,
+         src/mvc/treeview.cpp, src/src.pro: Alarm dbus connection added
+
+2010-02-01  pavelpa
+
+       * src/gui/importschedulewidget.ui, src/icons.qrc,
+         src/icons/settings.png: added 'settings' icon for setting-up
+         proxy(network connection)
+       * src/global.pri, src/gui/mainwindow.cpp, src/gui/tabcontainer.cpp,
+         src/orm/ormrecord.h: GUI changes for N810 device
+
+2010-02-01  uzakmat
+
+       * debian/control, debian/copyright: debian/control - Build-Depends
+         section set
+
+2010-02-01  pavelpa
+
+       * src/app/app.pro, src/app/main.cpp, src/db.qrc, src/fosdem.sqlite,
+         src/sql/sqlengine.cpp: created resource which contains parsed
+         schedule, so the user doesn't have to parse it by himself
+
+2010-02-01  uzakmat
+
+       * src/alarm/alarm.cpp: alarm - example of dbus binding functional
+
+2010-02-01  pavelpa
+
+       * src/schedule.en.xml: updated schedule.en.xml to the newest
+         version
+
+2010-01-30  pavelpa
+
+       * src/gui/about.ui, src/gui/eventdialog.ui, src/icons.qrc,
+         src/icons/brain-alone.png: changed fosdem icon in about dialog to
+         brain-alone icon
+       * src/gui/about.ui: changed copyright string
+       * src/mvc/delegate.cpp: number of events/alarms/favs is
+         bottom-aligned to the bottom of the icons
+
+2010-01-29  pavelpa
+
+       * src/app/appsettings.cpp, src/app/appsettings.h,
+         src/gui/mainwindow.cpp: if the application is run for first time,
+         network connection is set to Direct connection
+
+2010-01-29  uzakmat
+
+       * src/alarm/alarm.cpp: initial binding of alarm to a DBus call
+
+2010-01-29  pavelpa
+
+       * src/app/app.pro, src/app/appsettings.cpp, src/app/appsettings.h,
+         src/gui/gui.pro, src/gui/importschedulewidget.cpp,
+         src/gui/importschedulewidget.h, src/gui/importschedulewidget.ui,
+         src/gui/mainwindow.cpp, src/gui/proxysettingsdialog.cpp,
+         src/gui/proxysettingsdialog.h, src/gui/proxysettingsdialog.ui:
+         implemented 'proxy settings' dialog - user can secify proxy for
+         network communication
+       * src/app/app.pro, src/gui/gui.pro,
+         src/gui/importschedulewidget.cpp, src/gui/importschedulewidget.h,
+         src/gui/mainwindow.cpp: implemented importing the schedule from
+         the Internet - usded url: http://fosdem.org/2010/schedule/xml -
+         todo: hard-coded PROXY has to be fixed (add proxy settings
+         dialog)
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/mvc/treeview.cpp: possible to have
+         multiple conferences in the DB - possible to switch among them -
+         conference schedules have to follow FOSDEM conference xml
+         structure - 'select Conference' bar is visible only if there are
+         more than one conference available
+       * src/gui/about.ui, src/gui/importschedulewidget.cpp,
+         src/gui/importschedulewidget.ui: modified 'about' dialog -
+         changed "Qt FOSDEM" -> "FOSDEM Schedule"
+
+2010-01-28  pavelpa
+
+       * src/gui/daynavigatorwidget.cpp, src/gui/daynavigatorwidget.h,
+         src/gui/searchtabcontainer.cpp, src/mvc/event.cpp,
+         src/sql/sqlengine.cpp: search fixed - only the dates (range)
+         which contain at least one event are selectable - if there is
+         only one event at a specified date - user can't switch to the
+         next/prev date - if search gives no results - a message is
+         displayed to inform user about it
+       * src/gui/conflictsdialog.cpp, src/gui/conflictsdialog.h: forgotten
+         in previous commit
+       * src/gui/eventdialog.cpp, src/gui/eventdialog.h,
+         src/gui/favtabcontainer.cpp, src/gui/favtabcontainer.h,
+         src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/tabcontainer.cpp, src/gui/tabcontainer.h,
+         src/mvc/treeview.cpp, src/mvc/treeview.h: some performance
+         optimizations - favourities reloaded only if they have really
+         changed - otherwise only event in the question is updated
+       * src/mvc/event.cpp: fixed 'conflicts' constrains
+       * src/mvc/event.cpp: 'now' events - displayed real now events, not
+         just the testing ones
+
+2010-01-28  uzakmat
+
+       * src/app/app.pro: binary name changed to fosdem-schedule
+
+2010-01-28  pavelpa
+
+       * src/mvc/event.cpp: changed conditions for conflicts
+       * src/gui/eventdialog.cpp, src/mvc/delegate.cpp, src/mvc/event.cpp,
+         src/mvc/event.h, src/mvc/treeview.cpp, src/sql/sqlengine.cpp:
+         some 'delegate' drawing optimizations - removed EVENT_CONFLICT
+         table - used one SQL SELECT instead
+       * src/mvc/treeview.cpp: conflicts updated correctly - TODO: needs
+         to do some drawing optimizations
+
+2010-01-28  uzakmat
+
+       * data/Makefile, data/maemo/fosdem-schedule.desktop,
+         data/maemo/fosdem.desktop, debian/control, fosdem-maemo.pro,
+         fosdem-schedule.pro: package details updated to reflect the
+         binary name change to fosdem-maemo
+
+2010-01-28  pavelpa
+
+       * src/gui/mainwindow.cpp, src/gui/searchhead.ui: if no conference
+         is in the DB, the user is automatically navigated to the
+         conference tab, so he can import one
+       * src/gui/mainwindow.cpp, src/gui/searchtabcontainer.cpp,
+         src/gui/searchtabcontainer.h, src/gui/tabcontainer.cpp: search
+         tab - header is hidden in case no conf exists in the DB
+       * src/gui/eventdialog.ui: event dialog GUI refactoring
+       * src/gui/about.ui, src/gui/mainwindow.ui: about dialog - added GNU
+         GPL v2 notice
+       * src/gui/daynavigatorwidget.cpp, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h, src/gui/mainwindow.ui,
+         src/gui/tabwidget.cpp: conference tab header is hidden if there
+         isn't active conference - handled some warnings
+
+2010-01-27  pavelpa
+
+       * src/gui/mainwindow.ui: tabs' order changed
+       * src/gui/mainwindow.cpp, src/gui/nowtabcontainer.h: 'nowTab'
+         updated/loaded when application starts
+       * src/gui/nowtabcontainer.cpp, src/gui/nowtabcontainer.h: 'nowTab'
+         list is automatically expanded
+       * src/gui/conflictdialogcontainer.cpp,
+         src/gui/conflictdialogcontainer.h, src/gui/tabcontainer.h:
+         'conflict' list is automatically expanded
+       * src/gui/conflictdialogcontainer.cpp,
+         src/gui/conflictdialogcontainer.h, src/gui/conflictsdialog.cpp,
+         src/gui/conflictsdialog.h, src/gui/favtabcontainer.cpp,
+         src/gui/tabcontainer.cpp, src/mvc/event.cpp, src/mvc/event.h,
+         src/mvc/eventmodel.cpp, src/mvc/eventmodel.h: 'conflict' dialog
+         now contains list of events in conflict with given eventId
+       * src/gui/mainwindow.cpp: fixed 'copy-paste' error
+       * src/gui/conflictdialogcontainer.cpp,
+         src/gui/conflictdialogcontainer.h, src/gui/conflictsdialog.cpp,
+         src/gui/conflictsdialog.h, src/gui/conflictsdialog.ui,
+         src/gui/daynavigatorwidget.cpp, src/gui/gui.pro,
+         src/gui/mainwindow.ui, src/gui/searchtabcontainer.cpp,
+         src/gui/tabcontainer.cpp, src/gui/tabcontainer.h,
+         src/mvc/treeview.cpp, src/mvc/treeview.h, src/orm/ormrecord.h:
+         implemented 'conflicts' dialog - displays rooms instead of
+         conflicts for now - needs to implement additional methods in
+         Event, ...
+       * src/gui/eventdialog.cpp: 'alarm' button is hidden for not MAEMO
+
+2010-01-27  timkoma
+
+       * src/gui/searchtabcontainer.cpp, src/gui/tabcontainer.ui,
+         src/orm/ormrecord.h: search fix
+
+2010-01-27  pavelpa
+
+       * src/gui/favtabcontainer.h, src/gui/nowtabcontainer.cpp,
+         src/gui/nowtabcontainer.h, src/gui/roomstabcontainer.cpp,
+         src/gui/roomstabcontainer.h, src/gui/trackstabcontainer.h,
+         src/mvc/room.cpp, src/mvc/room.h, src/mvc/track.cpp,
+         src/mvc/track.h: removed headers from *.h and *.cpp
+       * src/app/app.pro, src/app/appsettings.cpp, src/app/appsettings.h,
+         src/gui/alarmdialog.cpp, src/gui/eventdialog.cpp,
+         src/gui/favtabcontainer.cpp, src/gui/mainwindow.cpp,
+         src/gui/searchtabcontainer.cpp, src/gui/tabcontainer.cpp,
+         src/gui/tabcontainer.h, src/mvc/conference.cpp,
+         src/mvc/conference.h, src/mvc/eventmodel.cpp,
+         src/sql/sqlengine.cpp: removed appsettings - created 'active'
+         column in 'conference' table
+
+2010-01-27  timkoma
+
+       * src/app/app.pro, src/gui/dayviewtabcontainer.cpp,
+         src/gui/dayviewtabcontainer.h, src/gui/favtabcontainer.cpp,
+         src/gui/favtabcontainer.h, src/gui/gui.pro,
+         src/gui/mainwindow.cpp, src/gui/mainwindow.ui,
+         src/gui/nowtabcontainer.cpp, src/gui/nowtabcontainer.h,
+         src/gui/roomstabcontainer.cpp, src/gui/roomstabcontainer.h,
+         src/gui/searchhead.cpp, src/gui/searchhead.h,
+         src/gui/searchhead.ui, src/gui/searchtabcontainer.cpp,
+         src/gui/searchtabcontainer.h, src/gui/tabcontainer.cpp,
+         src/gui/tabcontainer.h, src/gui/tabcontainer.ui,
+         src/gui/trackstabcontainer.cpp, src/gui/trackstabcontainer.h:
+         refactoring of the TABS
+
+2010-01-27  pavelpa
+
+       * src/gui/about.ui: modified 'about application' dialog
+       * src/gui/eventdialog.cpp, src/mvc/event.cpp, src/mvc/event.h:
+         implemented 'links' in Event/EventDialog
+       * src/gui/eventdialog.cpp, src/gui/eventdialog.h,
+         src/gui/eventdialog.ui: refactored Event 'details' dialog - TODO:
+         implement 'links' method(s) in Event and use it in the dialog
+       * src/gui/eventdialog.cpp, src/gui/eventdialog.h,
+         src/gui/eventdialog.ui, src/gui/tabcontainer.cpp: Event 'details'
+         dialog now contains also 'favourite' and 'alarm' buttons, so the
+         user can set/unset the property directly from the dialog
+       * src/gui/tabwidget.cpp: 'info' icon scaled to height of tabBar
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/gui/tabcontainer.cpp,
+         src/gui/tabcontainer.h, src/gui/tabcontainer.ui: 'search' tab
+         functionality moved to 'tabcontainer'
+       * src/mvc/delegate.cpp, src/mvc/delegate.h, src/mvc/event.cpp,
+         src/mvc/event.h, src/mvc/treeview.cpp, src/sql/sqlengine.cpp:
+         'conflicts' modifications - preparing for the dialog showing also
+         list of events in the conflict - created 'EVENT_CONFLICT' for
+         flaging events in conflict state - TODO: not finished
+
+2010-01-26  pavelpa
+
+       * src/icons.qrc, src/icons/exclamation-iconOff.png,
+         src/icons/exclamation-iconOn.png, src/icons/exclamation.png,
+         src/mvc/delegate.cpp, src/mvc/delegate.h, src/mvc/treeview.cpp:
+         conflicts refactoring - has to be finished
+       * src/app/main.cpp, src/gui/importschedulewidget.cpp,
+         src/gui/importschedulewidget.h, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h, src/sql/schedulexmlparser.cpp,
+         src/sql/schedulexmlparser.h, src/sql/sqlengine.h: SqlEngine made
+         STATIC
+       * src/app/app.pro, src/app/main.cpp, src/gui/gui.pro,
+         src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/gui/tabcontainer.cpp,
+         src/gui/tabcontainer.h, src/gui/tabcontainer.ui,
+         src/sql/sqlengine.h: implemented 'tab container' widget, which
+         groups daynavigator with treeview - moved functionality from
+         mainwindow to tabcontainer - TODO: 'search' tab not done yet
+
+2010-01-26  uzakmat
+
+       * AUTHORS, COPYING, Changelog, INSTALL, NEWS, README: Addition of
+         files required by the GNU coding standard
+
+2010-01-26  timkoma
+
+       * src/sql/sqlengine.cpp: unique constraints added into sql
+
+2010-01-26  pavelpa
+
+       * src/gui/mainwindow.ui: just removed unused button on 'day view'
+         tab
+       * src/gui/importschedulewidget.cpp, src/gui/importschedulewidget.h,
+         src/gui/importschedulewidget.ui, src/gui/mainwindow.cpp:
+         reimplemented 'import schedule'
+
+2010-01-26  timkoma
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.ui: reload favourites
+
+2010-01-26  uzakmat
+
+       * src/alarm/alarm.cpp: Alarm implementation modified
+
+2010-01-26  pavelpa
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.ui: removed 'MainMenu'
+         bar from MainWindow - schedule is imported via 'conference' tab -
+         about app is launched when user clicks 'info' button/icon
+       * src/gui/gui.pro, src/gui/importscheduledialog.cpp,
+         src/gui/importscheduledialog.h, src/gui/importscheduledialog.ui,
+         src/gui/importschedulewidget.cpp, src/gui/importschedulewidget.h,
+         src/gui/importschedulewidget.ui, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h, src/gui/mainwindow.ui,
+         src/sql/schedulexmlparser.cpp, src/sql/schedulexmlparser.h:
+         import schedule dialog - changed to widget - moved to
+         'conference' tab
+
+2010-01-26  timkoma
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.ui, src/icons.qrc,
+         src/icons/search.png: search done
+
+2010-01-26  hanzes
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h: NowTreeView refresh
+         modified
+
+2010-01-26  pavelpa
+
+       * src/gui/mainwindow.ui: "conference" tab - GUI modifications
+       * src/gui/mainwindow.cpp, src/icons.qrc, src/icons/info.png: About
+         Application dialog is opened when "info" icon is clicked
+
+2010-01-26  hanzes
+
+       * src/alarm/calendar.cpp, src/alarm/calendar.h: Useless calendar
+         class
+
+2010-01-26  pavelpa
+
+       * src/gui/gui.pro: forgotten in last CI
+       * src/gui/mainwindow.ui, src/gui/tabwidget.cpp,
+         src/gui/tabwidget.h: new TabWidget - contains "info" icon/button
+         to show "AboutApplication" dialog
+
+2010-01-25  timkoma
+
+       * src/gui/mainwindow.ui: search update
+
+2010-01-25  korrco
+
+       * src/mvc/room.cpp: room view added - finished
+       * src/gui/mainwindow.cpp: room view added - finished
+
+2010-01-25  timkoma
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.ui,
+         src/sql/sqlengine.cpp, src/sql/sqlengine.h: search upgrade
+
+2010-01-25  korrco
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/mvc/event.cpp, src/mvc/event.h,
+         src/mvc/eventmodel.cpp, src/mvc/eventmodel.h, src/mvc/mvc.pro,
+         src/mvc/room.cpp, src/mvc/room.h, src/mvc/track.cpp,
+         src/mvc/track.h: room view added - need to test it
+
+2010-01-25  pavelpa
+
+       * src/mvc/eventmodel.cpp: updated also groupings item (event parent
+         item) if the user clicks eg. favourite/alarm icon (changes event
+         data)
+       * src/gui/eventdialog.cpp, src/gui/eventdialog.h,
+         src/gui/eventdialog.ui: GUI work on Event Details dialog
+
+2010-01-25  uzakmat
+
+       * data/Makefile, debian/changelog, debian/control, debian/postinst,
+         debian/postrm, debian/rules: postinst and postrm scripts added
+         into the debian tree
+
+2010-01-25  timkoma
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/mvc/event.cpp, src/orm/ormrecord.h,
+         src/sql/sqlengine.cpp: search update
+
+2010-01-25  korrco
+
+       * src/gui: project synchronisation
+
+2010-01-22  fortefr
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/mvc/delegate.cpp: Conference map
+
+2010-01-22  pavelpa
+
+       * src/gui/mainwindow.cpp: fixed problem with storing conference ID
+         to AppSettings
+       * src/gui/daynavigatorwidget.cpp, src/gui/daynavigatorwidget.h,
+         src/gui/daynavigatorwidget.ui, src/gui/mainwindow.ui: day
+         navigator widget changes - changed from Horizontal to Vertical
+
+2010-01-22  korrco
+
+       * src/gui/alarmdialog.cpp, src/gui/mainwindow.cpp: room.h and .cpp
+         removed
+       * src/mvc/mvc.pro: room.h and .cpp removed
+       * src/mvc/delegate.cpp, src/mvc/event.cpp, src/mvc/event.h,
+         src/mvc/eventmodel.cpp, src/mvc/eventmodel.h, src/mvc/mvc.pro,
+         src/mvc/track.cpp, src/mvc/track.h, src/sql/sqlengine.cpp:
+         caching removed
+       * src/gui/mainwindow.cpp: caching removed
+
+2010-01-22  pavelpa
+
+       * src/gui/mainwindow.cpp: sanity check for consitency of confId in
+         AppSettings and the DB
+       * src/app/appsettings.cpp, src/app/appsettings.h: forgotten
+         appsettings files
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/mvc/event.cpp, src/mvc/event.h,
+         src/mvc/eventmodel.cpp, src/mvc/eventmodel.h,
+         src/mvc/treeview.cpp, src/mvc/treeview.h: implemented NOW tab
+
+2010-01-21  pavelpa
+
+       * src/gui/importscheduledialog.cpp,
+         src/gui/importscheduledialog.ui, src/sql/schedulexmlparser.cpp,
+         src/sql/schedulexmlparser.h: modifications to import-schedule
+         dialog - closed automatically after parsing/importing schedule
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/mvc/eventmodel.cpp, src/mvc/eventmodel.h, src/mvc/mvc.pro,
+         src/mvc/treeview.cpp, src/mvc/treeview.h: EventModel signaling
+         changed - if some of the data (favourite,alarm) has changed on
+         the event, signal 'eventHasChanged' is emitted - all treeViews
+         (eg. DayView, FavsView, TracksView, ...) have to listen on this
+         signal Only favouritiesView is 'reset' when current tab is
+         changed in mainWindow - 'cause time groupings have to be
+         recreated, since favs may have changed
+       * src/gui/mainwindow.ui, src/sql/schedulexmlparser.cpp,
+         src/sql/sql.pro, src/sql/sqlengine.cpp: check for existence of
+         conference before inserting it into DB
+       * src/app/app.pro, src/gui/alarmdialog.cpp,
+         src/gui/eventdialog.cpp, src/gui/gui.pro, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.ui, src/sql/schedulexmlparser.cpp: added
+         'Conference' tab - to list conference details - implemented
+         AppSettings for storing Application settings - stored conference
+         ID
+       * src/app/app.pro, src/app/main.cpp, src/schedule.qrc: removed
+         schedule resource file, which was used for testing - import
+         schedule dialog replaces it's functionality
+
+2010-01-21  fortefr
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/mvc/delegate.cpp, src/mvc/delegate.h, src/mvc/treeview.cpp,
+         src/mvc/treeview.h: Warning handling
+
+2010-01-21  pavelpa
+
+       * src/gui/importscheduledialog.cpp, src/gui/importscheduledialog.h,
+         src/gui/importscheduledialog.ui: forgotten Import Schedule Dialog
+         files
+
+2010-01-21  uzakmat
+
+       * data/26x26/fosdem.png, data/40x40/fosdem.png,
+         data/48x48/fosdem.png, data/64x64/fosdem.png, data/Makefile,
+         data/maemo/fosdem.desktop, debian/changelog, debian/control,
+         debian/files, debian/rules, src/app/app.pro: New installation
+         path for the binary, Maemo optification added into debian/rules,
+         new icons
+
+2010-01-21  pavelpa
+
+       * src/gui/gui.pro, src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/orm/ormrecord.h, src/sql/sqlengine.cpp: import/search
+         schedule dialog implemented
+
+2010-01-21  timkoma
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/mvc/event.cpp, src/mvc/eventmodel.cpp,
+         src/mvc/eventmodel.h, src/orm/ormrecord.h, src/sql/sqlengine.cpp:
+         update for the search
+
+2010-01-21  fortefr
+
+       * src/mvc/delegate.cpp: Time conflict fix
+       * src/mvc/delegate.cpp, src/mvc/delegate.h: Time conflict warning
+
+2010-01-21  korrco
+
+       * src/gui/alarmdialog.cpp, src/gui/mainwindow.cpp: exception
+         handling changed
+
+2010-01-21  pavelpa
+
+       * src/mvc/event.cpp, src/mvc/event.h, src/orm/ormrecord.h,
+         src/sql/sqlengine.cpp: combined EVENT and VIRTUAL_EVENT =>
+         'EVENT' now - Maemo sqlite doesn't support Full-Text-Search
+
+2010-01-21  korrco
+
+       * src/gui/mainwindow.cpp: updateTab refactored
+       * src/mvc/eventmodel.cpp: activities tab implemented
+       * src/mvc/track.cpp, src/mvc/track.h: activities tab implemented
+       * src/gui/mainwindow.cpp, src/mvc/eventmodel.cpp,
+         src/orm/ormrecord.h, src/sql/schedulexmlparser.cpp,
+         src/sql/sql.pro, src/sql/sqlengine.cpp: activities tab
+         implemented
+
+2010-01-21  timkoma
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.ui, src/mvc/event.cpp,
+         src/mvc/event.h, src/mvc/eventmodel.cpp, src/mvc/eventmodel.h,
+         src/orm/ormrecord.h, src/sql/sqlengine.cpp, src/sql/sqlengine.h:
+         first working version of the search
+
+2010-01-21  pavelpa
+
+       * src/gui/eventdialog.cpp, src/gui/eventdialog.ui: event dialog -
+         details about the Event is displayed in FullScreen mode
+       * src/gui/mapwindow.cpp: compilation error "linux" fix - caused by
+         previous commit
+       * src/gui/mapwindow.cpp, src/gui/mapwindow.ui: map is displayed in
+         FullScreen mode
+
+2010-01-20  pavelpa
+
+       * src/mvc/treeview.cpp, src/mvc/treeview.h: group items
+         (time/track/...) are expanded on single-click
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/mvc/activity.cpp, src/mvc/activity.h,
+         src/mvc/delegate.cpp, src/mvc/event.cpp, src/mvc/event.h,
+         src/mvc/eventmodel.cpp, src/mvc/eventmodel.h, src/mvc/mvc.pro,
+         src/mvc/track.cpp, src/mvc/track.h, src/sql/sqlengine.cpp,
+         src/test/mvc/eventtest.cpp: changed 'Activity' -> 'Track'
+       * src/sql/sqlengine.cpp: parsing activity from xml - 'track' from
+         xml schedule is treated as an activity
+       * src/gui/eventdialog.cpp, src/gui/eventdialog.ui: event dialog
+         changes - changed font/background colors - title occupies more
+         lines if it doesn't fit in one line
+       * src/gui/alarmdialog.cpp, src/gui/alarmdialog.ui: alarm dialog
+         changes - displayed additional Event's details - autoresizing
+         title (if it doesn't fit in one line)
+       * src/gui/alarmdialog.ui, src/gui/mainwindow.cpp: updated alarm
+         dialog
+
+2010-01-20  uzakmat
+
+       * data/Makefile: Makefile reverted as it was overwritten
+         accidentally
+
+2010-01-20  pavelpa
+
+       * src/gui/alarmdialog.cpp, src/gui/mainwindow.cpp: implemented some
+         error handling
+       * src/mvc/delegate.cpp, src/mvc/treeview.cpp: alarm icon/stuff is
+         relevant for MAEMO only - used "MAEMO" define for conditional
+         compilation
+       * src/alarm/alarm.cpp, src/app/main.cpp, src/gui/alarmdialog.cpp,
+         src/gui/alarmdialog.ui, src/gui/eventdialog.cpp,
+         src/gui/eventdialog.h, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h: MAEMO: work on alarm - snooze alarm -
+         cancel alarm - run application which automatically display Event
+         dialog for given Event ID
+
+2010-01-20  fortefr
+
+       * src/icons.qrc, src/icons/exclamation-iconOff.png,
+         src/icons/exclamation-iconOn.png, src/mvc/delegate.cpp,
+         src/mvc/delegate.h, src/mvc/event.h: Warning icon (uncompleted)
+
+2010-01-20  timkoma
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/sql/sqlengine.cpp,
+         src/sql/sqlengine.h: temp commit for search tab
+
+2010-01-20  pavelpa
+
+       * src/app/app.pro, src/mvc/delegate.cpp: display event details in
+         the treeView
+
+2010-01-20  korrco
+
+       * src/gui/mainwindow.cpp, src/mvc/eventmodel.cpp,
+         src/mvc/eventmodel.h: activities viewed ordered by activity id
+         and start time
+
+2010-01-20  fortefr
+
+       * data/Makefile, src/app/app.pro, src/icons.qrc,
+         src/mvc/delegate.cpp: Big icons fix 2
+       * src/icons/alarm-off.png, src/icons/alarm-offBig.png,
+         src/icons/alarm-on.png, src/icons/alarm-onBig.png,
+         src/icons/compass.png, src/icons/compassBig.png,
+         src/icons/favourite-off.png, src/icons/favourite-offBig.png,
+         src/icons/favourite-on.png, src/icons/favourite-onBig.png: Big
+         icons
+         
+         D icons/favourite-off.png D icons/favourite-on.png AM
+         icons/favourite-offBig.png AM icons/favourite-onBig.png D
+         icons/alarm-off.png D icons/compass.png D icons/alarm-on.png AM
+         icons/alarm-offBig.png AM icons/compassBig.png AM
+         icons/alarm-onBig.png
+
+2010-01-20  korrco
+
+       * src/mvc/activity.cpp, src/mvc/activity.h: static allocation
+         instead of dynamic added when creating activity map
+
+2010-01-20  pavelpa
+
+       * src/mvc/delegate.cpp: some drawing modifications
+       * src/schedule.en.xml: the most recent FOSDEM 2010 schedule
+         http://fosdem.org/schedule/xml
+
+2010-01-19  pavelpa
+
+       * src/mvc/mvc.pro: pali, nerob bordel
+       * src/gui/eventdialog.cpp, src/gui/eventdialog.ui, src/src.pro:
+         changed abstract/description/scrollbars color in eventdialog
+
+2010-01-19  korrco
+
+       * src/gui/mainwindow.cpp, src/mvc/activity.cpp, src/mvc/activity.h,
+         src/mvc/eventmodel.cpp, src/mvc/mvc.pro: support for view
+         activities with their names added
+
+2010-01-19  pavelpa
+
+       * src/gui/eventdialog.cpp, src/gui/eventdialog.ui,
+         src/gui/mainwindow.ui, src/mvc/event.cpp, src/mvc/event.h:
+         event-dialog - displayed persons/presenters names - implemented
+         Event::persons() method to get persons names associated with the
+         given event ID
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/mvc/treeview.cpp, src/mvc/treeview.h: single-click is used to
+         open event dialog
+       * src/gui/mapwindow.cpp, src/gui/mapwindow.h: diplayed map is
+         closed by single-click, instead of double-click
+       * src/alarm/alarm.h, src/gui/alarmdialog.cpp,
+         src/gui/alarmdialog.h, src/sql/sqlengine.cpp, src/src.pro: work
+         on alarm
+       * src/alarm/alarm.cpp, src/app/app.pro, src/app/main.cpp,
+         src/gui/gui.pro, src/mvc/mvc.pro, src/mvc/treeview.cpp,
+         src/schedule.en.xml: work on alarm
+
+2010-01-19  korrco
+
+       * src/gui: minimal size for tabs set
+
+2010-01-19  uzakmat
+
+       * data, data/26x26, data/26x26/fosdem.png, data/40x40,
+         data/40x40/fosdem.png, data/48x48, data/48x48/fosdem.png,
+         data/64x64, data/64x64/fosdem.png, data/Makefile, data/maemo,
+         data/maemo/fosdem.desktop, debian, debian/changelog,
+         debian/compat, debian/control, debian/copyright, debian/dirs,
+         debian/docs, debian/files, debian/rules, fosdem-maemo.pro,
+         src/app/app.pro, src/fosdem.pro, src/src.pro: Addition of files
+         required for a Debian package and Maemo specific files
+
+2010-01-19  fortefr
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui: Favourites dayNavigator
+
+2010-01-19  pavelpa
+
+       * src/app/app.pro, src/app/main.cpp, src/gui/mainwindow.cpp,
+         src/schedule.qrc: schedule.en.xml is now in resource - for
+         testing only - will be removed from final application
+
+2010-01-19  korrco
+
+       * src/gui/mainwindow.ui: minimal size for tabs set
+
+2010-01-19  fortefr
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h: Update tabs 2
+         
+         -This line, and those below, will be ignored--
+         
+         M src/gui/mainwindow.cpp M src/gui/mainwindow.h
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui: Automatic tabs update
+         
+         M src/gui/mainwindow.ui M src/gui/mainwindow.cpp M
+         src/gui/mainwindow.h
+
+2010-01-19  pavelpa
+
+       * src/gui/mainwindow.cpp, src/gui/mapwindow.cpp,
+         src/gui/mapwindow.h, src/mvc/event.cpp: set MapDialog title
+       * src/gui/mainwindow.cpp, src/maps.qrc,
+         src/maps/rooms/not-available.png: handled the case when the map
+         is not available
+       * src/gui/mainwindow.cpp, src/mvc/event.cpp, src/mvc/event.h:
+         map-name to map-path implemented - correct map is displayed
+       * src/mvc/delegate.cpp: fixed: icons overlapped
+
+2010-01-18  pavelpa
+
+       * src/gui/gui.pro, src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mapwindow.cpp, src/gui/mapwindow.h, src/gui/mapwindow.ui,
+         src/mvc/eventmodel.cpp, src/mvc/treeview.cpp, src/mvc/treeview.h:
+         started work on displaying map - implemented mapwindow - map is
+         hard-coded for now TODO: finish getting map path from the event
+       * src/app/app.pro, src/maps, src/maps.qrc, src/maps/campus.png,
+         src/maps/rooms, src/maps/rooms/H-WC.png,
+         src/maps/rooms/aw1105.png, src/maps/rooms/aw1115.png,
+         src/maps/rooms/aw1117.png, src/maps/rooms/aw1120.png,
+         src/maps/rooms/aw1121.png, src/maps/rooms/aw1124.png,
+         src/maps/rooms/aw1125.png, src/maps/rooms/aw1126.png,
+         src/maps/rooms/chavanne.png, src/maps/rooms/ferrer.png,
+         src/maps/rooms/guillissen.png, src/maps/rooms/h1301.png,
+         src/maps/rooms/h1302.png, src/maps/rooms/h1308.png,
+         src/maps/rooms/h1309.png, src/maps/rooms/h2111.png,
+         src/maps/rooms/h2213.png, src/maps/rooms/h2214.png,
+         src/maps/rooms/infodesk.png, src/maps/rooms/janson.png,
+         src/maps/rooms/lameere.png, src/maps/rooms/thumbs,
+         src/maps/rooms/thumbs/H-WC.png, src/maps/rooms/thumbs/aw1105.png,
+         src/maps/rooms/thumbs/aw1115.png,
+         src/maps/rooms/thumbs/aw1117.png,
+         src/maps/rooms/thumbs/aw1120.png,
+         src/maps/rooms/thumbs/aw1121.png,
+         src/maps/rooms/thumbs/aw1124.png,
+         src/maps/rooms/thumbs/aw1125.png,
+         src/maps/rooms/thumbs/aw1126.png,
+         src/maps/rooms/thumbs/chavanne.png,
+         src/maps/rooms/thumbs/ferrer.png,
+         src/maps/rooms/thumbs/guillissen.png,
+         src/maps/rooms/thumbs/h1301.png, src/maps/rooms/thumbs/h1302.png,
+         src/maps/rooms/thumbs/h1308.png, src/maps/rooms/thumbs/h1309.png,
+         src/maps/rooms/thumbs/h2111.png, src/maps/rooms/thumbs/h2213.png,
+         src/maps/rooms/thumbs/h2214.png,
+         src/maps/rooms/thumbs/infodesk.png,
+         src/maps/rooms/thumbs/janson.png,
+         src/maps/rooms/thumbs/lameere.png, src/maps/rooms/ua2114.png:
+         added maps
+       * src/mvc/event.h: pali, nerob bordel
+       * src/gui/eventdialog.cpp, src/gui/eventdialog.h,
+         src/gui/eventdialog.ui, src/gui/gui.pro, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h, src/gui/mainwindow.ui: implemented 'Event'
+         dialog to display relevant 'Event's info
+
+2010-01-18  korrco
+
+       * src/mvc/event.cpp, src/mvc/event.h, src/mvc/eventmodel.cpp:
+         sorting by activity id added
+
+2010-01-18  pavelpa
+
+       * src/gui/mainwindow.ui: autoresizing activities treeView
+       * src/mvc/delegate.cpp, src/mvc/delegate.h: implemented drawing
+         icons + number of favs/alarms in the corresponding group
+
+2010-01-18  korrco
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/mvc/eventmodel.cpp: grouping by time equation changed - beter
+         group deviding, also according to favourites
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/mvc/eventmodel.cpp, src/orm/ormrecord.h: activities tab
+         implemented - need to fit gui, functionality works fine
+       * src/mvc/eventmodel.cpp: activities tab implemented - not finished
+         yet
+       * src/gui/daynavigatorwidget.cpp, src/gui/daynavigatorwidget.h,
+         src/gui/daynavigatorwidget.ui, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h, src/gui/mainwindow.ui,
+         src/mvc/eventmodel.cpp, src/mvc/eventmodel.h: activities tab
+         implemented - not finished yet
+
+2010-01-18  pavelpa
+
+       * src/alarm/alarm.cpp, src/alarm/alarm.h, src/mvc/delegate.cpp,
+         src/mvc/event.cpp, src/mvc/event.h, src/mvc/eventmodel.cpp,
+         src/mvc/treeview.cpp, src/sql/sqlengine.cpp: added 'alarm'
+         columnt to the 'EVENT' table to signalize that the event
+         has/hasn't alarm set
+
+2010-01-18  fortefr
+
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.h: Favourites fix
+
+2010-01-18  pavelpa
+
+       * src/gui/gui.pro: maemo specific compilation fix
+
+2010-01-18  fortefr
+
+       * src/fosdem.pro, src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/mvc/event.h, src/mvc/eventmodel.cpp, src/mvc/treeview.h: Fav
+         table update M trunk/src/gui/mainwindow.h M
+         trunk/src/gui/mainwindow.cpp M trunk/src/mvc/treeview.h M
+         trunk/src/mvc/eventmodel.cpp M trunk/src/mvc/event.h M
+         trunk/src/fosdem.pro
+
+2010-01-18  pavelpa
+
+       * src/icons/alarm-off.png, src/icons/favourite-off.png,
+         src/mvc/delegate.cpp, src/mvc/delegate.h: added GrayScale
+         versions (inactive/OFF) of the icons
+
+2010-01-18  hanzes
+
+       * src/sql/sqlengine.cpp: fixed sqlite statement
+
+2010-01-18  pavelpa
+
+       * src/gui/gui.pro: fixed: broken compilation for linux caused by
+         previous commit
+       * src/alarm, src/alarm/alarm.cpp, src/alarm/alarm.h,
+         src/alarm/alarm.pro, src/fosdem.pro, src/gui/alarmdialog.cpp,
+         src/gui/alarmdialog.h, src/gui/alarmdialog.ui, src/gui/gui.pro:
+         started work on alarm(libaalarm)
+       * src/gui/mainwindow.ui, src/sql/sql.pro, src/sql/sqlengine.cpp:
+         used 'MAEMO' define to create 'non-virtual' 'VIRUAL_EVENT' table
+         instead of 'virtual' one, only for 'MAEMO' Linux stays untouched
+         - creates real 'virtual' table for FTS support
+
+2010-01-18  korrco
+
+       * src/gui/mainwindow.cpp: current path print added
+
+2010-01-18  fortefr
+
+       * src/mvc/event.cpp, src/mvc/event.h, src/mvc/eventmodel.cpp,
+         src/orm/ormrecord.h, src/sql/sqlengine.cpp: Temporal
+         virtual_event change
+
+2010-01-18  korrco
+
+       * src, src/gui, src/sql: syncing project
+
+2010-01-18  pavelpa
+
+       * src/mvc/eventmodel.cpp: fix: segfault - fixes segfault when
+         switching days in "Day View" - TODO: needs to be verified, 'cause
+         it looks like it shouldn't work, but it does - when calling
+         'QAbstractItemModel::removeRows()' it returns false, but it
+         prevents application from crash(segfault) - possible explanation
+         is that the timing has changed and so the conditions for the
+         segfault
+       * src/gui/mainwindow.ui: added "Quit" to "File" menu
+
+2010-01-17  pavelpa
+
+       * src/mvc/eventmodel.cpp, src/mvc/eventmodel.h,
+         src/mvc/treeview.cpp: implemented method to force 'EventModel'
+         emit a signal dataChanged() - so 'TreeView' know it has to redraw
+         items corresponding to chanded indices (range of indeces)
+       * src/global.pri: created 'global.pri' file, which should cover all
+         global definition of the project - this file has to be include in
+         each "*.pro" file, where it's needed - defines "MAEMO" for
+         handling 'MAEMO' specific code in source files - defines "maemo"
+         for handling 'MAEMO' specific files in "*.pro" file(s)
+       * src/mvc/event.cpp: just minor corrections to 'event'
+       * src/gui/mainwindow.cpp, src/gui/mainwindow.ui, src/mvc/event.cpp,
+         src/mvc/event.h, src/mvc/eventmodel.cpp, src/mvc/eventmodel.h:
+         started work on 'favourities' - created tavourities tree view in
+         the MainWindow 'Favourities' tab - listed some testing 'fav'
+         events - TODO: list isn't updated dynamically, which means that
+         the list isn't updated if the user adds/removes an event(s)
+         to/from the 'favourities' list
+       * src/mvc/delegate.cpp, src/mvc/event.cpp, src/mvc/event.h,
+         src/orm/ormrecord.h: implemented JOINing two tables - modified
+         'ormrecord' to support JOINing two tables - modified 'event'
+         accordingly, since its items/columns are splitted into two
+         separate tables
+
+2010-01-16  pavelpa
+
+       * src/fosdem.pro, src/mvc/delegate.cpp, src/mvc/delegate.h,
+         src/mvc/event.cpp, src/mvc/event.h, src/mvc/treeview.cpp,
+         src/orm/ormrecord.h, src/sql/sqlengine.cpp: work on favourite -
+         created 'favourite' column in EVENT table - modified 'ormrecord'
+         for setting record's elements - favourities view not implemented
+
+2010-01-15  korrco
+
+       * src/sql: syncing sql directory
+
+2010-01-14  fortefr
+
+       * src/icons/compass.png: Compass icon
+       * src/gui/mainwindow.ui, src/icons.qrc, src/mvc/delegate.cpp,
+         src/mvc/delegate.h, src/mvc/treeview.cpp: Map button/compass icon
+         added
+       * src/gui/about.ui, src/gui/mainwindow.ui, src/orm/ormrecord.h:
+         Testing svn, tabs added, misprint fixed
+
+2010-01-14  pavelpa
+
+       * src/app/app.pro, src/fosdem.pro, src/gui/daynavigatorwidget.cpp,
+         src/gui/gui.pro, src/gui/mainwindow.ui, src/model, src/mvc,
+         src/mvc/model.pro, src/mvc/mvc.pro, src/test/main.cpp,
+         src/test/model, src/test/mvc, src/test/test.pro: just some
+         directory renaming - renamed 'model' to 'mvc'
+         (Model-View-Controller), since it contains also 'delegate' and
+         'view'
+
+2010-01-13  pavelpa
+
+       * src/model/conference.h, src/sql/sqlengine.cpp: minor fix
+       * src/gui/daynavigatorwidget.cpp, src/gui/daynavigatorwidget.h,
+         src/gui/daynavigatorwidget.ui, src/gui/gui.pro,
+         src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/model/conference.h,
+         src/model/eventmodel.cpp, src/model/eventmodel.h: implemented day
+         navigator widget - to switch between conference days
+       * src/gui/mainwindow.cpp, src/model/conference.cpp,
+         src/model/conference.h, src/model/eventmodel.cpp,
+         src/model/eventmodel.h, src/model/model.pro,
+         src/sql/sqlengine.cpp: implemented 'conference' record for
+         accessing info about the conference - events are loaded from the
+         first day of the conference
+       * src/gui/about.ui, src/gui/gui.pro, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h, src/gui/mainwindow.ui: added about
+         dialog(s) - some modifications needed - About Qt: not scrollable
+         - About app: modifications to display items in system font/colors
+         needed
+       * src/app/main.cpp, src/icons.qrc, src/icons/fosdem.png: added
+         application icon
+
+2010-01-12  pavelpa
+
+       * src/app/app.pro, src/fosdem.pro, src/gui/gui.pro,
+         src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui, src/model/eventmodel.cpp,
+         src/model/eventmodel.h, src/schedule.en.xml, src/sql,
+         src/sql/schedulexmlparser.cpp, src/sql/schedulexmlparser.h,
+         src/sql/sql.pro, src/sql/sqlengine.cpp, src/sql/sqlengine.h:
+         implemented xml parser - parsing Schedule
+       * src/app/app.pro, src/gui/mainwindow.cpp, src/gui/mainwindow.ui,
+         src/icons, src/icons.qrc, src/icons/alarm-off.png,
+         src/icons/alarm-on.png, src/icons/collapse.png,
+         src/icons/expand.png, src/icons/favourite-off.png,
+         src/icons/favourite-on.png, src/model/delegate.cpp,
+         src/model/delegate.h, src/model/model.pro,
+         src/model/treeview.cpp, src/model/treeview.h: modified model-view
+         - created own delegate to display TreeView items - contains also
+         'controls' - which are clickable (handled in TreeView) - created
+         own TreeView inherited from QTreeView - to handle control-clicks
+         of the Delegate - minor modifications to MainWindow UI -
+         QTreeView replaced by own TreeView - autoresizing of TreeView -
+         icons added
+
+2010-01-07  korrco
+
+       * src: support for creating GUI via QtCreator added
+       * src/test: support for creating GUI via QtCreator added
+       * src/orm: support for creating GUI via QtCreator added
+       * src/model: support for creating GUI via QtCreator added
+       * src/app: support for creating GUI via QtCreator added
+       * src/gui: support for creating GUI via QtCreator added
+       * src/orm/ormrecord.h: TODO for exception handling added
+       * src/gui/gui.pro, src/gui/mainwindow.cpp, src/gui/mainwindow.h,
+         src/gui/mainwindow.ui: support for creating GUI via QtCreator
+         added
+
+2010-01-02  komarma
+
+       * src/app/app.pro, src/gui/gui.pro, src/gui/mainwindow.cpp,
+         src/model/event.cpp, src/model/event.h, src/model/eventmodel.cpp,
+         src/model/eventmodel.h, src/model/model.pro, src/orm/ormrecord.h,
+         src/test/model/eventtest.cpp, src/test/model/eventtest.h:
+         Creating EventModel class
+
+2009-12-31  komarma
+
+       * src/model/event.h, src/orm/ormrecord.h,
+         src/test/model/eventtest.cpp: Fixing datetime conversion
+
+2009-12-30  komarma
+
+       * src/model/event.cpp, src/model/event.h, src/orm/ormrecord.h,
+         src/orm/sqlcondition.cpp, src/orm/sqlcondition.h,
+         src/test/model/eventtest.cpp, src/test/model/eventtest.h: Adding
+         database loading and data conversion to orm module
+
+2009-12-29  komarma
+
+       * src/fosdem.pro, src/model/event.cpp, src/model/event.h,
+         src/model/model.pro, src/orm, src/orm/orm.pro,
+         src/orm/ormrecord.h, src/orm/sqlcondition.cpp,
+         src/orm/sqlcondition.h, src/test/model/eventtest.cpp,
+         src/test/model/eventtest.h, src/test/test.pro: Adding orm module
+
+2009-12-28  komarma
+
+       * src, src/app, src/app/app.pro, src/app/main.cpp, src/fosdem.pro,
+         src/gui, src/gui/gui.pro, src/gui/mainwindow.cpp,
+         src/gui/mainwindow.h, src/model, src/model/event.cpp,
+         src/model/event.h, src/model/model.pro, src/test, src/test/gui,
+         src/test/main.cpp, src/test/model, src/test/model/eventtest.cpp,
+         src/test/model/eventtest.h, src/test/test.pro: Creating initial
+         application directory structure.
+       * ., docs: Creating initial repository structure
+
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..d6da4f4
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,16 @@
+This is the INSTALL file for ConfClerk. ConfClerk is the successor of
+fosdem-schedule; cf. docs/fosdem-schedule for the historic documentation.
+
+
+Note
+
+ConfClerk is an application intended for mobile devices like the Nokia N810 and N900.
+The preferred distribution is using a packaged version for your distribution.
+
+
+Basic Installation
+
+1. Type `qmake' to generate Makefiles.
+2. Type `make' to compile the source code.
+3. Type `make install' to install the executable.  
+4. Type `make uninstall' to remove all installed files form your system.      
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..bf3df19
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,11 @@
+This is the NEWS file for ConfClerk. ConfClerk is the successor of
+fosdem-schedule; cf. docs/fosdem-schedule for the historic documentation.
+
+Version 0.5.0
+* First release of ConfClerk as the fosdem-schedule successor.
+* Continue the multi-conference feature, make sure persons/tracks/rooms are
+  handled separately per conference.
+* Remove FOSDEM- and maemo-specific parts.
+* Exchange icons to be sure about the provenance.
+* Some code cleanup, most notable: use prepared statements for all SQL
+  queries.
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..4863cf1
--- /dev/null
+++ b/README
@@ -0,0 +1,129 @@
+This is the README file for ConfClerk. ConfClerk is the successor of
+fosdem-schedule; cf. docs/fosdem-schedule for the historic documentation.
+
+
+Description:
+
+ConfClerk is an application written in Qt, which makes conference
+schedules available offline.  It displays the conference schedule
+from various views, support searches on various items (speaker, speech topic,
+location, etc.) and enables you to select favorite events and create your own
+schedule.
+
+At the moment ConfClerk is able to import schedules in XML format created by
+the PentaBarf conference management system used by e.g. FOSDEM, DebConf, and
+the CCC.
+
+ConfClerk is targetted at mobile devices like the Nokia N810 and N900 but
+works on any sytem running Qt.
+
+See the file ./INSTALL for building and installation instructions, and
+./AUTHORS for the list of contributors.
+
+
+Copyright and License:
+
+  Copyright (C) 2010 Ixonos Plc.
+  Copyright (C) 2011, Philipp Spitzer, gregor herrmann
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License along
+  with this program; if not, write to the Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+data/confclerk.*:
+
+  Copyright (C) 2011, Christian Kling <kling_christian@gmx.at>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License along
+  with this program; if not, write to the Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+src/icons/*:
+All icons are taken from the Debian package gnome-icon-theme, which contains
+the following notice (as of 2011-06-24):
+
+  Copyright © 2002-2008:
+    Ulisse Perusin <uli.peru@gmail.com>
+    Riccardo Buzzotta <raozuzu@yahoo.it>
+    Josef Vybíral <cornelius@vybiral.info>
+    Hylke Bons <h.bons@student.rug.nl>
+    Ricardo González <rick@jinlabs.com>
+    Lapo Calamandrei <calamandrei@gmail.com>
+    Rodney Dawes <dobey@novell.com>
+    Luca Ferretti <elle.uca@libero.it>
+    Tuomas Kuosmanen <tigert@gimp.org>
+    Andreas Nilsson <nisses.mail@home.se>
+    Jakub Steiner <jimmac@novell.com>
+
+  GNOME icon theme is distributed under the terms of either
+  GNU LGPL v.3 or Creative Commons BY-SA 3.0 license.
+
+src/icons/emblem-new*:
+
+  Copyright (C) 2011, Philipp Spitzer
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License along
+  with this program; if not, write to the Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+History:
+
+ConfClerk started as fosdem-schedule, targetted at Maemo as an operating
+system and the FOSDEM conference.
+fosdem-schedule was written by Ixonos Plc., maintained at
+http://sourceforge.net/projects/fosdem-maemo/ , and released under the GNU GPL
+2 or later.
+Cf. docs/fosdem-schedule for more information.
+
+ConfClerk is the successor of fosdem-schedule, aiming at improvements and
+generalization regarding supported platforms and conference systems.
+The project was started after fosdem-schedule was not actively developped
+anymore and with the "blessing" of the fosdem-schedule developers; cf.
+http://sourceforge.net/mailarchive/forum.php?thread_name=20110621171440.GA4521%40nerys.comodo.priv.at&forum_name=fosdem-maemo-devel
+Thanks guys!
+
+
+Contact:
+
+Philipp Spitzer, gregor herrmann
+Toastfreeware
+<toast+confclerk@toastfreeware.priv.at>
+http://www.toastfreeware.priv.at/confclerk/
+
+
+Tested pentabarf instances:
+
+- FOSDEM (2011): http://fosdem.org/schedule/xml
+- DebConf (2010): http://penta.debconf.org/dc10_schedule/schedule.en.xml
+- 27C3: http://events.ccc.de/congress/2010/Fahrplan/schedule.en.xml
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..68496f8
--- /dev/null
+++ b/TODO
@@ -0,0 +1 @@
+- .pro: maybe add an install target
diff --git a/confclerk.pro b/confclerk.pro
new file mode 100644 (file)
index 0000000..0b88c76
--- /dev/null
@@ -0,0 +1,45 @@
+# confclerk.pro
+
+QMAKEVERSION = $$[QMAKE_VERSION]
+ISQT4 = $$find(QMAKEVERSION, ^[2-9])
+isEmpty( ISQT4 ) {
+       error("Use the qmake include with Qt4.4 or greater, on Debian that is qmake-qt4");
+}
+
+TEMPLATE = subdirs
+SUBDIRS = src
+
+# The global.pri defines the VERSION of the project
+include(src/global.pri)
+
+
+QMAKE_DISTCLEAN += src/bin/*.a
+QMAKE_EXTRA_TARGETS += changelog icon man release tarball
+
+changelog.target = ChangeLog
+changelog.commands = \
+       svn up && svn2cl --group-by-day --reparagraph
+changelog.CONFIG = phony
+
+icon.target = data/$${TARGET}.png
+icon.commands = convert data/$${TARGET}.svg data/$${TARGET}.png
+icon.depends = data/$${TARGET}.svg
+
+man.target = data/$${TARGET}.1
+man.commands = pod2man --utf8 --center=\"Offlince conference scheduler\" --release=\"Version $${VERSION}\" data/$${TARGET}.pod > data/$${TARGET}.1
+man.depends = data/$${TARGET}.pod
+
+release.depends = tarball
+
+tarball.target = $${TARGET}-$${VERSION}.tar.gz
+tarball.commands = \
+       $(DEL_FILE) -r $${TARGET}-$${VERSION} ; \
+       $(MKDIR) $${TARGET}-$${VERSION} ; \
+       $(COPY_DIR) * $${TARGET}-$${VERSION}/ ; \
+       $(DEL_FILE) $${TARGET}-$${VERSION}/*.pro.user \
+               $${TARGET}-$${VERSION}/$${TARGET}-$${VERSION}.tar.gz \
+               $(DEL_FILE) -r $${TARGET}-$${VERSION}/$${TARGET}-$${VERSION} \
+               $${TARGET}-$${VERSION}/Makefile ; \
+       tar -cz --exclude=.svn -f $$tarball.target $${TARGET}-$${VERSION} ; \
+       $(DEL_FILE) -r $${TARGET}-$${VERSION}
+tarball.depends = changelog icon man distclean
diff --git a/data/confclerk.1 b/data/confclerk.1
new file mode 100644 (file)
index 0000000..f788e51
--- /dev/null
@@ -0,0 +1,182 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.16)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\" ========================================================================
+.\"
+.IX Title "CONFCLERK 1"
+.TH CONFCLERK 1 "2011-06-28" "Version 0.5.0" "Offlince conference scheduler"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+ConfClerk \- offline conference scheduler
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBconfclerk\fR
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBConfClerk\fR is an application written in Qt, which makes conference
+schedules available offline.  It displays the conference schedule
+from various views, support searches on various items (speaker, speech topic,
+location, etc.) and enables you to select favorite events and create your own
+schedule.
+.PP
+At the moment \fBConfClerk\fR is able to import schedules in \s-1XML\s0 format created by
+the PentaBarf conference management system used by e.g. \s-1FOSDEM\s0, DebConf, and
+the \s-1CCC\s0.
+.PP
+ConfClerk is targetted at mobile devices like the Nokia N810 and N900 but
+works on any sytem running Qt.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+None.
+.SH "CONFIGURATION"
+.IX Header "CONFIGURATION"
+The configuration can be done via the graphical interface.
+.PP
+The configuration is saved in the default QSettings location, i.e.:
+.IP "Linux" 4
+.IX Item "Linux"
+\&\fI~/.config/Toastfreeware/ConfClerk.conf\fR
+.IP "Windows" 4
+.IX Item "Windows"
+In the registry (search for the Toastfreeware key, should be at
+\&\fIHKEY_CURRENT_USER\eSoftware\eToastfreeware\eDesafinado\fR).
+.IP "Other \s-1OS\s0" 4
+.IX Item "Other OS"
+Cf. the QSettings documentation at 
+http://doc.qt.nokia.com/stable/qsettings.html#locations\-where\-application\-settings\-are\-stored <http://doc.qt.nokia.com/stable/qsettings.html#locations-where-application-settings-are-stored>.
+.SH "FILES"
+.IX Header "FILES"
+\&\fBConfClerk\fR keeps its database in the location proposed by the \s-1XDG\s0 Base
+Directory specification http://standards.freedesktop.org/basedir\-spec/basedir\-spec\-latest.html <http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html>:
+.PP
+So the configuration (see \*(L"\s-1CONFIGURATION\s0\*(R") is stored at
+\&\fI~/.config/Toastfreeware/ConfClerk.conf\fR and the database is kept at
+\&\fI~/.local/share/data/Toastfreeware/ConfClerk/ConfClerk.sqlite\fR.
+.SH "COPYRIGHT AND LICENSE"
+.IX Header "COPYRIGHT AND LICENSE"
+.SS "Main code"
+.IX Subsection "Main code"
+.Vb 3
+\&    Copyright (C) 2010 Ixonos Plc.
+\&    Copyright (C) 2011, Philipp Spitzer <philipp@toastfreeware.priv.at>
+\&    Copyright (C) 2011, gregor herrmann <gregor@toastfreeware.priv.at>
+\&
+\&    This program is free software; you can redistribute it and/or modify
+\&    it under the terms of the GNU General Public License as published by
+\&    the Free Software Foundation; either version 2 of the License, or
+\&    (at your option) any later version.
+\&
+\&    This program is distributed in the hope that it will be useful,
+\&    but WITHOUT ANY WARRANTY; without even the implied warranty of
+\&    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+\&    GNU General Public License for more details.
+\&
+\&    You should have received a copy of the GNU General Public License along
+\&    with this program; if not, write to the Free Software Foundation, Inc.,
+\&    51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA.
+.Ve
+.SS "Additional resources"
+.IX Subsection "Additional resources"
+.IP "data/confclerk.*:" 4
+.IX Item "data/confclerk.*:"
+.Vb 1
+\&    Copyright (C) 2011, Christian Kling <kling_christian@gmx.at>
+\&
+\&    This program is free software; you can redistribute it and/or modify
+\&    it under the terms of the GNU General Public License as published by
+\&    the Free Software Foundation; either version 2 of the License, or
+\&    (at your option) any later version.
+.Ve
+.IP "icons/*" 4
+.IX Item "icons/*"
+All icons are taken from the Debian package gnome-icon-theme, which contains
+the following notice (as of 2011\-06\-24):
+.Sp
+.Vb 12
+\&    Copyright © 2002\-2008:
+\&      Ulisse Perusin <uli.peru@gmail.com>
+\&      Riccardo Buzzotta <raozuzu@yahoo.it>
+\&      Josef Vybíral <cornelius@vybiral.info>
+\&      Hylke Bons <h.bons@student.rug.nl>
+\&      Ricardo González <rick@jinlabs.com>
+\&      Lapo Calamandrei <calamandrei@gmail.com>
+\&      Rodney Dawes <dobey@novell.com>
+\&      Luca Ferretti <elle.uca@libero.it>
+\&      Tuomas Kuosmanen <tigert@gimp.org>
+\&      Andreas Nilsson <nisses.mail@home.se>
+\&      Jakub Steiner <jimmac@novell.com>
+\&
+\&    GNOME icon theme is distributed under the terms of either
+\&    GNU LGPL v.3 or Creative Commons BY\-SA 3.0 license.
+.Ve
+.IP "src/icons/emblem\-new*" 4
+.IX Item "src/icons/emblem-new*"
+.Vb 1
+\&    Copyright (C) 2011, Philipp Spitzer <philipp@toastfreeware.priv.at>
+\&
+\&    This program is free software; you can redistribute it and/or modify
+\&    it under the terms of the GNU General Public License as published by
+\&    the Free Software Foundation; either version 2 of the License, or
+\&    (at your option) any later version.
+.Ve
diff --git a/data/confclerk.desktop b/data/confclerk.desktop
new file mode 100644 (file)
index 0000000..1a6aef0
--- /dev/null
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Name=ConfClerk
+GenericName=Offline conference scheduler
+Exec=confclerk
+Icon=confclerk
+Categories=Office;Calendar;
diff --git a/data/confclerk.png b/data/confclerk.png
new file mode 100644 (file)
index 0000000..4def111
Binary files /dev/null and b/data/confclerk.png differ
diff --git a/data/confclerk.pod b/data/confclerk.pod
new file mode 100644 (file)
index 0000000..0c834cd
--- /dev/null
@@ -0,0 +1,128 @@
+=encoding utf8
+
+=head1 NAME
+
+ConfClerk - offline conference scheduler
+
+=head1 SYNOPSIS
+
+B<confclerk>
+
+=head1 DESCRIPTION
+
+B<ConfClerk> is an application written in Qt, which makes conference
+schedules available offline.  It displays the conference schedule
+from various views, support searches on various items (speaker, speech topic,
+location, etc.) and enables you to select favorite events and create your own
+schedule.
+
+At the moment B<ConfClerk> is able to import schedules in XML format created by
+the PentaBarf conference management system used by e.g. FOSDEM, DebConf, and
+the CCC.
+
+ConfClerk is targetted at mobile devices like the Nokia N810 and N900 but
+works on any sytem running Qt.
+
+=head1 OPTIONS
+
+None.
+
+=head1 CONFIGURATION
+
+The configuration can be done via the graphical interface.
+
+The configuration is saved in the default QSettings location, i.e.:
+
+=over
+
+=item Linux
+
+F<~/.config/Toastfreeware/ConfClerk.conf>
+
+=item Windows
+
+In the registry (search for the Toastfreeware key, should be at
+F<HKEY_CURRENT_USER\Software\Toastfreeware\Desafinado>).
+
+=item Other OS
+
+Cf. the QSettings documentation at 
+L<http://doc.qt.nokia.com/stable/qsettings.html#locations-where-application-settings-are-stored>.
+
+=back
+
+=head1 FILES
+
+B<ConfClerk> keeps its database in the location proposed by the XDG Base
+Directory specification L<http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html>:
+
+So the configuration (see L</"CONFIGURATION">) is stored at
+F<~/.config/Toastfreeware/ConfClerk.conf> and the database is kept at
+F<~/.local/share/data/Toastfreeware/ConfClerk/ConfClerk.sqlite>.
+
+=head1 COPYRIGHT AND LICENSE
+
+=head2 Main code
+
+    Copyright (C) 2010 Ixonos Plc.
+    Copyright (C) 2011, Philipp Spitzer <philipp@toastfreeware.priv.at>
+    Copyright (C) 2011, gregor herrmann <gregor@toastfreeware.priv.at>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+=head2 Additional resources
+
+=over
+
+=item data/confclerk.*:
+
+    Copyright (C) 2011, Christian Kling <kling_christian@gmx.at>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+=item icons/*
+
+All icons are taken from the Debian package gnome-icon-theme, which contains
+the following notice (as of 2011-06-24):
+
+    Copyright © 2002-2008:
+      Ulisse Perusin <uli.peru@gmail.com>
+      Riccardo Buzzotta <raozuzu@yahoo.it>
+      Josef Vybíral <cornelius@vybiral.info>
+      Hylke Bons <h.bons@student.rug.nl>
+      Ricardo González <rick@jinlabs.com>
+      Lapo Calamandrei <calamandrei@gmail.com>
+      Rodney Dawes <dobey@novell.com>
+      Luca Ferretti <elle.uca@libero.it>
+      Tuomas Kuosmanen <tigert@gimp.org>
+      Andreas Nilsson <nisses.mail@home.se>
+      Jakub Steiner <jimmac@novell.com>
+
+    GNOME icon theme is distributed under the terms of either
+    GNU LGPL v.3 or Creative Commons BY-SA 3.0 license.
+
+=item src/icons/emblem-new*
+
+    Copyright (C) 2011, Philipp Spitzer <philipp@toastfreeware.priv.at>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+=back
diff --git a/data/confclerk.svg b/data/confclerk.svg
new file mode 100644 (file)
index 0000000..43eec67
--- /dev/null
@@ -0,0 +1,623 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="584.06"
+   height="584.06"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.0 r9654"
+   sodipodi:docname="appicon.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.03"
+     inkscape:cx="242.41603"
+     inkscape:cy="207.66768"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1678"
+     inkscape:window-height="1029"
+     inkscape:window-x="0"
+     inkscape:window-y="19"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-84.40241,-69.817236)">
+    <path
+       style="fill:#f5bd91;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 413.59223,482.69893 c -2.91262,12.62136 -7.76699,19.41748 -14.5631,20.38835 -6.79612,0.97088 -26.2136,-18.4466 -26.2136,-18.4466 z"
+       id="path4031"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#f5bd91;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 230.09709,480.75718 c -11.65049,20.38835 -14.56311,33.00971 -6.79612,35.92234 7.76699,2.91262 17.47573,4.85436 23.30097,0 5.82524,-4.85437 32.03884,-35.92234 32.03884,-35.92234 z"
+       id="path4027"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#f5bd91;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 133.00971,427.35913 c -31.06796,7.76699 -54.368933,10.67961 -46.601943,22.33009 7.76699,11.65049 19.417473,21.35923 33.980583,14.56311 14.56311,-6.79612 38.83495,-16.50485 38.83495,-16.50485 z"
+       id="path4025"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#f5bd91;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 138.83495,365.2232 c -33.98058,9.70874 -45.631067,13.59224 -29.12621,18.44661 16.50485,4.85437 36.8932,0 36.8932,0 z"
+       id="path4023"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#080b0e;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 400.97087,361.33971 230.09709,-157.28155 36.89321,92.23301 -156.31068,89.32038 z"
+       id="path4021"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:type="arc"
+       style="color:#000000;fill:#898a9b;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3753"
+       sodipodi:cx="353.0303"
+       sodipodi:cy="350.84705"
+       sodipodi:rx="210.60606"
+       sodipodi:ry="43.939392"
+       d="m 563.63637,350.84705 a 210.60606,43.939392 0 1 1 -421.21213,0 210.60606,43.939392 0 1 1 421.21213,0 z"
+       transform="matrix(1.1688479,-0.12124867,0.13440817,2.3823545,-90.098484,-409.12695)" />
+    <path
+       sodipodi:type="arc"
+       style="color:#000000;fill:#9e9da7;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3753-2"
+       sodipodi:cx="353.0303"
+       sodipodi:cy="350.84705"
+       sodipodi:rx="210.60606"
+       sodipodi:ry="43.939392"
+       d="m 563.63637,350.84705 a 210.60606,43.939392 0 1 1 -421.21213,0 210.60606,43.939392 0 1 1 421.21213,0 z"
+       transform="matrix(1.0066483,-0.10442314,0.11575651,2.051758,-27.340698,-300.7752)" />
+    <rect
+       style="color:#000000;fill:#34b5ce;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect3755"
+       width="296.9697"
+       height="195.45454"
+       x="217.99059"
+       y="215.85573" />
+    <path
+       style="fill:#fafafd;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 219.50574,227.97695 211.92998,362.82544 524.05119,373.4315 511.92998,234.03756 z"
+       id="path3757"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafafd;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 216.37094,362.92993 0,7.75862 297.41379,3.44828 z"
+       id="path3759"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafafd;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 215.50887,362.92993 -1.72414,12.93104 300.86207,3.44827 -1.72413,-5.17241 -293.96552,-3.44828 z"
+       id="path3761"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafaf8;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 520.68129,375.86097 0.86206,6.89655 -59.48275,-3.44828 53.44827,0 -2.5862,-6.89655 z"
+       id="path3763"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafa0e;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 230.16404,210.34372 8.62069,-0.86206 -2.5862,33.62069 -6.89655,0 z"
+       id="path3765"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafa0e;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 259.90542,209.95836 8.62069,-0.86206 -2.5862,33.62069 -6.89655,0 z"
+       id="path3765-0"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafa0e;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 289.21576,209.91268 8.62069,-0.86206 -2.5862,33.62069 -6.89655,0 z"
+       id="path3765-2"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafa0e;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 318.52611,210.77475 8.62069,-0.86206 -2.5862,33.62069 -6.89655,0 z"
+       id="path3765-8"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafa0e;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 347.83645,209.91268 8.62069,-0.86206 -2.5862,33.62069 -6.89655,0 z"
+       id="path3765-3"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafa0e;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 375.42266,210.77475 8.62069,-0.86206 -2.5862,33.62069 -6.89655,0 z"
+       id="path3765-80"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafa0e;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 405.59508,210.77475 8.62069,-0.86206 -2.5862,33.62069 -6.89655,0 z"
+       id="path3765-4"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafa0e;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 436.62956,209.91268 8.62069,-0.86206 -2.5862,33.62069 -6.89655,0 z"
+       id="path3765-09"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafa0e;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 467.66404,209.91268 8.62069,-0.86206 -2.5862,33.62069 -6.89655,0 z"
+       id="path3765-1"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#fafa0e;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 497.83646,210.77475 8.62069,-0.86206 -2.5862,33.62069 -6.89655,0 z"
+       id="path3765-9"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 226.71577,247.41269 221.54335,352.5851 511.19853,363.792 501.71577,250.86097 z"
+       id="path3841"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 224.99163,264.65407 278.44828,4.31034"
+       id="path3843"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 224.99163,282.75752 279.31035,8.62069"
+       id="path3845"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 223.26749,308.61959 506.88818,313.792"
+       id="path3847"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 222.40542,328.44717 508.61232,338.792"
+       id="path3849"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 270.68129,248.27476 268.09508,352.5851"
+       id="path3851"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 310.33646,249.13683 0,106.89655"
+       id="path3853"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 351.71577,249.9989 3.44827,109.48276"
+       id="path3855"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 397.40542,250.86097 2.58621,107.75862"
+       id="path3857"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 437.0606,251.72304 -0.86207,107.75862"
+       id="path3859"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 471.54335,249.9989 2.58621,112.93103"
+       id="path3861"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 236.78899,252.08202 c 0,0.19091 0.19091,0.57274 0,0.57274 -0.19091,0 0,-0.76365 0,-0.57274 0,0.23864 0,0.47728 0,0.71592 0,0.0477 0.0213,0.10049 0,0.14318 -0.0302,0.0604 -0.113,0.0828 -0.14318,0.14318 -0.0214,0.0427 0.0213,0.1005 0,0.14319 -0.0302,0.0604 -0.113,0.0828 -0.14318,0.14318 -0.0214,0.0427 0.0337,0.10943 0,0.14318 -0.0337,0.0337 -0.10944,-0.0337 -0.14319,0 -0.0392,0.0392 0.0388,0.49506 0,0.57273 -0.0302,0.0604 -0.11299,0.0828 -0.14318,0.14318 -0.0218,0.0436 0,0.36507 0,0.42955 0,0.0477 -0.0337,0.10944 0,0.14319 0.0337,0.0337 0.14318,-0.0477 0.14318,0 0,0.0675 -0.11299,0.0828 -0.14318,0.14318 -0.0427,0.0854 0.0427,0.20099 0,0.28636 -0.0302,0.0604 -0.113,0.0828 -0.14318,0.14319 -0.01,0.0195 -0.01,0.83954 0,0.85909 0.0302,0.0604 0.11299,0.0828 0.14318,0.14318 0.12727,0.25455 -0.0796,0.0795 -0.14318,0.14319 -0.0337,0.0338 0,0.0955 0,0.14318 0,0.0477 -0.0151,0.0979 0,0.14318 0.0337,0.10125 0.10943,0.18512 0.14318,0.28637 0.0186,0.0557 -0.0222,0.40733 0,0.42955 0.0337,0.0337 0.14318,-0.0477 0.14318,0 -0.19091,0 -0.14318,-0.0477 -0.14318,0.14318 0,0.0347 0.005,0.42494 0,0.42955 -0.0337,0.0337 -0.10943,-0.0337 -0.14318,0 -0.0337,0.0337 0,0.0955 0,0.14318 0,0.0477 -0.0213,0.10049 0,0.14318 0.0302,0.0604 0.11299,0.0828 0.14318,0.14318 0.0213,0.0427 0,0.0955 0,0.14319 0,0.28636 0,0.57273 0,0.85909 0,0.0645 0.0218,0.38598 0,0.42955 -0.0302,0.0604 -0.113,0.0828 -0.14318,0.14318 -0.0573,0.11455 0.0573,0.31501 0,0.42955 -0.0302,0.0604 -0.113,0.0828 -0.14319,0.14318 -0.0204,0.0408 0,0.68899 0,0.28637"
+       id="path3863"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 236.93217,252.65476 c 0.23864,0.0955 0.48603,0.17142 0.71592,0.28636 0.59589,0.29795 -0.15307,-0.01 0.14318,0.28637 0.0337,0.0337 0.10049,-0.0214 0.14318,0 0.0604,0.0302 0.087,0.10574 0.14318,0.14318 0.0888,0.0592 0.19091,0.0955 0.28637,0.14318 0.0954,0.0477 0.18512,0.10944 0.28637,0.14318 0.0453,0.0151 0.0954,0 0.14318,0 0.0477,0.0477 0.0828,0.113 0.14318,0.14319 0.0427,0.0213 0.10943,-0.0337 0.14318,0 0.0337,0.0337 -0.0337,0.10943 0,0.14318 0.0337,0.0337 0.1005,-0.0214 0.14319,0 0.0604,0.0302 0.0828,0.113 0.14318,0.14318 0.1975,0.0987 0.12807,-0.1734 0.28636,0.14318 0.0284,0.0568 -0.0293,0.40028 0,0.42955 0.0337,0.0337 0.10944,-0.0337 0.14319,0 0.0675,0.0675 -0.0675,0.21887 0,0.28637 0.0337,0.0337 0.10943,-0.0337 0.14318,0 0.0675,0.0675 -0.0675,0.21887 0,0.28636 0.0337,0.0337 0.10943,-0.0337 0.14318,0 0.0337,0.0337 -0.0337,0.10944 0,0.14319 0.0337,0.0337 0.10944,-0.0337 0.14318,0 0.0337,0.0337 0.0477,0.14318 0,0.14318 -0.0477,0 -0.0337,-0.10944 0,-0.14318 0.0222,-0.0222 0.37384,0.0186 0.42955,0 0.10125,-0.0337 0.18512,-0.10944 0.28637,-0.14319 0.0453,-0.0151 0.10049,0.0213 0.14318,0 0.0604,-0.0302 0.0828,-0.11299 0.14318,-0.14318 0.11455,-0.0573 0.315,0.0573 0.42955,0 0.12074,-0.0604 0.16562,-0.22599 0.28637,-0.28636 0.13499,-0.0675 0.28636,-0.0955 0.42954,-0.14319 0.14319,-0.0954 0.28199,-0.19783 0.42955,-0.28636 0.0915,-0.0549 0.18512,-0.10944 0.28637,-0.14319 0.0453,-0.0151 0.10943,0.0337 0.14318,0 0.0337,-0.0337 -0.0337,-0.10943 0,-0.14318 0.0337,-0.0337 0.10049,0.0213 0.14318,0 0.0604,-0.0302 0.087,-0.10574 0.14319,-0.14318 0.17759,-0.1184 0.38182,-0.19091 0.57273,-0.28637 0.0954,-0.0477 0.18512,-0.10943 0.28636,-0.14318 0.0453,-0.0151 0.10944,0.0337 0.14318,0 0.0337,-0.0337 -0.0337,-0.10943 0,-0.14318 0.0345,-0.0345 0.53828,0.0344 0.57273,0 0.0337,-0.0337 -0.0337,-0.10944 0,-0.14318 0.0337,-0.0337 0.1005,0.0213 0.14319,0 0.0604,-0.0302 0.0828,-0.113 0.14318,-0.14319 0.0854,-0.0427 0.21887,0.0675 0.28637,0 0.0337,-0.0337 -0.0337,-0.10943 0,-0.14318 0.0337,-0.0337 0.0954,0 0.14318,0 0.0477,0 0.0954,0 0.14318,0 0.38182,0 -0.0477,0.0477 0.14318,-0.14318 0.0337,-0.0337 0.14319,-0.0477 0.14319,0 0,0.0477 -0.10944,-0.0337 -0.14319,0 -0.0675,0.0675 0.0427,0.20099 0,0.28636 -0.0302,0.0604 -0.11299,0.0828 -0.14318,0.14319 -0.0474,0.0949 0.04,0.45272 0,0.57273 -0.0675,0.20249 -0.2346,0.36566 -0.28636,0.57273 -0.0232,0.0926 0.0187,0.19276 0,0.28636 -0.0296,0.148 -0.11359,0.28155 -0.14319,0.42955 -0.0187,0.0936 0.0157,0.19221 0,0.28637 -0.0324,0.1941 -0.11877,0.37746 -0.14318,0.57273 -0.0474,0.37887 0.0628,0.76883 0,1.14546 -0.0175,0.10527 -0.1173,0.18283 -0.14318,0.28636 -0.0463,0.18521 0.0604,0.39162 0,0.57273 -0.0214,0.064 -0.113,0.0828 -0.14319,0.14319 -0.0675,0.13499 -0.0871,0.28941 -0.14318,0.42954 -0.0396,0.0991 -0.0954,0.19091 -0.14318,0.28637 -0.0477,0.14318 -0.0871,0.28941 -0.14318,0.42955 -0.0396,0.0991 -0.10944,0.18512 -0.14319,0.28636 -0.0151,0.0453 0.0214,0.1005 0,0.14319 -0.0302,0.0604 -0.11299,0.0828 -0.14318,0.14318 -0.0147,0.0294 -0.0142,0.67339 0,0.71591 0.0338,0.10125 0.10944,0.18512 0.14318,0.28637 0.0285,0.0854 0,0.72037 0,0.85909"
+       id="path3865"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 253.68454,253.37067 c -0.23863,0 -0.47727,0 -0.71591,0 -0.0477,0 -0.10049,-0.0213 -0.14318,0 -0.12074,0.0604 -0.16562,0.22599 -0.28637,0.28636 -0.0427,0.0213 -0.10049,-0.0213 -0.14318,0 -0.0382,0.0191 -0.24819,0.26728 -0.28636,0.28637 -0.0427,0.0213 -0.10944,-0.0337 -0.14319,0 -0.0675,0.0675 0.0675,0.21887 0,0.28636 -0.0337,0.0337 -0.10943,-0.0337 -0.14318,0 -0.0337,0.0337 0.0337,0.10944 0,0.14319 -0.0337,0.0338 -0.10943,-0.0337 -0.14318,0 -0.0337,0.0338 0.0213,0.10049 0,0.14318 -0.0302,0.0604 -0.113,0.0828 -0.14319,0.14318 -0.0213,0.0427 0.0151,0.0979 0,0.14319 -0.0337,0.10124 -0.10354,0.18727 -0.14318,0.28636 -0.0561,0.14013 -0.0757,0.29455 -0.14318,0.42955 -0.0302,0.0604 -0.113,0.0828 -0.14318,0.14318 -0.0427,0.0854 0.0675,0.21887 0,0.28637 -0.0337,0.0337 -0.10944,-0.0337 -0.14319,0 -0.0337,0.0337 0.0151,0.0979 0,0.14318 -0.0337,0.10124 -0.0955,0.19091 -0.14318,0.28636 -0.0954,0.19091 -0.21142,0.37288 -0.28636,0.57274 -0.0691,0.18425 -0.081,0.38604 -0.14319,0.57273 -0.0337,0.10124 -0.10943,0.18512 -0.14318,0.28636 -0.0151,0.0453 0.0213,0.10049 0,0.14318 -0.0302,0.0604 -0.113,0.0828 -0.14318,0.14319 -0.0213,0.0427 0,0.0955 0,0.14318 0,0.0477 0,0.0954 0,0.14318 0,0.28637 0,0.57273 0,0.8591 0,0.14318 0,0.28636 0,0.42955 0,0.0954 -0.0302,0.1958 0,0.28636 0.0213,0.064 0.12184,0.0791 0.14318,0.14318 0.0302,0.0906 -0.0427,0.20099 0,0.28637 0.0213,0.0427 0.10943,-0.0337 0.14318,0 0.0337,0.0337 -0.0337,0.10943 0,0.14318 0.0337,0.0337 0.10944,-0.0337 0.14319,0 0.0337,0.0337 -0.0337,0.10944 0,0.14318 0.0337,0.0337 0.0979,-0.0151 0.14318,0 0.10124,0.0337 0.19757,0.084 0.28636,0.14319 0.0562,0.0374 0.0828,0.11299 0.14319,0.14318 0.0427,0.0213 0.0979,-0.0151 0.14318,0 0.10124,0.0337 0.18512,0.10943 0.28636,0.14318 0.0453,0.0151 0.1005,-0.0213 0.14319,0 0.0604,0.0302 0.0828,0.113 0.14318,0.14318 0.0435,0.0218 0.47386,0 0.57273,0 0.0799,0 0.65037,0.0218 0.71591,0 0.064,-0.0213 0.0828,-0.11299 0.14319,-0.14318 0.0427,-0.0213 0.0979,0.0151 0.14318,0 0.12641,-0.0421 0.74579,-0.35401 0.85909,-0.42955 0.0562,-0.0374 0.0828,-0.11299 0.14319,-0.14318 0.0427,-0.0213 0.10049,0.0213 0.14318,0 0.0604,-0.0302 0.0955,-0.0954 0.14318,-0.14318 0.0477,-0.0477 0.10575,-0.087 0.14319,-0.14318 0.0592,-0.0888 0.0883,-0.19486 0.14318,-0.28637 0.0885,-0.14756 0.18311,-0.29188 0.28636,-0.42955 0.0405,-0.054 0.113,-0.0828 0.14319,-0.14318 0.0213,-0.0427 -0.0214,-0.10049 0,-0.14318 0.0302,-0.0604 0.11299,-0.0828 0.14318,-0.14319 0.0427,-0.0854 -0.0302,-0.1958 0,-0.28636 0.0337,-0.10125 0.1173,-0.18283 0.14318,-0.28637 0.0231,-0.0926 0,-0.19091 0,-0.28636 0,-0.0955 0,-0.19091 0,-0.28637 0,-0.38182 0,-0.76364 0,-1.14546 0,-0.23864 0,-0.47727 0,-0.71591 0,-0.0941 0.0269,-0.34877 0,-0.42955 -0.0337,-0.10124 -0.10355,-0.18728 -0.14318,-0.28636 -0.11642,-0.29106 -0.11847,-0.46408 -0.28637,-0.71592 -0.0374,-0.0562 -0.10574,-0.087 -0.14318,-0.14318 -0.0592,-0.0888 -0.10943,-0.18512 -0.14318,-0.28637 -0.0151,-0.0453 0.0337,-0.10943 0,-0.14318 -0.0337,-0.0337 -0.10944,0.0337 -0.14318,0 -0.0337,-0.0337 0.0337,-0.10943 0,-0.14318 -0.0337,-0.0337 -0.10944,0.0337 -0.14319,0 -0.0337,-0.0337 0.0337,-0.10943 0,-0.14318 -0.0675,-0.0675 -0.20098,0.0427 -0.28636,0 -0.24892,-0.12446 -0.47728,-0.28637 -0.71592,-0.42955 z"
+       id="path3867"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 278.16878,254.22976 c 0.24915,0.6171 0.0895,1.21746 0.14318,1.86138 0.0241,0.28931 0.11112,0.57056 0.14318,0.8591 0.0158,0.1423 0,0.28636 0,0.42954 0,0.23864 0,0.47728 0,0.71592 0,0.23863 0.0392,0.48052 0,0.71591 -0.0248,0.14887 -0.11837,0.28067 -0.14318,0.42955 -0.0235,0.14123 0.0281,0.28914 0,0.42955 -0.0209,0.10465 -0.12564,0.18109 -0.14318,0.28636 -0.0314,0.18831 0.0211,0.38299 0,0.57273 -0.0387,0.34805 -0.21802,1.25771 -0.42955,1.57501 -0.0374,0.0562 -0.113,0.0828 -0.14318,0.14318 -0.0213,0.0427 0.0477,0.14319 0,0.14319 -0.0477,0 0,-0.0955 0,-0.14319"
+       id="path3869"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 275.01876,253.80022 c 0.71164,-0.17791 0.37595,-0.14319 1.00228,-0.14319 0.14318,0 0.28914,0.0281 0.42955,0 0.10465,-0.0209 0.18512,-0.10943 0.28636,-0.14318 0.0899,-0.03 0.45747,0 0.57273,0 0.47728,0 0.95455,0 1.43183,0 0.23864,0 0.47728,0 0.71591,0 0.0477,0 0.0955,0 0.14319,0 0.0477,0 0.10049,0.0213 0.14318,0 0.0604,-0.0302 0.0828,-0.113 0.14318,-0.14318 0.0427,-0.0213 0.0955,0 0.14318,0 0.0955,0 0.19091,0 0.28637,0 0.19091,0 0.38182,0 0.57273,0 0.0477,0 0.0954,0 0.14318,0 0.0477,0 0.10944,0.0337 0.14318,0 0.0337,-0.0337 -0.0477,-0.14318 0,-0.14318 0.0675,0 0.0828,0.11299 0.14319,0.14318 0.0427,0.0213 0.0955,0 0.14318,0 0.0955,0 0.19091,0 0.28637,0 0.0477,0 0.0955,0 0.14318,0 0.0477,0 0.10943,0.0337 0.14318,0 0.0337,-0.0337 -0.0477,-0.14318 0,-0.14318 0.0477,0 0,0.0954 0,0.14318"
+       id="path3871"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 284.75518,254.22976 c 0.11344,0.25352 -0.0579,0.71265 0,1.00228 0.18846,0.94231 0.14318,-0.079 0.14318,0.8591 0,0.0477 0,0.0954 0,0.14318 0,0.0477 0.0213,0.1005 0,0.14318 -0.0302,0.0604 -0.11299,0.0828 -0.14318,0.14319 -0.0213,0.0427 0.0151,0.0979 0,0.14318 -0.0337,0.10125 -0.1173,0.18283 -0.14318,0.28637 -0.0231,0.0926 0.0302,0.1958 0,0.28636 -0.0213,0.064 -0.12184,0.0792 -0.14318,0.14318 -0.0246,0.0738 0,0.85082 0,1.00228 0,0.034 -0.0161,0.54064 0,0.57273 0.0302,0.0604 0.11299,0.0828 0.14318,0.14318 0.0213,0.0427 -0.0213,0.1005 0,0.14319 0.0302,0.0604 0.113,0.0828 0.14318,0.14318 0.0213,0.0427 -0.0213,0.10049 0,0.14318 0.0296,0.0592 0.36886,0.38909 0.42955,0.42955 0.0888,0.0592 0.18512,0.10944 0.28636,0.14318 0.0453,0.0151 0.10944,-0.0337 0.14319,0 0.0338,0.0337 -0.0337,0.10944 0,0.14319 0.0338,0.0337 0.10943,-0.0337 0.14318,0 0.0337,0.0337 -0.0337,0.10943 0,0.14318 0.0337,0.0337 0.0979,-0.0151 0.14318,0 0.10125,0.0337 0.19757,0.084 0.28637,0.14318 0.0562,0.0374 0.0791,0.12184 0.14318,0.14318 0.0906,0.0302 0.19091,0 0.28637,0 0.0954,0.0477 0.18512,0.10944 0.28636,0.14319 0.0906,0.0302 0.20099,-0.0427 0.28637,0 0.237,0.1185 0.0385,0.27354 0.42954,0.14318 0.064,-0.0213 0.0828,-0.113 0.14319,-0.14318 0.0427,-0.0214 0.10049,0.0213 0.14318,0 0.65529,-0.32765 -0.60758,0.0593 0.42955,-0.28637 0.0453,-0.0151 0.10049,0.0213 0.14318,0 0.12074,-0.0604 0.17404,-0.21148 0.28637,-0.28636 0.66818,-0.44546 -0.0477,0.20682 0.42954,-0.42955 0.081,-0.108 0.23623,-0.16103 0.28637,-0.28637 0.0532,-0.13294 -0.0281,-0.28914 0,-0.42955 0.0209,-0.10464 0.10943,-0.18511 0.14318,-0.28636 0.0151,-0.0453 0,-0.0955 0,-0.14318 0,-0.0477 0.0213,-0.1005 0,-0.14319 -0.0302,-0.0604 -0.12184,-0.0792 -0.14318,-0.14318 -0.0244,-0.0733 0,-0.75673 0,-0.85909 0,-0.12624 -0.0305,-0.30755 0,-0.42955 0.0366,-0.14642 0.11837,-0.28068 0.14318,-0.42955 0.0235,-0.14123 -0.0281,-0.28915 0,-0.42955 0.0209,-0.10465 0.1173,-0.18283 0.14318,-0.28636 0.10864,-0.43454 -0.009,-0.16182 -0.14318,-0.42955 -0.0213,-0.0427 0,-0.0955 0,-0.14318 0,-0.0477 0,-0.0955 0,-0.14319 0,-0.23863 0,-0.47727 0,-0.71591"
+       id="path3873"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 300.36209,254.08658 c 0,-0.0478 0.0477,-0.14318 0,-0.14318 -0.0477,0 0.0337,0.10948 0,0.14318 -0.0392,0.0392 -0.61523,-0.0336 -0.71591,0 -0.10125,0.0337 -0.18512,0.10948 -0.28637,0.14318 -0.0808,0.0269 -0.33545,0 -0.42955,0 -0.14318,0 -0.29064,0.0347 -0.42954,0 -0.10354,-0.0259 -0.18283,-0.11728 -0.28637,-0.14318 -0.0926,-0.0231 -0.19376,0.0231 -0.28636,0 -0.10354,-0.0259 -0.18512,-0.10948 -0.28637,-0.14318 -0.12886,-0.043 -0.30068,0.0429 -0.42955,0 -0.10124,-0.0337 -0.18283,-0.11728 -0.28636,-0.14318 -0.0926,-0.0231 -0.19087,0 -0.28637,0 -0.14318,0 -0.28636,0 -0.42955,0 -0.38171,0 -0.76375,0 -1.14546,0 -0.11957,0 -0.95418,0 -1.00228,0 0.14318,0.42955 0.34611,0.84361 0.42955,1.28864 0.1088,0.58023 -0.0396,1.29175 -0.14318,1.86138 -0.0871,0.47887 -0.18078,0.95668 -0.28637,1.43182 -0.0559,0.25151 -0.17597,0.74471 -0.28636,1.00228 -0.0841,0.19619 -0.21142,0.37288 -0.28637,0.57273 -0.0691,0.18426 -0.0891,0.38352 -0.14318,0.57273 -0.0415,0.14512 -0.11358,0.28155 -0.14318,0.42955 -0.0187,0.0936 0.0302,0.19581 0,0.28636 -0.0213,0.064 -0.113,0.0828 -0.14318,0.14319 -0.0284,0.0568 0.0293,0.40027 0,0.42955 -0.0337,0.0337 -0.10944,-0.0337 -0.14319,0 -0.0337,0.0337 0,0.0954 0,0.14318 0,0.0477 -0.0337,0.10943 0,0.14318 0.0337,0.0337 0.10944,0.0337 0.14319,0 0.0337,-0.0337 -0.0337,-0.10943 0,-0.14318 0.0337,-0.0337 0.0954,0 0.14318,0 0.0477,0 0.0955,0 0.14318,0 0.28637,0 0.57273,0 0.8591,0 0.034,0 0.54064,0.016 0.57273,0 0.0604,-0.0302 0.0828,-0.113 0.14318,-0.14318 0.11313,-0.0566 0.52729,0.13669 0.57273,0.14318 0.18899,0.027 0.38182,0 0.57273,0 0.38182,0 0.76364,0 1.14546,0 0.0825,0 0.66373,-0.0261 0.71592,0 0.0604,0.0302 0.0828,0.113 0.14318,0.14318 0.0427,0.0213 0.0954,0 0.14318,0 0.0955,0 0.19091,0 0.28637,0 0.19091,0 0.38182,0 0.57273,0 0.0477,0 0.0954,0 0.14318,0 0.0477,0 0.10943,0.0337 0.14318,0 0.0337,-0.0337 -0.0477,-0.14318 0,-0.14318 0.0477,0 0,0.0955 0,0.14318"
+       id="path3875"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 294.06205,257.52297 c 0.47728,0 0.95456,0 1.43183,0 0.0955,0 0.19091,0 0.28637,0 0.0477,0 0.0979,0.0151 0.14318,0 0.10124,-0.0337 0.18171,-0.12226 0.28636,-0.14319 0.14041,-0.0281 0.28637,0 0.42955,0 0.14318,0 0.28637,0 0.42955,0 0.0955,0 0.19376,-0.0231 0.28637,0 0.10353,0.0259 0.18512,0.10944 0.28636,0.14319 0.0453,0.0151 0.0955,0 0.14318,0 0.0477,0 0.10944,0.0337 0.14319,0 0.0385,-0.0385 0.009,-0.29556 -0.14319,-0.14319 -0.0337,0.0337 0.0477,0.14319 0,0.14319 -0.0477,0 0,-0.0955 0,-0.14319"
+       id="path3877"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 314.25081,253.37067 c 0.49366,1.23416 0.12127,0.20967 0.42955,1.28864 0.0415,0.14512 0.11358,0.28155 0.14318,0.42955 0.0187,0.0936 -0.0231,0.19376 0,0.28637 0.0259,0.10353 0.10943,0.18512 0.14318,0.28636 0.0336,0.10081 0,0.86402 0,1.00228 0,0.23864 -0.0468,0.48191 0,0.71591 0.0742,0.37077 0.13047,0.1957 0.28637,0.42955 0.14045,0.21068 0.20875,0.48307 0.28636,0.71591 0.0477,0.14319 0.11359,0.28156 0.14319,0.42955 0.0468,0.23401 -0.0392,0.48052 0,0.71592 0.0248,0.14887 0.10657,0.28312 0.14318,0.42954 0.0333,0.13304 -0.0427,0.6306 0,0.71592 0.0302,0.0604 0.113,0.0828 0.14318,0.14318 0.0213,0.0427 -0.0213,0.10049 0,0.14318 0.17693,0.35386 0.14318,-0.0494 0.14318,0.28637 0,0.0477 -0.0477,0.14318 0,0.14318 0.23744,0 0.1004,-0.20079 0.14319,-0.28637 0.79,-1.58 -0.41934,1.51984 0.71591,-1.43182 0.21619,-0.5621 0.34579,-0.98869 0.42955,-1.57501 0.004,-0.0301 -0.0257,-0.52139 0,-0.57273 0.0302,-0.0604 0.11299,-0.0828 0.14318,-0.14318 0.0213,-0.0427 -0.009,-0.0964 0,-0.14319 0.0386,-0.19296 0.081,-0.38604 0.14318,-0.57273 0.7,-2.1 0.14485,-0.3857 0.71592,-1.71819 0.53079,-1.23852 -0.17454,0.20588 0.28636,-0.71591 0.0477,-0.0955 0.10944,-0.18512 0.14318,-0.28637 0.0302,-0.0906 -0.0427,-0.20099 0,-0.28636 0.0859,-0.17182 0.34364,-0.25773 0.42955,-0.42955 0.0427,-0.0854 -0.0955,-0.28637 0,-0.28637 0.0477,0 0.0337,0.10944 0,0.14319 -0.0636,0.0636 -0.27045,-0.11137 -0.14318,0.14318 0.0302,0.0604 0.113,0.0828 0.14318,0.14318 0.0213,0.0427 0,0.0955 0,0.14318 0.0477,0.0477 0.113,0.0828 0.14318,0.14319 0.0213,0.0427 -0.0213,0.10049 0,0.14318 0.0302,0.0604 0.12184,0.0791 0.14319,0.14318 0.0195,0.0586 0,0.97628 0,1.00228 0,0.0477 -0.0151,0.0979 0,0.14318 0.0337,0.10125 0.10943,0.18512 0.14318,0.28637 0.0151,0.0453 -0.0213,0.10049 0,0.14318 0.0302,0.0604 0.113,0.0828 0.14318,0.14318 0.0213,0.0427 -0.0213,0.1005 0,0.14319 0.0302,0.0604 0.113,0.0828 0.14319,0.14318 0.0213,0.0427 -0.0151,0.0979 0,0.14318 0.0421,0.12641 0.35401,0.7458 0.42954,0.8591 0.0374,0.0562 0.10575,0.087 0.14319,0.14318 0.0592,0.0888 0.084,0.19757 0.14318,0.28637 0.0374,0.0562 0.113,0.0828 0.14318,0.14318 0.0394,0.0788 -0.0373,0.74716 0,0.85909 0.0213,0.064 0.10574,0.087 0.14318,0.14319 0.0592,0.0888 0.10355,0.18727 0.14319,0.28636 0.1121,0.28027 0.17426,0.57883 0.28636,0.8591 0.0396,0.0991 0.10944,0.18512 0.14318,0.28636 0.0302,0.0906 -0.0675,0.21887 0,0.28637 0.0337,0.0337 0.14319,-0.0477 0.14319,0 0,0.0477 -0.10944,-0.0337 -0.14319,0 -0.0337,0.0337 0,0.0954 0,0.14318 0,0.0477 -0.0151,0.0979 0,0.14318 0.0337,0.10125 0.12226,0.18172 0.14319,0.28637 0,0.81428 -0.064,0.0943 0.14318,0.71591 0.0151,0.0453 -0.0337,0.10944 0,0.14319 0.0337,0.0337 0.10943,0.0337 0.14318,0 0.0222,-0.0222 -0.0186,-0.37384 0,-0.42955 0.0337,-0.10125 0.0955,-0.19091 0.14319,-0.28637 0.0477,-0.19091 0.0954,-0.38182 0.14318,-0.57273 0.20843,-0.83373 0.45154,-1.729 0.57273,-2.57729 0.027,-0.18899 -0.0237,-0.38329 0,-0.57273 0.061,-0.48793 0.36133,-1.2954 0.57273,-1.71819 0.077,-0.15392 0.23195,-0.26629 0.28636,-0.42955 0.0194,-0.0582 -0.0327,-0.7936 0,-0.85909 0.0302,-0.0604 0.10575,-0.087 0.14319,-0.14319 0.0592,-0.0888 0.0954,-0.19091 0.14318,-0.28636 0.0477,-0.0955 0.10943,-0.18512 0.14318,-0.28637 0.0374,-0.11203 -0.0599,-0.28636 0,-0.28636 0.0477,0 0,0.0955 0,0.14318"
+       id="path3879"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 333.00774,253.80022 c 0.0477,0 0.14318,0.0477 0.14318,0 0,-0.0477 -0.0955,0 -0.14318,0 -0.0954,0 -0.19097,0 -0.28637,0 -0.38182,0 0.0477,0.0477 -0.14318,-0.14319 -0.0338,-0.0337 -0.0955,0 -0.14318,0 -0.16633,0 -0.58612,0.0324 -0.71592,0 -0.10353,-0.0259 -0.18512,-0.10948 -0.28636,-0.14318 -0.0314,-0.0105 -0.55143,-0.0106 -0.57273,0 -0.0604,0.0302 -0.0828,0.11298 -0.14319,0.14318 -0.003,0.002 -0.95777,0.0148 -1.00227,0 -0.0641,-0.0213 -0.0828,-0.11298 -0.14319,-0.14318 -0.0847,-0.0423 -0.73292,0.0315 -0.85909,0 -0.10354,-0.0259 -0.18283,-0.11728 -0.28637,-0.14318 -0.32412,-0.081 -0.69312,0.20257 -1.00228,0 -0.22551,0.60135 -0.52234,1.20631 -0.57273,1.86137 -0.0293,0.3807 0.0254,0.76449 0,1.14546 -0.0224,0.33674 -0.11515,0.66596 -0.14318,1.00228 -0.0357,0.42807 0,0.8591 0,1.28865 0,0.28636 0,0.57273 0,0.85909 0,0.034 0.0161,0.54064 0,0.57273 -0.0302,0.0604 -0.113,0.0828 -0.14318,0.14319 -0.0213,0.0427 0.0213,0.10049 0,0.14318 -0.0302,0.0604 -0.0955,0.0954 -0.14319,0.14318 -0.0477,0.0477 -0.0954,0.0955 -0.14318,0.14318 -0.0477,0.0477 -0.0955,0.0955 -0.14318,0.14319 -0.0477,0.0477 -0.12184,0.0791 -0.14318,0.14318 -0.0302,0.0906 0.0302,0.19581 0,0.28636 -0.0213,0.064 -0.113,0.0828 -0.14319,0.14319 -0.0427,0.0854 0.0675,0.21887 0,0.28636 -0.0337,0.0337 -0.14318,0.0477 -0.14318,0 0,-0.0477 0.0955,0 0.14318,0 0.0477,0 0.0955,0 0.14319,0 0.33409,0 0.66818,0 1.00228,0 0.47727,0 0.95455,0 1.43182,0 0.16633,0 0.58611,-0.0324 0.71592,0 0.10353,0.0259 0.18512,0.10944 0.28636,0.14319 0.0935,0.0311 0.68791,0 0.8591,0 0.57273,0 1.14546,0 1.71819,0"
+       id="path3881"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 326.56452,257.52297 c 0.42955,0 0.85909,0 1.28864,0 0.0955,0 0.19091,0 0.28637,0 0.0477,0 0.10049,-0.0214 0.14318,0 0.0604,0.0302 0.0828,0.11299 0.14318,0.14318 0.0854,0.0427 0.20099,-0.0427 0.28637,0 0.0604,0.0302 0.0792,0.12184 0.14318,0.14318 0.0815,0.0272 0.58106,0 0.71591,0 0.0645,0 0.38598,0.0218 0.42955,0 0.0604,-0.0302 0.0828,-0.113 0.14318,-0.14318 0.0518,-0.0259 0.61633,0 0.71592,0"
+       id="path3883"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 336.15776,253.80022 c -0.0477,0.19091 -0.11084,0.37862 -0.14319,0.57273 -0.0157,0.0942 0,0.19091 0,0.28636 0,0.14319 0,0.28637 0,0.42955 0,0.57273 0,1.14546 0,1.71819 0,0.23864 0.0392,0.48052 0,0.71592 -0.0248,0.14887 -0.11837,0.28067 -0.14318,0.42954 -0.0235,0.14124 0.0281,0.28915 0,0.42955 -0.0209,0.10465 -0.12225,0.18172 -0.14318,0.28637 0,1.09229 0.064,-0.11295 -0.14319,0.71591 -10e-4,0.005 7.7e-4,0.42879 0,0.42955 -0.0337,0.0337 -0.10943,-0.0337 -0.14318,0 -0.0337,0.0337 0,0.0955 0,0.14318 0,0.28637 0,0.57273 0,0.8591 0,0.0477 0,0.0954 0,0.14318 0,0.0477 -0.0337,0.10943 0,0.14318 0.19091,0.19091 0.14318,-0.23864 0.14318,0.14318"
+       id="path3885"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 336.01457,253.22749 c 0.28637,0 0.57494,0.0355 0.8591,0 0.1059,-0.0132 0.18512,-0.10944 0.28636,-0.14319 0.0899,-0.0299 0.45747,0 0.57273,0 0.12906,0 0.6258,-0.03 0.71592,0 0.10124,0.0337 0.18171,0.12226 0.28636,0.14319 0.14041,0.0281 0.28637,0 0.42955,0 0.0477,0 0.1005,-0.0214 0.14318,0 0.0604,0.0302 0.0828,0.11299 0.14319,0.14318 0.0854,0.0427 0.20098,-0.0427 0.28636,0 0.0604,0.0302 0.0828,0.113 0.14318,0.14318 0.0427,0.0213 0.0955,0 0.14319,0 0.0477,0.0477 0.0828,0.113 0.14318,0.14318 0.0427,0.0213 0.0955,0 0.14318,0 0.0955,0.0477 0.19757,0.084 0.28637,0.14319 0.21897,0.14598 0.11248,0.1977 0.28636,0.42954 0.081,0.108 0.19091,0.19091 0.28637,0.28637 0.0477,0.0477 0.12184,0.0791 0.14318,0.14318 0.0302,0.0906 -0.0427,0.20099 0,0.28637 0.0213,0.0427 0.10944,-0.0337 0.14318,0 0.0675,0.0675 -0.0427,0.20099 0,0.28636 0.0302,0.0604 0.113,0.0828 0.14319,0.14319 0.0213,0.0427 -0.0151,0.0979 0,0.14318 0.0338,0.10124 0.1173,0.18283 0.14318,0.28636 0.0463,0.18521 -0.0374,0.38553 0,0.57273 0.0296,0.148 0.11358,0.28156 0.14318,0.42955 0.0374,0.18721 0,0.38182 0,0.57273 0,0.0477 0,0.0955 0,0.14319 0,0.0477 0.0214,0.10049 0,0.14318 -0.0604,0.12074 -0.21148,0.17404 -0.28636,0.28636 -0.0755,0.1133 -0.38742,0.73269 -0.42955,0.8591 -0.0151,0.0453 0,0.0954 0,0.14318 -0.0477,0.0477 -0.113,0.0828 -0.14318,0.14318 -0.0427,0.0854 0.0675,0.21887 0,0.28637 -0.0337,0.0337 -0.10944,-0.0337 -0.14319,0 -0.0337,0.0337 0.0213,0.10049 0,0.14318 -0.10964,0.2193 -0.25515,0.11197 -0.42954,0.28637 -0.0755,0.0755 -0.084,0.19757 -0.14319,0.28636 -0.0374,0.0562 -0.0955,0.0955 -0.14318,0.14319 -0.0477,0.0477 -0.0828,0.11299 -0.14318,0.14318 -0.0854,0.0427 -0.20099,-0.0427 -0.28637,0 -0.0604,0.0302 -0.0828,0.113 -0.14318,0.14318 -0.0427,0.0213 -0.10049,-0.0213 -0.14318,0 -0.0604,0.0302 -0.0828,0.113 -0.14319,0.14318 -0.0427,0.0213 -0.10049,-0.0213 -0.14318,0 -0.0604,0.0302 -0.087,0.10575 -0.14318,0.14319 -0.0888,0.0592 -0.19757,0.084 -0.28637,0.14318 -0.12355,0.0824 -0.31771,0.31771 -0.42954,0.42955 -0.0477,0.0477 -0.0828,0.11299 -0.14319,0.14318 -0.0427,0.0213 -0.0979,-0.0151 -0.14318,0 -0.10125,0.0337 -0.18512,0.10943 -0.28637,0.14318 -0.0453,0.0151 -0.10943,-0.0337 -0.14318,0 -0.0337,0.0337 0.0337,0.10944 0,0.14319 -0.0337,0.0337 -0.0954,0 -0.14318,0 -0.0477,0 -0.10943,0.0337 -0.14318,0 -0.0337,-0.0337 0.0337,-0.10944 0,-0.14319 -0.0337,-0.0337 -0.0979,0.0151 -0.14319,0 -0.20249,-0.0675 -0.38182,-0.19091 -0.57273,-0.28636 -0.0954,-0.0477 -0.18283,-0.1173 -0.28636,-0.14319 -0.0926,-0.0231 -0.19581,0.0302 -0.28637,0 -0.064,-0.0213 -0.0828,-0.11299 -0.14318,-0.14318 -0.0436,-0.0218 -0.36506,0 -0.42955,0 -0.0954,0 -0.19094,0 -0.28636,0 -0.0477,0 -0.14319,0.0477 -0.14319,0 0,-0.0477 0.0955,0 0.14319,0 0.0477,0 0.0955,0 0.14318,0"
+       id="path3887"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 358.9238,254.51613 c 0,0.33409 0,0.66819 0,1.00228 0,0.0477 0,0.0955 0,0.14318 0,0.0477 -0.0213,0.10049 0,0.14318 0.0302,0.0604 0.12184,0.0792 0.14318,0.14319 0.0259,0.0777 -0.005,1.10669 0,1.14546 0.0244,0.19526 0.11535,0.37792 0.14318,0.57273 0.065,0.45509 -0.0824,0.65937 -0.14318,1.14546 -0.0178,0.14208 0,0.28636 0,0.42955 0,0.23864 0,0.47727 0,0.71591 0,0.1699 -0.0278,1.0065 0,1.14546 0.0209,0.10465 0.12225,0.18172 0.14318,0.28637 0.0281,0.1404 0,0.28636 0,0.42955 0,0.0954 0.0231,0.19376 0,0.28636 -0.0259,0.10354 -0.1173,0.18283 -0.14318,0.28637 0,0.6518 0.0675,0.008 -0.14318,0.42954 -0.0213,0.0427 0.0213,0.1005 0,0.14319 -0.0302,0.0604 -0.113,0.0828 -0.14318,0.14318 -0.0214,0.0427 0.0477,0.14318 0,0.14318 -0.0477,0 0,-0.0955 0,-0.14318"
+       id="path3889"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 354.7715,253.9434 c 0.525,0 1.05001,0 1.57501,0 0.19091,0 0.38182,0 0.57273,0 0.14318,0 0.28915,0.0281 0.42955,0 0.10465,-0.0209 0.18171,-0.12225 0.28636,-0.14318 0.13897,-0.0278 0.97557,0 1.14547,0 0.76364,0 1.52728,0 2.29092,0 0.38182,0 0.76364,0 1.14546,0 0.0526,0 0.56697,-0.006 0.57273,0 0.0337,0.0337 0.0477,0.14318 0,0.14318 -0.0477,0 0,-0.0955 0,-0.14318"
+       id="path3891"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 365.79657,254.65931 c 0.22464,0.35958 -0.0749,0.77106 0,1.14546 0.0296,0.148 0.12651,0.27955 0.14318,0.42955 0.0316,0.28462 -0.0168,0.57323 0,0.8591 0.0309,0.52626 0.11811,1.04844 0.14318,1.57501 0.0911,1.91344 -0.10023,1.00228 0,3.00683 0.17481,3.49613 0.14318,-0.41762 0.14318,2.14774 0,0.23864 0,0.47728 0,0.71592 0,0.0477 0,0.0955 0,0.14318 0,0.0477 0.0213,0.10049 0,0.14318 -0.47487,0.47488 0.0675,-0.13499 -0.14318,0.28637 -0.0302,0.0604 -0.12184,0.0791 -0.14318,0.14318 -0.0453,0.13583 0,0.28636 0,0.42955"
+       id="path3893"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 366.08293,259.09797 c 0.23864,-0.0477 0.47728,-0.0955 0.71591,-0.14318 0.0955,0 0.19277,0.0187 0.28637,0 0.148,-0.0296 0.28067,-0.11837 0.42955,-0.14318 0.14123,-0.0235 0.28914,0.0281 0.42955,0 0.10465,-0.0209 0.18283,-0.1173 0.28636,-0.14318 0.11263,-0.0282 0.7102,0 0.8591,0 0.57273,0 1.14546,0 1.71819,0"
+       id="path3895"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 371.52387,254.22976 c 0,0.47762 0,0.95422 0,1.43183 0,0.28637 0,0.57273 0,0.8591 0,0.28636 -0.0285,0.57415 0,0.85909 0.0196,0.19581 0.11536,0.37793 0.14318,0.57273 0.0203,0.14175 0,0.28637 0,0.42955 0,0.14318 0,0.28637 0,0.42955 0,0.0954 0,0.19091 0,0.28636 0,0.0477 0.0337,0.10944 0,0.14319 -0.0337,0.0337 -0.10943,-0.0337 -0.14318,0 -0.0337,0.0337 0,0.0954 0,0.14318 0,0.0955 0,0.19091 0,0.28637 0,0.14318 0,0.28636 0,0.42954 0,0.14319 0.0281,0.28915 0,0.42955 -0.0209,0.10465 -0.10943,0.18512 -0.14318,0.28637 -0.0302,0.0905 0,0.19091 0,0.28636 0,0.0955 -0.0302,0.19581 0,0.28637 0.0213,0.064 0.113,0.0828 0.14318,0.14318 0.0419,0.0839 -0.0264,0.6104 0,0.71591 0.0259,0.10354 0.10944,0.18512 0.14318,0.28637 0.0302,0.0906 -0.0675,0.21887 0,0.28636 0.0337,0.0337 0.14319,-0.0477 0.14319,0 0,0.0477 -0.14319,0.0477 -0.14319,0 0,-0.0477 0.14319,-0.0477 0.14319,0 0,0.0675 -0.0955,0.0955 -0.14319,0.14319"
+       id="path3897"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 376.67845,254.51613 c 0,0.525 0,1.05001 0,1.57501 0,0.28636 -0.022,0.57357 0,0.8591 0.19718,2.56334 0.14318,-0.67371 0.14318,2.14773 0,1.55827 0.0755,0.0522 -0.14318,1.14547 -0.0187,0.0936 0,0.19091 0,0.28636 0,0.0477 0.0213,0.1005 0,0.14318 -0.0302,0.0604 -0.113,0.0828 -0.14318,0.14319 -0.0213,0.0427 0,0.0954 0,0.14318 0,0.32596 0.17061,0.56973 0.28636,0.8591 0.0825,0.20626 0.14246,0.52403 0.28637,0.71591 0.0145,0.0193 0.6545,0.68521 0.71591,0.71591 0.0854,0.0427 0.20099,-0.0427 0.28636,0 0.0604,0.0302 0.0828,0.113 0.14319,0.14318 0.037,0.0185 0.7576,0 0.85909,0 0.0347,0 0.42495,0.005 0.42955,0 0.0337,-0.0337 -0.0337,-0.10943 0,-0.14318 0.0337,-0.0338 0.10347,0.0265 0.14318,0 0.22465,-0.14976 0.36191,-0.40407 0.57273,-0.57273 0.26875,-0.215 0.5947,-0.3524 0.8591,-0.57273 0.15556,-0.12963 0.28637,-0.28636 0.42955,-0.42955 0.0955,-0.0955 0.20537,-0.17837 0.28636,-0.28636 0.064,-0.0854 0.0792,-0.20099 0.14319,-0.28637 0.081,-0.10799 0.20537,-0.17837 0.28636,-0.28636 0.064,-0.0854 0.0883,-0.19486 0.14318,-0.28637 0.0885,-0.14756 0.23195,-0.26629 0.28637,-0.42955 0.0453,-0.13583 -0.0235,-0.28831 0,-0.42954 0.0496,-0.29775 0.23674,-0.56135 0.28636,-0.8591 0.0235,-0.14123 0,-0.28637 0,-0.42955 0.0477,-0.14318 0.11359,-0.28155 0.14319,-0.42955 0.0227,-0.11364 -0.0356,-0.78788 0,-0.85909 0.0302,-0.0604 0.12184,-0.0792 0.14318,-0.14318 0.0395,-0.11859 -0.0455,-0.62486 0,-0.71592 0.0302,-0.0604 0.113,-0.0828 0.14318,-0.14318 0.0213,-0.0427 0,-0.0955 0,-0.14318 0,-0.0477 0.0213,-0.1005 0,-0.14319 -0.0302,-0.0604 -0.12681,-0.0777 -0.14318,-0.14318 -0.0346,-0.13841 0.0275,-0.83161 0,-0.85909 -0.0337,-0.0337 -0.10943,0.0337 -0.14318,0 -0.0337,-0.0337 -0.0337,-0.10944 0,-0.14319 0.0337,-0.0337 0.10943,0.0337 0.14318,0 0.0337,-0.0337 0,-0.0954 0,-0.14318"
+       id="path3899"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 407.89227,256.09114 c -0.35369,1.76841 0.08,-0.4401 -0.28637,1.57501 -0.0435,0.23944 -0.10876,0.47499 -0.14318,0.71591 -0.0135,0.0945 -0.0302,0.19581 0,0.28637 0.0466,0.13971 0.23536,0.102 0.14318,0.28636 -0.0604,0.12074 -0.24367,0.1583 -0.28636,0.28637 -0.0302,0.0906 0.0187,0.19276 0,0.28636 -0.0296,0.148 -0.10658,0.28313 -0.14319,0.42955 -0.0116,0.0463 0.0151,0.0979 0,0.14318 -0.0337,0.10125 -0.10943,0.18512 -0.14318,0.28637 -0.0151,0.0453 0,0.0954 0,0.14318 0,0.14318 0.0281,0.28915 0,0.42955 -0.0209,0.10465 -0.12225,0.18172 -0.14318,0.28636 -0.0281,0.14041 0.0281,0.28915 0,0.42955 0.0863,0.25915 -0.23195,0.2663 -0.28637,0.42955 -0.0453,0.13584 0,0.28637 0,0.42955 0,0.0477 0,0.0954 0,0.14318 0,0.0477 0.0337,0.10944 0,0.14318 -0.0337,0.0337 -0.14318,0.0477 -0.14318,0 0,-0.0477 0.10944,-0.0337 0.14318,0 0.0337,0.0337 0,0.0955 0,0.14319"
+       id="path3901"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 406.17408,255.08886 c 0.8181,-0.03 1.61921,-0.22816 2.4341,-0.28636 0.28564,-0.0204 0.57273,0 0.8591,0 0.28636,0 0.57273,0 0.85909,0 0.70634,0 0.84535,-0.0392 1.57501,0.14318 0.29284,0.0732 0.56625,0.21315 0.8591,0.28636 8.8e-4,2.2e-4 1.71336,0.28549 1.71819,0.28637 0.23944,0.0435 0.47404,0.11631 0.71591,0.14318 0.18975,0.0211 0.38182,0 0.57273,0 0.23864,0 0.47728,0 0.71592,0 0.19091,0 0.38329,-0.0237 0.57273,0 1.51588,0.18949 -0.35937,0.14318 1.14546,0.14318 0.0954,0 0.19091,0 0.28636,0 0.0477,0 0.10944,0.0337 0.14319,0 0.0337,-0.0337 0,-0.0954 0,-0.14318"
+       id="path3903"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 407.17635,259.24116 c 0.3341,0.0477 0.66538,0.12336 1.00228,0.14318 0.47645,0.028 0.95521,-0.0251 1.43183,0 0.73754,0.0388 1.31137,0.13232 2.00456,0.28637 0.1921,0.0427 0.37862,0.11083 0.57273,0.14318 0.0941,0.0157 0.19376,-0.0231 0.28636,0 0.10354,0.0259 0.18512,0.10943 0.28637,0.14318 0.0854,0.0285 0.72037,0 0.85909,0 0.0477,0 0.0955,0 0.14319,0 0.0477,0 0.10943,0.0337 0.14318,0 0.0337,-0.0337 0,-0.0955 0,-0.14318"
+       id="path3905"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 419.63325,257.09342 c -0.13891,0.26926 0.0695,0.58128 0,0.85909 -0.0259,0.10354 -0.0955,0.19091 -0.14319,0.28637 -0.0477,0.14318 -0.10657,0.28313 -0.14318,0.42955 -0.15356,0.61426 -0.15871,0.93672 -0.28637,1.57501 -0.0386,0.19296 -0.11535,0.37792 -0.14318,0.57273 -0.0203,0.14174 0.0281,0.28914 0,0.42954 -0.0209,0.10465 -0.10943,0.18512 -0.14318,0.28637 -0.0302,0.0906 0.0675,0.21887 0,0.28637 -0.0337,0.0337 -0.10943,-0.0337 -0.14318,0 -0.0337,0.0337 0.0477,0.14318 0,0.14318 -0.0477,0 0,-0.19091 0,-0.14318 0,0.0954 -0.0427,0.20098 0,0.28636 0.19091,0.38182 0.14318,-0.42955 0.14318,0.14318"
+       id="path3907"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 419.63325,255.51841 c 0.28636,-0.0955 0.57273,-0.19091 0.85909,-0.28637 0.14318,0 0.28915,0.0281 0.42955,0 0.10465,-0.0209 0.18283,-0.1173 0.28636,-0.14318 0.0552,-0.0138 0.80387,-0.0138 0.8591,0 0.10354,0.0259 0.18283,0.1173 0.28637,0.14318 0.0926,0.0231 0.19091,0 0.28636,0 0.0477,0 0.1005,-0.0213 0.14318,0 0.0604,0.0302 0.0828,0.113 0.14319,0.14319 0.0427,0.0213 0.10049,-0.0214 0.14318,0 0.0604,0.0302 0.0955,0.0954 0.14318,0.14318 0.0955,0.0955 0.19091,0.19091 0.28637,0.28636 0.0477,0.0477 0.10574,0.087 0.14318,0.14319 0.0592,0.0888 0.0954,0.19091 0.14318,0.28636 0.0477,0.0955 0.084,0.19757 0.14319,0.28637 0.15457,0.23186 0.28636,0.10048 0.28636,0.42955 0,0.0477 0.0337,0.10943 0,0.14318 -0.0337,0.0337 -0.10049,-0.0213 -0.14318,0 -0.0604,0.0302 -0.0955,0.0954 -0.14318,0.14318 -0.0477,0.0477 -0.113,0.0828 -0.14319,0.14318 -0.0427,0.0854 0.0675,0.21887 0,0.28637 -0.0675,0.0675 -0.20099,-0.0427 -0.28636,0 -0.65529,0.32764 0.60758,-0.0593 -0.42955,0.28636 -0.0808,0.0269 -0.33546,0 -0.42955,0 -0.33409,0 -0.66818,0 -1.00228,0 -0.034,0 -0.54064,-0.016 -0.57273,0 -0.0604,0.0302 -0.0828,0.113 -0.14318,0.14319 -0.0637,0.0319 -0.50724,-0.0218 -0.57273,0 -0.064,0.0213 -0.0828,0.11299 -0.14318,0.14318 -0.0777,0.0388 -0.53356,-0.0392 -0.57273,0 -0.0337,0.0337 -0.0337,0.10943 0,0.14318 0.0337,0.0337 0.10943,-0.0337 0.14318,0 0.0337,0.0337 -0.0214,0.1005 0,0.14318 0.0302,0.0604 0.0954,0.0955 0.14318,0.14319 0.0955,0.0954 0.2079,0.17651 0.28637,0.28636 0.16175,0.22646 0.28636,0.47728 0.42954,0.71592 0.14319,0.23863 0.2944,0.47263 0.42955,0.71591 0.10366,0.18658 0.18047,0.38741 0.28637,0.57273 0.1307,0.22873 0.34266,0.45524 0.42955,0.71591 0.0328,0.0985 -0.0422,0.34507 0,0.42955 0.0302,0.0604 0.12183,0.0791 0.14318,0.14318 0.0302,0.0906 -0.0355,0.19774 0,0.28637 0.0639,0.15977 0.2094,0.27563 0.28636,0.42955 0.0559,0.11183 0.16126,0.5908 0.28637,0.71591 0.0755,0.0755 0.2109,0.0677 0.28636,0.14318 0.0856,0.0856 -0.15476,0.28637 0.14319,0.28637 0.0477,0 0.0337,-0.10944 0,-0.14318 -0.0337,-0.0337 -0.0955,0 -0.14319,0"
+       id="path3909"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 427.93784,255.37523 c -0.0477,0.28636 -0.0955,0.57273 -0.14318,0.85909 0,0.14318 0.0203,0.28781 0,0.42955 -0.0278,0.19481 -0.12145,0.37715 -0.14319,0.57273 -0.0263,0.23718 0,0.47728 0,0.71591 0,0.42955 0,0.8591 0,1.28865 0,0.19091 0.0314,0.38442 0,0.57273 -0.0175,0.10527 -0.11729,0.18283 -0.14318,0.28636 -0.0315,0.12618 0.0424,0.77439 0,0.8591 -0.0302,0.0604 -0.12184,0.0792 -0.14318,0.14318 -0.0345,0.10362 0.0472,0.52553 0,0.57273 -0.0337,0.0337 -0.10944,-0.0337 -0.14318,0 -0.006,0.006 0,0.52015 0,0.57273"
+       id="path3911"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 450.27433,256.3775 c -0.19091,-0.0477 -0.37976,-0.10459 -0.57273,-0.14318 -0.1404,-0.0281 -0.28636,0 -0.42954,0 -0.23864,0 -0.47728,0 -0.71592,0 -0.39706,0 0.22856,0.0213 -0.42955,-0.14318 -0.10888,-0.0272 -0.59601,0 -0.71591,0 -0.0954,0 -0.19091,0 -0.28636,0 -0.0955,0 -0.19581,-0.0302 -0.28637,0 -0.064,0.0213 -0.0792,0.12184 -0.14318,0.14318 -0.21478,0.0716 -0.50114,-0.0716 -0.71592,0 -0.064,0.0213 -0.0828,0.113 -0.14318,0.14318 -0.0427,0.0213 -0.10049,-0.0213 -0.14318,0 -0.16415,0.0821 -0.19917,0.29876 -0.28637,0.42955 -0.0374,0.0562 -0.10574,0.087 -0.14318,0.14319 -0.0592,0.0888 -0.0954,0.19091 -0.14318,0.28636 -0.0477,0.0955 -0.10944,0.18512 -0.14318,0.28637 -0.0142,0.0425 -0.0147,0.68652 0,0.71591 0.0302,0.0604 0.10574,0.087 0.14318,0.14318 0.24109,0.36164 0.1897,0.55267 0.57273,0.8591 0.13437,0.1075 0.27563,0.2094 0.42955,0.28636 0.13499,0.0675 0.28941,0.0871 0.42955,0.14319 0.0991,0.0396 0.19091,0.0954 0.28636,0.14318 0.0955,0.0477 0.20099,0.0792 0.28637,0.14318 0.45085,0.33814 0.0937,0.30511 0.71591,0.42955 0.0936,0.0187 0.19276,-0.0187 0.28636,0 0.28754,-0.0329 0.46657,0.22403 0.71592,0.28636 0.0926,0.0232 0.19376,-0.0232 0.28636,0 0.10354,0.0259 0.18283,0.1173 0.28637,0.14319 0.0926,0.0231 0.20099,-0.0427 0.28636,0 0.0427,0.0213 -0.0337,0.10943 0,0.14318 0.0337,0.0337 0.10944,-0.0337 0.14319,0 0.0337,0.0337 0,0.0955 0,0.14318 0,0.0477 0.0213,0.1005 0,0.14318 -0.0302,0.0604 -0.113,0.0828 -0.14319,0.14319 -0.0213,0.0427 0.0213,0.10049 0,0.14318 -0.0302,0.0604 -0.11299,0.0828 -0.14318,0.14318 -0.0213,0.0427 0.0337,0.10944 0,0.14319 -0.0337,0.0337 -0.10049,-0.0213 -0.14318,0 -0.47488,0.47487 0.13499,-0.0675 -0.28637,0.14318 -0.0604,0.0302 -0.0828,0.113 -0.14318,0.14318 -0.0427,0.0213 -0.10943,-0.0337 -0.14318,0 -0.0337,0.0337 0.0337,0.10943 0,0.14318 -0.0337,0.0337 -0.1005,-0.0213 -0.14318,0 -0.14006,0.07 -0.14632,0.21634 -0.28637,0.28637 -0.0427,0.0213 -0.10049,-0.0214 -0.14318,0 -0.0604,0.0302 -0.0828,0.113 -0.14319,0.14318 -0.0854,0.0427 -0.20098,-0.0427 -0.28636,0 -0.0604,0.0302 -0.0791,0.12184 -0.14318,0.14318 -0.0906,0.0302 -0.19581,-0.0302 -0.28637,0 -0.064,0.0213 -0.0791,0.12184 -0.14318,0.14319 -0.0789,0.0263 -0.73759,0 -0.8591,0 -0.23864,0 -0.47727,0 -0.71591,0 -0.14318,0 -0.28747,0.0178 -0.42955,0 -0.24148,-0.0302 -0.47355,-0.12115 -0.71591,-0.14319 -0.28519,-0.0259 -0.57448,0.0316 -0.8591,0 -0.75413,-0.0838 -0.13663,-0.14154 -0.71591,-0.28636 -0.005,-10e-4 -0.42879,7.6e-4 -0.42955,0 -0.0337,-0.0337 0.0337,-0.10944 0,-0.14318 -0.0337,-0.0337 -0.10943,0.0337 -0.14318,0 -0.0337,-0.0337 -0.0337,-0.10944 0,-0.14319 0.0338,-0.0337 0.0955,0 0.14318,0"
+       id="path3913"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 451.56298,263.53664 c 0,0.0477 -0.0477,0.14318 0,0.14318 0.0477,0 0,-0.0955 0,-0.14318 0,-0.38182 -0.0477,0.0477 0.14318,-0.14319 0.0337,-0.0337 -0.0337,-0.10948 0,-0.14318 0.29637,-0.29625 -0.0116,0.45271 0.28637,-0.14318 0.0213,-0.0427 -0.0213,-0.10048 0,-0.14318 0.0302,-0.0604 0.11298,-0.0828 0.14318,-0.14319 0.0213,-0.0427 -0.0213,-0.10048 0,-0.14318 0.0859,-0.17182 0.34365,-0.25773 0.42955,-0.42955 0.0213,-0.0427 -0.0213,-0.10048 0,-0.14318 0.0302,-0.0604 0.10578,-0.087 0.14318,-0.14318 0.14045,-0.21068 0.20876,-0.48307 0.28636,-0.71592 0.24866,-0.74601 -0.0197,-0.15436 0.42955,-0.71591 0.28179,-0.35224 0.22702,-0.45662 0.57273,-0.71591 0.0854,-0.0641 0.21087,-0.0677 0.28637,-0.14318 0.27041,-0.27041 0.0676,-0.27028 0.14318,-0.57274 0.0536,-0.2143 0.35255,-0.56193 0.42955,-0.71591 0.0675,-0.13499 0.0757,-0.29455 0.14318,-0.42955 0.077,-0.15391 0.20937,-0.27563 0.28637,-0.42954 0.0675,-0.135 0.0757,-0.29456 0.14318,-0.42955 0.106,-0.212 0.89396,-0.64896 0.71591,-0.8591 0.28637,0.28637 0.61046,0.53942 0.8591,0.8591 0.0757,0.0973 0.27573,0.95973 0.28636,1.00228 0.0477,0.19091 0.0955,0.38182 0.14319,0.57273 0.0477,0.19091 0.11535,0.37792 0.14318,0.57273 0.0203,0.14174 -0.0202,0.2878 0,0.42955 0.0278,0.1948 0.11535,0.37792 0.14318,0.57273 0.0202,0.14174 -0.0281,0.28914 0,0.42954 0.0209,0.10465 0.10944,0.18512 0.14319,0.28637 0.0328,0.0985 -0.0423,0.34507 0,0.42955 0.0302,0.0604 0.11299,0.0828 0.14318,0.14318 0.0469,0.0938 -0.0424,0.58885 0,0.71591 0.0337,0.10125 0.10943,0.18512 0.14318,0.28637 0.0328,0.0985 -0.0422,0.34507 0,0.42955 0.0302,0.0604 0.113,0.0828 0.14318,0.14318 0.0284,0.0568 -0.0293,0.40028 0,0.42955 0.0337,0.0337 0.14319,-0.0477 0.14319,0 0,0.0477 -0.0955,0 -0.14319,0"
+       id="path3915"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 452.85162,260.95935 c 1.18297,-0.59149 -0.0338,-0.0898 1.14546,-0.28637 0.10527,-0.0175 0.18283,-0.11729 0.28637,-0.14318 0.0926,-0.0231 0.19091,0 0.28636,0 0.0955,0 0.19091,0 0.28637,0 0.33409,0 0.66819,0 1.00228,0 0.10149,0 0.82207,-0.0185 0.85909,0 0.0604,0.0302 0.0828,0.113 0.14319,0.14318 0.037,0.0185 0.7576,0 0.85909,0"
+       id="path3917"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 463.59032,255.94796 c 0,0.19091 -0.0211,0.38298 0,0.57273 0.0269,0.24187 0.12297,0.47339 0.14318,0.71591 0.12946,1.55345 -0.19053,0.47914 0.14319,2.14774 0.0681,0.34071 0.20823,0.66372 0.28636,1.00228 0.55762,2.41636 -0.10871,-0.33144 0.14318,1.43183 0.0213,0.14941 0.11838,0.28067 0.14319,0.42954 0.0235,0.14124 0,0.28637 0,0.42955 0.0477,0.14318 0.11358,0.28155 0.14318,0.42955 0.0187,0.0936 0,0.19091 0,0.28636 0,0.28637 0,0.57274 0,0.8591 0,0.0477 0,0.0955 0,0.14318 0,0.0477 0.0477,0.14319 0,0.14319 -0.0477,0 -0.0337,-0.10944 0,-0.14319 0.0337,-0.0337 0.0955,0 0.14318,0"
+       id="path3919"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 460.01076,255.94796 c 0.47057,-0.18848 0.94142,-0.14319 1.43182,-0.14319 0.0477,0 0.0979,0.0151 0.14318,0 0.10125,-0.0337 0.19091,-0.0954 0.28637,-0.14318 0.14318,0 0.28915,0.0281 0.42955,0 0.10465,-0.0209 0.18171,-0.12225 0.28636,-0.14318 0.14041,-0.0281 0.28637,0 0.42955,0 0.0955,0 0.19581,0.0302 0.28637,0 0.064,-0.0213 0.0828,-0.113 0.14318,-0.14318 0.0764,-0.0382 0.20998,0.0382 0.28636,0 0.0604,-0.0302 0.0791,-0.12184 0.14319,-0.14319 0.13583,-0.0453 0.28636,0 0.42954,0 0.38183,0 0.76365,0 1.14547,0 0.0477,0 0.0955,0 0.14318,0 0.0477,0 0.10049,0.0213 0.14318,0 0.0604,-0.0302 0.0828,-0.11299 0.14318,-0.14318 0.0903,-0.0452 0.62559,0.0452 0.71592,0 0.0604,-0.0302 0.0828,-0.113 0.14318,-0.14318 0.0427,-0.0213 0.0955,0 0.14318,0 0.0477,0 0.0955,0 0.14319,0 0.0477,0 0.0954,0 0.14318,0 0.0477,0 0.10943,0.0337 0.14318,0 0.0337,-0.0337 -0.0337,-0.10944 0,-0.14318 0.0337,-0.0337 0.14318,-0.0477 0.14318,0 0,0.17693 -0.20079,0.14318 -0.28636,0.14318"
+       id="path3921"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 481.77452,256.66387 c -0.11479,-0.6035 -0.49824,-0.0344 -0.71591,-0.14318 -0.0604,-0.0302 -0.0828,-0.113 -0.14319,-0.14319 -0.0376,-0.0188 -0.49785,0 -0.57273,0 -0.0477,0 -0.0955,0 -0.14318,0 -0.0477,0 -0.10049,-0.0213 -0.14318,0 -0.0604,0.0302 -0.0828,0.113 -0.14319,0.14319 -0.13499,0.0675 -0.28823,0.0902 -0.42954,0.14318 -0.24066,0.0903 -0.47526,0.19612 -0.71592,0.28637 -0.14131,0.053 -0.29455,0.0757 -0.42954,0.14318 -0.15392,0.077 -0.26978,0.22245 -0.42955,0.28636 -0.0886,0.0354 -0.19581,-0.0302 -0.28637,0 -0.28492,0.095 -0.0668,0.13364 -0.14318,0.28637 -0.0302,0.0604 -0.12184,0.0792 -0.14318,0.14318 -0.0302,0.0906 0,0.19091 0,0.28637 0,0.14318 -0.0281,0.28914 0,0.42954 0.0209,0.10465 0.10943,0.18512 0.14318,0.28637 0.0302,0.0906 -0.0427,0.20099 0,0.28636 0.15829,0.31659 0.0889,0.0444 0.28636,0.14319 0.0604,0.0302 0.0892,0.10268 0.14319,0.14318 0.13766,0.10325 0.28636,0.19091 0.42955,0.28637 1.04652,0.69768 -0.26936,-0.15392 1.00227,0.57273 0.14941,0.0854 0.28199,0.19782 0.42955,0.28636 0.0915,0.0549 0.19757,0.084 0.28637,0.14318 0.0562,0.0374 0.0828,0.113 0.14318,0.14319 0.0427,0.0213 0.10049,-0.0214 0.14318,0 0.47488,0.47487 -0.13499,-0.0675 0.28637,0.14318 0.0604,0.0302 0.0954,0.0955 0.14318,0.14318 0.0955,0.0955 0.18477,0.19747 0.28637,0.28637 3.0831,2.56925 -0.67098,-0.67098 1.28864,1.28864 0.12168,0.12168 0.30787,0.16468 0.42955,0.28637 0.0684,0.0684 0.20425,0.36848 0.14318,0.42954 -0.0337,0.0337 -0.10049,-0.0213 -0.14318,0 -0.0604,0.0302 -0.0828,0.113 -0.14318,0.14319 -0.0427,0.0213 -0.0955,0 -0.14319,0 -0.0955,0 -0.19376,-0.0231 -0.28636,0 -0.74349,0.18587 0.15285,0.14318 -0.57273,0.14318 -0.0749,0 -0.53509,-0.0188 -0.57273,0 -0.0604,0.0302 -0.0777,0.12681 -0.14319,0.14318 -0.1389,0.0347 -0.28636,0 -0.42954,0 -0.14319,0 -0.28637,0 -0.42955,0 -0.19091,0 -0.38374,0.027 -0.57273,0 -0.14941,-0.0213 -0.28155,-0.11358 -0.42955,-0.14318 -0.0753,-0.0151 -0.69573,0.0202 -0.71591,0 -0.0337,-0.0337 0.0337,-0.10943 0,-0.14318 -0.0675,-0.0675 -0.20099,0.0427 -0.28637,0 -0.0604,-0.0302 -0.0828,-0.113 -0.14318,-0.14319 -0.0427,-0.0213 -0.0955,0 -0.14319,0 -0.0477,-0.0477 -0.0828,-0.11299 -0.14318,-0.14318 -0.13499,-0.0675 -0.29455,-0.0757 -0.42955,-0.14318 -0.15391,-0.077 -0.28198,-0.19783 -0.42954,-0.28637 -0.0915,-0.0549 -0.20099,-0.0792 -0.28637,-0.14318 -0.10799,-0.081 -0.17837,-0.20537 -0.28636,-0.28636 -0.0854,-0.064 -0.21091,-0.0677 -0.28637,-0.14319 -0.0337,-0.0337 0.0955,0 0.14318,0"
+       id="path3923"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 484.78136,258.0957 c 0,0.47727 0,0.95455 0,1.43182 0,0.19091 -0.027,0.38374 0,0.57273 0.0213,0.14941 0.11358,0.28155 0.14318,0.42955 0.0281,0.1404 0,0.28637 0,0.42955 0,0.0477 0.0213,0.10049 0,0.14318 -0.0302,0.0604 -0.14318,0.0757 -0.14318,0.14318 0,0.0675 0.11299,0.0828 0.14318,0.14319 0.0213,0.0427 0,0.0954 0,0.14318 0,0.0955 -0.0302,0.19581 0,0.28637 0.0213,0.064 0.11299,0.0828 0.14318,0.14318 0.13499,0.26999 0.17426,0.57883 0.28637,0.85909 -0.0507,0.24439 0.2094,0.27564 0.28636,0.42955 0.0213,0.0427 -0.0337,0.10944 0,0.14318 0.0337,0.0337 0.10944,-0.0337 0.14318,0 0.0337,0.0337 -0.0337,0.10944 0,0.14319 0.0439,0.0439 0.46646,-0.0266 0.57273,0 0.10354,0.0259 0.18283,0.1173 0.28637,0.14318 0.0104,0.003 0.71224,0.002 0.71591,0 0.0427,-0.0213 -0.0337,-0.10943 0,-0.14318 0.0337,-0.0337 0.1005,0.0213 0.14319,0 0.0604,-0.0302 0.0954,-0.0955 0.14318,-0.14319 0.0477,-0.0477 0.0955,-0.0955 0.14318,-0.14318 0.11184,-0.11184 0.34718,-0.30599 0.42955,-0.42955 0.25022,-0.37532 0.0535,-0.25021 0.28636,-0.71591 0.21833,-0.43664 0.11351,0.26187 0.28637,-0.42955 10e-6,-6e-5 0.0149,-0.68605 0,-0.71591 -0.0302,-0.0604 -0.12184,-0.0792 -0.14318,-0.14318 -0.0264,-0.0792 0,-0.71491 0,-0.8591 0,-0.0477 0.0151,-0.0979 0,-0.14318 -0.0337,-0.10125 -0.10944,-0.18512 -0.14319,-0.28637 -0.0269,-0.0808 0,-0.33546 0,-0.42955 0,-0.0645 0.0218,-0.38597 0,-0.42954 -0.0302,-0.0604 -0.11299,-0.0828 -0.14318,-0.14319 -0.0213,-0.0427 0,-0.0955 0,-0.14318 0,-0.0477 0,-0.0954 0,-0.14318 0,-0.23864 0,-0.47728 0,-0.71591 0,-0.38182 0.0477,0.0477 -0.14318,-0.14319 -0.0337,-0.0337 -0.0477,-0.14318 0,-0.14318 0.0477,0 0,0.0955 0,0.14318"
+       id="path3925"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 492.22685,257.2366 c -0.0954,0.19091 -0.2302,0.36681 -0.28636,0.57273 -0.0888,0.32559 -0.0986,0.66776 -0.14318,1.00228 -0.0509,0.38142 -0.11918,0.76142 -0.14319,1.14546 -0.0238,0.38108 0,0.76364 0,1.14546 0,0.57273 0,1.14546 0,1.71819 0,0.3341 0,0.66819 0,1.00228 0,0.19091 0.027,0.38374 0,0.57273 -0.0213,0.14941 -0.0954,0.28637 -0.14318,0.42955 -0.0477,0.14318 -0.0955,0.28637 -0.14318,0.42955 -0.0477,0.14318 -0.12184,0.28014 -0.14319,0.42955 -0.027,0.18899 0.027,0.38374 0,0.57273 -0.0213,0.14941 -0.11837,0.28067 -0.14318,0.42955 -0.0235,0.14123 0,0.28636 0,0.42954 0,0.0179 0,0.62441 0,0.71592 0,0.0954 0,0.19091 0,0.28636 0,0.0477 -0.0151,0.0979 0,0.14319 0.0337,0.10124 0.10944,0.18511 0.14318,0.28636 0.0302,0.0906 -0.0675,0.21887 0,0.28637 0.0337,0.0337 0.10944,0.0337 0.14319,0 0.0675,-0.0675 -0.0302,-0.19581 0,-0.28637 0.0337,-0.10125 0.10354,-0.18728 0.14318,-0.28636 0.35386,-0.88466 -0.0494,-0.0443 0.28637,-0.71592"
+       id="path3927"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 492.37004,258.0957 c 0.19091,0.19091 0.39702,0.36774 0.57273,0.57273 0.53245,0.62119 0.0935,0.21185 0.42954,0.71591 0.0749,0.11232 0.19091,0.19091 0.28637,0.28637 0.19091,0.19091 0.38182,0.38182 0.57273,0.57273 0.0477,0.0477 0.0955,0.0955 0.14318,0.14318 0.0477,0.0477 0.113,0.0828 0.14319,0.14318 0.0213,0.0427 -0.0213,0.1005 0,0.14318 0.0635,0.12691 0.34265,0.29921 0.42954,0.42955 0.0592,0.0888 0.084,0.19757 0.14319,0.28637 0.0374,0.0562 0.11299,0.0828 0.14318,0.14318 0.0213,0.0427 -0.0213,0.10049 0,0.14318 0.0704,0.1409 0.50228,0.43184 0.57273,0.57273 0.0213,0.0427 -0.0213,0.1005 0,0.14319 0.0302,0.0604 0.113,0.0828 0.14318,0.14318 0.0213,0.0427 -0.0116,0.0969 0,0.14318 0.0366,0.14642 0.0955,0.28637 0.14319,0.42955 0.0477,0.14318 0.10657,0.28313 0.14318,0.42955 0.013,0.052 -0.0175,0.41201 0,0.42955 0.0338,0.0337 0.10943,-0.0337 0.14318,0 0.0337,0.0337 -0.0213,0.10049 0,0.14318 0.0704,0.14089 0.50228,0.43183 0.57273,0.57273 0.0214,0.0427 -0.0337,0.10943 0,0.14318 0.0337,0.0337 0.10944,0.0337 0.14318,0 0.0337,-0.0337 0,-0.0954 0,-0.14318 0,-0.14318 0,-0.28637 0,-0.42955 0,-0.66819 0,-1.33637 0,-2.00456 0,-0.14318 0,-0.28636 0,-0.42954 0,-0.14319 -0.0235,-0.28832 0,-0.42955 0.0248,-0.14888 0.12447,-0.27979 0.14319,-0.42955 0.0296,-0.2368 0,-0.47728 0,-0.71591 0,-0.57273 -0.0408,-1.14692 0,-1.7182 0.024,-0.33662 0.1173,-0.66578 0.14318,-1.00227 0.0403,-0.52346 0,-1.05001 0,-1.57501 0,-0.19091 0.0314,-0.38442 0,-0.57273 -0.0175,-0.10527 -0.10944,-0.18512 -0.14318,-0.28637 -0.0151,-0.0453 0,-0.0954 0,-0.14318 0,-0.0477 -0.0337,-0.10944 0,-0.14318 0.0337,-0.0337 0.14318,-0.0477 0.14318,0 0,0.0477 -0.0955,0 -0.14318,0"
+       id="path3929"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;fill:#fafa0e;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3931"
+       sodipodi:sides="5"
+       sodipodi:cx="239.819"
+       sodipodi:cy="384.94138"
+       sodipodi:r1="7.0680995"
+       sodipodi:r2="3.5340495"
+       sodipodi:arg1="0.87605805"
+       sodipodi:arg2="1.5043766"
+       inkscape:flatsided="false"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 244.34389,390.37124 -4.29033,-1.90361 -4.0004,2.45509 0.48465,-4.66859 -3.57111,-3.04595 4.58986,-0.98174 1.79332,-4.33758 2.35204,4.06184 4.67946,0.36517 -3.13623,3.4921 z"
+       inkscape:transform-center-x="0.14496489"
+       inkscape:transform-center-y="-0.53558538"
+       transform="translate(-2.7896147,-111.67441)" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;fill:#fafa0e;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3931-7"
+       sodipodi:sides="5"
+       sodipodi:cx="239.819"
+       sodipodi:cy="384.94138"
+       sodipodi:r1="7.0680995"
+       sodipodi:r2="3.5340495"
+       sodipodi:arg1="0.87605805"
+       sodipodi:arg2="1.5043766"
+       inkscape:flatsided="false"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 244.34389,390.37124 -4.29033,-1.90361 -4.0004,2.45509 0.48465,-4.66859 -3.57111,-3.04595 4.58986,-0.98174 1.79332,-4.33758 2.35204,4.06184 4.67946,0.36517 -3.13623,3.4921 z"
+       inkscape:transform-center-x="0.14496489"
+       inkscape:transform-center-y="-0.53558538"
+       transform="translate(39.889291,-92.134306)" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;fill:#fafa0e;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3931-3"
+       sodipodi:sides="5"
+       sodipodi:cx="239.819"
+       sodipodi:cy="384.94138"
+       sodipodi:r1="7.0680995"
+       sodipodi:r2="3.5340495"
+       sodipodi:arg1="0.87605805"
+       sodipodi:arg2="1.5043766"
+       inkscape:flatsided="false"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 244.34389,390.37124 -4.29033,-1.90361 -4.0004,2.45509 0.48465,-4.66859 -3.57111,-3.04595 4.58986,-0.98174 1.79332,-4.33758 2.35204,4.06184 4.67946,0.36517 -3.13623,3.4921 z"
+       inkscape:transform-center-x="0.14496489"
+       inkscape:transform-center-y="-0.53558538"
+       transform="translate(61.15626,-84.441998)" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;fill:#fafa0e;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3931-1"
+       sodipodi:sides="5"
+       sodipodi:cx="239.819"
+       sodipodi:cy="384.94138"
+       sodipodi:r1="7.0680995"
+       sodipodi:r2="3.5340495"
+       sodipodi:arg1="0.87605805"
+       sodipodi:arg2="1.5043766"
+       inkscape:flatsided="false"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 244.34389,390.37124 -4.29033,-1.90361 -4.0004,2.45509 0.48465,-4.66859 -3.57111,-3.04595 4.58986,-0.98174 1.79332,-4.33758 2.35204,4.06184 4.67946,0.36517 -3.13623,3.4921 z"
+       inkscape:transform-center-x="0.14496489"
+       inkscape:transform-center-y="-0.53558538"
+       transform="translate(39.436803,-66.794939)" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;fill:#fafa0e;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3931-19"
+       sodipodi:sides="5"
+       sodipodi:cx="239.819"
+       sodipodi:cy="384.94138"
+       sodipodi:r1="7.0680995"
+       sodipodi:r2="3.5340495"
+       sodipodi:arg1="0.87605805"
+       sodipodi:arg2="1.5043766"
+       inkscape:flatsided="false"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 244.34389,390.37124 -4.29033,-1.90361 -4.0004,2.45509 0.48465,-4.66859 -3.57111,-3.04595 4.58986,-0.98174 1.79332,-4.33758 2.35204,4.06184 4.67946,0.36517 -3.13623,3.4921 z"
+       inkscape:transform-center-x="0.14496489"
+       inkscape:transform-center-y="-0.53558538"
+       transform="translate(101.88024,-111.59132)" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;fill:#fafa0e;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3931-0"
+       sodipodi:sides="5"
+       sodipodi:cx="239.819"
+       sodipodi:cy="384.94138"
+       sodipodi:r1="7.0680995"
+       sodipodi:r2="3.5340495"
+       sodipodi:arg1="0.87605805"
+       sodipodi:arg2="1.5043766"
+       inkscape:flatsided="false"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 244.34389,390.37124 -4.29033,-1.90361 -4.0004,2.45509 0.48465,-4.66859 -3.57111,-3.04595 4.58986,-0.98174 1.79332,-4.33758 2.35204,4.06184 4.67946,0.36517 -3.13623,3.4921 z"
+       inkscape:transform-center-x="0.14496489"
+       inkscape:transform-center-y="-0.53558538"
+       transform="translate(88.305581,-65.437473)" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;fill:#fafa0e;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3931-5"
+       sodipodi:sides="5"
+       sodipodi:cx="239.819"
+       sodipodi:cy="384.94138"
+       sodipodi:r1="7.0680995"
+       sodipodi:r2="3.5340495"
+       sodipodi:arg1="0.87605805"
+       sodipodi:arg2="1.5043766"
+       inkscape:flatsided="false"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 244.34389,390.37124 -4.29033,-1.90361 -4.0004,2.45509 0.48465,-4.66859 -3.57111,-3.04595 4.58986,-0.98174 1.79332,-4.33758 2.35204,4.06184 4.67946,0.36517 -3.13623,3.4921 z"
+       inkscape:transform-center-x="0.14496489"
+       inkscape:transform-center-y="-0.53558538"
+       transform="translate(79.255807,-43.718016)" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;fill:#fafa0e;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3931-77"
+       sodipodi:sides="5"
+       sodipodi:cx="239.819"
+       sodipodi:cy="384.94138"
+       sodipodi:r1="7.0680995"
+       sodipodi:r2="3.5340495"
+       sodipodi:arg1="0.87605805"
+       sodipodi:arg2="1.5043766"
+       inkscape:flatsided="false"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 244.34389,390.37124 -4.29033,-1.90361 -4.0004,2.45509 0.48465,-4.66859 -3.57111,-3.04595 4.58986,-0.98174 1.79332,-4.33758 2.35204,4.06184 4.67946,0.36517 -3.13623,3.4921 z"
+       inkscape:transform-center-x="0.14496489"
+       inkscape:transform-center-y="-0.53558538"
+       transform="translate(145.31916,-89.419374)" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;fill:#fafa0e;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3931-4"
+       sodipodi:sides="5"
+       sodipodi:cx="239.819"
+       sodipodi:cy="384.94138"
+       sodipodi:r1="7.0680995"
+       sodipodi:r2="3.5340495"
+       sodipodi:arg1="0.87605805"
+       sodipodi:arg2="1.5043766"
+       inkscape:flatsided="false"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 244.34389,390.37124 -4.29033,-1.90361 -4.0004,2.45509 0.48465,-4.66859 -3.57111,-3.04595 4.58986,-0.98174 1.79332,-4.33758 2.35204,4.06184 4.67946,0.36517 -3.13623,3.4921 z"
+       inkscape:transform-center-x="0.14496489"
+       inkscape:transform-center-y="-0.53558538"
+       transform="translate(165.22866,-110.23385)" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;fill:#fafa0e;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3931-06"
+       sodipodi:sides="5"
+       sodipodi:cx="239.819"
+       sodipodi:cy="384.94138"
+       sodipodi:r1="7.0680995"
+       sodipodi:r2="3.5340495"
+       sodipodi:arg1="0.87605805"
+       sodipodi:arg2="1.5043766"
+       inkscape:flatsided="false"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 244.34389,390.37124 -4.29033,-1.90361 -4.0004,2.45509 0.48465,-4.66859 -3.57111,-3.04595 4.58986,-0.98174 1.79332,-4.33758 2.35204,4.06184 4.67946,0.36517 -3.13623,3.4921 z"
+       inkscape:transform-center-x="0.14496489"
+       inkscape:transform-center-y="-0.53558538"
+       transform="translate(185.59065,-105.25648)" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;fill:#fafa0e;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3931-47"
+       sodipodi:sides="5"
+       sodipodi:cx="239.819"
+       sodipodi:cy="384.94138"
+       sodipodi:r1="7.0680995"
+       sodipodi:r2="3.5340495"
+       sodipodi:arg1="0.87605805"
+       sodipodi:arg2="1.5043766"
+       inkscape:flatsided="false"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 244.34389,390.37124 -4.29033,-1.90361 -4.0004,2.45509 0.48465,-4.66859 -3.57111,-3.04595 4.58986,-0.98174 1.79332,-4.33758 2.35204,4.06184 4.67946,0.36517 -3.13623,3.4921 z"
+       inkscape:transform-center-x="0.14496489"
+       inkscape:transform-center-y="-0.53558538"
+       transform="translate(185.59065,-64.532496)" />
+    <path
+       sodipodi:type="star"
+       style="color:#000000;fill:#fafa0e;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3931-48"
+       sodipodi:sides="5"
+       sodipodi:cx="239.819"
+       sodipodi:cy="384.94138"
+       sodipodi:r1="7.0680995"
+       sodipodi:r2="3.5340495"
+       sodipodi:arg1="0.87605805"
+       sodipodi:arg2="1.5043766"
+       inkscape:flatsided="false"
+       inkscape:rounded="0"
+       inkscape:randomized="0"
+       d="m 244.34389,390.37124 -4.29033,-1.90361 -4.0004,2.45509 0.48465,-4.66859 -3.57111,-3.04595 4.58986,-0.98174 1.79332,-4.33758 2.35204,4.06184 4.67946,0.36517 -3.13623,3.4921 z"
+       inkscape:transform-center-x="0.14496489"
+       inkscape:transform-center-y="-0.53558538"
+       transform="translate(215.00241,-110.23385)" />
+  </g>
+</svg>
diff --git a/data/data.qrc b/data/data.qrc
new file mode 100644 (file)
index 0000000..d352a3a
--- /dev/null
@@ -0,0 +1,5 @@
+<RCC>
+  <qresource prefix="/">
+    <file>confclerk.svg</file>
+  </qresource>
+</RCC>
diff --git a/docs/fosdem-schedule/AUTHORS b/docs/fosdem-schedule/AUTHORS
new file mode 100644 (file)
index 0000000..52bcafd
--- /dev/null
@@ -0,0 +1,39 @@
+Authors of fosdem-schedule.
+
+  Copyright (C) 2010 Ixonos Plc. 
+
+  Copying and distribution of this file, with or without modification,
+  are permitted in any medium without royalty provided the copyright
+  notice and this notice are preserved.
+
+Francisco Fortes 
+Matus Hanzes 
+Martin Komara
+Marek Timko
+Matus Uzak
+Monika Berendova
+Pavol Korinek
+Pavol Pavelka
+Maksim Kirillov
+
+Files add.png, reload.png, remove.png in  src/icons/ directory
+are taken from Ubuntu package gnome-icon-theme. Copyright notice
+for them copied here:
+
+> This package was debianized by Takuo KITAME <kitame@debian.org> on
+> Fri, 17 Jan 2003 14:57:28 +0900.
+> 
+> It was downloaded from <http://download.gnome.org/sources/gnome-icon-theme/>
+> 
+> Copyright © 2002-2008:
+>    Ulisse Perusin <uli.peru@gmail.com>
+>    Riccardo Buzzotta <raozuzu@yahoo.it>
+>    Josef Vybíral <cornelius@vybiral.info>
+>    Hylke Bons <h.bons@student.rug.nl>
+>    Ricardo González <rick@jinlabs.com>
+>    Lapo Calamandrei <calamandrei@gmail.com>
+>    Rodney Dawes <dobey@novell.com>
+>    Luca Ferretti <elle.uca@libero.it>
+>    Tuomas Kuosmanen <tigert@gimp.org>
+>    Andreas Nilsson <nisses.mail@home.se>
+>    Jakub Steiner <jimmac@novell.com>
diff --git a/docs/fosdem-schedule/Changelog b/docs/fosdem-schedule/Changelog
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/docs/fosdem-schedule/INSTALL b/docs/fosdem-schedule/INSTALL
new file mode 100644 (file)
index 0000000..e32aa70
--- /dev/null
@@ -0,0 +1,39 @@
+This is the INSTALL file for the fosdem-schedule distribution.
+
+  Copyright (C) 2010 Ixonos Plc. 
+
+  Copying and distribution of this file, with or without modification,
+  are permitted in any medium without royalty provided the copyright
+  notice and this notice are preserved.
+
+NOTE
+====
+
+fosdem-schedule is an application intended for Nokia N810 and N900 Internet
+tablet devices.  Therefor the preferred distribution is a Debian package.
+Notice the different release of the Maemo platform on each of the devices,
+which requires a specific Debian package.  
+
+Maemo is a trademark of Nokia Corporation.  Debian is a registered trademark
+owned by SPI in the United States, and managed by the debian project, as
+explained on their site.
+
+Basic Installation
+==================
+
+1. Type `qmake' to generate Makefiles.
+2. Type `make' to compile the source code.
+3. Type `make install' to install the executable.  
+4. Type `make uninstall' to remove all installed files form your system.      
+
+Maemo Package Building 
+======================
+
+1. Type `qmake' to generate Makefiles.
+2. Check the "Build-Depends" section of the control file for required packages.
+   Maemo 3 (Diablo) specific:
+   - Ignore the version strings when building a package for Maemo 3 (Diablo).
+   - Optification of the package is not explicitly required, to disable it
+     comment out the "maemo-optify $(PKG_NAME)" line in debian/rules.  
+3. Type `dpkg-buildpackage -rfakeroot -b -uc' to build a package.  
\ No newline at end of file
diff --git a/docs/fosdem-schedule/NEWS b/docs/fosdem-schedule/NEWS
new file mode 100644 (file)
index 0000000..fdaab92
--- /dev/null
@@ -0,0 +1,19 @@
+
+This NEWS file records noteworthy changes, very tersely.
+
+Version 0.3 (3 Feb 2010)
+* Performance improvement for events. 
+
+Version 0.2 (2 Feb 2010)
+* Search tab has been added.
+* Alarms handled by alarmd, which requests native alarm dialogs (N900 only).
+* A service is registered to DBus, the application is handling calls from alarm
+  dialogs to reflect alarm states into the database.  The application is
+  started if required (N900 only).
+
+Version 0.1 (19 Jan 2010) 
+* A user can select favourite events, which are displayed in "Favourites" tab.
+* FOSDEM icon is displayed in application manager and in applications menu.        
+* Optification of the package is done using maemo-optify script.
+* There is now a `NEWS' file (this one), giving a history of
+  user-visible changes.
diff --git a/docs/fosdem-schedule/README b/docs/fosdem-schedule/README
new file mode 100644 (file)
index 0000000..f8f46f8
--- /dev/null
@@ -0,0 +1,52 @@
+This is the README file for the fosdem-schedule distribution.  
+
+  Copyright (C) 2010 Ixonos Plc. 
+
+  Copying and distribution of this file, with or without modification,
+  are permitted in any medium without royalty provided the copyright
+  notice and this notice are preserved.
+
+fosdem-schedule is an application written in Qt, which makes the FOSDEM
+conference schedule available offline.  It displays the conference schedule
+from various views, support searches on various items (speaker, speech topic,
+location, etc.) and enables you to select favorite events and create your own
+schedule.  For Nokia N810 and N900.
+
+See the file ./INSTALL for building and installation instructions.
+
+Primary distribution point: http://sourceforge.net/projects/fosdem-maemo/
+
+Home page: http://sourceforge.net/apps/mediawiki/fosdem-maemo/
+
+Mailing list: fosdem-maemo-devel@lists.sourceforge.net
+- please use this list for all discussion: bug reports, enhancements, etc.
+- archived at: http://sourceforge.net/mailarchive/forum.php?forum_name=fosdem-maemo-devel
+- anyone is welcome to join the list; to do so, visit
+  https://lists.sourceforge.net/lists/listinfo/fosdem-maemo-devel
+
+Bug reports:
+ Please include enough information for the maintainers to reproduce the
+ problem.  Generally speaking, that means:
+- the contents of any input files necessary to reproduce the bug
+  and command line invocations of the program(s) involved (crucial!).
+- a description of the problem and any samples of the erroneous output.
+- the version number of the program(s) involved (use --version).
+- hardware, operating system, and compiler versions (uname -a).
+- anything else that you think would be helpful.
+
+Patches are most welcome; if possible, please make them with diff -c and
+include ChangeLog entries.
+
+fosdem-schedule is free software.  See the file COPYING for copying conditions.
+
+About FOSDEM 2010:
+
+The tenth FOSDEM is a two-day event organized by volunteers to promote the
+widespread use of Free and Open Source software.  Taking place in the beautiful
+city of Brussels (Belgium), FOSDEM meetings are recognized as "The best Free
+Software and Open Source events in Europe".
+
+FOSDEM name and FOSDEM brain icon are Trademarks of FOSDEM ASBL, which gave
+this project the rights to use the brain icon and name.  Copying and
+distribution of the FOSDEM brain icon must follow the Creative Commons
+Attribution-Noncommercial-No Derivative Works 2.0 Belgium License.
\ No newline at end of file
diff --git a/docs/fosdem-schedule/user-stories.txt b/docs/fosdem-schedule/user-stories.txt
new file mode 100644 (file)
index 0000000..847366b
--- /dev/null
@@ -0,0 +1,22 @@
+\r
+As an user I would like to have following features available in FOSDEM application:\r
+o   I\92d like to see all events for current day (default: current time)\r
+o   I\92d like to see all events for other days \r
+o   I\92d like to see all events grouped by activity\r
+o   I\92d like to see all events grouped by room\r
+o   I\92d like to see all details about selected event\r
+o   In detail view, I\92d like to have option  to show room on the map\r
+o   If there are some links in the event detail, I\92d like to have option to open link in browser\r
+o   In detail view, I\92d like to add/remove event to/from favorites\r
+o   I\92d like to search events by title/abstract, speaker name, tags, activity category, room number/name\r
+o   I\92d like to see my favorite events\r
+o   I\92d like to be noticed when some of my favorite events are overlapping\r
+o   I\92d like to add reminder into calendar for selected event\r
+o   I\92d like to see which events are added to calendar or to favorites\r
+o   I\92d like to option to update list of events through the web \r
+--------------------------------------------------------------------\r
+o   I'd like to have "my track" -- the personal schedule of events the user would like to attend.\r
+o   I wish to have "now button" to show me what's ongoing now.\r
+====================================================================\r
+o   I'd like to have possibility to post to eg. twitter or facebook -- some button to easy post on twitter "I'm attending now this". \r
+\r
diff --git a/src/alarm/alarm.cpp b/src/alarm/alarm.cpp
new file mode 100644 (file)
index 0000000..d5fa7fe
--- /dev/null
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "alarm.h"
+
+#include <QDateTime>
+
+#include <QApplication>
+#include <QDir>
+#include <QFileInfo>
+
+#include <QDebug>
+
+//#include <dbus-1.0/dbus/dbus-protocol.h>
+
+int Alarm::addAlarm(int aEventId, const QDateTime &aDateTime)
+{
+    cookie_t cookie = 0;
+    alarm_event_t *eve = 0;
+    alarm_action_t *act = 0;
+
+    /* Create alarm event structure and set application identifier */
+    eve = alarm_event_create();
+    alarm_event_set_alarm_appid(eve, APPID);
+
+    /* for Deleting purposes */
+    alarm_event_set_message(eve, QString::number(aEventId).toLocal8Bit().data());
+
+    /* Use absolute time triggering */
+    //eve->alarm_time = time(0) + 5; // for testing (5 seconds from now)
+    QDateTime local( aDateTime);
+    qDebug() << "UTC: " << local.toTime_t();
+    local.setTimeSpec(Qt::LocalTime);
+    qDebug() << "LocalTime: " << local.toTime_t();
+
+    eve->alarm_time = local.toTime_t();
+    eve->flags = ALARM_EVENT_BOOT;
+
+    /* Add exec command action */
+    act = alarm_event_add_actions(eve, 1);
+    alarm_action_set_label(act, "ConfClerk");
+
+    QString command = QFileInfo(*qApp->argv()).absoluteFilePath() + QString(" %1").arg(QString::number(aEventId));
+    qDebug() << "Setting alarm: " << command;
+    alarm_action_set_exec_command(act, command.toLocal8Bit().data());
+    act->flags |= ALARM_ACTION_TYPE_EXEC;
+    act->flags |= ALARM_ACTION_WHEN_RESPONDED;
+    act->flags |= ALARM_ACTION_EXEC_ADD_COOKIE; // adds assigned cookie at the end of command string
+
+//    // setup this action to be a "DBus command"
+//    act->flags |= ALARM_ACTION_WHEN_RESPONDED;
+//    act->flags |= ALARM_ACTION_TYPE_DBUS;
+//
+//    // DBus params for this action
+//    alarm_action_set_dbus_interface(act, "at.priv.toastfreeware.confclerk.AlarmInterface");
+//    alarm_action_set_dbus_service(act, "at.priv.toastfreeware.confclerk");
+//    alarm_action_set_dbus_path(act, "/ConfClerk");
+//    alarm_action_set_dbus_name(act, "Alarm");
+//
+//    // DBus arguments for the action
+//    alarm_action_set_dbus_args(act,  DBUS_TYPE_INT32, &aEventId, DBUS_TYPE_INVALID);
+
+    //    act->flags |= ALARM_ACTION_TYPE_EXEC;
+    //     alarm_action_set_exec_command(act, command.toLocal8Bit().data());
+    //    alarm_event_set_icon(eve, "fosdem");
+    //    alarm_event_set_title(eve, "ConfClerk");
+    // adds assigned cookie at the end of command string
+    //    act->flags |= ALARM_ACTION_EXEC_ADD_COOKIE;
+
+    /* Add stop button action */
+    /* TODO: send a DBus message to remove that alarm from database */
+    act = alarm_event_add_actions(eve, 1);
+    alarm_action_set_label(act, "Stop");
+    act->flags |= ALARM_ACTION_WHEN_RESPONDED;
+    act->flags |= ALARM_ACTION_TYPE_NOP;
+
+    /* Add snooze button action */
+    act = alarm_event_add_actions(eve, 1);
+    alarm_action_set_label(act, "Snooze");
+    act->flags |= ALARM_ACTION_WHEN_RESPONDED;
+    act->flags |= ALARM_ACTION_TYPE_SNOOZE;
+
+    /* Send the alarm to alarmd */
+    cookie = alarmd_event_add(eve);
+
+    // adding alarm failed
+    if (cookie == 0)
+        emit(addAlarmFailed(aEventId));
+    else
+        emit(alarmAdded(aEventId));
+
+    /* Free all dynamic memory associated with the alarm event */
+    alarm_event_delete(eve);
+
+    return cookie;
+}
+
+void Alarm::deleteAlarm(int aEventId)
+{
+    cookie_t *list = 0;
+    cookie_t cookie = 0;
+    alarm_event_t *event = 0;
+
+    // query the APPID's list of alarms
+    if( (list = alarmd_event_query(0,0, 0,0, APPID)) != 0 ) // query OK
+    {
+        for( int i = 0; (cookie = list[i]) != 0; ++i )
+        {
+            alarm_event_delete(event);
+
+            // get the event for specified alarm cookie (alarmId)
+            if( (event = alarmd_event_get(cookie)) == 0 )
+            {
+                // should we inform user about it ???
+                continue;
+            }
+
+            if(aEventId==atoi(alarm_event_get_message(event)))
+            {
+                // delete cookie
+                if( alarmd_event_del(cookie) == -1 )
+                {
+                    // was not able to delete alarm for given aEventId
+                    emit(deleteAlarmFailed(aEventId));
+                    break;
+                }
+                else
+                {
+                    emit(alarmDeleted(aEventId));
+                    break;
+                }
+            }
+        }
+    }
+    else
+    {
+        // query failed
+    }
+
+    free(list);
+    alarm_event_delete(event);
+}
+
+bool Alarm::hasEventAlarm(int aEventId)
+{
+    cookie_t *list = 0;
+    cookie_t cookie = 0;
+    alarm_event_t *event = 0;
+
+    bool eventHasAlarm = false;
+
+    // query the APPID's list of alarms
+    if( (list = alarmd_event_query(0,0, 0,0, APPID)) != 0 ) // query OK
+    {
+        for( int i = 0; (cookie = list[i]) != 0; ++i )
+        {
+            alarm_event_delete(event);
+
+            // get the event for specified alarm cookie (alarmId)
+            if( (event = alarmd_event_get(cookie)) == 0 )
+            {
+                // should we inform user about it ???
+                continue;
+            }
+
+            if(aEventId==atoi(alarm_event_get_message(event)))
+            {
+                eventHasAlarm = true;
+                break;
+            }
+        }
+    }
+    else
+    {
+        // query failed
+    }
+
+    free(list);
+    alarm_event_delete(event);
+
+    return eventHasAlarm;
+}
+
diff --git a/src/alarm/alarm.h b/src/alarm/alarm.h
new file mode 100644 (file)
index 0000000..9074c8e
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef ALARM_H
+#define ALARM_H
+
+#include <QObject>
+#include <QDateTime>
+
+extern "C"
+{
+#include <alarmd/libalarm.h>
+}
+
+#define APPID "fosdem-alarm"
+
+class Alarm : public QObject
+{
+    Q_OBJECT
+    public:
+        Alarm() {}
+        ~Alarm() {}
+        int addAlarm(int aEventId, const QDateTime &aDateTime); 
+        void deleteAlarm(int aEventId);
+        static bool hasEventAlarm(int aEventId);
+    signals:
+        void alarmAdded(int aEventId);
+        void addAlarmFailed(int aEventId);
+        void alarmDeleted(int aEventId);
+        void deleteAlarmFailed(int aEventId);
+};
+
+#endif /* ALARM_H */
+
diff --git a/src/alarm/alarm.pro b/src/alarm/alarm.pro
new file mode 100644 (file)
index 0000000..0db75aa
--- /dev/null
@@ -0,0 +1,21 @@
+TEMPLATE = lib
+TARGET = qalarm
+DESTDIR = ../bin
+CONFIG += static qdbus 
+QT += sql dbus
+
+# module dependencies
+LIBS += -lalarm
+DEPENDPATH += .
+
+HEADERS += alarm.h \
+
+SOURCES += alarm.cpp \
+
+INCLUDEPATH += ../gui \
+    ../mvc \ 
+    ../orm \
+    ../sql
+    
+
+
diff --git a/src/alarm/calendar.cpp b/src/alarm/calendar.cpp
new file mode 100644 (file)
index 0000000..4e0e1a8
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "calendar.h"
+#include <qdebug.h>
+#include <qvariant.h>
+
+#include <calendar-backend/CMulticalendar.h>
+#include <calendar-backend/CCalendar.h>
+#include <calendar-backend/CEvent.h>
+#include <calendar-backend/CAlarm.h>
+
+Calendar::Calendar():
+m_pMultiCalendar(0),
+m_pCalendar(0)
+{
+       m_pMultiCalendar = CMulticalendar::MCInstance();
+
+       if(m_pMultiCalendar != NULL)
+               m_pCalendar  = m_pMultiCalendar->getSynchronizedCalendar();
+
+}
+
+Calendar::~Calendar()
+{
+       delete m_pCalendar;
+       delete m_pMultiCalendar;
+}
+
+int Calendar::addCalendarEvent(QString summary, QString description, QString location, uint dateStart, uint  dateEnd, int eventId)
+{
+       int errorCode = 0;
+
+       if(m_pMultiCalendar == NULL)
+               return 0;
+
+       if(m_pCalendar == NULL)
+               return 0;
+
+       // create event
+       CEvent event(summary.toStdString(), description.toStdString(), location.toStdString(),  dateStart, dateEnd);
+
+       // create alarm
+       CAlarm alarm;
+       alarm.setTrigger(dateStart - 15 * 60);
+       alarm.setRepeat(1);
+       alarm.setDuration(3);
+       alarm.setAction(0);
+       alarm.setAttach(QString::number(eventId).toLocal8Bit().data());
+
+       // add alarm to event
+       event.setAlarm(&alarm);
+
+       // register event into calendar
+       m_pMultiCalendar->addEvent(&event,m_pCalendar->getCalendarId(),errorCode);
+
+    return errorCode;
+}
+
+void Calendar::deleteCalendarEvent(uint dateStart, uint dateEnd, int eventId)
+{
+       int errorCode = 0;
+
+       vector< CComponent * > components;
+
+       // get all events
+       components = m_pMultiCalendar->getComponents(m_pCalendar->getCalendarId(), 1, dateStart, dateEnd, errorCode);
+
+       for (vector<CComponent *>::iterator it = components.begin();it!=components.end(); ++it)
+       {
+               // get alarm properties
+               if( (*it)->getAlarmProperties() == true)
+               {
+                       CAlarm * pAlarm = (*it)->getAlarm();
+
+                       bool converted = false;
+                       int tempId = QVariant(pAlarm->getAttach().data()).toInt(&converted);
+
+                       // check event id
+                       if(converted == true)
+                               if(tempId == eventId)
+                               {
+                                       //delete event
+                                       m_pCalendar->deleteComponent((*it)->getId(),errorCode);
+                                       break;
+                               }
+               }
+       }
+}
+
+bool Calendar::hasCalendarEvent(int eventId)
+{
+       bool ret = false;
+       int errorCode = 0;
+
+       vector< CEvent * > events;
+
+       // get all events
+       events = m_pCalendar->getEvents(errorCode);
+
+       if(events.size() > 0)
+       {
+               for (vector<CEvent *>::iterator it = events.begin(); it!=events.end(); ++it)
+               {
+                       // get alarm properties
+                       if( (*it)->getAlarmProperties() == true)
+                       {
+                               CAlarm * pAlarm = (*it)->getAlarm();
+
+                               bool converted = false;
+                               int tempId = QVariant(pAlarm->getAttach().data()).toInt(&converted);
+
+                               // check event id
+                               if(converted == true)
+                                       if(tempId == eventId)
+                                       {
+                                               ret = true;
+                                               break;
+                                       }
+                       }
+               }
+       }
+}
diff --git a/src/alarm/calendar.h b/src/alarm/calendar.h
new file mode 100644 (file)
index 0000000..0183055
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef CALENDAR_H
+#define CALENDAR_H
+
+#include <QObject>
+#include <QDateTime>
+
+class CMulticalendar;
+class CCalendar;
+
+class Calendar : public QObject
+{
+    Q_OBJECT
+    public:
+       Calendar();
+        ~Calendar();
+        int addCalendarEvent(QString summary, QString description, QString location, uint dateStart, uint dateEnd, int eventId);
+        void deleteCalendarEvent(uint dateStart, uint dateEnd, int eventId);
+        bool hasCalendarEvent(int eventId);
+
+        CMulticalendar * m_pMultiCalendar;
+        CCalendar * m_pCalendar;
+//    signals:
+//        void alarmAdded(int aEventId);
+//        void addAlarmFailed(int aEventId);
+//        void alarmDeleted(int aEventId);
+//        void deleteAlarmFailed(int aEventId);
+};
+
+#endif /* CALENDAR_H */
diff --git a/src/app/alarmdbus.cpp b/src/app/alarmdbus.cpp
new file mode 100644 (file)
index 0000000..39f10ec
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "alarmdbus.h"
+#include "eventdialog.h"
+
+
+
+
+CAlarmDBus::CAlarmDBus(QWidget * aParent)
+    : QObject(),
+    mParent(aParent)
+{
+    // constructor
+    //setAutoRelaySignals(true);
+}
+
+CAlarmDBus::~CAlarmDBus()
+{
+    // destructor
+}
+
+void CAlarmDBus::Alarm(int aEventId)
+{
+       EventDialog dialog(aEventId,mParent);
+       dialog.exec();
+
+}
diff --git a/src/app/alarmdbus.h b/src/app/alarmdbus.h
new file mode 100644 (file)
index 0000000..41b0e00
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef ALARM_DBUS_H
+#define ALARM_DBUS_H
+
+#include <QObject>
+#include <QtDBus/QtDBus>
+
+class CAlarmDBus: public QObject
+{
+    Q_OBJECT
+    Q_CLASSINFO("D-Bus Interface", "at.priv.toastfreeware.confclerk")
+
+public:
+       CAlarmDBus(QWidget * aParent);
+    virtual ~CAlarmDBus();
+
+public: // PROPERTIES
+public Q_SLOTS: // METHODS
+    void Alarm(int aEventId);
+private:
+       QWidget * mParent;
+};
+
+
+#endif // ALARM_DBUS_H
diff --git a/src/app/alarmdbusadaptor.cpp b/src/app/alarmdbusadaptor.cpp
new file mode 100644 (file)
index 0000000..9ed05dc
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "alarmdbusadaptorp.h"
+#include <QtCore/QMetaObject>
+#include <QtCore/QByteArray>
+#include <QtCore/QList>
+#include <QtCore/QMap>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+#include <QtCore/QVariant>
+
+
+AlarmDBusAdaptor::AlarmDBusAdaptor(QObject *parent)
+    : QDBusAbstractAdaptor(parent)
+{
+    // constructor
+    setAutoRelaySignals(true);
+}
+
+AlarmDBusAdaptor::~AlarmDBusAdaptor()
+{
+    // destructor
+}
+
+void AlarmDBusAdaptor::Alarm(int aEventId)
+{
+    QMetaObject::invokeMethod(parent(), "Alarm",Q_ARG(int, aEventId));
+}
+
+
diff --git a/src/app/alarmdbusadaptorp.h b/src/app/alarmdbusadaptorp.h
new file mode 100644 (file)
index 0000000..5d73678
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef ALARM_DBUS_ADAPTOR_P_H
+#define ALARM_DBUS_ADAPTOR_P_H
+
+#include <QtCore/QObject>
+#include <QtDBus/QtDBus>
+
+QT_BEGIN_NAMESPACE
+class QByteArray;
+template<class T> class QList;
+template<class Key, class Value> class QMap;
+class QString;
+class QStringList;
+class QVariant;
+QT_END_NAMESPACE
+
+
+class AlarmDBusAdaptor: public QDBusAbstractAdaptor
+{
+    Q_OBJECT
+    Q_CLASSINFO("D-Bus Interface", "at.priv.toastfreeware.confclerk.AlarmInterface")
+    Q_CLASSINFO("D-Bus Introspection", ""
+"  <interface name=\"at.priv.toastfreeware.confclerk.AlarmInterface\" >\n"
+"  <method name=\"Alarm\">\n"
+"        <arg name=\"aEventId\" type=\"i\" direction=\"in\"/>\n"
+"  </method>\n"
+"  </interface>\n"
+        "")
+public:
+       AlarmDBusAdaptor(QObject *parent);
+    virtual ~AlarmDBusAdaptor();
+
+public: // PROPERTIES
+public Q_SLOTS: // METHODS
+       void Alarm(int aEventId);
+};
+
+#endif
diff --git a/src/app/app.pro b/src/app/app.pro
new file mode 100644 (file)
index 0000000..2fd2c4a
--- /dev/null
@@ -0,0 +1,41 @@
+include(../global.pri)
+TEMPLATE = app
+TARGET = confclerk
+DESTDIR = ../bin
+QT += sql xml network
+CONFIG(maemo5) {
+    QT += maemo5 dbus
+}
+
+# module dependencies
+LIBS += -L$$DESTDIR -lgui -lmvc -lsql
+INCLUDEPATH += ../gui ../sql ../mvc ../orm
+DEPENDPATH += . ../gui
+POST_TARGETDEPS += $$DESTDIR/libmvc.a $$DESTDIR/libgui.a $$DESTDIR/libsql.a
+maemo {
+    LIBS += -L$$DESTDIR -lqalarm -lalarm
+    INCLUDEPATH += ../alarm
+    DEPENDPATH +=  ../alarm
+    TARGETDEPS += $$DESTDIR/libqalarm.a
+    HEADERS += alarmdbus.h \
+        alarmdbusadaptorp.h
+    SOURCES += alarmdbus.cpp \
+        alarmdbusadaptor.cpp
+}
+
+HEADERS += appsettings.h \
+        application.h
+
+SOURCES += main.cpp \
+           application.cpp \
+           appsettings.cpp
+
+RESOURCES += ../icons.qrc \
+                        ../db.qrc \
+                        ../../data/data.qrc
+
+# instalation related
+PREFIX = /usr/bin
+INSTALLS = target
+target.path = $$PREFIX
+
diff --git a/src/app/application.cpp b/src/app/application.cpp
new file mode 100644 (file)
index 0000000..1e51cc5
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "application.h"
+#include "errormessage.h"
+
+#include <ormrecord.h>
+
+// if the application uses exceptions,
+// there is always a possibility that some will leak uncached from event handler
+// crashing the application is too big punishment for it
+bool Application::notify(QObject* receiver, QEvent* event)
+{
+    try {
+        return QApplication::notify(receiver, event);
+    } catch (OrmException& e) {
+        error_message("UNCAUGHT OrmException: " + e.text());
+        return false;
+    } catch (...) {
+        error_message("UNCAUGHT EXCEPTION: unknown");
+        return false;
+    }
+}
diff --git a/src/app/application.h b/src/app/application.h
new file mode 100644 (file)
index 0000000..59504ef
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef APPLICATION_H
+#define APPLICATION_H
+
+#include <QApplication>
+
+class Application : public QApplication
+{
+    Q_OBJECT
+
+public:
+    Application(int& argc, char** argv)
+    : QApplication(argc, argv)
+    { }
+    virtual ~Application() { }
+
+    virtual bool notify(QObject* receiver, QEvent* event);
+};
+
+#endif
diff --git a/src/app/appsettings.cpp b/src/app/appsettings.cpp
new file mode 100644 (file)
index 0000000..2569398
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "appsettings.h"
+
+const QString PROXY_ADDRESS_SETTING ("proxyAddress"); 
+const QString PROXY_PORT_SETTING ("proxyPort"); 
+const QString PROXY_ISDIRECT_SETTING ("proxyIsDirectConnection"); 
+
+QSettings AppSettings::mSettings("Toastfreeware", "ConfClerk");
+
+QString AppSettings::proxyAddress()
+{
+    return mSettings.value(PROXY_ADDRESS_SETTING).toString();
+}
+
+quint16 AppSettings::proxyPort()
+{
+    return mSettings.value(PROXY_PORT_SETTING).toUInt();
+}
+
+bool AppSettings::isDirectConnection()
+{
+    return mSettings.value(PROXY_ISDIRECT_SETTING).toBool();
+}
+
+void AppSettings::setProxyAddress(const QString &aAddress)
+{
+    mSettings.setValue(PROXY_ADDRESS_SETTING, aAddress);
+}
+
+void AppSettings::setProxyPort(const quint16 aPort)
+{
+    mSettings.setValue(PROXY_PORT_SETTING, aPort);
+}
+
+void AppSettings::setDirectConnection(bool aDirectConnection)
+{
+    mSettings.setValue(PROXY_ISDIRECT_SETTING, aDirectConnection);
+}
+
+bool AppSettings::contains(const QString &aKey)
+{
+    return mSettings.contains(aKey);
+}
+
diff --git a/src/app/appsettings.h b/src/app/appsettings.h
new file mode 100644 (file)
index 0000000..2cc4895
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef APPSETTINGS_H
+#define APPSETTINGS_H
+
+#include <QString>
+#include <QSettings>
+
+class AppSettings
+{
+    private:
+        AppSettings() {}
+        static QSettings mSettings;
+
+    public:
+        static bool contains(const QString &aKey);
+
+        static QString proxyAddress();
+        static quint16 proxyPort();
+        static bool isDirectConnection();
+
+        static void setProxyAddress(const QString &aAddress);
+        static void setProxyPort(const quint16 aPort);
+        static void setDirectConnection(bool aDirectConnection);
+};
+
+#endif /* APPSETTINGS_H */
+
diff --git a/src/app/main.cpp b/src/app/main.cpp
new file mode 100644 (file)
index 0000000..d70f890
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include <mainwindow.h>
+
+#include <sqlengine.h>
+
+#include "eventdialog.h"
+#include "application.h"
+
+#ifdef MAEMO
+//#include <alarmdialog.h>
+#include <alarmdbus.h>
+#include <alarmdbusadaptorp.h>
+#endif /* MAEMO */
+
+
+int main(int argc, char *argv[])
+{
+    Q_INIT_RESOURCE(icons);
+    Q_INIT_RESOURCE(db);
+    Q_INIT_RESOURCE(data);
+
+    Application a(argc, argv);
+    Application::setWindowIcon(QIcon(":/confclerk.svg"));
+
+    // needed by QDesktopServices
+    QCoreApplication::setOrganizationName("Toastfreeware");
+    QCoreApplication::setApplicationName("ConfClerk");
+    QCoreApplication::setApplicationVersion(VERSION);
+    SqlEngine::initialize(); // creates "SQLITE" DB connection
+
+    QWidget *window;
+
+    window = new MainWindow;
+
+
+#ifdef MAEMO
+    // Alarm Dbus
+    CAlarmDBus *alarmDBus = new CAlarmDBus(window);
+    new AlarmDBusAdaptor(alarmDBus);
+    QDBusConnection connection = QDBusConnection::sessionBus();
+
+    if(connection.registerObject("/ConfClerk", alarmDBus) == true)
+    {
+       if( connection.registerService("at.priv.toastfreeware.confclerk") == false)
+       {
+               if(argc>1)
+               {
+                       QDBusInterface *interface = new QDBusInterface("at.priv.toastfreeware.confclerk",
+                                                                      "/ConfClerk",
+                                                                      "at.priv.toastfreeware.confclerk.AlarmInterface",
+                                                                      connection);
+                       interface->call("Alarm",atoi(argv[1]));
+                       return 0;
+               }
+       }
+    }
+
+    if(argc > 1)
+    {
+        EventDialog dialog(atoi(argv[1]),window);
+        dialog.exec();
+    }
+#endif
+
+    window->show();
+
+    return a.exec();
+}
+
diff --git a/src/create_tables.sql b/src/create_tables.sql
new file mode 100644 (file)
index 0000000..f804900
--- /dev/null
@@ -0,0 +1,75 @@
+BEGIN TRANSACTION;
+CREATE TABLE CONFERENCE ( id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL
+    , title VARCHAR UNIQUE NOT NULL
+    , subtitle VARCHAR
+    , venue VARCHAR
+    , city VARCHAR NOT NULL
+    , start INTEGER NOT NULL
+    , end INTEGER NOT NULL
+    , days INTEGER
+    , day_change INTEGER
+    , timeslot_duration INTEGER
+    , active INTEGER DEFAULT 0
+    , url VARCHAR
+    , map VARCHAR);
+
+CREATE TABLE TRACK ( id INTEGER  PRIMARY KEY AUTOINCREMENT  NOT NULL
+    , xid_conference INTEGER NOT NULL
+    , name VARCHAR NOT NULL
+    , UNIQUE (xid_conference, name));
+
+CREATE TABLE ROOM ( id INTEGER PRIMARY KEY AUTOINCREMENT  NOT NULL
+    , xid_conference INTEGER NOT NULL
+    , name VARCHAR NOT NULL
+    , picture VARCHAR NOT NULL
+    , UNIQUE (xid_conference, name));
+
+CREATE TABLE PERSON ( id INTEGER NOT NULL
+    , xid_conference INTEGER NOT NULL
+    , name VARCHAR NOT NULL
+    , UNIQUE (xid_conference, name)
+    , PRIMARY KEY (id, xid_conference)); 
+
+CREATE TABLE EVENT ( xid_conference INTEGER  NOT NULL
+    , id INTEGER NOT NULL
+    , start INTEGER NOT NULL
+    , duration INTEGER NOT NULL
+    , xid_track INTEGER NOT NULL REFERENCES TRACK(id)
+    , type VARCHAR
+    , language VARCHAR
+    , tag VARCHAR
+    , title VARCHAR NOT NULL
+    , subtitle VARCHAR
+    , abstract VARCHAR
+    , description VARCHAR
+    , favourite INTEGER DEFAULT 0
+    , alarm INTEGER DEFAULT 0
+    , PRIMARY KEY (xid_conference ,id)
+    , FOREIGN KEY(xid_conference) REFERENCES CONFERENCE(id)
+    , FOREIGN KEY(xid_track) REFERENCES TRACK(id));
+
+CREATE TABLE EVENT_PERSON ( xid_conference INTEGER NOT NULL
+    , xid_event INTEGER NOT NULL
+    , xid_person INTEGER NOT NULL
+    , UNIQUE ( xid_conference , xid_event , xid_person ) ON CONFLICT REPLACE
+    , FOREIGN KEY(xid_conference) REFERENCES CONFERENCE(id)
+    , FOREIGN KEY(xid_conference, xid_event) REFERENCES EVENT(xid_conference, id)
+    , FOREIGN KEY(xid_conference, xid_person) REFERENCES PERSON(xid_conference, id));
+
+CREATE TABLE EVENT_ROOM ( xid_conference INTEGER NOT NULL
+    , xid_event INTEGER NOT NULL
+    , xid_room INTEGER NOT NULL
+    , UNIQUE ( xid_conference , xid_event , xid_room ) ON CONFLICT REPLACE
+    , FOREIGN KEY(xid_conference) REFERENCES CONFERENCE(id)
+    , FOREIGN KEY(xid_conference, xid_event) REFERENCES EVENT(xid_conference, id)
+    , FOREIGN KEY(xid_conference, xid_room) REFERENCES ROOM(xid_conference, id));
+
+CREATE TABLE LINK ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL
+    , xid_conference INTEGER NOT NULL
+    , xid_event INTEGER NOT NULL
+    , name VARCHAR
+    , url VARCHAR NOT NULL
+    , UNIQUE ( xid_conference , xid_event , url ) ON CONFLICT REPLACE
+    , FOREIGN KEY(xid_conference) REFERENCES CONFERENCE(id)
+    , FOREIGN KEY(xid_conference, xid_event) REFERENCES EVENT(xid_conference, id));
+COMMIT;
diff --git a/src/db.qrc b/src/db.qrc
new file mode 100644 (file)
index 0000000..03d8d30
--- /dev/null
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>create_tables.sql</file>
+</qresource>
+</RCC>
+
diff --git a/src/global.pri b/src/global.pri
new file mode 100644 (file)
index 0000000..1a72c7e
--- /dev/null
@@ -0,0 +1,26 @@
+# This is 'global.pri' file which defines
+# GLOBAL definitions for the project
+# include this file in each "*.pro" file, where it's needed
+# USAGE: include(./global.pri)
+
+# VERSION
+VERSION = 0.5.0
+DEFINES += VERSION=\\\"$$VERSION\\\"
+
+# Define 'MAEMO' specific CONFIG/DEFINE
+# To handle 'MAEMO' specific soruces/code
+DISTRO = $$system(cat /etc/issue)
+contains( DISTRO, [Mm]aemo ) {
+    # for 'MAEMO' specific source code parts
+    DEFINES += MAEMO
+    # for eg. including 'MAEMO' specific files
+    CONFIG += maemo
+}
+
+contains( DISTRO, [Ii]nternet ) {
+    contains( DISTRO, [Tt]ablet ) {
+        # Nokia N810 device
+        DEFINES += N810
+    }
+}
+
diff --git a/src/gui/about.ui b/src/gui/about.ui
new file mode 100644 (file)
index 0000000..818a116
--- /dev/null
@@ -0,0 +1,417 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AboutDialog</class>
+ <widget class="QDialog" name="AboutDialog">
+  <property name="windowModality">
+   <enum>Qt::WindowModal</enum>
+  </property>
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>500</width>
+    <height>487</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>77</width>
+    <height>77</height>
+   </size>
+  </property>
+  <property name="maximumSize">
+   <size>
+    <width>500</width>
+    <height>1000</height>
+   </size>
+  </property>
+  <property name="palette">
+   <palette>
+    <active>
+     <colorrole role="Base">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>239</red>
+        <green>235</green>
+        <blue>231</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="AlternateBase">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>239</red>
+        <green>235</green>
+        <blue>231</blue>
+       </color>
+      </brush>
+     </colorrole>
+    </active>
+    <inactive>
+     <colorrole role="Base">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>239</red>
+        <green>235</green>
+        <blue>231</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="AlternateBase">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>239</red>
+        <green>235</green>
+        <blue>231</blue>
+       </color>
+      </brush>
+     </colorrole>
+    </inactive>
+    <disabled>
+     <colorrole role="Base">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>255</red>
+        <green>255</green>
+        <blue>255</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="AlternateBase">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>239</red>
+        <green>235</green>
+        <blue>231</blue>
+       </color>
+      </brush>
+     </colorrole>
+    </disabled>
+   </palette>
+  </property>
+  <property name="windowTitle">
+   <string>About application</string>
+  </property>
+  <property name="locale">
+   <locale language="C" country="AnyCountry"/>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <widget class="QLabel" name="FosdemIcon">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>77</width>
+           <height>68</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="pixmap">
+          <pixmap resource="../../data/data.qrc">:/confclerk.svg</pixmap>
+         </property>
+         <property name="scaledContents">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <widget class="QScrollArea" name="scrollArea">
+         <property name="widgetResizable">
+          <bool>true</bool>
+         </property>
+         <widget class="QWidget" name="scrollAreaWidgetContents">
+          <property name="geometry">
+           <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>374</width>
+            <height>544</height>
+           </rect>
+          </property>
+          <layout class="QGridLayout" name="gridLayout_2">
+           <item row="0" column="0">
+            <widget class="QWidget" name="content" native="true">
+             <layout class="QVBoxLayout" name="verticalLayout_3">
+              <item>
+               <widget class="QLabel" name="label">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="font">
+                 <font>
+                  <weight>75</weight>
+                  <bold>true</bold>
+                 </font>
+                </property>
+                <property name="text">
+                 <string>ConfClerk</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_2">
+                <property name="text">
+                 <string>(Successor of FOSDEM schedule)</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="labelVersion">
+                <property name="text">
+                 <string>Version %1</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="spacer">
+                <property name="text">
+                 <string/>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="description">
+                <property name="text">
+                 <string>ConfClerk is an application written in Qt, which makes conference schedules available offline.  It displays the conference schedule from various views, support searches on various items (speaker, speech topic, location, etc.) and enables you to select favorite events and create your own schedule. At the moment ConfClerk is able to import schedules in XML format created by the PentaBarf conference management system used by e.g. FOSDEM, DebConf, and the CCC.</string>
+                </property>
+                <property name="wordWrap">
+                 <bool>true</bool>
+                </property>
+                <property name="openExternalLinks">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_3">
+                <property name="text">
+                 <string/>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>0</width>
+                  <height>0</height>
+                 </size>
+                </property>
+                <property name="font">
+                 <font>
+                  <weight>75</weight>
+                  <bold>true</bold>
+                 </font>
+                </property>
+                <property name="title">
+                 <string>Developers</string>
+                </property>
+                <layout class="QVBoxLayout" name="verticalLayout_4">
+                 <item>
+                  <widget class="QLabel" name="label_4">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="font">
+                    <font>
+                     <weight>50</weight>
+                     <bold>false</bold>
+                    </font>
+                   </property>
+                   <property name="text">
+                    <string>Berendova Monika, Hanzes Matus, Komara Martin, Korinek Pavol, Pavelka Pavol, Timko Marek, Uzak Matus, Fortes Francisco, Philipp Spitzer, gregor herrmann</string>
+                   </property>
+                   <property name="wordWrap">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QGroupBox" name="groupBox_2">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="font">
+                 <font>
+                  <weight>75</weight>
+                  <bold>true</bold>
+                 </font>
+                </property>
+                <property name="title">
+                 <string>Copyright and license</string>
+                </property>
+                <layout class="QVBoxLayout" name="verticalLayout_5">
+                 <item>
+                  <widget class="QLabel" name="label_5">
+                   <property name="sizePolicy">
+                    <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                     <horstretch>0</horstretch>
+                     <verstretch>0</verstretch>
+                    </sizepolicy>
+                   </property>
+                   <property name="font">
+                    <font>
+                     <weight>50</weight>
+                     <bold>false</bold>
+                    </font>
+                   </property>
+                   <property name="text">
+                    <string>ConfClerk is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.</string>
+                   </property>
+                   <property name="wordWrap">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_6">
+                   <property name="font">
+                    <font>
+                     <weight>50</weight>
+                     <bold>false</bold>
+                    </font>
+                   </property>
+                   <property name="text">
+                    <string>ConfClerk is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.</string>
+                   </property>
+                   <property name="wordWrap">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="copyright">
+                <property name="text">
+                 <string>Copyright (C) 2010 Ixonos Plc.
+Copyright (C) 2011 Philipp Spitzer &amp; gregor herrmann</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </widget>
+           </item>
+           <item row="1" column="0">
+            <spacer name="verticalSpacer_2">
+             <property name="orientation">
+              <enum>Qt::Vertical</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>20</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </widget>
+        </widget>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <item>
+          <spacer name="horizontalSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QPushButton" name="okButton">
+           <property name="text">
+            <string>OK</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../icons.qrc"/>
+  <include location="../../data/data.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>okButton</sender>
+   <signal>clicked()</signal>
+   <receiver>AboutDialog</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>512</x>
+     <y>724</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>282</x>
+     <y>375</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/gui/alarmdialog.cpp b/src/gui/alarmdialog.cpp
new file mode 100644 (file)
index 0000000..e542cf8
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "alarmdialog.h"
+#include <conference.h>
+
+#include <QApplication>
+#include <alarm.h>
+#include <event.h>
+
+#include <QDir>
+#include <QProcess>
+
+const int SNOOZE_TIME = 5; // in minutes
+
+AlarmDialog::AlarmDialog(int argc, char *argv[], QWidget *aParent)
+    : QDialog(aParent)
+    , mEventId(0)
+    , mAlarmId(0)
+{
+    setupUi(this);
+
+    if(argc<3)
+    {
+        // not enough arguments passed to the dialog
+        // Usage: $ ./dialog eventId alarmId
+        // Example: $ ./dialog 521 13
+        //
+        // TODO: handle this case
+    }
+    else
+    {
+        mEventId = QString(argv[1]).toInt();
+        mAlarmId = QString(argv[2]).toInt();
+    }
+
+    connect(stopPB, SIGNAL(clicked()), SLOT(closeDialog()));
+    connect(appPB, SIGNAL(clicked()), SLOT(runApp()));
+    connect(snoozePB, SIGNAL(clicked()), SLOT(snooze()));
+
+    qString databaseFileName;
+    databaseFileName = QDesktopServices::storageLocation(QDesktopServices::DataLocation + "/ConfClerk.sqlite" 
+    // TODO: check existence
+    QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE");
+    database.setDatabaseName(databaseFileName);
+    database.open();
+
+    QString titleStr;
+    QString messageStr;
+    QString timeStr;
+    QString personsStr;
+    QString roomStr;
+    try
+    {
+        Event event = Event::getById(mEventId,Conference::activeConference());
+        titleStr = "Event alarm";
+        messageStr = event.title();
+        timeStr = event.start().toString("hh:mm") + "-" + event.start().addSecs(event.duration()).toString("hh:mm");
+        personsStr = event.persons().join(" and ");
+        roomStr = event.room();
+    }
+    catch(OrmNoObjectException&)
+    {
+        titleStr = QString("ERROR");
+        messageStr = QString("No such event in the DB: %1").arg(QString::number(mEventId));
+    }
+    catch(...) {} // TODO: implement
+    message->setText(messageStr);
+    setWindowTitle(titleStr);
+    time->setText(timeStr);
+    persons->setText(personsStr);
+    room->setText(roomStr);
+}
+
+void AlarmDialog::runApp()
+{
+    QString program = QDir::currentPath() + "/" + *qApp->argv();
+    QProcess::startDetached(program,QStringList()<<QString::number(mEventId));
+    closeDialog();
+}
+
+void AlarmDialog::snooze()
+{
+    if(mEventId==0) // not valid event ID
+        return;
+
+    Alarm alarm;
+    alarm.addAlarm(mEventId,QDateTime::currentDateTime().addSecs(60*SNOOZE_TIME));
+    qApp->quit();
+}
+
+void AlarmDialog::closeDialog()
+{
+    // before closing the dialog, it is necessary to remove alarm flag from the DB
+    try
+    {
+        Event event = Event::getById(mEventId,Conference::activeConference());
+        event.setHasAlarm(false);
+        event.update("alarm");
+    }
+    catch(OrmNoObjectException &) {} // TODO: implement
+    catch(...) {} // just close dialog
+    qApp->quit();
+}
+
diff --git a/src/gui/alarmdialog.h b/src/gui/alarmdialog.h
new file mode 100644 (file)
index 0000000..dbeb61e
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef ALARMDIALOG_H
+#define ALARMDIALOG_H
+
+#include <QDialog>
+#include "ui_alarmdialog.h"
+
+class AlarmDialog : public QDialog, Ui::AlarmDialog
+{
+    Q_OBJECT
+    public:
+        AlarmDialog(int argc, char *argv[], QWidget *aParent = NULL);
+        ~AlarmDialog() {}
+    private slots:
+        void runApp();
+        void snooze();
+        void closeDialog();
+    private:
+        int mEventId; // event ID obtained from 'schedule'
+        int mAlarmId; // cookie assigned by alarmd
+};
+
+#endif /* ALARMDIALOG_H */
+
diff --git a/src/gui/alarmdialog.ui b/src/gui/alarmdialog.ui
new file mode 100644 (file)
index 0000000..d0cd82e
--- /dev/null
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AlarmDialog</class>
+ <widget class="QDialog" name="AlarmDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>406</width>
+    <height>176</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="2" column="0">
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <widget class="QLabel" name="message">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text">
+        <string>Alarm message goes here</string>
+       </property>
+       <property name="wordWrap">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <item>
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string/>
+         </property>
+         <property name="pixmap">
+          <pixmap resource="../../data/data.qrc">:/confclerk.svg</pixmap>
+         </property>
+         <property name="scaledContents">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <layout class="QGridLayout" name="gridLayout_2">
+         <item row="0" column="1">
+          <widget class="QLabel" name="label_2">
+           <property name="text">
+            <string>Time:</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QLabel" name="label_3">
+           <property name="text">
+            <string>Presenter(s):</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="1">
+          <widget class="QLabel" name="label_4">
+           <property name="text">
+            <string>Room:</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="3">
+          <widget class="QLabel" name="persons">
+           <property name="text">
+            <string>PRESETNER(S)</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="3">
+          <widget class="QLabel" name="time">
+           <property name="text">
+            <string>TIME</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="3">
+          <widget class="QLabel" name="room">
+           <property name="text">
+            <string>ROOM</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QLabel" name="label_5">
+           <property name="text">
+            <string/>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="2">
+          <widget class="QLabel" name="label_6">
+           <property name="text">
+            <string/>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QPushButton" name="appPB">
+         <property name="text">
+          <string>App</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="snoozePB">
+         <property name="text">
+          <string>Snooze</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="stopPB">
+         <property name="text">
+          <string>Cancel</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../icons.qrc"/>
+  <include location="../../data/data.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/src/gui/conferenceeditor.cpp b/src/gui/conferenceeditor.cpp
new file mode 100644 (file)
index 0000000..d99628a
--- /dev/null
@@ -0,0 +1,236 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "conferenceeditor.h"
+
+#include "conferencemodel.h"
+#include "urlinputdialog.h"
+#include "mapwindow.h"
+#include "errormessage.h"
+
+#include <QInputDialog>
+#include <QItemSelectionModel>
+#include <QFileDialog>
+#include <QMessageBox>
+
+ConferenceEditor::ConferenceEditor(ConferenceModel* model, QWidget* parent)
+: QDialog(parent)
+, model(model)
+, selected_id(-1)
+{
+    setupUi(this);
+    progressBar->hide();
+
+    confView->setModel(model);
+
+    QItemSelectionModel* confViewSelection = new QItemSelectionModel(model, this);
+    confView->setSelectionModel(confViewSelection);
+
+    connect(confViewSelection, SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)),
+                                SLOT(itemSelected(const QModelIndex&, const QModelIndex&)));
+    connect(this, SIGNAL(wantCurrent(const QModelIndex&, QItemSelectionModel::SelectionFlags)),
+            confViewSelection, SLOT(setCurrentIndex(const QModelIndex&, QItemSelectionModel::SelectionFlags)));
+    connect(addBtn, SIGNAL(clicked()), SLOT(addClicked()));
+    connect(removeBtn, SIGNAL(clicked()), SLOT(removeClicked()));
+    connect(changeUrl, SIGNAL(clicked()), SLOT(changeUrlClicked()));
+    connect(refreshBtn, SIGNAL(clicked()), SLOT(refreshClicked()));
+    connect(showMapButton, SIGNAL(clicked()), SLOT(conferenceMapClicked()));
+    connect(buttonBox, SIGNAL(rejected()), SLOT(close()));
+
+    // it's OK to emit selection signals here
+    // because they are not yet connected to anybody
+    int active_id = Conference::activeConference();
+    if (active_id > 0) {
+        emit wantCurrent(model->indexFromId(active_id), QItemSelectionModel::SelectCurrent);
+    } else {
+        itemSelected(QModelIndex(), QModelIndex());
+    }
+}
+
+void ConferenceEditor::conferenceRemoved()
+{
+    if (model->rowCount() > 0) {
+        emit wantCurrent(model->index(0, 0), QItemSelectionModel::SelectCurrent);
+    } else {
+        itemSelected(QModelIndex(), QModelIndex());
+    }
+}
+
+void ConferenceEditor::itemSelected(const QModelIndex& current, const QModelIndex& previous)
+{
+    // TODO: fill all required fields
+    Q_UNUSED(previous);
+    if (!current.isValid()) {
+        selected_id = -1;
+
+        emit noneConferenceSelected();
+
+        conferenceInfo->setCurrentIndex(1);
+        removeBtn->hide();
+    } else {
+        const Conference& conf = model->conferenceFromIndex(current);
+        selected_id = conf.id();
+
+        emit haveConferenceSelected(selected_id);
+
+        conferenceTitle->setText(conf.title());
+        conferenceSubtitle->setText(conf.subtitle());
+        conferenceWhere->setText(conf.city() + ", " + conf.venue());
+        conferenceWhen->setText(
+                conf.start().toString("dd-MM-yyyy")
+                + ", " +
+                conf.end().toString("dd-MM-yyyy"));
+
+        QString map = conf.map();
+        if (map.isEmpty()) {
+            showMapButton->hide();
+        } else {
+            showMapButton->show();
+        }
+
+        conferenceInfo->setCurrentIndex(0);
+        removeBtn->show();
+    }
+}
+
+void ConferenceEditor::addClicked()
+{
+    UrlInputDialog url_input(this);
+    switch (url_input.exec()) {
+    case UrlInputDialog::HaveUrl: emit haveConferenceUrl(url_input.url()); break;
+    case UrlInputDialog::HaveFile: emit haveConferenceFile(url_input.url()); break;
+    case UrlInputDialog::Cancel: return;
+    }
+}
+
+void ConferenceEditor::removeClicked()
+{
+    if (selected_id < 0) {
+        // TODO: disable it when none is selected
+        return;
+    }
+
+    QMessageBox::StandardButton answer = 
+        QMessageBox::question(0
+            , "Deletion confirmation"
+            , QString("Really delete the %1 conference").arg(Conference::getById(selected_id).title())
+            , QMessageBox::Yes | QMessageBox::No
+            , QMessageBox::No);
+
+    if (answer == QMessageBox::Yes) {
+        emit removeConferenceRequested(selected_id);
+    }
+}
+
+void ConferenceEditor::changeUrlClicked()
+{
+    if (selected_id < 0) {
+        return;
+    }
+    const Conference& selected = Conference::getById(selected_id);
+
+    bool ok;
+    QString url = QInputDialog::getText(this, "URL Input", "Enter schedule URL", QLineEdit::Normal, selected.url(), &ok);
+
+    if (ok) {
+        emit changeUrlRequested(selected_id, url);
+    }
+}
+
+void ConferenceEditor::refreshClicked()
+{
+    if (selected_id < 0) {
+        return;
+    }
+    const Conference& selected = Conference::getById(selected_id);
+
+    QString url = selected.url();
+
+    if (!url.isEmpty()) {
+        emit haveConferenceUrl(url);
+    } else {
+        static const QString format("Schedule URL for %1 is not set. Enter the schedule URL:");
+        bool ok;
+        QString url = QInputDialog::getText(this, "URL Input", format.arg(selected.title()), QLineEdit::Normal, QString(), &ok);
+
+        if (ok) {
+            // first save it, to remain if fetch fails
+            emit changeUrlRequested(selected_id, url);
+            // then fetch
+            emit haveConferenceUrl(url);
+        }
+    }
+}
+
+void ConferenceEditor::importStarted()
+{
+    addBtn->hide();
+    removeBtn->hide();
+    buttons->layout()->removeItem(buttonsSpacer);
+    progressBar->setValue(0);
+    progressBar->show();
+
+    QApplication::processEvents();
+}
+
+void ConferenceEditor::showParsingProgress(int progress)
+{
+    progressBar->setValue(progress);
+
+    QApplication::processEvents();
+}
+
+void ConferenceEditor::importFinished(const QString& title)
+{
+    addBtn->show();
+    // removeItem should be shown later, but it takes some time,
+    // and not looks good
+    // anyway it will be shown a bit later
+    removeBtn->show();
+    buttons->layout()->addItem(buttonsSpacer);
+    progressBar->hide();
+
+    QApplication::processEvents();
+
+    int num = model->rowCount();
+    for (int i = 0; i < num; i++) {
+        QModelIndex item = model->index(i, 0);
+        if (model->data(item) == title) {
+            emit wantCurrent(item, QItemSelectionModel::SelectCurrent);
+            return;
+        }
+    }
+    itemSelected(QModelIndex(), QModelIndex());
+}
+
+void ConferenceEditor::conferenceMapClicked()
+{
+    Conference conf = Conference::getById(selected_id);
+    QString mapPath = conf.map();
+    if(mapPath.isEmpty() or !QFile::exists(mapPath)) {
+        error_message("Map is not available");
+        return;
+    }
+
+    QString roomName;
+
+    QPixmap map(mapPath);
+    MapWindow window(map,roomName,this);
+    window.exec();
+}
diff --git a/src/gui/conferenceeditor.h b/src/gui/conferenceeditor.h
new file mode 100644 (file)
index 0000000..adddd15
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef CONFERENCE_EDITOR_H
+#define CONFERENCE_EDITOR_H
+
+#include "ui_conferenceeditor.h"
+
+#include <QItemSelectionModel>
+
+class ConferenceModel;
+
+/** ConferenceEditor clas is used for managing list of conferences.
+
+That is, selecting an active conference, adding a new conference from URL or
+file, removing a conference, refreshing a conference from URL that is saved in
+the DB.
+
+It does not do anything of this itself, instead emitting controlling signals.
+On the ConferenceEditor creation, they are connected to proper listeners.
+
+\see MainWindow::showConferences()
+*/
+class ConferenceEditor : public QDialog, private Ui::ConferenceEditor {
+    Q_OBJECT
+
+public:
+    ConferenceEditor(ConferenceModel* model, QWidget* parent);
+    virtual ~ConferenceEditor() { }
+signals:
+    void haveConferenceSelected(int id);
+    void noneConferenceSelected();
+
+    void haveConferenceUrl(const QString& url);
+    void haveConferenceFile(const QString& path);
+    void removeConferenceRequested(int id);
+    void changeUrlRequested(int, const QString&);
+
+    void wantCurrent(const QModelIndex&, QItemSelectionModel::SelectionFlags);
+public slots:
+    void importStarted();
+    void importFinished(const QString& title);
+    void conferenceRemoved();
+    void showParsingProgress(int);
+private slots:
+    void itemSelected(const QModelIndex& current, const QModelIndex& previous);
+    void addClicked();
+    void removeClicked();
+    void changeUrlClicked();
+    void refreshClicked();
+    void conferenceMapClicked();
+
+private:
+    ConferenceModel* model;
+    int selected_id;
+    QString import_in_progress_title;
+};
+
+#endif
diff --git a/src/gui/conferenceeditor.ui b/src/gui/conferenceeditor.ui
new file mode 100644 (file)
index 0000000..d4c8fda
--- /dev/null
@@ -0,0 +1,347 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ConferenceEditor</class>
+ <widget class="QDialog" name="ConferenceEditor">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>548</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Edit Conferences</string>
+  </property>
+  <property name="windowIcon">
+   <iconset resource="../../data/data.qrc">
+    <normaloff>:/confclerk.svg</normaloff>:/confclerk.svg</iconset>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="margin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QWidget" name="widget_2" native="true">
+     <layout class="QVBoxLayout" name="verticalLayout_2">
+      <item>
+       <widget class="QWidget" name="buttons" native="true">
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <property name="margin">
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QPushButton" name="addBtn">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string notr="true"/>
+           </property>
+           <property name="icon">
+            <iconset resource="../icons.qrc">
+             <normaloff>:/icons/add.png</normaloff>:/icons/add.png</iconset>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="removeBtn">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string notr="true"/>
+           </property>
+           <property name="icon">
+            <iconset resource="../icons.qrc">
+             <normaloff>:/icons/remove.png</normaloff>:/icons/remove.png</iconset>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QProgressBar" name="progressBar">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+             <horstretch>10</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="value">
+            <number>0</number>
+           </property>
+           <property name="textVisible">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="buttonsSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <widget class="QListView" name="confView"/>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QWidget" name="widget_3" native="true">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_3">
+      <property name="spacing">
+       <number>0</number>
+      </property>
+      <property name="margin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QStackedWidget" name="conferenceInfo">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="currentIndex">
+         <number>0</number>
+        </property>
+        <widget class="QWidget" name="conferenceInfoContents">
+         <layout class="QVBoxLayout" name="verticalLayout_4">
+          <property name="spacing">
+           <number>0</number>
+          </property>
+          <property name="margin">
+           <number>0</number>
+          </property>
+          <item>
+           <widget class="QLabel" name="conferenceTitle">
+            <property name="font">
+             <font>
+              <weight>75</weight>
+              <bold>true</bold>
+             </font>
+            </property>
+            <property name="text">
+             <string>Conference Name</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="wordWrap">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="conferenceSubtitle">
+            <property name="text">
+             <string>Conference Subtitle</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="wordWrap">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <layout class="QGridLayout" name="gridLayout_7">
+            <item row="0" column="0">
+             <widget class="QLabel" name="label_3">
+              <property name="font">
+               <font>
+                <weight>75</weight>
+                <italic>true</italic>
+                <bold>true</bold>
+               </font>
+              </property>
+              <property name="text">
+               <string>When:</string>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="0">
+             <widget class="QLabel" name="label_4">
+              <property name="font">
+               <font>
+                <weight>75</weight>
+                <italic>true</italic>
+                <bold>true</bold>
+               </font>
+              </property>
+              <property name="text">
+               <string>Where:</string>
+              </property>
+             </widget>
+            </item>
+            <item row="0" column="2">
+             <widget class="QLabel" name="conferenceWhen">
+              <property name="text">
+               <string>DATE (FROM - TO)</string>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="2">
+             <widget class="QLabel" name="conferenceWhere">
+              <property name="text">
+               <string>CITY, CAMPUS</string>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="3">
+             <widget class="QPushButton" name="showMapButton">
+              <property name="text">
+               <string>MAP</string>
+              </property>
+              <property name="icon">
+               <iconset resource="../icons.qrc">
+                <normaloff>:/icons/applications-internet.png</normaloff>:/icons/applications-internet.png</iconset>
+              </property>
+              <property name="flat">
+               <bool>true</bool>
+              </property>
+             </widget>
+            </item>
+            <item row="1" column="4">
+             <spacer name="horizontalSpacer_4">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>40</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item row="0" column="1">
+             <widget class="QLabel" name="spacer_2">
+              <property name="text">
+               <string/>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <widget class="QWidget" name="widget_5" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <layout class="QHBoxLayout" name="horizontalLayout_3">
+             <item>
+              <widget class="QPushButton" name="refreshBtn">
+               <property name="text">
+                <string notr="true"/>
+               </property>
+               <property name="icon">
+                <iconset resource="../icons.qrc">
+                 <normaloff>:/icons/reload.png</normaloff>:/icons/reload.png</iconset>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QPushButton" name="changeUrl">
+               <property name="text">
+                <string>Change URL</string>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <spacer name="horizontalSpacer_2">
+               <property name="orientation">
+                <enum>Qt::Horizontal</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>40</width>
+                 <height>20</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+             <item>
+              <widget class="QWidget" name="widget" native="true">
+               <layout class="QVBoxLayout" name="verticalLayout">
+                <property name="spacing">
+                 <number>0</number>
+                </property>
+                <property name="margin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <spacer name="verticalSpacer">
+                  <property name="orientation">
+                   <enum>Qt::Vertical</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>20</width>
+                    <height>40</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+                <item>
+                 <widget class="QDialogButtonBox" name="buttonBox">
+                  <property name="standardButtons">
+                   <set>QDialogButtonBox::Close</set>
+                  </property>
+                  <property name="centerButtons">
+                   <bool>false</bool>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+        <widget class="QWidget" name="conferenceInfoEmpty"/>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../icons.qrc"/>
+  <include location="../../data/data.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/src/gui/conflictdialogcontainer.cpp b/src/gui/conflictdialogcontainer.cpp
new file mode 100644 (file)
index 0000000..8e3e00b
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "conflictdialogcontainer.h"
+
+ConflictDialogContainer::ConflictDialogContainer(QWidget *aParent)
+    : TabContainer( aParent )
+{
+}
+
+void ConflictDialogContainer::loadEvents( const QDate &aDate, const int aConferenceId )
+{
+    Q_UNUSED(aDate);
+
+    static_cast<EventModel*>(treeView->model())->loadConflictEvents( mEventId, aConferenceId );
+    dayNavigator->hide();
+}
+
+void ConflictDialogContainer::updateTreeView(const QDate &aDate)
+{
+    TabContainer::updateTreeView(aDate);
+    treeView->setAllExpanded(true);
+}
+
diff --git a/src/gui/conflictdialogcontainer.h b/src/gui/conflictdialogcontainer.h
new file mode 100644 (file)
index 0000000..9f1616b
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef CONFLICTDIALOGCONTAINER_H
+#define CONFLICTDIALOGCONTAINER_H
+
+#include "tabcontainer.h"
+
+class ConflictDialogContainer: public TabContainer
+{
+    Q_OBJECT
+public:
+    ConflictDialogContainer(QWidget *aParent);
+    virtual ~ConflictDialogContainer(){}
+
+    void setEventId(int aEventId) { mEventId = aEventId; }
+
+protected:
+    virtual void loadEvents( const QDate &aDate, const int aConferenceId );
+
+protected slots:
+    virtual void updateTreeView(const QDate &aDate);
+
+private:
+    int mEventId;
+};
+
+#endif /* CONFLICTDIALOGCONTAINER_H */
+
diff --git a/src/gui/conflictsdialog.cpp b/src/gui/conflictsdialog.cpp
new file mode 100644 (file)
index 0000000..11fed30
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "conflictsdialog.h"
+
+ConflictsDialog::ConflictsDialog(int aEventId, QWidget *aParent)
+    : QDialog(aParent)
+{
+    setupUi(this);
+    connect(container, SIGNAL(eventHasChanged(int,bool)), this, SIGNAL(eventHasChanged(int,bool)));
+    connect(container, SIGNAL(eventHasChanged(int,bool)), container, SLOT(updateTreeViewModel(int,bool)));
+
+    container->setEventId(aEventId);
+
+    int confId = Conference::activeConference();
+    QDate startDate = Conference::getById(confId).start();
+    QDate endDate = Conference::getById(confId).end();
+    container->setDates(startDate, endDate);
+}
+
+ConflictsDialog::~ConflictsDialog()
+{
+    disconnect(container, SIGNAL(eventHasChanged(int,bool)), this, SIGNAL(eventHasChanged(int,bool)));
+}
+
diff --git a/src/gui/conflictsdialog.h b/src/gui/conflictsdialog.h
new file mode 100644 (file)
index 0000000..cca88db
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef CONFLICTSDIALOG_H
+#define CONFLICTSDIALOG_H
+
+#include "ui_conflictsdialog.h"
+#include <QDialog>
+
+class ConflictsDialog : public QDialog, Ui::ConflictsDialog
+{
+    Q_OBJECT
+public:
+    ConflictsDialog(int aEventId, QWidget *aParent = NULL);
+    ~ConflictsDialog();
+signals:
+    void eventHasChanged(int aEventId, bool aReloadModel = false);
+};
+
+#endif /* CONFLICTSDIALOG_H */ 
+
diff --git a/src/gui/conflictsdialog.ui b/src/gui/conflictsdialog.ui
new file mode 100644 (file)
index 0000000..20e4166
--- /dev/null
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ConflictsDialog</class>
+ <widget class="QDialog" name="ConflictsDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>471</width>
+    <height>373</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="message">
+     <property name="text">
+      <string>Selected Event is in conflict with the following event(s):</string>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="ConflictDialogContainer" name="container" native="true">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>1</verstretch>
+      </sizepolicy>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okButton">
+       <property name="text">
+        <string>OK</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ConflictDialogContainer</class>
+   <extends>QWidget</extends>
+   <header>conflictdialogcontainer.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>okButton</sender>
+   <signal>clicked()</signal>
+   <receiver>ConflictsDialog</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>301</x>
+     <y>156</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>175</x>
+     <y>89</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/gui/daynavigatorwidget.cpp b/src/gui/daynavigatorwidget.cpp
new file mode 100644 (file)
index 0000000..0f416f2
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "daynavigatorwidget.h"
+
+#include <QPainter>
+#include <QFontMetrics>
+#include <QLabel>
+
+#include <QDebug>
+
+DayNavigatorWidget::DayNavigatorWidget(QWidget *aParent)
+    : QWidget(aParent)
+    , mStartDate(QDate())
+    , mEndDate(QDate())
+    , mCurDate(QDate())
+{
+    setupUi(this);
+    connect(prevDayButton, SIGNAL(clicked()), SLOT(prevDayButtonClicked()));
+    connect(nextDayButton, SIGNAL(clicked()), SLOT(nextDayButtonClicked()));
+
+    mFontMetrics = new QFontMetrics(QLabel().font());
+}
+
+void DayNavigatorWidget::setDates(const QDate &aStartDate, const QDate &aEndDate)
+{
+    Q_ASSERT(aStartDate<=aEndDate);
+
+    mStartDate = aStartDate;
+    mEndDate = aEndDate;
+    mCurDate = aStartDate;
+
+    // QRect rect = mFontMetrics->boundingRect(mCurDate.toString("MMM dd yyyy"));
+
+    if(mStartDate==mEndDate) // only one day conference
+    {
+        prevDayButton->setDisabled(true);
+        nextDayButton->setDisabled(true);
+        emit(dateChanged(mCurDate));
+    }
+    else
+    {
+        // at least 2-days conference
+        prevDayButton->setDisabled(true);
+        nextDayButton->setDisabled(false);
+        emit(dateChanged(mCurDate));
+    }
+}
+
+void DayNavigatorWidget::prevDayButtonClicked()
+{
+    if(mCurDate>mStartDate)
+    {
+        mCurDate = mCurDate.addDays(-1);
+        // check start date
+        if(mCurDate==mStartDate || mStartDate==mEndDate)
+            prevDayButton->setDisabled(true);
+        else
+            prevDayButton->setDisabled(false);
+        // check end date
+        if(mCurDate==mEndDate || mStartDate==mEndDate)
+            nextDayButton->setDisabled(true);
+        else
+            nextDayButton->setDisabled(false);
+
+        emit(dateChanged(mCurDate));
+        selectedDate->update();
+    }
+}
+
+void DayNavigatorWidget::nextDayButtonClicked()
+{
+    if(mCurDate<mEndDate)
+    {
+        mCurDate = mCurDate.addDays(1);
+        // check start date
+        if(mCurDate==mStartDate || mStartDate==mEndDate)
+            prevDayButton->setDisabled(true);
+        else
+            prevDayButton->setDisabled(false);
+        // check end date
+        if(mCurDate==mEndDate || mStartDate==mEndDate)
+            nextDayButton->setDisabled(true);
+        else
+            nextDayButton->setDisabled(false);
+
+        emit(dateChanged(mCurDate));
+        selectedDate->update();
+    }
+}
+
+void DayNavigatorWidget::paintEvent(QPaintEvent *aEvent)
+{
+    Q_UNUSED(aEvent);
+
+    QString selectedDateStr = mCurDate.toString("MMM dd yyyy");
+
+    QPainter painter(this);
+    painter.save();
+    QRect r = selectedDate->geometry();
+    QRect s = mFontMetrics->boundingRect(selectedDateStr);
+    QPoint p = QPoint(
+            r.x() + r.width()/2 - s.height()/2 - mFontMetrics->descent(),
+            - 130
+            );
+
+    painter.translate(r.width()/2, r.height()/2);
+    painter.rotate(270);
+    painter.drawText(p.y(), p.x(), selectedDateStr); // y,x,string
+    painter.restore();
+}
+
diff --git a/src/gui/daynavigatorwidget.h b/src/gui/daynavigatorwidget.h
new file mode 100644 (file)
index 0000000..da5846d
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef DAYNAVIGATORWIDGET_H
+#define DAYNAVIGATORWIDGET_H
+
+#include "ui_daynavigatorwidget.h"
+#include <QObject>
+#include <QDate>
+
+/*#include <QPainter>*/
+/*#include <QLabel>*/
+
+/*class QFontMetrics;*/
+
+/*class VerticalLabel : public QWidget*/
+/*{*/
+
+/*public:*/
+/*VerticalLabel(QWidget *aParent = NULL)*/
+/*: QWidget(aParent)*/
+/*, mText("")*/
+/*{*/
+/*mFont = QLabel().font();*/
+/*}   */
+
+/*void paintEvent(QPaintEvent *)*/
+/*{   */
+/*QPainter p(this);*/
+/*drawRotatedText(&p, 270, width()/2, height()/2, mText);*/
+/*}   */
+
+/*void drawRotatedText(QPainter *aPainter, qreal aDegrees, int x, int y, const QString &aText)*/
+/*{   */
+
+/*aPainter->save();*/
+/*aPainter->setFont(mFont);*/
+/*aPainter->translate(x, y); */
+/*aPainter->rotate(aDegrees);*/
+/*QFontMetrics fm(mFont);*/
+/*QRect r = fm.boundingRect(aText);*/
+/*aPainter->drawText(-r.width()/2, fm.descent()/2, aText);*/
+/*aPainter->restore();*/
+/*}   */
+
+/*void setText(const QString &aText)*/
+/*{*/
+/*mText = aText;*/
+/*update();*/
+/*}*/
+
+/*private:*/
+/*QString mText;*/
+/*QFont mFont;*/
+/*};*/
+
+class DayNavigatorWidget : public QWidget, private Ui::DayNavigatorWidget
+{
+    Q_OBJECT
+    public:
+        DayNavigatorWidget(QWidget *aParent = NULL);
+        ~DayNavigatorWidget() {}
+        void setDates(const QDate &aStartDate, const QDate &aEndDate);
+    protected:
+        void paintEvent(QPaintEvent *);
+    private slots:
+        void prevDayButtonClicked();
+        void nextDayButtonClicked();
+    signals:
+        void dateChanged(const QDate &aDate);
+    private:
+        QDate mStartDate;
+        QDate mEndDate;
+        QDate mCurDate;
+        QFontMetrics *mFontMetrics;
+};
+
+#endif /* DAYNAVIGATORWIDGET_H */
+
diff --git a/src/gui/daynavigatorwidget.ui b/src/gui/daynavigatorwidget.ui
new file mode 100644 (file)
index 0000000..cd4f9dc
--- /dev/null
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DayNavigatorWidget</class>
+ <widget class="QWidget" name="DayNavigatorWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>52</width>
+    <height>198</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Expanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="layoutDirection">
+   <enum>Qt::LeftToRight</enum>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="1" column="0">
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <widget class="QToolButton" name="nextDayButton">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="autoRaise">
+        <bool>true</bool>
+       </property>
+       <property name="arrowType">
+        <enum>Qt::UpArrow</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QWidget" name="selectedDate" native="true">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Minimum" vsizetype="Expanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="prevDayButton">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="autoRaise">
+        <bool>true</bool>
+       </property>
+       <property name="arrowType">
+        <enum>Qt::DownArrow</enum>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+ <slots>
+  <slot>prevDayButtonClicked()</slot>
+  <slot>nextDayButtonClicked()</slot>
+ </slots>
+</ui>
diff --git a/src/gui/dayviewtabcontainer.cpp b/src/gui/dayviewtabcontainer.cpp
new file mode 100644 (file)
index 0000000..35ce2d8
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "dayviewtabcontainer.h"
+
+DayViewTabContainer::DayViewTabContainer(QWidget *aParent) : TabContainer( aParent )
+{
+}
+
+DayViewTabContainer::~DayViewTabContainer()
+{
+}
+
+void DayViewTabContainer::loadEvents( const QDate &aDate, const int aConferenceId )
+{
+    static_cast<EventModel*>(treeView->model())->loadEvents( aDate, aConferenceId );
+}
diff --git a/src/gui/dayviewtabcontainer.h b/src/gui/dayviewtabcontainer.h
new file mode 100644 (file)
index 0000000..e049ff6
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef DAYVIEWTABCONTAINER_H_
+#define DAYVIEWTABCONTAINER_H_
+
+#include "tabcontainer.h"
+
+class DayViewTabContainer: public TabContainer {
+    Q_OBJECT
+public:
+    DayViewTabContainer(QWidget *aParent);
+    virtual ~DayViewTabContainer();
+protected:
+    virtual void loadEvents(const QDate &aDate, const int aConferenceId );
+};
+
+#endif /* DAYVIEWTABCONTAINER_H_ */
diff --git a/src/gui/errormessage.cpp b/src/gui/errormessage.cpp
new file mode 100644 (file)
index 0000000..d41b0e3
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "errormessage.h"
+
+#include <cstdio>
+
+#include <QTextStream>
+#ifdef QT_MAEMO5_LIB
+#include <QMaemo5InformationBox>
+#else
+#include <QMessageBox>
+#endif
+
+void error_message(const QString& message)
+{
+    QTextStream(stderr) << "ERROR: " << message << "\n";
+#ifdef QT_MAEMO5_LIB
+    // by default the message is white on yellow, which is unusable
+    // but some html here works
+    // remove it as soon as they fix the colors
+    QMaemo5InformationBox::information(0, "<font color=\"black\">" + message + "</font>");
+#else
+    QMessageBox::warning(0, "Error", message);
+#endif
+}
diff --git a/src/gui/errormessage.h b/src/gui/errormessage.h
new file mode 100644 (file)
index 0000000..665503c
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef ERRORMESSAGE_H
+#define ERRORMESSAGE_H
+
+#include <QString>
+
+void error_message(const QString& message);
+
+#endif
diff --git a/src/gui/eventdialog.cpp b/src/gui/eventdialog.cpp
new file mode 100644 (file)
index 0000000..b4b590f
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "eventdialog.h"
+#include <conference.h>
+
+#include <QScrollBar>
+
+#ifdef MAEMO
+#include <alarm.h>
+#endif
+
+EventDialog::EventDialog(const int &aEventId, QWidget *aParent)
+    : QDialog(aParent)
+    , mEventId(aEventId)
+{
+    setupUi(this);
+
+#ifdef MAEMO
+    showFullScreen();
+#else
+    alarmButton->hide();
+#endif
+
+    Event event = Event::getById(mEventId,Conference::activeConference());
+
+    title->setText(event.title());
+    persons->setText(event.persons().join(" and "));
+    abstract->setText(event.abstract());
+    description->setText(event.description());
+    QStringList linksText = static_cast<QStringList>(event.links().values());
+    for (QStringList::iterator linkIterator = linksText.begin(); linkIterator != linksText.end(); ++linkIterator)
+        *linkIterator = QString("<a href=\"%1\">%1</a>").arg(*linkIterator);
+    links->setText(linksText.join("<br/>"));
+
+    connect(favouriteButton, SIGNAL(clicked()), SLOT(favouriteClicked()));
+    connect(alarmButton, SIGNAL(clicked()), SLOT(alarmClicked()));
+
+    if(event.isFavourite())
+    {
+        favouriteButton->setIcon(QIcon(":/icons/emblem-new.png"));
+    }
+
+    if(event.hasAlarm())
+    {
+        alarmButton->setIcon(QIcon(":/icons/appointment-soon.png"));
+    }
+}
+
+void EventDialog::favouriteClicked()
+{
+    Event event = Event::getById(mEventId,Conference::activeConference());
+
+    QList<Event> conflicts = Event::conflictEvents(event.id(),Conference::activeConference());
+    if(event.isFavourite())
+    {
+        event.setFavourite(false);
+        favouriteButton->setIcon(QIcon(":/icons/emblem-new-off.png"));
+    }
+    else
+    {
+        event.setFavourite(true);
+        favouriteButton->setIcon(QIcon(":/icons/emblem-new.png"));
+    }
+    event.update("favourite");
+
+    if(event.isFavourite())
+    {
+        // event has became 'favourite' and so 'conflicts' list may have changed
+        conflicts = Event::conflictEvents(event.id(),Conference::activeConference());
+    }
+
+    // have to emit 'eventHasChanged' signal on all events in conflict
+    for(int i=0; i<conflicts.count(); i++)
+        emit(eventHasChanged(conflicts[i].id()));
+
+    // since the Favourite icon has changed, update TreeViews accordingly
+    // all TreeViews have to listen on this signal
+    emit(eventHasChanged(event.id(),true));
+}
+
+void EventDialog::alarmClicked()
+{
+    Event event = Event::getById(mEventId,Conference::activeConference());
+
+    if(event.hasAlarm())
+    {
+        event.setHasAlarm(false); // update DB
+        alarmButton->setIcon(QIcon(":/icons/appointment-soon-off.png"));
+#ifdef MAEMO
+        // remove alarm from the 'alarmd' alrms list
+        Alarm alarm;
+        alarm.deleteAlarm(event.id());
+        // TODO: test if removing was successfull
+#endif /* MAEMO */
+    }
+    else
+    {
+        event.setHasAlarm(true);
+        alarmButton->setIcon(QIcon(":/icons/appointment-soon.png"));
+#ifdef MAEMO
+        // add alarm to the 'alarmd'
+        Alarm alarm;
+        int cookie = alarm.addAlarm(event.id(),QDateTime::currentDateTime().addSecs(10));
+#endif /* MAEMO */
+    }
+    event.update("alarm");
+    // since the Alarm icon has changed, update TreeView accordingly
+    // all TreeViews have to listen on this signal
+    emit(eventHasChanged(event.id()));
+}
+
diff --git a/src/gui/eventdialog.h b/src/gui/eventdialog.h
new file mode 100644 (file)
index 0000000..afd0b23
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef EVENTDIALOG_H
+#define EVENTDIALOG_H
+
+#include <QDialog>
+#include "ui_eventdialog.h"
+#include <event.h>
+
+class EventDialog : public QDialog, Ui::EventDialog
+{ 
+    Q_OBJECT
+public:
+    EventDialog(const int &aEventId, QWidget *aParent = NULL);
+    ~EventDialog() {}
+private slots:
+    void favouriteClicked();
+    void alarmClicked();
+signals:
+    void eventHasChanged(int aEventId, bool aReloadModel = false); // emited when user changes some event details, eg. sets it Favourite
+private:
+    int mEventId;
+};
+
+#endif /* EVENTDIALOG_H */
+
diff --git a/src/gui/eventdialog.ui b/src/gui/eventdialog.ui
new file mode 100644 (file)
index 0000000..4eff409
--- /dev/null
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EventDialog</class>
+ <widget class="QDialog" name="EventDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>485</width>
+    <height>368</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Details</string>
+  </property>
+  <property name="autoFillBackground">
+   <bool>false</bool>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <widget class="QLabel" name="title">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="font">
+        <font>
+         <weight>75</weight>
+         <bold>true</bold>
+         <underline>true</underline>
+        </font>
+       </property>
+       <property name="text">
+        <string>Title goes here</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignCenter</set>
+       </property>
+       <property name="wordWrap">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QScrollArea" name="scrollArea">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="widgetResizable">
+        <bool>true</bool>
+       </property>
+       <widget class="QWidget" name="scrollAreaWidgetContents">
+        <property name="geometry">
+         <rect>
+          <x>0</x>
+          <y>0</y>
+          <width>461</width>
+          <height>276</height>
+         </rect>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_2">
+         <item row="0" column="0">
+          <widget class="QWidget" name="content" native="true">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <layout class="QVBoxLayout" name="verticalLayout_2">
+            <item>
+             <widget class="QGroupBox" name="personsGB">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="font">
+               <font>
+                <weight>75</weight>
+                <bold>true</bold>
+               </font>
+              </property>
+              <property name="title">
+               <string>Persons</string>
+              </property>
+              <layout class="QVBoxLayout" name="verticalLayout_3">
+               <item>
+                <widget class="QLabel" name="persons">
+                 <property name="font">
+                  <font>
+                   <weight>50</weight>
+                   <bold>false</bold>
+                  </font>
+                 </property>
+                 <property name="text">
+                  <string>PERSONS</string>
+                 </property>
+                 <property name="wordWrap">
+                  <bool>true</bool>
+                 </property>
+                 <property name="openExternalLinks">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item>
+             <widget class="QGroupBox" name="abstractGB">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="font">
+               <font>
+                <weight>75</weight>
+                <bold>true</bold>
+               </font>
+              </property>
+              <property name="title">
+               <string>Abstract</string>
+              </property>
+              <layout class="QVBoxLayout" name="verticalLayout_4">
+               <item>
+                <widget class="QLabel" name="abstract">
+                 <property name="font">
+                  <font>
+                   <weight>50</weight>
+                   <bold>false</bold>
+                  </font>
+                 </property>
+                 <property name="text">
+                  <string>ABSTRACT</string>
+                 </property>
+                 <property name="wordWrap">
+                  <bool>true</bool>
+                 </property>
+                 <property name="openExternalLinks">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item>
+             <widget class="QGroupBox" name="descriptionGB">
+              <property name="font">
+               <font>
+                <weight>75</weight>
+                <bold>true</bold>
+               </font>
+              </property>
+              <property name="title">
+               <string>Description</string>
+              </property>
+              <layout class="QVBoxLayout" name="verticalLayout_5">
+               <item>
+                <widget class="QLabel" name="description">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="font">
+                  <font>
+                   <weight>50</weight>
+                   <bold>false</bold>
+                  </font>
+                 </property>
+                 <property name="text">
+                  <string>DESCRIPTION</string>
+                 </property>
+                 <property name="wordWrap">
+                  <bool>true</bool>
+                 </property>
+                 <property name="openExternalLinks">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item>
+             <widget class="QGroupBox" name="linksGB">
+              <property name="font">
+               <font>
+                <weight>75</weight>
+                <bold>true</bold>
+               </font>
+              </property>
+              <property name="title">
+               <string>Links</string>
+              </property>
+              <layout class="QVBoxLayout" name="verticalLayout_6">
+               <item>
+                <widget class="QLabel" name="links">
+                 <property name="sizePolicy">
+                  <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="font">
+                  <font>
+                   <weight>50</weight>
+                   <bold>false</bold>
+                  </font>
+                 </property>
+                 <property name="text">
+                  <string>LINKS</string>
+                 </property>
+                 <property name="textFormat">
+                  <enum>Qt::RichText</enum>
+                 </property>
+                 <property name="wordWrap">
+                  <bool>true</bool>
+                 </property>
+                 <property name="openExternalLinks">
+                  <bool>true</bool>
+                 </property>
+                 <property name="textInteractionFlags">
+                  <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse</set>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </widget>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Minimum</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>10</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QToolButton" name="alarmButton">
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset resource="../icons.qrc">
+           <normaloff>:/icons/appointment-soon-off.png</normaloff>:/icons/appointment-soon-off.png</iconset>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="favouriteButton">
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset resource="../icons.qrc">
+           <normaloff>:/icons/emblem-new-off.png</normaloff>:/icons/emblem-new-off.png</iconset>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QPushButton" name="okButton">
+         <property name="text">
+          <string>OK</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../icons.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>okButton</sender>
+   <signal>clicked()</signal>
+   <receiver>EventDialog</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>287</x>
+     <y>84</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>169</x>
+     <y>53</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/gui/favtabcontainer.cpp b/src/gui/favtabcontainer.cpp
new file mode 100644 (file)
index 0000000..0def750
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "favtabcontainer.h"
+
+FavTabContainer::FavTabContainer(QWidget *aParent) : TabContainer( aParent )
+{
+}
+
+void FavTabContainer::loadEvents( const QDate &aDate, const int aConferenceId )
+{
+    static_cast<EventModel*>(treeView->model())->loadFavEvents( aDate, aConferenceId );
+}
+
diff --git a/src/gui/favtabcontainer.h b/src/gui/favtabcontainer.h
new file mode 100644 (file)
index 0000000..c603f2a
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef FAVTABCONTAINER_H_
+#define FAVTABCONTAINER_H_
+
+#include "tabcontainer.h"
+
+class FavTabContainer: public TabContainer
+{
+    Q_OBJECT
+public:
+    FavTabContainer(QWidget *aParent);
+    virtual ~FavTabContainer(){}
+
+protected:
+    virtual void loadEvents( const QDate &aDate, const int aConferenceId );
+};
+
+#endif /* FAVTABCONTAINER_H_ */
diff --git a/src/gui/gui.pro b/src/gui/gui.pro
new file mode 100644 (file)
index 0000000..b6732cb
--- /dev/null
@@ -0,0 +1,97 @@
+include(../global.pri)
+TEMPLATE = lib
+TARGET = gui
+DESTDIR = ../bin
+CONFIG += static
+QT += sql \
+    xml \
+    network
+
+# module dependencies
+LIBS += -L$$DESTDIR \
+    -lmvc \
+    -lorm \
+    -lsql
+INCLUDEPATH += ../orm \
+    ../mvc \
+    ../sql \
+    ../app
+DEPENDPATH += . \
+    ../orm \
+    ../mvc \
+    ../sql
+POST_TARGETDEPS += $$DESTDIR/liborm.a \
+    $$DESTDIR/libmvc.a \
+    $$DESTDIR/libsql.a
+maemo { 
+    LIBS += -L$$DESTDIR \
+        -lqalarm
+    INCLUDEPATH += ../alarm
+    DEPENDPATH += ../alarm
+    TARGETDEPS += $$DESTDIR/libqalarm.a
+}
+
+# A shamelessly long list of sources, headers and forms.
+# Please note that resources MUST be added to the app module
+# (which means they need to be added to the test module as well,
+# but I am sure you can live with that for the time being).
+
+FORMS += searchhead.ui \
+    mainwindow.ui \
+    daynavigatorwidget.ui \
+    about.ui \
+    eventdialog.ui \
+    conflictsdialog.ui \
+    tabcontainer.ui \
+    mapwindow.ui \
+    settingsdialog.ui \
+    conferenceeditor.ui \
+    urlinputdialog.ui
+
+HEADERS += roomstabcontainer.h \
+    nowtabcontainer.h \
+    trackstabcontainer.h \
+    favtabcontainer.h \
+    searchtabcontainer.h \
+    searchhead.h \
+    dayviewtabcontainer.h \
+    conflictdialogcontainer.h \
+    conflictsdialog.h \
+    mainwindow.h \
+    daynavigatorwidget.h \
+    eventdialog.h \
+    tabcontainer.h \
+    mapwindow.h \
+    settingsdialog.h \
+    conferenceeditor.h \
+    urlinputdialog.h
+
+SOURCES += roomstabcontainer.cpp \
+    nowtabcontainer.cpp \
+    trackstabcontainer.cpp \
+    favtabcontainer.cpp \
+    searchtabcontainer.cpp \
+    searchhead.cpp \
+    dayviewtabcontainer.cpp \
+    conflictdialogcontainer.cpp \
+    conflictsdialog.cpp \
+    mainwindow.cpp \
+    daynavigatorwidget.cpp \
+    eventdialog.cpp \
+    tabcontainer.cpp \
+    mapwindow.cpp \
+    settingsdialog.cpp \
+    conferenceeditor.cpp \
+    urlinputdialog.cpp
+
+HEADERS += errormessage.h
+SOURCES += errormessage.cpp
+CONFIG(maemo5) {
+    QT += maemo5
+}
+
+#maemo { 
+#    FORMS += alarmdialog.ui
+#    HEADERS += alarmdialog.h
+#    SOURCES += alarmdialog.cpp
+#}
diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp
new file mode 100644 (file)
index 0000000..aa4af8c
--- /dev/null
@@ -0,0 +1,323 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "mainwindow.h"
+
+#include <QTreeView>
+#include <QFile>
+#include <QNetworkProxy>
+#include <QNetworkAccessManager>
+#include <QNetworkReply>
+
+#include <sqlengine.h>
+
+#include <track.h>
+#include <eventmodel.h>
+#include <delegate.h>
+
+#include <conference.h>
+
+#include <QDialog>
+#include <QMessageBox>
+
+#include "ui_about.h"
+#include <eventdialog.h>
+#include "daynavigatorwidget.h"
+#include "settingsdialog.h"
+#include "conferenceeditor.h"
+#include "schedulexmlparser.h"
+#include "errormessage.h"
+
+#include <tabcontainer.h>
+#include <appsettings.h>
+
+const QString PROXY_USERNAME;
+const QString PROXY_PASSWD;
+
+MainWindow::MainWindow(int aEventId, QWidget *aParent)
+    : QMainWindow(aParent)
+    , conferenceModel(new ConferenceModel(this))
+    , mXmlParser(new ScheduleXmlParser(this))
+    , mNetworkAccessManager(new QNetworkAccessManager(this))
+{
+    setupUi(this);
+
+    saved_title = windowTitle();
+
+#ifdef N810
+    tabWidget->setTabText(1,"Favs");
+    //tabWidget->setTabText(2,"Day");
+#endif
+
+    // first time run aplication: -> let's have it direct connection in this case
+    if(!AppSettings::contains("proxyIsDirectConnection"))
+        AppSettings::setDirectConnection(true);
+
+    /*
+    if(AppSettings::isDirectConnection())
+    {
+        qDebug() << "Setting-up proxy: " << AppSettings::proxyAddress() << ":" << AppSettings::proxyPort();
+    }
+    */
+    QNetworkProxy proxy(
+            AppSettings::isDirectConnection() ? QNetworkProxy::NoProxy : QNetworkProxy::HttpProxy,
+            AppSettings::proxyAddress(),
+            AppSettings::proxyPort(),
+            PROXY_USERNAME,
+            PROXY_PASSWD);
+    QNetworkProxy::setApplicationProxy(proxy);
+
+    // event details have changed
+    connect(dayTabContainer, SIGNAL(eventHasChanged(int,bool)), SLOT(eventHasChanged(int,bool)));
+    connect(favsTabContainer, SIGNAL(eventHasChanged(int,bool)), SLOT(eventHasChanged(int,bool)));
+    connect(tracksTabContainer, SIGNAL(eventHasChanged(int,bool)), SLOT(eventHasChanged(int,bool)));
+    connect(roomsTabContainer, SIGNAL(eventHasChanged(int,bool)), SLOT(eventHasChanged(int,bool)));
+    connect(nowTabContainer, SIGNAL(eventHasChanged(int,bool)), SLOT(eventHasChanged(int,bool)));
+    connect(searchTabContainer, SIGNAL(eventHasChanged(int,bool)), SLOT(eventHasChanged(int,bool)));
+
+    connect(aboutAction, SIGNAL(triggered()), SLOT(aboutApp()));
+    connect(settingsAction, SIGNAL(triggered()), SLOT(setup()));
+    connect(conferencesAction, SIGNAL(triggered()), SLOT(showConferences()));
+
+    useConference(Conference::activeConference());
+    // optimization, see useConference() code
+    try {
+        initTabs();
+    } catch (const OrmException& e) {
+        qDebug() << "OrmException:" << e.text();
+        clearTabs();
+    }
+
+    // TODO: open conferences at startup?
+    #if 0
+    if(!confCount)
+        tabWidget->setCurrentIndex(6); // 6 - conference tab
+    }
+    #endif
+
+    // open dialog for given Event ID
+    // this is used in case Alarm Dialog request application to start
+    if(aEventId)
+    {
+        try
+        {
+            EventDialog dialog(aEventId,this);
+            dialog.exec();
+        }
+        catch(OrmNoObjectException&) {} // just start application
+        catch(...) {} // just start application
+    }
+
+    connect(mNetworkAccessManager, SIGNAL(finished(QNetworkReply*)), SLOT(networkQueryFinished(QNetworkReply*)));
+
+    connect(mXmlParser, SIGNAL(parsingScheduleBegin()), conferenceModel, SLOT(newConferenceBegin()));
+    connect(mXmlParser, SIGNAL(parsingScheduleEnd(const QString&)), conferenceModel, SLOT(newConferenceEnd(const QString&)));
+}
+
+void MainWindow::aboutApp()
+{
+    QDialog dialog(this);
+    Ui::AboutDialog ui;
+    ui.setupUi(&dialog);
+    ui.labelVersion->setText(ui.labelVersion->text().arg(qApp->applicationVersion()));
+#ifdef N810
+    dialog.setFixedWidth(width());
+#endif
+    dialog.exec();
+}
+
+void MainWindow::eventHasChanged(int aEventId, bool aReloadModel)
+{
+    dayTabContainer->updateTreeViewModel(aEventId);
+    favsTabContainer->updateTreeViewModel(aEventId,aReloadModel);
+    tracksTabContainer->updateTreeViewModel(aEventId);
+    nowTabContainer->updateTreeViewModel(aEventId);
+    roomsTabContainer->updateTreeViewModel(aEventId);
+    searchTabContainer->updateTreeViewModel(aEventId);
+}
+
+void MainWindow::useConference(int id)
+{
+    try {
+        Conference::getById(Conference::activeConference()).update("active",0);
+        Conference new_active = Conference::getById(id);
+        new_active.update("active",1);
+
+       // looks like it does not work at n900
+        setWindowTitle(new_active.title());
+
+        // optimization.
+       // dont run initTabs() here
+        // it takes much CPU, making travelling between conferences in ConferenceEditor longer
+        // and is not seen in maemo WM anyway
+       // instead run it explicitly
+        // 1. at startup
+        // 2. when ConferenceEditor finished
+        // dont forget to protect the calls by try-catch!
+
+        // just in case, clear conference selection instead
+        clearTabs();
+
+        // end of optimization
+        // initTabs();
+    } catch (OrmException& e) {
+        // cannon set an active conference
+        unsetConference();
+        return;
+    }
+
+}
+
+void MainWindow::initTabs()
+{
+    int confId = Conference::activeConference();
+    Conference active = Conference::getById(confId);
+    QDate startDate = active.start();
+    QDate endDate = active.end();
+
+    // 'dayNavigator' emits signal 'dateChanged' after setting valid START:END dates
+    dayTabContainer->setDates(startDate, endDate);
+    tracksTabContainer->setDates(startDate, endDate);
+    roomsTabContainer->setDates(startDate, endDate);
+    favsTabContainer->setDates(startDate, endDate);
+    searchTabContainer->setDates(startDate, endDate);
+    searchTabContainer->searchAgainClicked();
+    nowTabContainer->updateTreeView(QDate::currentDate());
+}
+
+void MainWindow::clearTabs()
+{
+    dayTabContainer->clearModel();
+    tracksTabContainer->clearModel();
+    roomsTabContainer->clearModel();
+    favsTabContainer->clearModel();
+    searchTabContainer->clearModel();
+    searchTabContainer->searchAgainClicked();
+    nowTabContainer->clearModel();
+}
+
+void MainWindow::unsetConference()
+{
+    clearTabs();
+    setWindowTitle(saved_title);
+}
+
+void MainWindow::setup()
+{
+    SettingsDialog dialog;
+    dialog.exec();
+
+    QNetworkProxy proxy(
+            AppSettings::isDirectConnection() ? QNetworkProxy::NoProxy : QNetworkProxy::HttpProxy,
+            AppSettings::proxyAddress(),
+            AppSettings::proxyPort(),
+            PROXY_USERNAME,
+            PROXY_PASSWD);
+    QNetworkProxy::setApplicationProxy(proxy);
+}
+
+/** Create and run ConferenceEditor dialog, making required connections for it.
+
+This method manages, which classes actually perform changes in conference list.
+
+There are several classes that modify the conferences:
+this:
+ deletion and URL update.
+this, mXmlParser and mNetworkAccessManager:
+ addition and refresh.
+*/
+void MainWindow::showConferences()
+{
+    ConferenceEditor dialog(conferenceModel, this);
+
+    connect(&dialog, SIGNAL(haveConferenceUrl(const QString&)), SLOT(importFromNetwork(const QString&)));
+    connect(&dialog, SIGNAL(haveConferenceFile(const QString&)), SLOT(importFromFile(const QString&)));
+    connect(&dialog, SIGNAL(removeConferenceRequested(int)), SLOT(removeConference(int)));
+    connect(&dialog, SIGNAL(changeUrlRequested(int, const QString&)),
+                    SLOT(changeConferenceUrl(int, const QString&)));
+
+    connect(&dialog, SIGNAL(haveConferenceSelected(int)), SLOT(useConference(int)));
+    connect(&dialog, SIGNAL(noneConferenceSelected()), SLOT(unsetConference()));
+
+    connect(mXmlParser, SIGNAL(parsingScheduleBegin()), &dialog, SLOT(importStarted()));
+    connect(mXmlParser, SIGNAL(progressStatus(int)), &dialog, SLOT(showParsingProgress(int)));
+    connect(mXmlParser, SIGNAL(parsingScheduleEnd(const QString&)), &dialog, SLOT(importFinished(const QString&)));
+
+    connect(this, SIGNAL(conferenceRemoved()), &dialog, SLOT(conferenceRemoved()));
+
+    dialog.exec();
+
+    // optimization, see useConference() code
+    try {
+        initTabs();
+    } catch (OrmException) {
+        clearTabs();
+    }
+}
+
+void MainWindow::networkQueryFinished(QNetworkReply *aReply)
+{
+    if ( aReply->error() != QNetworkReply::NoError )
+    {
+        error_message(QString("Error occured during download: ") + aReply->errorString());
+    }
+    else
+    {
+        importData(aReply->readAll(), aReply->url().toEncoded());
+    }
+}
+
+void MainWindow::importData(const QByteArray &aData, const QString& url)
+{
+    mXmlParser->parseData(aData, url);
+}
+
+void MainWindow::importFromNetwork(const QString& url)
+{
+    QNetworkRequest request;
+    request.setUrl(QUrl(url));
+
+    mNetworkAccessManager->setProxy(QNetworkProxy::applicationProxy());
+    mNetworkAccessManager->get(request);
+}
+
+void MainWindow::importFromFile(const QString& filename)
+{
+    QFile file(filename);
+    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {    
+        static const QString format("Cannot read \"%1\": error %2");
+        error_message(format.arg(filename, QString::number(file.error())));
+    }
+
+    importData(file.readAll(), "");
+}
+
+void MainWindow::removeConference(int id)
+{
+    Conference::deleteConference(id);
+    conferenceModel->conferenceRemoved();
+
+    emit conferenceRemoved();
+}
+
+void MainWindow::changeConferenceUrl(int id, const QString& url)
+{
+    Conference::getById(id).setUrl(url);
+}
+
diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h
new file mode 100644 (file)
index 0000000..2ce3b4f
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QtGui/QMainWindow>
+
+#include <ui_mainwindow.h>
+
+#include "conferencemodel.h"
+
+class ScheduleXmlParser;
+class QNetworkAccessManager;
+class QNetworkReply;
+
+class MainWindow : public QMainWindow, private Ui::MainWindow
+{
+    Q_OBJECT
+public:
+    // aEventId is used to inform widget to automatically open
+    // Event dialog for given Event ID
+    MainWindow(int aEventId = 0, QWidget *aParent = NULL);
+    ~MainWindow() {}
+signals:
+    void conferenceRemoved();
+private slots:
+    void aboutApp();
+    void eventHasChanged(int aEventId, bool aReloadModel);
+    void setup();
+    // TODO: remove
+    void showConferences();
+    void networkQueryFinished(QNetworkReply*);
+    void importFromNetwork(const QString&);
+    void importFromFile(const QString&);
+    void removeConference(int);
+    void changeConferenceUrl(int, const QString&);
+
+    void useConference(int id);
+    void unsetConference();
+private:
+    void fillAndShowConferenceHeader();
+    void initTabs();
+    void clearTabs();
+    void importData(const QByteArray &aData, const QString& url);
+
+    QString saved_title;
+    ConferenceModel* conferenceModel;
+    ScheduleXmlParser *mXmlParser;
+    QNetworkAccessManager *mNetworkAccessManager;
+};
+
+#endif /* MAINWINDOW_H */
+
diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui
new file mode 100644 (file)
index 0000000..5974002
--- /dev/null
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>903</width>
+    <height>498</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>400</width>
+    <height>300</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>ConfClerk</string>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <layout class="QGridLayout" name="gridLayout">
+    <item row="0" column="0">
+     <widget class="QTabWidget" name="tabWidget">
+      <property name="currentIndex">
+       <number>2</number>
+      </property>
+      <widget class="QWidget" name="nowTab">
+       <attribute name="title">
+        <string>Now</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_7">
+        <item row="0" column="0">
+         <widget class="NowTabContainer" name="nowTabContainer" native="true"/>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="favouritesTab">
+       <attribute name="title">
+        <string>Favourites</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_3">
+        <item row="0" column="0">
+         <widget class="FavTabContainer" name="favsTabContainer" native="true"/>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="dayViewTab">
+       <attribute name="title">
+        <string>Day View</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_2">
+        <item row="0" column="0">
+         <widget class="DayViewTabContainer" name="dayTabContainer" native="true"/>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="tracksTab">
+       <attribute name="title">
+        <string>Tracks</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_4">
+        <item row="0" column="0">
+         <widget class="TracksTabContainer" name="tracksTabContainer" native="true"/>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="roomsTab">
+       <attribute name="title">
+        <string>Rooms</string>
+       </attribute>
+       <layout class="QGridLayout" name="gridLayout_8">
+        <item row="0" column="0">
+         <widget class="RoomsTabContainer" name="roomsTabContainer" native="true"/>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QWidget" name="searchTab">
+       <attribute name="title">
+        <string>Search</string>
+       </attribute>
+       <layout class="QHBoxLayout" name="horizontalLayout_1">
+        <item>
+         <widget class="SearchTabContainer" name="searchTabContainer" native="true">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+  <widget class="QMenuBar" name="menuBar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>903</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuMenu">
+    <property name="title">
+     <string>Menu</string>
+    </property>
+    <addaction name="settingsAction"/>
+    <addaction name="aboutAction"/>
+    <addaction name="conferencesAction"/>
+    <addaction name="quitAction"/>
+   </widget>
+   <addaction name="menuMenu"/>
+  </widget>
+  <action name="actionSettings">
+   <property name="text">
+    <string>Settings</string>
+   </property>
+  </action>
+  <action name="settingsAction">
+   <property name="text">
+    <string>Settings</string>
+   </property>
+  </action>
+  <action name="aboutAction">
+   <property name="text">
+    <string>About</string>
+   </property>
+  </action>
+  <action name="conferencesAction">
+   <property name="text">
+    <string>Conferences</string>
+   </property>
+  </action>
+  <action name="quitAction">
+   <property name="text">
+    <string>&amp;Quit</string>
+   </property>
+  </action>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>SearchTabContainer</class>
+   <extends>QWidget</extends>
+   <header>searchtabcontainer.h</header>
+  </customwidget>
+  <customwidget>
+   <class>DayViewTabContainer</class>
+   <extends>QWidget</extends>
+   <header>dayviewtabcontainer.h</header>
+  </customwidget>
+  <customwidget>
+   <class>FavTabContainer</class>
+   <extends>QWidget</extends>
+   <header>favtabcontainer.h</header>
+  </customwidget>
+  <customwidget>
+   <class>TracksTabContainer</class>
+   <extends>QWidget</extends>
+   <header>trackstabcontainer.h</header>
+  </customwidget>
+  <customwidget>
+   <class>RoomsTabContainer</class>
+   <extends>QWidget</extends>
+   <header>roomstabcontainer.h</header>
+  </customwidget>
+  <customwidget>
+   <class>NowTabContainer</class>
+   <extends>QWidget</extends>
+   <header>nowtabcontainer.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources>
+  <include location="../icons.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>quitAction</sender>
+   <signal>triggered()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>451</x>
+     <y>248</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/gui/mapwindow.cpp b/src/gui/mapwindow.cpp
new file mode 100644 (file)
index 0000000..1072159
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "mapwindow.h"
+
+MapWindow::MapWindow(const QPixmap &aImage, const QString &aName, QWidget *aParent)
+    : QDialog(aParent)
+{
+    setupUi(this);
+#ifdef MAEMO
+    showFullScreen();
+    //map->setScaledContents(true);
+    //map->setPixmap(aImage.scaled(QSize(800,480),Qt::KeepAspectRatioByExpanding,Qt::SmoothTransformation));
+    map->setPixmap(aImage.scaled(QSize(640,480),Qt::KeepAspectRatioByExpanding,Qt::SmoothTransformation));
+#elif N810
+    showMaximized();
+    map->setPixmap(aImage.scaled(QSize(400,300),Qt::KeepAspectRatioByExpanding,Qt::SmoothTransformation));
+#else
+    map->setPixmap(aImage);
+#endif
+    setMouseTracking(true); // to receive mouse events
+    setWindowTitle(aName);
+}
+
+// it is enough to handle mouseReleaseEvent, instead of
+// getting/creating mouseClikEvent, since the whole window
+// is occupied by only-one widget/label (image/map)
+void MapWindow::mouseReleaseEvent(QMouseEvent *event)
+{
+    Q_UNUSED(event);
+    close();
+}
+
diff --git a/src/gui/mapwindow.h b/src/gui/mapwindow.h
new file mode 100644 (file)
index 0000000..f99bc45
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef MAPWINDOW_H
+#define MAPWINDOW_H
+
+#include <QDialog>
+#include <QPixmap>
+#include "ui_mapwindow.h"
+
+class MapWindow : public QDialog, Ui::MapWindow
+{
+public:
+    MapWindow(const QPixmap &aImage, const QString &aName, QWidget *aParent = NULL);
+    ~MapWindow() {}
+protected:
+    virtual void mouseReleaseEvent(QMouseEvent *event);
+};
+
+#endif /* MAPWINDOW_H */
+
diff --git a/src/gui/mapwindow.ui b/src/gui/mapwindow.ui
new file mode 100644 (file)
index 0000000..997b956
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MapWindow</class>
+ <widget class="QDialog" name="MapWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>298</width>
+    <height>179</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QLabel" name="map">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string>Map goes here</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/gui/nowtabcontainer.cpp b/src/gui/nowtabcontainer.cpp
new file mode 100644 (file)
index 0000000..f19c2a6
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <QTimer>
+#include "nowtabcontainer.h"
+
+NowTabContainer::NowTabContainer( QWidget *aParent ) : TabContainer( aParent )
+{
+    QTimer *timer = new QTimer( this );
+    connect( timer, SIGNAL(timeout()), SLOT(timerUpdateTreeView()) );
+    timer->start( 30000); // 30 seconds timer
+}
+
+void NowTabContainer::loadEvents( const QDate &aDate, const int aConferenceId )
+{
+    Q_UNUSED( aDate );
+
+    static_cast<EventModel*>(treeView->model())->loadNowEvents( aConferenceId );
+    dayNavigator->hide();
+}
+
+void NowTabContainer::timerUpdateTreeView()
+{
+    updateTreeView( QDate() );
+}
+
+void NowTabContainer::updateTreeView(const QDate &aDate)
+{
+    TabContainer::updateTreeView(aDate);
+    treeView->setAllExpanded(true);
+}
+
diff --git a/src/gui/nowtabcontainer.h b/src/gui/nowtabcontainer.h
new file mode 100644 (file)
index 0000000..a5650e1
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NOWTABCONTAINER_H_
+#define NOWTABCONTAINER_H_
+
+#include "tabcontainer.h"
+
+class NowTabContainer: public TabContainer
+{
+    Q_OBJECT
+public:
+    NowTabContainer( QWidget *aParent );
+    virtual ~NowTabContainer() { }
+
+protected:
+    virtual void loadEvents( const QDate &aDate, const int aConferenceId );
+
+public slots:
+    virtual void updateTreeView(const QDate &aDate);
+
+private slots:
+    void timerUpdateTreeView();
+};
+
+#endif /* NOWTABCONTAINER_H_ */
diff --git a/src/gui/roomstabcontainer.cpp b/src/gui/roomstabcontainer.cpp
new file mode 100644 (file)
index 0000000..7bd5a59
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "roomstabcontainer.h"
+
+RoomsTabContainer::RoomsTabContainer( QWidget *aParent ) : TabContainer( aParent )
+{
+}
+
+void RoomsTabContainer::loadEvents( const QDate &aDate, const int aConferenceId )
+{
+    static_cast<EventModel*>(treeView->model())->loadEventsByRoom( aDate, aConferenceId );
+}
diff --git a/src/gui/roomstabcontainer.h b/src/gui/roomstabcontainer.h
new file mode 100644 (file)
index 0000000..376a561
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef ROOMSTABCONTAINER_H_
+#define ROOMSTABCONTAINER_H_
+
+#include "tabcontainer.h"
+
+class RoomsTabContainer: public TabContainer
+{
+    Q_OBJECT
+public:
+    RoomsTabContainer( QWidget *aParent );
+    virtual ~RoomsTabContainer() {}
+
+protected:
+    virtual void loadEvents( const QDate &aDate, const int aConferenceId );
+
+};
+
+#endif /* ROOMSTABCONTAINER_H_ */
diff --git a/src/gui/searchhead.cpp b/src/gui/searchhead.cpp
new file mode 100644 (file)
index 0000000..6e73dcc
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "searchhead.h"
+#include <QShortcut>
+
+SearchHead::SearchHead(QWidget *parent)
+    : QWidget(parent)
+{
+       setupUi(this);
+       QShortcut* shortcutEnter = new QShortcut(QKeySequence(Qt::Key_Enter), this, 0, 0, Qt::WidgetWithChildrenShortcut);
+       connect(shortcutEnter, SIGNAL(activated()), this, SLOT(searchButtonClicked()));
+       QShortcut* shortcutReturn = new QShortcut(QKeySequence(Qt::Key_Return), this, 0, 0, Qt::WidgetWithChildrenShortcut);
+       connect(shortcutReturn, SIGNAL(activated()), this, SLOT(searchButtonClicked()));
+       connect( searchButton, SIGNAL(clicked()), SLOT(searchButtonClicked()));
+}
+
+SearchHead::~SearchHead()
+{
+
+}
+
+
+void SearchHead::searchButtonClicked()
+{
+    emit( searchClicked() );
+}
diff --git a/src/gui/searchhead.h b/src/gui/searchhead.h
new file mode 100644 (file)
index 0000000..3a553b0
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2010 Ixonos Plc.
+ * Copyright (C) 2011 Philipp Spitzer, gregor herrmann
+ *
+ * This file is part of ConfClerk.
+ *
+ * ConfClerk is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * ConfClerk is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ConfClerk.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef SEARCHHEAD_H
+#define SEARCHHEAD_H
+
+#include <QtGui/QWidget>
+#include <QDebug>
+#include "ui_searchhead.h"
+
+class SearchHead : public QWidget, public Ui::SearchHeadClass
+{
+    Q_OBJECT
+
+public:
+    SearchHead(QWidget *parent = 0);
+    ~SearchHead();
+
+signals:
+    void searchClicked();
+
+private slots:
+    void searchButtonClicked();
+
+//private:
+    //Ui::SearchHeadClass ui;
+};
+
+#endif // SEARCHHEAD_H
diff --git a/src/gui/searchhead.ui b/src/gui/searchhead.ui
new file mode 100644 (file)
index 0000000..32167ad
--- /dev/null
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SearchHeadClass</class>
+ <widget class="QWidget" name="SearchHeadClass">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>371</width>
+    <height>88</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>10</width>
+    <height>10</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>SearchHead</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="leftMargin">
+    <number>9</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_7">
+     <item>
+      <widget class="QCheckBox" name="searchTitle">
+       <property name="text">
+        <string>Title</string>
+       </property>
+       <property name="checked">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="searchAbstract">
+       <property name="text">
+        <string>Abstract</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="searchSpeaker">
+       <property name="text">
+        <string>Speaker</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="searchTag">
+       <property name="text">
+        <string>Tag</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="searchRoom">
+       <property name="text">
+        <string>Room</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
+     <item>
+      <widget class="QLineEdit" name="searchEdit">
+       <property name="enabled">
+        <bool>true</bool>
+       </property>
+       <property name="toolTip">
+        <string>type a keyword to search</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="searchButton">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text">
+        <string>Search</string>
+       </property>
+      &nb