From 1273d1fbb03faf468b080ca8f2f78717e6949815 Mon Sep 17 00:00:00 2001 From: Marcin Kusmierski Date: Fri, 26 Aug 2011 14:00:25 +0200 Subject: [PATCH] added all files --- FFQWidgets.pdf | Bin 0 -> 768488 bytes libffqw-1.0/Doxyfile | 1510 ++++++++ libffqw-1.0/bin/libffqw-dev_1.0_armel.deb | Bin 0 -> 17622 bytes libffqw-1.0/bin/libffqw_1.0_armel.deb | Bin 0 -> 300234 bytes libffqw-1.0/data/img/img.qrc | 68 + .../img/standard/button_bottomcenter_clicked.svg | 1122 ++++++ .../img/standard/button_bottomcenter_normal.svg | 575 +++ .../img/standard/button_bottomleft_clicked.svg | 1122 ++++++ .../data/img/standard/button_bottomleft_normal.svg | 565 +++ .../img/standard/button_bottomright_clicked.svg | 1121 ++++++ .../img/standard/button_bottomright_normal.svg | 609 +++ .../data/img/standard/button_center_clicked.svg | 1155 ++++++ .../data/img/standard/button_center_normal.svg | 579 +++ .../img/standard/button_centerleft_clicked.svg | 1136 ++++++ .../data/img/standard/button_centerleft_normal.svg | 609 +++ .../img/standard/button_centerright_clicked.svg | 1137 ++++++ .../img/standard/button_centerright_normal.svg | 587 +++ libffqw-1.0/data/img/standard/button_false.svg | 514 +++ .../data/img/standard/button_topcenter_clicked.svg | 1131 ++++++ .../data/img/standard/button_topcenter_normal.svg | 565 +++ .../data/img/standard/button_topleft_clicked.svg | 1111 ++++++ .../data/img/standard/button_topleft_normal.svg | 566 +++ .../data/img/standard/button_topright_clicked.svg | 1121 ++++++ .../data/img/standard/button_topright_normal.svg | 575 +++ libffqw-1.0/data/img/standard/button_true.svg | 497 +++ libffqw-1.0/data/img/standard/chart_default.svg | 175 + libffqw-1.0/data/img/standard/chart_legendOFF.svg | 574 +++ libffqw-1.0/data/img/standard/chart_legendON.svg | 574 +++ libffqw-1.0/data/img/standard/chart_zoomin.svg | 139 + libffqw-1.0/data/img/standard/chart_zoomout.svg | 233 ++ .../standard/combo_button_bottomcenter_clicked.svg | 603 +++ .../standard/combo_button_bottomcenter_normal.svg | 524 +++ .../standard/combo_button_bottomleft_clicked.svg | 621 ++++ .../standard/combo_button_bottomleft_normal.svg | 524 +++ .../standard/combo_button_bottomright_clicked.svg | 603 +++ .../standard/combo_button_bottomright_normal.svg | 524 +++ .../img/standard/combo_button_center_clicked.svg | 603 +++ .../img/standard/combo_button_center_normal.svg | 480 +++ .../standard/combo_button_centerleft_clicked.svg | 624 ++++ .../standard/combo_button_centerleft_normal.svg | 527 +++ .../standard/combo_button_centerright_clicked.svg | 606 +++ .../standard/combo_button_centerright_normal.svg | 527 +++ .../standard/combo_button_topcenter_clicked.svg | 603 +++ .../img/standard/combo_button_topcenter_normal.svg | 524 +++ .../img/standard/combo_button_topleft_clicked.svg | 648 ++++ .../img/standard/combo_button_topleft_normal.svg | 523 +++ .../img/standard/combo_button_topright_clicked.svg | 603 +++ .../img/standard/combo_button_topright_normal.svg | 561 +++ libffqw-1.0/data/img/standard/combo_colorarrow.svg | 975 +++++ .../data/img/standard/combo_colorarrow_pressed.svg | 1528 ++++++++ .../data/img/standard/combo_colorbackground.svg | 720 ++++ .../img/standard/combo_colorbackground_pressed.svg | 719 ++++ .../data/img/standard/combo_string_arrow.svg | 998 +++++ .../img/standard/combo_string_arrow_pressed.svg | 1554 ++++++++ .../data/img/standard/combo_string_background.svg | 720 ++++ .../standard/combo_string_background_pressed.svg | 719 ++++ libffqw-1.0/data/img/standard/combo_triangle.svg | 978 +++++ .../data/img/standard/combo_triangle_pressed.svg | 931 +++++ libffqw-1.0/data/img/standard/dpad_background.svg | 1885 ++++++++++ libffqw-1.0/data/img/standard/dpad_button_down.svg | 1941 ++++++++++ .../data/img/standard/dpad_button_down_pressed.svg | 3909 +++++++++++++++++++ libffqw-1.0/data/img/standard/dpad_button_left.svg | 1941 ++++++++++ .../data/img/standard/dpad_button_left_pressed.svg | 3913 +++++++++++++++++++ .../data/img/standard/dpad_button_right.svg | 1941 ++++++++++ .../img/standard/dpad_button_right_pressed.svg | 3917 ++++++++++++++++++++ libffqw-1.0/data/img/standard/dpad_button_up.svg | 1941 ++++++++++ .../data/img/standard/dpad_button_up_pressed.svg | 3910 +++++++++++++++++++ .../data/img/standard/radiobutton_false.svg | 432 +++ libffqw-1.0/data/img/standard/radiobutton_true.svg | 442 +++ libffqw-1.0/debian/README | 6 + libffqw-1.0/debian/README.Debian | 6 + libffqw-1.0/debian/changelog | 5 + libffqw-1.0/debian/compat | 1 + libffqw-1.0/debian/control | 40 + libffqw-1.0/debian/control~ | 40 + libffqw-1.0/debian/copyright | 23 + libffqw-1.0/debian/cron.d.ex | 4 + libffqw-1.0/debian/dirs | 2 + libffqw-1.0/debian/emacsen-install.ex | 45 + libffqw-1.0/debian/emacsen-remove.ex | 15 + libffqw-1.0/debian/emacsen-startup.ex | 25 + libffqw-1.0/debian/files | 2 + libffqw-1.0/debian/init.d.ex | 81 + libffqw-1.0/debian/libffqw-default.ex | 10 + libffqw-1.0/debian/libffqw-dev.dirs | 2 + libffqw-1.0/debian/libffqw-dev.install | 6 + libffqw-1.0/debian/libffqw.doc-base.EX | 22 + libffqw-1.0/debian/libffqw.substvars | 1 + libffqw-1.0/debian/libffqw1.dirs | 1 + libffqw-1.0/debian/libffqw1.install | 1 + libffqw-1.0/debian/manpage.1.ex | 59 + libffqw-1.0/debian/manpage.sgml.ex | 156 + libffqw-1.0/debian/manpage.xml.ex | 148 + libffqw-1.0/debian/menu.ex | 2 + libffqw-1.0/debian/postinst.ex | 41 + libffqw-1.0/debian/postrm.ex | 39 + libffqw-1.0/debian/preinst.ex | 37 + libffqw-1.0/debian/prerm.ex | 40 + libffqw-1.0/debian/rules | 105 + libffqw-1.0/debian/shlibs.local.ex | 1 + libffqw-1.0/debian/watch.ex | 22 + libffqw-1.0/libffqw.pro | 100 + libffqw-1.0/sources/FFGui | 10 + libffqw-1.0/sources/ffabstractbutton.cpp | 762 ++++ libffqw-1.0/sources/ffabstractbutton.h | 222 ++ libffqw-1.0/sources/ffabstractcombobox.cpp | 372 ++ libffqw-1.0/sources/ffabstractcombobox.h | 190 + libffqw-1.0/sources/ffabstractwidget.cpp | 100 + libffqw-1.0/sources/ffabstractwidget.h | 243 ++ libffqw-1.0/sources/ffchart.cpp | 347 ++ libffqw-1.0/sources/ffchart.h | 172 + libffqw-1.0/sources/ffchartbutton.cpp | 333 ++ libffqw-1.0/sources/ffchartbutton.h | 153 + libffqw-1.0/sources/ffchartlegend.cpp | 390 ++ libffqw-1.0/sources/ffchartlegend.h | 185 + libffqw-1.0/sources/ffchartlegendcontrolpanel.cpp | 277 ++ libffqw-1.0/sources/ffchartlegendcontrolpanel.h | 148 + libffqw-1.0/sources/ffchartscene.cpp | 903 +++++ libffqw-1.0/sources/ffchartscene.h | 214 ++ libffqw-1.0/sources/ffchartseries.cpp | 308 ++ libffqw-1.0/sources/ffchartseries.h | 147 + libffqw-1.0/sources/ffcolorcombobox.cpp | 258 ++ libffqw-1.0/sources/ffcolorcombobox.h | 157 + libffqw-1.0/sources/ffdpad.cpp | 268 ++ libffqw-1.0/sources/ffdpad.h | 169 + libffqw-1.0/sources/ffdpadbutton.cpp | 216 ++ libffqw-1.0/sources/ffdpadbutton.h | 130 + libffqw-1.0/sources/fflinecombobox.cpp | 247 ++ libffqw-1.0/sources/fflinecombobox.h | 149 + libffqw-1.0/sources/ffscrollarea.cpp | 422 +++ libffqw-1.0/sources/ffscrollarea.h | 152 + libffqw-1.0/sources/ffscrollingbutton.cpp | 581 +++ libffqw-1.0/sources/ffscrollingbutton.h | 216 ++ libffqw-1.0/sources/ffscrollingcheckbox.cpp | 318 ++ libffqw-1.0/sources/ffscrollingcheckbox.h | 153 + libffqw-1.0/sources/ffscrollinglabel.cpp | 701 ++++ libffqw-1.0/sources/ffscrollinglabel.h | 223 ++ libffqw-1.0/sources/ffscrollingradiobutton.cpp | 101 + libffqw-1.0/sources/ffscrollingradiobutton.h | 112 + libffqw-1.0/sources/ffstringcombobox.cpp | 193 + libffqw-1.0/sources/ffstringcombobox.h | 136 + libffqw-1.0/sources/ffviewcache.cpp | 176 + libffqw-1.0/sources/ffviewcache.h | 124 + .../bin/diablo/libffqw-demo_1.0_armel.deb | Bin 0 -> 18186 bytes .../bin/fremantle/libffqw-demo_1.0_armel.deb | Bin 0 -> 21926 bytes libffqw-demo-1.0/data/libffqw-demo.desktop | 12 + libffqw-demo-1.0/data/libffqw-demo.png | Bin 0 -> 444 bytes libffqw-demo-1.0/data/libffqw-demo.service | 4 + libffqw-demo-1.0/debian/README | 6 + libffqw-demo-1.0/debian/README.Debian | 6 + libffqw-demo-1.0/debian/changelog | 5 + libffqw-demo-1.0/debian/compat | 1 + libffqw-demo-1.0/debian/control | 23 + libffqw-demo-1.0/debian/copyright | 23 + libffqw-demo-1.0/debian/cron.d.ex | 4 + libffqw-demo-1.0/debian/dirs | 2 + libffqw-demo-1.0/debian/emacsen-install.ex | 45 + libffqw-demo-1.0/debian/emacsen-remove.ex | 15 + libffqw-demo-1.0/debian/emacsen-startup.ex | 25 + libffqw-demo-1.0/debian/files | 1 + libffqw-demo-1.0/debian/init.d.ex | 81 + libffqw-demo-1.0/debian/libffqw-demo-default.ex | 10 + libffqw-demo-1.0/debian/libffqw-demo.doc-base.EX | 22 + libffqw-demo-1.0/debian/libffqw-demo.substvars | 1 + libffqw-demo-1.0/debian/manpage.1.ex | 59 + libffqw-demo-1.0/debian/manpage.sgml.ex | 156 + libffqw-demo-1.0/debian/manpage.xml.ex | 148 + libffqw-demo-1.0/debian/menu.ex | 2 + libffqw-demo-1.0/debian/postinst.ex | 41 + libffqw-demo-1.0/debian/postrm.ex | 39 + libffqw-demo-1.0/debian/preinst.ex | 37 + libffqw-demo-1.0/debian/prerm.ex | 40 + libffqw-demo-1.0/debian/rules | 98 + libffqw-demo-1.0/debian/watch.ex | 22 + libffqw-demo-1.0/demo.pro | 48 + libffqw-demo-1.0/sources/main.cpp | 121 + libffqw-demo-1.0/sources/mainwindow.cpp | 418 +++ libffqw-demo-1.0/sources/mainwindow.h | 157 + libffqw-n810-1.0/Doxyfile | 1510 ++++++++ .../bin/libffqw-n810-dev_1.0_armel.deb | Bin 0 -> 17376 bytes libffqw-n810-1.0/bin/libffqw-n810_1.0_armel.deb | Bin 0 -> 301422 bytes libffqw-n810-1.0/data/img/img.qrc | 68 + .../img/standard/button_bottomcenter_clicked.svg | 1122 ++++++ .../img/standard/button_bottomcenter_normal.svg | 575 +++ .../img/standard/button_bottomleft_clicked.svg | 1122 ++++++ .../data/img/standard/button_bottomleft_normal.svg | 565 +++ .../img/standard/button_bottomright_clicked.svg | 1121 ++++++ .../img/standard/button_bottomright_normal.svg | 609 +++ .../data/img/standard/button_center_clicked.svg | 1155 ++++++ .../data/img/standard/button_center_normal.svg | 579 +++ .../img/standard/button_centerleft_clicked.svg | 1136 ++++++ .../data/img/standard/button_centerleft_normal.svg | 609 +++ .../img/standard/button_centerright_clicked.svg | 1137 ++++++ .../img/standard/button_centerright_normal.svg | 587 +++ .../data/img/standard/button_false.svg | 514 +++ .../data/img/standard/button_topcenter_clicked.svg | 1131 ++++++ .../data/img/standard/button_topcenter_normal.svg | 565 +++ .../data/img/standard/button_topleft_clicked.svg | 1111 ++++++ .../data/img/standard/button_topleft_normal.svg | 566 +++ .../data/img/standard/button_topright_clicked.svg | 1121 ++++++ .../data/img/standard/button_topright_normal.svg | 575 +++ libffqw-n810-1.0/data/img/standard/button_true.svg | 497 +++ .../data/img/standard/chart_default.svg | 175 + .../data/img/standard/chart_legendOFF.svg | 574 +++ .../data/img/standard/chart_legendON.svg | 574 +++ .../data/img/standard/chart_zoomin.svg | 139 + .../data/img/standard/chart_zoomout.svg | 233 ++ .../standard/combo_button_bottomcenter_clicked.svg | 603 +++ .../standard/combo_button_bottomcenter_normal.svg | 524 +++ .../standard/combo_button_bottomleft_clicked.svg | 621 ++++ .../standard/combo_button_bottomleft_normal.svg | 524 +++ .../standard/combo_button_bottomright_clicked.svg | 603 +++ .../standard/combo_button_bottomright_normal.svg | 524 +++ .../img/standard/combo_button_center_clicked.svg | 603 +++ .../img/standard/combo_button_center_normal.svg | 480 +++ .../standard/combo_button_centerleft_clicked.svg | 624 ++++ .../standard/combo_button_centerleft_normal.svg | 527 +++ .../standard/combo_button_centerright_clicked.svg | 606 +++ .../standard/combo_button_centerright_normal.svg | 527 +++ .../standard/combo_button_topcenter_clicked.svg | 603 +++ .../img/standard/combo_button_topcenter_normal.svg | 524 +++ .../img/standard/combo_button_topleft_clicked.svg | 648 ++++ .../img/standard/combo_button_topleft_normal.svg | 523 +++ .../img/standard/combo_button_topright_clicked.svg | 603 +++ .../img/standard/combo_button_topright_normal.svg | 561 +++ .../data/img/standard/combo_colorarrow.svg | 975 +++++ .../data/img/standard/combo_colorarrow_pressed.svg | 1528 ++++++++ .../data/img/standard/combo_colorbackground.svg | 720 ++++ .../img/standard/combo_colorbackground_pressed.svg | 719 ++++ .../data/img/standard/combo_string_arrow.svg | 998 +++++ .../img/standard/combo_string_arrow_pressed.svg | 1554 ++++++++ .../data/img/standard/combo_string_background.svg | 720 ++++ .../standard/combo_string_background_pressed.svg | 719 ++++ .../data/img/standard/combo_triangle.svg | 978 +++++ .../data/img/standard/combo_triangle_pressed.svg | 931 +++++ .../data/img/standard/dpad_background.svg | 1885 ++++++++++ .../data/img/standard/dpad_button_down.svg | 1941 ++++++++++ .../data/img/standard/dpad_button_down_pressed.svg | 3909 +++++++++++++++++++ .../data/img/standard/dpad_button_left.svg | 1941 ++++++++++ .../data/img/standard/dpad_button_left_pressed.svg | 3913 +++++++++++++++++++ .../data/img/standard/dpad_button_right.svg | 1941 ++++++++++ .../img/standard/dpad_button_right_pressed.svg | 3917 ++++++++++++++++++++ .../data/img/standard/dpad_button_up.svg | 1941 ++++++++++ .../data/img/standard/dpad_button_up_pressed.svg | 3910 +++++++++++++++++++ .../data/img/standard/radiobutton_false.svg | 432 +++ .../data/img/standard/radiobutton_true.svg | 442 +++ libffqw-n810-1.0/debian/README | 6 + libffqw-n810-1.0/debian/README.Debian | 6 + libffqw-n810-1.0/debian/changelog | 5 + libffqw-n810-1.0/debian/compat | 1 + libffqw-n810-1.0/debian/control | 40 + libffqw-n810-1.0/debian/copyright | 23 + libffqw-n810-1.0/debian/cron.d.ex | 4 + libffqw-n810-1.0/debian/dirs | 2 + libffqw-n810-1.0/debian/emacsen-install.ex | 45 + libffqw-n810-1.0/debian/emacsen-remove.ex | 15 + libffqw-n810-1.0/debian/emacsen-startup.ex | 25 + libffqw-n810-1.0/debian/files | 2 + libffqw-n810-1.0/debian/init.d.ex | 81 + libffqw-n810-1.0/debian/libffqw-default.ex | 10 + libffqw-n810-1.0/debian/libffqw-dev.dirs | 2 + libffqw-n810-1.0/debian/libffqw-dev.install | 6 + libffqw-n810-1.0/debian/libffqw-n810.substvars | 1 + libffqw-n810-1.0/debian/libffqw.doc-base.EX | 22 + libffqw-n810-1.0/debian/libffqw.substvars | 1 + libffqw-n810-1.0/debian/libffqw1.dirs | 1 + libffqw-n810-1.0/debian/libffqw1.install | 1 + libffqw-n810-1.0/debian/manpage.1.ex | 59 + libffqw-n810-1.0/debian/manpage.sgml.ex | 156 + libffqw-n810-1.0/debian/manpage.xml.ex | 148 + libffqw-n810-1.0/debian/menu.ex | 2 + libffqw-n810-1.0/debian/postinst.ex | 41 + libffqw-n810-1.0/debian/postrm.ex | 39 + libffqw-n810-1.0/debian/preinst.ex | 37 + libffqw-n810-1.0/debian/prerm.ex | 40 + libffqw-n810-1.0/debian/rules | 105 + libffqw-n810-1.0/debian/shlibs.local.ex | 1 + libffqw-n810-1.0/debian/watch.ex | 22 + libffqw-n810-1.0/libffqw-n810.pro | 101 + libffqw-n810-1.0/sources/FFGui | 10 + libffqw-n810-1.0/sources/ffabstractbutton.cpp | 762 ++++ libffqw-n810-1.0/sources/ffabstractbutton.h | 222 ++ libffqw-n810-1.0/sources/ffabstractcombobox.cpp | 373 ++ libffqw-n810-1.0/sources/ffabstractcombobox.h | 191 + libffqw-n810-1.0/sources/ffabstractwidget.cpp | 100 + libffqw-n810-1.0/sources/ffabstractwidget.h | 243 ++ libffqw-n810-1.0/sources/ffchart.cpp | 347 ++ libffqw-n810-1.0/sources/ffchart.h | 172 + libffqw-n810-1.0/sources/ffchartbutton.cpp | 333 ++ libffqw-n810-1.0/sources/ffchartbutton.h | 153 + libffqw-n810-1.0/sources/ffchartlegend.cpp | 390 ++ libffqw-n810-1.0/sources/ffchartlegend.h | 185 + .../sources/ffchartlegendcontrolpanel.cpp | 277 ++ .../sources/ffchartlegendcontrolpanel.h | 148 + libffqw-n810-1.0/sources/ffchartscene.cpp | 903 +++++ libffqw-n810-1.0/sources/ffchartscene.h | 214 ++ libffqw-n810-1.0/sources/ffchartseries.cpp | 308 ++ libffqw-n810-1.0/sources/ffchartseries.h | 147 + libffqw-n810-1.0/sources/ffcolorcombobox.cpp | 258 ++ libffqw-n810-1.0/sources/ffcolorcombobox.h | 157 + libffqw-n810-1.0/sources/ffdpad.cpp | 268 ++ libffqw-n810-1.0/sources/ffdpad.h | 169 + libffqw-n810-1.0/sources/ffdpadbutton.cpp | 216 ++ libffqw-n810-1.0/sources/ffdpadbutton.h | 130 + libffqw-n810-1.0/sources/fflinecombobox.cpp | 247 ++ libffqw-n810-1.0/sources/fflinecombobox.h | 149 + libffqw-n810-1.0/sources/ffscrollarea.cpp | 422 +++ libffqw-n810-1.0/sources/ffscrollarea.h | 152 + libffqw-n810-1.0/sources/ffscrollingbutton.cpp | 581 +++ libffqw-n810-1.0/sources/ffscrollingbutton.h | 216 ++ libffqw-n810-1.0/sources/ffscrollingcheckbox.cpp | 318 ++ libffqw-n810-1.0/sources/ffscrollingcheckbox.h | 153 + libffqw-n810-1.0/sources/ffscrollinglabel.cpp | 701 ++++ libffqw-n810-1.0/sources/ffscrollinglabel.h | 223 ++ .../sources/ffscrollingradiobutton.cpp | 101 + libffqw-n810-1.0/sources/ffscrollingradiobutton.h | 112 + libffqw-n810-1.0/sources/ffstringcombobox.cpp | 193 + libffqw-n810-1.0/sources/ffstringcombobox.h | 136 + libffqw-n810-1.0/sources/ffviewcache.cpp | 176 + libffqw-n810-1.0/sources/ffviewcache.h | 124 + 320 files changed, 156992 insertions(+) create mode 100644 FFQWidgets.pdf create mode 100644 libffqw-1.0/Doxyfile create mode 100644 libffqw-1.0/bin/libffqw-dev_1.0_armel.deb create mode 100644 libffqw-1.0/bin/libffqw_1.0_armel.deb create mode 100644 libffqw-1.0/data/img/img.qrc create mode 100644 libffqw-1.0/data/img/standard/button_bottomcenter_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/button_bottomcenter_normal.svg create mode 100644 libffqw-1.0/data/img/standard/button_bottomleft_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/button_bottomleft_normal.svg create mode 100644 libffqw-1.0/data/img/standard/button_bottomright_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/button_bottomright_normal.svg create mode 100644 libffqw-1.0/data/img/standard/button_center_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/button_center_normal.svg create mode 100644 libffqw-1.0/data/img/standard/button_centerleft_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/button_centerleft_normal.svg create mode 100644 libffqw-1.0/data/img/standard/button_centerright_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/button_centerright_normal.svg create mode 100644 libffqw-1.0/data/img/standard/button_false.svg create mode 100644 libffqw-1.0/data/img/standard/button_topcenter_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/button_topcenter_normal.svg create mode 100644 libffqw-1.0/data/img/standard/button_topleft_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/button_topleft_normal.svg create mode 100644 libffqw-1.0/data/img/standard/button_topright_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/button_topright_normal.svg create mode 100644 libffqw-1.0/data/img/standard/button_true.svg create mode 100644 libffqw-1.0/data/img/standard/chart_default.svg create mode 100644 libffqw-1.0/data/img/standard/chart_legendOFF.svg create mode 100644 libffqw-1.0/data/img/standard/chart_legendON.svg create mode 100644 libffqw-1.0/data/img/standard/chart_zoomin.svg create mode 100644 libffqw-1.0/data/img/standard/chart_zoomout.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_bottomcenter_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_bottomcenter_normal.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_bottomleft_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_bottomleft_normal.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_bottomright_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_bottomright_normal.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_center_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_center_normal.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_centerleft_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_centerleft_normal.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_centerright_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_centerright_normal.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_topcenter_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_topcenter_normal.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_topleft_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_topleft_normal.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_topright_clicked.svg create mode 100644 libffqw-1.0/data/img/standard/combo_button_topright_normal.svg create mode 100644 libffqw-1.0/data/img/standard/combo_colorarrow.svg create mode 100644 libffqw-1.0/data/img/standard/combo_colorarrow_pressed.svg create mode 100644 libffqw-1.0/data/img/standard/combo_colorbackground.svg create mode 100644 libffqw-1.0/data/img/standard/combo_colorbackground_pressed.svg create mode 100644 libffqw-1.0/data/img/standard/combo_string_arrow.svg create mode 100644 libffqw-1.0/data/img/standard/combo_string_arrow_pressed.svg create mode 100644 libffqw-1.0/data/img/standard/combo_string_background.svg create mode 100644 libffqw-1.0/data/img/standard/combo_string_background_pressed.svg create mode 100644 libffqw-1.0/data/img/standard/combo_triangle.svg create mode 100644 libffqw-1.0/data/img/standard/combo_triangle_pressed.svg create mode 100644 libffqw-1.0/data/img/standard/dpad_background.svg create mode 100644 libffqw-1.0/data/img/standard/dpad_button_down.svg create mode 100644 libffqw-1.0/data/img/standard/dpad_button_down_pressed.svg create mode 100644 libffqw-1.0/data/img/standard/dpad_button_left.svg create mode 100644 libffqw-1.0/data/img/standard/dpad_button_left_pressed.svg create mode 100644 libffqw-1.0/data/img/standard/dpad_button_right.svg create mode 100644 libffqw-1.0/data/img/standard/dpad_button_right_pressed.svg create mode 100644 libffqw-1.0/data/img/standard/dpad_button_up.svg create mode 100644 libffqw-1.0/data/img/standard/dpad_button_up_pressed.svg create mode 100644 libffqw-1.0/data/img/standard/radiobutton_false.svg create mode 100644 libffqw-1.0/data/img/standard/radiobutton_true.svg create mode 100644 libffqw-1.0/debian/README create mode 100644 libffqw-1.0/debian/README.Debian create mode 100644 libffqw-1.0/debian/changelog create mode 100644 libffqw-1.0/debian/compat create mode 100644 libffqw-1.0/debian/control create mode 100644 libffqw-1.0/debian/control~ create mode 100644 libffqw-1.0/debian/copyright create mode 100644 libffqw-1.0/debian/cron.d.ex create mode 100644 libffqw-1.0/debian/dirs create mode 100644 libffqw-1.0/debian/docs create mode 100644 libffqw-1.0/debian/emacsen-install.ex create mode 100644 libffqw-1.0/debian/emacsen-remove.ex create mode 100644 libffqw-1.0/debian/emacsen-startup.ex create mode 100644 libffqw-1.0/debian/files create mode 100644 libffqw-1.0/debian/init.d.ex create mode 100644 libffqw-1.0/debian/libffqw-default.ex create mode 100644 libffqw-1.0/debian/libffqw-dev.dirs create mode 100644 libffqw-1.0/debian/libffqw-dev.install create mode 100644 libffqw-1.0/debian/libffqw.doc-base.EX create mode 100644 libffqw-1.0/debian/libffqw.substvars create mode 100644 libffqw-1.0/debian/libffqw1.dirs create mode 100644 libffqw-1.0/debian/libffqw1.install create mode 100644 libffqw-1.0/debian/manpage.1.ex create mode 100644 libffqw-1.0/debian/manpage.sgml.ex create mode 100644 libffqw-1.0/debian/manpage.xml.ex create mode 100644 libffqw-1.0/debian/menu.ex create mode 100644 libffqw-1.0/debian/postinst.ex create mode 100644 libffqw-1.0/debian/postrm.ex create mode 100644 libffqw-1.0/debian/preinst.ex create mode 100644 libffqw-1.0/debian/prerm.ex create mode 100755 libffqw-1.0/debian/rules create mode 100644 libffqw-1.0/debian/shlibs.local.ex create mode 100644 libffqw-1.0/debian/watch.ex create mode 100644 libffqw-1.0/libffqw.pro create mode 100644 libffqw-1.0/sources/FFGui create mode 100644 libffqw-1.0/sources/ffabstractbutton.cpp create mode 100644 libffqw-1.0/sources/ffabstractbutton.h create mode 100644 libffqw-1.0/sources/ffabstractcombobox.cpp create mode 100644 libffqw-1.0/sources/ffabstractcombobox.h create mode 100644 libffqw-1.0/sources/ffabstractwidget.cpp create mode 100644 libffqw-1.0/sources/ffabstractwidget.h create mode 100644 libffqw-1.0/sources/ffchart.cpp create mode 100644 libffqw-1.0/sources/ffchart.h create mode 100644 libffqw-1.0/sources/ffchartbutton.cpp create mode 100644 libffqw-1.0/sources/ffchartbutton.h create mode 100644 libffqw-1.0/sources/ffchartlegend.cpp create mode 100644 libffqw-1.0/sources/ffchartlegend.h create mode 100644 libffqw-1.0/sources/ffchartlegendcontrolpanel.cpp create mode 100644 libffqw-1.0/sources/ffchartlegendcontrolpanel.h create mode 100644 libffqw-1.0/sources/ffchartscene.cpp create mode 100644 libffqw-1.0/sources/ffchartscene.h create mode 100644 libffqw-1.0/sources/ffchartseries.cpp create mode 100644 libffqw-1.0/sources/ffchartseries.h create mode 100644 libffqw-1.0/sources/ffcolorcombobox.cpp create mode 100644 libffqw-1.0/sources/ffcolorcombobox.h create mode 100644 libffqw-1.0/sources/ffdpad.cpp create mode 100644 libffqw-1.0/sources/ffdpad.h create mode 100644 libffqw-1.0/sources/ffdpadbutton.cpp create mode 100644 libffqw-1.0/sources/ffdpadbutton.h create mode 100644 libffqw-1.0/sources/fflinecombobox.cpp create mode 100644 libffqw-1.0/sources/fflinecombobox.h create mode 100644 libffqw-1.0/sources/ffscrollarea.cpp create mode 100644 libffqw-1.0/sources/ffscrollarea.h create mode 100644 libffqw-1.0/sources/ffscrollingbutton.cpp create mode 100644 libffqw-1.0/sources/ffscrollingbutton.h create mode 100644 libffqw-1.0/sources/ffscrollingcheckbox.cpp create mode 100644 libffqw-1.0/sources/ffscrollingcheckbox.h create mode 100644 libffqw-1.0/sources/ffscrollinglabel.cpp create mode 100644 libffqw-1.0/sources/ffscrollinglabel.h create mode 100644 libffqw-1.0/sources/ffscrollingradiobutton.cpp create mode 100644 libffqw-1.0/sources/ffscrollingradiobutton.h create mode 100644 libffqw-1.0/sources/ffstringcombobox.cpp create mode 100644 libffqw-1.0/sources/ffstringcombobox.h create mode 100644 libffqw-1.0/sources/ffviewcache.cpp create mode 100644 libffqw-1.0/sources/ffviewcache.h create mode 100644 libffqw-demo-1.0/bin/diablo/libffqw-demo_1.0_armel.deb create mode 100644 libffqw-demo-1.0/bin/fremantle/libffqw-demo_1.0_armel.deb create mode 100755 libffqw-demo-1.0/data/libffqw-demo.desktop create mode 100644 libffqw-demo-1.0/data/libffqw-demo.png create mode 100755 libffqw-demo-1.0/data/libffqw-demo.service create mode 100644 libffqw-demo-1.0/debian/README create mode 100644 libffqw-demo-1.0/debian/README.Debian create mode 100644 libffqw-demo-1.0/debian/changelog create mode 100644 libffqw-demo-1.0/debian/compat create mode 100644 libffqw-demo-1.0/debian/control create mode 100644 libffqw-demo-1.0/debian/copyright create mode 100644 libffqw-demo-1.0/debian/cron.d.ex create mode 100644 libffqw-demo-1.0/debian/dirs create mode 100644 libffqw-demo-1.0/debian/docs create mode 100644 libffqw-demo-1.0/debian/emacsen-install.ex create mode 100644 libffqw-demo-1.0/debian/emacsen-remove.ex create mode 100644 libffqw-demo-1.0/debian/emacsen-startup.ex create mode 100644 libffqw-demo-1.0/debian/files create mode 100644 libffqw-demo-1.0/debian/init.d.ex create mode 100644 libffqw-demo-1.0/debian/libffqw-demo-default.ex create mode 100644 libffqw-demo-1.0/debian/libffqw-demo.doc-base.EX create mode 100644 libffqw-demo-1.0/debian/libffqw-demo.substvars create mode 100644 libffqw-demo-1.0/debian/manpage.1.ex create mode 100644 libffqw-demo-1.0/debian/manpage.sgml.ex create mode 100644 libffqw-demo-1.0/debian/manpage.xml.ex create mode 100644 libffqw-demo-1.0/debian/menu.ex create mode 100644 libffqw-demo-1.0/debian/postinst.ex create mode 100644 libffqw-demo-1.0/debian/postrm.ex create mode 100644 libffqw-demo-1.0/debian/preinst.ex create mode 100644 libffqw-demo-1.0/debian/prerm.ex create mode 100755 libffqw-demo-1.0/debian/rules create mode 100644 libffqw-demo-1.0/debian/watch.ex create mode 100644 libffqw-demo-1.0/demo.pro create mode 100644 libffqw-demo-1.0/sources/main.cpp create mode 100644 libffqw-demo-1.0/sources/mainwindow.cpp create mode 100644 libffqw-demo-1.0/sources/mainwindow.h create mode 100644 libffqw-n810-1.0/Doxyfile create mode 100644 libffqw-n810-1.0/bin/libffqw-n810-dev_1.0_armel.deb create mode 100644 libffqw-n810-1.0/bin/libffqw-n810_1.0_armel.deb create mode 100644 libffqw-n810-1.0/data/img/img.qrc create mode 100644 libffqw-n810-1.0/data/img/standard/button_bottomcenter_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_bottomcenter_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_bottomleft_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_bottomleft_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_bottomright_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_bottomright_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_center_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_center_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_centerleft_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_centerleft_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_centerright_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_centerright_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_false.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_topcenter_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_topcenter_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_topleft_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_topleft_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_topright_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_topright_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/button_true.svg create mode 100644 libffqw-n810-1.0/data/img/standard/chart_default.svg create mode 100644 libffqw-n810-1.0/data/img/standard/chart_legendOFF.svg create mode 100644 libffqw-n810-1.0/data/img/standard/chart_legendON.svg create mode 100644 libffqw-n810-1.0/data/img/standard/chart_zoomin.svg create mode 100644 libffqw-n810-1.0/data/img/standard/chart_zoomout.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_bottomcenter_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_bottomcenter_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_bottomleft_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_bottomleft_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_bottomright_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_bottomright_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_center_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_center_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_centerleft_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_centerleft_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_centerright_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_centerright_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_topcenter_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_topcenter_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_topleft_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_topleft_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_topright_clicked.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_button_topright_normal.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_colorarrow.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_colorarrow_pressed.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_colorbackground.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_colorbackground_pressed.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_string_arrow.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_string_arrow_pressed.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_string_background.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_string_background_pressed.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_triangle.svg create mode 100644 libffqw-n810-1.0/data/img/standard/combo_triangle_pressed.svg create mode 100644 libffqw-n810-1.0/data/img/standard/dpad_background.svg create mode 100644 libffqw-n810-1.0/data/img/standard/dpad_button_down.svg create mode 100644 libffqw-n810-1.0/data/img/standard/dpad_button_down_pressed.svg create mode 100644 libffqw-n810-1.0/data/img/standard/dpad_button_left.svg create mode 100644 libffqw-n810-1.0/data/img/standard/dpad_button_left_pressed.svg create mode 100644 libffqw-n810-1.0/data/img/standard/dpad_button_right.svg create mode 100644 libffqw-n810-1.0/data/img/standard/dpad_button_right_pressed.svg create mode 100644 libffqw-n810-1.0/data/img/standard/dpad_button_up.svg create mode 100644 libffqw-n810-1.0/data/img/standard/dpad_button_up_pressed.svg create mode 100644 libffqw-n810-1.0/data/img/standard/radiobutton_false.svg create mode 100644 libffqw-n810-1.0/data/img/standard/radiobutton_true.svg create mode 100644 libffqw-n810-1.0/debian/README create mode 100644 libffqw-n810-1.0/debian/README.Debian create mode 100644 libffqw-n810-1.0/debian/changelog create mode 100644 libffqw-n810-1.0/debian/compat create mode 100644 libffqw-n810-1.0/debian/control create mode 100644 libffqw-n810-1.0/debian/copyright create mode 100644 libffqw-n810-1.0/debian/cron.d.ex create mode 100644 libffqw-n810-1.0/debian/dirs create mode 100644 libffqw-n810-1.0/debian/docs create mode 100644 libffqw-n810-1.0/debian/emacsen-install.ex create mode 100644 libffqw-n810-1.0/debian/emacsen-remove.ex create mode 100644 libffqw-n810-1.0/debian/emacsen-startup.ex create mode 100644 libffqw-n810-1.0/debian/files create mode 100644 libffqw-n810-1.0/debian/init.d.ex create mode 100644 libffqw-n810-1.0/debian/libffqw-default.ex create mode 100644 libffqw-n810-1.0/debian/libffqw-dev.dirs create mode 100644 libffqw-n810-1.0/debian/libffqw-dev.install create mode 100644 libffqw-n810-1.0/debian/libffqw-n810.substvars create mode 100644 libffqw-n810-1.0/debian/libffqw.doc-base.EX create mode 100644 libffqw-n810-1.0/debian/libffqw.substvars create mode 100644 libffqw-n810-1.0/debian/libffqw1.dirs create mode 100644 libffqw-n810-1.0/debian/libffqw1.install create mode 100644 libffqw-n810-1.0/debian/manpage.1.ex create mode 100644 libffqw-n810-1.0/debian/manpage.sgml.ex create mode 100644 libffqw-n810-1.0/debian/manpage.xml.ex create mode 100644 libffqw-n810-1.0/debian/menu.ex create mode 100644 libffqw-n810-1.0/debian/postinst.ex create mode 100644 libffqw-n810-1.0/debian/postrm.ex create mode 100644 libffqw-n810-1.0/debian/preinst.ex create mode 100644 libffqw-n810-1.0/debian/prerm.ex create mode 100755 libffqw-n810-1.0/debian/rules create mode 100644 libffqw-n810-1.0/debian/shlibs.local.ex create mode 100644 libffqw-n810-1.0/debian/watch.ex create mode 100644 libffqw-n810-1.0/libffqw-n810.pro create mode 100644 libffqw-n810-1.0/sources/FFGui create mode 100644 libffqw-n810-1.0/sources/ffabstractbutton.cpp create mode 100644 libffqw-n810-1.0/sources/ffabstractbutton.h create mode 100644 libffqw-n810-1.0/sources/ffabstractcombobox.cpp create mode 100644 libffqw-n810-1.0/sources/ffabstractcombobox.h create mode 100644 libffqw-n810-1.0/sources/ffabstractwidget.cpp create mode 100644 libffqw-n810-1.0/sources/ffabstractwidget.h create mode 100644 libffqw-n810-1.0/sources/ffchart.cpp create mode 100644 libffqw-n810-1.0/sources/ffchart.h create mode 100644 libffqw-n810-1.0/sources/ffchartbutton.cpp create mode 100644 libffqw-n810-1.0/sources/ffchartbutton.h create mode 100644 libffqw-n810-1.0/sources/ffchartlegend.cpp create mode 100644 libffqw-n810-1.0/sources/ffchartlegend.h create mode 100644 libffqw-n810-1.0/sources/ffchartlegendcontrolpanel.cpp create mode 100644 libffqw-n810-1.0/sources/ffchartlegendcontrolpanel.h create mode 100644 libffqw-n810-1.0/sources/ffchartscene.cpp create mode 100644 libffqw-n810-1.0/sources/ffchartscene.h create mode 100644 libffqw-n810-1.0/sources/ffchartseries.cpp create mode 100644 libffqw-n810-1.0/sources/ffchartseries.h create mode 100644 libffqw-n810-1.0/sources/ffcolorcombobox.cpp create mode 100644 libffqw-n810-1.0/sources/ffcolorcombobox.h create mode 100644 libffqw-n810-1.0/sources/ffdpad.cpp create mode 100644 libffqw-n810-1.0/sources/ffdpad.h create mode 100644 libffqw-n810-1.0/sources/ffdpadbutton.cpp create mode 100644 libffqw-n810-1.0/sources/ffdpadbutton.h create mode 100644 libffqw-n810-1.0/sources/fflinecombobox.cpp create mode 100644 libffqw-n810-1.0/sources/fflinecombobox.h create mode 100644 libffqw-n810-1.0/sources/ffscrollarea.cpp create mode 100644 libffqw-n810-1.0/sources/ffscrollarea.h create mode 100644 libffqw-n810-1.0/sources/ffscrollingbutton.cpp create mode 100644 libffqw-n810-1.0/sources/ffscrollingbutton.h create mode 100644 libffqw-n810-1.0/sources/ffscrollingcheckbox.cpp create mode 100644 libffqw-n810-1.0/sources/ffscrollingcheckbox.h create mode 100644 libffqw-n810-1.0/sources/ffscrollinglabel.cpp create mode 100644 libffqw-n810-1.0/sources/ffscrollinglabel.h create mode 100644 libffqw-n810-1.0/sources/ffscrollingradiobutton.cpp create mode 100644 libffqw-n810-1.0/sources/ffscrollingradiobutton.h create mode 100644 libffqw-n810-1.0/sources/ffstringcombobox.cpp create mode 100644 libffqw-n810-1.0/sources/ffstringcombobox.h create mode 100644 libffqw-n810-1.0/sources/ffviewcache.cpp create mode 100644 libffqw-n810-1.0/sources/ffviewcache.h delete mode 100644 welcome diff --git a/FFQWidgets.pdf b/FFQWidgets.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6ea0793862bcaadebd9c1019aebf645f1c7f1063 GIT binary patch literal 768488 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%0AaDZ&_LGkRJ}{?>NV_rvPB#zJbR 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

Fs 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≦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 + + standard/button_bottomcenter_clicked.svg + standard/button_bottomcenter_normal.svg + standard/button_bottomleft_clicked.svg + standard/button_bottomleft_normal.svg + standard/button_bottomright_clicked.svg + standard/button_bottomright_normal.svg + standard/button_center_clicked.svg + standard/button_centerleft_clicked.svg + standard/button_centerleft_normal.svg + standard/button_center_normal.svg + standard/button_centerright_clicked.svg + standard/button_centerright_normal.svg + standard/button_false.svg + standard/button_topcenter_clicked.svg + standard/button_topcenter_normal.svg + standard/button_topleft_clicked.svg + standard/button_topleft_normal.svg + standard/button_topright_clicked.svg + standard/button_topright_normal.svg + standard/button_true.svg + standard/chart_default.svg + standard/chart_legendOFF.svg + standard/chart_legendON.svg + standard/chart_zoomin.svg + standard/chart_zoomout.svg + standard/combo_button_bottomcenter_clicked.svg + standard/combo_button_bottomcenter_normal.svg + standard/combo_button_bottomleft_clicked.svg + standard/combo_button_bottomleft_normal.svg + standard/combo_button_bottomright_clicked.svg + standard/combo_button_bottomright_normal.svg + standard/combo_button_center_clicked.svg + standard/combo_button_centerleft_clicked.svg + standard/combo_button_centerleft_normal.svg + standard/combo_button_center_normal.svg + standard/combo_button_centerright_clicked.svg + standard/combo_button_centerright_normal.svg + standard/combo_button_topcenter_clicked.svg + standard/combo_button_topcenter_normal.svg + standard/combo_button_topleft_clicked.svg + standard/combo_button_topleft_normal.svg + standard/combo_button_topright_clicked.svg + standard/combo_button_topright_normal.svg + standard/combo_colorarrow.svg + standard/combo_colorarrow_pressed.svg + standard/combo_colorbackground.svg + standard/combo_colorbackground_pressed.svg + standard/combo_string_arrow.svg + standard/combo_string_arrow_pressed.svg + standard/combo_string_background.svg + standard/combo_string_background_pressed.svg + standard/combo_triangle.svg + standard/combo_triangle_pressed.svg + standard/dpad_background.svg + standard/dpad_button_down.svg + standard/dpad_button_down_pressed.svg + standard/dpad_button_left.svg + standard/dpad_button_left_pressed.svg + standard/dpad_button_right.svg + standard/dpad_button_right_pressed.svg + standard/dpad_button_up.svg + standard/dpad_button_up_pressed.svg + standard/radiobutton_false.svg + standard/radiobutton_true.svg + + diff --git a/libffqw-1.0/data/img/standard/button_bottomcenter_clicked.svg b/libffqw-1.0/data/img/standard/button_bottomcenter_clicked.svg new file mode 100644 index 0000000..4f7c236 --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_bottomcenter_clicked.svg @@ -0,0 +1,1122 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_bottomcenter_normal.svg b/libffqw-1.0/data/img/standard/button_bottomcenter_normal.svg new file mode 100644 index 0000000..bff7151 --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_bottomcenter_normal.svg @@ -0,0 +1,575 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_bottomleft_clicked.svg b/libffqw-1.0/data/img/standard/button_bottomleft_clicked.svg new file mode 100644 index 0000000..cec989c --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_bottomleft_clicked.svg @@ -0,0 +1,1122 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_bottomleft_normal.svg b/libffqw-1.0/data/img/standard/button_bottomleft_normal.svg new file mode 100644 index 0000000..422f443 --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_bottomleft_normal.svg @@ -0,0 +1,565 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_bottomright_clicked.svg b/libffqw-1.0/data/img/standard/button_bottomright_clicked.svg new file mode 100644 index 0000000..8902372 --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_bottomright_clicked.svg @@ -0,0 +1,1121 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_bottomright_normal.svg b/libffqw-1.0/data/img/standard/button_bottomright_normal.svg new file mode 100644 index 0000000..96da0b4 --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_bottomright_normal.svg @@ -0,0 +1,609 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_center_clicked.svg b/libffqw-1.0/data/img/standard/button_center_clicked.svg new file mode 100644 index 0000000..edd9f85 --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_center_clicked.svg @@ -0,0 +1,1155 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_center_normal.svg b/libffqw-1.0/data/img/standard/button_center_normal.svg new file mode 100644 index 0000000..f34dbd6 --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_center_normal.svg @@ -0,0 +1,579 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_centerleft_clicked.svg b/libffqw-1.0/data/img/standard/button_centerleft_clicked.svg new file mode 100644 index 0000000..2c4a76c --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_centerleft_clicked.svg @@ -0,0 +1,1136 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_centerleft_normal.svg b/libffqw-1.0/data/img/standard/button_centerleft_normal.svg new file mode 100644 index 0000000..6184bf5 --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_centerleft_normal.svg @@ -0,0 +1,609 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_centerright_clicked.svg b/libffqw-1.0/data/img/standard/button_centerright_clicked.svg new file mode 100644 index 0000000..9a1793b --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_centerright_clicked.svg @@ -0,0 +1,1137 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_centerright_normal.svg b/libffqw-1.0/data/img/standard/button_centerright_normal.svg new file mode 100644 index 0000000..aaa95a1 --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_centerright_normal.svg @@ -0,0 +1,587 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_false.svg b/libffqw-1.0/data/img/standard/button_false.svg new file mode 100644 index 0000000..3317bb1 --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_false.svg @@ -0,0 +1,514 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_topcenter_clicked.svg b/libffqw-1.0/data/img/standard/button_topcenter_clicked.svg new file mode 100644 index 0000000..523daa8 --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_topcenter_clicked.svg @@ -0,0 +1,1131 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_topcenter_normal.svg b/libffqw-1.0/data/img/standard/button_topcenter_normal.svg new file mode 100644 index 0000000..b69662d --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_topcenter_normal.svg @@ -0,0 +1,565 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_topleft_clicked.svg b/libffqw-1.0/data/img/standard/button_topleft_clicked.svg new file mode 100644 index 0000000..976ac1d --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_topleft_clicked.svg @@ -0,0 +1,1111 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_topleft_normal.svg b/libffqw-1.0/data/img/standard/button_topleft_normal.svg new file mode 100644 index 0000000..187a2ee --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_topleft_normal.svg @@ -0,0 +1,566 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_topright_clicked.svg b/libffqw-1.0/data/img/standard/button_topright_clicked.svg new file mode 100644 index 0000000..51dcbdb --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_topright_clicked.svg @@ -0,0 +1,1121 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_topright_normal.svg b/libffqw-1.0/data/img/standard/button_topright_normal.svg new file mode 100644 index 0000000..943c800 --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_topright_normal.svg @@ -0,0 +1,575 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/button_true.svg b/libffqw-1.0/data/img/standard/button_true.svg new file mode 100644 index 0000000..eae911d --- /dev/null +++ b/libffqw-1.0/data/img/standard/button_true.svg @@ -0,0 +1,497 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/chart_default.svg b/libffqw-1.0/data/img/standard/chart_default.svg new file mode 100644 index 0000000..85b38f0 --- /dev/null +++ b/libffqw-1.0/data/img/standard/chart_default.svg @@ -0,0 +1,175 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/chart_legendOFF.svg b/libffqw-1.0/data/img/standard/chart_legendOFF.svg new file mode 100644 index 0000000..d0e3e81 --- /dev/null +++ b/libffqw-1.0/data/img/standard/chart_legendOFF.svg @@ -0,0 +1,574 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/chart_legendON.svg b/libffqw-1.0/data/img/standard/chart_legendON.svg new file mode 100644 index 0000000..35a321a --- /dev/null +++ b/libffqw-1.0/data/img/standard/chart_legendON.svg @@ -0,0 +1,574 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/chart_zoomin.svg b/libffqw-1.0/data/img/standard/chart_zoomin.svg new file mode 100644 index 0000000..e676bdc --- /dev/null +++ b/libffqw-1.0/data/img/standard/chart_zoomin.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/chart_zoomout.svg b/libffqw-1.0/data/img/standard/chart_zoomout.svg new file mode 100644 index 0000000..522d081 --- /dev/null +++ b/libffqw-1.0/data/img/standard/chart_zoomout.svg @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_bottomcenter_clicked.svg b/libffqw-1.0/data/img/standard/combo_button_bottomcenter_clicked.svg new file mode 100644 index 0000000..1ea9b25 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_bottomcenter_clicked.svg @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_bottomcenter_normal.svg b/libffqw-1.0/data/img/standard/combo_button_bottomcenter_normal.svg new file mode 100644 index 0000000..6cedc9c --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_bottomcenter_normal.svg @@ -0,0 +1,524 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_bottomleft_clicked.svg b/libffqw-1.0/data/img/standard/combo_button_bottomleft_clicked.svg new file mode 100644 index 0000000..d234a2e --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_bottomleft_clicked.svg @@ -0,0 +1,621 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_bottomleft_normal.svg b/libffqw-1.0/data/img/standard/combo_button_bottomleft_normal.svg new file mode 100644 index 0000000..25c95e1 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_bottomleft_normal.svg @@ -0,0 +1,524 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_bottomright_clicked.svg b/libffqw-1.0/data/img/standard/combo_button_bottomright_clicked.svg new file mode 100644 index 0000000..590216d --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_bottomright_clicked.svg @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_bottomright_normal.svg b/libffqw-1.0/data/img/standard/combo_button_bottomright_normal.svg new file mode 100644 index 0000000..5fd4c72 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_bottomright_normal.svg @@ -0,0 +1,524 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_center_clicked.svg b/libffqw-1.0/data/img/standard/combo_button_center_clicked.svg new file mode 100644 index 0000000..2c43ff9 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_center_clicked.svg @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_center_normal.svg b/libffqw-1.0/data/img/standard/combo_button_center_normal.svg new file mode 100644 index 0000000..35c2b83 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_center_normal.svg @@ -0,0 +1,480 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_centerleft_clicked.svg b/libffqw-1.0/data/img/standard/combo_button_centerleft_clicked.svg new file mode 100644 index 0000000..6b3b52d --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_centerleft_clicked.svg @@ -0,0 +1,624 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_centerleft_normal.svg b/libffqw-1.0/data/img/standard/combo_button_centerleft_normal.svg new file mode 100644 index 0000000..82af72c --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_centerleft_normal.svg @@ -0,0 +1,527 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_centerright_clicked.svg b/libffqw-1.0/data/img/standard/combo_button_centerright_clicked.svg new file mode 100644 index 0000000..a41afc7 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_centerright_clicked.svg @@ -0,0 +1,606 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_centerright_normal.svg b/libffqw-1.0/data/img/standard/combo_button_centerright_normal.svg new file mode 100644 index 0000000..b225906 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_centerright_normal.svg @@ -0,0 +1,527 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_topcenter_clicked.svg b/libffqw-1.0/data/img/standard/combo_button_topcenter_clicked.svg new file mode 100644 index 0000000..ae218d9 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_topcenter_clicked.svg @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_topcenter_normal.svg b/libffqw-1.0/data/img/standard/combo_button_topcenter_normal.svg new file mode 100644 index 0000000..011a412 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_topcenter_normal.svg @@ -0,0 +1,524 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_topleft_clicked.svg b/libffqw-1.0/data/img/standard/combo_button_topleft_clicked.svg new file mode 100644 index 0000000..823d289 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_topleft_clicked.svg @@ -0,0 +1,648 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_topleft_normal.svg b/libffqw-1.0/data/img/standard/combo_button_topleft_normal.svg new file mode 100644 index 0000000..a30f950 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_topleft_normal.svg @@ -0,0 +1,523 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_topright_clicked.svg b/libffqw-1.0/data/img/standard/combo_button_topright_clicked.svg new file mode 100644 index 0000000..8e35adf --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_topright_clicked.svg @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_button_topright_normal.svg b/libffqw-1.0/data/img/standard/combo_button_topright_normal.svg new file mode 100644 index 0000000..5e22a10 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_button_topright_normal.svg @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_colorarrow.svg b/libffqw-1.0/data/img/standard/combo_colorarrow.svg new file mode 100644 index 0000000..b55ec36 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_colorarrow.svg @@ -0,0 +1,975 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + Text Text + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_colorarrow_pressed.svg b/libffqw-1.0/data/img/standard/combo_colorarrow_pressed.svg new file mode 100644 index 0000000..7d40d50 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_colorarrow_pressed.svg @@ -0,0 +1,1528 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_colorbackground.svg b/libffqw-1.0/data/img/standard/combo_colorbackground.svg new file mode 100644 index 0000000..e809fee --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_colorbackground.svg @@ -0,0 +1,720 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_colorbackground_pressed.svg b/libffqw-1.0/data/img/standard/combo_colorbackground_pressed.svg new file mode 100644 index 0000000..deb83f9 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_colorbackground_pressed.svg @@ -0,0 +1,719 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_string_arrow.svg b/libffqw-1.0/data/img/standard/combo_string_arrow.svg new file mode 100644 index 0000000..cd35dcf --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_string_arrow.svg @@ -0,0 +1,998 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + Text Text + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_string_arrow_pressed.svg b/libffqw-1.0/data/img/standard/combo_string_arrow_pressed.svg new file mode 100644 index 0000000..4c52924 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_string_arrow_pressed.svg @@ -0,0 +1,1554 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_string_background.svg b/libffqw-1.0/data/img/standard/combo_string_background.svg new file mode 100644 index 0000000..e809fee --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_string_background.svg @@ -0,0 +1,720 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_string_background_pressed.svg b/libffqw-1.0/data/img/standard/combo_string_background_pressed.svg new file mode 100644 index 0000000..deb83f9 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_string_background_pressed.svg @@ -0,0 +1,719 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_triangle.svg b/libffqw-1.0/data/img/standard/combo_triangle.svg new file mode 100644 index 0000000..095c33c --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_triangle.svg @@ -0,0 +1,978 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Text Text + + + + + + + diff --git a/libffqw-1.0/data/img/standard/combo_triangle_pressed.svg b/libffqw-1.0/data/img/standard/combo_triangle_pressed.svg new file mode 100644 index 0000000..cdd0ef4 --- /dev/null +++ b/libffqw-1.0/data/img/standard/combo_triangle_pressed.svg @@ -0,0 +1,931 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Text Text + + + + + + + diff --git a/libffqw-1.0/data/img/standard/dpad_background.svg b/libffqw-1.0/data/img/standard/dpad_background.svg new file mode 100644 index 0000000..129b1b0 --- /dev/null +++ b/libffqw-1.0/data/img/standard/dpad_background.svg @@ -0,0 +1,1885 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/dpad_button_down.svg b/libffqw-1.0/data/img/standard/dpad_button_down.svg new file mode 100644 index 0000000..22af200 --- /dev/null +++ b/libffqw-1.0/data/img/standard/dpad_button_down.svg @@ -0,0 +1,1941 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/dpad_button_down_pressed.svg b/libffqw-1.0/data/img/standard/dpad_button_down_pressed.svg new file mode 100644 index 0000000..a335441 --- /dev/null +++ b/libffqw-1.0/data/img/standard/dpad_button_down_pressed.svg @@ -0,0 +1,3909 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/dpad_button_left.svg b/libffqw-1.0/data/img/standard/dpad_button_left.svg new file mode 100644 index 0000000..d436e8a --- /dev/null +++ b/libffqw-1.0/data/img/standard/dpad_button_left.svg @@ -0,0 +1,1941 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/dpad_button_left_pressed.svg b/libffqw-1.0/data/img/standard/dpad_button_left_pressed.svg new file mode 100644 index 0000000..996214e --- /dev/null +++ b/libffqw-1.0/data/img/standard/dpad_button_left_pressed.svg @@ -0,0 +1,3913 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/dpad_button_right.svg b/libffqw-1.0/data/img/standard/dpad_button_right.svg new file mode 100644 index 0000000..361a5e4 --- /dev/null +++ b/libffqw-1.0/data/img/standard/dpad_button_right.svg @@ -0,0 +1,1941 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/dpad_button_right_pressed.svg b/libffqw-1.0/data/img/standard/dpad_button_right_pressed.svg new file mode 100644 index 0000000..6d7714b --- /dev/null +++ b/libffqw-1.0/data/img/standard/dpad_button_right_pressed.svg @@ -0,0 +1,3917 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/dpad_button_up.svg b/libffqw-1.0/data/img/standard/dpad_button_up.svg new file mode 100644 index 0000000..16eaa01 --- /dev/null +++ b/libffqw-1.0/data/img/standard/dpad_button_up.svg @@ -0,0 +1,1941 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/dpad_button_up_pressed.svg b/libffqw-1.0/data/img/standard/dpad_button_up_pressed.svg new file mode 100644 index 0000000..6f6233a --- /dev/null +++ b/libffqw-1.0/data/img/standard/dpad_button_up_pressed.svg @@ -0,0 +1,3910 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/radiobutton_false.svg b/libffqw-1.0/data/img/standard/radiobutton_false.svg new file mode 100644 index 0000000..3a313b1 --- /dev/null +++ b/libffqw-1.0/data/img/standard/radiobutton_false.svg @@ -0,0 +1,432 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/data/img/standard/radiobutton_true.svg b/libffqw-1.0/data/img/standard/radiobutton_true.svg new file mode 100644 index 0000000..a7fbc46 --- /dev/null +++ b/libffqw-1.0/data/img/standard/radiobutton_true.svg @@ -0,0 +1,442 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-1.0/debian/README b/libffqw-1.0/debian/README new file mode 100644 index 0000000..242606a --- /dev/null +++ b/libffqw-1.0/debian/README @@ -0,0 +1,6 @@ +The Debian Package libffqw +---------------------------- + +Comments regarding the Package + + -- unknown Fri, 8 Jan 2010 14:15:07 +0100 diff --git a/libffqw-1.0/debian/README.Debian b/libffqw-1.0/debian/README.Debian new file mode 100644 index 0000000..8ab4a3d --- /dev/null +++ b/libffqw-1.0/debian/README.Debian @@ -0,0 +1,6 @@ +libffqw for Debian +------------------ + + + + -- unknown Fri, 8 Jan 2010 14:15:07 +0100 diff --git a/libffqw-1.0/debian/changelog b/libffqw-1.0/debian/changelog new file mode 100644 index 0000000..c673e87 --- /dev/null +++ b/libffqw-1.0/debian/changelog @@ -0,0 +1,5 @@ +libffqw (1.0) unstable; urgency=low + + * Initial Release. + + -- Michal Palczewski Fri, 8 Jan 2010 14:15:07 +0100 diff --git a/libffqw-1.0/debian/compat b/libffqw-1.0/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/libffqw-1.0/debian/compat @@ -0,0 +1 @@ +5 diff --git a/libffqw-1.0/debian/control b/libffqw-1.0/debian/control new file mode 100644 index 0000000..99d0a55 --- /dev/null +++ b/libffqw-1.0/debian/control @@ -0,0 +1,40 @@ +Source: libffqw +Priority: extra +Maintainer: Michal A. Palczewski +Build-Depends: debhelper (>= 5) +Standards-Version: 3.7.2 +Section: libs + +Package: libffqw-dev +Section: user/other +Architecture: any +Depends: libffqw (= ${Source-Version}) +Description: Finger Friendly Qt Widgets for Maemo + Library provides finger friendly widgets for Maemo platform. + Works On Fremantle and Diablo. Development packages. +XB-Maemo-Icon-26: + iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A + /wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oBCAwFL1gZpM4AAAAZdEVYdENv + bW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAABF0lEQVRIx9VWMRLCIBBcGAtMOhkrC1+AKUxp + 5R98h3/wB34hrX/wBTbKGyxTqqmMjUTIkIBK4rgzTJjLHcvtHQxEZFGJJ87bO0JisqbVnCii0+La + GMBXDACQ74rWhZWfjYy6SL6FUomM5qxUO7XtSIevnw2DLrLIDzdT0nTYDZEcj03DtCadq8C+fr1K + F8sjLiKxS+dbZJdfLI/Gl6n2Dg2VyUUk1bwT6Xg6BAPANRtFTzCIclEYo7HYov0qsv1/EW08F9x4 + dl4tlurBXDJj1AM+uXp+W6OPD6ijpkGIXAT/KZ1qnLeIfPQOmlFoMuqSwUcWHxCRReVpf32rBvVs + uWRWm/4SogAwW0atBG2LuDamnlukrwfkA722cNGhoLXOAAAAAElFTkSuQmCC + +Package: libffqw +Section: user/other +Architecture: any +Depends: libqt4-core (>=4.6), libqt4-gui (>=4.6) +Description: Finger Friendly Qt Widgets for Maemo + Library provides finger friendly widgets for Maemo platform. + Works On Fremantle and Diablo. +XB-Maemo-Icon-26: + iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A + /wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oBCAwFL1gZpM4AAAAZdEVYdENv + bW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAABF0lEQVRIx9VWMRLCIBBcGAtMOhkrC1+AKUxp + 5R98h3/wB34hrX/wBTbKGyxTqqmMjUTIkIBK4rgzTJjLHcvtHQxEZFGJJ87bO0JisqbVnCii0+La + GMBXDACQ74rWhZWfjYy6SL6FUomM5qxUO7XtSIevnw2DLrLIDzdT0nTYDZEcj03DtCadq8C+fr1K + F8sjLiKxS+dbZJdfLI/Gl6n2Dg2VyUUk1bwT6Xg6BAPANRtFTzCIclEYo7HYov0qsv1/EW08F9x4 + dl4tlurBXDJj1AM+uXp+W6OPD6ijpkGIXAT/KZ1qnLeIfPQOmlFoMuqSwUcWHxCRReVpf32rBvVs + uWRWm/4SogAwW0atBG2LuDamnlukrwfkA722cNGhoLXOAAAAAElFTkSuQmCC diff --git a/libffqw-1.0/debian/control~ b/libffqw-1.0/debian/control~ new file mode 100644 index 0000000..99d0a55 --- /dev/null +++ b/libffqw-1.0/debian/control~ @@ -0,0 +1,40 @@ +Source: libffqw +Priority: extra +Maintainer: Michal A. Palczewski +Build-Depends: debhelper (>= 5) +Standards-Version: 3.7.2 +Section: libs + +Package: libffqw-dev +Section: user/other +Architecture: any +Depends: libffqw (= ${Source-Version}) +Description: Finger Friendly Qt Widgets for Maemo + Library provides finger friendly widgets for Maemo platform. + Works On Fremantle and Diablo. Development packages. +XB-Maemo-Icon-26: + iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A + /wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oBCAwFL1gZpM4AAAAZdEVYdENv + bW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAABF0lEQVRIx9VWMRLCIBBcGAtMOhkrC1+AKUxp + 5R98h3/wB34hrX/wBTbKGyxTqqmMjUTIkIBK4rgzTJjLHcvtHQxEZFGJJ87bO0JisqbVnCii0+La + GMBXDACQ74rWhZWfjYy6SL6FUomM5qxUO7XtSIevnw2DLrLIDzdT0nTYDZEcj03DtCadq8C+fr1K + F8sjLiKxS+dbZJdfLI/Gl6n2Dg2VyUUk1bwT6Xg6BAPANRtFTzCIclEYo7HYov0qsv1/EW08F9x4 + dl4tlurBXDJj1AM+uXp+W6OPD6ijpkGIXAT/KZ1qnLeIfPQOmlFoMuqSwUcWHxCRReVpf32rBvVs + uWRWm/4SogAwW0atBG2LuDamnlukrwfkA722cNGhoLXOAAAAAElFTkSuQmCC + +Package: libffqw +Section: user/other +Architecture: any +Depends: libqt4-core (>=4.6), libqt4-gui (>=4.6) +Description: Finger Friendly Qt Widgets for Maemo + Library provides finger friendly widgets for Maemo platform. + Works On Fremantle and Diablo. +XB-Maemo-Icon-26: + iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A + /wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oBCAwFL1gZpM4AAAAZdEVYdENv + bW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAABF0lEQVRIx9VWMRLCIBBcGAtMOhkrC1+AKUxp + 5R98h3/wB34hrX/wBTbKGyxTqqmMjUTIkIBK4rgzTJjLHcvtHQxEZFGJJ87bO0JisqbVnCii0+La + GMBXDACQ74rWhZWfjYy6SL6FUomM5qxUO7XtSIevnw2DLrLIDzdT0nTYDZEcj03DtCadq8C+fr1K + F8sjLiKxS+dbZJdfLI/Gl6n2Dg2VyUUk1bwT6Xg6BAPANRtFTzCIclEYo7HYov0qsv1/EW08F9x4 + dl4tlurBXDJj1AM+uXp+W6OPD6ijpkGIXAT/KZ1qnLeIfPQOmlFoMuqSwUcWHxCRReVpf32rBvVs + uWRWm/4SogAwW0atBG2LuDamnlukrwfkA722cNGhoLXOAAAAAElFTkSuQmCC diff --git a/libffqw-1.0/debian/copyright b/libffqw-1.0/debian/copyright new file mode 100644 index 0000000..380a638 --- /dev/null +++ b/libffqw-1.0/debian/copyright @@ -0,0 +1,23 @@ +This is libffqw, written and maintained by unknown +on Fri, 8 Jan 2010 14:15:07 +0100. + +Copyright Holder: Comarch S.A. + +License: + + 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. diff --git a/libffqw-1.0/debian/cron.d.ex b/libffqw-1.0/debian/cron.d.ex new file mode 100644 index 0000000..75576e4 --- /dev/null +++ b/libffqw-1.0/debian/cron.d.ex @@ -0,0 +1,4 @@ +# +# Regular cron jobs for the libffqw package +# +0 4 * * * root libffqw_maintenance diff --git a/libffqw-1.0/debian/dirs b/libffqw-1.0/debian/dirs new file mode 100644 index 0000000..ca882bb --- /dev/null +++ b/libffqw-1.0/debian/dirs @@ -0,0 +1,2 @@ +usr/bin +usr/sbin diff --git a/libffqw-1.0/debian/docs b/libffqw-1.0/debian/docs new file mode 100644 index 0000000..e69de29 diff --git a/libffqw-1.0/debian/emacsen-install.ex b/libffqw-1.0/debian/emacsen-install.ex new file mode 100644 index 0000000..64f4d86 --- /dev/null +++ b/libffqw-1.0/debian/emacsen-install.ex @@ -0,0 +1,45 @@ +#! /bin/sh -e +# /usr/lib/emacsen-common/packages/install/libffqw + +# Written by Jim Van Zandt , borrowing heavily +# from the install scripts for gettext by Santiago Vila +# and octave by Dirk Eddelbuettel . + +FLAVOR=$1 +PACKAGE=libffqw + +if [ ${FLAVOR} = emacs ]; then exit 0; fi + +echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR} + +#FLAVORTEST=`echo $FLAVOR | cut -c-6` +#if [ ${FLAVORTEST} = xemacs ] ; then +# SITEFLAG="-no-site-file" +#else +# SITEFLAG="--no-site-file" +#fi +FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile" + +ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} +ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} + +# Install-info-altdir does not actually exist. +# Maybe somebody will write it. +if test -x /usr/sbin/install-info-altdir; then + echo install/${PACKAGE}: install Info links for ${FLAVOR} + install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/info/${PACKAGE}.info.gz +fi + +install -m 755 -d ${ELCDIR} +cd ${ELDIR} +FILES=`echo *.el` +cp ${FILES} ${ELCDIR} +cd ${ELCDIR} + +cat << EOF > path.el +(setq load-path (cons "." load-path) byte-compile-warnings nil) +EOF +${FLAVOR} ${FLAGS} ${FILES} +rm -f *.el path.el + +exit 0 diff --git a/libffqw-1.0/debian/emacsen-remove.ex b/libffqw-1.0/debian/emacsen-remove.ex new file mode 100644 index 0000000..a99dfcc --- /dev/null +++ b/libffqw-1.0/debian/emacsen-remove.ex @@ -0,0 +1,15 @@ +#!/bin/sh -e +# /usr/lib/emacsen-common/packages/remove/libffqw + +FLAVOR=$1 +PACKAGE=libffqw + +if [ ${FLAVOR} != emacs ]; then + if test -x /usr/sbin/install-info-altdir; then + echo remove/${PACKAGE}: removing Info links for ${FLAVOR} + install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/info/libffqw.info.gz + fi + + echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} + rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} +fi diff --git a/libffqw-1.0/debian/emacsen-startup.ex b/libffqw-1.0/debian/emacsen-startup.ex new file mode 100644 index 0000000..bc8681b --- /dev/null +++ b/libffqw-1.0/debian/emacsen-startup.ex @@ -0,0 +1,25 @@ +;; -*-emacs-lisp-*- +;; +;; Emacs startup file, e.g. /etc/emacs/site-start.d/50libffqw.el +;; for the Debian libffqw package +;; +;; Originally contributed by Nils Naumann +;; Modified by Dirk Eddelbuettel +;; Adapted for dh-make by Jim Van Zandt + +;; The libffqw package follows the Debian/GNU Linux 'emacsen' policy and +;; byte-compiles its elisp files for each 'emacs flavor' (emacs19, +;; xemacs19, emacs20, xemacs20...). The compiled code is then +;; installed in a subdirectory of the respective site-lisp directory. +;; We have to add this to the load-path: +(let ((package-dir (concat "/usr/share/" + (symbol-name flavor) + "/site-lisp/libffqw"))) +;; If package-dir does not exist, the libffqw package must have +;; removed but not purged, and we should skip the setup. + (when (file-directory-p package-dir) + (setq load-path (cons package-dir load-path)) + (autoload 'libffqw-mode "libffqw-mode" + "Major mode for editing libffqw files." t) + (add-to-list 'auto-mode-alist '("\\.libffqw$" . libffqw-mode)))) + diff --git a/libffqw-1.0/debian/files b/libffqw-1.0/debian/files new file mode 100644 index 0000000..b7cd5ae --- /dev/null +++ b/libffqw-1.0/debian/files @@ -0,0 +1,2 @@ +libffqw-dev_1.0_armel.deb user/other extra +libffqw_1.0_armel.deb user/other extra diff --git a/libffqw-1.0/debian/init.d.ex b/libffqw-1.0/debian/init.d.ex new file mode 100644 index 0000000..ee9d1e9 --- /dev/null +++ b/libffqw-1.0/debian/init.d.ex @@ -0,0 +1,81 @@ +#! /bin/sh +# +# skeleton example file to build /etc/init.d/ scripts. +# This file should be used to construct scripts for /etc/init.d. +# +# Written by Miquel van Smoorenburg . +# Modified for Debian +# by Ian Murdock . +# +# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl +# + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/sbin/libffqw +NAME=libffqw +DESC=libffqw + +test -x $DAEMON || exit 0 + +# Include libffqw defaults if available +if [ -f /etc/default/libffqw ] ; then + . /etc/default/libffqw +fi + +set -e + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON + echo "$NAME." + ;; + #reload) + # + # If the daemon can reload its config files on the fly + # for example by sending it SIGHUP, do it here. + # + # If the daemon responds to changes in its config file + # directly anyway, make this a do-nothing entry. + # + # echo "Reloading $DESC configuration files." + # start-stop-daemon --stop --signal 1 --quiet --pidfile \ + # /var/run/$NAME.pid --exec $DAEMON + #;; + force-reload) + # + # If the "reload" option is implemented, move the "force-reload" + # option to the "reload" entry above. If not, "force-reload" is + # just the same as "restart" except that it does nothing if the + # daemon isn't already running. + # check wether $DAEMON is running. If so, restart + start-stop-daemon --stop --test --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON \ + && $0 restart \ + || exit 0 + ;; + restart) + echo -n "Restarting $DESC: " + start-stop-daemon --stop --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON + sleep 1 + start-stop-daemon --start --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + *) + N=/etc/init.d/$NAME + # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/libffqw-1.0/debian/libffqw-default.ex b/libffqw-1.0/debian/libffqw-default.ex new file mode 100644 index 0000000..376c2f5 --- /dev/null +++ b/libffqw-1.0/debian/libffqw-default.ex @@ -0,0 +1,10 @@ +# Defaults for libffqw initscript +# sourced by /etc/init.d/libffqw +# installed at /etc/default/libffqw by the maintainer scripts + +# +# This is a POSIX shell fragment +# + +# Additional options that are passed to the Daemon. +DAEMON_OPTS="" diff --git a/libffqw-1.0/debian/libffqw-dev.dirs b/libffqw-1.0/debian/libffqw-dev.dirs new file mode 100644 index 0000000..4418816 --- /dev/null +++ b/libffqw-1.0/debian/libffqw-dev.dirs @@ -0,0 +1,2 @@ +usr/lib +usr/include diff --git a/libffqw-1.0/debian/libffqw-dev.install b/libffqw-1.0/debian/libffqw-dev.install new file mode 100644 index 0000000..3c996c8 --- /dev/null +++ b/libffqw-1.0/debian/libffqw-dev.install @@ -0,0 +1,6 @@ +usr/include/* +usr/lib/lib*.a +usr/lib/lib*.so +usr/lib/pkgconfig/* +usr/lib/*.la +usr/share/pkgconfig/* diff --git a/libffqw-1.0/debian/libffqw.doc-base.EX b/libffqw-1.0/debian/libffqw.doc-base.EX new file mode 100644 index 0000000..ad8ded1 --- /dev/null +++ b/libffqw-1.0/debian/libffqw.doc-base.EX @@ -0,0 +1,22 @@ +Document: libffqw +Title: Debian libffqw Manual +Author: +Abstract: This manual describes what libffqw is + and how it can be used to + manage online manuals on Debian systems. +Section: unknown + +Format: debiandoc-sgml +Files: /usr/share/doc/libffqw/libffqw.sgml.gz + +Format: postscript +Files: /usr/share/doc/libffqw/libffqw.ps.gz + +Format: text +Files: /usr/share/doc/libffqw/libffqw.text.gz + +Format: HTML +Index: /usr/share/doc/libffqw/html/index.html +Files: /usr/share/doc/libffqw/html/*.html + + diff --git a/libffqw-1.0/debian/libffqw.substvars b/libffqw-1.0/debian/libffqw.substvars new file mode 100644 index 0000000..768df32 --- /dev/null +++ b/libffqw-1.0/debian/libffqw.substvars @@ -0,0 +1 @@ +shlibs:Depends=libc6 (>= 2.5.0-1), libgcc1 (>= 1:4.2.1), libqt4-maemo5-core (>= 4.6.0~git20091215), libqt4-maemo5-gui (>= 4.6.0~git20091215), libqt4-maemo5-svg (>= 4.6.0~git20091215), libstdc++6 (>= 4.2.1) diff --git a/libffqw-1.0/debian/libffqw1.dirs b/libffqw-1.0/debian/libffqw1.dirs new file mode 100644 index 0000000..6845771 --- /dev/null +++ b/libffqw-1.0/debian/libffqw1.dirs @@ -0,0 +1 @@ +usr/lib diff --git a/libffqw-1.0/debian/libffqw1.install b/libffqw-1.0/debian/libffqw1.install new file mode 100644 index 0000000..d0dbfd1 --- /dev/null +++ b/libffqw-1.0/debian/libffqw1.install @@ -0,0 +1 @@ +usr/lib/lib*.so.* diff --git a/libffqw-1.0/debian/manpage.1.ex b/libffqw-1.0/debian/manpage.1.ex new file mode 100644 index 0000000..bbd81d8 --- /dev/null +++ b/libffqw-1.0/debian/manpage.1.ex @@ -0,0 +1,59 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH LIBFFQW SECTION "January 8, 2010" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +libffqw \- program to do something +.SH SYNOPSIS +.B libffqw +.RI [ options ] " files" ... +.br +.B bar +.RI [ options ] " files" ... +.SH DESCRIPTION +This manual page documents briefly the +.B libffqw +and +.B bar +commands. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBlibffqw\fP is a program that... +.SH OPTIONS +These programs follow the usual GNU command line syntax, with long +options starting with two dashes (`-'). +A summary of options is included below. +For a complete description, see the Info files. +.TP +.B \-h, \-\-help +Show summary of options. +.TP +.B \-v, \-\-version +Show version of program. +.SH SEE ALSO +.BR bar (1), +.BR baz (1). +.br +The programs are documented fully by +.IR "The Rise and Fall of a Fooish Bar" , +available via the Info system. +.SH AUTHOR +libffqw was written by . +.PP +This manual page was written by unknown , +for the Debian project (but may be used by others). diff --git a/libffqw-1.0/debian/manpage.sgml.ex b/libffqw-1.0/debian/manpage.sgml.ex new file mode 100644 index 0000000..573e274 --- /dev/null +++ b/libffqw-1.0/debian/manpage.sgml.ex @@ -0,0 +1,156 @@ + manpage.1'. You may view + the manual page with: `docbook-to-man manpage.sgml | nroff -man | + less'. A typical entry in a Makefile or Makefile.am is: + +manpage.1: manpage.sgml + docbook-to-man $< > $@ + + + The docbook-to-man binary is found in the docbook-to-man package. + Please remember that if you create the nroff version in one of the + debian/rules file targets (such as build), you will need to include + docbook-to-man in your Build-Depends control field. + + --> + + + FIRSTNAME"> + SURNAME"> + + January 8, 2010"> + + SECTION"> + michal.palczewski@comarch.com"> + + LIBFFQW"> + + + Debian"> + GNU"> + GPL"> +]> + + + +

+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; + + + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + Instead, it has documentation in the &gnu; + Info format; see below. + + &dhpackage; is a program that... + + + + OPTIONS + + These programs follow the usual &gnu; command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. For a complete description, see the + Info files. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 2 any + later version published by the Free Software Foundation. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + + + + + + diff --git a/libffqw-1.0/debian/manpage.xml.ex b/libffqw-1.0/debian/manpage.xml.ex new file mode 100644 index 0000000..8e4ea44 --- /dev/null +++ b/libffqw-1.0/debian/manpage.xml.ex @@ -0,0 +1,148 @@ + +.
will be generated. You may view the +manual page with: nroff -man .
| less'. A +typical entry in a Makefile or Makefile.am is: + +DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\ +manpages/docbook.xsl +XP=xsltproc -''-nonet + +manpage.1: manpage.dbk + $(XP) $(DB2MAN) $< + +The xsltproc binary is found in the xsltproc package. The +XSL files are in docbook-xsl. Please remember that if you +create the nroff version in one of the debian/rules file +targets (such as build), you will need to include xsltproc +and docbook-xsl in your Build-Depends control field. + +--> + + + FIRSTNAME"> + SURNAME"> + + January 8, 2010"> + + SECTION"> + michal.palczewski@comarch.com"> + + LIBFFQW"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + Instead, it has documentation in the &gnu; + Info format; see below. + + &dhpackage; is a program that... + + + + OPTIONS + + These programs follow the usual &gnu; command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. For a complete description, see the + Info files. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 2 any + later version published by the Free Software Foundation. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + +
+ diff --git a/libffqw-1.0/debian/menu.ex b/libffqw-1.0/debian/menu.ex new file mode 100644 index 0000000..e460fb0 --- /dev/null +++ b/libffqw-1.0/debian/menu.ex @@ -0,0 +1,2 @@ +?package(libffqw):needs="X11|text|vc|wm" section="Apps/see-menu-manual"\ + title="libffqw" command="/usr/bin/libffqw" diff --git a/libffqw-1.0/debian/postinst.ex b/libffqw-1.0/debian/postinst.ex new file mode 100644 index 0000000..82b2ebc --- /dev/null +++ b/libffqw-1.0/debian/postinst.ex @@ -0,0 +1,41 @@ +#!/bin/sh +# postinst script for libffqw +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + configure) + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/libffqw-1.0/debian/postrm.ex b/libffqw-1.0/debian/postrm.ex new file mode 100644 index 0000000..91fc203 --- /dev/null +++ b/libffqw-1.0/debian/postrm.ex @@ -0,0 +1,39 @@ +#!/bin/sh +# postrm script for libffqw +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/libffqw-1.0/debian/preinst.ex b/libffqw-1.0/debian/preinst.ex new file mode 100644 index 0000000..522d75c --- /dev/null +++ b/libffqw-1.0/debian/preinst.ex @@ -0,0 +1,37 @@ +#!/bin/sh +# preinst script for libffqw +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `install' +# * `install' +# * `upgrade' +# * `abort-upgrade' +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/libffqw-1.0/debian/prerm.ex b/libffqw-1.0/debian/prerm.ex new file mode 100644 index 0000000..59e41eb --- /dev/null +++ b/libffqw-1.0/debian/prerm.ex @@ -0,0 +1,40 @@ +#!/bin/sh +# prerm script for libffqw +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|deconfigure) + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/libffqw-1.0/debian/rules b/libffqw-1.0/debian/rules new file mode 100755 index 0000000..6f73bd2 --- /dev/null +++ b/libffqw-1.0/debian/rules @@ -0,0 +1,105 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + + + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +# shared library versions, option 1 +version=2.0.5 +major=2 +# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so +#version=`ls src/.libs/lib*.so.* | \ +# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` +#major=`ls src/.libs/lib*.so.* | \ +# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + + touch configure-stamp + + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) clean + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/tmp + $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_python +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/libffqw-1.0/debian/shlibs.local.ex b/libffqw-1.0/debian/shlibs.local.ex new file mode 100644 index 0000000..1aa6a65 --- /dev/null +++ b/libffqw-1.0/debian/shlibs.local.ex @@ -0,0 +1 @@ +liblibffqw 1.0 libffqw (>> 1.0-0), libffqw (<< 1.0-99) diff --git a/libffqw-1.0/debian/watch.ex b/libffqw-1.0/debian/watch.ex new file mode 100644 index 0000000..a625cc8 --- /dev/null +++ b/libffqw-1.0/debian/watch.ex @@ -0,0 +1,22 @@ +# Example watch control file for uscan +# Rename this file to "watch" and then you can run the "uscan" command +# to check for upstream updates and more. +# See uscan(1) for format + +# Compulsory line, this is a version 3 file +version=3 + +# Uncomment to examine a Webpage +# +#http://www.example.com/downloads.php libffqw-(.*)\.tar\.gz + +# Uncomment to examine a Webserver directory +#http://www.example.com/pub/libffqw-(.*)\.tar\.gz + +# Uncommment to examine a FTP server +#ftp://ftp.example.com/pub/libffqw-(.*)\.tar\.gz debian uupdate + +# Uncomment to find new files on sourceforge, for debscripts >= 2.9 +# http://sf.net/libffqw/libffqw-(.*)\.tar\.gz + + diff --git a/libffqw-1.0/libffqw.pro b/libffqw-1.0/libffqw.pro new file mode 100644 index 0000000..7cb4243 --- /dev/null +++ b/libffqw-1.0/libffqw.pro @@ -0,0 +1,100 @@ +TEMPLATE = lib +TARGET = ffqw +QT += core \ + gui \ + svg +HEADERS += sources/ffabstractcombobox.h \ + sources/ffscrollingcheckbox.h \ + sources/ffscrollingbutton.h \ + sources/ffabstractbutton.h \ + sources/ffabstractwidget.h \ + sources/ffscrollinglabel.h \ + sources/ffviewcache.h \ + sources/ffstringcombobox.h \ + sources/ffdpad.h \ + sources/ffcolorcombobox.h \ + sources/ffdpadbutton.h \ + sources/ffscrollarea.h \ + sources/ffchart.h \ + sources/ffchartlegend.h \ + sources/ffchartscene.h \ + sources/ffchartbutton.h \ + sources/ffchartlegendcontrolpanel.h \ + sources/ffchartseries.h \ + sources/fflinecombobox.h \ + sources/ffscrollingradiobutton.h +SOURCES += sources/ffscrollingcheckbox.cpp \ + sources/ffabstractcombobox.cpp \ + sources/ffscrollingbutton.cpp \ + sources/ffabstractbutton.cpp \ + sources/ffdpad.cpp \ + sources/ffabstractwidget.cpp \ + sources/ffscrollinglabel.cpp \ + sources/ffviewcache.cpp \ + sources/ffstringcombobox.cpp \ + sources/ffcolorcombobox.cpp \ + sources/ffdpadbutton.cpp \ + sources/ffscrollarea.cpp \ + sources/ffchart.cpp \ + sources/ffchartlegend.cpp \ + sources/ffchartscene.cpp \ + sources/ffchartbutton.cpp \ + sources/ffchartlegendcontrolpanel.cpp \ + sources/ffchartseries.cpp \ + sources/fflinecombobox.cpp \ + sources/ffscrollingradiobutton.cpp + +RESOURCES += data/img/img.qrc + +VERSION = 1.0 + +headers.files += sources/ffcolorcombobutton.h \ + sources/ffchartscene.h \ + sources/ffchartlegend.h \ + sources/ffchartlegendcontrolbutton.h \ + sources/ffchartlegendcontrolpanel.h \ + sources/ffchart.h \ + sources/ffchartbutton.h \ + sources/ffcombobutton.h \ + sources/ffscrollingcheckbox.h \ + sources/ffscrollingbutton.h \ + sources/ffabstractbutton.h \ + sources/ffskin.h \ + sources/ffchartseries.h \ + sources/ffabstractwidget.h \ + sources/ffscrollinglabel.h \ + sources/ffviewcache.h \ + sources/ffstringcombobox.h \ + sources/ffdpad.h \ + sources/ffcolorcombobox.h \ + sources/ffcolorbutton.h \ + sources/ffstringbutton.h \ + sources/ffdpadbutton.h \ + sources/ffcolorchooser.h \ + sources/ffscrollarea.h \ + sources/ffscrollingradiobutton.h \ + sources/FFGui \ + sources/fflinecombobox.h \ + sources/ffabstractcombobox.h + +maemo { +DEFINES += MAEMO +} + +diablo_comp { +DEFINES += DIABLO_COMP +} + +deb { + message(Creating Makefile for DEB binary package) + target.path = debian/libffqw/usr/lib + headers.path = debian/libffqw-dev/usr/include + #INSTALLS = target +} +ELSE { + message(Creating Makefile for Linux) + headers.path = /usr/include + target.path = /usr/lib +} + +INSTALLS += headers target diff --git a/libffqw-1.0/sources/FFGui b/libffqw-1.0/sources/FFGui new file mode 100644 index 0000000..7178526 --- /dev/null +++ b/libffqw-1.0/sources/FFGui @@ -0,0 +1,10 @@ +#include "ffscrollingcheckbox.h" +#include "ffscrollingbutton.h" +#include "ffabstractbutton.h" +#include "ffscrollinglabel.h" +#include "ffcolorcombobox.h" +#include "fflinecombobox.h" +#include "ffstringcombobox.h" +#include "ffdpad.h" +#include "ffchart.h" +#include "ffscrollarea.h" diff --git a/libffqw-1.0/sources/ffabstractbutton.cpp b/libffqw-1.0/sources/ffabstractbutton.cpp new file mode 100644 index 0000000..f6a4e90 --- /dev/null +++ b/libffqw-1.0/sources/ffabstractbutton.cpp @@ -0,0 +1,762 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ + +/** + * @file ffabstractbutton.cpp + * @brief Implementation of the FFAbstractButton class. + * + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + * + * This widget have an inside rectangle (draw area). This rectangle is bounded by four margins (top, bottom, left, right). + * Function setMargins(int,int,int,int) provides interface to change this parameters. + */ + +#include "ffabstractbutton.h" + +/*Static FFViewCaches -improve performance*/ +FFViewCache* FFAbstractButton::topLeftNormal = NULL; +FFViewCache* FFAbstractButton::topRightNormal = NULL; +FFViewCache* FFAbstractButton::bottomLeftNormal = NULL; +FFViewCache* FFAbstractButton::bottomRightNormal = NULL; +FFViewCache* FFAbstractButton::topLeftClicked = NULL; +FFViewCache* FFAbstractButton::topRightClicked = NULL; +FFViewCache* FFAbstractButton::bottomLeftClicked = NULL; +FFViewCache* FFAbstractButton::bottomRightClicked = NULL; +/* static values + */ +bool FFAbstractButton::staticFFViewCacheUpdated = false; +int FFAbstractButton::minimumWidth = 0; +/** + * Constructs a FFAbstractButton with a parent. + * Set variable to initial values and set graphics used in widget. + */ +FFAbstractButton::FFAbstractButton(QWidget* parent) : + QAbstractButton(parent) +{ + init(); + +} + +/** + * A virtual destructor of FFAbstractButton. + */ +FFAbstractButton::~FFAbstractButton() +{ + ; +} + +/** + * Returns the left margin of inside drawing rectangle. + */ +int FFAbstractButton::leftMargin() +{ + return insideRect.leftMargin_; +} + +/** + * Returns the left margin of inside drawing rectangle. + */ +int FFAbstractButton::rightMargin() +{ + return insideRect.rightMargin_; +} + +/** + * Returns the top margin of inside drawing rectangle. + */ +int FFAbstractButton::topMargin() +{ + return insideRect.topMargin_; +} + +/** + * Returns the bottom margin of inside drawing rectangle. + */ +int FFAbstractButton::bottomMargin() +{ + return insideRect.bottomMargin_; +} + +/** + * Returns the horizontal spacing between any elements in inside rectangle. + */ +int FFAbstractButton::hSpacing() +{ + return insideRect.hSpacing_; +} + +/** + * Returns the vertical spacing between any elements in inside rectangle. + */ +int FFAbstractButton::vSpacing() +{ + return insideRect.vSpacing_; +} + +/** + * Sets left margin of elements on a button + * @param leftMargin left margin of elements on a button + */ +void FFAbstractButton::setLeftMargin(int leftMargin) +{ + insideRect.leftMargin_ = leftMargin; + insideRect.leftMarginTemp = leftMargin; + updateView(); + update(); +} + +/** + * Sets right margin of elements on a button + * @param rightMargin right margin of elements on a button + */ +void FFAbstractButton::setRightMargin(int rightMargin) +{ + insideRect.rightMargin_ = rightMargin; + insideRect.rightMarginTemp = rightMargin; + updateView(); + update(); +} + +/** + * Sets top margin of elements on a button + * @param topMargin top margin of elements on a button + */ +void FFAbstractButton::setTopMargin(int topMargin) +{ + insideRect.topMargin_ = topMargin; + insideRect.topMarginTemp = topMargin; + updateView(); + update(); +} + +/** + * Sets bottom margin of elements on a button + * @param bottomMargin bottom margin of elements on a button + */ +void FFAbstractButton::setBottomMargin(int bottomMargin) +{ + insideRect.bottomMargin_ = bottomMargin; + insideRect.bottomMarginTemp = bottomMargin; + updateView(); + update(); +} + +/** + * Provides interface to change this parameters. + * @param leftMargin set margin between left edge of widget to left edge of inside rectangle + * @param rightMargin set margin between right edge of widget to right edge of inside rectangle + * @param topMargin set margin between top edge of widget to top edge of inside rectangle + * @param bottomMargin set margin between bottom edge of widget to bottom edge of inside rectangle + */ +void FFAbstractButton::setMargins(int leftMargin, + int rightMargin, + int topMargin, + int bottomMargin) +{ + insideRect.setMargins(leftMargin, rightMargin, topMargin, bottomMargin); + updateView(); + update(); +} + +/** + * Sets horizontal spacing between any elements in inside rectangle. + * @param hSpacing Horizontal spacing + */ +void FFAbstractButton::setHSpacing(int hSpacing) +{ + insideRect.hSpacing_ = hSpacing; + insideRect.hSpacingTemp = hSpacing; + updateView(); +} + +/** + * Sets vertical spacing between any elements in inside rectangle. + * @param spacing Vertical spacing + */ +void FFAbstractButton::setVSpacing(int spacing) +{ + insideRect.vSpacing_ = spacing; + insideRect.vSpacingTemp = spacing; + updateView(); +} +/** + * Returns pen + */ +QPen FFAbstractButton::pen() +{ + return pen_; +} + +/** + * Sets pen + */ +void FFAbstractButton::setPen(QPen pen) +{ + pen_ = pen; +} +/** + * Repaints the view of this button. Overrides the virtual method from QWidget. + * If button is not clicked draw one type of pixmaps otherwise draw another. + * + * Composition of pixmaps: + * + * + *
topLeft topCenter topRight
centerLeft center centerRight
bottomLeft bottomCenter bottomRight
+ * @param event Contains all informations about event. + */ +void FFAbstractButton::paintEvent(QPaintEvent* event) +{ + Q_UNUSED(event) + + QPainter painter; + + painter.begin(this); + + if(!isClicked_) + { + painter.drawPixmap(QPoint(0, 0), topLeftNormal->pixmap()); + painter.drawPixmap(QPoint(topLeftNormal->defaultSize().width(), + 0), topCenterNormal->pixmap()); + painter.drawPixmap(QPoint(topLeftNormal->defaultSize().width() + + pixmapsPositionWidth_, 0), + topRightNormal->pixmap()); + painter.drawPixmap(QPoint(0, + topLeftNormal->defaultSize().height()), + centerLeftNormal->pixmap()); + painter.drawPixmap(QPoint(centerLeftNormal->defaultSize().width(), + topCenterNormal->defaultSize().height()), + centerNormal->pixmap()); + painter.drawPixmap(QPoint(centerLeftNormal->defaultSize().width() + + pixmapsPositionWidth_, + topRightNormal->defaultSize().height()), + centerRightNormal->pixmap()); + painter.drawPixmap(QPoint(0, + topLeftNormal->defaultSize().height() + + pixmapsPositionHeight_), + bottomLeftNormal->pixmap()); + painter.drawPixmap(QPoint(bottomLeftNormal->defaultSize().width(), + topCenterNormal->defaultSize().height() + + pixmapsPositionHeight_), + bottomCenterNormal->pixmap()); + painter.drawPixmap(QPoint(bottomLeftNormal->defaultSize().width() + + pixmapsPositionWidth_, + topRightNormal->defaultSize().height() + + pixmapsPositionHeight_), + bottomRightNormal->pixmap()); + } + else + { + painter.drawPixmap(QPoint(0, 0), topLeftClicked->pixmap()); + painter.drawPixmap(QPoint(topLeftClicked->defaultSize().width(), + 0), + topCenterClicked->pixmap()); + painter.drawPixmap(QPoint(topLeftClicked->defaultSize().width() + + pixmapsPositionWidth_, 0), + topRightClicked->pixmap()); + painter.drawPixmap(QPoint(0, + topLeftClicked->defaultSize().height()), + centerLeftClicked->pixmap()); + painter.drawPixmap(QPoint(centerLeftClicked->defaultSize().width(), + topCenterClicked->defaultSize().height()), + centerClicked->pixmap()); + painter.drawPixmap(QPoint(centerLeftClicked->defaultSize().width() + + pixmapsPositionWidth_, + topRightClicked->defaultSize().height()), + centerRightClicked->pixmap()); + painter.drawPixmap(QPoint(0, + topLeftClicked->defaultSize().height() + + pixmapsPositionHeight_), + bottomLeftClicked->pixmap()); + painter.drawPixmap(QPoint(bottomLeftClicked->defaultSize().width(), + topCenterClicked->defaultSize().height() + + pixmapsPositionHeight_), + bottomCenterClicked->pixmap()); + painter.drawPixmap(QPoint(bottomLeftClicked->defaultSize().width() + + pixmapsPositionWidth_, + topRightClicked->defaultSize().height() + + pixmapsPositionHeight_), + bottomRightClicked->pixmap()); + } + + paintIcon(&painter); + painter.end(); + +} + +/** + * Update button view after changing size of the widget. + * Update size of all pixmap which need it (without corners) + * @param event Contains all informations about event. + */ +void FFAbstractButton::resizeEvent(QResizeEvent* event) +{ + pixmapsPositionWidth_ = event->size().width() + - centerLeftNormal->defaultSize().width() + - centerRightNormal->defaultSize().width(); + + pixmapsPositionHeight_ = event->size().height() + - topCenterNormal->defaultSize().height() + - bottomCenterNormal->defaultSize().height(); + + if(event->oldSize().isValid()) + { + insideRect.scaleMargins(event->oldSize(), event->size()); + } + updateView(); + + if(!icon().isNull()) + { + QRect rect(0 + leftMargin(), + 0 + topMargin(), + geometry().width() - rightMargin() - leftMargin() + - 2 * insideRect.leftIndent_, + geometry().height() - bottomMargin() - topMargin()); + + iconSpace = icon().pixmap(rect.size()).size().width(); + } + else + { + iconSpace = 0; + } +} + +/** + * Initiates an object of FFAbstractgButton. Sets all needed fields. It is called by all constructors. + */ +void FFAbstractButton::init() +{ + + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum); + path = BUTTON_PATH; + + isClicked_ = false; + iconSpace = 0; + + iconAlignment_ = DEFAULT_ICON_ALIGNMENT; + + if(NULL == topLeftNormal) + { + topLeftNormal = new FFViewCache; + } + + topCenterNormal = new FFViewCache; + + if(NULL == topRightNormal) + { + topRightNormal = new FFViewCache; + } + + centerLeftNormal = new FFViewCache; + centerNormal = new FFViewCache; + centerRightNormal = new FFViewCache; + + if(NULL == bottomLeftNormal) + { + bottomLeftNormal = new FFViewCache; + } + + bottomCenterNormal = new FFViewCache; + + if(NULL == bottomRightNormal) + { + bottomRightNormal = new FFViewCache; + } + + if(NULL == topLeftClicked) + { + topLeftClicked = new FFViewCache; + } + + topCenterClicked = new FFViewCache; + + if(NULL == topRightClicked) + { + topRightClicked = new FFViewCache; + } + + centerLeftClicked = new FFViewCache; + centerClicked = new FFViewCache; + centerRightClicked = new FFViewCache; + + if(NULL == bottomLeftClicked) + { + bottomLeftClicked = new FFViewCache; + } + + bottomCenterClicked = new FFViewCache; + + if(NULL == bottomRightClicked) + { + bottomRightClicked = new FFViewCache; + } + + setSkin(); +} +/** + * setSkin initiate FFViewCaches, update their size to default and set minimum width and height of widget + */ +void FFAbstractButton::setSkin() +{ + +// QSize sizeTmp = QSize(width(), height()); + + if(!topLeftNormal->isValid()) + { + topLeftNormal->init(path + "_topleft_normal.svg"); + } + + topCenterNormal->init(path + "_topcenter_normal.svg"); + + if(!topRightNormal->isValid()) + { + topRightNormal->init(path + "_topright_normal.svg"); + } + + centerLeftNormal->init(path + "_centerleft_normal.svg"); + centerNormal->init(path + "_center_normal.svg"); + centerRightNormal->init(path + "_centerright_normal.svg"); + + if(!bottomLeftNormal->isValid()) + { + bottomLeftNormal->init(path + "_bottomleft_normal.svg"); + } + + bottomCenterNormal->init(path + "_bottomcenter_normal.svg"); + + if(!bottomRightNormal->isValid()) + { + bottomRightNormal->init(path + "_bottomright_normal.svg"); + } + + if(!topLeftClicked->isValid()) + { + topLeftClicked->init(path + "_topleft_clicked.svg"); + } + + topCenterClicked->init(path + "_topcenter_clicked.svg"); + + if(!topRightClicked->isValid()) + { + topRightClicked->init(path + "_topright_clicked.svg"); + } + + centerLeftClicked->init(path + "_centerleft_clicked.svg"); + centerClicked->init(path + "_center_clicked.svg"); + centerRightClicked->init(path + "_centerright_clicked.svg"); + + if(!bottomLeftClicked->isValid()) + { + bottomLeftClicked->init(path + "_bottomleft_clicked.svg"); + } + + bottomCenterClicked->init(path + "_bottomcenter_clicked.svg"); + + if(!bottomRightClicked->isValid()) + { + bottomRightClicked->init(path + "_bottomright_clicked.svg"); + } + + pixmapsPositionWidth_ = centerNormal->defaultSize().width(); + pixmapsPositionHeight_ = centerNormal->defaultSize().height(); + + if(!staticFFViewCacheUpdated) + { + //Update view once after skin was set + topLeftNormal->updateView(topLeftNormal->defaultSize()); + topRightNormal->updateView(topRightNormal->defaultSize()); + bottomLeftNormal->updateView(bottomLeftNormal->defaultSize()); + bottomRightNormal->updateView(bottomRightNormal->defaultSize()); + + topLeftClicked->updateView(topLeftClicked->defaultSize()); + topRightClicked->updateView(topRightClicked->defaultSize()); + bottomLeftClicked->updateView(bottomLeftClicked->defaultSize()); + bottomRightClicked->updateView(bottomRightClicked->defaultSize()); + + minimumWidth + = qMax(topLeftNormal->defaultSize().width() + + topRightNormal->defaultSize().width(), + bottomLeftNormal->defaultSize().width() + + bottomRightNormal->defaultSize().width()); + + staticFFViewCacheUpdated = true; + } + + pixmapsPositionWidth_ = centerNormal->defaultSize().width(); + pixmapsPositionHeight_ = centerNormal->defaultSize().height(); + + insideRect.leftIndent_ = topLeftNormal->defaultSize().width(); + + setMinimumHeight(DEFAULT_BUTTON_HEIGHT); + setMinimumWidth(2 * minimumWidth); +} + +/** + * Support mouse press event. + * @param event Contains all informations about event. + */ +void FFAbstractButton::mousePressEvent(QMouseEvent* event) +{ + Q_UNUSED(event) + isClicked_ = true; // isClicked contains boolean true information of mouse button pressed + update(); +} + +/** + * Support mouse release event. + * @param event Contains all informations about event. + */ +void FFAbstractButton::mouseReleaseEvent(QMouseEvent *event) +{ + Q_UNUSED(event) + + if(isClicked_) + { + if(!signalsBlocked()) + { + emit clicked(); + } + } + + isClicked_ = false; // isClicked contains boolean false information of mouse button unpressed + update(); +} + +/** + * Recalculate geometry of elements on button + */ +void FFAbstractButton::updateView() +{ + if(pixmapsPositionHeight_ <= 0) + { + pixmapsPositionHeight_ = 1; + } + //Update view all the time resize event appear: + topCenterNormal->updateView(QSize(pixmapsPositionWidth_, + topCenterNormal->defaultSize().height())); + bottomCenterNormal->updateView(QSize(pixmapsPositionWidth_, + bottomCenterNormal->defaultSize().height())); + + centerLeftNormal->updateView(QSize(centerLeftNormal->defaultSize().width(), + pixmapsPositionHeight_)); + centerRightNormal->updateView(QSize(centerRightNormal->defaultSize().width(), + pixmapsPositionHeight_)); + centerNormal->updateView(QSize(pixmapsPositionWidth_, + pixmapsPositionHeight_)); + + topCenterClicked->updateView(QSize(pixmapsPositionWidth_, + topCenterClicked->defaultSize().height())); + bottomCenterClicked->updateView(QSize(pixmapsPositionWidth_, + bottomCenterClicked->defaultSize().height())); + centerLeftClicked->updateView(QSize(centerLeftClicked->defaultSize().width(), + pixmapsPositionHeight_)); + centerRightClicked->updateView(QSize(centerRightClicked->defaultSize().width(), + pixmapsPositionHeight_)); + centerClicked->updateView(QSize(pixmapsPositionWidth_, + pixmapsPositionHeight_)); +} +/** + * Draws icon on button + */ +void FFAbstractButton::paintIcon(QPainter* painter) +{ + int move = 0; + if(iconAlignment_ == Qt::AlignLeft) + { + move = insideRect.leftIndent_; + } + else if(iconAlignment_ == Qt::AlignRight) + { + move = -insideRect.leftIndent_; + } + else + { + move = 0; + } + //if icon was set paint it + if(!icon().isNull()) + { + QRect rect(0 + leftMargin() + move, + 0 + topMargin(), + geometry().width() - rightMargin() - leftMargin(), + geometry().height() - bottomMargin() - topMargin()); + + //paint icon in button center + icon().paint(painter, + rect, + iconAlignment_, + QIcon::Normal, + QIcon::Off); + } + +} + +/** + * Initiate FFAbstractButtonPrivate + */ +FFAbstractButtonPrivate::FFAbstractButtonPrivate() +{ + setMargins(0.0, 0.0, 0.0, 0.0); + hSpacing_ = 0; + hSpacingTemp = 0; + vSpacing_ = 0; + vSpacingTemp = 0; + leftIndent_ = 0; +} + +/** + * Dectructor of FFAbstractButtonPrivate + */ +FFAbstractButtonPrivate::~FFAbstractButtonPrivate() +{ + ; +} + +/** + * scaleMargins scale margins eg. when resize event appear + * @param oldSize before eg. resize event + * @param newSize actual size after eg. resize event + */ +void FFAbstractButtonPrivate::scaleMargins(QSize oldSize, QSize newSize) +{ + float widthProportion = (float)newSize.width() / (float)oldSize.width(); + float heightProportion = (float)newSize.height() + / (float)oldSize.height(); + + leftMarginTemp *= widthProportion; + rightMarginTemp *= widthProportion; + topMarginTemp *= heightProportion; + bottomMarginTemp *= heightProportion; + hSpacingTemp *= heightProportion; + vSpacingTemp *= widthProportion; + + leftMargin_ = leftMarginTemp; + rightMargin_ = rightMarginTemp; + topMargin_ = topMarginTemp; + bottomMargin_ = bottomMarginTemp; + hSpacing_ = hSpacingTemp; + vSpacing_ = vSpacingTemp; +} + +/** + * setMargins set left, right, top and bottom margins + * @param leftMargin Size of left margin + * @param rightMargin Size of right margin + * @param topMargin Size of top margin + * @param bottomMargin Size of bottom margin + */ +void FFAbstractButtonPrivate::setMargins(int leftMargin, + int rightMargin, + int topMargin, + int bottomMargin) +{ + leftMargin_ = leftMargin; + rightMargin_ = rightMargin; + topMargin_ = topMargin; + bottomMargin_ = bottomMargin; + + leftMarginTemp = leftMargin; + rightMarginTemp = rightMargin; + topMarginTemp = topMargin; + bottomMarginTemp = bottomMargin; +} +/** + * Returns alignment of icon + */ +Qt::Alignment FFAbstractButton::iconAlignment() +{ + return iconAlignment_; +} +/** + * Sets alignment of icon + * @param iconAlignment new alignment of icon + */ +void FFAbstractButton::setIconAlignment(Qt::Alignment iconAlignment) +{ + this->iconAlignment_ = iconAlignment; +} +/** + * Returns default width of image used as button's corner + */ +int FFAbstractButton::indent() +{ + return insideRect.leftIndent_; +} + +/** + \fn void FFAbstractButton::clicked() + + This signal is emitted when the button will be clicked. + */ diff --git a/libffqw-1.0/sources/ffabstractbutton.h b/libffqw-1.0/sources/ffabstractbutton.h new file mode 100644 index 0000000..91b2b15 --- /dev/null +++ b/libffqw-1.0/sources/ffabstractbutton.h @@ -0,0 +1,222 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffabstractbutton.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + */ + +#ifndef FFABSTRACTBUTTON_H +#define FFABSTRACTBUTTON_H + +#include "ffviewcache.h" +#include "ffscrollinglabel.h" +#include +#include +#include + + +static const QString BUTTON_PATH= ":/standard/button"; /// + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffabstractcombobox.cpp + * @brief Implementation of the FFAbstractComboBox and FFComboPopUp class. + * + * @author ComArch S.A. + * @date 2009.10.09 + * @version 1.0 + * + * This widget has activator(to open popup window) and popup window(to select item) + * FFAbstractComboBox and FFComboPopUp are friend classes in both directions + */ + +#include "ffabstractcombobox.h" + +/** + * Rounds argument up. + * @param var is an argument to round up + * @return value of rounded up argument + */ + +float roundUp(float var) +{ + if(0 > ((int)var - var )) + { + return (int)var + 1; + } + else + { + return (int)var; + } +} + +/** + * Constructs a FFAbstractButton with a parent. + * Sets variable to initial values. + */ +FFAbstractComboBox::FFAbstractComboBox(FFAbstractButton* activator, QWidget* parent): + QWidget(parent) +{ + cols_ = 1; + + //sets activator + activator_ = activator; + activator_->setObjectName("Activator"); + + //sets layout of combobx + mainLayout = new QGridLayout(); + mainLayout->setMargin(0); + mainLayout->setSpacing(0); + mainLayout->addWidget(activator_); + setLayout(mainLayout); + + //sets popup + popUp = new FFComboPopUp(this); + popUp->setWindowFlags(Qt::SplashScreen); + popUp->setGeometry(QApplication::desktop()->geometry()); + popUp->hide(); + popUp->setWindowModality(Qt::WindowModal); + + setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); + + //connects + connect(activator_, SIGNAL(clicked()), popUp, SLOT(exec())); + connect(this, SIGNAL(reset()),popUp,SLOT(recreatePopUp())); + connect(this, SIGNAL(itemsChanged(FFAbstractButton*)),popUp,SLOT(registerNewItem(FFAbstractButton*))); +} +/** + * A virtual destructor of FFAbstractButton. + */ +FFAbstractComboBox::~FFAbstractComboBox() +{ + ; +} + +/** + * Removes item from combobox + * @param index is a index of item + */ +void FFAbstractComboBox::removeItem(int index) +{ + if(items_.size()>index) + { + disconnect(items_.at(index)); + delete items_.takeAt(index); + } + emit reset(); +} +/** + * Calls setActivatorSpecs and emits signals activated(QVariant),activated(int) + * @param index is a index of item + */ +void FFAbstractComboBox::setCurrentItem(int index) +{ + if(items_.size()>index) + { + setActivatorSpecs(items_.at(index)); + if(!signalsBlocked()) + { + emit activated(activatorSpecs()); + emit activated(index); + } + } +} +/** + * Returns pointer to activator + */ +FFAbstractButton* FFAbstractComboBox::activator() +{ + return activator_; +} +/** + * Returns number of columns + */ +int FFAbstractComboBox::cols() +{ + return cols_; +} +/** + * Returns list of items + */ +QList FFAbstractComboBox::items() +{ + return items_; +} +/** + * Returns popup's layout spacing + */ +int FFAbstractComboBox::spacing() +{ + return popUp->scrollAreaLayout->spacing(); +} +/** + * Sets columns number + * @param cols a number of columns + */ +void FFAbstractComboBox::setCols(int cols) +{ + cols_ = cols; + emit reset(); +} +/** + * Sets popup's layout spacing + * @param spacing a size of spacing + */ +void FFAbstractComboBox::setSpacing(int spacing) +{ + popUp->scrollAreaLayout->setSpacing(spacing); + emit reset(); +} +/** + * Adds item to combobox + * @param item a pointer to adding item + * @param autoRecreate defines if layout should be recreated automatically + */ +void FFAbstractComboBox::insertItem(FFAbstractButton* item, bool autoRecreate) +{ + items_.append(item); + emit itemsChanged(item); + + if(autoRecreate) + { + emit reset(); + } +} + +/** + * Constructs a FFComboPopUp with a parent. + * Sets variable to initial values. + */ +FFComboPopUp::FFComboPopUp(QWidget* parent) : QDialog(parent) +{ + + parentCB = dynamic_cast(parent); + //sets popup window's layout + popUpLayout = new QGridLayout(); + popUpLayout->setMargin(0); + popUpLayout->setSpacing(0); + + //sets scrollarea and scrollarea's widget + scrollArea = new FFScrollArea(); + scrollArea->setWidgetResizable(true); + + popUpLayout->addWidget(scrollArea,0,0); + setLayout(popUpLayout); + + scrollAreaLayout = new QGridLayout(); + scrollAreaLayout->setSpacing(5); + scrollAreaLayout->setMargin(0); + + scrollAreaWidget = new QWidget(); + scrollAreaWidget->setStyleSheet("background-color:black;"); + + scrollAreaWidget->setLayout(scrollAreaLayout); + scrollArea->setWidget(scrollAreaWidget); + + //sets back button + backButton = new FFAbstractButton; + backButton->setMargins(0,0,5,5); + backButton->setIconAlignment(Qt::AlignRight); + backButton->setIcon(QIcon(QPixmap(":/standard/combo_colorarrow.svg"))); + scrollAreaLayout->addWidget(backButton,0,0,1,parentCB->cols_); + + //connect + connect(backButton,SIGNAL(clicked()),this,SLOT(reject())); +} +/** + * Serves show event. Override method from mother class. + */ +void FFComboPopUp::showEvent(QShowEvent* event) +{ + // The calculation of the size of the window so that it occupied little space as possible. + + int itemsHeight = 0; + + // for each row + for(int i=0; iitems_.size()/(float)parentCB->cols_); ++i) + { + // height of an element + itemsHeight += parentCB->items_.at(i)->minimumHeight(); + + //height of an spacing + itemsHeight += scrollAreaLayout->spacing(); + } + itemsHeight += backButton->minimumHeight(); + + if(itemsHeight > QApplication::desktop()->geometry().height()) + itemsHeight = QApplication::desktop()->geometry().height(); + + setGeometry(0,0,QApplication::desktop()->geometry().width(),itemsHeight); + + QDialog::showEvent(event); + +} +/** + * Refreshes popup layout at view event + */ +void FFComboPopUp::recreatePopUp() +{ + // Deleting old objects + QLayoutItem *child; + while((child = scrollAreaLayout->takeAt(0)) != 0) + { + delete child; + } + + // Arranging objects on the popup + scrollAreaLayout->addWidget(backButton,0,0,1,parentCB->cols_); + for(int i=0, cols=0, rows=1; iitems_.size();++i,++cols) + { + if(cols==parentCB->cols_) + { + ++rows; + } + cols%=parentCB->cols_; + scrollAreaLayout->addWidget(parentCB->items_.at(i),rows,cols); + } + + // Force refresh FFScrollArea (this line exist because FFScrollArea have a little imperfection - event filter problem) + scrollArea->setWidget(scrollAreaWidget); +} +/** + * Connects new item signal clicked to actual widget's slot accept + */ +void FFComboPopUp::registerNewItem(FFAbstractButton* newItem) +{ + connect(newItem,SIGNAL(clicked()),this,SLOT(accept())); +} +/** + * Calls setCurrentItem with widget index + */ +void FFComboPopUp::accept() +{ + parentCB->setCurrentItem(scrollAreaLayout->indexOf(dynamic_cast(sender()))-1); + QDialog::accept(); +} + +/** + \fn void FFAbstractComboBox::reset() + *This signal is emitted when is necessary to refresh layout of popup window. + */ + +/** + \fn void FFAbstractComboBox::activated(QVariant spec) + *This signal is emitted when option on combobox was chosen. + *@param spec contains specific chosen value + */ + +/** + \fn void FFAbstractComboBox::activated(int index) + *This signal is emitted when option on combobox was chosen. + *@param index contains index of chosen item + */ + + +/** + \fn void FFComboPopUp::selected(FFAbstractButton* selectedButton) + *This signal is emitted when item was selected + *@param selectedButton pointer to selected item + */ diff --git a/libffqw-1.0/sources/ffabstractcombobox.h b/libffqw-1.0/sources/ffabstractcombobox.h new file mode 100644 index 0000000..bb896e0 --- /dev/null +++ b/libffqw-1.0/sources/ffabstractcombobox.h @@ -0,0 +1,190 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ + +/** + * @file ffabstractcombobox.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.10.9 + * @version 1.0 + */ + +#ifndef FFABSTRACTCOMBOBOX_H +#define FFABSTRACTCOMBOBOX_H + +#include +#include +#include +#include +#include +#include + +#include "ffabstractbutton.h" +#include "ffscrollarea.h" + +class FFComboPopUp; + +/** + * @author ComArch S.A. + * @date 2009.10.09 + * @version 1.0 + * + * @brief A class inherited by specific comboboxes + */ +class FFAbstractComboBox : public QWidget +{ + Q_OBJECT + friend class FFComboPopUp; + +public: + FFAbstractComboBox(FFAbstractButton* activator, QWidget* parent = 0); + virtual ~FFAbstractComboBox(); + + virtual void addItem(QVariant item) = 0; + virtual void removeItem(int index); + virtual void setCurrentItem(int index); + + FFAbstractButton* activator(); + int cols(); + QList items(); + QPen pen(); + int spacing(); + + void setCols(int cols); + void setSpacing(int spacing); + +protected: + FFAbstractButton* activator_; ///< activator shows actual combobox's value and activate popup window + QPen pen_; ///< contain actual pen + QList items_; /// + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +#include "ffabstractwidget.h" + +/** + * @file ffabstractwidget.cpp + * @brief Implementation of the FFAbstractWidget + * + * @author ComArch S.A. + * @date 2009.07.31 + * @version 1.0 + */ + +/** + * Constructs an FFAbstractWidget with a parent. + */ +FFAbstractWidget::FFAbstractWidget(QWidget* parent) + : QWidget(parent) +{ + +} + +/** + * A virtual destructor + */ +FFAbstractWidget::~FFAbstractWidget() +{ + +} diff --git a/libffqw-1.0/sources/ffabstractwidget.h b/libffqw-1.0/sources/ffabstractwidget.h new file mode 100644 index 0000000..cdc6dbf --- /dev/null +++ b/libffqw-1.0/sources/ffabstractwidget.h @@ -0,0 +1,243 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffabstractwidget.h + * @brief contains all required declarations and basic utilities functions + * + * @author ComArch S.A. + * @date 2009.07.31 + * @version 1.0 + */ +#ifndef FFABSTRACTWIDGET_H_ +#define FFABSTRACTWIDGET_H_ + +#include + +class FFAbstractWidget; +typedef FFAbstractWidget FF; + +/** + * Defines default title text color for button + */ +const QColor FF_TITLE_COLOR = QColor(14,221,26); +/** + * Defines default description text color for button + */ +const QColor FF_DESCRIPTION_COLOR = QColor(100,100,100); +/** + * Defines default button height + */ +const int DEFAULT_BUTTON_HEIGHT = 65; +/** + * Defines default combo button height + */ +const int DEFAULT_COMBO_HEIGHT = 65; +/** + * Defines color for legend widget used on FFChart + */ +const QColor DEFAULT_LEGEND_BACKGROUND_COLOR = QColor(26,26,26); +/** + * Defines opacity for legend widget used on FFChart + */ +const qreal DEFAULT_LEGEND_BACKGROUND_OPACITY = 0.8; + +/** + * Defines default font name for widget title + */ +const QString FONT_TITLE_DEF = "Arial"; +/** + * Defines default font name for widget description + */ +const QString FONT_TEXT_DEF = "Arial"; + +/** + * Defines title text color for scrolling label + */ +const QColor COLOR_TITLE_DEF = QColor(50, 255, 50); +/** + * Defines description text color for scrolling label + */ +const QColor COLOR_TEXT_DEF = QColor(50, 50, 255); +/** + * Defines bright background color + */ +const QColor COLOR_BRIGHT_BACKGROUND_DEF = QColor(250, 255, 250); +/** + * Defines dark background color + */ +const QColor COLOR_DARK_BACKGROUND_DEF = QColor(250, 255, 250); +/** + * Defines bright foreground color + */ +const QColor COLOR_BRIGHT_FOREGROUND_DEF = QColor(250, 255, 250); +/** + * Defines dark foreground color + */ +const QColor COLOR_DARK_FOREGROUND_DEF = QColor(250, 255, 250); + +/** + * @author ComArch S.A. + * @date 2009.07.30 + * @version 1.0 + * + * @brief A parent-class for all widgets included in FFQW Library + */ + +class FFAbstractWidget : public QWidget +{ + Q_OBJECT + +public: + FFAbstractWidget(QWidget* parent = 0); + virtual ~FFAbstractWidget(); + +/** + * describes standard FF widgets' sizes + */ +enum Size +{ + SIZE_TINY = 0x0001, + SIZE_SMALL = 0x0002, + SIZE_NORMAL = 0x0004, + SIZE_LARGE = 0x0008, + SIZE_HUGE = 0x0010 +}; + +/** + * describes standard FF widgets' fonts + */ +enum Font +{ + FONT_TITLE = 0x0020, FONT_TEXT = 0x0040 +}; + +/** + * describes standard FF widgets' colors + */ +enum Color +{ + COLOR_TITLE = 0x0080, + COLOR_TEXT = 0x0100, + COLOR_BRIGHT_BACKGROUND = 0x0200, + COLOR_DARK_BACKGROUND = 0x0400, + COLOR_BRIGHT_FOREGROUND = 0x0800, + COLOR_DARK_FOREGROUND = 0x1000 +}; + +/** + * defines standard FF widgets' alignment + */ +enum Alignment +{ + ALIGNMENT_LEFT = 0x2000, + ALIGNMENT_RIGHT = 0x4000, + ALIGNMENT_CENTER = 0x8000 +}; + +/** + * defines standard FF widgets' scrolling type + */ +enum Scroll +{ + SCROLL_SIDE_TO_SIDE = 0x0001 +}; + +}; +/** + * Mask for checking size + */ +const int SIZE_MASK = FF::SIZE_TINY | + FF::SIZE_SMALL | + FF::SIZE_NORMAL | + FF::SIZE_LARGE | + FF::SIZE_HUGE; +/** + * Mask for checking font type + */ +const int FONT_MASK = FF::FONT_TITLE | FF::FONT_TEXT; + +/** + * Mask for checking color + */ +const int COLOR_MASK = FF::COLOR_TITLE | + FF::COLOR_BRIGHT_BACKGROUND | + FF::COLOR_DARK_BACKGROUND | + FF::COLOR_BRIGHT_FOREGROUND | + FF::COLOR_DARK_FOREGROUND; +/** + * Mask for checking alignment + */ +const int ALIGNMENT_MASK = FF::ALIGNMENT_LEFT | FF::ALIGNMENT_RIGHT | FF::ALIGNMENT_CENTER; + +#endif // FFABSTRACTWIDGET_H diff --git a/libffqw-1.0/sources/ffchart.cpp b/libffqw-1.0/sources/ffchart.cpp new file mode 100644 index 0000000..ca0f7ff --- /dev/null +++ b/libffqw-1.0/sources/ffchart.cpp @@ -0,0 +1,347 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchart.cpp + * @brief Implementation of the FFChartScene class. + * + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + */ + +#include "ffchart.h" + + +/** + * Constructs a FFChart with a parent. + */ +FFChart::FFChart(QWidget* parent) : + FFAbstractWidget(parent) +{ + init(); +} + +/** + * A virtual destructor. + */ +FFChart::~FFChart() +{ + +} + +/** + * Initiates an object of FFChart. Sets all needed fields and connections. + * It is called by all constructors. + */ +void FFChart::init() +{ + //sets size policy + setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); + + + // creates needed objects + view = new QGraphicsView(this); + scene = new FFChartScene(this); + legend = new FFChartLegend(this); + + //sets default values + autoSort_ = true; + autoValidate_ = true; + + //sets view + view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + view->setScene(scene); + //necessary with our librray in Qt 4.6 +#ifndef DIABLO_COMP + view->setOptimizationFlag(QGraphicsView::IndirectPainting); +#endif + + //sets legend size + legend->setGeometry(width() / 2, 0, width() / 2, height()); + //hides legend + legend->hide(); + + + + view->installEventFilter(this); + + //connects + connect(this,SIGNAL(seriesChanged(QList)),scene,SLOT(seriesChanged(QList))); + connect(legend, SIGNAL(updateSeries()), scene, SLOT(update())); +} + +/** + * Adds new series that will be drawn on the chart. + */ +void FFChart::addSeries(FFChartSeries* series) +{ + + //series validation + if(autoValidate_) + { + series->validate(); + } + //series' point sorting + if(autoSort_) + { + series->sort(); + } + + + series->pen()->setCosmetic(true); + + //add series to sies list and legend + series_.append(series); + + legend->addSeries(series); + + //updates scene + scene->update(); + + + emit seriesChanged(series_); +} + +/** + * Removes series indicated by given pointer. + */ +void FFChart::removeSeries(FFChartSeries* series) +{ + //searches for series and remove it + for(int i = 0; i < series_.size(); ++i) + { + if(series_[i] == series) + { + legend->deleteSeries(series); + series_.removeAt(i); + } + } + + //update scene + scene->update(); + + emit seriesChanged(series_); +} + +/** + * Removes all series. + */ +void FFChart::removeSeries() +{ + //removes series + int num = series_.size(); + for(int i = 0; i < num; ++i) + { + legend->deleteSeries(series_.at(0)); + series_.removeAt(0); + } + //updates scene + scene->update(); + + emit seriesChanged(series_); +} + +/** + * Returns a list with pointers to all series contained in the chart. + */ +QList FFChart::series() +{ + return series_; +} + +/** + * Returns pointer to series with given name. + * @return pointer to the looking series or NULL if series is not found + */ +FFChartSeries* FFChart::series(QString name) +{ + //return pointer to first added series with given name + + for(int i=0; iname() == name) + { + return series_[i]; + } + } + //If found nothing NULL is returned + return NULL; +} + +/** + * Turns on/off auto-sorting on series. If it is on then each newly added series + * will be sorted by 'x' values. + */ +void FFChart::setAutoSort(const bool& autoSort) +{ + autoSort_ = autoSort; +} + +/** + * Turns on/off auto-validating on series. If it is on then each newly added + * series will be cleaned with the same points. + */ +void FFChart::setAutoValidate(const bool& autoValidate) +{ + autoValidate_ = autoValidate; +} + +/** + * Returns true if auto-sorting is enabled, otherwise false. + */ +bool FFChart::isAutoSortEnabled() const +{ + return autoSort_; +} + +/** + * Returns true if auto-validating is enabled, otherwise false. + */ +bool FFChart::isAutoValidateEnabled() const +{ + return autoValidate_; +} + +/** + * Sets object that will be responsible for managing with events sent to + * the FFChart. + */ +void FFChart::installEventFilter(QObject* object) +{ + view->installEventFilter(object); +} + +/** + * Slot that zooms in the current chart into a rectangle which is smaller by + * a given ratio. + */ +void FFChart::zoomIn(qreal ratio) +{ + scene->zoomIn(ratio); +} + +/** + * Slot that zooms out the current chart into a rectangle which is larger by + * a given ratio. + */ +void FFChart::zoomOut(qreal ratio) +{ + scene->zoomOut(ratio); +} + +/** + * Moves the chart by given vector. + */ +void FFChart::moveBy(QPointF point) +{ + scene->moveBy(point.toPoint()); +} + +/** + * Overridden virtual method. It is responsible for managing with resize events. + */ +void FFChart::resizeEvent(QResizeEvent* event) +{ + Q_UNUSED(event) + view->resize(size()); + scene->setSceneRect(QRectF(0,0,event->size().width(),event->size().height())); + legend->setGeometry(width() / 2, 0, width() / 2, height()); + + QWidget::resizeEvent(event); +} + +/** + * Toggles the legend. If it is visible, this method makes it hidden and + * vice versa. + */ +void FFChart::showLegend() +{ + if(legend->isVisible()) + { + legend->hide(); + this->repaint(); + } + else + { + legend->show(); + this->repaint(); + } +} + +/*! + * \fn void FFChart::seriesChanged(QList); + * + * This Signal is emitted when the set of series was changed. + */ diff --git a/libffqw-1.0/sources/ffchart.h b/libffqw-1.0/sources/ffchart.h new file mode 100644 index 0000000..5114312 --- /dev/null +++ b/libffqw-1.0/sources/ffchart.h @@ -0,0 +1,172 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchart.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + */ + +#ifndef FFCHART_H +#define FFCHART_H + +#include +#include +#include +#include +#include + +#ifndef MAEMO +#include +#endif + +#include "ffabstractwidget.h" +#include "ffchartbutton.h" +#include "ffchartscene.h" +#include "ffchartseries.h" +#include "ffchartlegend.h" + + +/** + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + * + * @brief A good looking widget to visualize simple data series. + */ +#ifdef MAEMO + +class FFChart : public FFAbstractWidget +{ + Q_OBJECT + +#else + +class QDESIGNER_WIDGET_EXPORT FFChart : public FFAbstractWidget +{ + Q_OBJECT + Q_PROPERTY(bool autosortSeries READ isAutoSortEnabled WRITE setAutoSort) + Q_PROPERTY(bool autoValidateSeries READ isAutoValidateEnabled WRITE setAutoValidate) + +#endif + +public: + FFChart(QWidget* parent = 0); + virtual ~FFChart(); + + void addSeries(FFChartSeries* series); + void removeSeries(FFChartSeries* series); + void removeSeries(); + + QList series(); + FFChartSeries* series(QString name); + + void setAutoSort(const bool& autoSort); + void setAutoValidate(const bool& autoValidate); + + bool isAutoSortEnabled() const; + bool isAutoValidateEnabled() const; + void installEventFilter(QObject* object); + +public slots: + void zoomIn(qreal ratio); + void zoomOut(qreal ratio); + void moveBy(QPointF point); + +protected: + void resizeEvent(QResizeEvent* event); + +private: + QGraphicsView* view; ///< view of ffChart + FFChartScene* scene; ///< scene of FFchart + FFChartLegend* legend; ///< legend of FFChart + + QList series_; /// series_); + +public slots: + void showLegend(); +}; + +#endif // FFCHART_H diff --git a/libffqw-1.0/sources/ffchartbutton.cpp b/libffqw-1.0/sources/ffchartbutton.cpp new file mode 100644 index 0000000..583fe72 --- /dev/null +++ b/libffqw-1.0/sources/ffchartbutton.cpp @@ -0,0 +1,333 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartbutton.cpp + * @brief Implementation of the FFChartButton class. + * + * @author ComArch S.A. + * @date 2009.09.03 + * @version 1.0 + * Extend QGraphicsSvgItem to easy use 1 or 2 image and added functionality + * to decrease and increase item after click + */ + +#include "ffchartbutton.h" + +/** + * Constructs a FFChartButton with a parent. + * Set variables to initial values. + */ +FFChartButton::FFChartButton(QGraphicsItem* parent) : + QGraphicsSvgItem(parent) +{ + init(); +} + +/** + * A virtual destructor of FFChartButton. + */ +FFChartButton::~FFChartButton() +{ + ; +} + +/** + * Set variables to initial values. + */ +void FFChartButton::init() +{ + //sets default values + state = false; //usefull when changing beetwen 2 images, it remember click state - what image should be display + twoImageON = false; //state to store if the button have 2 images + startedTimeLine = false; //state to store if time line ends + + sizeRatio = 1; + frameRange_ = DEFAULT_FRAME_RANGE; + duration_ = DEFAULT_DURATION_TIME; + zoomRatio_ = DEFAULT_ZOOM_RATIO; + scaleWidth = 1; + scaleHeight = 1; + + image = new FFViewCache; + image2 = new FFViewCache; + + //sets animation's parameters + animation = new QTimeLine(duration_, this); + animation->setFrameRange(0, frameRange_); + animation->setUpdateInterval(duration_ / frameRange_); + + //connects + connect(animation, SIGNAL(frameChanged(int)), this, SLOT(tick(int))); + connect(animation, SIGNAL(finished()), this, SLOT(animationFinished())); +} + +/** + * Function responsible for animation (zooming) + * @param frame Number of the frame + */ +void FFChartButton::tick(int frame) +{ + + qreal width = this->boundingRect().width(); + qreal height = this->boundingRect().height(); + qreal ratio = 1; + QGraphicsSvgItem::scale(1 / sizeRatio, 1 / sizeRatio); + + //Setting scaling ratio + //first part of animation + if(frame <= frameRange_ / 2) + { + ratio = ((zoomRatio_ - 1) * (frame)) / (frameRange_ / 2) + 1; + } + //second part of animation + else if(frame <= frameRange_) + { + ratio = (zoomRatio_ - 1) * (frameRange_ - frame) / (frameRange_ + / 2) + 1; + } + + sizeRatio = ratio; + //change scale and posiotion of button + QGraphicsSvgItem::scale(ratio, ratio); + this->setPos(startingPosition.x() - ((ratio * width - width) + * scaleWidth / 2), startingPosition.y() - ((ratio + * height - height) * scaleHeight / 2)); +} + +/** + * Function to handle situation when animation reach end + */ +void FFChartButton::animationFinished() +{ + animation->stop(); + sizeRatio = 1; + startedTimeLine = false; +} + +/** + * Set image of item + * @param path Path to image + */ +void FFChartButton::setImage(QString path) +{ + image->init(path + ".svg"); + image->updateView(image->defaultSize()); + setSharedRenderer(image->renderer()); + + twoImageON = false; +} + +/** + * Set images of item + * @param path Path to first image + * @param path2 Path to second image + */ +void FFChartButton::setImage(QString path, QString path2) +{ + + image->init(path + ".svg"); + image2->init(path2 + ".svg"); + + setSharedRenderer(image->renderer()); + twoImageON = true; +} + +/** + * Set size of item + * @param size New size of the item + */ +void FFChartButton::setSize(const QSizeF& size) +{ + qreal tmpScaleWidth = size.toSize().width() / boundingRect().width() + * scaleWidth; + qreal tmpScaleHeight = size.toSize().height() / boundingRect().height() + * scaleHeight; + scale(tmpScaleWidth, tmpScaleHeight); +} + +/** + * Set if item will be increasing (zoomRatio>1) or will be decreasing (zoomRatio<1) + * @param zoomRatio How much size will be changing during animation + */ +void FFChartButton::setZoomRatio(qreal zoomRatio) +{ + zoomRatio_ = zoomRatio; +} + +/** + * Set number of frame in animation + * @param frameRange Number of frames + */ +void FFChartButton::setFrameRange(int frameRange) +{ + frameRange_ = frameRange; + animation->setFrameRange(0, frameRange_); +} + +/** + * Set how much time animation take + * @param duration Time of animation + */ +void FFChartButton::setDuration(int duration) +{ + duration_ = duration; + animation->setDuration(duration_); +} + +/** + * Scale the item + * @param sx Size of scale in width + * @param sy Size of scale in height + */ +void FFChartButton::scale(qreal sx, qreal sy) +{ + scaleWidth = sx * scaleWidth; + scaleHeight = sy * scaleHeight; + QGraphicsSvgItem::scale(scaleWidth, scaleHeight); +} + +/** + * Return if the item will be increasing (zoomRatio>1) or will be decreasing (zoomRatio<1) + */ +qreal FFChartButton::zoomRatio() +{ + return zoomRatio_; +} + +/** + * Return number of frame in animation + */ +int FFChartButton::frameRange() +{ + return frameRange_; +} + +/** + * Return how much time animation take + */ +int FFChartButton::duration() +{ + return duration_; +} + +/** + * Support mouse release event. + * @param event Contains all informations about event. + */ +void FFChartButton::mouseReleaseEvent(QGraphicsSceneMouseEvent * event) +{ + Q_UNUSED(event) + //If button has two images they are toggled + if(twoImageON) + { + if(state == false) + { + setSharedRenderer(image2->renderer()); + } + else + { + setSharedRenderer(image->renderer()); + } + state = !state; + } + + //Starts animation + if(!startedTimeLine) + { + startingPosition = this->pos(); + animation->start(); + startedTimeLine = true; + } + emit mouseRelease(); +} + +/** + * Support mouse press event. + * @param event Contains all informations about event. + */ +void FFChartButton::mousePressEvent(QGraphicsSceneMouseEvent* event) +{ + Q_UNUSED(event) + emit mousePress(); +} + +/** + * \fn void FFChartButton::mouseRelease() + * This signal is emitted when the item is released. + */ + +/** + * \fn void FFChartButton::mousePress() + * This signal is emitted when the item is pressed. + */ diff --git a/libffqw-1.0/sources/ffchartbutton.h b/libffqw-1.0/sources/ffchartbutton.h new file mode 100644 index 0000000..e6a518f --- /dev/null +++ b/libffqw-1.0/sources/ffchartbutton.h @@ -0,0 +1,153 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartbutton.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.09.03 + * @version 1.0 + */ + +#ifndef FFCHARTBUTTON_H +#define FFCHARTBUTTON_H + +#include +#include +#include "ffviewcache.h" + +static const qreal DEFAULT_ZOOM_RATIO = 1.2; +static const int DEFAULT_DURATION_TIME = 400; +static const int DEFAULT_FRAME_RANGE = 20; + +/** + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + * + * @brief Extend QGraphicsSvgItem to easy use 1 or 2 image and added + * functionality to decrease and increase item after click + */ + +class FFChartButton : public QGraphicsSvgItem +{ +Q_OBJECT +public: + FFChartButton(QGraphicsItem* parent = 0); + virtual ~FFChartButton(); + + void setImage(QString path); + void setImage(QString path,QString path2); + void setSize(const QSizeF& size); + void setZoomRatio(qreal zoomRatio); + void setFrameRange(int frameRange); + void setDuration(int duration); + void scale(qreal sx, qreal sy); + + qreal zoomRatio(); + int frameRange(); + int duration(); + +protected: + virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent* event); + virtual void mousePressEvent(QGraphicsSceneMouseEvent* event); +private: + QTimeLine* animation; ///< stores timer of animation + FFViewCache* image; ///< cached image1 + FFViewCache* image2; ///< cached image2 + + int frameRange_; ///< duration of one frame + int duration_; ///< duration of animation + qreal zoomRatio_; ///< ratio of zooming + qreal sizeRatio; ///< ratio of resizing + QPointF startingPosition; ///< point of starting position on the scene + bool startedTimeLine; ///< true if animation is started + qreal scaleWidth ; ///< scale's ratio of width + qreal scaleHeight ; ///< scale's ratio of height + + bool twoImageON; ///< is true when two images are set + bool state; ///< stores information about it in which state currently is button. + + void init(); + +signals: + void mouseRelease(); + void mousePress(); + +private slots: + void tick(int frame); + void animationFinished(); +}; + +#endif // FFCHARTBUTTON_H diff --git a/libffqw-1.0/sources/ffchartlegend.cpp b/libffqw-1.0/sources/ffchartlegend.cpp new file mode 100644 index 0000000..81c7c0f --- /dev/null +++ b/libffqw-1.0/sources/ffchartlegend.cpp @@ -0,0 +1,390 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartlegend.cpp + * @brief Implementation of the FFChartLegend class + * + * @author ComArch S.A. + * @date 2009.08.20 + * @version 1.0 + */ +#include "ffchartlegend.h" + +/** + * Constructs a FFChartLegend with a parent. + */ +FFChartLegend::FFChartLegend(QWidget* parent) : + FFAbstractWidget(parent) +{ + this->parent = parent; + init(); +} + +/** + * A virtual destructor. + */ +FFChartLegend::~FFChartLegend() +{ + int num = legendSeriesTable.size(); + for(int i = 0; i < num; ++i) + { + delete legendSeriesTable.at(0); + legendSeriesTable.remove(0); + } +} + +/** + * Initiates all needed fields and functionality + */ +void FFChartLegend::init() +{ + //sets default values + path = LEGEND_PATH; + + backgroundColor = DEFAULT_LEGEND_BACKGROUND_COLOR; + backgroundOpacity = DEFAULT_LEGEND_BACKGROUND_OPACITY; + + actualChangingSeries = NULL; + + //set style + setStyleSheet("background-color: transparent"); + + //sets layout + legendLayout = new QGridLayout(this); + legendLayout ->setMargin(0); + this->setLayout(legendLayout); + + legendScrollArea = new FFScrollArea(this); + legendScrollArea->setFrameStyle(0); + legendScrollAreaItem = new QWidget(legendScrollArea); + legendScrollAreaLayout = new QGridLayout(legendScrollAreaItem); + legendScrollAreaItem->setLayout(legendScrollAreaLayout); + legendScrollAreaLayout->setMargin(0); + legendScrollAreaLayout->setSpacing(5); + + legendScrollAreaItem->setStyleSheet("background-color: transparent"); + legendScrollArea->setWidget(legendScrollAreaItem); + legendScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + legendScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + legendScrollArea->setFrameStyle(0); + + legendLayout->addWidget(legendScrollArea); + + legendControlPanel = new FFChartLegendControlPanel(this); + legendControlPanel->hide(); + + //connects + connect(legendControlPanel, + SIGNAL(penChanged(QPen)), + this, + SLOT(changeSeriesPen(QPen))); +} + +/** + * Supports click event. Shows or hide chart's legend + */ +void FFChartLegend::popUp() +{ + if(isVisible()) + { + this->hide(); + } + else + { + this->show(); + } + +} + +/** + * It updates size of FFChartLegend's elements + * Calls changeSize() method + */ +void FFChartLegend::resizeEvent(QResizeEvent* event) +{ + Q_UNUSED(event) + if(this->isVisible()) + { + changeSize(); + } + +} +/** + * Fits size of FFChartLegend's elements chart when show event appeared. + * Calls changeSize() method. + */ +void FFChartLegend::showEvent(QShowEvent* event) +{ + Q_UNUSED(event) + + changeSize(); +} + +/** + * Add series to FFChartLegend. + * + * @param series is a pointer to series on a FFChart + */ +void FFChartLegend::addSeries(FFChartSeries* series) +{ + //creates buttons representing series + FFScrollingCheckBox* visibleCheckbox = + new FFScrollingCheckBox(legendScrollAreaItem); + FFLineButton* modifyButton = new FFLineButton(legendScrollAreaItem); + + //sets series name in buttons + visibleCheckbox->setDescription(series->name()); + visibleCheckbox->setChecked(series->isVisible()); + visibleCheckbox->disableTitle(true); + visibleCheckbox->setTopMargin(8); + visibleCheckbox->setBottomMargin(8); + visibleCheckbox->setRightMargin(2); + visibleCheckbox->setLeftMargin(2); + visibleCheckbox->setAttribute(Qt::WA_DeleteOnClose); + + modifyButton->setPen(*series->pen()); + modifyButton->setAttribute(Qt::WA_DeleteOnClose); + + SeriesContainer* tempSeriesPointer = + new SeriesContainer(series, + visibleCheckbox, + modifyButton); + //adds seriesContener to series table + legendSeriesTable.append(tempSeriesPointer); + + //adds buttons to layout + legendScrollAreaLayout->addWidget(legendSeriesTable.at(legendSeriesTable.size() + - 1)->visibleCheckBox_, + legendSeriesTable.size() - 1, + 0, + 1, + 2); + legendScrollAreaLayout->addWidget(legendSeriesTable.at(legendSeriesTable.size() + - 1)->controlPanelButton_, + legendSeriesTable.size() - 1, + 2, + 1, + 1); + + //connecting buttons to legend + connect(modifyButton, + SIGNAL(clicked()), + this, + SLOT(chooseChangingSeries())); + connect(visibleCheckbox, SIGNAL(clicked()), this, SLOT(changeVisible())); + changeSize(); +} + +/** + * Fits size of FFChartLegend's elements + */ +void FFChartLegend::changeSize() +{ + // sets geometry for legend elements + legendControlPanel->setGeometry(0, 0, size().width(), size().height()); + + legendScrollAreaItem->setGeometry(0, + 0, + legendScrollArea->width(), + legendSeriesTable.size() + * (DEFAULT_BUTTON_HEIGHT + + 5)); + //update legendscrollarea + legendScrollArea->setWidget(NULL); + legendScrollArea->setWidget(legendScrollAreaItem); +} + +/** + * Assign pointer on actual modified series to the temporary pointer. + */ +void FFChartLegend::chooseChangingSeries() +{ + //check which series was chosen to modification + for(int i = 0; i < legendSeriesTable.size(); i++) + { + if(legendSeriesTable.at(i)->controlPanelButton_ + == (FFLineButton*)sender()) + actualChangingSeries = legendSeriesTable.at(i); + } + + //sets and shows legendCotnrolPanel + legendControlPanel->setPen(*actualChangingSeries->series_->pen()); + legendControlPanel->show(); + if(NULL != parent) + parent->repaint(); +} + +/** + * Updates a pen of button representing actual modified series and emits + * signal to chart. + * + * @param pen represents setting series pen + */ + +void FFChartLegend::changeSeriesPen(QPen pen) +{ + actualChangingSeries->series_->setPen(pen); + actualChangingSeries->controlPanelButton_->setPen(pen); + emit updateSeries(); +} + +/** + * Updates series visibility + */ +void FFChartLegend::changeVisible() +{ + //looks for pointer to changing series and change it visibility and + //state of visibleCheckbox + + for(int i = 0; i < legendSeriesTable.size(); i++) + { + if(legendSeriesTable.at(i)->visibleCheckBox_ + == (FFScrollingCheckBox*)sender()) + { + bool + tempVisible = + !(legendSeriesTable.at(i)->series_->isVisible()); + + legendSeriesTable.at(i)->series_->setVisible(tempVisible); + legendSeriesTable.at(i)->visibleCheckBox_->setChecked(tempVisible); + } + } + + emit updateSeries(); +} + +/** + * Deletes series from series contener + * + * @param series is a pointer to series that will be removed. + */ +void FFChartLegend::deleteSeries(FFChartSeries* series) +{ + //looks for given series in legendSeriesTable and deletes it. + for(int i = 0; i < legendSeriesTable.size(); i++) + { + if(series == legendSeriesTable.at(i)->series_) + { + legendControlPanel->hide(); + + delete legendSeriesTable.at(i); + legendSeriesTable.remove(i); + } + + } + changeSize(); +} + +/** + * Draw FFChartLegend background + * @param event Contains all informations about event. + */ +void FFChartLegend::paintEvent(QPaintEvent *event) +{ + Q_UNUSED(event) + QPainter paint; + paint.begin(this); + paint.setOpacity(backgroundOpacity); + paint.setBrush(backgroundColor); + paint.setPen(Qt::transparent); + paint.drawRect(0, 0, width(), height()); + paint.end(); +} + +/** + \fn void FFChartLegend::updateSeries() + + This signal is emitted when the series is/are changed + */ + +/** + * Constructs a FFChartLegend with pointers to series, and buttons . + */ +SeriesContainer::SeriesContainer(FFChartSeries* series, + FFScrollingCheckBox* visibleCheckBox, + FFLineButton* controlPanelButton) +{ + series_ = series; + visibleCheckBox_ = visibleCheckBox; + controlPanelButton_ = controlPanelButton; +} + +/** + * A virtual destructor + */ +SeriesContainer::~SeriesContainer() +{ + visibleCheckBox_->close(); + controlPanelButton_->close(); +} diff --git a/libffqw-1.0/sources/ffchartlegend.h b/libffqw-1.0/sources/ffchartlegend.h new file mode 100644 index 0000000..7c03044 --- /dev/null +++ b/libffqw-1.0/sources/ffchartlegend.h @@ -0,0 +1,185 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartlegend.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.20 + * @version 1.0 + */ +#ifndef FFCHARTLEGEND_H +#define FFCHARTLEGEND_H +#include +#include +#include +#include +#include + +#include "ffabstractwidget.h" +#include "ffcolorcombobox.h" +#include "ffstringcombobox.h" +#include "ffscrollingcheckbox.h" +#include "fflinecombobox.h" +#include "ffchartlegendcontrolpanel.h" +#include "ffchartseries.h" +#include "ffscrollarea.h" + +static const QString LEGEND_PATH= ":/standard/";///< path to folder with graphics file + +class FFChartLegend; + +/** + * @author ComArch S.A. + * @date 2009.08.20 + * @version 1.0 + * + * @brief A class to store series in legend + */ +class SeriesContainer +{ +private: + friend class FFChartLegend; + + SeriesContainer(FFChartSeries* series, + FFScrollingCheckBox* visibleCheck, + FFLineButton* modifyButton); + ~SeriesContainer(); + + FFChartSeries* series_; ///< pointer to series + FFScrollingCheckBox* visibleCheckBox_; ///< pointer to checkbox responsible for sieries's visiblity + + FFLineButton* controlPanelButton_; ///< pointer to button showing line's syle + +}; + +/** + * @author ComArch S.A. + * @date 2009.08.20 + * @version 1.0 + * + * @brief A class of chart's legend + */ +class FFChartLegend : public FFAbstractWidget +{ + Q_OBJECT + +public: + FFChartLegend(QWidget* parent = 0); + virtual ~FFChartLegend(); + +public slots: + void addSeries(FFChartSeries* series); + void changeSize(); + void deleteSeries(FFChartSeries* ); + +protected: + virtual void resizeEvent(QResizeEvent* event); + virtual void showEvent(QShowEvent* event); + virtual void paintEvent(QPaintEvent *event); + +private: + void init(); + + QWidget* parent; ///< pointer to parent widget + + QString path; ///< path to folder with graphics file + + QGridLayout* legendLayout; ///< legend's layout + + FFScrollArea* legendScrollArea; ///< legend's scroll area + QWidget* legendScrollAreaItem; ///< widget placed on legendscrollarea + QGridLayout* legendScrollAreaLayout; ///< layout of legenScrollAreaItem + + QVector legendSeriesTable; ///< containar of all series on the legend + + SeriesContainer* actualChangingSeries; ///< pointer to actual changing series + + FFChartLegendControlPanel* legendControlPanel; ///< panel for changing line's style + + + QColor backgroundColor; ///< legend background color + qreal backgroundOpacity; ///< legend background opacity + +private slots: + void popUp(); + void chooseChangingSeries(); + void changeVisible(); + void changeSeriesPen(QPen); + +signals: + void updateSeries(); +}; + +#endif // FFCHARTLEGEND_H diff --git a/libffqw-1.0/sources/ffchartlegendcontrolpanel.cpp b/libffqw-1.0/sources/ffchartlegendcontrolpanel.cpp new file mode 100644 index 0000000..55c9706 --- /dev/null +++ b/libffqw-1.0/sources/ffchartlegendcontrolpanel.cpp @@ -0,0 +1,277 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartlegendcontrolpanel.cpp + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.24 + * @version 1.0 + */ +#include +#include "ffchartlegendcontrolpanel.h" + +/** + * Constructs a FFChartLegendControlPanel with parent. + * @param parent QWidget parent + */ +FFChartLegendControlPanel::FFChartLegendControlPanel(QWidget* parent) : + FFAbstractWidget(parent) +{ + this->parent = parent; + init(); +} + +/** + * A virtual destructor. + */ +FFChartLegendControlPanel::~FFChartLegendControlPanel() +{ + parent = NULL; + +} + +/** + * Returns pen_ - pen with line style, line color and line width + */ +QPen FFChartLegendControlPanel::pen() +{ + return pen_; +} + +/** + * Sets pen_ - pen with line style, line color and line width + */ +void FFChartLegendControlPanel::setPen(QPen pen) +{ + pen_ = pen; + colorSelector->setCurrentColor(pen.color()); + styleSelector->setCurrentLine(pen.style()); + thicknessSelector->setCurrentLine(pen.width()); +} + +/** + * Initiates all needed fields + */ +void FFChartLegendControlPanel::init() +{ + // sets default values + setAutoFillBackground(true); + + backgroundColor = DEFAULT_LEGEND_BACKGROUND_COLOR; + backgroundOpacity = DEFAULT_LEGEND_BACKGROUND_OPACITY; + + //Initialize pen_ + pen_.setWidth(0); + pen_.setStyle(Qt::SolidLine); + pen_.setColor(Qt::transparent); + + //sets hide button + hideButton = new FFAbstractButton(this); + + hideButton->setMargins(0, 0, 5, 5); + hideButton->setIconAlignment(Qt::AlignRight); + hideButton->setIcon(QIcon(QPixmap(":/standard/combo_colorarrow.svg"))); + + //creates selectors + colorSelector = new FFColorComboBox(this); + thicknessSelector = new FFLineComboBox(this); + styleSelector = new FFLineComboBox(this); + + //sets selectors and add needed items + QBrush emptyBrush(QColor(20, 80, 0)); + thicknessSelector->setTitle("Thickness's chooser"); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 1)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 2)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 3)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 4)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 5)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 6)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 7)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 8)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 9)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 10)); + + styleSelector->setTitle("Style's chooser"); + styleSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), + 6, + Qt::SolidLine)); + styleSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), + 6, + Qt::DashLine)); + styleSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 6, Qt::DotLine)); + styleSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), + 6, + Qt::DashDotDotLine)); + styleSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), + 6, + Qt::DashDotLine)); + + colorSelector->addItem(QColor(125, 125, 125)); + colorSelector->addItem(QColor(255, 0, 0)); + colorSelector->addItem(QColor(0, 255, 0)); + colorSelector->addItem(QColor(0, 0, 255)); + colorSelector->addItem(QColor(255, 255, 0)); + colorSelector->addItem(QColor(255, 255, 255)); + colorSelector->addItem(QColor(0, 255, 255)); + colorSelector->addItem(QColor(255, 0, 255)); + colorSelector->addItem(QColor(255, 255, 255)); + colorSelector->setCols(2); + + //creates and sets layout of controlPanel + gLayout = new QGridLayout(this); + gLayout->setMargin(0); + + gLayout->addWidget(thicknessSelector, 0, 0); + gLayout->addWidget(styleSelector, 1, 0); + gLayout->addWidget(colorSelector, 2, 0); + gLayout->addWidget(hideButton, 3, 0); + + //empty item added to layout + QSpacerItem* horizontalSpacer = new QSpacerItem(1, + 1, + QSizePolicy::Expanding, + QSizePolicy::Expanding); + gLayout->addItem(horizontalSpacer, 4, 0); + + //connects + connect(thicknessSelector, + SIGNAL(activated(QVariant)), + this, + SLOT(thicknessChanged(QVariant))); + connect(styleSelector, + SIGNAL(activated(QVariant)), + this, + SLOT(styleChanged(QVariant))); + connect(colorSelector, + SIGNAL(activated(QVariant)), + this, + SLOT(colorChanged(QVariant))); + connect(hideButton, SIGNAL(clicked()), this, SLOT(hide())); +} + +/** + * Slot to support sizeChooser and emit signal to legend + */ +void FFChartLegendControlPanel::thicknessChanged(QVariant localPen) +{ + pen_.setWidth(localPen.value ().width()); + emit penChanged(pen_); + +} + +/** + * Slot to support styleChooser and emit signal to legend + */ +void FFChartLegendControlPanel::styleChanged(QVariant localPen) +{ + pen_.setStyle(localPen.value ().style()); + emit penChanged(pen_); +} + +/** + * Slot to support colorChooserand emit signal to legend + */ +void FFChartLegendControlPanel::colorChanged(QVariant localPen) +{ + pen_.setColor(localPen.value ().color()); + emit penChanged(pen_); +} + +/** + * Slot to support hide feature + */ +void FFChartLegendControlPanel::hide() +{ + QWidget::hide(); + if(NULL != parent) + parent->parentWidget()->repaint(geometry()); +} + +/** + * Draws FFLegendControlPanel's background + * @param event Contains all informations about event. + */ +void FFChartLegendControlPanel::paintEvent(QPaintEvent *event) +{ + Q_UNUSED(event) + QPainter paint; + paint.begin(this); + paint.setOpacity(backgroundOpacity); + paint.setBrush(backgroundColor); + paint.setPen(Qt::transparent); + paint.drawRect(0, 0, width(), height()); + paint.end(); +} + diff --git a/libffqw-1.0/sources/ffchartlegendcontrolpanel.h b/libffqw-1.0/sources/ffchartlegendcontrolpanel.h new file mode 100644 index 0000000..f896e30 --- /dev/null +++ b/libffqw-1.0/sources/ffchartlegendcontrolpanel.h @@ -0,0 +1,148 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartlegendcontrolpanel.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.24 + * @version 1.0 + */ + +#ifndef FFCHARTLEGENDCONTROLPANEL_H +#define FFCHARTLEGENDCONTROLPANEL_H + +#include +#include +#include +#include + +#include "ffabstractwidget.h" +#include "ffcolorcombobox.h" +#include "fflinecombobox.h" +#include "ffstringcombobox.h" + +/** + * @author ComArch S.A. + * @date 2009.08.24 + * @version 1.0 + * + * @brief A class providing interface to modifying series pen. + */ +class FFChartLegendControlPanel: public FFAbstractWidget +{ + Q_OBJECT +public: + FFChartLegendControlPanel(QWidget* parent=0); + + virtual ~FFChartLegendControlPanel(); + + QPen pen(); + + void setPen(QPen pen); + +public slots: + //slots to support sizeChooser styleChooser and color chooser + void colorChanged(QVariant localPen); + void thicknessChanged(QVariant localPen); + void styleChanged(QVariant localPen); + + void hide(); + +protected: + virtual void paintEvent(QPaintEvent *event); + +private: + void init(); + + QMap styleMap; /// sizeMap; ///< map with pen's thickness + + QPen pen_; ///< pen of actual series + + FFLineComboBox* thicknessSelector; ///< thickness's selector + FFLineComboBox* styleSelector; ///< syle's selector + FFColorComboBox* colorSelector; ///< color's selector + FFAbstractButton* hideButton;///< button to hide controlPanel + + QGridLayout* gLayout; ///< layout of controlPanel + + QColor backgroundColor; ///< background's color + qreal backgroundOpacity; ///< background's opacity + QWidget* parent; ///< pointer to parent +signals: + void penChanged(QPen pen); +}; + +#endif // FFCHARTLEGENDCONTROLPANEL_H diff --git a/libffqw-1.0/sources/ffchartscene.cpp b/libffqw-1.0/sources/ffchartscene.cpp new file mode 100644 index 0000000..292951e --- /dev/null +++ b/libffqw-1.0/sources/ffchartscene.cpp @@ -0,0 +1,903 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartscene.cpp + * @brief Implementation of the FFChartScene class. + * + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + */ + +#include "ffchartscene.h" + +// ############################################################ CONSTRUCTORS + +/** + * Constructs a FFChartScene with a parent. + */ +FFChartScene::FFChartScene(QObject* parent) : + QGraphicsScene(parent) +{ + init(); +} + +/** + * A virtual destructor. + */ +FFChartScene::~FFChartScene() +{ + +} + +/** + * Initiates an object of FFChartScene. Sets all needed fields connections. + * It is called by all constructors. + */ +void FFChartScene::init() +{ + //sets default configuration + moveModeSw = false; + zoomModeSw = false; + kineticCount = 0; + + accumulatedZoomFactor_ = QSize(1, 1); + QBrush zoomRectBrush(QColor(60, 80, 60)); + + QPen zoomRectPen; + zoomRectPen.setBrush(zoomRectBrush); + zoomRectPen.setColor(QColor(80, 180, 80)); + zoomRectPen.setWidth(3); + + zoomRect = new QGraphicsRectItem; + zoomRect->setPen(zoomRectPen); + zoomRect->setBrush(zoomRectBrush); + setBackgroundBrush(QBrush(QColor(30, 30, 30))); + + timer = new QTimer(this); + connect(timer, SIGNAL(timeout()), this, SLOT(kineticScroll())); + + zoomInButton.moveBy(10,10); + zoomOutButton.moveBy(10,90); + legendButton.moveBy(10, sceneRect().height() - 70); + + subaxesSpacing_ = 40; + subaxesPen_.setColor(QColor(80,80,80)); + subaxesPen_.setStyle(Qt::DashLine); + subaxesPen_.setCosmetic(true); + + axesValuesPen_.setColor(QColor(240, 240, 240)); + + //adds button to chart + addItem(&zoomInButton); + addItem(&zoomOutButton); + addItem(&legendButton); + + + + //connects + connect(&zoomInButton, SIGNAL(mouseRelease()), this, SLOT(zoomIn())); + connect(&zoomOutButton, SIGNAL(mouseRelease()), this, SLOT(zoomOut())); + connect(&legendButton, SIGNAL(mouseRelease()), parent(), SLOT(showLegend())); + + //sets chart's buttons + zoomInButton.setImage(":/standard/chart_zoomin"); + zoomOutButton.setImage(":/standard/chart_zoomout"); + legendButton.setImage(":/standard/chart_legendON",":/standard/chart_legendOFF"); + + zoomInButton.setZoomRatio(1.4); + zoomOutButton.setZoomRatio(0.6); + legendButton.setZoomRatio(1.4); + + zoomInButton.setSize(QSize(60, 60)); + zoomOutButton.setSize(QSize(60, 60)); + legendButton.setSize(QSize(60, 60)); + +} + +// ################################################################## PUBLIC + +/** + * Moves given point of chart to the scene's top left corner. + */ +void FFChartScene::moveTo(QPoint point) +{ + translateFactor_ = point; + update(); +} + +/** + * Moves given point of chart to the scene's top left corner. + */ +void FFChartScene::moveTo(float x, float y) +{ + translateFactor_ = QPointF(x, y); + update(); +} + +/** + * Moves the chart by a given vector. + */ +void FFChartScene::moveBy(QPoint destPoint) +{ + translateFactor_ += destPoint; + update(); +} + +/** + * Moves the chart by a given vector. + */ +void FFChartScene::moveBy(float x, float y) +{ + translateFactor_ += QPointF(x, y); + update(); +} + +/** + * Adds set of points to chart. + */ +void FFChartScene::addSeries(FFChartSeries* series) +{ + this->series.append(series); + itemsBoundingRect_ = itemsBoundingRect(&itemsBoundingValues_); + + update(); + + emit seriesChanged(this->series); +} + +/** + * Sets a list of series. + */ +void FFChartScene::setSeries(QList series) +{ + this->series = series; + itemsBoundingRect_ = itemsBoundingRect(&itemsBoundingValues_); + + update(); + + emit seriesChanged(&series); +} + +/** + * Overridden method from QGraphicsScene. + */ +void FFChartScene::setSceneRect(const QRectF& rect) +{ + QGraphicsScene::setSceneRect(rect); + legendButton.setPos(10, rect.height() - 70); + + translateFactor_.setX(rect.width() * 0.5); + translateFactor_.setY(rect.height() * 0.5); + + sceneRec = rect; +} + +/** + * Sets a distance in pixels between subaxes. + */ +void FFChartScene::setSubaxesSpacing(const float& subaxesSpacing) +{ + subaxesSpacing_ = subaxesSpacing; +} + +/** + * Returns a distance in pixels between subaxes. + */ +float FFChartScene::subaxesSpacing() const +{ + return subaxesSpacing_; +} + +/** + * Sets a pen that will be used to draw subaxes. + */ +void FFChartScene::setSubaxesPen(const QPen& subaxesPen) +{ + subaxesPen_ = subaxesPen; +} + +/** + * Returns a pen that is used to draw subaxes. + */ +QPen FFChartScene::subaxesPen() const +{ + return subaxesPen_; +} + +/** + * Sets a pen that will be used to draw values next to subaxes. + */ +void FFChartScene::setAxesValuesPen(const QPen& axesValuesPen) +{ + axesValuesPen_ = axesValuesPen; +} + +/** + * Returns a pen that is used to draw values next to subaxes. + */ +QPen FFChartScene::axesValuesPen() const +{ + return axesValuesPen_; +} + +// ############################################################ PUBLIC SLOTS + +/** + * Zooms the chart into the given rectangle. + */ +void FFChartScene::zoom(QRectF zoomRect) +{ + // Normalizing zoom rectangle (width and height must are greater than 0) + QRectF zoomRectNormalized(zoomRect); + if(zoomRect.width() < 0) + { + zoomRectNormalized.setX(zoomRect.x() + zoomRect.width()); + zoomRectNormalized.setWidth(qAbs(zoomRect.width())); + } + if(zoomRect.height() < 0) + { + zoomRectNormalized.setY(zoomRect.y() + zoomRect.height()); + zoomRectNormalized.setHeight(qAbs(zoomRect.height())); + } + + // Calculating zoom factor for scale() function ( >1 zoomin, <1 zoomout ) + QSizeF zoomFactor(sceneRec.width() / zoomRectNormalized.width(), + sceneRec.height() / zoomRectNormalized.height()); + + accumulatedZoomFactor_.setWidth(zoomFactor.width() + * accumulatedZoomFactor_.width()); + accumulatedZoomFactor_.setHeight(zoomFactor.height() + * accumulatedZoomFactor_.height()); + //checking if factor of zooming is not to high + if(accumulatedZoomFactor_.width() > 20 || accumulatedZoomFactor_.height() > 20) + { + accumulatedZoomFactor_.setWidth(20); + accumulatedZoomFactor_.setHeight(20); + return; + } + + + + translateFactor_ = QPointF((translateFactor_.x() + - zoomRectNormalized.x()) + * zoomFactor.width(), + (translateFactor_.y() + - zoomRectNormalized.y()) + * zoomFactor.height()); + + update(); +} + +/** + * Slot that changes series' set. + */ +void FFChartScene::seriesChanged(QList series) +{ + setSeries(series); +} + +/** + * Slot that zooms in the current chart into a rectangle which is smaller by + * a given ratio. + */ +void FFChartScene::zoomIn(qreal ratio) +{ + qreal dx, dy; + + if(accumulatedZoomFactor_.width() > 15) + { + dx = 0; + } + else + { + dx = ratio * sceneRec.width(); + } + + if(accumulatedZoomFactor_.height() > 15) + { + dy = 0; + } + else + { + dy = ratio * sceneRec.height(); + } + + zoom(QRectF(dx, dy, sceneRec.width() - 2 * dx, sceneRec.height() - 2 + * dy)); +} + +/** + * Slot that zooms out the current chart into a rectangle which is larger by + * a given ratio. + */ +void FFChartScene::zoomOut(qreal ratio) +{ + qreal dx, dy; + + if(accumulatedZoomFactor_.width() < 0.1) + { + dx = 0; + } + else + { + dx = ratio * sceneRec.width(); + } + + if(accumulatedZoomFactor_.height() < 0.1) + { + dy = 0; + } + else + { + dy = ratio * sceneRec.height(); + } + + zoom(QRectF(-dx, -dy, sceneRec.width() + 2 * dx, sceneRec.height() + 2 + * dy)); +} + +// ############################################################### PROTECTED + +/** + * Overridden method from QGraphicsScene. Draws all items that should be seen + * on the chart. + */ +void FFChartScene::drawItems(QPainter* painter, + int numItems, + QGraphicsItem* items[], + const QStyleOptionGraphicsItem options[], + QWidget* widget) +{ + Q_UNUSED(items) + Q_UNUSED(numItems) + Q_UNUSED(options) + + // Drawing zoom rectangle + if(zoomModeSw) + { + zoomRect->paint(painter, new QStyleOptionGraphicsItem, widget); + } + + painter->scale(1, 1); + + + // Drawing subaxes + drawSubAxes(painter, widget); + + // Drawing axes + drawAxes(painter, widget); + + // Drawing series + drawSeries(painter, widget); + + // Drawing axes values + drawValues(painter, widget); + + // Drawing static items + drawStaticItems(painter, widget); +} + +/** + * Overridden virtual method from QGraphicsScene. It is responsible for + * handling a mouse press event. + * @param event Contains all informations about event. + */ +void FFChartScene::mousePressEvent(QGraphicsSceneMouseEvent* event) +{ + QGraphicsScene::mousePressEvent(event); + + kinetic = false; + timer->stop(); + kineticCount = 0; + + if(itemAt(event->scenePos())) + { + return; + } + + pressPos = event->scenePos(); + moveModeSw = true; + zoomModeSw = false; + + if(timer->isActive() == false) + { + timer->start(80); + } + + update(); +} + +/** + * Overridden virtual method from QGraphicsScene. It is responsible for + * handling a mouse double click event. + * @param event Contains all informations about event. + */ +void FFChartScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) +{ + if(itemAt(event->scenePos())) + { + return; + } + + zoomModeSw = true; + moveModeSw = false; + kinetic = false; + kineticCount = 0; + + zoomRect->setRect(event->scenePos().x(), event->scenePos().y(), 1, 1); + update(); +} + +/** + * Overridden virtual method from QGraphicsScene. It is responsible for + * handling a mouse release event. + * @param event Contains all informations about event. + */ +void FFChartScene::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) +{ + QGraphicsScene::mouseReleaseEvent(event); + + if(zoomModeSw) // zooming + { + zoomModeSw = false; + + if(qAbs(zoomRect->rect().width()) <= 15 + || qAbs(zoomRect->rect().height()) <= 15) + { + update(); + return; + } + + zoom(zoomRect->rect()); + update(); + } + else if(moveModeSw) //moving + { + moveModeSw = false; + + if(oldKineticVec != kineticVec && kineticCount > 2 && zoomModeSw == false) + { + kinetic = true; + kineticVec *= kineticRatio; + } + else + { + kinetic = false; + timer->stop(); + } + } +} + +/** + * Overridden virtual method from QGraphicsScene. It is responsible for + * handling a mouse move event. + * @param event Contains all informations about event. + */ +void FFChartScene::mouseMoveEvent(QGraphicsSceneMouseEvent* event) +{ + + //if button's type is not left button return + if(event->buttons() != Qt::LeftButton) + { + return; + } + + kineticCount++; + + //updates parameters + //zooming mode + if(zoomModeSw) + { + zoomRect->setRect(pressPos.x(), + pressPos.y(), + event->scenePos().x() - pressPos.x(), + event->scenePos().y() - pressPos.y()); + } + //moving mode + else if(moveModeSw) + { + QPointF scrollRatio(event->scenePos().x() - pressPos.x(), + event->scenePos().y() - pressPos.y()); + + oldPressPos = pressPos; + pressPos = event->scenePos(); + translateFactor_ += scrollRatio; + } + update(); +} + +// ################################################################ PPRIVATE + +/** + * Returns a rectangle around all points in series + * @param boundaryValues vector of boundary values + * @return bounding rectangle QRectF + */ +QRectF FFChartScene::itemsBoundingRect(QVector* boundaryValues) +{ + //if any series are available returns zero rectangle + if(series.isEmpty()) + { + return QRectF(0, 0, 0, 0); + } + //if only one series is available returns rectangle for points from one + //series + if(series.size() == 1 && series.at(0)->size() == 1) + { + return QRectF(series.at(0)->at(0)->x(), + series.at(0)->at(0)->y(), + 0, + 0); + } + //looks for maximum points in all series + float minX = series.at(0)->at(0)->x(); + float maxX = series.at(0)->at(0)->x(); + float minY = series.at(0)->at(0)->y(); + float maxY = series.at(0)->at(0)->y(); + + for(int i = 0; i < series.size(); ++i) + { + for(int j = 0; j < series.at(i)->size(); ++j) + { + if(series.at(i)->at(j)->x() < minX) + { + minX = series.at(i)->at(j)->x(); + } + + if(series.at(i)->at(j)->y() < minY) + { + minY = series.at(i)->at(j)->y(); + } + + if(series.at(i)->at(j)->x() > maxX) + { + maxX = series.at(i)->at(j)->x(); + } + + if(series.at(i)->at(j)->y() > maxY) + { + maxY = series.at(i)->at(j)->y(); + } + } + } + + if(boundaryValues) + { + boundaryValues->clear(); + boundaryValues->append(minX); + boundaryValues->append(minY); + boundaryValues->append(maxX); + boundaryValues->append(maxY); + } + + return QRectF(minX, maxY, maxX - minX, maxY - minY); +} + +/** + * Slot that zooms in by default value. + */ +void FFChartScene::zoomIn() +{ + zoomIn(defaultZoomInRatio); +} + +/** + * Slot that zooms out by default value. + */ +void FFChartScene::zoomOut() +{ + zoomOut(defaultZoomOutRatio); +} + +/** + * Draws main axes. + * @param painter a tool to drawing elements + * @param widget points to the widget where elements will be drew + */ +void FFChartScene::drawAxes(QPainter* painter, QWidget* widget) +{ + Q_UNUSED(widget) + + painter->save(); + + painter->setPen(QColor(255, 255, 250)); + + // horizontal + painter->drawLine(QPointF(0, + translateFactor_.y()), + QPointF(sceneRec.width(), + translateFactor_.y())); + + // vertical + painter->drawLine(QPointF(translateFactor_.x(), + 0), + QPointF(translateFactor_.x(), + sceneRec.height())); + + painter->restore(); +} + +/** + * Draws subaxes. + * @param painter a tool to drawing elements + * @param widget points to the widget where elements will be drew + */ +void FFChartScene::drawSubAxes(QPainter* painter, QWidget* widget) +{ + Q_UNUSED(widget); + + painter->save(); + + //draws horizontal lines + int subaxesNumber = (int)(sceneRec.height() / subaxesSpacing_); + qreal offset = translateFactor_.y() - (qFloor(translateFactor_.y() / subaxesSpacing_)) * subaxesSpacing_; + + painter->setPen(subaxesPen_); + + int i; + for(i = 0; i <= subaxesNumber; i++) + { + painter->drawLine(QPointF(0, + offset + i * subaxesSpacing_), + QPointF(sceneRec.width(), + offset + i * subaxesSpacing_)); + } + + //draws vertical lines + subaxesNumber = (int)(sceneRec.width() / subaxesSpacing_); + offset = translateFactor_.x() - (qFloor(translateFactor_.x() / subaxesSpacing_)) * subaxesSpacing_; + + for(i = 0; i <= subaxesNumber; i++) + { + painter->drawLine(QPointF(offset + i * subaxesSpacing_, + 0), + QPointF(offset + i * subaxesSpacing_, + sceneRec.height())); + } + painter->restore(); + +} + +/** + * Draws all series on the chart. + * @param painter a tool to drawing elements + * @param widget points to the widget where elements will be drew + */ +void FFChartScene::drawSeries(QPainter* painter, QWidget* widget) +{ + Q_UNUSED(widget) + + //saves old painter + painter->save(); + //sets painter's configuration + painter->translate(translateFactor_); + painter->scale(accumulatedZoomFactor_.width(), + accumulatedZoomFactor_.height()); + + transform = painter->transform(); + transform.rotate(180, Qt::XAxis); + painter->setTransform(transform, false); + + //draws series + for(int i = 0; i < series.size(); ++i) + { + if(!series.at(i)->isVisible()) + { + continue; + } + + painter->setPen(*series.at(i)->pen()); + painter->drawPolyline(series.at(i)->data(), series.at(i)->size()); + } + //restores paitner + painter->restore(); +} + +/** + * Draws static items (they are not moving and being scaled) on the chart, + * e.g. zoom buttons. + * @param painter a tool to drawing elements + * @param widget points to the widget where elements will be drew + */ +void FFChartScene::drawStaticItems(QPainter* painter, QWidget* widget) +{ + //draws zoomInButton + painter->save(); + painter->setMatrix(zoomInButton.sceneMatrix(), true); + zoomInButton.paint(painter, new QStyleOptionGraphicsItem, widget); + painter->restore(); + + //draws zoomOutButton + painter->save(); + painter->setMatrix(zoomOutButton.sceneMatrix(), true); + zoomOutButton.paint(painter, new QStyleOptionGraphicsItem, widget); + painter->restore(); + + //draws legendButton + painter->save(); + painter->setMatrix(legendButton.sceneMatrix(), true); + legendButton.paint(painter, new QStyleOptionGraphicsItem, widget); + painter->restore(); +} + +/* + * Draws values next to subaxes. + * @param painter a tool to drawing elements + * @param widget points to the widget where elements will be drew + */ +void FFChartScene::drawValues(QPainter* painter, QWidget* widget) +{ + Q_UNUSED(widget) + //saves painter + painter->save(); + + //sets painter + painter->setPen(axesValuesPen_); + painter->setFont(QFont(FONT_TITLE_DEF, 10)); + + //sets needed values + subaxesSpacing_ *= 2; + + //drawing values of axes + int subaxesNumber = (int)(sceneRec.height() / subaxesSpacing_); + qreal offset = translateFactor_.y() - (qFloor(translateFactor_.y() / subaxesSpacing_)) * subaxesSpacing_; + + int i; + + + if(translateFactor_.x() < 0) + { + for(i = -1; i <= subaxesNumber; i++) + { + painter->drawText(QPointF(1, offset + i * subaxesSpacing_ + 11), QString::number((-translateFactor_.y() + offset + i * subaxesSpacing_) / -accumulatedZoomFactor_.height(), 'f', 1)); + } + } + else if(translateFactor_.x() > sceneRec.width()) + { + for(i = -1; i <= subaxesNumber; i++) + { + painter->drawText(QRectF(sceneRec.width() - 305, offset + i * subaxesSpacing_ + 11, 300, 11), Qt::AlignRight | Qt::AlignVCenter, QString::number((-translateFactor_.y() + offset + i * subaxesSpacing_) / -accumulatedZoomFactor_.height(), 'f', 1)); + } + } + else + { + for(i = -1; i <= subaxesNumber; i++) + { + painter->drawText(QPointF(translateFactor_.x() + 1, offset + i * subaxesSpacing_ + 11), QString::number((-translateFactor_.y() + offset + i * subaxesSpacing_) / -accumulatedZoomFactor_.height(), 'f', 1)); + } + } + + subaxesNumber = (int)(sceneRec.width() / subaxesSpacing_); + offset = translateFactor_.x() - (qFloor(translateFactor_.x() / subaxesSpacing_)) * subaxesSpacing_; + + if(translateFactor_.y() < 0) + { + for(i = -1; i <= subaxesNumber; i++) + { + painter->drawText(QPointF(offset + i * subaxesSpacing_ + 1, 11), QString::number((-translateFactor_.x() + offset + i * subaxesSpacing_) / accumulatedZoomFactor_.width(), 'f', 1)); + } + } + else if(translateFactor_.y() > sceneRec.height()) + { + for(i = -1; i <= subaxesNumber; i++) + { + painter->drawText(QPointF(offset + i * subaxesSpacing_ + 1, sceneRec.height() - 5), QString::number((-translateFactor_.x() + offset + i * subaxesSpacing_) / accumulatedZoomFactor_.width(), 'f', 1)); + } + } + else + { + for(i = -1; i <= subaxesNumber; i++) + { + painter->drawText(QPointF(offset + i * subaxesSpacing_ + 1, translateFactor_.y() + 11), QString::number((-translateFactor_.x() + offset + i * subaxesSpacing_) / accumulatedZoomFactor_.width(), 'f', 1)); + } + } + + subaxesSpacing_ /= 2; + + painter->restore(); +} + +/** + * This method is responsible for kinetic scrolling. + */ +void FFChartScene::kineticScroll() +{ + //check if kinetic mode is active + if(kinetic) + { + translateFactor_ += kineticVec; + + if(qAbs((kineticVec *= 0.8).x()) < 0.5 && qAbs((kineticVec + *= 0.8).y()) < 0.5) + { + timer->stop(); + kinetic = false; + } + + update(); + } + //otherwise updates kinetic's vectors + else + { + oldKineticVec = kineticVec; + kineticVec = pressPos - oldPressPos; + } +} + +/*! + * \fn void FFChartScene::seriesChanged(QList*); + * + * Signal that is emitted when the set of series has changed. + */ diff --git a/libffqw-1.0/sources/ffchartscene.h b/libffqw-1.0/sources/ffchartscene.h new file mode 100644 index 0000000..64203a8 --- /dev/null +++ b/libffqw-1.0/sources/ffchartscene.h @@ -0,0 +1,214 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartscene.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + */ + +#ifndef FFCHARTSCENE_H +#define FFCHARTSCENE_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ffchartseries.h" +#include "ffchartbutton.h" +#include "ffabstractwidget.h" +#include +/** + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + * + * @brief Reimplemented a QGraphicsScene class. It is used by the FFChart class + * to whole drawing. + */ + +class FFChartScene : public QGraphicsScene +{ +Q_OBJECT +public: + FFChartScene(QObject* parent = 0); + virtual ~FFChartScene(); + + void moveTo(QPoint point); + void moveTo(float x, float y); + void moveBy(QPoint destPoint); + void moveBy(float x, float y); + + void addSeries(FFChartSeries* series); + void setSeries(QList series); + + void setSceneRect(const QRectF& rect); + + void setSubaxesSpacing(const float& subaxesSpacing); + float subaxesSpacing() const; + + void setSubaxesPen(const QPen& subaxesPen); + QPen subaxesPen() const; + + void setAxesValuesPen(const QPen& axesValuesPen); + QPen axesValuesPen() const; + +public slots: + void seriesChanged(QList series); + void zoom(QRectF zoomRect); + void zoomIn(qreal ratio); + void zoomOut(qreal ratio); + +signals: + void seriesChanged(QList*); + +protected: + void drawItems(QPainter* painter, + int numItems, + QGraphicsItem* items[], + const QStyleOptionGraphicsItem options[], + QWidget * widget); + void mousePressEvent(QGraphicsSceneMouseEvent* event); + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent* event); + void mouseMoveEvent(QGraphicsSceneMouseEvent* event); + +private: + QTimer* timer; ///< animation's timer + + QTransform transform; ///< tool uses to transformations + + float subaxesSpacing_; ///< spacing between suaxes + QPen subaxesPen_; ///< a pen of subaxes + QPen axesValuesPen_; ///< a pen of subaxes' values + + QPointF translateFactor_; ///< new point of scene's top left corner + + QSizeF accumulatedZoomFactor_; ///< accumulates factor of zooming + QPointF pressPos; ///< stores actual press position + QPointF oldPressPos;///< stores old press position + QPointF kineticVec; ///< stores kintetic vector + QPointF oldKineticVec; ///< stores old kinetic vector + + QRectF itemsBoundingRect_; ///< bounding rectangle of items + + QVector itemsBoundingValues_; ///< stores items' bounding values + QRectF sceneRec; ///< stores scene's rectangle + + QGraphicsRectItem* zoomRect; ///< stores pointer to zoom rectangle + + FFChartButton zoomInButton; ///< button to zooming in + FFChartButton zoomOutButton; ///< button to zooming out + FFChartButton legendButton; ///< button to showing legend + QList staticItems; ///< list of items on the scene + QList series; ///< list of series + + bool zoomModeSw; ///< true if zooming mode is active + bool moveModeSw; ///< true if moving mode is active + bool kinetic; ///< true if kinetic is active + + int kineticCount; ///< kinetic's counter + + void init(); + QRectF itemsBoundingRect(QVector* boundaryValues = 0); + + void drawAxes(QPainter* painter, QWidget* widget); + void drawSubAxes(QPainter* painter, QWidget* widget); + void drawSeries(QPainter* painter, QWidget* widget); + void drawStaticItems(QPainter* painter, QWidget* widget); + void drawValues(QPainter* painter, QWidget* widget); + +private slots: + void kineticScroll(); + void zoomIn(); + void zoomOut(); + +private: + static const qreal kineticRatio = 1.5; ///< ratio of kinetic scolling + static const qreal defaultZoomInRatio = 0.2; ///< ratio of zoom in + static const qreal defaultZoomOutRatio = 1.0;///< ratio of zoom out +}; +#endif // FFCHARTSCENE diff --git a/libffqw-1.0/sources/ffchartseries.cpp b/libffqw-1.0/sources/ffchartseries.cpp new file mode 100644 index 0000000..404dbf8 --- /dev/null +++ b/libffqw-1.0/sources/ffchartseries.cpp @@ -0,0 +1,308 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartseries.cpp + * @brief Implementation of the FFChartSeries class. + * + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + */ + +#include "ffchartseries.h" + +/** + * Construct FFSeries + */ +FFChartSeries::FFChartSeries() +{ + init(); +} +/** + * Constructs a FFChartSeries with points' vector and name. + * + */ +FFChartSeries::FFChartSeries(const QVector& series, + const QString& name) +{ + init(); + pen_ = QPen(); + set(series,name); +} +/** + * Constructs a FFChartSeries with points' vector, pen and name. + */ +FFChartSeries::FFChartSeries(const QVector& series, + const QPen& pen, + const QString& name) +{ + init(); + set(series,pen,name); +} +/** + * A virtual destructor. + */ +FFChartSeries::~FFChartSeries() +{ + ; +} +/** + * Sets default values + */ +void FFChartSeries::init() +{ + visibility_ = true; +} + +/** + * Returns series's name + */ +QString FFChartSeries::name() const +{ + return name_; +} +/** + * Returns series's pen + */ +QPen* FFChartSeries::pen() +{ + return &pen_; +} +/** + * Returns true if series is visible + */ +bool FFChartSeries::isVisible() +{ + return visibility_; + +} +/** + * Sets series's name + */ +void FFChartSeries::setName(const QString& name) +{ + name_ = name; +} +/** + * Sets series's pen + */ +void FFChartSeries::setPen(const QPen& pen) +{ + pen_ = pen; +} +/** + * Sets series's points and name + */ +void FFChartSeries::set(const QVector& series, + const QString& name) +{ + //call set function with previously created Pen + set(series,this->pen_,name); +} +/** + * Sets series's points,pen nad name + */ +void FFChartSeries::set(const QVector& series, + const QPen& pen, + const QString& name) +{ + series_ = series; + pen_ = pen; + name_ = name; + +} +/** + * Sets series's color + */ +void FFChartSeries::setColor(const QColor& color) +{ + pen_.setColor(color); +} +/** + * Sets pen's style + */ +void FFChartSeries::setStyle(const Qt::PenStyle& style) +{ + pen_.setStyle(style); +} +/** + * Sets series's visibility + */ +void FFChartSeries::setVisible(bool visibility) +{ + visibility_ = visibility; +} +/** + * Sorts series's points + */ +void FFChartSeries::sort() +{ + sort(0,series_.size()-1); +} +/** + * Validates series's points. Removes points with repeated x value. + */ +void FFChartSeries::validate() +{ + int current; + + for(int i=0; ii; j--) + { + if(series_[j].x() == current) + { + for(int k=j;k>=i;k--) + { + if(series_[j].x()==current) + { + series_.remove(k); + } + } + break; + } + } + } +} +/** + * Returns vector of series's points + */ +QVector FFChartSeries::series() +{ + return series_; +} +/** + * Returns point from series at given index + * @param num is a index of point in seires + */ +QPointF* FFChartSeries::at(const int& num) +{ + return &series_[num]; +} + +/** + * Returns number of series's points + */ +int FFChartSeries::size() const +{ + return series_.size(); +} +/** + * Returns pointer to the data stored in vector + */ +QPointF* FFChartSeries::data() +{ + return series_.data(); +} + +/** + * Sorts points in series + */ +void FFChartSeries::sort(int left, int right) +{ + int i = left; + int j = right; + + QPointF* pointsTab; + QPointF tempPoint; + + float x = series_[(left + right) / 2].x(); + do + { + while(series_[i].x() < x) + i++; + while(series_[j].x() > x) + j--; + if(i <= j) + { + pointsTab = series_.data(); + + tempPoint = pointsTab[i]; + pointsTab[i] = pointsTab[j]; + pointsTab[j] = tempPoint; + + i++; + j--; + } + } while(i <= j); + if(left < j) + sort(left, j); + if(right > i) + sort(i, right); +} + + + diff --git a/libffqw-1.0/sources/ffchartseries.h b/libffqw-1.0/sources/ffchartseries.h new file mode 100644 index 0000000..8776f58 --- /dev/null +++ b/libffqw-1.0/sources/ffchartseries.h @@ -0,0 +1,147 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartseries.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.24 + * @version 1.0 + */ + +#ifndef FFChartSeries_H +#define FFChartSeries_H + +#include +#include +#include +#include + +/** + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + * + * @brief A class containing series data. + */ +class FFChartSeries +{ +public: + FFChartSeries(); + FFChartSeries(const QVector& series, + const QString& name = ""); + + FFChartSeries(const QVector& series, + const QPen& pen, + const QString& name = ""); + virtual ~FFChartSeries(); + + void set(const QVector& series, + const QString& name = ""); + void set(const QVector& series, + const QPen& pen, + const QString& name = ""); + + void sort(); + void validate(); + + QString name() const; + QPen* pen(); + + bool isVisible(); + + void setName(const QString& name); + void setPen(const QPen& pen); + void setColor(const QColor& color); + void setStyle(const Qt::PenStyle& style); + void setVisible(bool visibility); + + QPointF* at(const int& num); + int size() const; + + QVector series(); + QPointF* data(); + +private: + QVector series_; ///< vector of points + QString name_; ///< name of series + QPen pen_; ///< pen of series + bool visibility_; ///< visibility of series + + void init(); + void sort(int left, int right); + +}; + +#endif // FFChartSeries_H diff --git a/libffqw-1.0/sources/ffcolorcombobox.cpp b/libffqw-1.0/sources/ffcolorcombobox.cpp new file mode 100644 index 0000000..d40d2c8 --- /dev/null +++ b/libffqw-1.0/sources/ffcolorcombobox.cpp @@ -0,0 +1,258 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffcolorcombobox.cpp + * @brief Implementation of the FFColorComboBox class + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + +#include "ffcolorcombobox.h" + +/** + * Constructs a FFColorComboBox with a parent. + */ +FFColorComboBox::FFColorComboBox(QWidget* parent) : + FFAbstractComboBox(new FFColorButton, parent) +{ + +} + +/** + * A virtual destructor. + */ +FFColorComboBox::~FFColorComboBox() +{ + ; +} + +/** + * Adds item to combobox + * @param spec is a color for item + */ +void FFColorComboBox::addItem(QColor spec) +{ + addItem(QVariant(spec)); +} +/** + * Adds item to combobox + * @param spec is a pen with color for item + */ +void FFColorComboBox::addItem(QPen spec) +{ + addItem(spec.color()); +} +/** + * Adds items to combobox + * @param items is a list of colors for items + */ +void FFColorComboBox::addItems(QList items) +{ + for(int i = 0; i < items.size(); ++i) + { + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFColorButton* temp = new FFColorButton; + temp->setColor(items.at(i)); + + // Second step: You must call this function with previously prepared button + insertItem(temp, false); + } + emit reset(); +} +/** + * Adds items to combobox + * @param items is a list of QPen-s with colors for items + */ +void FFColorComboBox::addItems(QList items) +{ + for(int i = 0; i < items.size(); ++i) + { + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFColorButton* temp = new FFColorButton; + temp->setColor(items.at(i).color()); + + // Second step: You must call this function with previously prepared button + insertItem(temp, false); + } + emit reset(); +} + +/** + * Sets actual color. If a color is not in colorcombobox nothing happens. + *@param color is a color to set + */ +void FFColorComboBox::setCurrentColor(QColor color) +{ + for(int i = 0; i < items_.size(); ++i) + { + if(dynamic_cast(items_[i])->color() == color) + { + setCurrentItem(i); + return; + } + } +} + +/** + * Sets chosen value of FFColoroComboBox on activator + * @param item is a pointer to chosen item. + */ + +void FFColorComboBox::setActivatorSpecs(FFAbstractButton* item) +{ + if(FFColorButton* but = dynamic_cast(item)) + { + dynamic_cast(activator_)->setColor(but->color()); + } +} +/** + * Returns QVariant element containing value of chosen item + */ +QVariant FFColorComboBox::activatorSpecs() +{ + return QVariant(dynamic_cast(activator_)->pen()); +} + +/** + * Adds new item to FFColorComboBox + */ +void FFColorComboBox::addItem(QVariant spec) +{ + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFColorButton* temp = new FFColorButton; + temp->setColor(spec.value()); + + // Second step: You must call this function with previously prepared button + insertItem(temp); +} + +/** + * Constructs FFColorButton with given parent + */ +FFColorButton::FFColorButton(QWidget* parent) : + FFAbstractButton(parent) +{ + setMargins(15,15,15,15); +} +/** + * A virtual destructor + */ +FFColorButton::~FFColorButton() +{ + ; +} +/** + * Sets a color painted on the button + */ +void FFColorButton::setColor(QColor color) +{ + QBrush brush; + brush = pen_.brush(); + brush.setStyle(Qt::SolidPattern); + brush.setColor(color); + pen_.setBrush(brush); + pen_.setColor(color); +} +/** + * Returns color painted on the button + */ +QColor FFColorButton::color() +{ + return pen_.color(); +} +/** + * Serves paint event, draws rounded rectangle. Overrides parent's method + * @param event Contains all informations about event. + */ +void FFColorButton::paintEvent(QPaintEvent* event) +{ + FFAbstractButton::paintEvent(event); + + QPainter painter; + painter.begin(this); + + painter.setPen(pen_); + painter.setBrush(pen_.brush()); + + painter.setRenderHint(QPainter::Antialiasing,true); + painter.drawRoundedRect(leftMargin() + indent(), + topMargin(), + width() - leftMargin() - rightMargin() - 2 * indent(), + height() - topMargin() - bottomMargin(),10,10); + + painter.end(); + +} diff --git a/libffqw-1.0/sources/ffcolorcombobox.h b/libffqw-1.0/sources/ffcolorcombobox.h new file mode 100644 index 0000000..94b91cf --- /dev/null +++ b/libffqw-1.0/sources/ffcolorcombobox.h @@ -0,0 +1,157 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffcolorcombobox.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + +#ifndef FFCOLORCOMBOBOX_H +#define FFCOLORCOMBOBOX_H + +#include +#include +#include + +#ifndef MAEMO +#include +#endif + +#include "ffabstractcombobox.h" + +/** + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + * + * @brief A class of combobox with colors + */ +#ifdef MAEMO + +class FFColorComboBox : public FFAbstractComboBox + +#else + +class QDESIGNER_WIDGET_EXPORT FFColorComboBox : public FFAbstractComboBox + +#endif +{ + Q_OBJECT + +public: + FFColorComboBox(QWidget* parent = 0); + virtual ~FFColorComboBox(); + + void addItem(QColor item); + void addItem(QPen item); + void addItems(QList items); + void addItems(QList items); + +public slots: + void setCurrentColor(QColor item); + +protected: + virtual void setActivatorSpecs(FFAbstractButton* item); + virtual QVariant activatorSpecs(); + +private: + void addItem(QVariant item); + +}; +/** + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + * + * @brief A class of buttons with painted color + */ +class FFColorButton : public FFAbstractButton +{ + Q_OBJECT +public: + FFColorButton(QWidget* parent=0); + virtual ~FFColorButton(); + + QColor color(); + void setColor(QColor color); + +protected: + void paintEvent(QPaintEvent* event); + +}; + +#endif // FFCOLORCOMBOBOX_H diff --git a/libffqw-1.0/sources/ffdpad.cpp b/libffqw-1.0/sources/ffdpad.cpp new file mode 100644 index 0000000..9381c3d --- /dev/null +++ b/libffqw-1.0/sources/ffdpad.cpp @@ -0,0 +1,268 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffdpad.cpp + * @brief Implementation of the FFDPad class + * + * @author ComArch S.A. + * @date 2009.08.11 + * @version 1.0 + */ +#include "ffdpad.h" + + +/** + * Constructs a FFDPad with a parent + */ +FFDPad::FFDPad(QWidget* parent) : + FFAbstractWidget(parent), size_(DEFAULT_SIZE, DEFAULT_SIZE) +{ + init(); +} + +/** + * Constructs a FFDPad with given size and parent. + */ +FFDPad::FFDPad(QSize size, QWidget* parent) : + FFAbstractWidget(parent) +{ + this->size_ = QSize(size.width(),size.height()); + init(); +} + +/** A virtual destructor */ +FFDPad::~FFDPad() +{ + ; +} +/** + * Initiates FFDPad class. Sets all needed fields, connections and calls. + * It is called by all constructors. + */ +void FFDPad::init() +{ + + //sets size policy + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + setMinimumSize(QSize(DEFAULT_MIN_SIZE, DEFAULT_MIN_SIZE)); + + //Sets default values + + + path = DPAD_PATH; + ax = 0; + ay = 0; + + if(size_.height() <= 0 || size_.width() <= 0) + { + this->size_ = QSize(DEFAULT_SIZE,DEFAULT_SIZE); + } + + layout = new QGridLayout(this); + layout->setMargin(0); + layout->setSpacing(0); + + background = new FFViewCache(this); + + //creates FFDPadButtons + buttonUp = new FFDPadButton(path + "_button_up", + DPAD_UP, + this); + buttonDown = new FFDPadButton(path + "_button_down", + DPAD_DOWN, + this); + buttonLeft = new FFDPadButton(path + "_button_left", + DPAD_LEFT, + this); + buttonRight = new FFDPadButton(path + "_button_right", + DPAD_RIGHT, + this); + //connects + connect(buttonUp,SIGNAL(clicked(int)),this,SIGNAL(clicked(int))); + connect(buttonDown,SIGNAL(clicked(int)),this,SIGNAL(clicked(int))); + connect(buttonLeft,SIGNAL(clicked(int)),this,SIGNAL(clicked(int))); + connect(buttonRight,SIGNAL(clicked(int)),this,SIGNAL(clicked(int))); + + //adds buttons to layout + layout->addWidget(buttonUp, 0, 0, 1, 1); + layout->addWidget(buttonDown, 0, 0, 1, 1); + layout->addWidget(buttonLeft, 0, 0, 1, 1); + layout->addWidget(buttonRight, 0, 0, 1, 1); + + this->setSize(size_); + + background->init(path + "_background.svg"); + background->updateView(size_); + +} + + +/** + * Returns size of FFDPad + */ +QSize FFDPad::size() const +{ + return this->geometry().size(); +} + +/** + * Sets FFDPad's size. + * If both edges are equal FFDPad have it`s maximum size cause it is always square. + * If size`s parameters are not equal then FFDPad is located in center of the widget. + * @param size Size of FFDPad widget + */ +void FFDPad::setSize(QSize size) +{ + calculateSize(size); + buttonUp -> setSize(size_); + buttonDown -> setSize(size_); + buttonLeft -> setSize(size_); + buttonRight -> setSize(size_); + setGeometry(geometry().x(), geometry().y(), size.width(), size.height()); +} + +/** + * Updates FFDPad view and events' mask after changing size of the widget, + * only when resizable_ is set up. + * Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFDPad::resizeEvent(QResizeEvent* event) +{ + calculateSize(event->size()); + buttonUp -> setSize(size_); + buttonDown -> setSize(size_); + buttonLeft -> setSize(size_); + buttonRight -> setSize(size_); + background -> updateView(size_); + ax = 0; + ay = 0; + + if(event ->size().width() > event -> size().height()) + { + ax = (size_.width() - event -> size().width()) / 2; + } + else + { + ay = (size_.height() - event -> size().height()) / 2; + } + + buttonUp -> move(-ax, -ay); + buttonDown -> move(-ax, -ay); + buttonLeft -> move(-ax, -ay); + buttonRight -> move(-ax, -ay); + +} + +/** + * Repaints the view of the FFDPAd. Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFDPad::paintEvent(QPaintEvent* event) +{ + Q_UNUSED(event) + QPainter paint(this); + paint.setOpacity(0.3); + paint.drawPixmap(-ax, -ay, background->pixmap()); +} + +/** + * Check and save size of the widget. Determine the size of the square. + * @param size Size to calculate square. + */ +void FFDPad::calculateSize(QSize size) +{ + if(size.height() <= 0 || size.width() <= 0) + { + this->size_ = QSize(DEFAULT_SIZE, DEFAULT_SIZE); + } + else + { + if(size.width() > size.height()) + { + this->size_ = QSize(size.height(),size.height()); + } + else + { + this->size_ = QSize(size.width(),size.width()); + } + } + update(); +} + +/** + \fn void FFDPad::clicked(int type) + + This signal is emitted when the one of four buttons will be released. + */ diff --git a/libffqw-1.0/sources/ffdpad.h b/libffqw-1.0/sources/ffdpad.h new file mode 100644 index 0000000..0aef2df --- /dev/null +++ b/libffqw-1.0/sources/ffdpad.h @@ -0,0 +1,169 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffdpad.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.11 + * @version 1.0 + */ +#ifndef FFDPAD_H +#define FFDPAD_H + +#include +#include + +#ifndef MAEMO +#include +#endif + +#include "ffdpadbutton.h" +#include "ffviewcache.h" +#include "ffabstractwidget.h" + + +static const QString DPAD_PATH= ":/standard/dpad";///< a part of path to graphics file + +static const int DEFAULT_SIZE = 150; ///< defines a default size of FFDPad +static const int DEFAULT_MIN_SIZE = 100; //< defines a min size of FFDPad + + +/** + * @author ComArch S.A. + * @date 2009.08.11 + * @version 1.0 + * + * @brief A class of 4-way button + */ +#ifdef MAEMO + +class FFDPad : public FFAbstractWidget +{ + Q_OBJECT + +#else + +class QDESIGNER_WIDGET_EXPORT FFDPad : public FFAbstractWidget +{ + Q_OBJECT + Q_PROPERTY(QSize size READ size WRITE setSize) + +#endif +public: + FFDPad(QWidget* parent = 0); + FFDPad(QSize size, QWidget* parent = 0); + virtual ~FFDPad(); + + enum BUTTON_TYPE + { + DPAD_LEFT, //!< signal from left button + DPAD_RIGHT, //!< signal from right button + DPAD_UP, //!< signal from up button + DPAD_DOWN //!< signal from down button + }; + + void setSize(QSize size); + QSize size() const; + + void calculateSize(QSize size); + +signals: + void clicked(int type); + +protected: + virtual void paintEvent(QPaintEvent*); + virtual void resizeEvent(QResizeEvent* event); + +private: + void init(); + + FFViewCache* background; ///< cached dpad's background + + + QGridLayout* layout; ///< a layout of dpad + + FFDPadButton* buttonUp; ///< pointer to the button "Up" + FFDPadButton* buttonDown; ///< pointer to the button "Down" + FFDPadButton* buttonLeft; ///< pointer to the button "Left" + FFDPadButton* buttonRight; ///< pointer to the button "Right" + + QSize size_; ///< size of dpad + QString path; ///< part of path to the graphics file + + int ax; ///< variable used to center dpad's buttons on X axis + int ay; ///< variable used to center dpad's buttons on Y axis +}; + +#endif // FFDPAD_H diff --git a/libffqw-1.0/sources/ffdpadbutton.cpp b/libffqw-1.0/sources/ffdpadbutton.cpp new file mode 100644 index 0000000..c564bbd --- /dev/null +++ b/libffqw-1.0/sources/ffdpadbutton.cpp @@ -0,0 +1,216 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffdpadbutton.cpp + * @brief Implementation of the FFiPadButton class + * + * @author ComArch S.A. + * @date 2009.08.11 + * @version 1.0 + */ + +#include "ffdpadbutton.h" + +/** + * Constructs a FFDPadButton with size and parent. + */ +FFDPadButton::FFDPadButton(QString path, int type, QWidget* parent) : + QAbstractButton(parent) +{ + + //initiates button's elements + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + + this->type_ = type; + + pressed_ = false; + this->path = path; + + this->type_ = type; + buttonView = new FFViewCache(this); + buttonPressedView = new FFViewCache(this); + + buttonView->init(path + ".svg"); + buttonPressedView->init(path + "_pressed.svg"); + updateMask(); +} + +/** A virtual destructor */ +FFDPadButton::~FFDPadButton() +{ + +} + +/** + * Sets size of FFDPadButton + * Calls updateView of FFViewCache objects to fit pixmap's size + * to new FFDPadButton's size. + * Calls updateMask() to set new event's mask for FFDPadButton. + * + * @param size is a new size of FFDPadButton + */ +void FFDPadButton::setSize(QSize size) +{ + + buttonView->updateView(size); + buttonPressedView->updateView(size); + setGeometry(0,0, size.width(),size.height()); + updateMask(); + update(); +} + +/** + * Returns a value that tells if the FFDPadButton is pressed. + */ +bool FFDPadButton::isPressed() const +{ + return pressed_; +} +/** + * Sets FFDPadButton's state. Value "true" means that the FFDPadButton is pressed. + */ +void FFDPadButton::setPressed(bool pressed_) +{ + this->pressed_ = pressed_; +} +/** + * Returns a value defining type of pressed FFDPadButton. + */ +int FFDPadButton::type() const +{ + return type_; +} +/** + * Sets type of FFDPadButton defined in enum BUTTON_TYPE,which is placed + * in file ffdipabutton.h. + */ +void FFDPadButton::setType(int type_) +{ + this->type_ = type_; +} +/** + * Updates events' mask for FFDPadButton based on pixmap + */ +void FFDPadButton::updateMask() +{ + if(pressed_) + setMask(buttonPressedView->pixmap().mask()); + else + setMask(buttonView->pixmap().mask()); +} + +/** + * Repaints the view of FFDPadButton. There are 2 views of FFDiButton for both + * states pressed and unpressed. Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFDPadButton::paintEvent(QPaintEvent *event) +{ + Q_UNUSED(event) + QPainter paint(this); + if(pressed_) + paint.drawPixmap(0, 0, buttonPressedView->pixmap()); + else + paint.drawPixmap(0, 0, buttonView->pixmap()); +} +/** + * Sets pressed_ value on true and calls updateMask() method. + * At the end calls update() method. + * Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFDPadButton::mousePressEvent(QMouseEvent *) +{ + pressed_ = true; + update(); +} +/** + * Sets pressed_ value on false and calls updateMask() and update() method. + * At the end emit buttonClicked() signal. + * Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFDPadButton::mouseReleaseEvent(QMouseEvent *) +{ + pressed_ = false; + update(); + emit clicked(this->type_); +} + +/** + \fn void FFDPadButton::clicked(int type) + + This signal is emitted when the button was released. + +*/ diff --git a/libffqw-1.0/sources/ffdpadbutton.h b/libffqw-1.0/sources/ffdpadbutton.h new file mode 100644 index 0000000..ae29474 --- /dev/null +++ b/libffqw-1.0/sources/ffdpadbutton.h @@ -0,0 +1,130 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffdpadbutton.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.11 + * @version 1.0 + */ +#ifndef FFDPADBUTTON_H_ +#define FFDPADBUTTON_H_ + +#include +#include +#include +#include + +#include "ffviewcache.h" + +/** + * @author ComArch S.A. + * @date 2009.08.11 + * @version 1.0 + * + * @brief A class used by 4-way button + */ +class FFDPadButton : public QAbstractButton +{ +Q_OBJECT +public: + FFDPadButton(QString path, int type, QWidget* parent = 0); + virtual ~FFDPadButton(); + + void updateMask(); + void setSize(QSize); + bool isPressed() const; + int type() const; + void setPressed(bool pressed_); + void setType(int typ_); + +protected: + virtual void paintEvent(QPaintEvent *event); + virtual void mousePressEvent(QMouseEvent*event); + virtual void mouseReleaseEvent(QMouseEvent*event); + +private: + FFViewCache* buttonView; ///< cached dpadbutton's view + FFViewCache* buttonPressedView; ///< cached dpadbutton's clicked view + + QString path; ///< part of path to graphics files + int type_; ///< contains type of button + bool pressed_; ///< is true when button is pressed + +signals: + void clicked(int type); +}; + +#endif /* FFDPADBUTTON_H_ */ diff --git a/libffqw-1.0/sources/fflinecombobox.cpp b/libffqw-1.0/sources/fflinecombobox.cpp new file mode 100644 index 0000000..f969b62 --- /dev/null +++ b/libffqw-1.0/sources/fflinecombobox.cpp @@ -0,0 +1,247 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file fflinecombobox.cpp + * @brief Implementation of the FFLineComboBox class + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + +#include "fflinecombobox.h" + +/** + * Constructs a FFStringComboBox with a parent. + */ +FFLineComboBox::FFLineComboBox(QWidget* parent) : + FFAbstractComboBox(new FFLineButton,parent) +{ + +} + +/** + * A virtual destructor. + */ +FFLineComboBox::~FFLineComboBox() +{ + ; +} +/** + * Adds item to combobox + * @param item is a pen with parameters for new item + */ +void FFLineComboBox::addItem(QPen item) +{ + addItem(QVariant(item)); +} +/** + * Adds items to combobox + * @param items is a list of pens with parameters for new items + */ +void FFLineComboBox::addItems(QList items) +{ + for(int i = 0; i < items.size(); ++i) + { + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFLineButton* temp = new FFLineButton; + temp->setPen(items.at(i)); + + // Second step: You must call this function with previously prepared button + insertItem(temp, false); + } + emit reset(); +} + +/** + * Sets chosen value of FFLineComboBox on activator + * @param item is a pointer to chosen item. + */ +void FFLineComboBox::setActivatorSpecs(FFAbstractButton* item) +{ + if(FFLineButton* but = dynamic_cast(item)) + { + dynamic_cast(activator_)->setPen(but->pen()); + } +} +/** + * Returns QVariant element containing value of chosen item + */ +QVariant FFLineComboBox::activatorSpecs() +{ + return QVariant(dynamic_cast(activator_)->pen()); +} + +/** + * Sets actual line's style. If a style is not in linecombobox nothing happens. + *@param style is a style of pen to set + */ +void FFLineComboBox::setCurrentLine(Qt::PenStyle style) +{ + for(int i = 0; i < items_.size(); ++i) + { + if(dynamic_cast(items_[i])->pen().style() == style) + { + setCurrentItem(i); + return; + } + } +} + +/** + * Sets actual line's thickness. If thickness is not in linecombobox nothing happens. + * @param thickness is a thickness of pen to set + */ +void FFLineComboBox::setCurrentLine(int thickness) +{ + for(int i = 0; i < items_.size(); ++i) + { + if(dynamic_cast(items_[i])->pen().width() == thickness) + { + setCurrentItem(i); + return; + } + } +} + +// ##################################################################### PRIVATE + +/** + * Adds new item to FFLineComboBox + */ +void FFLineComboBox::addItem(QVariant spec) +{ + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFLineButton* temp = new FFLineButton; + temp->setPen(spec.value()); + + // Second step: You must call this function with previously prepared button + insertItem(temp); +} + +/** + * Constructs FFLineButton with parent + */ + +FFLineButton::FFLineButton(QWidget* parent) : + FFScrollingButton(parent) +{ + + setDescription(""); + setTitle(""); +} +/** + * A virtual destructor + */ +FFLineButton::~FFLineButton() +{ + ; +} + +// ################################################################### PROTECTED +/** + * Serves paint event, draws line. Overrides parent's method + * @param event Contains all informations about event. + */ +void FFLineButton::paintEvent(QPaintEvent* event) +{ + FFScrollingButton::paintEvent(event); + + + QPainter painter; + painter.begin(this); + + painter.setPen(pen_); + + painter.drawLine(indent() + leftMargin(), + 0.5 * height(), + width() - indent() -rightMargin(), + 0.5 * height()); + painter.end(); +} +/** + * Sets title of linecombobox + */ +void FFLineComboBox::setTitle(QString title) +{ + dynamic_cast(activator_)->setTitle(title); +} + +/** + * Returns title of line combobox + */ +QString FFLineComboBox::title() +{ + return dynamic_cast(activator_)->title(); +} diff --git a/libffqw-1.0/sources/fflinecombobox.h b/libffqw-1.0/sources/fflinecombobox.h new file mode 100644 index 0000000..70575c6 --- /dev/null +++ b/libffqw-1.0/sources/fflinecombobox.h @@ -0,0 +1,149 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file fflinecombobox.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + +#ifndef FFLINECOMBOBOX_H +#define FFLINECOMBOBOX_H + +#include +#include +#include + +#ifndef MAEMO +#include +#endif + +#include "ffabstractcombobox.h" +#include "ffscrollingbutton.h" +/** + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + * + * @brief A class of combobox with lines + */ + +#ifdef MAEMO + +class FFLineComboBox : public FFAbstractComboBox + +#else + +class QDESIGNER_WIDGET_EXPORT FFLineComboBox : public FFAbstractComboBox + +#endif +{ + Q_OBJECT + +public : + FFLineComboBox(QWidget* parent = 0); + virtual ~FFLineComboBox(); + + void addItem(QPen item); + void addItems(QList items); + void setTitle(QString title); + QString title(); +public slots: + void setCurrentLine(Qt::PenStyle style); + void setCurrentLine(int thickness); + +protected: + virtual void setActivatorSpecs(FFAbstractButton* item); + virtual QVariant activatorSpecs(); + +private : + void addItem(QVariant item); + QString title_; +}; + +class FFLineButton : public FFScrollingButton +{ +Q_OBJECT +public: + FFLineButton(QWidget* parent = 0); + virtual ~FFLineButton(); + +protected: + void paintEvent(QPaintEvent* event); + +}; + +#endif // FFLINECOMBOBOX_H diff --git a/libffqw-1.0/sources/ffscrollarea.cpp b/libffqw-1.0/sources/ffscrollarea.cpp new file mode 100644 index 0000000..9bcfdd4 --- /dev/null +++ b/libffqw-1.0/sources/ffscrollarea.cpp @@ -0,0 +1,422 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollarea.cpp + * @brief Implementation of the FFScrollArea class + * + * @author ComArch S.A. + * @date 2009.09.20 + * @version 1.0 + */ + +#include "ffscrollarea.h" +#include +#include +#include +#include + +//defines view of scrollbars +#define SCROLLBAR_STYLE " \ + QScrollBar:vertical, QScrollBar:horizontal { \ + border: 0px solid transparent; \ + background: transparent; \ + width: 5px; \ + height: 5px; /* change this to 5px or more to see horizontal scrollbar */\ + margin: 2px 2px 2px 2px; \ + } \ + QScrollBar::sub-page, QScrollBar::add-page { \ + background: rgb(45,45,45); \ + } \ + QScrollBar::handle:vertical { \ + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, \ + stop:0 rgba(30,30,30,0), stop: 0.1 #1d1, stop:0.9 #2e2, stop: 1 rgba(30,30,30,0)); \ + min-height: 25px; \ + } \ + QScrollBar::handle:horizontal { \ + background: qlineargradient(x1:0, y1:0, x2:1, y2:0, \ + stop:0 rgba(30,30,30,0), stop: 0.1 #1d1, stop:0.9 #2e2, stop: 1 rgba(30,30,30,0)); \ + min-width: 25px; \ + } \ + QScrollBar::add-line, QScrollBar::sub-line { \ + border: 0px solid transparent; \ + } \ + QScrollArea { \ + background-color: #222; color: #ddd; \ + } \ +" + +/** + * Constructs FFScrollArea with parent + */ +FFScrollArea::FFScrollArea(QWidget* parent) : + QScrollArea(parent) +{ + init(); +} +/** + * A virtual destructor + */ +FFScrollArea::~FFScrollArea() +{ + +} +/** + * Initiates FFScrollArea class. Sets all needed fields, connections and calls. + * It is called by the constructor. + */ +void FFScrollArea::init() +{ + //sets FFScrollArea view properties + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + this->setFrameStyle(0); + setStyleSheet(SCROLLBAR_STYLE); + setStyleSheet("background-color: transparent"); + //initiates all fields with default values + moved = false; + animate = false; + + oldPos = QPointF(0, 0); + prevPos = QPointF(0, 0); + pos = QPointF(0, 0); + speed = QPointF(0, 0); + movement = QPointF(0, 0); + + x = 0; + y = 0; + + slowingDownRate_ = DEFAULT_SLOWING_DOWN_RATE; + postionSumplingTime_ = DEFAULT_POSIOTION_SUMPLING_TIME; + kineticAnimationTime_ = DEFAULT_KINETIC_ANIMATION_TIME; + minMotionLength_ = DEFAULT_MIN_MOTION_LENGTH; + + timerPos.stop(); + timerAnim.stop(); + + //connects signals and slots + connect(&timerPos, SIGNAL(timeout()), this, SLOT(updatePos())); + connect(&timerAnim, SIGNAL(timeout()), this, SLOT(animation())); +} + +/** + * Method using to serve events. Overrides the virtual method from parent. + * + * @param object is a pointer handled object + * @param ev is a pointer to handled event + */ + +bool FFScrollArea::eventFilter(QObject* object, QEvent* ev) +{ + //Does nothing when QEvent type is Paint + if(ev->type() == QEvent::Paint) + return false; + + if(QMouseEvent* event = dynamic_cast(ev)) + { + //Serves MouseButtonPressEvent + if(event->type() == QEvent::MouseButtonPress) + { + + moved = false; + movement = QPointF(0, 0); + timerAnim.stop(); + if(event) + { + //sets started values after each press event + x = event->globalX(); + y = event->globalY(); + prevPos = event->globalPos(); + oldPos = event->globalPos(); + speed = QPointF(0.0, 0.0); + pos = QPointF(0.0, 0.0); + + //starts position sampling timer + timerPos.start(postionSumplingTime_); + } + else + { + return 0; + } + + } + //Serves MouseMoveEvent + if(event->type() == QEvent::MouseMove) + { + + //sets and calculates motion parameters + int offsetY = event->globalY() - y; + int offsetX = event->globalX() - x; + + int valY = this->verticalScrollBar()->value() - offsetY; + int valX = this->horizontalScrollBar()->value() + - offsetX; + + y = event->globalY(); + x = event->globalX(); + + //If motion length is shorter then minMotionLength_ + //scrollbars postion will be not set. + if(minMotionLength_ < qAbs(movement.y()) + || minMotionLength_ + < qAbs(movement.x())) + { + //sets new scrollBars' values + this->verticalScrollBar()->setValue(valY); + this->horizontalScrollBar()->setValue(valX); + moved = true; + + } + + //Updates parameters + movement.setY(movement.y() + qAbs(prevPos.y() + - event->globalY())); + movement.setX(movement.x() + qAbs(prevPos.x() + - event->globalX())); + + prevPos = event->globalPos(); + } + //Serves MouseButtonReleaseEvent + if(event->type() == QEvent::MouseButtonRelease) + { + //Stops position's sampling + timerPos.stop(); + + if(moved) + { + //blocks signals + object->blockSignals(true); + object->event(event); + object->blockSignals(false); + + //sets cursor position after + //MouseButtonReleaseEvent + pos.setY((float)(this->verticalScrollBar()->value())); + pos.setX((float)(this->horizontalScrollBar()->value())); + + //starts animation + timerAnim.start(kineticAnimationTime_); + return true; + } + else + { + //do nothing + return false; + } + } + } + //calls parent's event filter + return QScrollArea::eventFilter(object, ev); +} + +/** + * Sets widget on FFScrollArea + * Overrides the virtual method from parent. + * + * @param widget pointer to setting widget + */ + +void FFScrollArea::setWidget(QWidget* widget) +{ + //calls parent method + ((QScrollArea*)this)->setWidget(widget); + //calls method to install EventFilter + installFilterRecursive(widget); +} +/** + * Installs eventFilter to each widget on FFScrollArea + * + * @param wdg pointer to widget to which eventFilter is installing. + */ +void FFScrollArea::installFilterRecursive(QWidget* wdg) +{ + if(!wdg) + return; + //Installs eventFilter to current widget + wdg->installEventFilter(this); + + //Calls installFilterRecursive to all children + const QList widgets = wdg->children(); + for(int i = 0; i < widgets.length(); ++i) + { + QWidget* wdg = dynamic_cast (widgets.at(i)); + if(wdg) + installFilterRecursive(wdg); + } +} +/** + * Updates motion's speed and cursor's position + */ +void FFScrollArea::updatePos() +{ + //sets motion's speed + speed.setY(oldPos.y() - this->cursor().pos().y()); + speed.setX(oldPos.x() - this->cursor().pos().x()); + //sets current cursor's position + oldPos = this->cursor().pos(); + +} + +/** + * Method responsible for kinetic's animation. + */ + +void FFScrollArea::animation() +{ + //If speed is less then 1 animations is stopped + if(1 < qAbs(speed.x()) || 1 < qAbs(speed.y())) + { + //updates position + pos.setY(pos.y() + speed.y()); + pos.setX(pos.x() + speed.x()); + + //sets new position on scrollbars + this->verticalScrollBar()->setValue((int)pos.y()); + this->horizontalScrollBar()->setValue((int)pos.x()); + + //updates speed + speed.setY(speed.y() * slowingDownRate_); + speed.setX(speed.x() * slowingDownRate_); + } + else + { + //Stops animation + timerAnim.stop(); + } +} + +/** + * Returns rate responsible for kinetic speed slowing + */ +float FFScrollArea::getSlowingDownRate() const +{ + return slowingDownRate_; +} +/** + * Sets rate responsible for kinetic speed slowing + */ +void FFScrollArea::setSlowingDownRate(float slowingDownRate_) +{ + this->slowingDownRate_ = slowingDownRate_; +} + +/** + * Returns kinetic animation frame time in ms. + */ +int FFScrollArea::getKineticAnimationTime() const +{ + return kineticAnimationTime_; +} + +/** + * Sets kinetic animation frame time in ms. + */ +void FFScrollArea::setKineticAnimationTime(int kineticAnimationTime_) +{ + this->kineticAnimationTime_ = kineticAnimationTime_; +} + +/** + * Returns cursor position sampling time in ms. + */ +int FFScrollArea::getPostionSumplingTime() const +{ + return postionSumplingTime_; +} + +/** + * Sets cursor position sampling time in ms. + */ +void FFScrollArea::setPostionSumplingTime(int postionSumplingTime_) +{ + this->postionSumplingTime_ = postionSumplingTime_; +} + +/** + * Sets value needed to blocking signals + * + */ +void FFScrollArea::setMinMotionLength(int minMotionLength_) +{ + this->minMotionLength_ = minMotionLength_; +} + +/** + * Returns value needed to blocking signals + */ +int FFScrollArea::getMinMotionLength() const +{ + return minMotionLength_; +} + + diff --git a/libffqw-1.0/sources/ffscrollarea.h b/libffqw-1.0/sources/ffscrollarea.h new file mode 100644 index 0000000..1045c0e --- /dev/null +++ b/libffqw-1.0/sources/ffscrollarea.h @@ -0,0 +1,152 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollarea.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.09.20 + * @version 1.0 + */ + +#ifndef QFFSCROLLAREA_H +#define QFFSCROLLAREA_H + +#include +#include +#include +#include +#include +#include +#include + +static const float DEFAULT_SLOWING_DOWN_RATE = 0.85; +static const int DEFAULT_POSIOTION_SUMPLING_TIME = 80; +static const int DEFAULT_KINETIC_ANIMATION_TIME = 50; +static const int DEFAULT_MIN_MOTION_LENGTH = 20; + +/** + * @author ComArch S.A. + * @date 2009.09.20 + * @version 1.0 + * + * @brief A class providing a scrolling view onto another widget. + */ +class FFScrollArea : public QScrollArea +{ + Q_OBJECT + +public: + FFScrollArea(QWidget* parent = 0); + ~FFScrollArea(); + bool eventFilter(QObject * o, QEvent *event); + void setWidget(QWidget* widget); + + void init(); + float getSlowingDownRate() const; + void setSlowingDownRate(float slowingDownRate_); + int getKineticAnimationTime() const; + void setKineticAnimationTime(int kineticAnimationTime_); + int getPostionSumplingTime() const; + void setPostionSumplingTime(int postionSumplingTime_); + int getMinMotionLength() const; + void setMinMotionLength(int minMotionLength_); + +private: + bool moved; ///< is true when widget on scrolarea is moved + bool animate; ///< is true when animation is active + + int x; ///< variable to storing cursor global position (X axis) + int y; ///< variable to storing cursor global position (Y axis) + int postionSumplingTime_; ///< period of position sampling + int kineticAnimationTime_; ///< period of one animation's frame + int minMotionLength_; ///< is motion is shorter then this value moved is false + float slowingDownRate_; ///< rate of animation slowing + + QPointF pos; ///< cursor position when button was released + QPointF speed; ///< contains motion speed value during kinetic animation + QPointF movement; ///< way's length traveled during mousemoveevent + QPointF prevPos; ///< is used to moving when area is pressed + QPointF oldPos; ///< is used to kinetic + QTimer timerPos; ///< timer is used to sampling cursor position + QTimer timerAnim; ///< timer is used to kinetic animation + + void installFilterRecursive(QWidget* widget); + +private slots: + void updatePos(); + void animation(); +}; + +#endif // QFFSCROLLAREA_H diff --git a/libffqw-1.0/sources/ffscrollingbutton.cpp b/libffqw-1.0/sources/ffscrollingbutton.cpp new file mode 100644 index 0000000..77b5d8d --- /dev/null +++ b/libffqw-1.0/sources/ffscrollingbutton.cpp @@ -0,0 +1,581 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollingbutton.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + */ + +#include "ffscrollingbutton.h" + +/** + * Constructs a FFScrollingButton with a parent. + * Sets variable to initial values and set graphics used in widget. + */ +FFScrollingButton::FFScrollingButton(QWidget* parent) : + FFAbstractButton(parent) +{ + init(); +} + +/** + * Constructs a FFScrollingButton with a parent , title and description. + * Sets variable to initial values and sets graphics used in widget. + */ +FFScrollingButton::FFScrollingButton(QString title, QString description, QWidget* parent) : + FFAbstractButton(parent) +{ + init(); + title_->setText(title); + description_->setText(description); +} + + +/** + * A virtual destructor. + */ +FFScrollingButton::~FFScrollingButton() +{ + ; +} + +/** + * Initiates an object of FFScrollingButton. Sets all needed fields. + */ +void FFScrollingButton::init() +{ + //sets title's label + title_ = new FFScrollingLabel(this); + title_->setResizable(true); + title_->setColor(FF_TITLE_COLOR); + title_->show(); + + //sets desciption's label + description_ = new FFScrollingLabel(this); + description_->setResizable(true); + description_->setColor(FF_DESCRIPTION_COLOR); + description_->show(); + + //sets indents + titleIndent_ = indent(); + descriptionIndent_ = indent(); + + titleIndentTemp = indent(); + descriptionIndentTemp = indent(); + + //sets switches + titleSwitch_ = true; + descriptionSwitch_ = true; + + //sets margins + setTopMargin(DEFAULT_TOPBOTTOM_MARGIN); + setBottomMargin(DEFAULT_TOPBOTTOM_MARGIN); + + //sets ratio + ratio_ = DEFAULT_RATIO; +} + +/** + * Returns the text from FFScrollingLabel named title + */ +QString FFScrollingButton::title() const +{ + return title_->text(); +} + +/** + * Returns alignment of title. + */ +FFScrollingLabel::Alignment FFScrollingButton::titleAlignment() const +{ + return titleWidget()->alignment(); +} + +/** + * Returns title`s color. + */ +QColor FFScrollingButton::titleColor() const +{ + return title_->color(); +} + +/** + * Returns title`s indent. + */ +int FFScrollingButton::titleIndent() const +{ + return titleIndent_; +} + +/** + * Returns title`s font. + */ +QFont FFScrollingButton::titleFont() const +{ + return title_->font(); +} + +/** + * Returns the text from FFScrollingLabel named description. + */ +QString FFScrollingButton::description() const +{ + return description_->text(); +} + +/** + * Return alignment of description. + */ +FFScrollingLabel::Alignment FFScrollingButton::descriptionAlignment() const +{ + return descriptionWidget()->alignment(); +} + +/** + * Return description`s color. + */ +QColor FFScrollingButton::descriptionColor() const +{ + return description_->color(); +} + +/** + * Returns description`s indent. + */ +int FFScrollingButton::descriptionIndent() const +{ + return descriptionIndent_; +} + +/** + * Returns description`s font. + */ +QFont FFScrollingButton::descriptionFont() const +{ + return description_->font(); +} + +/** + * Returns ratio. + */ +float FFScrollingButton::ratio() const +{ + return ratio_; +} + +/** + * Sets a text of the title. + * @param title Title text. + */ +void FFScrollingButton::setTitle(const QString& title) +{ + title_->setText(title); + update(); +} + +/** + * Sets a alignment of the title. + * @param alignment Title text. + */ +void FFScrollingButton::setTitleAlignment(FFScrollingLabel::Alignment alignment) +{ + titleWidget()->setAlignment(alignment); + update(); +} + +/** + * Sets a color of text on title. + * @param color Color of title. + */ +void FFScrollingButton::setTitleColor(QColor color) +{ + title_->setColor(color); + update(); +} + +/** + * Sets a font that will be used to print the text of the title. + * @param font Font style. + */ +void FFScrollingButton::setTitleFont(QFont font) +{ + title_->setFont(font); + update(); +} + +/** + * Sets Indent of title. + * @param indent Indent of title. + */ +void FFScrollingButton::setTitleIndent(int indent) +{ + titleIndent_ = indent; + titleIndentTemp = indent; + updateView(); +} + +/** + * Sets a text of the description. + * @param text Description text + */ +void FFScrollingButton::setDescription(const QString& text) +{ + description_->setText(text); + update(); +} + +/** + * Sets a alignment of the title. + * @param alignment Title text. + */ +void FFScrollingButton::setDescriptionAlignment(FFScrollingLabel::Alignment alignment) +{ + descriptionWidget()->setAlignment(alignment); + update(); +} + +/** + * Sets a color of text on description. + * @param color Color of description. + */ +void FFScrollingButton::setDescriptionColor(QColor color) +{ + description_->setColor(color); + update(); +} + +/** + * Sets a font that will be used to print the text of the description. + * @param font Font style. + */ +void FFScrollingButton::setDescriptionFont(QFont font) +{ + description_->setFont(font); + update(); +} + +/** + * Sets Indent of description. + * @param indent Indent of description. + */ +void FFScrollingButton::setDescriptionIndent(int indent) +{ + descriptionIndent_ = indent; + descriptionIndentTemp = indent; + updateView(); +} + +/** + * Sets ratio. + * @param ratio Ratio between size of title and description. + */ +void FFScrollingButton::setRatio(float ratio) +{ + if(ratio >= 0.05 && ratio <= 0.95) + { + ratio_ = ratio; + } + else if(ratio < 0.05) + { + ratio_ = 0.05; + } + else + { + ratio_ = 0.95; + } + calculateRatio(); + updateView(); +} + +/** + * Disables title. Show/hide title. + * @param state State true/false to set visible of description. + */ +void FFScrollingButton::disableTitle(bool state) +{ + titleSwitch_ = !state; + title_->setVisible(titleSwitch_); + update(); +} + +/** + * Disables description. Show/hide description. + * @param state State true/false to set visible of description. + */ +void FFScrollingButton::disableDescription(bool state) +{ + descriptionSwitch_ = !state; + description_->setVisible(descriptionSwitch_); + update(); +} + +/** + * Returns state of title visibility. If returned value is true visibility is on. + */ +bool FFScrollingButton::isDisabledTitle() +{ + return titleSwitch_; +} + +/** + * Returns state of description visibility. If returned value is true visibility is on. + */ +bool FFScrollingButton::isDisabledDescription() +{ + return descriptionSwitch_; +} + +/** + * Repaints the view of button. Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFScrollingButton::paintEvent(QPaintEvent* event) +{ + FFAbstractButton::paintEvent(event); +} + +/** + * Updates button`s view after changing size of the widget. + * Updates size of all pixmaps which need it (without corners) + * @param event Contains all informations about event. + */ +void FFScrollingButton::resizeEvent(QResizeEvent* event) +{ + FFAbstractButton::resizeEvent(event); + calculateRatio(); + updateView(); +} + +/** + * Support mouse press event. + * @param event Contains all informations about event. + */ +void FFScrollingButton::mousePressEvent(QMouseEvent* event) +{ + FFAbstractButton::mousePressEvent(event); +} + +/** + * Support mouse release event. + * @param event Contains all informations about event. + */ +void FFScrollingButton::mouseReleaseEvent(QMouseEvent* event) +{ + FFAbstractButton::mouseReleaseEvent(event); +} + +/** + * Paints icon if it was set. + * @param painter is a tool to paint icon on widget. + */ +void FFScrollingButton::paintIcon(QPainter* painter) +{ + int move = 0; + if(iconAlignment_ == Qt::AlignLeft) + { + move = titleIndent_; + } + else + { + move = -titleIndent_; + } + + // if icon was set paint it + + if (!icon().isNull()) + { + QRect rect(0+leftMargin() + move, + 0+topMargin(), + geometry().width()-rightMargin()-leftMargin() , + geometry().height()-bottomMargin()-topMargin()); + + //paint icon in button center + icon().paint(painter,rect,iconAlignment_,QIcon::Normal, QIcon::Off); + } +} + +/** + * Returns pointer to title FFScrolingLabel. + */ +FFScrollingLabel* FFScrollingButton::titleWidget() const +{ + return title_; +} + +/** + * Returns pointer to description FFScrolingLabel. + */ +FFScrollingLabel* FFScrollingButton::descriptionWidget() const +{ + return description_; +} + +/** + * Changes tRatio - title ratio and dRatio - description ratio to show/not show title/description. + */ +void FFScrollingButton::calculateRatio() +{ + if(titleSwitch_ && descriptionSwitch_) // show title and description + { + tRatio = ratio_; + dRatio = 1.0 - ratio_; + } + else if(!titleSwitch_ && descriptionSwitch_) // show only description + { + tRatio = 0; + dRatio = 1; + } + else if(titleSwitch_ && !descriptionSwitch_) // show only title + { + tRatio = 1; + dRatio = 0; + } +} + +/** + * Scales title and description indent. When resize event appears and calls out scaleIndent it changes indents to fit to new size. + * @param oldSize Old size of widget. + * @param newSize New size of widget. + */ +void FFScrollingButton::scaleIndent(QSize oldSize, QSize newSize) +{ + float widthProportion = (float)newSize.width() / (float)oldSize.width(); + + titleIndentTemp *= widthProportion; + descriptionIndentTemp *= widthProportion; + + titleIndent_ = titleIndentTemp; + descriptionIndent_ = descriptionIndentTemp; +} + +/** + * Recalculates geometry of labels (indent, margins etc.) + */ +void FFScrollingButton::updateView() +{ + // sets neede values + int margins = topMargin() + bottomMargin() + hSpacing(); + + int xT = 0; + int xD = 0; + + int w = 0; + + w = width() - 2 * descriptionIndent_ - leftMargin() - rightMargin() - iconSpace; + //values depend from alignment + if(iconAlignment() == Qt::AlignLeft) + { + xT = leftMargin() + titleIndent_ + iconSpace; + xD = leftMargin() + descriptionIndent_ + iconSpace; + + } + else + { + xT = leftMargin() + titleIndent_; + xD = leftMargin() + descriptionIndent_; + } + //sets geometry of labels with texts + title_->setGeometry(xT, + topMargin(), + w, + (height() - margins) * tRatio); + + description_->setGeometry(xD, + topMargin() + title_->size().height() + hSpacing(), + w , + (height() - margins) * dRatio); + + update(); + FFAbstractButton::updateView(); +} +/** + * Sets icon's alignment + */ +void FFScrollingButton::setIconAlignment(Qt::Alignment iconAlignment) +{ + switch(iconAlignment) + { + case Qt::AlignLeft: + case Qt::AlignRight: + FFAbstractButton::setIconAlignment(iconAlignment); + break; + default: + qDebug() << "You can only use Qt::AlignLeft or Qt::AlignRight"; + break; + } +} +// ####################################################### PRIVATE diff --git a/libffqw-1.0/sources/ffscrollingbutton.h b/libffqw-1.0/sources/ffscrollingbutton.h new file mode 100644 index 0000000..3646cc4 --- /dev/null +++ b/libffqw-1.0/sources/ffscrollingbutton.h @@ -0,0 +1,216 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollingbutton.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + */ + +#ifndef FFSCROLLINGBUTTON_H +#define FFSCROLLINGBUTTON_H + +#ifndef MAEMO +#include +#endif + +#include "ffabstractbutton.h" +#include "ffviewcache.h" +#include "ffscrollinglabel.h" + +/** + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + * + * @brief A class responsible for button with 2 labels + */ +const int DEFAULT_TOPBOTTOM_MARGIN = 2; ///< Default top and bottom margin +const float DEFAULT_RATIO = 0.3; ///< Default title/description height ratio + +#ifdef MAEMO + +class FFScrollingButton : public FFAbstractButton +{ + Q_OBJECT + +#else + +class QDESIGNER_WIDGET_EXPORT FFScrollingButton : public FFAbstractButton +{ + Q_OBJECT + + Q_PROPERTY(QString title READ title WRITE setTitle) + Q_PROPERTY(QString description READ description WRITE setDescription) + + Q_PROPERTY(qreal ratio READ ratio WRITE setRatio) + + Q_PROPERTY(QColor titleColor READ titleColor WRITE setTitleColor) + Q_PROPERTY(QColor descriptionColor READ descriptionColor WRITE setDescriptionColor) + + Q_PROPERTY(int titleIndent READ titleIndent WRITE setTitleIndent) + Q_PROPERTY(int descriptionIndent READ descriptionIndent WRITE setDescriptionIndent) + + Q_PROPERTY(QFont titleFont READ titleFont WRITE setTitleFont) + Q_PROPERTY(QFont descriptionFont READ descriptionFont WRITE setDescriptionFont) + + Q_PROPERTY(bool titleDisabled READ isDisabledTitle WRITE disableTitle) + Q_PROPERTY(bool descriptionDisabled READ isDisabledDescription WRITE disableDescription) + + Q_PROPERTY(FFScrollingLabel::Alignment titleAlignment READ titleAlignment WRITE setTitleAlignment) + Q_PROPERTY(FFScrollingLabel::Alignment descriptionAlignment READ descriptionAlignment WRITE setDescriptionAlignment) + +#endif + +public: + FFScrollingButton(QWidget* parent = 0); + FFScrollingButton(QString title, QString description, QWidget* parent = + 0); + virtual ~FFScrollingButton(); + + QString title() const; + FFScrollingLabel::Alignment titleAlignment() const; + QColor titleColor() const; + int titleIndent() const; + QFont titleFont() const; + + QString description() const; + FFScrollingLabel::Alignment descriptionAlignment() const; + QColor descriptionColor() const; + int descriptionIndent() const; + QFont descriptionFont() const; + + float ratio() const; + + void setTitle(const QString& title); + void setTitleAlignment(FFScrollingLabel::Alignment alignment); + void setTitleColor(QColor color); + void setTitleIndent(int indent); + void setTitleFont(QFont font); + void setDescription(const QString& text); + void setDescriptionAlignment(FFScrollingLabel::Alignment alignment); + void setDescriptionColor(QColor color); + void setDescriptionIndent(int indent); + void setDescriptionFont(QFont font); + + void setRatio(float ratio); + + void disableTitle(bool state); + void disableDescription(bool state); + + bool isDisabledTitle(); + bool isDisabledDescription(); + void setIconAlignment(Qt::Alignment iconAlignment); + +protected: + + int titleIndent_; ///< indnet of title + int descriptionIndent_; ///< indent of description + + bool titleSwitch_; ///< is true when title is visible + bool descriptionSwitch_;///< is true when description is visible + + float ratio_; ///< title/description height ratio + float tRatio; ///< title height ratio + float dRatio; ///< description height ratio + + virtual void paintEvent(QPaintEvent* event); + virtual void resizeEvent(QResizeEvent* event); + virtual void mousePressEvent(QMouseEvent* event); + virtual void mouseReleaseEvent(QMouseEvent* event); + + virtual void paintIcon(QPainter* painter); + + FFScrollingLabel* titleWidget() const; + FFScrollingLabel* descriptionWidget() const; + + void scaleIndent(QSize oldSize, QSize newSize); + + void calculateRatio(); + + virtual void updateView(); + +private: + FFScrollingLabel* description_; ///< is using to displaying description of button + FFScrollingLabel* title_; ///< is using to displaying title of button + + float titleIndentTemp; ///< temporary title's indent + float descriptionIndentTemp; ///< temporary description's indent + + void init(); +}; + +#endif // FFSCROLLINGBUTTON_H diff --git a/libffqw-1.0/sources/ffscrollingcheckbox.cpp b/libffqw-1.0/sources/ffscrollingcheckbox.cpp new file mode 100644 index 0000000..1a2e325 --- /dev/null +++ b/libffqw-1.0/sources/ffscrollingcheckbox.cpp @@ -0,0 +1,318 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollingcheckbox.cpp + * @brief Implementation of the FFScrollingCheckBox class. + * + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + */ + +#include "ffscrollingcheckbox.h" + + +/*Static FFViewCaches -improve performance*/ +FFViewCache* FFScrollingCheckBox::stateTrue = NULL; +FFViewCache* FFScrollingCheckBox::stateFalse = NULL; +/** + * Constructs a FFScrollingCheckBox with a parent. + * Sets variable to initial values and set graphics used in widget. + */ +FFScrollingCheckBox::FFScrollingCheckBox(QWidget* parent) : + FFScrollingButton(parent) +{ + path = SCROLLINGCHECKBOX_PATH; + init(); +} +/** + * Constructs a FFScrollingCheckBox with a parent and new path to + * False/Normal Graphics. + * Set variable to initial values and set graphics used in widget. + */ +FFScrollingCheckBox::FFScrollingCheckBox(const QString& path, QWidget* parent ) : + FFScrollingButton(parent) +{ + this->path = path; + init(); +} + +/** + * A virtual destructor. + */ +FFScrollingCheckBox::~FFScrollingCheckBox() +{ + ; +} + +/** + * Repaint the view of checkbox button. Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFScrollingCheckBox::paintEvent(QPaintEvent* event) +{ + //calls parental paint event + FFAbstractButton::paintEvent(event); + + //sets values for drawing + int x=0,y=0; + if(width() > height()) + { + x = leftMargin() + indent(); + y = topMargin() ; + } + else + { + x = leftMargin() + indent(); + y = topMargin() ; + } + + QPainter painter; + painter.begin(this); + + //draws image. + if( isChecked()) + { + painter.drawPixmap(x,y,stateTrue->pixmap()); + } + else + { + painter.drawPixmap(x,y,stateFalse->pixmap()); + } + painter.end(); +} + +/** + * Updates button`s view after changing size of the widget. + * Update size of all pixmap which need it (without corners) + * @param event Contains all informations about event. + */ +void FFScrollingCheckBox::resizeEvent(QResizeEvent* event) +{ + FFAbstractButton::resizeEvent(event); + calculateRatio(); + updateView(); +} + +/** + * Support mouse press event. + * @param event Contains all informations about event. + */ +void FFScrollingCheckBox::mousePressEvent(QMouseEvent* event) +{ + FFScrollingButton::mousePressEvent(event); +} + +/** + * Support mouse release event. + * @param event Contains all informations about event. + */ +void FFScrollingCheckBox::mouseReleaseEvent(QMouseEvent* event) +{ + if(isClicked_) + { + if(!signalsBlocked()) + { + toggle(); + } + } + FFScrollingButton::mouseReleaseEvent(event); +} +/** + * Paints icon if it was set. + * @param painter is a tool to paint icon on widget. + */ +void FFScrollingCheckBox::paintIcon(QPainter* painter) +{ + // if icon was set paint it + if (!icon().isNull()) + { + QRect rect(0+leftMargin() + qMin(width() - leftMargin() - rightMargin(), + height() - topMargin() - bottomMargin()), + 0+topMargin(), + geometry().width()-rightMargin()-leftMargin(), + geometry().height()-bottomMargin()-topMargin()); + + //paint icon in button center + icon().paint(painter,rect,iconAlignment(),QIcon::Normal, QIcon::Off); + } +} +/** + * Returns text icon space. + */ +int FFScrollingCheckBox::textIconSpace() +{ + return textIconSpace_; +} + +/** + * Initiates an object of FFScrollingCheckBox. Sets all needed fields. + */ +void FFScrollingCheckBox::init() +{ + + + setCheckable(true); + setChecked(false); + textIconSpace_ = DEFAULT_TEXTICON_SPACE; + + if(NULL == stateFalse) + { + stateFalse = new FFViewCache; + stateFalse->init(path + "_false.svg"); + stateFalse->updateView(stateFalse->defaultSize()); + } + + if(NULL == stateTrue) + { + + stateTrue = new FFViewCache; + stateTrue->init(path + "_true.svg"); + stateTrue->updateView(stateTrue->defaultSize()); + } + setTitleIndent(0); + setDescriptionIndent(0); + setMinimumWidth(minimumHeight() + leftMargin() + rightMargin() + indent()); + setMargins(0,0,0,0); +} + +/** + * Sets text icon space + */ +void FFScrollingCheckBox::setTextIconSpace(int textIconSpace) +{ + textIconSpace_=textIconSpace; +} +/** + * Updates button's view parameters + */ +void FFScrollingCheckBox::updateView() +{ + int margins = topMargin() + bottomMargin() + hSpacing(); + int checkboxEdge = qMin(width() - leftMargin() - rightMargin(), + height() - topMargin() - bottomMargin()); + QSize size= QSize(0,0); + if(width() > height()) + { + titleWidget()->setVisible(true); + descriptionWidget()->setVisible(true); + //sets button's labels geometry + titleWidget()->setGeometry(vSpacing() + checkboxEdge + leftMargin() + iconSpace + textIconSpace_ + + titleIndent() + indent(), + topMargin(), + width() - leftMargin() - rightMargin() - titleIndent() - checkboxEdge - hSpacing() - iconSpace - textIconSpace_ - indent(), + (height() - margins) * tRatio); + + descriptionWidget()->setGeometry(vSpacing() + checkboxEdge + leftMargin() + descriptionIndent() + iconSpace + textIconSpace_ + indent(), + topMargin() + titleWidget()->size().height() + hSpacing(), + width() - checkboxEdge - leftMargin() - descriptionIndent() - rightMargin() - hSpacing() - iconSpace - textIconSpace_ - indent(), + (height() - margins) * (dRatio)); + size = QSize(checkboxEdge, checkboxEdge); + } + else + { + size = QSize(width()-(leftMargin() + rightMargin() + 2* indent()),checkboxEdge-(topMargin()+bottomMargin())); + } + + if(minimumSize().width() >= width() ) + { + titleWidget()->setVisible(false); + descriptionWidget()->setVisible(false); + } + + stateFalse->updateView(size); + stateTrue->updateView(size); + + update(); + + //calls update view from parent + FFAbstractButton::updateView(); +} +/** + * Sets icon alignment + * @param iconAlignment contains new alignemnt for icon + */ +void FFScrollingCheckBox::setIconAlignment(Qt::Alignment iconAlignment) +{ + //Sets only possible alignment options + switch(iconAlignment) + { + case Qt::AlignLeft: + FFAbstractButton::setIconAlignment(iconAlignment); + break; + default: + qDebug() << "You can only use Qt::AlignLeft or Qt::AlignRight"; + break; + } +} diff --git a/libffqw-1.0/sources/ffscrollingcheckbox.h b/libffqw-1.0/sources/ffscrollingcheckbox.h new file mode 100644 index 0000000..8f80817 --- /dev/null +++ b/libffqw-1.0/sources/ffscrollingcheckbox.h @@ -0,0 +1,153 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollingcheckbox.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + */ + +#ifndef FFSCROLLINGCHECKBOX_H +#define FFSCROLLINGCHECKBOX_H + + +#ifndef MAEMO +#include +#endif + +#include "ffviewcache.h" +#include "ffscrollinglabel.h" +#include "ffscrollingbutton.h" + +/** + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + * + * @brief A class responsible for button with 2 labels and checkbox + */ + +static const QString SCROLLINGCHECKBOX_PATH = ":/standard/button"; ///< part of path to graphics files +static const int DEFAULT_TEXTICON_SPACE = 10; ///< default space of text icon + +#ifdef MAEMO + +class FFScrollingCheckBox : public FFScrollingButton + +#else + + +class QDESIGNER_WIDGET_EXPORT FFScrollingCheckBox : public FFScrollingButton + +#endif +{ + Q_OBJECT + +public: + FFScrollingCheckBox(QWidget* parent = 0); + virtual ~FFScrollingCheckBox(); + +protected: + FFScrollingCheckBox(const QString& path, QWidget* parent = 0); + virtual void paintEvent(QPaintEvent* event); + virtual void resizeEvent(QResizeEvent* event); + virtual void mousePressEvent(QMouseEvent* event); + virtual void mouseReleaseEvent(QMouseEvent* event); + + virtual void paintIcon(QPainter* painter); + + int textIconSpace(); + + void setTextIconSpace(int textIconSpace); + +private: + + static FFViewCache* stateTrue; ///< cached true icon view + static FFViewCache* stateFalse; ///< cached false icon view + + + QString path ; ///< stores a part of path to the graphics files + int textIconSpace_; ///< stores text icon space + + void init(); + virtual void updateView(); + void setIconAlignment(Qt::Alignment iconAlignment); +signals: + + +}; + +#endif // FFSCROLLINGCHECKBOX_H diff --git a/libffqw-1.0/sources/ffscrollinglabel.cpp b/libffqw-1.0/sources/ffscrollinglabel.cpp new file mode 100644 index 0000000..8bb7ae9 --- /dev/null +++ b/libffqw-1.0/sources/ffscrollinglabel.cpp @@ -0,0 +1,701 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollinglabel.cpp + * @brief Implementation of the FFScrollingLabel class. + * + * @author ComArch S.A. + * @date 2009.08.07 + * @version 1.1 + */ + +#include "ffscrollinglabel.h" + +/** + * Constructs a FFScrollingLabel with a parent. + */ +FFScrollingLabel::FFScrollingLabel(QWidget* parent) : + FFAbstractWidget(parent) +{ + QFont font = QFont(FONT_TEXT_DEF, LABEL_SIZE_NORMAL); + init(DEFAULT_TEXT, font); +} + +/** + * Constructs a FFScrollingLabel with a given text and parent. + */ +FFScrollingLabel::FFScrollingLabel(QString text, QWidget* parent) : + FFAbstractWidget(parent) +{ + QFont font = QFont(FONT_TEXT_DEF, LABEL_SIZE_NORMAL); + init(text, font); +} + +/** + * Constructs a FFScrollingLabel with a given text, font and parent. + */ +FFScrollingLabel::FFScrollingLabel(QString text, QFont font, QWidget* parent) : + FFAbstractWidget(parent) +{ + init(text, font); +} + +/** + * A virtual destructor. + */ +FFScrollingLabel::~FFScrollingLabel() +{ + +} + +/** + * Initiates an object of FFScrollingLabel. Sets all needed fields and calls + * update() method. It is called by all constructors. + * + * @param text a text that will be shown at the label + * @param font a font that will be used to print a text on the label + */ +void FFScrollingLabel::init(QString text, QFont font) +{ + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + + text_ = text; + font_ = font; + + timer = new QTimer(this); + + //connecting timer with method responsible for moving the text + connect(timer, SIGNAL(timeout()), this, SLOT(scrollSideToSide())); + + //setting default values + scrollSpeed_ = -DEFAULT_SCROLL_SPEED; + endScrollDelay_ = DEFAULT_END_SCROLL_DELAY; + color_ = COLOR_TEXT; + resizable_ = true; + fitToFont_ = false; + smoothDisappear_ = true; + painter = new QPainter(); + timerDelay_ = TIMER_DELAY; + alignment_ = ALIGNMENT_LEFT; + + //updating view of the label + updateView(); +} + +/** + * Updates text, font and size of the label. + * Makes that changing text, font or/and s painter->setFont(font_);ize takes effect. It is automatically + * called by resizeEvent(), setFont(), setText(), setSmoothDisappear(), so + * there is no need to call it by you. + */ +void FFScrollingLabel::updateView() +{ + //for calculate width and height of the text using a given font + QFontMetrics textSize(font_); + + //fitting the label's size to the font's size + if(fitToFont_) + { + resize(width(), textSize.size(0, text_).height()); + } + + //creating the gradient used to drawing the text on the label + gradient.setStart(0, 0); + gradient.setFinalStop(width(), 0); + gradient.setColorAt(0.2, color_); + gradient.setColorAt(0.0, Qt::transparent); + gradient.setColorAt(0.8, color_); + gradient.setColorAt(1.0, Qt::transparent); + + //if developer wants a gradient at ends of the label and if text width + //is greater than label width + if(smoothDisappear_ && textSize.size(0, text_).width() > width()) + { + //this pen will be used to drawing the text in paintEvent() + pen.setBrush(QBrush(gradient)); + } + else + { + //this pen will be used to drawing the text in paintEvent() + pen.setBrush(color_); + } + + //calculating length (in pixels) of the text + length_ = textSize.width(text_, text_.length()); + + //resetting text offset (used in text movement) + calcTextPos(); + textOffset = textStartPos; + + //resetting field responsible for freezing text movement at ends + endScrollDelayIterationL = 0; + endScrollDelayIterationR = 0; + + //if the text width is greater than label width and the label is wider + //than 0 pixels + if(length_ > width() && width() > 0) + { + if(timer->isActive() == false) + { + timer->start(timerDelay_); + } + } + else + { + timer->stop(); + } +} + +/** + * Calculates a position of the text's left edge. + */ +void FFScrollingLabel::calcTextPos() +{ + switch(alignment_) + { + case ALIGNMENT_CENTER: + textStartPos = (width() - length_) / 2; + break; + + case ALIGNMENT_LEFT: + textStartPos = 0; + break; + + case ALIGNMENT_RIGHT: + textStartPos = width() - length_; + break; + } +} + +/** + * Changes gradient using to draw a text. + * + * @param left point in which transparent color is changing into a solid color + * @param right point in which a solid color is changing into transparent color + */ +void FFScrollingLabel::changeGradient(qreal left, qreal right) +{ + gradient.setStart(0, 0); + gradient.setFinalStop(width(), 0); + + gradient.setColorAt(0.0, Qt::transparent); + gradient.setColorAt(1.0, Qt::transparent); + gradient.setColorAt(left, color_); + gradient.setColorAt(right, color_); + + pen.setBrush(QBrush(gradient)); + update(); +} + +/** + * Method that implements algorithm to scroll text from side to side. + * It is created as a slot, thus it can be called by a timer. + */ +void FFScrollingLabel::scrollSideToSide() +{ + textOffset += scrollSpeed_; + if(textOffset + length_ - scrollSpeed_ < width()) + { + textOffset -= scrollSpeed_; + if(endScrollDelayIterationR > endScrollDelay_) + { + scrollSpeed_ = -scrollSpeed_; + textOffset += scrollSpeed_; + endScrollDelayIterationR = 0; + changeGradient(0.2, 0.8); + } + else + { + endScrollDelayIterationR++; + changeGradient(0.2, 1); + } + } + else if(textOffset > 0) + { + textOffset -= scrollSpeed_; + + if(endScrollDelayIterationL > endScrollDelay_) + { + scrollSpeed_ = -scrollSpeed_; + textOffset += scrollSpeed_; + endScrollDelayIterationL = 0; + changeGradient(0.2, 0.8); + } + else + { + endScrollDelayIterationL++; + changeGradient(0, 0.8); + } + } + else + { + update(); + } +} + +///////////////////////////////////////////////////////OVERRIDDEN + +/** + * Repaints the view of this label. Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFScrollingLabel::paintEvent(QPaintEvent* event) +{ + Q_UNUSED(event); + + painter->begin(this); + painter->setPen(pen); + painter->setFont(font_); + painter->drawText(textOffset, + 0, + width() - textOffset, + height(), + 0, + text_); + painter->end(); +} + +/** + * Updates label's view after changing size of this widget. It calls update(). + * If resizable is set up it also fits the font size to the label's size. + * Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFScrollingLabel::resizeEvent(QResizeEvent* event) +{ + if(resizable_) + { + font_.setPixelSize(event->size().height() * 0.85 <= 0 ? 1 : event->size().height() * 0.85); + updateView(); + } + if(fitToFont_) + { + fitToFont_ = false; + updateView(); + fitToFont_ = true; + } +} + +/** + * Returns the recommended size for the widget. Overrides the virtual + * method from QWidget. + */ +QSize FFScrollingLabel::sizeHint() const +{ + return QSize(length_, font_.pixelSize()); +} + +/** + * Stops the label's timer when the label is hiding. + * It means if the label is not visible there are no useless calculates. + * @param event Contains all informations about event. + */ +void FFScrollingLabel::hideEvent(QHideEvent* event) +{ + Q_UNUSED(event); + + timer->stop(); + +} + +/** + * Starts the label's timer when the label is showing. + * @param event Contains all informations about event. + */ +void FFScrollingLabel::showEvent(QShowEvent* event) +{ + Q_UNUSED(event); + + if(timer->isActive() == false && length_ > width() && width() > 0) + { + timer->start(timerDelay_); + } + +} + +/** + * Returns the font that is used to printing label-text. + */ +QFont FFScrollingLabel::font() const +{ + return font_; +} + +/** + * Sets a font that will be used to print the text on the label. + * Calls update() method. + */ +void FFScrollingLabel::setFont(QFont font) +{ + this->font_ = font; + updateView(); + update(); +} + +/** + * Sets parameters of the font used to print a text on the label. + * Calls update() method. + */ +void FFScrollingLabel::setFont(int fontParam) +{ + int fontSize = 0; + QString fontType; + //search font size to set + switch(fontParam & SIZE_MASK) + { + case SIZE_TINY: + fontSize = LABEL_SIZE_TINY; + break; + + case SIZE_SMALL: + fontSize = LABEL_SIZE_SMALL; + break; + + case SIZE_NORMAL: + fontSize = LABEL_SIZE_NORMAL; + break; + + case SIZE_LARGE: + fontSize = LABEL_SIZE_LARGE; + break; + + case SIZE_HUGE: + fontSize = LABEL_SIZE_HUGE; + break; + } + + //search font type to set + switch(fontParam & FONT_MASK) + { + case FONT_TITLE: + fontType = FONT_TITLE_DEF; + break; + + case FONT_TEXT: + fontType = FONT_TEXT_DEF; + break; + } + + //search font color to set + switch(fontParam & COLOR_MASK) + { + case COLOR_TITLE: + color_ = COLOR_TITLE_DEF; + break; + + case COLOR_TEXT: + color_ = COLOR_TEXT_DEF; + break; + + case COLOR_BRIGHT_BACKGROUND: + color_ = COLOR_BRIGHT_BACKGROUND_DEF; + break; + + case COLOR_DARK_BACKGROUND: + color_ = COLOR_DARK_BACKGROUND_DEF; + break; + + case COLOR_BRIGHT_FOREGROUND: + color_ = COLOR_BRIGHT_FOREGROUND_DEF; + break; + + case COLOR_DARK_FOREGROUND: + color_ = COLOR_DARK_FOREGROUND_DEF; + break; + } + //search label's alignment to set + alignment_ = Alignment(fontParam & ALIGNMENT_MASK); + switch(alignment_) + { + case ALIGNMENT_CENTER: + textStartPos = (width() - length_) / 2; + break; + + case ALIGNMENT_LEFT: + textStartPos = 0; + break; + + case ALIGNMENT_RIGHT: + textStartPos = width() - length_; + break; + } + + setFont(QFont(fontType, fontSize)); + updateView(); + update(); +} + +/** + * Returns the text printed on the label. + */ +QString FFScrollingLabel::text() const +{ + return text_; +} + +/** + * Sets the text on the label. Calls update() method. + */ +void FFScrollingLabel::setText(QString text) +{ + this->text_ = text; + updateView(); + update(); +} + +/** + * Returns a value that tells if the label is automatically fitting up + * to a layout. + */ +bool FFScrollingLabel::isResizable() const +{ + return resizable_; +} + +/** + * Turns on/off auto-fitting the label size to the layout. If it is set to true + * then with every change of the label's size, the font size will be changed. + * If false, the font size will be fixed. If resizable is true, fitToFont + * property is setting up to false. + */ +void FFScrollingLabel::setResizable(bool resizable) +{ + if((this->resizable_ = resizable)) + { + this->fitToFont_ = false; + } + else + { + + this->fitToFont_ = true; + } + update(); +} + +/** + * Returns the speed of text scrolling. + */ +int FFScrollingLabel::scrollSpeed() const +{ + return scrollSpeed_; +} + +/** + * Sets the speed of text scrolling. + */ +void FFScrollingLabel::setScrollSpeed(int scrollSpeed) +{ + this->scrollSpeed_ = scrollSpeed; + update(); +} + +/** + * Returns time that the text waits between changing move direction. The time is + * calculating as: timerDelay * endScrollDelay. + */ +int FFScrollingLabel::endScrollDelay() const +{ + return endScrollDelay_; +} + +/** + * Sets time that the text waits between changing move direction. The time is + * calculating as: timerDelay * endScrollDelay. + */ +void FFScrollingLabel::setEndScrollDelay(int endScrollDelay) +{ + this->endScrollDelay_ = endScrollDelay; + update(); +} + +/** + * Returns the color using which is printing a text. + */ +QColor FFScrollingLabel::color() const +{ + return color_; +} + +/** + * Sets the color that is used to print a text. + */ +void FFScrollingLabel::setColor(QColor color) +{ + this->color_ = color; + updateView(); + update(); +} + +/** + * Returns true if the size of label is fitting up to the font size. + */ +bool FFScrollingLabel::fitToFont() const +{ + return fitToFont_; +} + +/** + * Turns on/off fitting up size of label to the font size. If fitToFont is true + * resizable property is setting up to false. + */ +void FFScrollingLabel::setFitToFont(bool fitToFont) +{ + if((this->fitToFont_ = fitToFont)) + { + resizable_ = false; + } + else + { + resizable_ = true; + } + update(); +} + +/** + * Sets the scrolling type. + */ +void FFScrollingLabel::setScrollType(int type) +{ + switch(type) + { + case SCROLL_SIDE_TO_SIDE: + disconnect(timer, + SIGNAL(timeOut()), + this, + previousScrollType.toAscii()); + connect(timer, + SIGNAL(timeOut()), + this, + SLOT(scrollSpeed())); + previousScrollType = SLOT(scrollSpeed()); + break; + } + update(); +} + +/** + * Returns true if the gradient at ends is set up, otherwise false. + */ +bool FFScrollingLabel::isSmoothDisappear() const +{ + return smoothDisappear_; +} + +/** + * Turns on/off a gradient at the ends of the label. Calls update() method. + */ +void FFScrollingLabel::setSmoothDisappear(bool smoothDisappear) +{ + this->smoothDisappear_ = smoothDisappear; + updateView(); + update(); +} + +/** + * Returns time (in milliseconds) between movements of the text. + */ +int FFScrollingLabel::timerDelay() +{ + return timerDelay_; +} + +/** + * Sets time (in milliseconds) between movements of the text. + */ +void FFScrollingLabel::setTimerDelay(int delay) +{ + timerDelay_ = delay; + timer->stop(); + timer->start(timerDelay_); + update(); +} + +/** + * Sets alignment of the text. + */ +void FFScrollingLabel::setAlignment(FFScrollingLabel::Alignment alignment) +{ + alignment_ = alignment; + calcTextPos(); + updateView(); + update(); +} + +/** + * Returns alignment used in this label. + */ +FFScrollingLabel::Alignment FFScrollingLabel::alignment() +{ + return alignment_; +} diff --git a/libffqw-1.0/sources/ffscrollinglabel.h b/libffqw-1.0/sources/ffscrollinglabel.h new file mode 100644 index 0000000..8386701 --- /dev/null +++ b/libffqw-1.0/sources/ffscrollinglabel.h @@ -0,0 +1,223 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollinglabel.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.07 + * @version 1.1 + * + * @brief A label with scrolling text. + */ + +#ifndef FFSCROLLINGLABEL_H +#define FFSCROLLINGLABEL_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef MAEMO +#include +#endif + +#include "ffabstractwidget.h" +#include "ffviewcache.h" + +const int TIMER_DELAY = 200; ///< delay for timer responsible for scrolling +const QString DEFAULT_TEXT = "Default text"; ///< text printed on a label as default +const int DEFAULT_SCROLL_SPEED = 10; ///< number of pixels which defines step of scrolling +const int DEFAULT_END_SCROLL_DELAY = 10; ///< number of gaps when one of label's edge is visible +const int LABEL_SIZE_TINY = 6; ///< defines size of tiny label's font +const int LABEL_SIZE_SMALL = 10; ///< defines size of small label's font +const int LABEL_SIZE_NORMAL = 12; ///< defines size of normal label's font +const int LABEL_SIZE_LARGE = 16; ///< defines size of large label's font +const int LABEL_SIZE_HUGE = 24; ///< defines size of huge label's font + +/** + * @author ComArch S.A. + * @date 2009.08.07 + * @version 1.1 + * + * @brief A label with scrolling text. + */ +#ifdef MAEMO + +class FFScrollingLabel : public FFAbstractWidget +{ + Q_OBJECT + +#else + +class QDESIGNER_WIDGET_EXPORT FFScrollingLabel : public FFAbstractWidget +{ + Q_OBJECT + Q_ENUMS(Alignment) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(QString text READ text WRITE setText) + Q_PROPERTY(bool resizable READ isResizable WRITE setResizable) + Q_PROPERTY(int scrollSpeed READ scrollSpeed WRITE setScrollSpeed) + Q_PROPERTY(int endScrollDelay READ endScrollDelay WRITE setEndScrollDelay) + Q_PROPERTY(QColor color READ color WRITE setColor) + Q_PROPERTY(bool fitToFont READ fitToFont WRITE setFitToFont) + Q_PROPERTY(bool smoothDisappear READ isSmoothDisappear WRITE setSmoothDisappear) + Q_PROPERTY(int timerDelay READ timerDelay WRITE setTimerDelay) + Q_PROPERTY(FFScrollingLabel::Alignment alignment READ alignment WRITE setAlignment) + +#endif +public: + FFScrollingLabel(QWidget* parent = 0); + FFScrollingLabel(QString text, QWidget *parent = 0); + FFScrollingLabel(QString text, QFont font, QWidget* parent = 0); + virtual ~FFScrollingLabel(); + + enum Alignment + { + ALIGNMENT_LEFT = 0x2000, ///< label alignment to left + ALIGNMENT_RIGHT = 0x4000, ///< label alignment to right + ALIGNMENT_CENTER = 0x8000 ///< label alignment to center + }; + + QFont font() const; + QString text() const; + bool isResizable() const; + int scrollSpeed() const; + int endScrollDelay() const; + QColor color() const; + bool fitToFont() const; + bool isSmoothDisappear() const; + int timerDelay(); + FFScrollingLabel::Alignment alignment(); + + void setFont(QFont font); + void setFont(int fontParam); + void setText(QString text); + void setResizable(bool resizable); + void setScrollSpeed(int scrollSpeed); + void setEndScrollDelay(int endScrollDelay); + void setColor(QColor color); + void setFitToFont(bool fitToFont); + void setScrollType(int type); + void setSmoothDisappear(bool smoothDisappear); + void setTimerDelay(int delay); + void setAlignment(FFScrollingLabel::Alignment alignment); + + void updateView(); + +protected: + virtual void paintEvent(QPaintEvent *event); + virtual void resizeEvent(QResizeEvent *event); + virtual QSize sizeHint() const; + virtual void hideEvent(QHideEvent* event); + virtual void showEvent(QShowEvent* event); + +private: + QPainter* painter; ///< pointer to painter + QLinearGradient gradient; ///< stores gradient for label + QPen pen; ///< stores pen where gradient is set + QString text_; ///< stores text of label + QFont font_; ///< stores font of text + QTimer* timer; ///< timer used to animation + bool resizable_; ///< is true when font size should change with widget's size changes. + QColor color_; ///< stores color used to create gradient + + int length_; ///< length of the text + int textOffset; ///< text's offset + int scrollSpeed_; ///< scoll's speed + int endScrollDelay_; ///< gap during one of edges is visible + int endScrollDelayIterationL; ///< contains value how many times text is in stopped state on left + int endScrollDelayIterationR; ///< contains value how many times text is in stopped state on right + bool fitToFont_; ///< if is true the widgets height is adjusted to font size + QString previousScrollType; ///< stores scrolling type + bool smoothDisappear_; ///< is true when the gradient at ends is set up + int timerDelay_; ///< defines how often text is repainted + Alignment alignment_; ///< stores text's alignment + int textStartPos; ///< contains start text's posiotion + + void init(QString text, QFont font); + void calcTextPos(); + inline void changeGradient(qreal left, qreal right); + +private slots: + void scrollSideToSide(); +}; + +#endif // FFSCROLLINGLABEL_H diff --git a/libffqw-1.0/sources/ffscrollingradiobutton.cpp b/libffqw-1.0/sources/ffscrollingradiobutton.cpp new file mode 100644 index 0000000..562362b --- /dev/null +++ b/libffqw-1.0/sources/ffscrollingradiobutton.cpp @@ -0,0 +1,101 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollingradiobutton.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.10.13 + * @version 1.0 + */ + +#include "ffscrollingradiobutton.h" +#include + +/** + * Constructs FFScrollingRadioButton with parent + */ +FFScrollingRadioButton::FFScrollingRadioButton(QWidget* parent) : FFScrollingCheckBox(SCROLLINGRADIOBUTTON_PATH,parent) +{ + path = SCROLLINGRADIOBUTTON_PATH ; + + setAutoExclusive(true); +} +/** + * A virtual destructor + */ +FFScrollingRadioButton::~FFScrollingRadioButton() +{ + +} diff --git a/libffqw-1.0/sources/ffscrollingradiobutton.h b/libffqw-1.0/sources/ffscrollingradiobutton.h new file mode 100644 index 0000000..b5c9968 --- /dev/null +++ b/libffqw-1.0/sources/ffscrollingradiobutton.h @@ -0,0 +1,112 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollingradiobutton.h + * @brief Implementation of the FFScrollingRadioButton class. + * + * @author ComArch S.A. + * @date 2009.10.13 + * @version 1.0 + */ + +#ifndef FFSCROLLINGRADIOBUTTON_H_ +#define FFSCROLLINGRADIOBUTTON_H_ + +#ifndef MAEMO +#include +#endif + +#include "ffscrollingcheckbox.h" + + +static const QString SCROLLINGRADIOBUTTON_PATH = ":/standard/radiobutton"; ///< part of path to graphics files + +/** + * @author ComArch S.A. + * @date 2009.10.13 + * @version 1.0 + * + * @brief A class responsible for button with 2 labels and radiobutton + */ +class FFScrollingRadioButton : public FFScrollingCheckBox +{ + Q_OBJECT +public: + FFScrollingRadioButton(QWidget* parent = 0); + virtual ~FFScrollingRadioButton(); +private: + QString path; ///< contains part of path to graphics files +}; + +#endif /* FFSCROLLINGRADIOBUTTON_H_ */ diff --git a/libffqw-1.0/sources/ffstringcombobox.cpp b/libffqw-1.0/sources/ffstringcombobox.cpp new file mode 100644 index 0000000..7b6a1bf --- /dev/null +++ b/libffqw-1.0/sources/ffstringcombobox.cpp @@ -0,0 +1,193 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffstringcombobox.cpp + * @brief Implementation of the FFStringComboBox class + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + + +#include "ffstringcombobox.h" +/** + * Constructs a FFStringComboBox with a parent. + */ +FFStringComboBox::FFStringComboBox(QString title, QWidget* parent) : + FFAbstractComboBox(new FFScrollingButton(title,""), parent) +{ + activator_ -> setIcon(QIcon(":/standard/combo_triangle_pressed.svg")); + activator_ -> setMargins(0,0,10,10); + activator_ -> setIconAlignment(Qt::AlignRight); + +} + +/** + * A virtual destructor. + */ +FFStringComboBox::~FFStringComboBox() +{ + ; +} + +/** + * Adds item to combobox + * @param item is a text for item + */ +void FFStringComboBox::addItem(QString item) +{ + addItem(QVariant(item)); +} +/** + * Adds items to combobox + * @param items is a list of text for items + */ +void FFStringComboBox::addItems(QList items) +{ + for(int i=0; isetDescription(items.at(i)); + temp->disableTitle(true); + + // Second step: You must call this function with previously prepared button + insertItem(temp,false); + } + emit reset(); +} +/** + * Returns title of combobox + */ +QString FFStringComboBox::title() +{ + return dynamic_cast(activator_)->title(); +} +/** + * Sets title of combobox + */ +void FFStringComboBox::setTitle(QString title) +{ + dynamic_cast(activator_)->setTitle(title); +} +/** + * Sets chosen value of FFStringComboBox on activator + * @param item is a pointer to chosen item. + */ + +void FFStringComboBox::setActivatorSpecs(FFAbstractButton* item) +{ + if(FFScrollingButton* but = dynamic_cast(item)) + { + dynamic_cast(activator_)->setDescription(but->description()); + } +} +/** + * Returns QVariant element containing value of chosen item + */ +QVariant FFStringComboBox::activatorSpecs() +{ + return QVariant(dynamic_cast(activator_)->description()); +} + + +/** + * Sets actual text. + *@param text is a text to set + */ +void FFStringComboBox::setCurrentText(QString text) +{ + for(int i = 0; i < items_.size(); ++i) + { + if(dynamic_cast (items_[i])->description() == text) + { + setCurrentItem(i); + return; + } + } +} +/** + * Adds new item to FFStringComboBox + */ +void FFStringComboBox::addItem(QVariant spec) +{ + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFScrollingButton* temp = new FFScrollingButton; + temp->setDescription(spec.toString()); + temp->disableTitle(true); + + // Second step: You must call this function with previously prepared button + insertItem(temp); +} diff --git a/libffqw-1.0/sources/ffstringcombobox.h b/libffqw-1.0/sources/ffstringcombobox.h new file mode 100644 index 0000000..ff8a94f --- /dev/null +++ b/libffqw-1.0/sources/ffstringcombobox.h @@ -0,0 +1,136 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffstringcombobox.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + +#ifndef FFSTRINGCOMBOBOX_H_ +#define FFSTRINGCOMBOBOX_H_ + +#ifndef MAEMO +#include +#endif + +#include "ffabstractcombobox.h" +#include "ffscrollingbutton.h" + +/** + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + * + * @brief A class of combobox with texts + */ + +#ifdef MAEMO + +class FFStringComboBox : public FFAbstractComboBox + +#else + +class QDESIGNER_WIDGET_EXPORT FFStringComboBox : public FFAbstractComboBox + +#endif +{ + Q_OBJECT + +public: + FFStringComboBox(QString title = 0, QWidget* parent = 0); + virtual ~FFStringComboBox(); + + void addItem(QString item); + void addItems(QList items); + + QString title(); + + void setTitle(QString title); + +public slots: + void setCurrentText(QString text); + +protected: + virtual void setActivatorSpecs(FFAbstractButton* item); + virtual QVariant activatorSpecs(); + +private: + void addItem(QVariant item); + +}; + +#endif // FFSTRINGCOMBOBOX_H diff --git a/libffqw-1.0/sources/ffviewcache.cpp b/libffqw-1.0/sources/ffviewcache.cpp new file mode 100644 index 0000000..2c643fb --- /dev/null +++ b/libffqw-1.0/sources/ffviewcache.cpp @@ -0,0 +1,176 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffviewcache.cpp + * @brief Implementation of the FFViewCache class + * + * @author ComArch S.A. + * @date 2009.07.30 + * @version 1.0 + */ +#include "ffviewcache.h" + + +QHash FFViewCache::graphicsTable; + +/** Constructs an FFViewCache with a parent. */ +FFViewCache::FFViewCache(QObject* parent) : QObject(parent) +{ + renderer_ = new QSvgRenderer(this); +} + +/** A virtual destructor */ +FFViewCache::~FFViewCache() +{ + ; +} + +/** + * This method is used to initiate FFViewCache class. + * Reads graphic from file in "svg" format and calls updateView method to set + * class parameters. + * + * @param path a text with path to file with a graphic +*/ + +void FFViewCache::init(QString path) +{ + + if(!graphicsTable.contains(path)) + { + QSvgRenderer* rend= new QSvgRenderer; + rend->load(path); + graphicsTable[path] = rend; + + } + renderer_= graphicsTable[path]; +} + +/** + * Fills QPixmap with graphic loaded by the QSvgRenderer from a file. + * + * @param size specifies size of a QPixmap storing a graphic +*/ +void FFViewCache::updateView(QSize size) +{ + /* creates pixmap with correct size */ + pixmap_ = QPixmap(size); + /* background will be transparent */ + pixmap_.fill(Qt::transparent); + + /* creates painter and fill pixmap by graphic */ + QPainter painter; + painter.begin(&pixmap_); + renderer_->render(&painter); + painter.end(); +} + +/** + * Returns graphic read from svg file +*/ +QPixmap FFViewCache::pixmap() const +{ + return pixmap_; +} + +/** + * Returns Svg renderer + */ +QSvgRenderer* FFViewCache::renderer() const +{ + return renderer_; +} + +/** + * Returns true when a file with graphic was correctly read + */ +bool FFViewCache::isValid() const +{ + return renderer_->isValid(); +} + +/** + * Returns default size of graphic read from file + */ +QSize FFViewCache::defaultSize() const +{ + return renderer_->defaultSize(); +} +/** + * Sets pixmap size to 0 + */ +void FFViewCache::setPixmapToZero() +{ + pixmap_ = QPixmap(0,0); +} diff --git a/libffqw-1.0/sources/ffviewcache.h b/libffqw-1.0/sources/ffviewcache.h new file mode 100644 index 0000000..4cb526a --- /dev/null +++ b/libffqw-1.0/sources/ffviewcache.h @@ -0,0 +1,124 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffviewcache.h + * @brief Contains a necessary class declaration. + * + * @author Marcin Kusmierski, Damian Plonek, Michał Palczewski, Dawid Klimt + * @date 2009.07.30 + * @version 1.0 + */ + +#ifndef FFVIEWCACHE_H +#define FFVIEWCACHE_H + +#include +#include +#include +#include +#include +/** + * @author ComArch S.A. + * @date 2009.07.30 + * @version 1.0 + * + * @brief A class responsible for widgets' view and event mask + */ +class FFViewCache : public QObject +{ +Q_OBJECT +public: + FFViewCache(QObject* parent = 0); + virtual ~FFViewCache(); + + void init(QString path); + void updateView(QSize size); + QPixmap pixmap() const; + QSvgRenderer* renderer() const; + bool isValid() const; + QSize defaultSize() const; + void setPixmapToZero(); + +private: + + static QHash graphicsTable; ///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 literal 0 HcmV?d00001 diff --git a/libffqw-demo-1.0/data/libffqw-demo.service b/libffqw-demo-1.0/data/libffqw-demo.service new file mode 100755 index 0000000..815c5d7 --- /dev/null +++ b/libffqw-demo-1.0/data/libffqw-demo.service @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=com.comarch.ffqwdemo +Exec=/usr/bin/libffqw-demo + diff --git a/libffqw-demo-1.0/debian/README b/libffqw-demo-1.0/debian/README new file mode 100644 index 0000000..61224b6 --- /dev/null +++ b/libffqw-demo-1.0/debian/README @@ -0,0 +1,6 @@ +The Debian Package libffqw-demo +---------------------------- + +Comments regarding the Package + + -- unknown Mon, 11 Jan 2010 12:58:59 +0100 diff --git a/libffqw-demo-1.0/debian/README.Debian b/libffqw-demo-1.0/debian/README.Debian new file mode 100644 index 0000000..6c24058 --- /dev/null +++ b/libffqw-demo-1.0/debian/README.Debian @@ -0,0 +1,6 @@ +libffqw-demo for Debian +----------------------- + + + + -- unknown Mon, 11 Jan 2010 12:58:59 +0100 diff --git a/libffqw-demo-1.0/debian/changelog b/libffqw-demo-1.0/debian/changelog new file mode 100644 index 0000000..c38f61d --- /dev/null +++ b/libffqw-demo-1.0/debian/changelog @@ -0,0 +1,5 @@ +libffqw-demo (1.0) stable; urgency=low + + * Initial Release. + + -- Michal Palczewski Mon, 11 Jan 2010 12:58:59 +0100 diff --git a/libffqw-demo-1.0/debian/compat b/libffqw-demo-1.0/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/libffqw-demo-1.0/debian/compat @@ -0,0 +1 @@ +5 diff --git a/libffqw-demo-1.0/debian/control b/libffqw-demo-1.0/debian/control new file mode 100644 index 0000000..9245328 --- /dev/null +++ b/libffqw-demo-1.0/debian/control @@ -0,0 +1,23 @@ +Source: libffqw-demo +Section: user/other +Priority: extra +Maintainer: Michal Palczewski +Build-Depends: debhelper (>= 5) +Standards-Version: 3.7.2 + +Package: libffqw-demo +Architecture: any +Depends: libffqw (= 1.0) | libffqw-n810 (= 1.0) +Description: Demo application for FFQW library. + This demo application shows features of Finger Friendly Qt Widgets Library + (FFQW). Demo and FFQW is designed to use for Nokia N900, but can be use with + Nokia N810. +XB-Maemo-Icon-26: + iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A + /wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oBCAwFL1gZpM4AAAAZdEVYdENv + bW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAABF0lEQVRIx9VWMRLCIBBcGAtMOhkrC1+AKUxp + 5R98h3/wB34hrX/wBTbKGyxTqqmMjUTIkIBK4rgzTJjLHcvtHQxEZFGJJ87bO0JisqbVnCii0+La + GMBXDACQ74rWhZWfjYy6SL6FUomM5qxUO7XtSIevnw2DLrLIDzdT0nTYDZEcj03DtCadq8C+fr1K + F8sjLiKxS+dbZJdfLI/Gl6n2Dg2VyUUk1bwT6Xg6BAPANRtFTzCIclEYo7HYov0qsv1/EW08F9x4 + dl4tlurBXDJj1AM+uXp+W6OPD6ijpkGIXAT/KZ1qnLeIfPQOmlFoMuqSwUcWHxCRReVpf32rBvVs + uWRWm/4SogAwW0atBG2LuDamnlukrwfkA722cNGhoLXOAAAAAElFTkSuQmCC diff --git a/libffqw-demo-1.0/debian/copyright b/libffqw-demo-1.0/debian/copyright new file mode 100644 index 0000000..ec9c117 --- /dev/null +++ b/libffqw-demo-1.0/debian/copyright @@ -0,0 +1,23 @@ +This is libffqw-demo, written and maintained by unknown +on Mon, 11 Jan 2010 12:58:59 +0100. + +Copyright Holder: Comarch S.A. + +License: + + 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. diff --git a/libffqw-demo-1.0/debian/cron.d.ex b/libffqw-demo-1.0/debian/cron.d.ex new file mode 100644 index 0000000..5e2e3b7 --- /dev/null +++ b/libffqw-demo-1.0/debian/cron.d.ex @@ -0,0 +1,4 @@ +# +# Regular cron jobs for the libffqw-demo package +# +0 4 * * * root libffqw-demo_maintenance diff --git a/libffqw-demo-1.0/debian/dirs b/libffqw-demo-1.0/debian/dirs new file mode 100644 index 0000000..ca882bb --- /dev/null +++ b/libffqw-demo-1.0/debian/dirs @@ -0,0 +1,2 @@ +usr/bin +usr/sbin diff --git a/libffqw-demo-1.0/debian/docs b/libffqw-demo-1.0/debian/docs new file mode 100644 index 0000000..e69de29 diff --git a/libffqw-demo-1.0/debian/emacsen-install.ex b/libffqw-demo-1.0/debian/emacsen-install.ex new file mode 100644 index 0000000..2bc864a --- /dev/null +++ b/libffqw-demo-1.0/debian/emacsen-install.ex @@ -0,0 +1,45 @@ +#! /bin/sh -e +# /usr/lib/emacsen-common/packages/install/libffqw-demo + +# Written by Jim Van Zandt , borrowing heavily +# from the install scripts for gettext by Santiago Vila +# and octave by Dirk Eddelbuettel . + +FLAVOR=$1 +PACKAGE=libffqw-demo + +if [ ${FLAVOR} = emacs ]; then exit 0; fi + +echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR} + +#FLAVORTEST=`echo $FLAVOR | cut -c-6` +#if [ ${FLAVORTEST} = xemacs ] ; then +# SITEFLAG="-no-site-file" +#else +# SITEFLAG="--no-site-file" +#fi +FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile" + +ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} +ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} + +# Install-info-altdir does not actually exist. +# Maybe somebody will write it. +if test -x /usr/sbin/install-info-altdir; then + echo install/${PACKAGE}: install Info links for ${FLAVOR} + install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/info/${PACKAGE}.info.gz +fi + +install -m 755 -d ${ELCDIR} +cd ${ELDIR} +FILES=`echo *.el` +cp ${FILES} ${ELCDIR} +cd ${ELCDIR} + +cat << EOF > path.el +(setq load-path (cons "." load-path) byte-compile-warnings nil) +EOF +${FLAVOR} ${FLAGS} ${FILES} +rm -f *.el path.el + +exit 0 diff --git a/libffqw-demo-1.0/debian/emacsen-remove.ex b/libffqw-demo-1.0/debian/emacsen-remove.ex new file mode 100644 index 0000000..d00df9d --- /dev/null +++ b/libffqw-demo-1.0/debian/emacsen-remove.ex @@ -0,0 +1,15 @@ +#!/bin/sh -e +# /usr/lib/emacsen-common/packages/remove/libffqw-demo + +FLAVOR=$1 +PACKAGE=libffqw-demo + +if [ ${FLAVOR} != emacs ]; then + if test -x /usr/sbin/install-info-altdir; then + echo remove/${PACKAGE}: removing Info links for ${FLAVOR} + install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/info/libffqw-demo.info.gz + fi + + echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} + rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} +fi diff --git a/libffqw-demo-1.0/debian/emacsen-startup.ex b/libffqw-demo-1.0/debian/emacsen-startup.ex new file mode 100644 index 0000000..e207bd9 --- /dev/null +++ b/libffqw-demo-1.0/debian/emacsen-startup.ex @@ -0,0 +1,25 @@ +;; -*-emacs-lisp-*- +;; +;; Emacs startup file, e.g. /etc/emacs/site-start.d/50libffqw-demo.el +;; for the Debian libffqw-demo package +;; +;; Originally contributed by Nils Naumann +;; Modified by Dirk Eddelbuettel +;; Adapted for dh-make by Jim Van Zandt + +;; The libffqw-demo package follows the Debian/GNU Linux 'emacsen' policy and +;; byte-compiles its elisp files for each 'emacs flavor' (emacs19, +;; xemacs19, emacs20, xemacs20...). The compiled code is then +;; installed in a subdirectory of the respective site-lisp directory. +;; We have to add this to the load-path: +(let ((package-dir (concat "/usr/share/" + (symbol-name flavor) + "/site-lisp/libffqw-demo"))) +;; If package-dir does not exist, the libffqw-demo package must have +;; removed but not purged, and we should skip the setup. + (when (file-directory-p package-dir) + (setq load-path (cons package-dir load-path)) + (autoload 'libffqw-demo-mode "libffqw-demo-mode" + "Major mode for editing libffqw-demo files." t) + (add-to-list 'auto-mode-alist '("\\.libffqw-demo$" . libffqw-demo-mode)))) + diff --git a/libffqw-demo-1.0/debian/files b/libffqw-demo-1.0/debian/files new file mode 100644 index 0000000..1dbf7bc --- /dev/null +++ b/libffqw-demo-1.0/debian/files @@ -0,0 +1 @@ +libffqw-demo_1.0_armel.deb user/other extra diff --git a/libffqw-demo-1.0/debian/init.d.ex b/libffqw-demo-1.0/debian/init.d.ex new file mode 100644 index 0000000..3a30264 --- /dev/null +++ b/libffqw-demo-1.0/debian/init.d.ex @@ -0,0 +1,81 @@ +#! /bin/sh +# +# skeleton example file to build /etc/init.d/ scripts. +# This file should be used to construct scripts for /etc/init.d. +# +# Written by Miquel van Smoorenburg . +# Modified for Debian +# by Ian Murdock . +# +# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl +# + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/sbin/libffqw-demo +NAME=libffqw-demo +DESC=libffqw-demo + +test -x $DAEMON || exit 0 + +# Include libffqw-demo defaults if available +if [ -f /etc/default/libffqw-demo ] ; then + . /etc/default/libffqw-demo +fi + +set -e + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON + echo "$NAME." + ;; + #reload) + # + # If the daemon can reload its config files on the fly + # for example by sending it SIGHUP, do it here. + # + # If the daemon responds to changes in its config file + # directly anyway, make this a do-nothing entry. + # + # echo "Reloading $DESC configuration files." + # start-stop-daemon --stop --signal 1 --quiet --pidfile \ + # /var/run/$NAME.pid --exec $DAEMON + #;; + force-reload) + # + # If the "reload" option is implemented, move the "force-reload" + # option to the "reload" entry above. If not, "force-reload" is + # just the same as "restart" except that it does nothing if the + # daemon isn't already running. + # check wether $DAEMON is running. If so, restart + start-stop-daemon --stop --test --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON \ + && $0 restart \ + || exit 0 + ;; + restart) + echo -n "Restarting $DESC: " + start-stop-daemon --stop --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON + sleep 1 + start-stop-daemon --start --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + *) + N=/etc/init.d/$NAME + # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/libffqw-demo-1.0/debian/libffqw-demo-default.ex b/libffqw-demo-1.0/debian/libffqw-demo-default.ex new file mode 100644 index 0000000..061b5f2 --- /dev/null +++ b/libffqw-demo-1.0/debian/libffqw-demo-default.ex @@ -0,0 +1,10 @@ +# Defaults for libffqw-demo initscript +# sourced by /etc/init.d/libffqw-demo +# installed at /etc/default/libffqw-demo by the maintainer scripts + +# +# This is a POSIX shell fragment +# + +# Additional options that are passed to the Daemon. +DAEMON_OPTS="" diff --git a/libffqw-demo-1.0/debian/libffqw-demo.doc-base.EX b/libffqw-demo-1.0/debian/libffqw-demo.doc-base.EX new file mode 100644 index 0000000..3858ef1 --- /dev/null +++ b/libffqw-demo-1.0/debian/libffqw-demo.doc-base.EX @@ -0,0 +1,22 @@ +Document: libffqw-demo +Title: Debian libffqw-demo Manual +Author: +Abstract: This manual describes what libffqw-demo is + and how it can be used to + manage online manuals on Debian systems. +Section: unknown + +Format: debiandoc-sgml +Files: /usr/share/doc/libffqw-demo/libffqw-demo.sgml.gz + +Format: postscript +Files: /usr/share/doc/libffqw-demo/libffqw-demo.ps.gz + +Format: text +Files: /usr/share/doc/libffqw-demo/libffqw-demo.text.gz + +Format: HTML +Index: /usr/share/doc/libffqw-demo/html/index.html +Files: /usr/share/doc/libffqw-demo/html/*.html + + diff --git a/libffqw-demo-1.0/debian/libffqw-demo.substvars b/libffqw-demo-1.0/debian/libffqw-demo.substvars new file mode 100644 index 0000000..4c9540d --- /dev/null +++ b/libffqw-demo-1.0/debian/libffqw-demo.substvars @@ -0,0 +1 @@ +shlibs:Depends=libc6 (>= 2.5.0-1), libdbus-1-3 (>= 1.1.4), libdbus-glib-1-2 (>= 0.76), libgcc1 (>= 1:4.2.1), libgconf2-6 (>= 2.13.5), libglib2.0-0 (>= 2.20.0), libosso1 (>= 2.23), libqt4-maemo5-core (>= 4.6.0~git20091215), libqt4-maemo5-gui (>= 4.6.0~git20091215), libqt4-maemo5-svg (>= 4.6.0~git20091215), libstdc++6 (>= 4.2.1) diff --git a/libffqw-demo-1.0/debian/manpage.1.ex b/libffqw-demo-1.0/debian/manpage.1.ex new file mode 100644 index 0000000..53b4bc0 --- /dev/null +++ b/libffqw-demo-1.0/debian/manpage.1.ex @@ -0,0 +1,59 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH LIBFFQW-DEMO SECTION "January 11, 2010" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +libffqw-demo \- program to do something +.SH SYNOPSIS +.B libffqw-demo +.RI [ options ] " files" ... +.br +.B bar +.RI [ options ] " files" ... +.SH DESCRIPTION +This manual page documents briefly the +.B libffqw-demo +and +.B bar +commands. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBlibffqw-demo\fP is a program that... +.SH OPTIONS +These programs follow the usual GNU command line syntax, with long +options starting with two dashes (`-'). +A summary of options is included below. +For a complete description, see the Info files. +.TP +.B \-h, \-\-help +Show summary of options. +.TP +.B \-v, \-\-version +Show version of program. +.SH SEE ALSO +.BR bar (1), +.BR baz (1). +.br +The programs are documented fully by +.IR "The Rise and Fall of a Fooish Bar" , +available via the Info system. +.SH AUTHOR +libffqw-demo was written by . +.PP +This manual page was written by unknown , +for the Debian project (but may be used by others). diff --git a/libffqw-demo-1.0/debian/manpage.sgml.ex b/libffqw-demo-1.0/debian/manpage.sgml.ex new file mode 100644 index 0000000..25cf7ea --- /dev/null +++ b/libffqw-demo-1.0/debian/manpage.sgml.ex @@ -0,0 +1,156 @@ + manpage.1'. You may view + the manual page with: `docbook-to-man manpage.sgml | nroff -man | + less'. A typical entry in a Makefile or Makefile.am is: + +manpage.1: manpage.sgml + docbook-to-man $< > $@ + + + The docbook-to-man binary is found in the docbook-to-man package. + Please remember that if you create the nroff version in one of the + debian/rules file targets (such as build), you will need to include + docbook-to-man in your Build-Depends control field. + + --> + + + FIRSTNAME"> + SURNAME"> + + January 11, 2010"> + + SECTION"> + michal.palczewski@comarch.com"> + + LIBFFQW-DEMO"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + Instead, it has documentation in the &gnu; + Info format; see below. + + &dhpackage; is a program that... + + + + OPTIONS + + These programs follow the usual &gnu; command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. For a complete description, see the + Info files. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 2 any + later version published by the Free Software Foundation. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + +
+ + + + diff --git a/libffqw-demo-1.0/debian/manpage.xml.ex b/libffqw-demo-1.0/debian/manpage.xml.ex new file mode 100644 index 0000000..9b68bfa --- /dev/null +++ b/libffqw-demo-1.0/debian/manpage.xml.ex @@ -0,0 +1,148 @@ + +.
will be generated. You may view the +manual page with: nroff -man .
| less'. A +typical entry in a Makefile or Makefile.am is: + +DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\ +manpages/docbook.xsl +XP=xsltproc -''-nonet + +manpage.1: manpage.dbk + $(XP) $(DB2MAN) $< + +The xsltproc binary is found in the xsltproc package. The +XSL files are in docbook-xsl. Please remember that if you +create the nroff version in one of the debian/rules file +targets (such as build), you will need to include xsltproc +and docbook-xsl in your Build-Depends control field. + +--> + + + FIRSTNAME"> + SURNAME"> + + January 11, 2010"> + + SECTION"> + michal.palczewski@comarch.com"> + + LIBFFQW-DEMO"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + Instead, it has documentation in the &gnu; + Info format; see below. + + &dhpackage; is a program that... + + + + OPTIONS + + These programs follow the usual &gnu; command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. For a complete description, see the + Info files. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 2 any + later version published by the Free Software Foundation. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + +
+ diff --git a/libffqw-demo-1.0/debian/menu.ex b/libffqw-demo-1.0/debian/menu.ex new file mode 100644 index 0000000..c03467a --- /dev/null +++ b/libffqw-demo-1.0/debian/menu.ex @@ -0,0 +1,2 @@ +?package(libffqw-demo):needs="X11|text|vc|wm" section="Apps/see-menu-manual"\ + title="libffqw-demo" command="/usr/bin/libffqw-demo" diff --git a/libffqw-demo-1.0/debian/postinst.ex b/libffqw-demo-1.0/debian/postinst.ex new file mode 100644 index 0000000..e3bf604 --- /dev/null +++ b/libffqw-demo-1.0/debian/postinst.ex @@ -0,0 +1,41 @@ +#!/bin/sh +# postinst script for libffqw-demo +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + configure) + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/libffqw-demo-1.0/debian/postrm.ex b/libffqw-demo-1.0/debian/postrm.ex new file mode 100644 index 0000000..1b7989a --- /dev/null +++ b/libffqw-demo-1.0/debian/postrm.ex @@ -0,0 +1,39 @@ +#!/bin/sh +# postrm script for libffqw-demo +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/libffqw-demo-1.0/debian/preinst.ex b/libffqw-demo-1.0/debian/preinst.ex new file mode 100644 index 0000000..03e3452 --- /dev/null +++ b/libffqw-demo-1.0/debian/preinst.ex @@ -0,0 +1,37 @@ +#!/bin/sh +# preinst script for libffqw-demo +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `install' +# * `install' +# * `upgrade' +# * `abort-upgrade' +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/libffqw-demo-1.0/debian/prerm.ex b/libffqw-demo-1.0/debian/prerm.ex new file mode 100644 index 0000000..fb58bd9 --- /dev/null +++ b/libffqw-demo-1.0/debian/prerm.ex @@ -0,0 +1,40 @@ +#!/bin/sh +# prerm script for libffqw-demo +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|deconfigure) + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/libffqw-demo-1.0/debian/rules b/libffqw-demo-1.0/debian/rules new file mode 100755 index 0000000..762b961 --- /dev/null +++ b/libffqw-demo-1.0/debian/rules @@ -0,0 +1,98 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + + + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + + touch configure-stamp + + +build: build-stamp + +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + #docbook-to-man debian/libffqw-demo.sgml > libffqw-demo.1 + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) clean + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/libffqw-demo. + $(MAKE) DESTDIR=$(CURDIR)/debian/libffqw-demo install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_python +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/libffqw-demo-1.0/debian/watch.ex b/libffqw-demo-1.0/debian/watch.ex new file mode 100644 index 0000000..b1d7cde --- /dev/null +++ b/libffqw-demo-1.0/debian/watch.ex @@ -0,0 +1,22 @@ +# Example watch control file for uscan +# Rename this file to "watch" and then you can run the "uscan" command +# to check for upstream updates and more. +# See uscan(1) for format + +# Compulsory line, this is a version 3 file +version=3 + +# Uncomment to examine a Webpage +# +#http://www.example.com/downloads.php libffqw-demo-(.*)\.tar\.gz + +# Uncomment to examine a Webserver directory +#http://www.example.com/pub/libffqw-demo-(.*)\.tar\.gz + +# Uncommment to examine a FTP server +#ftp://ftp.example.com/pub/libffqw-demo-(.*)\.tar\.gz debian uupdate + +# Uncomment to find new files on sourceforge, for debscripts >= 2.9 +# http://sf.net/libffqw-demo/libffqw-demo-(.*)\.tar\.gz + + diff --git a/libffqw-demo-1.0/demo.pro b/libffqw-demo-1.0/demo.pro new file mode 100644 index 0000000..cab6804 --- /dev/null +++ b/libffqw-demo-1.0/demo.pro @@ -0,0 +1,48 @@ +TEMPLATE = app +TARGET = ffqwdemo +CONFIG += link_pkgconfig +QT += core \ + gui \ + svg +HEADERS += sources/mainwindow.h +SOURCES += sources/main.cpp \ + sources/mainwindow.cpp +RESOURCES += +LIBS += -L../../ \ + -L/etc/lib/ \ + -lffqw +INCLUDEPATH += ../../sources + +maemo { + LIBS+= -losso \ + -ldbus-glib-1 \ + -ldbus-1 \ + -lgobject-2.0 \ + -lglib-2.0 + DEFINES += MAEMO + PKGCONFIG += dbus-1 glib-2.0 dbus-glib-1 gconf-2.0 osso-ic +} + +deb { + message(Creating Makefile for DEB binary package) + + desktop.files = data/ffqwdemo.desktop + desktop.path = debian/libffqw-demo/usr/share/applications/hildon/ + + pics.files = data/ffqwdemo.png + pics.path = debian/libffqw-demo/usr/share/pixmaps/ + + service.files = data/ffqwdemo.service + service.path = debian/libffqw-demo/usr/share/dbus-1/services/ + + target.files = ffqwdemo + target.path = debian/libffqw-demo/usr/bin + + INSTALLS += desktop pics service +} +else { + target.path = /usr/bin + message(Creating Makefile for Linux) +} + +INSTALLS += target diff --git a/libffqw-demo-1.0/sources/main.cpp b/libffqw-demo-1.0/sources/main.cpp new file mode 100644 index 0000000..b00d708 --- /dev/null +++ b/libffqw-demo-1.0/sources/main.cpp @@ -0,0 +1,121 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file main.cpp + * @brief Main file of demo. + * + * @author ComArch S.A. + * @date 2009.09.03 + * @version 1.0 + */ + +#include "mainwindow.h" +#include +#include + +#ifdef MAEMO +#include +#endif + +int main(int argc, char *argv[]) +{ + #ifdef MAEMO + + osso_context_t* ossoContext = 0; + ossoContext = osso_initialize("com.comarch.ffqwdemo", "1.0", FALSE, 0); + + if (ossoContext == 0) + { + qDebug() << "Failed to initialize LibOSSO\n"; + g_error("Failed to initialize LibOSSO\n"); + return EXIT_FAILURE; + } + #endif + + QApplication::setGraphicsSystem("raster"); + QApplication a(argc, argv); + Q_INIT_RESOURCE(img); + + MainWindow w; + + w.show(); + + int result = a.exec(); + + #ifdef MAEMO + osso_deinitialize(ossoContext); + #endif + + return result; +} diff --git a/libffqw-demo-1.0/sources/mainwindow.cpp b/libffqw-demo-1.0/sources/mainwindow.cpp new file mode 100644 index 0000000..7706c6b --- /dev/null +++ b/libffqw-demo-1.0/sources/mainwindow.cpp @@ -0,0 +1,418 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file mainwindow.cpp + * @brief Implementation of mainwindow class. + * + * @author ComArch S.A. + * @date 2009.09.03 + * @version 1.0 + */ + +#include "mainwindow.h" + + +/** + *Function to generate points used in the library demonstration graph. + */ +float fun01(float x) +{ + return (sin(x/5)*10 + qAbs(x)) - 50; +} + +/** + *Function to generate points used in the library demonstration graph. + */ +float fun02(float x) +{ + if(x==0) + x=0.000001; + return sin(x/4)/ (x/100); +} + +/** + *Function to generate points used in the library demonstration graph. + */ +float fun03(float x) +{ + return (x*x)/300; +} + +/** + *Function to generate points used in the library demonstration graph. + */ +float fun04(float x) +{ + return (x*x*x)/1000; +} + +/** + *Function to generate points used in the library demonstration graph. + */ +float fun05(float x) +{ + return x; +} + +/** + *Function to generate points used in the library demonstration graph. + */ +float fun06(float x) +{ + if(x<-50) + return -50; + else if(x>=-50 && x<=50) + return x - 20; + else if(x>50) + return 50; +} + +/** + *Main function to show FFQW library features. + */ +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent) +{ + QWidget* centralWidget = new QWidget; + setCentralWidget(centralWidget); + resize(800, 480); + + chartTab = new QWidget; + + + chart = new FFChart; + + functions = new FFStringComboBox; + combo = new FFColorComboBox; + line = new FFLineComboBox; + + QVBoxLayout* chartLayout = new QVBoxLayout; + chartLayout->addWidget(chart); + chartLayout->addWidget(functions); + + centralWidget->setLayout(chartLayout); + + fun.append("Set 01 - sinusoids"); + fun.append("Set 02 - parabolic"); + fun.append("Set 03 - linears"); + functions->addItems(fun); + functions->setTitle("Choose a functions set"); + + setFocusPolicy(Qt::ClickFocus); + chart->setFocusPolicy(Qt::ClickFocus); + init(); + + chart->installEventFilter(this); + + leftKeySw = false; + rightKeySw = false; + upKeySw = false; + downKeySw = false; + + connect(functions,SIGNAL(activated(int)),this,SLOT(changeFunctions(int))); + functions->setCurrentItem(0); +} + +MainWindow::~MainWindow() +{ + +} + +/** + * Initiate an object of demo application. Set all needed fields. + */ +void MainWindow::init() +{ + setStyleSheet( "background: black;" + "padding: 0px;" + "spacing: 0px;" + "border: 0px;"); + + chartTab->setStyleSheet( "background: black;" + "padding: 0px;" + "spacing: 0px;" + "border: 0px;"); + { + // Sinusoids + for(float i=-150;i<150;i+=1) + { + series01.append(QPointF(i,fun01(i))); + } + + for(float i=-150;i<150;i+=1) + { + series02.append(QPointF(i,fun02(i))); + } + + // Linears + for(float i = -250; i < 250; i += 1) + { + series03.append(QPointF(i, fun03(i))); + } + + for(float i = -150; i < 150; i += 1) + { + series04.append(QPointF(i, fun04(i))); + } + + // Linears + series05.append(QPointF(-150,-150)); + series05.append(QPointF(150,150)); + + series06.append(QPointF(-150,-150)); + series06.append(QPointF(-50,-150)); + series06.append(QPointF(50,150)); + series06.append(QPointF(150,150)); + + series07.append(QPointF(-200,20)); + series07.append(QPointF(-80,20)); + series07.append(QPointF(-70,-80)); + series07.append(QPointF(-60,120)); + series07.append(QPointF(-50,20)); + series07.append(QPointF( 70,20)); + series07.append(QPointF( 80,-60)); + series07.append(QPointF( 90,110)); + series07.append(QPointF(100,20)); + series07.append(QPointF(200,20)); + + series08.append(QPointF(-200,-200)); + series08.append(QPointF( 200,-200)); + + series09.append(QPointF(-200,-180)); + series09.append(QPointF(200,-180)); + + series10.append(QPointF(-200,-160)); + series10.append(QPointF(200,-160)); + + series11.append(QPointF(-200,-140)); + series11.append(QPointF(200,-140)); + } + changeFunctions(1); +} + +/** + * Change set of function to display in gprah to another. + */ + void MainWindow::changeFunctions(int funNum) +{ + if(funNum == 0) + { + chart->removeSeries(); + chart->addSeries(new FFChartSeries(series01,QPen(QBrush(QColor(255,255,0)),2),"SRP lev 2008")); + chart->addSeries(new FFChartSeries(series02,QPen(QBrush(QColor(255,0,255)),2),"SRP standardized lev 2008")); + } + else if(funNum == 1) + { + chart->removeSeries(); + chart->addSeries(new FFChartSeries(series03,QPen(QBrush(QColor(0,0,255)),2),"Swimming Performance")); + chart->addSeries(new FFChartSeries(series04,QPen(QBrush(QColor(0,255,0)),2),"Running Performance")); + } + else if(funNum == 2) + { + chart->removeSeries(); + chart->addSeries(new FFChartSeries(series05,QPen(QBrush(QColor( 0,255, 0)),2),"FFQW Progress")); + chart->addSeries(new FFChartSeries(series06,QPen(QBrush(QColor(255, 0, 0)),2),"Standardized Reverse Progress")); + chart->addSeries(new FFChartSeries(series07,QPen(QBrush(QColor(255,255, 0)),2),"Standardized Tech Progress")); + chart->addSeries(new FFChartSeries(series08,QPen(QBrush(QColor(255,255,255)),2),"EKG")); + chart->addSeries(new FFChartSeries(series09,QPen(QBrush(QColor( 0,255,255)),2),"PKB Lev")); + chart->addSeries(new FFChartSeries(series10,QPen(QBrush(QColor( 0, 0,255)),2),"YETI Lev")); + chart->addSeries(new FFChartSeries(series11,QPen(QBrush(QColor(150,150,150)),2),"Mot Ratio")); + } +} + +/** + * Support key press events in demo application. + */ + void MainWindow::keyPressEvent(QKeyEvent* event) + { + switch ( event->key () ) + { + case Qt::Key_F5: //HOME + break; + case Qt::Key_F6: //FULL_SCREEN + break; + case Qt::Key_F7: //+ + chart->zoomIn(0.2); + break; + case Qt::Key_F8: //- + chart->zoomOut(0.2); + break; + case Qt::Key_F4: //MENU + break; + case Qt::Key_Left: //LEFT + leftKeySw=true; + if(upKeySw) + { + chart->moveBy(QPoint(10,10)); + break; + } + if(downKeySw) + { + chart->moveBy(QPoint(10,-10)); + break; + } + chart->moveBy(QPoint(10,0)); + break; + case Qt::Key_Right: //RIGHT + rightKeySw=true; + if(upKeySw) + { + chart->moveBy(QPoint(-10, 10)); + break; + } + if(downKeySw) + { + chart->moveBy(QPoint(-10, -10)); + break; + } + chart->moveBy(QPoint(- 10,0)); + break; + case Qt::Key_Up: //UP + upKeySw=true; + if(leftKeySw) + { + chart->moveBy(QPoint(10, 10)); + break; + } + if(rightKeySw) + { + chart->moveBy(QPoint(-10, 10)); + break; + } + chart->moveBy(QPoint(0,10)); + break; + case Qt::Key_Down: //DOWN + downKeySw=true; + if(leftKeySw) + { + chart->moveBy(QPoint(10, -10)); + break; + } + if(rightKeySw) + { + chart->moveBy(QPoint(-10, -10)); + break; + } + chart->moveBy(QPoint(0,-10)); + break; + case Qt::Key_Return: //ENTER + break; + case Qt::Key_Escape: //BACK + break; + default: + event->ignore (); + } + } + +/** + * Support key release events in demo application. + */ + void MainWindow::keyReleaseEvent(QKeyEvent* event) + { + switch(event->key()) + { + case Qt::Key_Left: //LEFT + leftKeySw = false; + break; + case Qt::Key_Right: //RIGHT + rightKeySw = false; + break; + case Qt::Key_Up: //UP + upKeySw = false; + break; + case Qt::Key_Down: //DOWN + downKeySw = false; + break; + default: + event->ignore(); + } + } + +/** + * Reimplement standard eventFilter. + */ +bool MainWindow::eventFilter(QObject *object, QEvent *event) +{ + Q_UNUSED(object); + if(event->type() == QEvent::KeyPress) + { + QKeyEvent *keyEvent = static_cast (event); + keyPressEvent(keyEvent); + return true; + } + else + { + return false; + } +} diff --git a/libffqw-demo-1.0/sources/mainwindow.h b/libffqw-demo-1.0/sources/mainwindow.h new file mode 100644 index 0000000..f8906de --- /dev/null +++ b/libffqw-demo-1.0/sources/mainwindow.h @@ -0,0 +1,157 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file mainwindow.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.09.03 + * @version 1.0 + */ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include +#include +#include + +#ifdef MAEMO +#include +#endif + +#include "FFGui" + +/** + * @author ComArch S.A. + * @date 2009.09.03 + * @version 1.0 + * + * @brief A class responsible for demo application that show FFQW library features. + */ + +class MainWindow : public QMainWindow +{ +Q_OBJECT + +public: + MainWindow(QWidget *parent = 0); + ~MainWindow(); + + QWidget* chartTab; +private: + FFChart* chart; + FFStringComboBox* functions; + FFColorComboBox* combo; + FFLineComboBox* line; + + bool leftKeySw; + bool rightKeySw; + bool upKeySw; + bool downKeySw; + QList fun; + + void init(); + + QVector functionsList; + + QVector series01; + QVector series02; + + QVector series03; + QVector series04; + + QVector series05; + QVector series06; + QVector series07; + QVector series08; + QVector series09; + QVector series10; + QVector series11; + +private slots: + void keyPressEvent(QKeyEvent* event); + void keyReleaseEvent(QKeyEvent* event); + bool eventFilter(QObject *object, QEvent *event); + void changeFunctions(int funNum); + +protected: + +}; + +#endif // MAINWINDOW_H diff --git a/libffqw-n810-1.0/Doxyfile b/libffqw-n810-1.0/Doxyfile new file mode 100644 index 0000000..8c7ad09 --- /dev/null +++ b/libffqw-n810-1.0/Doxyfile @@ -0,0 +1,1510 @@ +# Doxyfile 1.5.8 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = FFWidgets Library + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 0.1 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, +# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, +# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, +# Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = YES + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it parses. +# With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this tag. +# The format is ext=language, where ext is a file extension, and language is one of +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = YES + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST = YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = sources + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = *.cpp *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. +# For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see +#
Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# filter section matches. +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. + +GENERATE_TREEVIEW = NONE + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = YES + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Options related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/libffqw-n810-1.0/bin/libffqw-n810-dev_1.0_armel.deb b/libffqw-n810-1.0/bin/libffqw-n810-dev_1.0_armel.deb new file mode 100644 index 0000000000000000000000000000000000000000..f3e11d612a02de2e0e818bdf7be33075cb897a6b GIT binary patch literal 17376 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�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ℜ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�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

+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; + + + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + Instead, it has documentation in the &gnu; + Info format; see below. + + &dhpackage; is a program that... + + + + OPTIONS + + These programs follow the usual &gnu; command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. For a complete description, see the + Info files. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 2 any + later version published by the Free Software Foundation. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + + + + + + diff --git a/libffqw-n810-1.0/debian/manpage.xml.ex b/libffqw-n810-1.0/debian/manpage.xml.ex new file mode 100644 index 0000000..8e4ea44 --- /dev/null +++ b/libffqw-n810-1.0/debian/manpage.xml.ex @@ -0,0 +1,148 @@ + +.
will be generated. You may view the +manual page with: nroff -man .
| less'. A +typical entry in a Makefile or Makefile.am is: + +DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\ +manpages/docbook.xsl +XP=xsltproc -''-nonet + +manpage.1: manpage.dbk + $(XP) $(DB2MAN) $< + +The xsltproc binary is found in the xsltproc package. The +XSL files are in docbook-xsl. Please remember that if you +create the nroff version in one of the debian/rules file +targets (such as build), you will need to include xsltproc +and docbook-xsl in your Build-Depends control field. + +--> + + + FIRSTNAME"> + SURNAME"> + + January 8, 2010"> + + SECTION"> + michal.palczewski@comarch.com"> + + LIBFFQW"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + Instead, it has documentation in the &gnu; + Info format; see below. + + &dhpackage; is a program that... + + + + OPTIONS + + These programs follow the usual &gnu; command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. For a complete description, see the + Info files. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 2 any + later version published by the Free Software Foundation. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + +
+ diff --git a/libffqw-n810-1.0/debian/menu.ex b/libffqw-n810-1.0/debian/menu.ex new file mode 100644 index 0000000..e460fb0 --- /dev/null +++ b/libffqw-n810-1.0/debian/menu.ex @@ -0,0 +1,2 @@ +?package(libffqw):needs="X11|text|vc|wm" section="Apps/see-menu-manual"\ + title="libffqw" command="/usr/bin/libffqw" diff --git a/libffqw-n810-1.0/debian/postinst.ex b/libffqw-n810-1.0/debian/postinst.ex new file mode 100644 index 0000000..82b2ebc --- /dev/null +++ b/libffqw-n810-1.0/debian/postinst.ex @@ -0,0 +1,41 @@ +#!/bin/sh +# postinst script for libffqw +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + configure) + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/libffqw-n810-1.0/debian/postrm.ex b/libffqw-n810-1.0/debian/postrm.ex new file mode 100644 index 0000000..91fc203 --- /dev/null +++ b/libffqw-n810-1.0/debian/postrm.ex @@ -0,0 +1,39 @@ +#!/bin/sh +# postrm script for libffqw +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/libffqw-n810-1.0/debian/preinst.ex b/libffqw-n810-1.0/debian/preinst.ex new file mode 100644 index 0000000..522d75c --- /dev/null +++ b/libffqw-n810-1.0/debian/preinst.ex @@ -0,0 +1,37 @@ +#!/bin/sh +# preinst script for libffqw +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `install' +# * `install' +# * `upgrade' +# * `abort-upgrade' +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/libffqw-n810-1.0/debian/prerm.ex b/libffqw-n810-1.0/debian/prerm.ex new file mode 100644 index 0000000..59e41eb --- /dev/null +++ b/libffqw-n810-1.0/debian/prerm.ex @@ -0,0 +1,40 @@ +#!/bin/sh +# prerm script for libffqw +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|deconfigure) + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/libffqw-n810-1.0/debian/rules b/libffqw-n810-1.0/debian/rules new file mode 100755 index 0000000..6f73bd2 --- /dev/null +++ b/libffqw-n810-1.0/debian/rules @@ -0,0 +1,105 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + + + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +# shared library versions, option 1 +version=2.0.5 +major=2 +# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so +#version=`ls src/.libs/lib*.so.* | \ +# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` +#major=`ls src/.libs/lib*.so.* | \ +# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + + touch configure-stamp + + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) clean + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/tmp + $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_python +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/libffqw-n810-1.0/debian/shlibs.local.ex b/libffqw-n810-1.0/debian/shlibs.local.ex new file mode 100644 index 0000000..1aa6a65 --- /dev/null +++ b/libffqw-n810-1.0/debian/shlibs.local.ex @@ -0,0 +1 @@ +liblibffqw 1.0 libffqw (>> 1.0-0), libffqw (<< 1.0-99) diff --git a/libffqw-n810-1.0/debian/watch.ex b/libffqw-n810-1.0/debian/watch.ex new file mode 100644 index 0000000..a625cc8 --- /dev/null +++ b/libffqw-n810-1.0/debian/watch.ex @@ -0,0 +1,22 @@ +# Example watch control file for uscan +# Rename this file to "watch" and then you can run the "uscan" command +# to check for upstream updates and more. +# See uscan(1) for format + +# Compulsory line, this is a version 3 file +version=3 + +# Uncomment to examine a Webpage +# +#http://www.example.com/downloads.php libffqw-(.*)\.tar\.gz + +# Uncomment to examine a Webserver directory +#http://www.example.com/pub/libffqw-(.*)\.tar\.gz + +# Uncommment to examine a FTP server +#ftp://ftp.example.com/pub/libffqw-(.*)\.tar\.gz debian uupdate + +# Uncomment to find new files on sourceforge, for debscripts >= 2.9 +# http://sf.net/libffqw/libffqw-(.*)\.tar\.gz + + diff --git a/libffqw-n810-1.0/libffqw-n810.pro b/libffqw-n810-1.0/libffqw-n810.pro new file mode 100644 index 0000000..e194b4d --- /dev/null +++ b/libffqw-n810-1.0/libffqw-n810.pro @@ -0,0 +1,101 @@ +TEMPLATE = lib +TARGET = ffqw +QT += core \ + gui \ + svg +CONFIG += diablo_comp +HEADERS += sources/ffabstractcombobox.h \ + sources/ffscrollingcheckbox.h \ + sources/ffscrollingbutton.h \ + sources/ffabstractbutton.h \ + sources/ffabstractwidget.h \ + sources/ffscrollinglabel.h \ + sources/ffviewcache.h \ + sources/ffstringcombobox.h \ + sources/ffdpad.h \ + sources/ffcolorcombobox.h \ + sources/ffdpadbutton.h \ + sources/ffscrollarea.h \ + sources/ffchart.h \ + sources/ffchartlegend.h \ + sources/ffchartscene.h \ + sources/ffchartbutton.h \ + sources/ffchartlegendcontrolpanel.h \ + sources/ffchartseries.h \ + sources/fflinecombobox.h \ + sources/ffscrollingradiobutton.h +SOURCES += sources/ffscrollingcheckbox.cpp \ + sources/ffabstractcombobox.cpp \ + sources/ffscrollingbutton.cpp \ + sources/ffabstractbutton.cpp \ + sources/ffdpad.cpp \ + sources/ffabstractwidget.cpp \ + sources/ffscrollinglabel.cpp \ + sources/ffviewcache.cpp \ + sources/ffstringcombobox.cpp \ + sources/ffcolorcombobox.cpp \ + sources/ffdpadbutton.cpp \ + sources/ffscrollarea.cpp \ + sources/ffchart.cpp \ + sources/ffchartlegend.cpp \ + sources/ffchartscene.cpp \ + sources/ffchartbutton.cpp \ + sources/ffchartlegendcontrolpanel.cpp \ + sources/ffchartseries.cpp \ + sources/fflinecombobox.cpp \ + sources/ffscrollingradiobutton.cpp + +RESOURCES += data/img/img.qrc + +VERSION = 1.0 + +headers.files += sources/ffcolorcombobutton.h \ + sources/ffchartscene.h \ + sources/ffchartlegend.h \ + sources/ffchartlegendcontrolbutton.h \ + sources/ffchartlegendcontrolpanel.h \ + sources/ffchart.h \ + sources/ffchartbutton.h \ + sources/ffcombobutton.h \ + sources/ffscrollingcheckbox.h \ + sources/ffscrollingbutton.h \ + sources/ffabstractbutton.h \ + sources/ffskin.h \ + sources/ffchartseries.h \ + sources/ffabstractwidget.h \ + sources/ffscrollinglabel.h \ + sources/ffviewcache.h \ + sources/ffstringcombobox.h \ + sources/ffdpad.h \ + sources/ffcolorcombobox.h \ + sources/ffcolorbutton.h \ + sources/ffstringbutton.h \ + sources/ffdpadbutton.h \ + sources/ffcolorchooser.h \ + sources/ffscrollarea.h \ + sources/ffscrollingradiobutton.h \ + sources/FFGui \ + sources/fflinecombobox.h \ + sources/ffabstractcombobox.h + +maemo { +DEFINES += MAEMO +} + +diablo_comp { +DEFINES += DIABLO_COMP +} + +deb { + message(Creating Makefile for DEB binary package) + target.path = debian/libffqw-n810/usr/lib + headers.path = debian/libffqw-n810-dev/usr/include + #INSTALLS = target +} +ELSE { + message(Creating Makefile for Linux) + headers.path = /usr/include + target.path = /usr/lib +} + +INSTALLS += headers target diff --git a/libffqw-n810-1.0/sources/FFGui b/libffqw-n810-1.0/sources/FFGui new file mode 100644 index 0000000..7178526 --- /dev/null +++ b/libffqw-n810-1.0/sources/FFGui @@ -0,0 +1,10 @@ +#include "ffscrollingcheckbox.h" +#include "ffscrollingbutton.h" +#include "ffabstractbutton.h" +#include "ffscrollinglabel.h" +#include "ffcolorcombobox.h" +#include "fflinecombobox.h" +#include "ffstringcombobox.h" +#include "ffdpad.h" +#include "ffchart.h" +#include "ffscrollarea.h" diff --git a/libffqw-n810-1.0/sources/ffabstractbutton.cpp b/libffqw-n810-1.0/sources/ffabstractbutton.cpp new file mode 100644 index 0000000..f6a4e90 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffabstractbutton.cpp @@ -0,0 +1,762 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ + +/** + * @file ffabstractbutton.cpp + * @brief Implementation of the FFAbstractButton class. + * + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + * + * This widget have an inside rectangle (draw area). This rectangle is bounded by four margins (top, bottom, left, right). + * Function setMargins(int,int,int,int) provides interface to change this parameters. + */ + +#include "ffabstractbutton.h" + +/*Static FFViewCaches -improve performance*/ +FFViewCache* FFAbstractButton::topLeftNormal = NULL; +FFViewCache* FFAbstractButton::topRightNormal = NULL; +FFViewCache* FFAbstractButton::bottomLeftNormal = NULL; +FFViewCache* FFAbstractButton::bottomRightNormal = NULL; +FFViewCache* FFAbstractButton::topLeftClicked = NULL; +FFViewCache* FFAbstractButton::topRightClicked = NULL; +FFViewCache* FFAbstractButton::bottomLeftClicked = NULL; +FFViewCache* FFAbstractButton::bottomRightClicked = NULL; +/* static values + */ +bool FFAbstractButton::staticFFViewCacheUpdated = false; +int FFAbstractButton::minimumWidth = 0; +/** + * Constructs a FFAbstractButton with a parent. + * Set variable to initial values and set graphics used in widget. + */ +FFAbstractButton::FFAbstractButton(QWidget* parent) : + QAbstractButton(parent) +{ + init(); + +} + +/** + * A virtual destructor of FFAbstractButton. + */ +FFAbstractButton::~FFAbstractButton() +{ + ; +} + +/** + * Returns the left margin of inside drawing rectangle. + */ +int FFAbstractButton::leftMargin() +{ + return insideRect.leftMargin_; +} + +/** + * Returns the left margin of inside drawing rectangle. + */ +int FFAbstractButton::rightMargin() +{ + return insideRect.rightMargin_; +} + +/** + * Returns the top margin of inside drawing rectangle. + */ +int FFAbstractButton::topMargin() +{ + return insideRect.topMargin_; +} + +/** + * Returns the bottom margin of inside drawing rectangle. + */ +int FFAbstractButton::bottomMargin() +{ + return insideRect.bottomMargin_; +} + +/** + * Returns the horizontal spacing between any elements in inside rectangle. + */ +int FFAbstractButton::hSpacing() +{ + return insideRect.hSpacing_; +} + +/** + * Returns the vertical spacing between any elements in inside rectangle. + */ +int FFAbstractButton::vSpacing() +{ + return insideRect.vSpacing_; +} + +/** + * Sets left margin of elements on a button + * @param leftMargin left margin of elements on a button + */ +void FFAbstractButton::setLeftMargin(int leftMargin) +{ + insideRect.leftMargin_ = leftMargin; + insideRect.leftMarginTemp = leftMargin; + updateView(); + update(); +} + +/** + * Sets right margin of elements on a button + * @param rightMargin right margin of elements on a button + */ +void FFAbstractButton::setRightMargin(int rightMargin) +{ + insideRect.rightMargin_ = rightMargin; + insideRect.rightMarginTemp = rightMargin; + updateView(); + update(); +} + +/** + * Sets top margin of elements on a button + * @param topMargin top margin of elements on a button + */ +void FFAbstractButton::setTopMargin(int topMargin) +{ + insideRect.topMargin_ = topMargin; + insideRect.topMarginTemp = topMargin; + updateView(); + update(); +} + +/** + * Sets bottom margin of elements on a button + * @param bottomMargin bottom margin of elements on a button + */ +void FFAbstractButton::setBottomMargin(int bottomMargin) +{ + insideRect.bottomMargin_ = bottomMargin; + insideRect.bottomMarginTemp = bottomMargin; + updateView(); + update(); +} + +/** + * Provides interface to change this parameters. + * @param leftMargin set margin between left edge of widget to left edge of inside rectangle + * @param rightMargin set margin between right edge of widget to right edge of inside rectangle + * @param topMargin set margin between top edge of widget to top edge of inside rectangle + * @param bottomMargin set margin between bottom edge of widget to bottom edge of inside rectangle + */ +void FFAbstractButton::setMargins(int leftMargin, + int rightMargin, + int topMargin, + int bottomMargin) +{ + insideRect.setMargins(leftMargin, rightMargin, topMargin, bottomMargin); + updateView(); + update(); +} + +/** + * Sets horizontal spacing between any elements in inside rectangle. + * @param hSpacing Horizontal spacing + */ +void FFAbstractButton::setHSpacing(int hSpacing) +{ + insideRect.hSpacing_ = hSpacing; + insideRect.hSpacingTemp = hSpacing; + updateView(); +} + +/** + * Sets vertical spacing between any elements in inside rectangle. + * @param spacing Vertical spacing + */ +void FFAbstractButton::setVSpacing(int spacing) +{ + insideRect.vSpacing_ = spacing; + insideRect.vSpacingTemp = spacing; + updateView(); +} +/** + * Returns pen + */ +QPen FFAbstractButton::pen() +{ + return pen_; +} + +/** + * Sets pen + */ +void FFAbstractButton::setPen(QPen pen) +{ + pen_ = pen; +} +/** + * Repaints the view of this button. Overrides the virtual method from QWidget. + * If button is not clicked draw one type of pixmaps otherwise draw another. + * + * Composition of pixmaps: + * + * + *
topLeft topCenter topRight
centerLeft center centerRight
bottomLeft bottomCenter bottomRight
+ * @param event Contains all informations about event. + */ +void FFAbstractButton::paintEvent(QPaintEvent* event) +{ + Q_UNUSED(event) + + QPainter painter; + + painter.begin(this); + + if(!isClicked_) + { + painter.drawPixmap(QPoint(0, 0), topLeftNormal->pixmap()); + painter.drawPixmap(QPoint(topLeftNormal->defaultSize().width(), + 0), topCenterNormal->pixmap()); + painter.drawPixmap(QPoint(topLeftNormal->defaultSize().width() + + pixmapsPositionWidth_, 0), + topRightNormal->pixmap()); + painter.drawPixmap(QPoint(0, + topLeftNormal->defaultSize().height()), + centerLeftNormal->pixmap()); + painter.drawPixmap(QPoint(centerLeftNormal->defaultSize().width(), + topCenterNormal->defaultSize().height()), + centerNormal->pixmap()); + painter.drawPixmap(QPoint(centerLeftNormal->defaultSize().width() + + pixmapsPositionWidth_, + topRightNormal->defaultSize().height()), + centerRightNormal->pixmap()); + painter.drawPixmap(QPoint(0, + topLeftNormal->defaultSize().height() + + pixmapsPositionHeight_), + bottomLeftNormal->pixmap()); + painter.drawPixmap(QPoint(bottomLeftNormal->defaultSize().width(), + topCenterNormal->defaultSize().height() + + pixmapsPositionHeight_), + bottomCenterNormal->pixmap()); + painter.drawPixmap(QPoint(bottomLeftNormal->defaultSize().width() + + pixmapsPositionWidth_, + topRightNormal->defaultSize().height() + + pixmapsPositionHeight_), + bottomRightNormal->pixmap()); + } + else + { + painter.drawPixmap(QPoint(0, 0), topLeftClicked->pixmap()); + painter.drawPixmap(QPoint(topLeftClicked->defaultSize().width(), + 0), + topCenterClicked->pixmap()); + painter.drawPixmap(QPoint(topLeftClicked->defaultSize().width() + + pixmapsPositionWidth_, 0), + topRightClicked->pixmap()); + painter.drawPixmap(QPoint(0, + topLeftClicked->defaultSize().height()), + centerLeftClicked->pixmap()); + painter.drawPixmap(QPoint(centerLeftClicked->defaultSize().width(), + topCenterClicked->defaultSize().height()), + centerClicked->pixmap()); + painter.drawPixmap(QPoint(centerLeftClicked->defaultSize().width() + + pixmapsPositionWidth_, + topRightClicked->defaultSize().height()), + centerRightClicked->pixmap()); + painter.drawPixmap(QPoint(0, + topLeftClicked->defaultSize().height() + + pixmapsPositionHeight_), + bottomLeftClicked->pixmap()); + painter.drawPixmap(QPoint(bottomLeftClicked->defaultSize().width(), + topCenterClicked->defaultSize().height() + + pixmapsPositionHeight_), + bottomCenterClicked->pixmap()); + painter.drawPixmap(QPoint(bottomLeftClicked->defaultSize().width() + + pixmapsPositionWidth_, + topRightClicked->defaultSize().height() + + pixmapsPositionHeight_), + bottomRightClicked->pixmap()); + } + + paintIcon(&painter); + painter.end(); + +} + +/** + * Update button view after changing size of the widget. + * Update size of all pixmap which need it (without corners) + * @param event Contains all informations about event. + */ +void FFAbstractButton::resizeEvent(QResizeEvent* event) +{ + pixmapsPositionWidth_ = event->size().width() + - centerLeftNormal->defaultSize().width() + - centerRightNormal->defaultSize().width(); + + pixmapsPositionHeight_ = event->size().height() + - topCenterNormal->defaultSize().height() + - bottomCenterNormal->defaultSize().height(); + + if(event->oldSize().isValid()) + { + insideRect.scaleMargins(event->oldSize(), event->size()); + } + updateView(); + + if(!icon().isNull()) + { + QRect rect(0 + leftMargin(), + 0 + topMargin(), + geometry().width() - rightMargin() - leftMargin() + - 2 * insideRect.leftIndent_, + geometry().height() - bottomMargin() - topMargin()); + + iconSpace = icon().pixmap(rect.size()).size().width(); + } + else + { + iconSpace = 0; + } +} + +/** + * Initiates an object of FFAbstractgButton. Sets all needed fields. It is called by all constructors. + */ +void FFAbstractButton::init() +{ + + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum); + path = BUTTON_PATH; + + isClicked_ = false; + iconSpace = 0; + + iconAlignment_ = DEFAULT_ICON_ALIGNMENT; + + if(NULL == topLeftNormal) + { + topLeftNormal = new FFViewCache; + } + + topCenterNormal = new FFViewCache; + + if(NULL == topRightNormal) + { + topRightNormal = new FFViewCache; + } + + centerLeftNormal = new FFViewCache; + centerNormal = new FFViewCache; + centerRightNormal = new FFViewCache; + + if(NULL == bottomLeftNormal) + { + bottomLeftNormal = new FFViewCache; + } + + bottomCenterNormal = new FFViewCache; + + if(NULL == bottomRightNormal) + { + bottomRightNormal = new FFViewCache; + } + + if(NULL == topLeftClicked) + { + topLeftClicked = new FFViewCache; + } + + topCenterClicked = new FFViewCache; + + if(NULL == topRightClicked) + { + topRightClicked = new FFViewCache; + } + + centerLeftClicked = new FFViewCache; + centerClicked = new FFViewCache; + centerRightClicked = new FFViewCache; + + if(NULL == bottomLeftClicked) + { + bottomLeftClicked = new FFViewCache; + } + + bottomCenterClicked = new FFViewCache; + + if(NULL == bottomRightClicked) + { + bottomRightClicked = new FFViewCache; + } + + setSkin(); +} +/** + * setSkin initiate FFViewCaches, update their size to default and set minimum width and height of widget + */ +void FFAbstractButton::setSkin() +{ + +// QSize sizeTmp = QSize(width(), height()); + + if(!topLeftNormal->isValid()) + { + topLeftNormal->init(path + "_topleft_normal.svg"); + } + + topCenterNormal->init(path + "_topcenter_normal.svg"); + + if(!topRightNormal->isValid()) + { + topRightNormal->init(path + "_topright_normal.svg"); + } + + centerLeftNormal->init(path + "_centerleft_normal.svg"); + centerNormal->init(path + "_center_normal.svg"); + centerRightNormal->init(path + "_centerright_normal.svg"); + + if(!bottomLeftNormal->isValid()) + { + bottomLeftNormal->init(path + "_bottomleft_normal.svg"); + } + + bottomCenterNormal->init(path + "_bottomcenter_normal.svg"); + + if(!bottomRightNormal->isValid()) + { + bottomRightNormal->init(path + "_bottomright_normal.svg"); + } + + if(!topLeftClicked->isValid()) + { + topLeftClicked->init(path + "_topleft_clicked.svg"); + } + + topCenterClicked->init(path + "_topcenter_clicked.svg"); + + if(!topRightClicked->isValid()) + { + topRightClicked->init(path + "_topright_clicked.svg"); + } + + centerLeftClicked->init(path + "_centerleft_clicked.svg"); + centerClicked->init(path + "_center_clicked.svg"); + centerRightClicked->init(path + "_centerright_clicked.svg"); + + if(!bottomLeftClicked->isValid()) + { + bottomLeftClicked->init(path + "_bottomleft_clicked.svg"); + } + + bottomCenterClicked->init(path + "_bottomcenter_clicked.svg"); + + if(!bottomRightClicked->isValid()) + { + bottomRightClicked->init(path + "_bottomright_clicked.svg"); + } + + pixmapsPositionWidth_ = centerNormal->defaultSize().width(); + pixmapsPositionHeight_ = centerNormal->defaultSize().height(); + + if(!staticFFViewCacheUpdated) + { + //Update view once after skin was set + topLeftNormal->updateView(topLeftNormal->defaultSize()); + topRightNormal->updateView(topRightNormal->defaultSize()); + bottomLeftNormal->updateView(bottomLeftNormal->defaultSize()); + bottomRightNormal->updateView(bottomRightNormal->defaultSize()); + + topLeftClicked->updateView(topLeftClicked->defaultSize()); + topRightClicked->updateView(topRightClicked->defaultSize()); + bottomLeftClicked->updateView(bottomLeftClicked->defaultSize()); + bottomRightClicked->updateView(bottomRightClicked->defaultSize()); + + minimumWidth + = qMax(topLeftNormal->defaultSize().width() + + topRightNormal->defaultSize().width(), + bottomLeftNormal->defaultSize().width() + + bottomRightNormal->defaultSize().width()); + + staticFFViewCacheUpdated = true; + } + + pixmapsPositionWidth_ = centerNormal->defaultSize().width(); + pixmapsPositionHeight_ = centerNormal->defaultSize().height(); + + insideRect.leftIndent_ = topLeftNormal->defaultSize().width(); + + setMinimumHeight(DEFAULT_BUTTON_HEIGHT); + setMinimumWidth(2 * minimumWidth); +} + +/** + * Support mouse press event. + * @param event Contains all informations about event. + */ +void FFAbstractButton::mousePressEvent(QMouseEvent* event) +{ + Q_UNUSED(event) + isClicked_ = true; // isClicked contains boolean true information of mouse button pressed + update(); +} + +/** + * Support mouse release event. + * @param event Contains all informations about event. + */ +void FFAbstractButton::mouseReleaseEvent(QMouseEvent *event) +{ + Q_UNUSED(event) + + if(isClicked_) + { + if(!signalsBlocked()) + { + emit clicked(); + } + } + + isClicked_ = false; // isClicked contains boolean false information of mouse button unpressed + update(); +} + +/** + * Recalculate geometry of elements on button + */ +void FFAbstractButton::updateView() +{ + if(pixmapsPositionHeight_ <= 0) + { + pixmapsPositionHeight_ = 1; + } + //Update view all the time resize event appear: + topCenterNormal->updateView(QSize(pixmapsPositionWidth_, + topCenterNormal->defaultSize().height())); + bottomCenterNormal->updateView(QSize(pixmapsPositionWidth_, + bottomCenterNormal->defaultSize().height())); + + centerLeftNormal->updateView(QSize(centerLeftNormal->defaultSize().width(), + pixmapsPositionHeight_)); + centerRightNormal->updateView(QSize(centerRightNormal->defaultSize().width(), + pixmapsPositionHeight_)); + centerNormal->updateView(QSize(pixmapsPositionWidth_, + pixmapsPositionHeight_)); + + topCenterClicked->updateView(QSize(pixmapsPositionWidth_, + topCenterClicked->defaultSize().height())); + bottomCenterClicked->updateView(QSize(pixmapsPositionWidth_, + bottomCenterClicked->defaultSize().height())); + centerLeftClicked->updateView(QSize(centerLeftClicked->defaultSize().width(), + pixmapsPositionHeight_)); + centerRightClicked->updateView(QSize(centerRightClicked->defaultSize().width(), + pixmapsPositionHeight_)); + centerClicked->updateView(QSize(pixmapsPositionWidth_, + pixmapsPositionHeight_)); +} +/** + * Draws icon on button + */ +void FFAbstractButton::paintIcon(QPainter* painter) +{ + int move = 0; + if(iconAlignment_ == Qt::AlignLeft) + { + move = insideRect.leftIndent_; + } + else if(iconAlignment_ == Qt::AlignRight) + { + move = -insideRect.leftIndent_; + } + else + { + move = 0; + } + //if icon was set paint it + if(!icon().isNull()) + { + QRect rect(0 + leftMargin() + move, + 0 + topMargin(), + geometry().width() - rightMargin() - leftMargin(), + geometry().height() - bottomMargin() - topMargin()); + + //paint icon in button center + icon().paint(painter, + rect, + iconAlignment_, + QIcon::Normal, + QIcon::Off); + } + +} + +/** + * Initiate FFAbstractButtonPrivate + */ +FFAbstractButtonPrivate::FFAbstractButtonPrivate() +{ + setMargins(0.0, 0.0, 0.0, 0.0); + hSpacing_ = 0; + hSpacingTemp = 0; + vSpacing_ = 0; + vSpacingTemp = 0; + leftIndent_ = 0; +} + +/** + * Dectructor of FFAbstractButtonPrivate + */ +FFAbstractButtonPrivate::~FFAbstractButtonPrivate() +{ + ; +} + +/** + * scaleMargins scale margins eg. when resize event appear + * @param oldSize before eg. resize event + * @param newSize actual size after eg. resize event + */ +void FFAbstractButtonPrivate::scaleMargins(QSize oldSize, QSize newSize) +{ + float widthProportion = (float)newSize.width() / (float)oldSize.width(); + float heightProportion = (float)newSize.height() + / (float)oldSize.height(); + + leftMarginTemp *= widthProportion; + rightMarginTemp *= widthProportion; + topMarginTemp *= heightProportion; + bottomMarginTemp *= heightProportion; + hSpacingTemp *= heightProportion; + vSpacingTemp *= widthProportion; + + leftMargin_ = leftMarginTemp; + rightMargin_ = rightMarginTemp; + topMargin_ = topMarginTemp; + bottomMargin_ = bottomMarginTemp; + hSpacing_ = hSpacingTemp; + vSpacing_ = vSpacingTemp; +} + +/** + * setMargins set left, right, top and bottom margins + * @param leftMargin Size of left margin + * @param rightMargin Size of right margin + * @param topMargin Size of top margin + * @param bottomMargin Size of bottom margin + */ +void FFAbstractButtonPrivate::setMargins(int leftMargin, + int rightMargin, + int topMargin, + int bottomMargin) +{ + leftMargin_ = leftMargin; + rightMargin_ = rightMargin; + topMargin_ = topMargin; + bottomMargin_ = bottomMargin; + + leftMarginTemp = leftMargin; + rightMarginTemp = rightMargin; + topMarginTemp = topMargin; + bottomMarginTemp = bottomMargin; +} +/** + * Returns alignment of icon + */ +Qt::Alignment FFAbstractButton::iconAlignment() +{ + return iconAlignment_; +} +/** + * Sets alignment of icon + * @param iconAlignment new alignment of icon + */ +void FFAbstractButton::setIconAlignment(Qt::Alignment iconAlignment) +{ + this->iconAlignment_ = iconAlignment; +} +/** + * Returns default width of image used as button's corner + */ +int FFAbstractButton::indent() +{ + return insideRect.leftIndent_; +} + +/** + \fn void FFAbstractButton::clicked() + + This signal is emitted when the button will be clicked. + */ diff --git a/libffqw-n810-1.0/sources/ffabstractbutton.h b/libffqw-n810-1.0/sources/ffabstractbutton.h new file mode 100644 index 0000000..91b2b15 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffabstractbutton.h @@ -0,0 +1,222 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffabstractbutton.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + */ + +#ifndef FFABSTRACTBUTTON_H +#define FFABSTRACTBUTTON_H + +#include "ffviewcache.h" +#include "ffscrollinglabel.h" +#include +#include +#include + + +static const QString BUTTON_PATH= ":/standard/button"; /// + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffabstractcombobox.cpp + * @brief Implementation of the FFAbstractComboBox and FFComboPopUp class. + * + * @author ComArch S.A. + * @date 2009.10.09 + * @version 1.0 + * + * This widget has activator(to open popup window) and popup window(to select item) + * FFAbstractComboBox and FFComboPopUp are friend classes in both directions + */ + +#include "ffabstractcombobox.h" + +/** + * Rounds argument up. + * @param var is an argument to round up + * @return value of rounded up argument + */ + +float roundUp(float var) +{ + if(0 > ((int)var - var )) + { + return (int)var + 1; + } + else + { + return (int)var; + } +} + +/** + * Constructs a FFAbstractButton with a parent. + * Sets variable to initial values. + */ +FFAbstractComboBox::FFAbstractComboBox(FFAbstractButton* activator, QWidget* parent): + QWidget(parent) +{ + cols_ = 1; + + //sets activator + activator_ = activator; + activator_->setObjectName("Activator"); + + //sets layout of combobx + mainLayout = new QGridLayout(); + mainLayout->setMargin(0); + mainLayout->setSpacing(0); + mainLayout->addWidget(activator_); + setLayout(mainLayout); + + //sets popup + popUp = new FFComboPopUp(this); + popUp->setWindowFlags(Qt::SplashScreen); + popUp->setGeometry(QApplication::desktop()->geometry()); + popUp->hide(); + popUp->setWindowModality(Qt::WindowModal); + + setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); + + //connects + connect(activator_, SIGNAL(clicked()), popUp, SLOT(exec())); + connect(this, SIGNAL(reset()),popUp,SLOT(recreatePopUp())); + connect(this, SIGNAL(itemsChanged(FFAbstractButton*)),popUp,SLOT(registerNewItem(FFAbstractButton*))); +} +/** + * A virtual destructor of FFAbstractButton. + */ +FFAbstractComboBox::~FFAbstractComboBox() +{ + ; +} + +/** + * Removes item from combobox + * @param index is a index of item + */ +void FFAbstractComboBox::removeItem(int index) +{ + if(items_.size()>index) + { + disconnect(items_.at(index)); + delete items_.takeAt(index); + } + emit reset(); +} +/** + * Calls setActivatorSpecs and emits signals activated(QVariant),activated(int) + * @param index is a index of item + */ +void FFAbstractComboBox::setCurrentItem(int index) +{ + if(items_.size()>index) + { + setActivatorSpecs(items_.at(index)); + if(!signalsBlocked()) + { + emit activated(activatorSpecs()); + emit activated(index); + } + } +} +/** + * Returns pointer to activator + */ +FFAbstractButton* FFAbstractComboBox::activator() +{ + return activator_; +} +/** + * Returns number of columns + */ +int FFAbstractComboBox::cols() +{ + return cols_; +} +/** + * Returns list of items + */ +QList FFAbstractComboBox::items() +{ + return items_; +} +/** + * Returns popup's layout spacing + */ +int FFAbstractComboBox::spacing() +{ + return popUp->scrollAreaLayout->spacing(); +} +/** + * Sets columns number + * @param cols a number of columns + */ +void FFAbstractComboBox::setCols(int cols) +{ + cols_ = cols; + emit reset(); +} +/** + * Sets popup's layout spacing + * @param spacing a size of spacing + */ +void FFAbstractComboBox::setSpacing(int spacing) +{ + popUp->scrollAreaLayout->setSpacing(spacing); + emit reset(); +} +/** + * Adds item to combobox + * @param item a pointer to adding item + * @param autoRecreate defines if layout should be recreated automatically + */ +void FFAbstractComboBox::insertItem(FFAbstractButton* item, bool autoRecreate) +{ + items_.append(item); + emit itemsChanged(item); + + if(autoRecreate) + { + emit reset(); + } +} + +/** + * Constructs a FFComboPopUp with a parent. + * Sets variable to initial values. + */ +FFComboPopUp::FFComboPopUp(QWidget* parent) : QDialog(parent) +{ + + parentCB = dynamic_cast(parent); + //sets popup window's layout + popUpLayout = new QGridLayout(); + popUpLayout->setMargin(0); + popUpLayout->setSpacing(0); + + //sets scrollarea and scrollarea's widget + scrollArea = new FFScrollArea(); + scrollArea->setWidgetResizable(true); + + popUpLayout->addWidget(scrollArea,0,0); + setLayout(popUpLayout); + + scrollAreaLayout = new QGridLayout(); + scrollAreaLayout->setSpacing(5); + scrollAreaLayout->setMargin(0); + + scrollAreaWidget = new QWidget(); + scrollAreaWidget->setStyleSheet("background-color:black;"); + + scrollAreaWidget->setLayout(scrollAreaLayout); + scrollArea->setWidget(scrollAreaWidget); + + //sets back button + backButton = new FFAbstractButton; + backButton->setMargins(0,0,5,5); + backButton->setIconAlignment(Qt::AlignRight); + backButton->setIcon(QIcon(QPixmap(":/standard/combo_colorarrow.svg"))); + scrollAreaLayout->addWidget(backButton,0,0,1,parentCB->cols_); + + //connect + connect(backButton,SIGNAL(clicked()),this,SLOT(reject())); +} +/** + * Serves show event. Override method from mother class. + */ +void FFComboPopUp::showEvent(QShowEvent* event) +{ + // The calculation of the size of the window so that it occupied little space as possible. + + int itemsHeight = 0; + + // for each row + for(int i=0; iitems_.size()/(float)parentCB->cols_); ++i) + { + // height of an element + itemsHeight += parentCB->items_.at(i)->minimumHeight(); + + //height of an spacing + itemsHeight += scrollAreaLayout->spacing(); + } + + itemsHeight += backButton->minimumHeight(); + + if(itemsHeight > QApplication::desktop()->geometry().height()) + itemsHeight = QApplication::desktop()->geometry().height(); + + setGeometry(0,0,QApplication::desktop()->geometry().width(),itemsHeight); + + QDialog::showEvent(event); + +} +/** + * Refreshes popup layout at view event + */ +void FFComboPopUp::recreatePopUp() +{ + // Deleting old objects + QLayoutItem *child; + while((child = scrollAreaLayout->takeAt(0)) != 0) + { + delete child; + } + + // Arranging objects on the popup + scrollAreaLayout->addWidget(backButton,0,0,1,parentCB->cols_); + for(int i=0, cols=0, rows=1; iitems_.size();++i,++cols) + { + if(cols==parentCB->cols_) + { + ++rows; + } + cols%=parentCB->cols_; + scrollAreaLayout->addWidget(parentCB->items_.at(i),rows,cols); + } + + // Force refresh FFScrollArea (this line exist because FFScrollArea have a little imperfection - event filter problem) + scrollArea->setWidget(scrollAreaWidget); +} +/** + * Connects new item signal clicked to actual widget's slot accept + */ +void FFComboPopUp::registerNewItem(FFAbstractButton* newItem) +{ + connect(newItem,SIGNAL(clicked()),this,SLOT(accept())); +} +/** + * Calls setCurrentItem with widget index + */ +void FFComboPopUp::accept() +{ + parentCB->setCurrentItem(scrollAreaLayout->indexOf(dynamic_cast(sender()))-1); + QDialog::accept(); +} + +/** + \fn void FFAbstractComboBox::reset() + *This signal is emitted when is necessary to refresh layout of popup window. + */ + +/** + \fn void FFAbstractComboBox::activated(QVariant spec) + *This signal is emitted when option on combobox was chosen. + *@param spec contains specific chosen value + */ + +/** + \fn void FFAbstractComboBox::activated(int index) + *This signal is emitted when option on combobox was chosen. + *@param index contains index of chosen item + */ + + +/** + \fn void FFComboPopUp::selected(FFAbstractButton* selectedButton) + *This signal is emitted when item was selected + *@param selectedButton pointer to selected item + */ diff --git a/libffqw-n810-1.0/sources/ffabstractcombobox.h b/libffqw-n810-1.0/sources/ffabstractcombobox.h new file mode 100644 index 0000000..eabb0b9 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffabstractcombobox.h @@ -0,0 +1,191 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffabstractcombobox.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.10.9 + * @version 1.0 + */ + +#ifndef FFABSTRACTCOMBOBOX_H +#define FFABSTRACTCOMBOBOX_H + +#include +#include +#include +#include +#include +#include + +#include "ffabstractbutton.h" +#include "ffscrollarea.h" + +class FFComboPopUp; + +//const int SCROLLBAR_SIZE = 5;///< Default scrollbar's size + +/** + * @author ComArch S.A. + * @date 2009.10.09 + * @version 1.0 + * + * @brief A class inherited by specific comboboxes + */ +class FFAbstractComboBox : public QWidget +{ + Q_OBJECT + friend class FFComboPopUp; + +public: + FFAbstractComboBox(FFAbstractButton* activator, QWidget* parent = 0); + virtual ~FFAbstractComboBox(); + + virtual void addItem(QVariant item) = 0; + virtual void removeItem(int index); + virtual void setCurrentItem(int index); + + FFAbstractButton* activator(); + int cols(); + QList items(); + QPen pen(); + int spacing(); + + void setCols(int cols); + void setSpacing(int spacing); + +protected: + FFAbstractButton* activator_; ///< activator shows actual combobox's value and activate popup window + QPen pen_; ///< contain actual pen + QList items_; /// + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +#include "ffabstractwidget.h" + +/** + * @file ffabstractwidget.cpp + * @brief Implementation of the FFAbstractWidget + * + * @author ComArch S.A. + * @date 2009.07.31 + * @version 1.0 + */ + +/** + * Constructs an FFAbstractWidget with a parent. + */ +FFAbstractWidget::FFAbstractWidget(QWidget* parent) + : QWidget(parent) +{ + +} + +/** + * A virtual destructor + */ +FFAbstractWidget::~FFAbstractWidget() +{ + +} diff --git a/libffqw-n810-1.0/sources/ffabstractwidget.h b/libffqw-n810-1.0/sources/ffabstractwidget.h new file mode 100644 index 0000000..cdc6dbf --- /dev/null +++ b/libffqw-n810-1.0/sources/ffabstractwidget.h @@ -0,0 +1,243 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffabstractwidget.h + * @brief contains all required declarations and basic utilities functions + * + * @author ComArch S.A. + * @date 2009.07.31 + * @version 1.0 + */ +#ifndef FFABSTRACTWIDGET_H_ +#define FFABSTRACTWIDGET_H_ + +#include + +class FFAbstractWidget; +typedef FFAbstractWidget FF; + +/** + * Defines default title text color for button + */ +const QColor FF_TITLE_COLOR = QColor(14,221,26); +/** + * Defines default description text color for button + */ +const QColor FF_DESCRIPTION_COLOR = QColor(100,100,100); +/** + * Defines default button height + */ +const int DEFAULT_BUTTON_HEIGHT = 65; +/** + * Defines default combo button height + */ +const int DEFAULT_COMBO_HEIGHT = 65; +/** + * Defines color for legend widget used on FFChart + */ +const QColor DEFAULT_LEGEND_BACKGROUND_COLOR = QColor(26,26,26); +/** + * Defines opacity for legend widget used on FFChart + */ +const qreal DEFAULT_LEGEND_BACKGROUND_OPACITY = 0.8; + +/** + * Defines default font name for widget title + */ +const QString FONT_TITLE_DEF = "Arial"; +/** + * Defines default font name for widget description + */ +const QString FONT_TEXT_DEF = "Arial"; + +/** + * Defines title text color for scrolling label + */ +const QColor COLOR_TITLE_DEF = QColor(50, 255, 50); +/** + * Defines description text color for scrolling label + */ +const QColor COLOR_TEXT_DEF = QColor(50, 50, 255); +/** + * Defines bright background color + */ +const QColor COLOR_BRIGHT_BACKGROUND_DEF = QColor(250, 255, 250); +/** + * Defines dark background color + */ +const QColor COLOR_DARK_BACKGROUND_DEF = QColor(250, 255, 250); +/** + * Defines bright foreground color + */ +const QColor COLOR_BRIGHT_FOREGROUND_DEF = QColor(250, 255, 250); +/** + * Defines dark foreground color + */ +const QColor COLOR_DARK_FOREGROUND_DEF = QColor(250, 255, 250); + +/** + * @author ComArch S.A. + * @date 2009.07.30 + * @version 1.0 + * + * @brief A parent-class for all widgets included in FFQW Library + */ + +class FFAbstractWidget : public QWidget +{ + Q_OBJECT + +public: + FFAbstractWidget(QWidget* parent = 0); + virtual ~FFAbstractWidget(); + +/** + * describes standard FF widgets' sizes + */ +enum Size +{ + SIZE_TINY = 0x0001, + SIZE_SMALL = 0x0002, + SIZE_NORMAL = 0x0004, + SIZE_LARGE = 0x0008, + SIZE_HUGE = 0x0010 +}; + +/** + * describes standard FF widgets' fonts + */ +enum Font +{ + FONT_TITLE = 0x0020, FONT_TEXT = 0x0040 +}; + +/** + * describes standard FF widgets' colors + */ +enum Color +{ + COLOR_TITLE = 0x0080, + COLOR_TEXT = 0x0100, + COLOR_BRIGHT_BACKGROUND = 0x0200, + COLOR_DARK_BACKGROUND = 0x0400, + COLOR_BRIGHT_FOREGROUND = 0x0800, + COLOR_DARK_FOREGROUND = 0x1000 +}; + +/** + * defines standard FF widgets' alignment + */ +enum Alignment +{ + ALIGNMENT_LEFT = 0x2000, + ALIGNMENT_RIGHT = 0x4000, + ALIGNMENT_CENTER = 0x8000 +}; + +/** + * defines standard FF widgets' scrolling type + */ +enum Scroll +{ + SCROLL_SIDE_TO_SIDE = 0x0001 +}; + +}; +/** + * Mask for checking size + */ +const int SIZE_MASK = FF::SIZE_TINY | + FF::SIZE_SMALL | + FF::SIZE_NORMAL | + FF::SIZE_LARGE | + FF::SIZE_HUGE; +/** + * Mask for checking font type + */ +const int FONT_MASK = FF::FONT_TITLE | FF::FONT_TEXT; + +/** + * Mask for checking color + */ +const int COLOR_MASK = FF::COLOR_TITLE | + FF::COLOR_BRIGHT_BACKGROUND | + FF::COLOR_DARK_BACKGROUND | + FF::COLOR_BRIGHT_FOREGROUND | + FF::COLOR_DARK_FOREGROUND; +/** + * Mask for checking alignment + */ +const int ALIGNMENT_MASK = FF::ALIGNMENT_LEFT | FF::ALIGNMENT_RIGHT | FF::ALIGNMENT_CENTER; + +#endif // FFABSTRACTWIDGET_H diff --git a/libffqw-n810-1.0/sources/ffchart.cpp b/libffqw-n810-1.0/sources/ffchart.cpp new file mode 100644 index 0000000..ca0f7ff --- /dev/null +++ b/libffqw-n810-1.0/sources/ffchart.cpp @@ -0,0 +1,347 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchart.cpp + * @brief Implementation of the FFChartScene class. + * + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + */ + +#include "ffchart.h" + + +/** + * Constructs a FFChart with a parent. + */ +FFChart::FFChart(QWidget* parent) : + FFAbstractWidget(parent) +{ + init(); +} + +/** + * A virtual destructor. + */ +FFChart::~FFChart() +{ + +} + +/** + * Initiates an object of FFChart. Sets all needed fields and connections. + * It is called by all constructors. + */ +void FFChart::init() +{ + //sets size policy + setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); + + + // creates needed objects + view = new QGraphicsView(this); + scene = new FFChartScene(this); + legend = new FFChartLegend(this); + + //sets default values + autoSort_ = true; + autoValidate_ = true; + + //sets view + view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + view->setScene(scene); + //necessary with our librray in Qt 4.6 +#ifndef DIABLO_COMP + view->setOptimizationFlag(QGraphicsView::IndirectPainting); +#endif + + //sets legend size + legend->setGeometry(width() / 2, 0, width() / 2, height()); + //hides legend + legend->hide(); + + + + view->installEventFilter(this); + + //connects + connect(this,SIGNAL(seriesChanged(QList)),scene,SLOT(seriesChanged(QList))); + connect(legend, SIGNAL(updateSeries()), scene, SLOT(update())); +} + +/** + * Adds new series that will be drawn on the chart. + */ +void FFChart::addSeries(FFChartSeries* series) +{ + + //series validation + if(autoValidate_) + { + series->validate(); + } + //series' point sorting + if(autoSort_) + { + series->sort(); + } + + + series->pen()->setCosmetic(true); + + //add series to sies list and legend + series_.append(series); + + legend->addSeries(series); + + //updates scene + scene->update(); + + + emit seriesChanged(series_); +} + +/** + * Removes series indicated by given pointer. + */ +void FFChart::removeSeries(FFChartSeries* series) +{ + //searches for series and remove it + for(int i = 0; i < series_.size(); ++i) + { + if(series_[i] == series) + { + legend->deleteSeries(series); + series_.removeAt(i); + } + } + + //update scene + scene->update(); + + emit seriesChanged(series_); +} + +/** + * Removes all series. + */ +void FFChart::removeSeries() +{ + //removes series + int num = series_.size(); + for(int i = 0; i < num; ++i) + { + legend->deleteSeries(series_.at(0)); + series_.removeAt(0); + } + //updates scene + scene->update(); + + emit seriesChanged(series_); +} + +/** + * Returns a list with pointers to all series contained in the chart. + */ +QList FFChart::series() +{ + return series_; +} + +/** + * Returns pointer to series with given name. + * @return pointer to the looking series or NULL if series is not found + */ +FFChartSeries* FFChart::series(QString name) +{ + //return pointer to first added series with given name + + for(int i=0; iname() == name) + { + return series_[i]; + } + } + //If found nothing NULL is returned + return NULL; +} + +/** + * Turns on/off auto-sorting on series. If it is on then each newly added series + * will be sorted by 'x' values. + */ +void FFChart::setAutoSort(const bool& autoSort) +{ + autoSort_ = autoSort; +} + +/** + * Turns on/off auto-validating on series. If it is on then each newly added + * series will be cleaned with the same points. + */ +void FFChart::setAutoValidate(const bool& autoValidate) +{ + autoValidate_ = autoValidate; +} + +/** + * Returns true if auto-sorting is enabled, otherwise false. + */ +bool FFChart::isAutoSortEnabled() const +{ + return autoSort_; +} + +/** + * Returns true if auto-validating is enabled, otherwise false. + */ +bool FFChart::isAutoValidateEnabled() const +{ + return autoValidate_; +} + +/** + * Sets object that will be responsible for managing with events sent to + * the FFChart. + */ +void FFChart::installEventFilter(QObject* object) +{ + view->installEventFilter(object); +} + +/** + * Slot that zooms in the current chart into a rectangle which is smaller by + * a given ratio. + */ +void FFChart::zoomIn(qreal ratio) +{ + scene->zoomIn(ratio); +} + +/** + * Slot that zooms out the current chart into a rectangle which is larger by + * a given ratio. + */ +void FFChart::zoomOut(qreal ratio) +{ + scene->zoomOut(ratio); +} + +/** + * Moves the chart by given vector. + */ +void FFChart::moveBy(QPointF point) +{ + scene->moveBy(point.toPoint()); +} + +/** + * Overridden virtual method. It is responsible for managing with resize events. + */ +void FFChart::resizeEvent(QResizeEvent* event) +{ + Q_UNUSED(event) + view->resize(size()); + scene->setSceneRect(QRectF(0,0,event->size().width(),event->size().height())); + legend->setGeometry(width() / 2, 0, width() / 2, height()); + + QWidget::resizeEvent(event); +} + +/** + * Toggles the legend. If it is visible, this method makes it hidden and + * vice versa. + */ +void FFChart::showLegend() +{ + if(legend->isVisible()) + { + legend->hide(); + this->repaint(); + } + else + { + legend->show(); + this->repaint(); + } +} + +/*! + * \fn void FFChart::seriesChanged(QList); + * + * This Signal is emitted when the set of series was changed. + */ diff --git a/libffqw-n810-1.0/sources/ffchart.h b/libffqw-n810-1.0/sources/ffchart.h new file mode 100644 index 0000000..5114312 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffchart.h @@ -0,0 +1,172 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchart.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + */ + +#ifndef FFCHART_H +#define FFCHART_H + +#include +#include +#include +#include +#include + +#ifndef MAEMO +#include +#endif + +#include "ffabstractwidget.h" +#include "ffchartbutton.h" +#include "ffchartscene.h" +#include "ffchartseries.h" +#include "ffchartlegend.h" + + +/** + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + * + * @brief A good looking widget to visualize simple data series. + */ +#ifdef MAEMO + +class FFChart : public FFAbstractWidget +{ + Q_OBJECT + +#else + +class QDESIGNER_WIDGET_EXPORT FFChart : public FFAbstractWidget +{ + Q_OBJECT + Q_PROPERTY(bool autosortSeries READ isAutoSortEnabled WRITE setAutoSort) + Q_PROPERTY(bool autoValidateSeries READ isAutoValidateEnabled WRITE setAutoValidate) + +#endif + +public: + FFChart(QWidget* parent = 0); + virtual ~FFChart(); + + void addSeries(FFChartSeries* series); + void removeSeries(FFChartSeries* series); + void removeSeries(); + + QList series(); + FFChartSeries* series(QString name); + + void setAutoSort(const bool& autoSort); + void setAutoValidate(const bool& autoValidate); + + bool isAutoSortEnabled() const; + bool isAutoValidateEnabled() const; + void installEventFilter(QObject* object); + +public slots: + void zoomIn(qreal ratio); + void zoomOut(qreal ratio); + void moveBy(QPointF point); + +protected: + void resizeEvent(QResizeEvent* event); + +private: + QGraphicsView* view; ///< view of ffChart + FFChartScene* scene; ///< scene of FFchart + FFChartLegend* legend; ///< legend of FFChart + + QList series_; /// series_); + +public slots: + void showLegend(); +}; + +#endif // FFCHART_H diff --git a/libffqw-n810-1.0/sources/ffchartbutton.cpp b/libffqw-n810-1.0/sources/ffchartbutton.cpp new file mode 100644 index 0000000..583fe72 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffchartbutton.cpp @@ -0,0 +1,333 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartbutton.cpp + * @brief Implementation of the FFChartButton class. + * + * @author ComArch S.A. + * @date 2009.09.03 + * @version 1.0 + * Extend QGraphicsSvgItem to easy use 1 or 2 image and added functionality + * to decrease and increase item after click + */ + +#include "ffchartbutton.h" + +/** + * Constructs a FFChartButton with a parent. + * Set variables to initial values. + */ +FFChartButton::FFChartButton(QGraphicsItem* parent) : + QGraphicsSvgItem(parent) +{ + init(); +} + +/** + * A virtual destructor of FFChartButton. + */ +FFChartButton::~FFChartButton() +{ + ; +} + +/** + * Set variables to initial values. + */ +void FFChartButton::init() +{ + //sets default values + state = false; //usefull when changing beetwen 2 images, it remember click state - what image should be display + twoImageON = false; //state to store if the button have 2 images + startedTimeLine = false; //state to store if time line ends + + sizeRatio = 1; + frameRange_ = DEFAULT_FRAME_RANGE; + duration_ = DEFAULT_DURATION_TIME; + zoomRatio_ = DEFAULT_ZOOM_RATIO; + scaleWidth = 1; + scaleHeight = 1; + + image = new FFViewCache; + image2 = new FFViewCache; + + //sets animation's parameters + animation = new QTimeLine(duration_, this); + animation->setFrameRange(0, frameRange_); + animation->setUpdateInterval(duration_ / frameRange_); + + //connects + connect(animation, SIGNAL(frameChanged(int)), this, SLOT(tick(int))); + connect(animation, SIGNAL(finished()), this, SLOT(animationFinished())); +} + +/** + * Function responsible for animation (zooming) + * @param frame Number of the frame + */ +void FFChartButton::tick(int frame) +{ + + qreal width = this->boundingRect().width(); + qreal height = this->boundingRect().height(); + qreal ratio = 1; + QGraphicsSvgItem::scale(1 / sizeRatio, 1 / sizeRatio); + + //Setting scaling ratio + //first part of animation + if(frame <= frameRange_ / 2) + { + ratio = ((zoomRatio_ - 1) * (frame)) / (frameRange_ / 2) + 1; + } + //second part of animation + else if(frame <= frameRange_) + { + ratio = (zoomRatio_ - 1) * (frameRange_ - frame) / (frameRange_ + / 2) + 1; + } + + sizeRatio = ratio; + //change scale and posiotion of button + QGraphicsSvgItem::scale(ratio, ratio); + this->setPos(startingPosition.x() - ((ratio * width - width) + * scaleWidth / 2), startingPosition.y() - ((ratio + * height - height) * scaleHeight / 2)); +} + +/** + * Function to handle situation when animation reach end + */ +void FFChartButton::animationFinished() +{ + animation->stop(); + sizeRatio = 1; + startedTimeLine = false; +} + +/** + * Set image of item + * @param path Path to image + */ +void FFChartButton::setImage(QString path) +{ + image->init(path + ".svg"); + image->updateView(image->defaultSize()); + setSharedRenderer(image->renderer()); + + twoImageON = false; +} + +/** + * Set images of item + * @param path Path to first image + * @param path2 Path to second image + */ +void FFChartButton::setImage(QString path, QString path2) +{ + + image->init(path + ".svg"); + image2->init(path2 + ".svg"); + + setSharedRenderer(image->renderer()); + twoImageON = true; +} + +/** + * Set size of item + * @param size New size of the item + */ +void FFChartButton::setSize(const QSizeF& size) +{ + qreal tmpScaleWidth = size.toSize().width() / boundingRect().width() + * scaleWidth; + qreal tmpScaleHeight = size.toSize().height() / boundingRect().height() + * scaleHeight; + scale(tmpScaleWidth, tmpScaleHeight); +} + +/** + * Set if item will be increasing (zoomRatio>1) or will be decreasing (zoomRatio<1) + * @param zoomRatio How much size will be changing during animation + */ +void FFChartButton::setZoomRatio(qreal zoomRatio) +{ + zoomRatio_ = zoomRatio; +} + +/** + * Set number of frame in animation + * @param frameRange Number of frames + */ +void FFChartButton::setFrameRange(int frameRange) +{ + frameRange_ = frameRange; + animation->setFrameRange(0, frameRange_); +} + +/** + * Set how much time animation take + * @param duration Time of animation + */ +void FFChartButton::setDuration(int duration) +{ + duration_ = duration; + animation->setDuration(duration_); +} + +/** + * Scale the item + * @param sx Size of scale in width + * @param sy Size of scale in height + */ +void FFChartButton::scale(qreal sx, qreal sy) +{ + scaleWidth = sx * scaleWidth; + scaleHeight = sy * scaleHeight; + QGraphicsSvgItem::scale(scaleWidth, scaleHeight); +} + +/** + * Return if the item will be increasing (zoomRatio>1) or will be decreasing (zoomRatio<1) + */ +qreal FFChartButton::zoomRatio() +{ + return zoomRatio_; +} + +/** + * Return number of frame in animation + */ +int FFChartButton::frameRange() +{ + return frameRange_; +} + +/** + * Return how much time animation take + */ +int FFChartButton::duration() +{ + return duration_; +} + +/** + * Support mouse release event. + * @param event Contains all informations about event. + */ +void FFChartButton::mouseReleaseEvent(QGraphicsSceneMouseEvent * event) +{ + Q_UNUSED(event) + //If button has two images they are toggled + if(twoImageON) + { + if(state == false) + { + setSharedRenderer(image2->renderer()); + } + else + { + setSharedRenderer(image->renderer()); + } + state = !state; + } + + //Starts animation + if(!startedTimeLine) + { + startingPosition = this->pos(); + animation->start(); + startedTimeLine = true; + } + emit mouseRelease(); +} + +/** + * Support mouse press event. + * @param event Contains all informations about event. + */ +void FFChartButton::mousePressEvent(QGraphicsSceneMouseEvent* event) +{ + Q_UNUSED(event) + emit mousePress(); +} + +/** + * \fn void FFChartButton::mouseRelease() + * This signal is emitted when the item is released. + */ + +/** + * \fn void FFChartButton::mousePress() + * This signal is emitted when the item is pressed. + */ diff --git a/libffqw-n810-1.0/sources/ffchartbutton.h b/libffqw-n810-1.0/sources/ffchartbutton.h new file mode 100644 index 0000000..e6a518f --- /dev/null +++ b/libffqw-n810-1.0/sources/ffchartbutton.h @@ -0,0 +1,153 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartbutton.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.09.03 + * @version 1.0 + */ + +#ifndef FFCHARTBUTTON_H +#define FFCHARTBUTTON_H + +#include +#include +#include "ffviewcache.h" + +static const qreal DEFAULT_ZOOM_RATIO = 1.2; +static const int DEFAULT_DURATION_TIME = 400; +static const int DEFAULT_FRAME_RANGE = 20; + +/** + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + * + * @brief Extend QGraphicsSvgItem to easy use 1 or 2 image and added + * functionality to decrease and increase item after click + */ + +class FFChartButton : public QGraphicsSvgItem +{ +Q_OBJECT +public: + FFChartButton(QGraphicsItem* parent = 0); + virtual ~FFChartButton(); + + void setImage(QString path); + void setImage(QString path,QString path2); + void setSize(const QSizeF& size); + void setZoomRatio(qreal zoomRatio); + void setFrameRange(int frameRange); + void setDuration(int duration); + void scale(qreal sx, qreal sy); + + qreal zoomRatio(); + int frameRange(); + int duration(); + +protected: + virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent* event); + virtual void mousePressEvent(QGraphicsSceneMouseEvent* event); +private: + QTimeLine* animation; ///< stores timer of animation + FFViewCache* image; ///< cached image1 + FFViewCache* image2; ///< cached image2 + + int frameRange_; ///< duration of one frame + int duration_; ///< duration of animation + qreal zoomRatio_; ///< ratio of zooming + qreal sizeRatio; ///< ratio of resizing + QPointF startingPosition; ///< point of starting position on the scene + bool startedTimeLine; ///< true if animation is started + qreal scaleWidth ; ///< scale's ratio of width + qreal scaleHeight ; ///< scale's ratio of height + + bool twoImageON; ///< is true when two images are set + bool state; ///< stores information about it in which state currently is button. + + void init(); + +signals: + void mouseRelease(); + void mousePress(); + +private slots: + void tick(int frame); + void animationFinished(); +}; + +#endif // FFCHARTBUTTON_H diff --git a/libffqw-n810-1.0/sources/ffchartlegend.cpp b/libffqw-n810-1.0/sources/ffchartlegend.cpp new file mode 100644 index 0000000..81c7c0f --- /dev/null +++ b/libffqw-n810-1.0/sources/ffchartlegend.cpp @@ -0,0 +1,390 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartlegend.cpp + * @brief Implementation of the FFChartLegend class + * + * @author ComArch S.A. + * @date 2009.08.20 + * @version 1.0 + */ +#include "ffchartlegend.h" + +/** + * Constructs a FFChartLegend with a parent. + */ +FFChartLegend::FFChartLegend(QWidget* parent) : + FFAbstractWidget(parent) +{ + this->parent = parent; + init(); +} + +/** + * A virtual destructor. + */ +FFChartLegend::~FFChartLegend() +{ + int num = legendSeriesTable.size(); + for(int i = 0; i < num; ++i) + { + delete legendSeriesTable.at(0); + legendSeriesTable.remove(0); + } +} + +/** + * Initiates all needed fields and functionality + */ +void FFChartLegend::init() +{ + //sets default values + path = LEGEND_PATH; + + backgroundColor = DEFAULT_LEGEND_BACKGROUND_COLOR; + backgroundOpacity = DEFAULT_LEGEND_BACKGROUND_OPACITY; + + actualChangingSeries = NULL; + + //set style + setStyleSheet("background-color: transparent"); + + //sets layout + legendLayout = new QGridLayout(this); + legendLayout ->setMargin(0); + this->setLayout(legendLayout); + + legendScrollArea = new FFScrollArea(this); + legendScrollArea->setFrameStyle(0); + legendScrollAreaItem = new QWidget(legendScrollArea); + legendScrollAreaLayout = new QGridLayout(legendScrollAreaItem); + legendScrollAreaItem->setLayout(legendScrollAreaLayout); + legendScrollAreaLayout->setMargin(0); + legendScrollAreaLayout->setSpacing(5); + + legendScrollAreaItem->setStyleSheet("background-color: transparent"); + legendScrollArea->setWidget(legendScrollAreaItem); + legendScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + legendScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + legendScrollArea->setFrameStyle(0); + + legendLayout->addWidget(legendScrollArea); + + legendControlPanel = new FFChartLegendControlPanel(this); + legendControlPanel->hide(); + + //connects + connect(legendControlPanel, + SIGNAL(penChanged(QPen)), + this, + SLOT(changeSeriesPen(QPen))); +} + +/** + * Supports click event. Shows or hide chart's legend + */ +void FFChartLegend::popUp() +{ + if(isVisible()) + { + this->hide(); + } + else + { + this->show(); + } + +} + +/** + * It updates size of FFChartLegend's elements + * Calls changeSize() method + */ +void FFChartLegend::resizeEvent(QResizeEvent* event) +{ + Q_UNUSED(event) + if(this->isVisible()) + { + changeSize(); + } + +} +/** + * Fits size of FFChartLegend's elements chart when show event appeared. + * Calls changeSize() method. + */ +void FFChartLegend::showEvent(QShowEvent* event) +{ + Q_UNUSED(event) + + changeSize(); +} + +/** + * Add series to FFChartLegend. + * + * @param series is a pointer to series on a FFChart + */ +void FFChartLegend::addSeries(FFChartSeries* series) +{ + //creates buttons representing series + FFScrollingCheckBox* visibleCheckbox = + new FFScrollingCheckBox(legendScrollAreaItem); + FFLineButton* modifyButton = new FFLineButton(legendScrollAreaItem); + + //sets series name in buttons + visibleCheckbox->setDescription(series->name()); + visibleCheckbox->setChecked(series->isVisible()); + visibleCheckbox->disableTitle(true); + visibleCheckbox->setTopMargin(8); + visibleCheckbox->setBottomMargin(8); + visibleCheckbox->setRightMargin(2); + visibleCheckbox->setLeftMargin(2); + visibleCheckbox->setAttribute(Qt::WA_DeleteOnClose); + + modifyButton->setPen(*series->pen()); + modifyButton->setAttribute(Qt::WA_DeleteOnClose); + + SeriesContainer* tempSeriesPointer = + new SeriesContainer(series, + visibleCheckbox, + modifyButton); + //adds seriesContener to series table + legendSeriesTable.append(tempSeriesPointer); + + //adds buttons to layout + legendScrollAreaLayout->addWidget(legendSeriesTable.at(legendSeriesTable.size() + - 1)->visibleCheckBox_, + legendSeriesTable.size() - 1, + 0, + 1, + 2); + legendScrollAreaLayout->addWidget(legendSeriesTable.at(legendSeriesTable.size() + - 1)->controlPanelButton_, + legendSeriesTable.size() - 1, + 2, + 1, + 1); + + //connecting buttons to legend + connect(modifyButton, + SIGNAL(clicked()), + this, + SLOT(chooseChangingSeries())); + connect(visibleCheckbox, SIGNAL(clicked()), this, SLOT(changeVisible())); + changeSize(); +} + +/** + * Fits size of FFChartLegend's elements + */ +void FFChartLegend::changeSize() +{ + // sets geometry for legend elements + legendControlPanel->setGeometry(0, 0, size().width(), size().height()); + + legendScrollAreaItem->setGeometry(0, + 0, + legendScrollArea->width(), + legendSeriesTable.size() + * (DEFAULT_BUTTON_HEIGHT + + 5)); + //update legendscrollarea + legendScrollArea->setWidget(NULL); + legendScrollArea->setWidget(legendScrollAreaItem); +} + +/** + * Assign pointer on actual modified series to the temporary pointer. + */ +void FFChartLegend::chooseChangingSeries() +{ + //check which series was chosen to modification + for(int i = 0; i < legendSeriesTable.size(); i++) + { + if(legendSeriesTable.at(i)->controlPanelButton_ + == (FFLineButton*)sender()) + actualChangingSeries = legendSeriesTable.at(i); + } + + //sets and shows legendCotnrolPanel + legendControlPanel->setPen(*actualChangingSeries->series_->pen()); + legendControlPanel->show(); + if(NULL != parent) + parent->repaint(); +} + +/** + * Updates a pen of button representing actual modified series and emits + * signal to chart. + * + * @param pen represents setting series pen + */ + +void FFChartLegend::changeSeriesPen(QPen pen) +{ + actualChangingSeries->series_->setPen(pen); + actualChangingSeries->controlPanelButton_->setPen(pen); + emit updateSeries(); +} + +/** + * Updates series visibility + */ +void FFChartLegend::changeVisible() +{ + //looks for pointer to changing series and change it visibility and + //state of visibleCheckbox + + for(int i = 0; i < legendSeriesTable.size(); i++) + { + if(legendSeriesTable.at(i)->visibleCheckBox_ + == (FFScrollingCheckBox*)sender()) + { + bool + tempVisible = + !(legendSeriesTable.at(i)->series_->isVisible()); + + legendSeriesTable.at(i)->series_->setVisible(tempVisible); + legendSeriesTable.at(i)->visibleCheckBox_->setChecked(tempVisible); + } + } + + emit updateSeries(); +} + +/** + * Deletes series from series contener + * + * @param series is a pointer to series that will be removed. + */ +void FFChartLegend::deleteSeries(FFChartSeries* series) +{ + //looks for given series in legendSeriesTable and deletes it. + for(int i = 0; i < legendSeriesTable.size(); i++) + { + if(series == legendSeriesTable.at(i)->series_) + { + legendControlPanel->hide(); + + delete legendSeriesTable.at(i); + legendSeriesTable.remove(i); + } + + } + changeSize(); +} + +/** + * Draw FFChartLegend background + * @param event Contains all informations about event. + */ +void FFChartLegend::paintEvent(QPaintEvent *event) +{ + Q_UNUSED(event) + QPainter paint; + paint.begin(this); + paint.setOpacity(backgroundOpacity); + paint.setBrush(backgroundColor); + paint.setPen(Qt::transparent); + paint.drawRect(0, 0, width(), height()); + paint.end(); +} + +/** + \fn void FFChartLegend::updateSeries() + + This signal is emitted when the series is/are changed + */ + +/** + * Constructs a FFChartLegend with pointers to series, and buttons . + */ +SeriesContainer::SeriesContainer(FFChartSeries* series, + FFScrollingCheckBox* visibleCheckBox, + FFLineButton* controlPanelButton) +{ + series_ = series; + visibleCheckBox_ = visibleCheckBox; + controlPanelButton_ = controlPanelButton; +} + +/** + * A virtual destructor + */ +SeriesContainer::~SeriesContainer() +{ + visibleCheckBox_->close(); + controlPanelButton_->close(); +} diff --git a/libffqw-n810-1.0/sources/ffchartlegend.h b/libffqw-n810-1.0/sources/ffchartlegend.h new file mode 100644 index 0000000..7c03044 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffchartlegend.h @@ -0,0 +1,185 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartlegend.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.20 + * @version 1.0 + */ +#ifndef FFCHARTLEGEND_H +#define FFCHARTLEGEND_H +#include +#include +#include +#include +#include + +#include "ffabstractwidget.h" +#include "ffcolorcombobox.h" +#include "ffstringcombobox.h" +#include "ffscrollingcheckbox.h" +#include "fflinecombobox.h" +#include "ffchartlegendcontrolpanel.h" +#include "ffchartseries.h" +#include "ffscrollarea.h" + +static const QString LEGEND_PATH= ":/standard/";///< path to folder with graphics file + +class FFChartLegend; + +/** + * @author ComArch S.A. + * @date 2009.08.20 + * @version 1.0 + * + * @brief A class to store series in legend + */ +class SeriesContainer +{ +private: + friend class FFChartLegend; + + SeriesContainer(FFChartSeries* series, + FFScrollingCheckBox* visibleCheck, + FFLineButton* modifyButton); + ~SeriesContainer(); + + FFChartSeries* series_; ///< pointer to series + FFScrollingCheckBox* visibleCheckBox_; ///< pointer to checkbox responsible for sieries's visiblity + + FFLineButton* controlPanelButton_; ///< pointer to button showing line's syle + +}; + +/** + * @author ComArch S.A. + * @date 2009.08.20 + * @version 1.0 + * + * @brief A class of chart's legend + */ +class FFChartLegend : public FFAbstractWidget +{ + Q_OBJECT + +public: + FFChartLegend(QWidget* parent = 0); + virtual ~FFChartLegend(); + +public slots: + void addSeries(FFChartSeries* series); + void changeSize(); + void deleteSeries(FFChartSeries* ); + +protected: + virtual void resizeEvent(QResizeEvent* event); + virtual void showEvent(QShowEvent* event); + virtual void paintEvent(QPaintEvent *event); + +private: + void init(); + + QWidget* parent; ///< pointer to parent widget + + QString path; ///< path to folder with graphics file + + QGridLayout* legendLayout; ///< legend's layout + + FFScrollArea* legendScrollArea; ///< legend's scroll area + QWidget* legendScrollAreaItem; ///< widget placed on legendscrollarea + QGridLayout* legendScrollAreaLayout; ///< layout of legenScrollAreaItem + + QVector legendSeriesTable; ///< containar of all series on the legend + + SeriesContainer* actualChangingSeries; ///< pointer to actual changing series + + FFChartLegendControlPanel* legendControlPanel; ///< panel for changing line's style + + + QColor backgroundColor; ///< legend background color + qreal backgroundOpacity; ///< legend background opacity + +private slots: + void popUp(); + void chooseChangingSeries(); + void changeVisible(); + void changeSeriesPen(QPen); + +signals: + void updateSeries(); +}; + +#endif // FFCHARTLEGEND_H diff --git a/libffqw-n810-1.0/sources/ffchartlegendcontrolpanel.cpp b/libffqw-n810-1.0/sources/ffchartlegendcontrolpanel.cpp new file mode 100644 index 0000000..55c9706 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffchartlegendcontrolpanel.cpp @@ -0,0 +1,277 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartlegendcontrolpanel.cpp + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.24 + * @version 1.0 + */ +#include +#include "ffchartlegendcontrolpanel.h" + +/** + * Constructs a FFChartLegendControlPanel with parent. + * @param parent QWidget parent + */ +FFChartLegendControlPanel::FFChartLegendControlPanel(QWidget* parent) : + FFAbstractWidget(parent) +{ + this->parent = parent; + init(); +} + +/** + * A virtual destructor. + */ +FFChartLegendControlPanel::~FFChartLegendControlPanel() +{ + parent = NULL; + +} + +/** + * Returns pen_ - pen with line style, line color and line width + */ +QPen FFChartLegendControlPanel::pen() +{ + return pen_; +} + +/** + * Sets pen_ - pen with line style, line color and line width + */ +void FFChartLegendControlPanel::setPen(QPen pen) +{ + pen_ = pen; + colorSelector->setCurrentColor(pen.color()); + styleSelector->setCurrentLine(pen.style()); + thicknessSelector->setCurrentLine(pen.width()); +} + +/** + * Initiates all needed fields + */ +void FFChartLegendControlPanel::init() +{ + // sets default values + setAutoFillBackground(true); + + backgroundColor = DEFAULT_LEGEND_BACKGROUND_COLOR; + backgroundOpacity = DEFAULT_LEGEND_BACKGROUND_OPACITY; + + //Initialize pen_ + pen_.setWidth(0); + pen_.setStyle(Qt::SolidLine); + pen_.setColor(Qt::transparent); + + //sets hide button + hideButton = new FFAbstractButton(this); + + hideButton->setMargins(0, 0, 5, 5); + hideButton->setIconAlignment(Qt::AlignRight); + hideButton->setIcon(QIcon(QPixmap(":/standard/combo_colorarrow.svg"))); + + //creates selectors + colorSelector = new FFColorComboBox(this); + thicknessSelector = new FFLineComboBox(this); + styleSelector = new FFLineComboBox(this); + + //sets selectors and add needed items + QBrush emptyBrush(QColor(20, 80, 0)); + thicknessSelector->setTitle("Thickness's chooser"); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 1)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 2)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 3)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 4)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 5)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 6)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 7)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 8)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 9)); + thicknessSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 10)); + + styleSelector->setTitle("Style's chooser"); + styleSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), + 6, + Qt::SolidLine)); + styleSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), + 6, + Qt::DashLine)); + styleSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), 6, Qt::DotLine)); + styleSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), + 6, + Qt::DashDotDotLine)); + styleSelector->addItem(QPen(QBrush(qRgb(100, 100, 100)), + 6, + Qt::DashDotLine)); + + colorSelector->addItem(QColor(125, 125, 125)); + colorSelector->addItem(QColor(255, 0, 0)); + colorSelector->addItem(QColor(0, 255, 0)); + colorSelector->addItem(QColor(0, 0, 255)); + colorSelector->addItem(QColor(255, 255, 0)); + colorSelector->addItem(QColor(255, 255, 255)); + colorSelector->addItem(QColor(0, 255, 255)); + colorSelector->addItem(QColor(255, 0, 255)); + colorSelector->addItem(QColor(255, 255, 255)); + colorSelector->setCols(2); + + //creates and sets layout of controlPanel + gLayout = new QGridLayout(this); + gLayout->setMargin(0); + + gLayout->addWidget(thicknessSelector, 0, 0); + gLayout->addWidget(styleSelector, 1, 0); + gLayout->addWidget(colorSelector, 2, 0); + gLayout->addWidget(hideButton, 3, 0); + + //empty item added to layout + QSpacerItem* horizontalSpacer = new QSpacerItem(1, + 1, + QSizePolicy::Expanding, + QSizePolicy::Expanding); + gLayout->addItem(horizontalSpacer, 4, 0); + + //connects + connect(thicknessSelector, + SIGNAL(activated(QVariant)), + this, + SLOT(thicknessChanged(QVariant))); + connect(styleSelector, + SIGNAL(activated(QVariant)), + this, + SLOT(styleChanged(QVariant))); + connect(colorSelector, + SIGNAL(activated(QVariant)), + this, + SLOT(colorChanged(QVariant))); + connect(hideButton, SIGNAL(clicked()), this, SLOT(hide())); +} + +/** + * Slot to support sizeChooser and emit signal to legend + */ +void FFChartLegendControlPanel::thicknessChanged(QVariant localPen) +{ + pen_.setWidth(localPen.value ().width()); + emit penChanged(pen_); + +} + +/** + * Slot to support styleChooser and emit signal to legend + */ +void FFChartLegendControlPanel::styleChanged(QVariant localPen) +{ + pen_.setStyle(localPen.value ().style()); + emit penChanged(pen_); +} + +/** + * Slot to support colorChooserand emit signal to legend + */ +void FFChartLegendControlPanel::colorChanged(QVariant localPen) +{ + pen_.setColor(localPen.value ().color()); + emit penChanged(pen_); +} + +/** + * Slot to support hide feature + */ +void FFChartLegendControlPanel::hide() +{ + QWidget::hide(); + if(NULL != parent) + parent->parentWidget()->repaint(geometry()); +} + +/** + * Draws FFLegendControlPanel's background + * @param event Contains all informations about event. + */ +void FFChartLegendControlPanel::paintEvent(QPaintEvent *event) +{ + Q_UNUSED(event) + QPainter paint; + paint.begin(this); + paint.setOpacity(backgroundOpacity); + paint.setBrush(backgroundColor); + paint.setPen(Qt::transparent); + paint.drawRect(0, 0, width(), height()); + paint.end(); +} + diff --git a/libffqw-n810-1.0/sources/ffchartlegendcontrolpanel.h b/libffqw-n810-1.0/sources/ffchartlegendcontrolpanel.h new file mode 100644 index 0000000..f896e30 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffchartlegendcontrolpanel.h @@ -0,0 +1,148 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartlegendcontrolpanel.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.24 + * @version 1.0 + */ + +#ifndef FFCHARTLEGENDCONTROLPANEL_H +#define FFCHARTLEGENDCONTROLPANEL_H + +#include +#include +#include +#include + +#include "ffabstractwidget.h" +#include "ffcolorcombobox.h" +#include "fflinecombobox.h" +#include "ffstringcombobox.h" + +/** + * @author ComArch S.A. + * @date 2009.08.24 + * @version 1.0 + * + * @brief A class providing interface to modifying series pen. + */ +class FFChartLegendControlPanel: public FFAbstractWidget +{ + Q_OBJECT +public: + FFChartLegendControlPanel(QWidget* parent=0); + + virtual ~FFChartLegendControlPanel(); + + QPen pen(); + + void setPen(QPen pen); + +public slots: + //slots to support sizeChooser styleChooser and color chooser + void colorChanged(QVariant localPen); + void thicknessChanged(QVariant localPen); + void styleChanged(QVariant localPen); + + void hide(); + +protected: + virtual void paintEvent(QPaintEvent *event); + +private: + void init(); + + QMap styleMap; /// sizeMap; ///< map with pen's thickness + + QPen pen_; ///< pen of actual series + + FFLineComboBox* thicknessSelector; ///< thickness's selector + FFLineComboBox* styleSelector; ///< syle's selector + FFColorComboBox* colorSelector; ///< color's selector + FFAbstractButton* hideButton;///< button to hide controlPanel + + QGridLayout* gLayout; ///< layout of controlPanel + + QColor backgroundColor; ///< background's color + qreal backgroundOpacity; ///< background's opacity + QWidget* parent; ///< pointer to parent +signals: + void penChanged(QPen pen); +}; + +#endif // FFCHARTLEGENDCONTROLPANEL_H diff --git a/libffqw-n810-1.0/sources/ffchartscene.cpp b/libffqw-n810-1.0/sources/ffchartscene.cpp new file mode 100644 index 0000000..292951e --- /dev/null +++ b/libffqw-n810-1.0/sources/ffchartscene.cpp @@ -0,0 +1,903 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartscene.cpp + * @brief Implementation of the FFChartScene class. + * + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + */ + +#include "ffchartscene.h" + +// ############################################################ CONSTRUCTORS + +/** + * Constructs a FFChartScene with a parent. + */ +FFChartScene::FFChartScene(QObject* parent) : + QGraphicsScene(parent) +{ + init(); +} + +/** + * A virtual destructor. + */ +FFChartScene::~FFChartScene() +{ + +} + +/** + * Initiates an object of FFChartScene. Sets all needed fields connections. + * It is called by all constructors. + */ +void FFChartScene::init() +{ + //sets default configuration + moveModeSw = false; + zoomModeSw = false; + kineticCount = 0; + + accumulatedZoomFactor_ = QSize(1, 1); + QBrush zoomRectBrush(QColor(60, 80, 60)); + + QPen zoomRectPen; + zoomRectPen.setBrush(zoomRectBrush); + zoomRectPen.setColor(QColor(80, 180, 80)); + zoomRectPen.setWidth(3); + + zoomRect = new QGraphicsRectItem; + zoomRect->setPen(zoomRectPen); + zoomRect->setBrush(zoomRectBrush); + setBackgroundBrush(QBrush(QColor(30, 30, 30))); + + timer = new QTimer(this); + connect(timer, SIGNAL(timeout()), this, SLOT(kineticScroll())); + + zoomInButton.moveBy(10,10); + zoomOutButton.moveBy(10,90); + legendButton.moveBy(10, sceneRect().height() - 70); + + subaxesSpacing_ = 40; + subaxesPen_.setColor(QColor(80,80,80)); + subaxesPen_.setStyle(Qt::DashLine); + subaxesPen_.setCosmetic(true); + + axesValuesPen_.setColor(QColor(240, 240, 240)); + + //adds button to chart + addItem(&zoomInButton); + addItem(&zoomOutButton); + addItem(&legendButton); + + + + //connects + connect(&zoomInButton, SIGNAL(mouseRelease()), this, SLOT(zoomIn())); + connect(&zoomOutButton, SIGNAL(mouseRelease()), this, SLOT(zoomOut())); + connect(&legendButton, SIGNAL(mouseRelease()), parent(), SLOT(showLegend())); + + //sets chart's buttons + zoomInButton.setImage(":/standard/chart_zoomin"); + zoomOutButton.setImage(":/standard/chart_zoomout"); + legendButton.setImage(":/standard/chart_legendON",":/standard/chart_legendOFF"); + + zoomInButton.setZoomRatio(1.4); + zoomOutButton.setZoomRatio(0.6); + legendButton.setZoomRatio(1.4); + + zoomInButton.setSize(QSize(60, 60)); + zoomOutButton.setSize(QSize(60, 60)); + legendButton.setSize(QSize(60, 60)); + +} + +// ################################################################## PUBLIC + +/** + * Moves given point of chart to the scene's top left corner. + */ +void FFChartScene::moveTo(QPoint point) +{ + translateFactor_ = point; + update(); +} + +/** + * Moves given point of chart to the scene's top left corner. + */ +void FFChartScene::moveTo(float x, float y) +{ + translateFactor_ = QPointF(x, y); + update(); +} + +/** + * Moves the chart by a given vector. + */ +void FFChartScene::moveBy(QPoint destPoint) +{ + translateFactor_ += destPoint; + update(); +} + +/** + * Moves the chart by a given vector. + */ +void FFChartScene::moveBy(float x, float y) +{ + translateFactor_ += QPointF(x, y); + update(); +} + +/** + * Adds set of points to chart. + */ +void FFChartScene::addSeries(FFChartSeries* series) +{ + this->series.append(series); + itemsBoundingRect_ = itemsBoundingRect(&itemsBoundingValues_); + + update(); + + emit seriesChanged(this->series); +} + +/** + * Sets a list of series. + */ +void FFChartScene::setSeries(QList series) +{ + this->series = series; + itemsBoundingRect_ = itemsBoundingRect(&itemsBoundingValues_); + + update(); + + emit seriesChanged(&series); +} + +/** + * Overridden method from QGraphicsScene. + */ +void FFChartScene::setSceneRect(const QRectF& rect) +{ + QGraphicsScene::setSceneRect(rect); + legendButton.setPos(10, rect.height() - 70); + + translateFactor_.setX(rect.width() * 0.5); + translateFactor_.setY(rect.height() * 0.5); + + sceneRec = rect; +} + +/** + * Sets a distance in pixels between subaxes. + */ +void FFChartScene::setSubaxesSpacing(const float& subaxesSpacing) +{ + subaxesSpacing_ = subaxesSpacing; +} + +/** + * Returns a distance in pixels between subaxes. + */ +float FFChartScene::subaxesSpacing() const +{ + return subaxesSpacing_; +} + +/** + * Sets a pen that will be used to draw subaxes. + */ +void FFChartScene::setSubaxesPen(const QPen& subaxesPen) +{ + subaxesPen_ = subaxesPen; +} + +/** + * Returns a pen that is used to draw subaxes. + */ +QPen FFChartScene::subaxesPen() const +{ + return subaxesPen_; +} + +/** + * Sets a pen that will be used to draw values next to subaxes. + */ +void FFChartScene::setAxesValuesPen(const QPen& axesValuesPen) +{ + axesValuesPen_ = axesValuesPen; +} + +/** + * Returns a pen that is used to draw values next to subaxes. + */ +QPen FFChartScene::axesValuesPen() const +{ + return axesValuesPen_; +} + +// ############################################################ PUBLIC SLOTS + +/** + * Zooms the chart into the given rectangle. + */ +void FFChartScene::zoom(QRectF zoomRect) +{ + // Normalizing zoom rectangle (width and height must are greater than 0) + QRectF zoomRectNormalized(zoomRect); + if(zoomRect.width() < 0) + { + zoomRectNormalized.setX(zoomRect.x() + zoomRect.width()); + zoomRectNormalized.setWidth(qAbs(zoomRect.width())); + } + if(zoomRect.height() < 0) + { + zoomRectNormalized.setY(zoomRect.y() + zoomRect.height()); + zoomRectNormalized.setHeight(qAbs(zoomRect.height())); + } + + // Calculating zoom factor for scale() function ( >1 zoomin, <1 zoomout ) + QSizeF zoomFactor(sceneRec.width() / zoomRectNormalized.width(), + sceneRec.height() / zoomRectNormalized.height()); + + accumulatedZoomFactor_.setWidth(zoomFactor.width() + * accumulatedZoomFactor_.width()); + accumulatedZoomFactor_.setHeight(zoomFactor.height() + * accumulatedZoomFactor_.height()); + //checking if factor of zooming is not to high + if(accumulatedZoomFactor_.width() > 20 || accumulatedZoomFactor_.height() > 20) + { + accumulatedZoomFactor_.setWidth(20); + accumulatedZoomFactor_.setHeight(20); + return; + } + + + + translateFactor_ = QPointF((translateFactor_.x() + - zoomRectNormalized.x()) + * zoomFactor.width(), + (translateFactor_.y() + - zoomRectNormalized.y()) + * zoomFactor.height()); + + update(); +} + +/** + * Slot that changes series' set. + */ +void FFChartScene::seriesChanged(QList series) +{ + setSeries(series); +} + +/** + * Slot that zooms in the current chart into a rectangle which is smaller by + * a given ratio. + */ +void FFChartScene::zoomIn(qreal ratio) +{ + qreal dx, dy; + + if(accumulatedZoomFactor_.width() > 15) + { + dx = 0; + } + else + { + dx = ratio * sceneRec.width(); + } + + if(accumulatedZoomFactor_.height() > 15) + { + dy = 0; + } + else + { + dy = ratio * sceneRec.height(); + } + + zoom(QRectF(dx, dy, sceneRec.width() - 2 * dx, sceneRec.height() - 2 + * dy)); +} + +/** + * Slot that zooms out the current chart into a rectangle which is larger by + * a given ratio. + */ +void FFChartScene::zoomOut(qreal ratio) +{ + qreal dx, dy; + + if(accumulatedZoomFactor_.width() < 0.1) + { + dx = 0; + } + else + { + dx = ratio * sceneRec.width(); + } + + if(accumulatedZoomFactor_.height() < 0.1) + { + dy = 0; + } + else + { + dy = ratio * sceneRec.height(); + } + + zoom(QRectF(-dx, -dy, sceneRec.width() + 2 * dx, sceneRec.height() + 2 + * dy)); +} + +// ############################################################### PROTECTED + +/** + * Overridden method from QGraphicsScene. Draws all items that should be seen + * on the chart. + */ +void FFChartScene::drawItems(QPainter* painter, + int numItems, + QGraphicsItem* items[], + const QStyleOptionGraphicsItem options[], + QWidget* widget) +{ + Q_UNUSED(items) + Q_UNUSED(numItems) + Q_UNUSED(options) + + // Drawing zoom rectangle + if(zoomModeSw) + { + zoomRect->paint(painter, new QStyleOptionGraphicsItem, widget); + } + + painter->scale(1, 1); + + + // Drawing subaxes + drawSubAxes(painter, widget); + + // Drawing axes + drawAxes(painter, widget); + + // Drawing series + drawSeries(painter, widget); + + // Drawing axes values + drawValues(painter, widget); + + // Drawing static items + drawStaticItems(painter, widget); +} + +/** + * Overridden virtual method from QGraphicsScene. It is responsible for + * handling a mouse press event. + * @param event Contains all informations about event. + */ +void FFChartScene::mousePressEvent(QGraphicsSceneMouseEvent* event) +{ + QGraphicsScene::mousePressEvent(event); + + kinetic = false; + timer->stop(); + kineticCount = 0; + + if(itemAt(event->scenePos())) + { + return; + } + + pressPos = event->scenePos(); + moveModeSw = true; + zoomModeSw = false; + + if(timer->isActive() == false) + { + timer->start(80); + } + + update(); +} + +/** + * Overridden virtual method from QGraphicsScene. It is responsible for + * handling a mouse double click event. + * @param event Contains all informations about event. + */ +void FFChartScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) +{ + if(itemAt(event->scenePos())) + { + return; + } + + zoomModeSw = true; + moveModeSw = false; + kinetic = false; + kineticCount = 0; + + zoomRect->setRect(event->scenePos().x(), event->scenePos().y(), 1, 1); + update(); +} + +/** + * Overridden virtual method from QGraphicsScene. It is responsible for + * handling a mouse release event. + * @param event Contains all informations about event. + */ +void FFChartScene::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) +{ + QGraphicsScene::mouseReleaseEvent(event); + + if(zoomModeSw) // zooming + { + zoomModeSw = false; + + if(qAbs(zoomRect->rect().width()) <= 15 + || qAbs(zoomRect->rect().height()) <= 15) + { + update(); + return; + } + + zoom(zoomRect->rect()); + update(); + } + else if(moveModeSw) //moving + { + moveModeSw = false; + + if(oldKineticVec != kineticVec && kineticCount > 2 && zoomModeSw == false) + { + kinetic = true; + kineticVec *= kineticRatio; + } + else + { + kinetic = false; + timer->stop(); + } + } +} + +/** + * Overridden virtual method from QGraphicsScene. It is responsible for + * handling a mouse move event. + * @param event Contains all informations about event. + */ +void FFChartScene::mouseMoveEvent(QGraphicsSceneMouseEvent* event) +{ + + //if button's type is not left button return + if(event->buttons() != Qt::LeftButton) + { + return; + } + + kineticCount++; + + //updates parameters + //zooming mode + if(zoomModeSw) + { + zoomRect->setRect(pressPos.x(), + pressPos.y(), + event->scenePos().x() - pressPos.x(), + event->scenePos().y() - pressPos.y()); + } + //moving mode + else if(moveModeSw) + { + QPointF scrollRatio(event->scenePos().x() - pressPos.x(), + event->scenePos().y() - pressPos.y()); + + oldPressPos = pressPos; + pressPos = event->scenePos(); + translateFactor_ += scrollRatio; + } + update(); +} + +// ################################################################ PPRIVATE + +/** + * Returns a rectangle around all points in series + * @param boundaryValues vector of boundary values + * @return bounding rectangle QRectF + */ +QRectF FFChartScene::itemsBoundingRect(QVector* boundaryValues) +{ + //if any series are available returns zero rectangle + if(series.isEmpty()) + { + return QRectF(0, 0, 0, 0); + } + //if only one series is available returns rectangle for points from one + //series + if(series.size() == 1 && series.at(0)->size() == 1) + { + return QRectF(series.at(0)->at(0)->x(), + series.at(0)->at(0)->y(), + 0, + 0); + } + //looks for maximum points in all series + float minX = series.at(0)->at(0)->x(); + float maxX = series.at(0)->at(0)->x(); + float minY = series.at(0)->at(0)->y(); + float maxY = series.at(0)->at(0)->y(); + + for(int i = 0; i < series.size(); ++i) + { + for(int j = 0; j < series.at(i)->size(); ++j) + { + if(series.at(i)->at(j)->x() < minX) + { + minX = series.at(i)->at(j)->x(); + } + + if(series.at(i)->at(j)->y() < minY) + { + minY = series.at(i)->at(j)->y(); + } + + if(series.at(i)->at(j)->x() > maxX) + { + maxX = series.at(i)->at(j)->x(); + } + + if(series.at(i)->at(j)->y() > maxY) + { + maxY = series.at(i)->at(j)->y(); + } + } + } + + if(boundaryValues) + { + boundaryValues->clear(); + boundaryValues->append(minX); + boundaryValues->append(minY); + boundaryValues->append(maxX); + boundaryValues->append(maxY); + } + + return QRectF(minX, maxY, maxX - minX, maxY - minY); +} + +/** + * Slot that zooms in by default value. + */ +void FFChartScene::zoomIn() +{ + zoomIn(defaultZoomInRatio); +} + +/** + * Slot that zooms out by default value. + */ +void FFChartScene::zoomOut() +{ + zoomOut(defaultZoomOutRatio); +} + +/** + * Draws main axes. + * @param painter a tool to drawing elements + * @param widget points to the widget where elements will be drew + */ +void FFChartScene::drawAxes(QPainter* painter, QWidget* widget) +{ + Q_UNUSED(widget) + + painter->save(); + + painter->setPen(QColor(255, 255, 250)); + + // horizontal + painter->drawLine(QPointF(0, + translateFactor_.y()), + QPointF(sceneRec.width(), + translateFactor_.y())); + + // vertical + painter->drawLine(QPointF(translateFactor_.x(), + 0), + QPointF(translateFactor_.x(), + sceneRec.height())); + + painter->restore(); +} + +/** + * Draws subaxes. + * @param painter a tool to drawing elements + * @param widget points to the widget where elements will be drew + */ +void FFChartScene::drawSubAxes(QPainter* painter, QWidget* widget) +{ + Q_UNUSED(widget); + + painter->save(); + + //draws horizontal lines + int subaxesNumber = (int)(sceneRec.height() / subaxesSpacing_); + qreal offset = translateFactor_.y() - (qFloor(translateFactor_.y() / subaxesSpacing_)) * subaxesSpacing_; + + painter->setPen(subaxesPen_); + + int i; + for(i = 0; i <= subaxesNumber; i++) + { + painter->drawLine(QPointF(0, + offset + i * subaxesSpacing_), + QPointF(sceneRec.width(), + offset + i * subaxesSpacing_)); + } + + //draws vertical lines + subaxesNumber = (int)(sceneRec.width() / subaxesSpacing_); + offset = translateFactor_.x() - (qFloor(translateFactor_.x() / subaxesSpacing_)) * subaxesSpacing_; + + for(i = 0; i <= subaxesNumber; i++) + { + painter->drawLine(QPointF(offset + i * subaxesSpacing_, + 0), + QPointF(offset + i * subaxesSpacing_, + sceneRec.height())); + } + painter->restore(); + +} + +/** + * Draws all series on the chart. + * @param painter a tool to drawing elements + * @param widget points to the widget where elements will be drew + */ +void FFChartScene::drawSeries(QPainter* painter, QWidget* widget) +{ + Q_UNUSED(widget) + + //saves old painter + painter->save(); + //sets painter's configuration + painter->translate(translateFactor_); + painter->scale(accumulatedZoomFactor_.width(), + accumulatedZoomFactor_.height()); + + transform = painter->transform(); + transform.rotate(180, Qt::XAxis); + painter->setTransform(transform, false); + + //draws series + for(int i = 0; i < series.size(); ++i) + { + if(!series.at(i)->isVisible()) + { + continue; + } + + painter->setPen(*series.at(i)->pen()); + painter->drawPolyline(series.at(i)->data(), series.at(i)->size()); + } + //restores paitner + painter->restore(); +} + +/** + * Draws static items (they are not moving and being scaled) on the chart, + * e.g. zoom buttons. + * @param painter a tool to drawing elements + * @param widget points to the widget where elements will be drew + */ +void FFChartScene::drawStaticItems(QPainter* painter, QWidget* widget) +{ + //draws zoomInButton + painter->save(); + painter->setMatrix(zoomInButton.sceneMatrix(), true); + zoomInButton.paint(painter, new QStyleOptionGraphicsItem, widget); + painter->restore(); + + //draws zoomOutButton + painter->save(); + painter->setMatrix(zoomOutButton.sceneMatrix(), true); + zoomOutButton.paint(painter, new QStyleOptionGraphicsItem, widget); + painter->restore(); + + //draws legendButton + painter->save(); + painter->setMatrix(legendButton.sceneMatrix(), true); + legendButton.paint(painter, new QStyleOptionGraphicsItem, widget); + painter->restore(); +} + +/* + * Draws values next to subaxes. + * @param painter a tool to drawing elements + * @param widget points to the widget where elements will be drew + */ +void FFChartScene::drawValues(QPainter* painter, QWidget* widget) +{ + Q_UNUSED(widget) + //saves painter + painter->save(); + + //sets painter + painter->setPen(axesValuesPen_); + painter->setFont(QFont(FONT_TITLE_DEF, 10)); + + //sets needed values + subaxesSpacing_ *= 2; + + //drawing values of axes + int subaxesNumber = (int)(sceneRec.height() / subaxesSpacing_); + qreal offset = translateFactor_.y() - (qFloor(translateFactor_.y() / subaxesSpacing_)) * subaxesSpacing_; + + int i; + + + if(translateFactor_.x() < 0) + { + for(i = -1; i <= subaxesNumber; i++) + { + painter->drawText(QPointF(1, offset + i * subaxesSpacing_ + 11), QString::number((-translateFactor_.y() + offset + i * subaxesSpacing_) / -accumulatedZoomFactor_.height(), 'f', 1)); + } + } + else if(translateFactor_.x() > sceneRec.width()) + { + for(i = -1; i <= subaxesNumber; i++) + { + painter->drawText(QRectF(sceneRec.width() - 305, offset + i * subaxesSpacing_ + 11, 300, 11), Qt::AlignRight | Qt::AlignVCenter, QString::number((-translateFactor_.y() + offset + i * subaxesSpacing_) / -accumulatedZoomFactor_.height(), 'f', 1)); + } + } + else + { + for(i = -1; i <= subaxesNumber; i++) + { + painter->drawText(QPointF(translateFactor_.x() + 1, offset + i * subaxesSpacing_ + 11), QString::number((-translateFactor_.y() + offset + i * subaxesSpacing_) / -accumulatedZoomFactor_.height(), 'f', 1)); + } + } + + subaxesNumber = (int)(sceneRec.width() / subaxesSpacing_); + offset = translateFactor_.x() - (qFloor(translateFactor_.x() / subaxesSpacing_)) * subaxesSpacing_; + + if(translateFactor_.y() < 0) + { + for(i = -1; i <= subaxesNumber; i++) + { + painter->drawText(QPointF(offset + i * subaxesSpacing_ + 1, 11), QString::number((-translateFactor_.x() + offset + i * subaxesSpacing_) / accumulatedZoomFactor_.width(), 'f', 1)); + } + } + else if(translateFactor_.y() > sceneRec.height()) + { + for(i = -1; i <= subaxesNumber; i++) + { + painter->drawText(QPointF(offset + i * subaxesSpacing_ + 1, sceneRec.height() - 5), QString::number((-translateFactor_.x() + offset + i * subaxesSpacing_) / accumulatedZoomFactor_.width(), 'f', 1)); + } + } + else + { + for(i = -1; i <= subaxesNumber; i++) + { + painter->drawText(QPointF(offset + i * subaxesSpacing_ + 1, translateFactor_.y() + 11), QString::number((-translateFactor_.x() + offset + i * subaxesSpacing_) / accumulatedZoomFactor_.width(), 'f', 1)); + } + } + + subaxesSpacing_ /= 2; + + painter->restore(); +} + +/** + * This method is responsible for kinetic scrolling. + */ +void FFChartScene::kineticScroll() +{ + //check if kinetic mode is active + if(kinetic) + { + translateFactor_ += kineticVec; + + if(qAbs((kineticVec *= 0.8).x()) < 0.5 && qAbs((kineticVec + *= 0.8).y()) < 0.5) + { + timer->stop(); + kinetic = false; + } + + update(); + } + //otherwise updates kinetic's vectors + else + { + oldKineticVec = kineticVec; + kineticVec = pressPos - oldPressPos; + } +} + +/*! + * \fn void FFChartScene::seriesChanged(QList*); + * + * Signal that is emitted when the set of series has changed. + */ diff --git a/libffqw-n810-1.0/sources/ffchartscene.h b/libffqw-n810-1.0/sources/ffchartscene.h new file mode 100644 index 0000000..64203a8 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffchartscene.h @@ -0,0 +1,214 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartscene.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + */ + +#ifndef FFCHARTSCENE_H +#define FFCHARTSCENE_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ffchartseries.h" +#include "ffchartbutton.h" +#include "ffabstractwidget.h" +#include +/** + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + * + * @brief Reimplemented a QGraphicsScene class. It is used by the FFChart class + * to whole drawing. + */ + +class FFChartScene : public QGraphicsScene +{ +Q_OBJECT +public: + FFChartScene(QObject* parent = 0); + virtual ~FFChartScene(); + + void moveTo(QPoint point); + void moveTo(float x, float y); + void moveBy(QPoint destPoint); + void moveBy(float x, float y); + + void addSeries(FFChartSeries* series); + void setSeries(QList series); + + void setSceneRect(const QRectF& rect); + + void setSubaxesSpacing(const float& subaxesSpacing); + float subaxesSpacing() const; + + void setSubaxesPen(const QPen& subaxesPen); + QPen subaxesPen() const; + + void setAxesValuesPen(const QPen& axesValuesPen); + QPen axesValuesPen() const; + +public slots: + void seriesChanged(QList series); + void zoom(QRectF zoomRect); + void zoomIn(qreal ratio); + void zoomOut(qreal ratio); + +signals: + void seriesChanged(QList*); + +protected: + void drawItems(QPainter* painter, + int numItems, + QGraphicsItem* items[], + const QStyleOptionGraphicsItem options[], + QWidget * widget); + void mousePressEvent(QGraphicsSceneMouseEvent* event); + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent* event); + void mouseMoveEvent(QGraphicsSceneMouseEvent* event); + +private: + QTimer* timer; ///< animation's timer + + QTransform transform; ///< tool uses to transformations + + float subaxesSpacing_; ///< spacing between suaxes + QPen subaxesPen_; ///< a pen of subaxes + QPen axesValuesPen_; ///< a pen of subaxes' values + + QPointF translateFactor_; ///< new point of scene's top left corner + + QSizeF accumulatedZoomFactor_; ///< accumulates factor of zooming + QPointF pressPos; ///< stores actual press position + QPointF oldPressPos;///< stores old press position + QPointF kineticVec; ///< stores kintetic vector + QPointF oldKineticVec; ///< stores old kinetic vector + + QRectF itemsBoundingRect_; ///< bounding rectangle of items + + QVector itemsBoundingValues_; ///< stores items' bounding values + QRectF sceneRec; ///< stores scene's rectangle + + QGraphicsRectItem* zoomRect; ///< stores pointer to zoom rectangle + + FFChartButton zoomInButton; ///< button to zooming in + FFChartButton zoomOutButton; ///< button to zooming out + FFChartButton legendButton; ///< button to showing legend + QList staticItems; ///< list of items on the scene + QList series; ///< list of series + + bool zoomModeSw; ///< true if zooming mode is active + bool moveModeSw; ///< true if moving mode is active + bool kinetic; ///< true if kinetic is active + + int kineticCount; ///< kinetic's counter + + void init(); + QRectF itemsBoundingRect(QVector* boundaryValues = 0); + + void drawAxes(QPainter* painter, QWidget* widget); + void drawSubAxes(QPainter* painter, QWidget* widget); + void drawSeries(QPainter* painter, QWidget* widget); + void drawStaticItems(QPainter* painter, QWidget* widget); + void drawValues(QPainter* painter, QWidget* widget); + +private slots: + void kineticScroll(); + void zoomIn(); + void zoomOut(); + +private: + static const qreal kineticRatio = 1.5; ///< ratio of kinetic scolling + static const qreal defaultZoomInRatio = 0.2; ///< ratio of zoom in + static const qreal defaultZoomOutRatio = 1.0;///< ratio of zoom out +}; +#endif // FFCHARTSCENE diff --git a/libffqw-n810-1.0/sources/ffchartseries.cpp b/libffqw-n810-1.0/sources/ffchartseries.cpp new file mode 100644 index 0000000..404dbf8 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffchartseries.cpp @@ -0,0 +1,308 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartseries.cpp + * @brief Implementation of the FFChartSeries class. + * + * @author ComArch S.A. + * @date 2009.09.01 + * @version 1.1 + */ + +#include "ffchartseries.h" + +/** + * Construct FFSeries + */ +FFChartSeries::FFChartSeries() +{ + init(); +} +/** + * Constructs a FFChartSeries with points' vector and name. + * + */ +FFChartSeries::FFChartSeries(const QVector& series, + const QString& name) +{ + init(); + pen_ = QPen(); + set(series,name); +} +/** + * Constructs a FFChartSeries with points' vector, pen and name. + */ +FFChartSeries::FFChartSeries(const QVector& series, + const QPen& pen, + const QString& name) +{ + init(); + set(series,pen,name); +} +/** + * A virtual destructor. + */ +FFChartSeries::~FFChartSeries() +{ + ; +} +/** + * Sets default values + */ +void FFChartSeries::init() +{ + visibility_ = true; +} + +/** + * Returns series's name + */ +QString FFChartSeries::name() const +{ + return name_; +} +/** + * Returns series's pen + */ +QPen* FFChartSeries::pen() +{ + return &pen_; +} +/** + * Returns true if series is visible + */ +bool FFChartSeries::isVisible() +{ + return visibility_; + +} +/** + * Sets series's name + */ +void FFChartSeries::setName(const QString& name) +{ + name_ = name; +} +/** + * Sets series's pen + */ +void FFChartSeries::setPen(const QPen& pen) +{ + pen_ = pen; +} +/** + * Sets series's points and name + */ +void FFChartSeries::set(const QVector& series, + const QString& name) +{ + //call set function with previously created Pen + set(series,this->pen_,name); +} +/** + * Sets series's points,pen nad name + */ +void FFChartSeries::set(const QVector& series, + const QPen& pen, + const QString& name) +{ + series_ = series; + pen_ = pen; + name_ = name; + +} +/** + * Sets series's color + */ +void FFChartSeries::setColor(const QColor& color) +{ + pen_.setColor(color); +} +/** + * Sets pen's style + */ +void FFChartSeries::setStyle(const Qt::PenStyle& style) +{ + pen_.setStyle(style); +} +/** + * Sets series's visibility + */ +void FFChartSeries::setVisible(bool visibility) +{ + visibility_ = visibility; +} +/** + * Sorts series's points + */ +void FFChartSeries::sort() +{ + sort(0,series_.size()-1); +} +/** + * Validates series's points. Removes points with repeated x value. + */ +void FFChartSeries::validate() +{ + int current; + + for(int i=0; ii; j--) + { + if(series_[j].x() == current) + { + for(int k=j;k>=i;k--) + { + if(series_[j].x()==current) + { + series_.remove(k); + } + } + break; + } + } + } +} +/** + * Returns vector of series's points + */ +QVector FFChartSeries::series() +{ + return series_; +} +/** + * Returns point from series at given index + * @param num is a index of point in seires + */ +QPointF* FFChartSeries::at(const int& num) +{ + return &series_[num]; +} + +/** + * Returns number of series's points + */ +int FFChartSeries::size() const +{ + return series_.size(); +} +/** + * Returns pointer to the data stored in vector + */ +QPointF* FFChartSeries::data() +{ + return series_.data(); +} + +/** + * Sorts points in series + */ +void FFChartSeries::sort(int left, int right) +{ + int i = left; + int j = right; + + QPointF* pointsTab; + QPointF tempPoint; + + float x = series_[(left + right) / 2].x(); + do + { + while(series_[i].x() < x) + i++; + while(series_[j].x() > x) + j--; + if(i <= j) + { + pointsTab = series_.data(); + + tempPoint = pointsTab[i]; + pointsTab[i] = pointsTab[j]; + pointsTab[j] = tempPoint; + + i++; + j--; + } + } while(i <= j); + if(left < j) + sort(left, j); + if(right > i) + sort(i, right); +} + + + diff --git a/libffqw-n810-1.0/sources/ffchartseries.h b/libffqw-n810-1.0/sources/ffchartseries.h new file mode 100644 index 0000000..8776f58 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffchartseries.h @@ -0,0 +1,147 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffchartseries.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.24 + * @version 1.0 + */ + +#ifndef FFChartSeries_H +#define FFChartSeries_H + +#include +#include +#include +#include + +/** + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + * + * @brief A class containing series data. + */ +class FFChartSeries +{ +public: + FFChartSeries(); + FFChartSeries(const QVector& series, + const QString& name = ""); + + FFChartSeries(const QVector& series, + const QPen& pen, + const QString& name = ""); + virtual ~FFChartSeries(); + + void set(const QVector& series, + const QString& name = ""); + void set(const QVector& series, + const QPen& pen, + const QString& name = ""); + + void sort(); + void validate(); + + QString name() const; + QPen* pen(); + + bool isVisible(); + + void setName(const QString& name); + void setPen(const QPen& pen); + void setColor(const QColor& color); + void setStyle(const Qt::PenStyle& style); + void setVisible(bool visibility); + + QPointF* at(const int& num); + int size() const; + + QVector series(); + QPointF* data(); + +private: + QVector series_; ///< vector of points + QString name_; ///< name of series + QPen pen_; ///< pen of series + bool visibility_; ///< visibility of series + + void init(); + void sort(int left, int right); + +}; + +#endif // FFChartSeries_H diff --git a/libffqw-n810-1.0/sources/ffcolorcombobox.cpp b/libffqw-n810-1.0/sources/ffcolorcombobox.cpp new file mode 100644 index 0000000..d40d2c8 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffcolorcombobox.cpp @@ -0,0 +1,258 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffcolorcombobox.cpp + * @brief Implementation of the FFColorComboBox class + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + +#include "ffcolorcombobox.h" + +/** + * Constructs a FFColorComboBox with a parent. + */ +FFColorComboBox::FFColorComboBox(QWidget* parent) : + FFAbstractComboBox(new FFColorButton, parent) +{ + +} + +/** + * A virtual destructor. + */ +FFColorComboBox::~FFColorComboBox() +{ + ; +} + +/** + * Adds item to combobox + * @param spec is a color for item + */ +void FFColorComboBox::addItem(QColor spec) +{ + addItem(QVariant(spec)); +} +/** + * Adds item to combobox + * @param spec is a pen with color for item + */ +void FFColorComboBox::addItem(QPen spec) +{ + addItem(spec.color()); +} +/** + * Adds items to combobox + * @param items is a list of colors for items + */ +void FFColorComboBox::addItems(QList items) +{ + for(int i = 0; i < items.size(); ++i) + { + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFColorButton* temp = new FFColorButton; + temp->setColor(items.at(i)); + + // Second step: You must call this function with previously prepared button + insertItem(temp, false); + } + emit reset(); +} +/** + * Adds items to combobox + * @param items is a list of QPen-s with colors for items + */ +void FFColorComboBox::addItems(QList items) +{ + for(int i = 0; i < items.size(); ++i) + { + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFColorButton* temp = new FFColorButton; + temp->setColor(items.at(i).color()); + + // Second step: You must call this function with previously prepared button + insertItem(temp, false); + } + emit reset(); +} + +/** + * Sets actual color. If a color is not in colorcombobox nothing happens. + *@param color is a color to set + */ +void FFColorComboBox::setCurrentColor(QColor color) +{ + for(int i = 0; i < items_.size(); ++i) + { + if(dynamic_cast(items_[i])->color() == color) + { + setCurrentItem(i); + return; + } + } +} + +/** + * Sets chosen value of FFColoroComboBox on activator + * @param item is a pointer to chosen item. + */ + +void FFColorComboBox::setActivatorSpecs(FFAbstractButton* item) +{ + if(FFColorButton* but = dynamic_cast(item)) + { + dynamic_cast(activator_)->setColor(but->color()); + } +} +/** + * Returns QVariant element containing value of chosen item + */ +QVariant FFColorComboBox::activatorSpecs() +{ + return QVariant(dynamic_cast(activator_)->pen()); +} + +/** + * Adds new item to FFColorComboBox + */ +void FFColorComboBox::addItem(QVariant spec) +{ + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFColorButton* temp = new FFColorButton; + temp->setColor(spec.value()); + + // Second step: You must call this function with previously prepared button + insertItem(temp); +} + +/** + * Constructs FFColorButton with given parent + */ +FFColorButton::FFColorButton(QWidget* parent) : + FFAbstractButton(parent) +{ + setMargins(15,15,15,15); +} +/** + * A virtual destructor + */ +FFColorButton::~FFColorButton() +{ + ; +} +/** + * Sets a color painted on the button + */ +void FFColorButton::setColor(QColor color) +{ + QBrush brush; + brush = pen_.brush(); + brush.setStyle(Qt::SolidPattern); + brush.setColor(color); + pen_.setBrush(brush); + pen_.setColor(color); +} +/** + * Returns color painted on the button + */ +QColor FFColorButton::color() +{ + return pen_.color(); +} +/** + * Serves paint event, draws rounded rectangle. Overrides parent's method + * @param event Contains all informations about event. + */ +void FFColorButton::paintEvent(QPaintEvent* event) +{ + FFAbstractButton::paintEvent(event); + + QPainter painter; + painter.begin(this); + + painter.setPen(pen_); + painter.setBrush(pen_.brush()); + + painter.setRenderHint(QPainter::Antialiasing,true); + painter.drawRoundedRect(leftMargin() + indent(), + topMargin(), + width() - leftMargin() - rightMargin() - 2 * indent(), + height() - topMargin() - bottomMargin(),10,10); + + painter.end(); + +} diff --git a/libffqw-n810-1.0/sources/ffcolorcombobox.h b/libffqw-n810-1.0/sources/ffcolorcombobox.h new file mode 100644 index 0000000..94b91cf --- /dev/null +++ b/libffqw-n810-1.0/sources/ffcolorcombobox.h @@ -0,0 +1,157 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffcolorcombobox.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + +#ifndef FFCOLORCOMBOBOX_H +#define FFCOLORCOMBOBOX_H + +#include +#include +#include + +#ifndef MAEMO +#include +#endif + +#include "ffabstractcombobox.h" + +/** + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + * + * @brief A class of combobox with colors + */ +#ifdef MAEMO + +class FFColorComboBox : public FFAbstractComboBox + +#else + +class QDESIGNER_WIDGET_EXPORT FFColorComboBox : public FFAbstractComboBox + +#endif +{ + Q_OBJECT + +public: + FFColorComboBox(QWidget* parent = 0); + virtual ~FFColorComboBox(); + + void addItem(QColor item); + void addItem(QPen item); + void addItems(QList items); + void addItems(QList items); + +public slots: + void setCurrentColor(QColor item); + +protected: + virtual void setActivatorSpecs(FFAbstractButton* item); + virtual QVariant activatorSpecs(); + +private: + void addItem(QVariant item); + +}; +/** + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + * + * @brief A class of buttons with painted color + */ +class FFColorButton : public FFAbstractButton +{ + Q_OBJECT +public: + FFColorButton(QWidget* parent=0); + virtual ~FFColorButton(); + + QColor color(); + void setColor(QColor color); + +protected: + void paintEvent(QPaintEvent* event); + +}; + +#endif // FFCOLORCOMBOBOX_H diff --git a/libffqw-n810-1.0/sources/ffdpad.cpp b/libffqw-n810-1.0/sources/ffdpad.cpp new file mode 100644 index 0000000..9381c3d --- /dev/null +++ b/libffqw-n810-1.0/sources/ffdpad.cpp @@ -0,0 +1,268 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffdpad.cpp + * @brief Implementation of the FFDPad class + * + * @author ComArch S.A. + * @date 2009.08.11 + * @version 1.0 + */ +#include "ffdpad.h" + + +/** + * Constructs a FFDPad with a parent + */ +FFDPad::FFDPad(QWidget* parent) : + FFAbstractWidget(parent), size_(DEFAULT_SIZE, DEFAULT_SIZE) +{ + init(); +} + +/** + * Constructs a FFDPad with given size and parent. + */ +FFDPad::FFDPad(QSize size, QWidget* parent) : + FFAbstractWidget(parent) +{ + this->size_ = QSize(size.width(),size.height()); + init(); +} + +/** A virtual destructor */ +FFDPad::~FFDPad() +{ + ; +} +/** + * Initiates FFDPad class. Sets all needed fields, connections and calls. + * It is called by all constructors. + */ +void FFDPad::init() +{ + + //sets size policy + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + setMinimumSize(QSize(DEFAULT_MIN_SIZE, DEFAULT_MIN_SIZE)); + + //Sets default values + + + path = DPAD_PATH; + ax = 0; + ay = 0; + + if(size_.height() <= 0 || size_.width() <= 0) + { + this->size_ = QSize(DEFAULT_SIZE,DEFAULT_SIZE); + } + + layout = new QGridLayout(this); + layout->setMargin(0); + layout->setSpacing(0); + + background = new FFViewCache(this); + + //creates FFDPadButtons + buttonUp = new FFDPadButton(path + "_button_up", + DPAD_UP, + this); + buttonDown = new FFDPadButton(path + "_button_down", + DPAD_DOWN, + this); + buttonLeft = new FFDPadButton(path + "_button_left", + DPAD_LEFT, + this); + buttonRight = new FFDPadButton(path + "_button_right", + DPAD_RIGHT, + this); + //connects + connect(buttonUp,SIGNAL(clicked(int)),this,SIGNAL(clicked(int))); + connect(buttonDown,SIGNAL(clicked(int)),this,SIGNAL(clicked(int))); + connect(buttonLeft,SIGNAL(clicked(int)),this,SIGNAL(clicked(int))); + connect(buttonRight,SIGNAL(clicked(int)),this,SIGNAL(clicked(int))); + + //adds buttons to layout + layout->addWidget(buttonUp, 0, 0, 1, 1); + layout->addWidget(buttonDown, 0, 0, 1, 1); + layout->addWidget(buttonLeft, 0, 0, 1, 1); + layout->addWidget(buttonRight, 0, 0, 1, 1); + + this->setSize(size_); + + background->init(path + "_background.svg"); + background->updateView(size_); + +} + + +/** + * Returns size of FFDPad + */ +QSize FFDPad::size() const +{ + return this->geometry().size(); +} + +/** + * Sets FFDPad's size. + * If both edges are equal FFDPad have it`s maximum size cause it is always square. + * If size`s parameters are not equal then FFDPad is located in center of the widget. + * @param size Size of FFDPad widget + */ +void FFDPad::setSize(QSize size) +{ + calculateSize(size); + buttonUp -> setSize(size_); + buttonDown -> setSize(size_); + buttonLeft -> setSize(size_); + buttonRight -> setSize(size_); + setGeometry(geometry().x(), geometry().y(), size.width(), size.height()); +} + +/** + * Updates FFDPad view and events' mask after changing size of the widget, + * only when resizable_ is set up. + * Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFDPad::resizeEvent(QResizeEvent* event) +{ + calculateSize(event->size()); + buttonUp -> setSize(size_); + buttonDown -> setSize(size_); + buttonLeft -> setSize(size_); + buttonRight -> setSize(size_); + background -> updateView(size_); + ax = 0; + ay = 0; + + if(event ->size().width() > event -> size().height()) + { + ax = (size_.width() - event -> size().width()) / 2; + } + else + { + ay = (size_.height() - event -> size().height()) / 2; + } + + buttonUp -> move(-ax, -ay); + buttonDown -> move(-ax, -ay); + buttonLeft -> move(-ax, -ay); + buttonRight -> move(-ax, -ay); + +} + +/** + * Repaints the view of the FFDPAd. Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFDPad::paintEvent(QPaintEvent* event) +{ + Q_UNUSED(event) + QPainter paint(this); + paint.setOpacity(0.3); + paint.drawPixmap(-ax, -ay, background->pixmap()); +} + +/** + * Check and save size of the widget. Determine the size of the square. + * @param size Size to calculate square. + */ +void FFDPad::calculateSize(QSize size) +{ + if(size.height() <= 0 || size.width() <= 0) + { + this->size_ = QSize(DEFAULT_SIZE, DEFAULT_SIZE); + } + else + { + if(size.width() > size.height()) + { + this->size_ = QSize(size.height(),size.height()); + } + else + { + this->size_ = QSize(size.width(),size.width()); + } + } + update(); +} + +/** + \fn void FFDPad::clicked(int type) + + This signal is emitted when the one of four buttons will be released. + */ diff --git a/libffqw-n810-1.0/sources/ffdpad.h b/libffqw-n810-1.0/sources/ffdpad.h new file mode 100644 index 0000000..0aef2df --- /dev/null +++ b/libffqw-n810-1.0/sources/ffdpad.h @@ -0,0 +1,169 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffdpad.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.11 + * @version 1.0 + */ +#ifndef FFDPAD_H +#define FFDPAD_H + +#include +#include + +#ifndef MAEMO +#include +#endif + +#include "ffdpadbutton.h" +#include "ffviewcache.h" +#include "ffabstractwidget.h" + + +static const QString DPAD_PATH= ":/standard/dpad";///< a part of path to graphics file + +static const int DEFAULT_SIZE = 150; ///< defines a default size of FFDPad +static const int DEFAULT_MIN_SIZE = 100; //< defines a min size of FFDPad + + +/** + * @author ComArch S.A. + * @date 2009.08.11 + * @version 1.0 + * + * @brief A class of 4-way button + */ +#ifdef MAEMO + +class FFDPad : public FFAbstractWidget +{ + Q_OBJECT + +#else + +class QDESIGNER_WIDGET_EXPORT FFDPad : public FFAbstractWidget +{ + Q_OBJECT + Q_PROPERTY(QSize size READ size WRITE setSize) + +#endif +public: + FFDPad(QWidget* parent = 0); + FFDPad(QSize size, QWidget* parent = 0); + virtual ~FFDPad(); + + enum BUTTON_TYPE + { + DPAD_LEFT, //!< signal from left button + DPAD_RIGHT, //!< signal from right button + DPAD_UP, //!< signal from up button + DPAD_DOWN //!< signal from down button + }; + + void setSize(QSize size); + QSize size() const; + + void calculateSize(QSize size); + +signals: + void clicked(int type); + +protected: + virtual void paintEvent(QPaintEvent*); + virtual void resizeEvent(QResizeEvent* event); + +private: + void init(); + + FFViewCache* background; ///< cached dpad's background + + + QGridLayout* layout; ///< a layout of dpad + + FFDPadButton* buttonUp; ///< pointer to the button "Up" + FFDPadButton* buttonDown; ///< pointer to the button "Down" + FFDPadButton* buttonLeft; ///< pointer to the button "Left" + FFDPadButton* buttonRight; ///< pointer to the button "Right" + + QSize size_; ///< size of dpad + QString path; ///< part of path to the graphics file + + int ax; ///< variable used to center dpad's buttons on X axis + int ay; ///< variable used to center dpad's buttons on Y axis +}; + +#endif // FFDPAD_H diff --git a/libffqw-n810-1.0/sources/ffdpadbutton.cpp b/libffqw-n810-1.0/sources/ffdpadbutton.cpp new file mode 100644 index 0000000..c564bbd --- /dev/null +++ b/libffqw-n810-1.0/sources/ffdpadbutton.cpp @@ -0,0 +1,216 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffdpadbutton.cpp + * @brief Implementation of the FFiPadButton class + * + * @author ComArch S.A. + * @date 2009.08.11 + * @version 1.0 + */ + +#include "ffdpadbutton.h" + +/** + * Constructs a FFDPadButton with size and parent. + */ +FFDPadButton::FFDPadButton(QString path, int type, QWidget* parent) : + QAbstractButton(parent) +{ + + //initiates button's elements + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + + this->type_ = type; + + pressed_ = false; + this->path = path; + + this->type_ = type; + buttonView = new FFViewCache(this); + buttonPressedView = new FFViewCache(this); + + buttonView->init(path + ".svg"); + buttonPressedView->init(path + "_pressed.svg"); + updateMask(); +} + +/** A virtual destructor */ +FFDPadButton::~FFDPadButton() +{ + +} + +/** + * Sets size of FFDPadButton + * Calls updateView of FFViewCache objects to fit pixmap's size + * to new FFDPadButton's size. + * Calls updateMask() to set new event's mask for FFDPadButton. + * + * @param size is a new size of FFDPadButton + */ +void FFDPadButton::setSize(QSize size) +{ + + buttonView->updateView(size); + buttonPressedView->updateView(size); + setGeometry(0,0, size.width(),size.height()); + updateMask(); + update(); +} + +/** + * Returns a value that tells if the FFDPadButton is pressed. + */ +bool FFDPadButton::isPressed() const +{ + return pressed_; +} +/** + * Sets FFDPadButton's state. Value "true" means that the FFDPadButton is pressed. + */ +void FFDPadButton::setPressed(bool pressed_) +{ + this->pressed_ = pressed_; +} +/** + * Returns a value defining type of pressed FFDPadButton. + */ +int FFDPadButton::type() const +{ + return type_; +} +/** + * Sets type of FFDPadButton defined in enum BUTTON_TYPE,which is placed + * in file ffdipabutton.h. + */ +void FFDPadButton::setType(int type_) +{ + this->type_ = type_; +} +/** + * Updates events' mask for FFDPadButton based on pixmap + */ +void FFDPadButton::updateMask() +{ + if(pressed_) + setMask(buttonPressedView->pixmap().mask()); + else + setMask(buttonView->pixmap().mask()); +} + +/** + * Repaints the view of FFDPadButton. There are 2 views of FFDiButton for both + * states pressed and unpressed. Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFDPadButton::paintEvent(QPaintEvent *event) +{ + Q_UNUSED(event) + QPainter paint(this); + if(pressed_) + paint.drawPixmap(0, 0, buttonPressedView->pixmap()); + else + paint.drawPixmap(0, 0, buttonView->pixmap()); +} +/** + * Sets pressed_ value on true and calls updateMask() method. + * At the end calls update() method. + * Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFDPadButton::mousePressEvent(QMouseEvent *) +{ + pressed_ = true; + update(); +} +/** + * Sets pressed_ value on false and calls updateMask() and update() method. + * At the end emit buttonClicked() signal. + * Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFDPadButton::mouseReleaseEvent(QMouseEvent *) +{ + pressed_ = false; + update(); + emit clicked(this->type_); +} + +/** + \fn void FFDPadButton::clicked(int type) + + This signal is emitted when the button was released. + +*/ diff --git a/libffqw-n810-1.0/sources/ffdpadbutton.h b/libffqw-n810-1.0/sources/ffdpadbutton.h new file mode 100644 index 0000000..ae29474 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffdpadbutton.h @@ -0,0 +1,130 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffdpadbutton.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.11 + * @version 1.0 + */ +#ifndef FFDPADBUTTON_H_ +#define FFDPADBUTTON_H_ + +#include +#include +#include +#include + +#include "ffviewcache.h" + +/** + * @author ComArch S.A. + * @date 2009.08.11 + * @version 1.0 + * + * @brief A class used by 4-way button + */ +class FFDPadButton : public QAbstractButton +{ +Q_OBJECT +public: + FFDPadButton(QString path, int type, QWidget* parent = 0); + virtual ~FFDPadButton(); + + void updateMask(); + void setSize(QSize); + bool isPressed() const; + int type() const; + void setPressed(bool pressed_); + void setType(int typ_); + +protected: + virtual void paintEvent(QPaintEvent *event); + virtual void mousePressEvent(QMouseEvent*event); + virtual void mouseReleaseEvent(QMouseEvent*event); + +private: + FFViewCache* buttonView; ///< cached dpadbutton's view + FFViewCache* buttonPressedView; ///< cached dpadbutton's clicked view + + QString path; ///< part of path to graphics files + int type_; ///< contains type of button + bool pressed_; ///< is true when button is pressed + +signals: + void clicked(int type); +}; + +#endif /* FFDPADBUTTON_H_ */ diff --git a/libffqw-n810-1.0/sources/fflinecombobox.cpp b/libffqw-n810-1.0/sources/fflinecombobox.cpp new file mode 100644 index 0000000..f969b62 --- /dev/null +++ b/libffqw-n810-1.0/sources/fflinecombobox.cpp @@ -0,0 +1,247 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file fflinecombobox.cpp + * @brief Implementation of the FFLineComboBox class + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + +#include "fflinecombobox.h" + +/** + * Constructs a FFStringComboBox with a parent. + */ +FFLineComboBox::FFLineComboBox(QWidget* parent) : + FFAbstractComboBox(new FFLineButton,parent) +{ + +} + +/** + * A virtual destructor. + */ +FFLineComboBox::~FFLineComboBox() +{ + ; +} +/** + * Adds item to combobox + * @param item is a pen with parameters for new item + */ +void FFLineComboBox::addItem(QPen item) +{ + addItem(QVariant(item)); +} +/** + * Adds items to combobox + * @param items is a list of pens with parameters for new items + */ +void FFLineComboBox::addItems(QList items) +{ + for(int i = 0; i < items.size(); ++i) + { + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFLineButton* temp = new FFLineButton; + temp->setPen(items.at(i)); + + // Second step: You must call this function with previously prepared button + insertItem(temp, false); + } + emit reset(); +} + +/** + * Sets chosen value of FFLineComboBox on activator + * @param item is a pointer to chosen item. + */ +void FFLineComboBox::setActivatorSpecs(FFAbstractButton* item) +{ + if(FFLineButton* but = dynamic_cast(item)) + { + dynamic_cast(activator_)->setPen(but->pen()); + } +} +/** + * Returns QVariant element containing value of chosen item + */ +QVariant FFLineComboBox::activatorSpecs() +{ + return QVariant(dynamic_cast(activator_)->pen()); +} + +/** + * Sets actual line's style. If a style is not in linecombobox nothing happens. + *@param style is a style of pen to set + */ +void FFLineComboBox::setCurrentLine(Qt::PenStyle style) +{ + for(int i = 0; i < items_.size(); ++i) + { + if(dynamic_cast(items_[i])->pen().style() == style) + { + setCurrentItem(i); + return; + } + } +} + +/** + * Sets actual line's thickness. If thickness is not in linecombobox nothing happens. + * @param thickness is a thickness of pen to set + */ +void FFLineComboBox::setCurrentLine(int thickness) +{ + for(int i = 0; i < items_.size(); ++i) + { + if(dynamic_cast(items_[i])->pen().width() == thickness) + { + setCurrentItem(i); + return; + } + } +} + +// ##################################################################### PRIVATE + +/** + * Adds new item to FFLineComboBox + */ +void FFLineComboBox::addItem(QVariant spec) +{ + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFLineButton* temp = new FFLineButton; + temp->setPen(spec.value()); + + // Second step: You must call this function with previously prepared button + insertItem(temp); +} + +/** + * Constructs FFLineButton with parent + */ + +FFLineButton::FFLineButton(QWidget* parent) : + FFScrollingButton(parent) +{ + + setDescription(""); + setTitle(""); +} +/** + * A virtual destructor + */ +FFLineButton::~FFLineButton() +{ + ; +} + +// ################################################################### PROTECTED +/** + * Serves paint event, draws line. Overrides parent's method + * @param event Contains all informations about event. + */ +void FFLineButton::paintEvent(QPaintEvent* event) +{ + FFScrollingButton::paintEvent(event); + + + QPainter painter; + painter.begin(this); + + painter.setPen(pen_); + + painter.drawLine(indent() + leftMargin(), + 0.5 * height(), + width() - indent() -rightMargin(), + 0.5 * height()); + painter.end(); +} +/** + * Sets title of linecombobox + */ +void FFLineComboBox::setTitle(QString title) +{ + dynamic_cast(activator_)->setTitle(title); +} + +/** + * Returns title of line combobox + */ +QString FFLineComboBox::title() +{ + return dynamic_cast(activator_)->title(); +} diff --git a/libffqw-n810-1.0/sources/fflinecombobox.h b/libffqw-n810-1.0/sources/fflinecombobox.h new file mode 100644 index 0000000..70575c6 --- /dev/null +++ b/libffqw-n810-1.0/sources/fflinecombobox.h @@ -0,0 +1,149 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file fflinecombobox.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + +#ifndef FFLINECOMBOBOX_H +#define FFLINECOMBOBOX_H + +#include +#include +#include + +#ifndef MAEMO +#include +#endif + +#include "ffabstractcombobox.h" +#include "ffscrollingbutton.h" +/** + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + * + * @brief A class of combobox with lines + */ + +#ifdef MAEMO + +class FFLineComboBox : public FFAbstractComboBox + +#else + +class QDESIGNER_WIDGET_EXPORT FFLineComboBox : public FFAbstractComboBox + +#endif +{ + Q_OBJECT + +public : + FFLineComboBox(QWidget* parent = 0); + virtual ~FFLineComboBox(); + + void addItem(QPen item); + void addItems(QList items); + void setTitle(QString title); + QString title(); +public slots: + void setCurrentLine(Qt::PenStyle style); + void setCurrentLine(int thickness); + +protected: + virtual void setActivatorSpecs(FFAbstractButton* item); + virtual QVariant activatorSpecs(); + +private : + void addItem(QVariant item); + QString title_; +}; + +class FFLineButton : public FFScrollingButton +{ +Q_OBJECT +public: + FFLineButton(QWidget* parent = 0); + virtual ~FFLineButton(); + +protected: + void paintEvent(QPaintEvent* event); + +}; + +#endif // FFLINECOMBOBOX_H diff --git a/libffqw-n810-1.0/sources/ffscrollarea.cpp b/libffqw-n810-1.0/sources/ffscrollarea.cpp new file mode 100644 index 0000000..9bcfdd4 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffscrollarea.cpp @@ -0,0 +1,422 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollarea.cpp + * @brief Implementation of the FFScrollArea class + * + * @author ComArch S.A. + * @date 2009.09.20 + * @version 1.0 + */ + +#include "ffscrollarea.h" +#include +#include +#include +#include + +//defines view of scrollbars +#define SCROLLBAR_STYLE " \ + QScrollBar:vertical, QScrollBar:horizontal { \ + border: 0px solid transparent; \ + background: transparent; \ + width: 5px; \ + height: 5px; /* change this to 5px or more to see horizontal scrollbar */\ + margin: 2px 2px 2px 2px; \ + } \ + QScrollBar::sub-page, QScrollBar::add-page { \ + background: rgb(45,45,45); \ + } \ + QScrollBar::handle:vertical { \ + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, \ + stop:0 rgba(30,30,30,0), stop: 0.1 #1d1, stop:0.9 #2e2, stop: 1 rgba(30,30,30,0)); \ + min-height: 25px; \ + } \ + QScrollBar::handle:horizontal { \ + background: qlineargradient(x1:0, y1:0, x2:1, y2:0, \ + stop:0 rgba(30,30,30,0), stop: 0.1 #1d1, stop:0.9 #2e2, stop: 1 rgba(30,30,30,0)); \ + min-width: 25px; \ + } \ + QScrollBar::add-line, QScrollBar::sub-line { \ + border: 0px solid transparent; \ + } \ + QScrollArea { \ + background-color: #222; color: #ddd; \ + } \ +" + +/** + * Constructs FFScrollArea with parent + */ +FFScrollArea::FFScrollArea(QWidget* parent) : + QScrollArea(parent) +{ + init(); +} +/** + * A virtual destructor + */ +FFScrollArea::~FFScrollArea() +{ + +} +/** + * Initiates FFScrollArea class. Sets all needed fields, connections and calls. + * It is called by the constructor. + */ +void FFScrollArea::init() +{ + //sets FFScrollArea view properties + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + this->setFrameStyle(0); + setStyleSheet(SCROLLBAR_STYLE); + setStyleSheet("background-color: transparent"); + //initiates all fields with default values + moved = false; + animate = false; + + oldPos = QPointF(0, 0); + prevPos = QPointF(0, 0); + pos = QPointF(0, 0); + speed = QPointF(0, 0); + movement = QPointF(0, 0); + + x = 0; + y = 0; + + slowingDownRate_ = DEFAULT_SLOWING_DOWN_RATE; + postionSumplingTime_ = DEFAULT_POSIOTION_SUMPLING_TIME; + kineticAnimationTime_ = DEFAULT_KINETIC_ANIMATION_TIME; + minMotionLength_ = DEFAULT_MIN_MOTION_LENGTH; + + timerPos.stop(); + timerAnim.stop(); + + //connects signals and slots + connect(&timerPos, SIGNAL(timeout()), this, SLOT(updatePos())); + connect(&timerAnim, SIGNAL(timeout()), this, SLOT(animation())); +} + +/** + * Method using to serve events. Overrides the virtual method from parent. + * + * @param object is a pointer handled object + * @param ev is a pointer to handled event + */ + +bool FFScrollArea::eventFilter(QObject* object, QEvent* ev) +{ + //Does nothing when QEvent type is Paint + if(ev->type() == QEvent::Paint) + return false; + + if(QMouseEvent* event = dynamic_cast(ev)) + { + //Serves MouseButtonPressEvent + if(event->type() == QEvent::MouseButtonPress) + { + + moved = false; + movement = QPointF(0, 0); + timerAnim.stop(); + if(event) + { + //sets started values after each press event + x = event->globalX(); + y = event->globalY(); + prevPos = event->globalPos(); + oldPos = event->globalPos(); + speed = QPointF(0.0, 0.0); + pos = QPointF(0.0, 0.0); + + //starts position sampling timer + timerPos.start(postionSumplingTime_); + } + else + { + return 0; + } + + } + //Serves MouseMoveEvent + if(event->type() == QEvent::MouseMove) + { + + //sets and calculates motion parameters + int offsetY = event->globalY() - y; + int offsetX = event->globalX() - x; + + int valY = this->verticalScrollBar()->value() - offsetY; + int valX = this->horizontalScrollBar()->value() + - offsetX; + + y = event->globalY(); + x = event->globalX(); + + //If motion length is shorter then minMotionLength_ + //scrollbars postion will be not set. + if(minMotionLength_ < qAbs(movement.y()) + || minMotionLength_ + < qAbs(movement.x())) + { + //sets new scrollBars' values + this->verticalScrollBar()->setValue(valY); + this->horizontalScrollBar()->setValue(valX); + moved = true; + + } + + //Updates parameters + movement.setY(movement.y() + qAbs(prevPos.y() + - event->globalY())); + movement.setX(movement.x() + qAbs(prevPos.x() + - event->globalX())); + + prevPos = event->globalPos(); + } + //Serves MouseButtonReleaseEvent + if(event->type() == QEvent::MouseButtonRelease) + { + //Stops position's sampling + timerPos.stop(); + + if(moved) + { + //blocks signals + object->blockSignals(true); + object->event(event); + object->blockSignals(false); + + //sets cursor position after + //MouseButtonReleaseEvent + pos.setY((float)(this->verticalScrollBar()->value())); + pos.setX((float)(this->horizontalScrollBar()->value())); + + //starts animation + timerAnim.start(kineticAnimationTime_); + return true; + } + else + { + //do nothing + return false; + } + } + } + //calls parent's event filter + return QScrollArea::eventFilter(object, ev); +} + +/** + * Sets widget on FFScrollArea + * Overrides the virtual method from parent. + * + * @param widget pointer to setting widget + */ + +void FFScrollArea::setWidget(QWidget* widget) +{ + //calls parent method + ((QScrollArea*)this)->setWidget(widget); + //calls method to install EventFilter + installFilterRecursive(widget); +} +/** + * Installs eventFilter to each widget on FFScrollArea + * + * @param wdg pointer to widget to which eventFilter is installing. + */ +void FFScrollArea::installFilterRecursive(QWidget* wdg) +{ + if(!wdg) + return; + //Installs eventFilter to current widget + wdg->installEventFilter(this); + + //Calls installFilterRecursive to all children + const QList widgets = wdg->children(); + for(int i = 0; i < widgets.length(); ++i) + { + QWidget* wdg = dynamic_cast (widgets.at(i)); + if(wdg) + installFilterRecursive(wdg); + } +} +/** + * Updates motion's speed and cursor's position + */ +void FFScrollArea::updatePos() +{ + //sets motion's speed + speed.setY(oldPos.y() - this->cursor().pos().y()); + speed.setX(oldPos.x() - this->cursor().pos().x()); + //sets current cursor's position + oldPos = this->cursor().pos(); + +} + +/** + * Method responsible for kinetic's animation. + */ + +void FFScrollArea::animation() +{ + //If speed is less then 1 animations is stopped + if(1 < qAbs(speed.x()) || 1 < qAbs(speed.y())) + { + //updates position + pos.setY(pos.y() + speed.y()); + pos.setX(pos.x() + speed.x()); + + //sets new position on scrollbars + this->verticalScrollBar()->setValue((int)pos.y()); + this->horizontalScrollBar()->setValue((int)pos.x()); + + //updates speed + speed.setY(speed.y() * slowingDownRate_); + speed.setX(speed.x() * slowingDownRate_); + } + else + { + //Stops animation + timerAnim.stop(); + } +} + +/** + * Returns rate responsible for kinetic speed slowing + */ +float FFScrollArea::getSlowingDownRate() const +{ + return slowingDownRate_; +} +/** + * Sets rate responsible for kinetic speed slowing + */ +void FFScrollArea::setSlowingDownRate(float slowingDownRate_) +{ + this->slowingDownRate_ = slowingDownRate_; +} + +/** + * Returns kinetic animation frame time in ms. + */ +int FFScrollArea::getKineticAnimationTime() const +{ + return kineticAnimationTime_; +} + +/** + * Sets kinetic animation frame time in ms. + */ +void FFScrollArea::setKineticAnimationTime(int kineticAnimationTime_) +{ + this->kineticAnimationTime_ = kineticAnimationTime_; +} + +/** + * Returns cursor position sampling time in ms. + */ +int FFScrollArea::getPostionSumplingTime() const +{ + return postionSumplingTime_; +} + +/** + * Sets cursor position sampling time in ms. + */ +void FFScrollArea::setPostionSumplingTime(int postionSumplingTime_) +{ + this->postionSumplingTime_ = postionSumplingTime_; +} + +/** + * Sets value needed to blocking signals + * + */ +void FFScrollArea::setMinMotionLength(int minMotionLength_) +{ + this->minMotionLength_ = minMotionLength_; +} + +/** + * Returns value needed to blocking signals + */ +int FFScrollArea::getMinMotionLength() const +{ + return minMotionLength_; +} + + diff --git a/libffqw-n810-1.0/sources/ffscrollarea.h b/libffqw-n810-1.0/sources/ffscrollarea.h new file mode 100644 index 0000000..1045c0e --- /dev/null +++ b/libffqw-n810-1.0/sources/ffscrollarea.h @@ -0,0 +1,152 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollarea.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.09.20 + * @version 1.0 + */ + +#ifndef QFFSCROLLAREA_H +#define QFFSCROLLAREA_H + +#include +#include +#include +#include +#include +#include +#include + +static const float DEFAULT_SLOWING_DOWN_RATE = 0.85; +static const int DEFAULT_POSIOTION_SUMPLING_TIME = 80; +static const int DEFAULT_KINETIC_ANIMATION_TIME = 50; +static const int DEFAULT_MIN_MOTION_LENGTH = 20; + +/** + * @author ComArch S.A. + * @date 2009.09.20 + * @version 1.0 + * + * @brief A class providing a scrolling view onto another widget. + */ +class FFScrollArea : public QScrollArea +{ + Q_OBJECT + +public: + FFScrollArea(QWidget* parent = 0); + ~FFScrollArea(); + bool eventFilter(QObject * o, QEvent *event); + void setWidget(QWidget* widget); + + void init(); + float getSlowingDownRate() const; + void setSlowingDownRate(float slowingDownRate_); + int getKineticAnimationTime() const; + void setKineticAnimationTime(int kineticAnimationTime_); + int getPostionSumplingTime() const; + void setPostionSumplingTime(int postionSumplingTime_); + int getMinMotionLength() const; + void setMinMotionLength(int minMotionLength_); + +private: + bool moved; ///< is true when widget on scrolarea is moved + bool animate; ///< is true when animation is active + + int x; ///< variable to storing cursor global position (X axis) + int y; ///< variable to storing cursor global position (Y axis) + int postionSumplingTime_; ///< period of position sampling + int kineticAnimationTime_; ///< period of one animation's frame + int minMotionLength_; ///< is motion is shorter then this value moved is false + float slowingDownRate_; ///< rate of animation slowing + + QPointF pos; ///< cursor position when button was released + QPointF speed; ///< contains motion speed value during kinetic animation + QPointF movement; ///< way's length traveled during mousemoveevent + QPointF prevPos; ///< is used to moving when area is pressed + QPointF oldPos; ///< is used to kinetic + QTimer timerPos; ///< timer is used to sampling cursor position + QTimer timerAnim; ///< timer is used to kinetic animation + + void installFilterRecursive(QWidget* widget); + +private slots: + void updatePos(); + void animation(); +}; + +#endif // QFFSCROLLAREA_H diff --git a/libffqw-n810-1.0/sources/ffscrollingbutton.cpp b/libffqw-n810-1.0/sources/ffscrollingbutton.cpp new file mode 100644 index 0000000..77b5d8d --- /dev/null +++ b/libffqw-n810-1.0/sources/ffscrollingbutton.cpp @@ -0,0 +1,581 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollingbutton.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + */ + +#include "ffscrollingbutton.h" + +/** + * Constructs a FFScrollingButton with a parent. + * Sets variable to initial values and set graphics used in widget. + */ +FFScrollingButton::FFScrollingButton(QWidget* parent) : + FFAbstractButton(parent) +{ + init(); +} + +/** + * Constructs a FFScrollingButton with a parent , title and description. + * Sets variable to initial values and sets graphics used in widget. + */ +FFScrollingButton::FFScrollingButton(QString title, QString description, QWidget* parent) : + FFAbstractButton(parent) +{ + init(); + title_->setText(title); + description_->setText(description); +} + + +/** + * A virtual destructor. + */ +FFScrollingButton::~FFScrollingButton() +{ + ; +} + +/** + * Initiates an object of FFScrollingButton. Sets all needed fields. + */ +void FFScrollingButton::init() +{ + //sets title's label + title_ = new FFScrollingLabel(this); + title_->setResizable(true); + title_->setColor(FF_TITLE_COLOR); + title_->show(); + + //sets desciption's label + description_ = new FFScrollingLabel(this); + description_->setResizable(true); + description_->setColor(FF_DESCRIPTION_COLOR); + description_->show(); + + //sets indents + titleIndent_ = indent(); + descriptionIndent_ = indent(); + + titleIndentTemp = indent(); + descriptionIndentTemp = indent(); + + //sets switches + titleSwitch_ = true; + descriptionSwitch_ = true; + + //sets margins + setTopMargin(DEFAULT_TOPBOTTOM_MARGIN); + setBottomMargin(DEFAULT_TOPBOTTOM_MARGIN); + + //sets ratio + ratio_ = DEFAULT_RATIO; +} + +/** + * Returns the text from FFScrollingLabel named title + */ +QString FFScrollingButton::title() const +{ + return title_->text(); +} + +/** + * Returns alignment of title. + */ +FFScrollingLabel::Alignment FFScrollingButton::titleAlignment() const +{ + return titleWidget()->alignment(); +} + +/** + * Returns title`s color. + */ +QColor FFScrollingButton::titleColor() const +{ + return title_->color(); +} + +/** + * Returns title`s indent. + */ +int FFScrollingButton::titleIndent() const +{ + return titleIndent_; +} + +/** + * Returns title`s font. + */ +QFont FFScrollingButton::titleFont() const +{ + return title_->font(); +} + +/** + * Returns the text from FFScrollingLabel named description. + */ +QString FFScrollingButton::description() const +{ + return description_->text(); +} + +/** + * Return alignment of description. + */ +FFScrollingLabel::Alignment FFScrollingButton::descriptionAlignment() const +{ + return descriptionWidget()->alignment(); +} + +/** + * Return description`s color. + */ +QColor FFScrollingButton::descriptionColor() const +{ + return description_->color(); +} + +/** + * Returns description`s indent. + */ +int FFScrollingButton::descriptionIndent() const +{ + return descriptionIndent_; +} + +/** + * Returns description`s font. + */ +QFont FFScrollingButton::descriptionFont() const +{ + return description_->font(); +} + +/** + * Returns ratio. + */ +float FFScrollingButton::ratio() const +{ + return ratio_; +} + +/** + * Sets a text of the title. + * @param title Title text. + */ +void FFScrollingButton::setTitle(const QString& title) +{ + title_->setText(title); + update(); +} + +/** + * Sets a alignment of the title. + * @param alignment Title text. + */ +void FFScrollingButton::setTitleAlignment(FFScrollingLabel::Alignment alignment) +{ + titleWidget()->setAlignment(alignment); + update(); +} + +/** + * Sets a color of text on title. + * @param color Color of title. + */ +void FFScrollingButton::setTitleColor(QColor color) +{ + title_->setColor(color); + update(); +} + +/** + * Sets a font that will be used to print the text of the title. + * @param font Font style. + */ +void FFScrollingButton::setTitleFont(QFont font) +{ + title_->setFont(font); + update(); +} + +/** + * Sets Indent of title. + * @param indent Indent of title. + */ +void FFScrollingButton::setTitleIndent(int indent) +{ + titleIndent_ = indent; + titleIndentTemp = indent; + updateView(); +} + +/** + * Sets a text of the description. + * @param text Description text + */ +void FFScrollingButton::setDescription(const QString& text) +{ + description_->setText(text); + update(); +} + +/** + * Sets a alignment of the title. + * @param alignment Title text. + */ +void FFScrollingButton::setDescriptionAlignment(FFScrollingLabel::Alignment alignment) +{ + descriptionWidget()->setAlignment(alignment); + update(); +} + +/** + * Sets a color of text on description. + * @param color Color of description. + */ +void FFScrollingButton::setDescriptionColor(QColor color) +{ + description_->setColor(color); + update(); +} + +/** + * Sets a font that will be used to print the text of the description. + * @param font Font style. + */ +void FFScrollingButton::setDescriptionFont(QFont font) +{ + description_->setFont(font); + update(); +} + +/** + * Sets Indent of description. + * @param indent Indent of description. + */ +void FFScrollingButton::setDescriptionIndent(int indent) +{ + descriptionIndent_ = indent; + descriptionIndentTemp = indent; + updateView(); +} + +/** + * Sets ratio. + * @param ratio Ratio between size of title and description. + */ +void FFScrollingButton::setRatio(float ratio) +{ + if(ratio >= 0.05 && ratio <= 0.95) + { + ratio_ = ratio; + } + else if(ratio < 0.05) + { + ratio_ = 0.05; + } + else + { + ratio_ = 0.95; + } + calculateRatio(); + updateView(); +} + +/** + * Disables title. Show/hide title. + * @param state State true/false to set visible of description. + */ +void FFScrollingButton::disableTitle(bool state) +{ + titleSwitch_ = !state; + title_->setVisible(titleSwitch_); + update(); +} + +/** + * Disables description. Show/hide description. + * @param state State true/false to set visible of description. + */ +void FFScrollingButton::disableDescription(bool state) +{ + descriptionSwitch_ = !state; + description_->setVisible(descriptionSwitch_); + update(); +} + +/** + * Returns state of title visibility. If returned value is true visibility is on. + */ +bool FFScrollingButton::isDisabledTitle() +{ + return titleSwitch_; +} + +/** + * Returns state of description visibility. If returned value is true visibility is on. + */ +bool FFScrollingButton::isDisabledDescription() +{ + return descriptionSwitch_; +} + +/** + * Repaints the view of button. Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFScrollingButton::paintEvent(QPaintEvent* event) +{ + FFAbstractButton::paintEvent(event); +} + +/** + * Updates button`s view after changing size of the widget. + * Updates size of all pixmaps which need it (without corners) + * @param event Contains all informations about event. + */ +void FFScrollingButton::resizeEvent(QResizeEvent* event) +{ + FFAbstractButton::resizeEvent(event); + calculateRatio(); + updateView(); +} + +/** + * Support mouse press event. + * @param event Contains all informations about event. + */ +void FFScrollingButton::mousePressEvent(QMouseEvent* event) +{ + FFAbstractButton::mousePressEvent(event); +} + +/** + * Support mouse release event. + * @param event Contains all informations about event. + */ +void FFScrollingButton::mouseReleaseEvent(QMouseEvent* event) +{ + FFAbstractButton::mouseReleaseEvent(event); +} + +/** + * Paints icon if it was set. + * @param painter is a tool to paint icon on widget. + */ +void FFScrollingButton::paintIcon(QPainter* painter) +{ + int move = 0; + if(iconAlignment_ == Qt::AlignLeft) + { + move = titleIndent_; + } + else + { + move = -titleIndent_; + } + + // if icon was set paint it + + if (!icon().isNull()) + { + QRect rect(0+leftMargin() + move, + 0+topMargin(), + geometry().width()-rightMargin()-leftMargin() , + geometry().height()-bottomMargin()-topMargin()); + + //paint icon in button center + icon().paint(painter,rect,iconAlignment_,QIcon::Normal, QIcon::Off); + } +} + +/** + * Returns pointer to title FFScrolingLabel. + */ +FFScrollingLabel* FFScrollingButton::titleWidget() const +{ + return title_; +} + +/** + * Returns pointer to description FFScrolingLabel. + */ +FFScrollingLabel* FFScrollingButton::descriptionWidget() const +{ + return description_; +} + +/** + * Changes tRatio - title ratio and dRatio - description ratio to show/not show title/description. + */ +void FFScrollingButton::calculateRatio() +{ + if(titleSwitch_ && descriptionSwitch_) // show title and description + { + tRatio = ratio_; + dRatio = 1.0 - ratio_; + } + else if(!titleSwitch_ && descriptionSwitch_) // show only description + { + tRatio = 0; + dRatio = 1; + } + else if(titleSwitch_ && !descriptionSwitch_) // show only title + { + tRatio = 1; + dRatio = 0; + } +} + +/** + * Scales title and description indent. When resize event appears and calls out scaleIndent it changes indents to fit to new size. + * @param oldSize Old size of widget. + * @param newSize New size of widget. + */ +void FFScrollingButton::scaleIndent(QSize oldSize, QSize newSize) +{ + float widthProportion = (float)newSize.width() / (float)oldSize.width(); + + titleIndentTemp *= widthProportion; + descriptionIndentTemp *= widthProportion; + + titleIndent_ = titleIndentTemp; + descriptionIndent_ = descriptionIndentTemp; +} + +/** + * Recalculates geometry of labels (indent, margins etc.) + */ +void FFScrollingButton::updateView() +{ + // sets neede values + int margins = topMargin() + bottomMargin() + hSpacing(); + + int xT = 0; + int xD = 0; + + int w = 0; + + w = width() - 2 * descriptionIndent_ - leftMargin() - rightMargin() - iconSpace; + //values depend from alignment + if(iconAlignment() == Qt::AlignLeft) + { + xT = leftMargin() + titleIndent_ + iconSpace; + xD = leftMargin() + descriptionIndent_ + iconSpace; + + } + else + { + xT = leftMargin() + titleIndent_; + xD = leftMargin() + descriptionIndent_; + } + //sets geometry of labels with texts + title_->setGeometry(xT, + topMargin(), + w, + (height() - margins) * tRatio); + + description_->setGeometry(xD, + topMargin() + title_->size().height() + hSpacing(), + w , + (height() - margins) * dRatio); + + update(); + FFAbstractButton::updateView(); +} +/** + * Sets icon's alignment + */ +void FFScrollingButton::setIconAlignment(Qt::Alignment iconAlignment) +{ + switch(iconAlignment) + { + case Qt::AlignLeft: + case Qt::AlignRight: + FFAbstractButton::setIconAlignment(iconAlignment); + break; + default: + qDebug() << "You can only use Qt::AlignLeft or Qt::AlignRight"; + break; + } +} +// ####################################################### PRIVATE diff --git a/libffqw-n810-1.0/sources/ffscrollingbutton.h b/libffqw-n810-1.0/sources/ffscrollingbutton.h new file mode 100644 index 0000000..3646cc4 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffscrollingbutton.h @@ -0,0 +1,216 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollingbutton.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + */ + +#ifndef FFSCROLLINGBUTTON_H +#define FFSCROLLINGBUTTON_H + +#ifndef MAEMO +#include +#endif + +#include "ffabstractbutton.h" +#include "ffviewcache.h" +#include "ffscrollinglabel.h" + +/** + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + * + * @brief A class responsible for button with 2 labels + */ +const int DEFAULT_TOPBOTTOM_MARGIN = 2; ///< Default top and bottom margin +const float DEFAULT_RATIO = 0.3; ///< Default title/description height ratio + +#ifdef MAEMO + +class FFScrollingButton : public FFAbstractButton +{ + Q_OBJECT + +#else + +class QDESIGNER_WIDGET_EXPORT FFScrollingButton : public FFAbstractButton +{ + Q_OBJECT + + Q_PROPERTY(QString title READ title WRITE setTitle) + Q_PROPERTY(QString description READ description WRITE setDescription) + + Q_PROPERTY(qreal ratio READ ratio WRITE setRatio) + + Q_PROPERTY(QColor titleColor READ titleColor WRITE setTitleColor) + Q_PROPERTY(QColor descriptionColor READ descriptionColor WRITE setDescriptionColor) + + Q_PROPERTY(int titleIndent READ titleIndent WRITE setTitleIndent) + Q_PROPERTY(int descriptionIndent READ descriptionIndent WRITE setDescriptionIndent) + + Q_PROPERTY(QFont titleFont READ titleFont WRITE setTitleFont) + Q_PROPERTY(QFont descriptionFont READ descriptionFont WRITE setDescriptionFont) + + Q_PROPERTY(bool titleDisabled READ isDisabledTitle WRITE disableTitle) + Q_PROPERTY(bool descriptionDisabled READ isDisabledDescription WRITE disableDescription) + + Q_PROPERTY(FFScrollingLabel::Alignment titleAlignment READ titleAlignment WRITE setTitleAlignment) + Q_PROPERTY(FFScrollingLabel::Alignment descriptionAlignment READ descriptionAlignment WRITE setDescriptionAlignment) + +#endif + +public: + FFScrollingButton(QWidget* parent = 0); + FFScrollingButton(QString title, QString description, QWidget* parent = + 0); + virtual ~FFScrollingButton(); + + QString title() const; + FFScrollingLabel::Alignment titleAlignment() const; + QColor titleColor() const; + int titleIndent() const; + QFont titleFont() const; + + QString description() const; + FFScrollingLabel::Alignment descriptionAlignment() const; + QColor descriptionColor() const; + int descriptionIndent() const; + QFont descriptionFont() const; + + float ratio() const; + + void setTitle(const QString& title); + void setTitleAlignment(FFScrollingLabel::Alignment alignment); + void setTitleColor(QColor color); + void setTitleIndent(int indent); + void setTitleFont(QFont font); + void setDescription(const QString& text); + void setDescriptionAlignment(FFScrollingLabel::Alignment alignment); + void setDescriptionColor(QColor color); + void setDescriptionIndent(int indent); + void setDescriptionFont(QFont font); + + void setRatio(float ratio); + + void disableTitle(bool state); + void disableDescription(bool state); + + bool isDisabledTitle(); + bool isDisabledDescription(); + void setIconAlignment(Qt::Alignment iconAlignment); + +protected: + + int titleIndent_; ///< indnet of title + int descriptionIndent_; ///< indent of description + + bool titleSwitch_; ///< is true when title is visible + bool descriptionSwitch_;///< is true when description is visible + + float ratio_; ///< title/description height ratio + float tRatio; ///< title height ratio + float dRatio; ///< description height ratio + + virtual void paintEvent(QPaintEvent* event); + virtual void resizeEvent(QResizeEvent* event); + virtual void mousePressEvent(QMouseEvent* event); + virtual void mouseReleaseEvent(QMouseEvent* event); + + virtual void paintIcon(QPainter* painter); + + FFScrollingLabel* titleWidget() const; + FFScrollingLabel* descriptionWidget() const; + + void scaleIndent(QSize oldSize, QSize newSize); + + void calculateRatio(); + + virtual void updateView(); + +private: + FFScrollingLabel* description_; ///< is using to displaying description of button + FFScrollingLabel* title_; ///< is using to displaying title of button + + float titleIndentTemp; ///< temporary title's indent + float descriptionIndentTemp; ///< temporary description's indent + + void init(); +}; + +#endif // FFSCROLLINGBUTTON_H diff --git a/libffqw-n810-1.0/sources/ffscrollingcheckbox.cpp b/libffqw-n810-1.0/sources/ffscrollingcheckbox.cpp new file mode 100644 index 0000000..1a2e325 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffscrollingcheckbox.cpp @@ -0,0 +1,318 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollingcheckbox.cpp + * @brief Implementation of the FFScrollingCheckBox class. + * + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + */ + +#include "ffscrollingcheckbox.h" + + +/*Static FFViewCaches -improve performance*/ +FFViewCache* FFScrollingCheckBox::stateTrue = NULL; +FFViewCache* FFScrollingCheckBox::stateFalse = NULL; +/** + * Constructs a FFScrollingCheckBox with a parent. + * Sets variable to initial values and set graphics used in widget. + */ +FFScrollingCheckBox::FFScrollingCheckBox(QWidget* parent) : + FFScrollingButton(parent) +{ + path = SCROLLINGCHECKBOX_PATH; + init(); +} +/** + * Constructs a FFScrollingCheckBox with a parent and new path to + * False/Normal Graphics. + * Set variable to initial values and set graphics used in widget. + */ +FFScrollingCheckBox::FFScrollingCheckBox(const QString& path, QWidget* parent ) : + FFScrollingButton(parent) +{ + this->path = path; + init(); +} + +/** + * A virtual destructor. + */ +FFScrollingCheckBox::~FFScrollingCheckBox() +{ + ; +} + +/** + * Repaint the view of checkbox button. Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFScrollingCheckBox::paintEvent(QPaintEvent* event) +{ + //calls parental paint event + FFAbstractButton::paintEvent(event); + + //sets values for drawing + int x=0,y=0; + if(width() > height()) + { + x = leftMargin() + indent(); + y = topMargin() ; + } + else + { + x = leftMargin() + indent(); + y = topMargin() ; + } + + QPainter painter; + painter.begin(this); + + //draws image. + if( isChecked()) + { + painter.drawPixmap(x,y,stateTrue->pixmap()); + } + else + { + painter.drawPixmap(x,y,stateFalse->pixmap()); + } + painter.end(); +} + +/** + * Updates button`s view after changing size of the widget. + * Update size of all pixmap which need it (without corners) + * @param event Contains all informations about event. + */ +void FFScrollingCheckBox::resizeEvent(QResizeEvent* event) +{ + FFAbstractButton::resizeEvent(event); + calculateRatio(); + updateView(); +} + +/** + * Support mouse press event. + * @param event Contains all informations about event. + */ +void FFScrollingCheckBox::mousePressEvent(QMouseEvent* event) +{ + FFScrollingButton::mousePressEvent(event); +} + +/** + * Support mouse release event. + * @param event Contains all informations about event. + */ +void FFScrollingCheckBox::mouseReleaseEvent(QMouseEvent* event) +{ + if(isClicked_) + { + if(!signalsBlocked()) + { + toggle(); + } + } + FFScrollingButton::mouseReleaseEvent(event); +} +/** + * Paints icon if it was set. + * @param painter is a tool to paint icon on widget. + */ +void FFScrollingCheckBox::paintIcon(QPainter* painter) +{ + // if icon was set paint it + if (!icon().isNull()) + { + QRect rect(0+leftMargin() + qMin(width() - leftMargin() - rightMargin(), + height() - topMargin() - bottomMargin()), + 0+topMargin(), + geometry().width()-rightMargin()-leftMargin(), + geometry().height()-bottomMargin()-topMargin()); + + //paint icon in button center + icon().paint(painter,rect,iconAlignment(),QIcon::Normal, QIcon::Off); + } +} +/** + * Returns text icon space. + */ +int FFScrollingCheckBox::textIconSpace() +{ + return textIconSpace_; +} + +/** + * Initiates an object of FFScrollingCheckBox. Sets all needed fields. + */ +void FFScrollingCheckBox::init() +{ + + + setCheckable(true); + setChecked(false); + textIconSpace_ = DEFAULT_TEXTICON_SPACE; + + if(NULL == stateFalse) + { + stateFalse = new FFViewCache; + stateFalse->init(path + "_false.svg"); + stateFalse->updateView(stateFalse->defaultSize()); + } + + if(NULL == stateTrue) + { + + stateTrue = new FFViewCache; + stateTrue->init(path + "_true.svg"); + stateTrue->updateView(stateTrue->defaultSize()); + } + setTitleIndent(0); + setDescriptionIndent(0); + setMinimumWidth(minimumHeight() + leftMargin() + rightMargin() + indent()); + setMargins(0,0,0,0); +} + +/** + * Sets text icon space + */ +void FFScrollingCheckBox::setTextIconSpace(int textIconSpace) +{ + textIconSpace_=textIconSpace; +} +/** + * Updates button's view parameters + */ +void FFScrollingCheckBox::updateView() +{ + int margins = topMargin() + bottomMargin() + hSpacing(); + int checkboxEdge = qMin(width() - leftMargin() - rightMargin(), + height() - topMargin() - bottomMargin()); + QSize size= QSize(0,0); + if(width() > height()) + { + titleWidget()->setVisible(true); + descriptionWidget()->setVisible(true); + //sets button's labels geometry + titleWidget()->setGeometry(vSpacing() + checkboxEdge + leftMargin() + iconSpace + textIconSpace_ + + titleIndent() + indent(), + topMargin(), + width() - leftMargin() - rightMargin() - titleIndent() - checkboxEdge - hSpacing() - iconSpace - textIconSpace_ - indent(), + (height() - margins) * tRatio); + + descriptionWidget()->setGeometry(vSpacing() + checkboxEdge + leftMargin() + descriptionIndent() + iconSpace + textIconSpace_ + indent(), + topMargin() + titleWidget()->size().height() + hSpacing(), + width() - checkboxEdge - leftMargin() - descriptionIndent() - rightMargin() - hSpacing() - iconSpace - textIconSpace_ - indent(), + (height() - margins) * (dRatio)); + size = QSize(checkboxEdge, checkboxEdge); + } + else + { + size = QSize(width()-(leftMargin() + rightMargin() + 2* indent()),checkboxEdge-(topMargin()+bottomMargin())); + } + + if(minimumSize().width() >= width() ) + { + titleWidget()->setVisible(false); + descriptionWidget()->setVisible(false); + } + + stateFalse->updateView(size); + stateTrue->updateView(size); + + update(); + + //calls update view from parent + FFAbstractButton::updateView(); +} +/** + * Sets icon alignment + * @param iconAlignment contains new alignemnt for icon + */ +void FFScrollingCheckBox::setIconAlignment(Qt::Alignment iconAlignment) +{ + //Sets only possible alignment options + switch(iconAlignment) + { + case Qt::AlignLeft: + FFAbstractButton::setIconAlignment(iconAlignment); + break; + default: + qDebug() << "You can only use Qt::AlignLeft or Qt::AlignRight"; + break; + } +} diff --git a/libffqw-n810-1.0/sources/ffscrollingcheckbox.h b/libffqw-n810-1.0/sources/ffscrollingcheckbox.h new file mode 100644 index 0000000..8f80817 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffscrollingcheckbox.h @@ -0,0 +1,153 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollingcheckbox.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + */ + +#ifndef FFSCROLLINGCHECKBOX_H +#define FFSCROLLINGCHECKBOX_H + + +#ifndef MAEMO +#include +#endif + +#include "ffviewcache.h" +#include "ffscrollinglabel.h" +#include "ffscrollingbutton.h" + +/** + * @author ComArch S.A. + * @date 2009.08.03 + * @version 1.0 + * + * @brief A class responsible for button with 2 labels and checkbox + */ + +static const QString SCROLLINGCHECKBOX_PATH = ":/standard/button"; ///< part of path to graphics files +static const int DEFAULT_TEXTICON_SPACE = 10; ///< default space of text icon + +#ifdef MAEMO + +class FFScrollingCheckBox : public FFScrollingButton + +#else + + +class QDESIGNER_WIDGET_EXPORT FFScrollingCheckBox : public FFScrollingButton + +#endif +{ + Q_OBJECT + +public: + FFScrollingCheckBox(QWidget* parent = 0); + virtual ~FFScrollingCheckBox(); + +protected: + FFScrollingCheckBox(const QString& path, QWidget* parent = 0); + virtual void paintEvent(QPaintEvent* event); + virtual void resizeEvent(QResizeEvent* event); + virtual void mousePressEvent(QMouseEvent* event); + virtual void mouseReleaseEvent(QMouseEvent* event); + + virtual void paintIcon(QPainter* painter); + + int textIconSpace(); + + void setTextIconSpace(int textIconSpace); + +private: + + static FFViewCache* stateTrue; ///< cached true icon view + static FFViewCache* stateFalse; ///< cached false icon view + + + QString path ; ///< stores a part of path to the graphics files + int textIconSpace_; ///< stores text icon space + + void init(); + virtual void updateView(); + void setIconAlignment(Qt::Alignment iconAlignment); +signals: + + +}; + +#endif // FFSCROLLINGCHECKBOX_H diff --git a/libffqw-n810-1.0/sources/ffscrollinglabel.cpp b/libffqw-n810-1.0/sources/ffscrollinglabel.cpp new file mode 100644 index 0000000..8bb7ae9 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffscrollinglabel.cpp @@ -0,0 +1,701 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollinglabel.cpp + * @brief Implementation of the FFScrollingLabel class. + * + * @author ComArch S.A. + * @date 2009.08.07 + * @version 1.1 + */ + +#include "ffscrollinglabel.h" + +/** + * Constructs a FFScrollingLabel with a parent. + */ +FFScrollingLabel::FFScrollingLabel(QWidget* parent) : + FFAbstractWidget(parent) +{ + QFont font = QFont(FONT_TEXT_DEF, LABEL_SIZE_NORMAL); + init(DEFAULT_TEXT, font); +} + +/** + * Constructs a FFScrollingLabel with a given text and parent. + */ +FFScrollingLabel::FFScrollingLabel(QString text, QWidget* parent) : + FFAbstractWidget(parent) +{ + QFont font = QFont(FONT_TEXT_DEF, LABEL_SIZE_NORMAL); + init(text, font); +} + +/** + * Constructs a FFScrollingLabel with a given text, font and parent. + */ +FFScrollingLabel::FFScrollingLabel(QString text, QFont font, QWidget* parent) : + FFAbstractWidget(parent) +{ + init(text, font); +} + +/** + * A virtual destructor. + */ +FFScrollingLabel::~FFScrollingLabel() +{ + +} + +/** + * Initiates an object of FFScrollingLabel. Sets all needed fields and calls + * update() method. It is called by all constructors. + * + * @param text a text that will be shown at the label + * @param font a font that will be used to print a text on the label + */ +void FFScrollingLabel::init(QString text, QFont font) +{ + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + + text_ = text; + font_ = font; + + timer = new QTimer(this); + + //connecting timer with method responsible for moving the text + connect(timer, SIGNAL(timeout()), this, SLOT(scrollSideToSide())); + + //setting default values + scrollSpeed_ = -DEFAULT_SCROLL_SPEED; + endScrollDelay_ = DEFAULT_END_SCROLL_DELAY; + color_ = COLOR_TEXT; + resizable_ = true; + fitToFont_ = false; + smoothDisappear_ = true; + painter = new QPainter(); + timerDelay_ = TIMER_DELAY; + alignment_ = ALIGNMENT_LEFT; + + //updating view of the label + updateView(); +} + +/** + * Updates text, font and size of the label. + * Makes that changing text, font or/and s painter->setFont(font_);ize takes effect. It is automatically + * called by resizeEvent(), setFont(), setText(), setSmoothDisappear(), so + * there is no need to call it by you. + */ +void FFScrollingLabel::updateView() +{ + //for calculate width and height of the text using a given font + QFontMetrics textSize(font_); + + //fitting the label's size to the font's size + if(fitToFont_) + { + resize(width(), textSize.size(0, text_).height()); + } + + //creating the gradient used to drawing the text on the label + gradient.setStart(0, 0); + gradient.setFinalStop(width(), 0); + gradient.setColorAt(0.2, color_); + gradient.setColorAt(0.0, Qt::transparent); + gradient.setColorAt(0.8, color_); + gradient.setColorAt(1.0, Qt::transparent); + + //if developer wants a gradient at ends of the label and if text width + //is greater than label width + if(smoothDisappear_ && textSize.size(0, text_).width() > width()) + { + //this pen will be used to drawing the text in paintEvent() + pen.setBrush(QBrush(gradient)); + } + else + { + //this pen will be used to drawing the text in paintEvent() + pen.setBrush(color_); + } + + //calculating length (in pixels) of the text + length_ = textSize.width(text_, text_.length()); + + //resetting text offset (used in text movement) + calcTextPos(); + textOffset = textStartPos; + + //resetting field responsible for freezing text movement at ends + endScrollDelayIterationL = 0; + endScrollDelayIterationR = 0; + + //if the text width is greater than label width and the label is wider + //than 0 pixels + if(length_ > width() && width() > 0) + { + if(timer->isActive() == false) + { + timer->start(timerDelay_); + } + } + else + { + timer->stop(); + } +} + +/** + * Calculates a position of the text's left edge. + */ +void FFScrollingLabel::calcTextPos() +{ + switch(alignment_) + { + case ALIGNMENT_CENTER: + textStartPos = (width() - length_) / 2; + break; + + case ALIGNMENT_LEFT: + textStartPos = 0; + break; + + case ALIGNMENT_RIGHT: + textStartPos = width() - length_; + break; + } +} + +/** + * Changes gradient using to draw a text. + * + * @param left point in which transparent color is changing into a solid color + * @param right point in which a solid color is changing into transparent color + */ +void FFScrollingLabel::changeGradient(qreal left, qreal right) +{ + gradient.setStart(0, 0); + gradient.setFinalStop(width(), 0); + + gradient.setColorAt(0.0, Qt::transparent); + gradient.setColorAt(1.0, Qt::transparent); + gradient.setColorAt(left, color_); + gradient.setColorAt(right, color_); + + pen.setBrush(QBrush(gradient)); + update(); +} + +/** + * Method that implements algorithm to scroll text from side to side. + * It is created as a slot, thus it can be called by a timer. + */ +void FFScrollingLabel::scrollSideToSide() +{ + textOffset += scrollSpeed_; + if(textOffset + length_ - scrollSpeed_ < width()) + { + textOffset -= scrollSpeed_; + if(endScrollDelayIterationR > endScrollDelay_) + { + scrollSpeed_ = -scrollSpeed_; + textOffset += scrollSpeed_; + endScrollDelayIterationR = 0; + changeGradient(0.2, 0.8); + } + else + { + endScrollDelayIterationR++; + changeGradient(0.2, 1); + } + } + else if(textOffset > 0) + { + textOffset -= scrollSpeed_; + + if(endScrollDelayIterationL > endScrollDelay_) + { + scrollSpeed_ = -scrollSpeed_; + textOffset += scrollSpeed_; + endScrollDelayIterationL = 0; + changeGradient(0.2, 0.8); + } + else + { + endScrollDelayIterationL++; + changeGradient(0, 0.8); + } + } + else + { + update(); + } +} + +///////////////////////////////////////////////////////OVERRIDDEN + +/** + * Repaints the view of this label. Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFScrollingLabel::paintEvent(QPaintEvent* event) +{ + Q_UNUSED(event); + + painter->begin(this); + painter->setPen(pen); + painter->setFont(font_); + painter->drawText(textOffset, + 0, + width() - textOffset, + height(), + 0, + text_); + painter->end(); +} + +/** + * Updates label's view after changing size of this widget. It calls update(). + * If resizable is set up it also fits the font size to the label's size. + * Overrides the virtual method from QWidget. + * @param event Contains all informations about event. + */ +void FFScrollingLabel::resizeEvent(QResizeEvent* event) +{ + if(resizable_) + { + font_.setPixelSize(event->size().height() * 0.85 <= 0 ? 1 : event->size().height() * 0.85); + updateView(); + } + if(fitToFont_) + { + fitToFont_ = false; + updateView(); + fitToFont_ = true; + } +} + +/** + * Returns the recommended size for the widget. Overrides the virtual + * method from QWidget. + */ +QSize FFScrollingLabel::sizeHint() const +{ + return QSize(length_, font_.pixelSize()); +} + +/** + * Stops the label's timer when the label is hiding. + * It means if the label is not visible there are no useless calculates. + * @param event Contains all informations about event. + */ +void FFScrollingLabel::hideEvent(QHideEvent* event) +{ + Q_UNUSED(event); + + timer->stop(); + +} + +/** + * Starts the label's timer when the label is showing. + * @param event Contains all informations about event. + */ +void FFScrollingLabel::showEvent(QShowEvent* event) +{ + Q_UNUSED(event); + + if(timer->isActive() == false && length_ > width() && width() > 0) + { + timer->start(timerDelay_); + } + +} + +/** + * Returns the font that is used to printing label-text. + */ +QFont FFScrollingLabel::font() const +{ + return font_; +} + +/** + * Sets a font that will be used to print the text on the label. + * Calls update() method. + */ +void FFScrollingLabel::setFont(QFont font) +{ + this->font_ = font; + updateView(); + update(); +} + +/** + * Sets parameters of the font used to print a text on the label. + * Calls update() method. + */ +void FFScrollingLabel::setFont(int fontParam) +{ + int fontSize = 0; + QString fontType; + //search font size to set + switch(fontParam & SIZE_MASK) + { + case SIZE_TINY: + fontSize = LABEL_SIZE_TINY; + break; + + case SIZE_SMALL: + fontSize = LABEL_SIZE_SMALL; + break; + + case SIZE_NORMAL: + fontSize = LABEL_SIZE_NORMAL; + break; + + case SIZE_LARGE: + fontSize = LABEL_SIZE_LARGE; + break; + + case SIZE_HUGE: + fontSize = LABEL_SIZE_HUGE; + break; + } + + //search font type to set + switch(fontParam & FONT_MASK) + { + case FONT_TITLE: + fontType = FONT_TITLE_DEF; + break; + + case FONT_TEXT: + fontType = FONT_TEXT_DEF; + break; + } + + //search font color to set + switch(fontParam & COLOR_MASK) + { + case COLOR_TITLE: + color_ = COLOR_TITLE_DEF; + break; + + case COLOR_TEXT: + color_ = COLOR_TEXT_DEF; + break; + + case COLOR_BRIGHT_BACKGROUND: + color_ = COLOR_BRIGHT_BACKGROUND_DEF; + break; + + case COLOR_DARK_BACKGROUND: + color_ = COLOR_DARK_BACKGROUND_DEF; + break; + + case COLOR_BRIGHT_FOREGROUND: + color_ = COLOR_BRIGHT_FOREGROUND_DEF; + break; + + case COLOR_DARK_FOREGROUND: + color_ = COLOR_DARK_FOREGROUND_DEF; + break; + } + //search label's alignment to set + alignment_ = Alignment(fontParam & ALIGNMENT_MASK); + switch(alignment_) + { + case ALIGNMENT_CENTER: + textStartPos = (width() - length_) / 2; + break; + + case ALIGNMENT_LEFT: + textStartPos = 0; + break; + + case ALIGNMENT_RIGHT: + textStartPos = width() - length_; + break; + } + + setFont(QFont(fontType, fontSize)); + updateView(); + update(); +} + +/** + * Returns the text printed on the label. + */ +QString FFScrollingLabel::text() const +{ + return text_; +} + +/** + * Sets the text on the label. Calls update() method. + */ +void FFScrollingLabel::setText(QString text) +{ + this->text_ = text; + updateView(); + update(); +} + +/** + * Returns a value that tells if the label is automatically fitting up + * to a layout. + */ +bool FFScrollingLabel::isResizable() const +{ + return resizable_; +} + +/** + * Turns on/off auto-fitting the label size to the layout. If it is set to true + * then with every change of the label's size, the font size will be changed. + * If false, the font size will be fixed. If resizable is true, fitToFont + * property is setting up to false. + */ +void FFScrollingLabel::setResizable(bool resizable) +{ + if((this->resizable_ = resizable)) + { + this->fitToFont_ = false; + } + else + { + + this->fitToFont_ = true; + } + update(); +} + +/** + * Returns the speed of text scrolling. + */ +int FFScrollingLabel::scrollSpeed() const +{ + return scrollSpeed_; +} + +/** + * Sets the speed of text scrolling. + */ +void FFScrollingLabel::setScrollSpeed(int scrollSpeed) +{ + this->scrollSpeed_ = scrollSpeed; + update(); +} + +/** + * Returns time that the text waits between changing move direction. The time is + * calculating as: timerDelay * endScrollDelay. + */ +int FFScrollingLabel::endScrollDelay() const +{ + return endScrollDelay_; +} + +/** + * Sets time that the text waits between changing move direction. The time is + * calculating as: timerDelay * endScrollDelay. + */ +void FFScrollingLabel::setEndScrollDelay(int endScrollDelay) +{ + this->endScrollDelay_ = endScrollDelay; + update(); +} + +/** + * Returns the color using which is printing a text. + */ +QColor FFScrollingLabel::color() const +{ + return color_; +} + +/** + * Sets the color that is used to print a text. + */ +void FFScrollingLabel::setColor(QColor color) +{ + this->color_ = color; + updateView(); + update(); +} + +/** + * Returns true if the size of label is fitting up to the font size. + */ +bool FFScrollingLabel::fitToFont() const +{ + return fitToFont_; +} + +/** + * Turns on/off fitting up size of label to the font size. If fitToFont is true + * resizable property is setting up to false. + */ +void FFScrollingLabel::setFitToFont(bool fitToFont) +{ + if((this->fitToFont_ = fitToFont)) + { + resizable_ = false; + } + else + { + resizable_ = true; + } + update(); +} + +/** + * Sets the scrolling type. + */ +void FFScrollingLabel::setScrollType(int type) +{ + switch(type) + { + case SCROLL_SIDE_TO_SIDE: + disconnect(timer, + SIGNAL(timeOut()), + this, + previousScrollType.toAscii()); + connect(timer, + SIGNAL(timeOut()), + this, + SLOT(scrollSpeed())); + previousScrollType = SLOT(scrollSpeed()); + break; + } + update(); +} + +/** + * Returns true if the gradient at ends is set up, otherwise false. + */ +bool FFScrollingLabel::isSmoothDisappear() const +{ + return smoothDisappear_; +} + +/** + * Turns on/off a gradient at the ends of the label. Calls update() method. + */ +void FFScrollingLabel::setSmoothDisappear(bool smoothDisappear) +{ + this->smoothDisappear_ = smoothDisappear; + updateView(); + update(); +} + +/** + * Returns time (in milliseconds) between movements of the text. + */ +int FFScrollingLabel::timerDelay() +{ + return timerDelay_; +} + +/** + * Sets time (in milliseconds) between movements of the text. + */ +void FFScrollingLabel::setTimerDelay(int delay) +{ + timerDelay_ = delay; + timer->stop(); + timer->start(timerDelay_); + update(); +} + +/** + * Sets alignment of the text. + */ +void FFScrollingLabel::setAlignment(FFScrollingLabel::Alignment alignment) +{ + alignment_ = alignment; + calcTextPos(); + updateView(); + update(); +} + +/** + * Returns alignment used in this label. + */ +FFScrollingLabel::Alignment FFScrollingLabel::alignment() +{ + return alignment_; +} diff --git a/libffqw-n810-1.0/sources/ffscrollinglabel.h b/libffqw-n810-1.0/sources/ffscrollinglabel.h new file mode 100644 index 0000000..8386701 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffscrollinglabel.h @@ -0,0 +1,223 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollinglabel.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.07 + * @version 1.1 + * + * @brief A label with scrolling text. + */ + +#ifndef FFSCROLLINGLABEL_H +#define FFSCROLLINGLABEL_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef MAEMO +#include +#endif + +#include "ffabstractwidget.h" +#include "ffviewcache.h" + +const int TIMER_DELAY = 200; ///< delay for timer responsible for scrolling +const QString DEFAULT_TEXT = "Default text"; ///< text printed on a label as default +const int DEFAULT_SCROLL_SPEED = 10; ///< number of pixels which defines step of scrolling +const int DEFAULT_END_SCROLL_DELAY = 10; ///< number of gaps when one of label's edge is visible +const int LABEL_SIZE_TINY = 6; ///< defines size of tiny label's font +const int LABEL_SIZE_SMALL = 10; ///< defines size of small label's font +const int LABEL_SIZE_NORMAL = 12; ///< defines size of normal label's font +const int LABEL_SIZE_LARGE = 16; ///< defines size of large label's font +const int LABEL_SIZE_HUGE = 24; ///< defines size of huge label's font + +/** + * @author ComArch S.A. + * @date 2009.08.07 + * @version 1.1 + * + * @brief A label with scrolling text. + */ +#ifdef MAEMO + +class FFScrollingLabel : public FFAbstractWidget +{ + Q_OBJECT + +#else + +class QDESIGNER_WIDGET_EXPORT FFScrollingLabel : public FFAbstractWidget +{ + Q_OBJECT + Q_ENUMS(Alignment) + Q_PROPERTY(QFont font READ font WRITE setFont) + Q_PROPERTY(QString text READ text WRITE setText) + Q_PROPERTY(bool resizable READ isResizable WRITE setResizable) + Q_PROPERTY(int scrollSpeed READ scrollSpeed WRITE setScrollSpeed) + Q_PROPERTY(int endScrollDelay READ endScrollDelay WRITE setEndScrollDelay) + Q_PROPERTY(QColor color READ color WRITE setColor) + Q_PROPERTY(bool fitToFont READ fitToFont WRITE setFitToFont) + Q_PROPERTY(bool smoothDisappear READ isSmoothDisappear WRITE setSmoothDisappear) + Q_PROPERTY(int timerDelay READ timerDelay WRITE setTimerDelay) + Q_PROPERTY(FFScrollingLabel::Alignment alignment READ alignment WRITE setAlignment) + +#endif +public: + FFScrollingLabel(QWidget* parent = 0); + FFScrollingLabel(QString text, QWidget *parent = 0); + FFScrollingLabel(QString text, QFont font, QWidget* parent = 0); + virtual ~FFScrollingLabel(); + + enum Alignment + { + ALIGNMENT_LEFT = 0x2000, ///< label alignment to left + ALIGNMENT_RIGHT = 0x4000, ///< label alignment to right + ALIGNMENT_CENTER = 0x8000 ///< label alignment to center + }; + + QFont font() const; + QString text() const; + bool isResizable() const; + int scrollSpeed() const; + int endScrollDelay() const; + QColor color() const; + bool fitToFont() const; + bool isSmoothDisappear() const; + int timerDelay(); + FFScrollingLabel::Alignment alignment(); + + void setFont(QFont font); + void setFont(int fontParam); + void setText(QString text); + void setResizable(bool resizable); + void setScrollSpeed(int scrollSpeed); + void setEndScrollDelay(int endScrollDelay); + void setColor(QColor color); + void setFitToFont(bool fitToFont); + void setScrollType(int type); + void setSmoothDisappear(bool smoothDisappear); + void setTimerDelay(int delay); + void setAlignment(FFScrollingLabel::Alignment alignment); + + void updateView(); + +protected: + virtual void paintEvent(QPaintEvent *event); + virtual void resizeEvent(QResizeEvent *event); + virtual QSize sizeHint() const; + virtual void hideEvent(QHideEvent* event); + virtual void showEvent(QShowEvent* event); + +private: + QPainter* painter; ///< pointer to painter + QLinearGradient gradient; ///< stores gradient for label + QPen pen; ///< stores pen where gradient is set + QString text_; ///< stores text of label + QFont font_; ///< stores font of text + QTimer* timer; ///< timer used to animation + bool resizable_; ///< is true when font size should change with widget's size changes. + QColor color_; ///< stores color used to create gradient + + int length_; ///< length of the text + int textOffset; ///< text's offset + int scrollSpeed_; ///< scoll's speed + int endScrollDelay_; ///< gap during one of edges is visible + int endScrollDelayIterationL; ///< contains value how many times text is in stopped state on left + int endScrollDelayIterationR; ///< contains value how many times text is in stopped state on right + bool fitToFont_; ///< if is true the widgets height is adjusted to font size + QString previousScrollType; ///< stores scrolling type + bool smoothDisappear_; ///< is true when the gradient at ends is set up + int timerDelay_; ///< defines how often text is repainted + Alignment alignment_; ///< stores text's alignment + int textStartPos; ///< contains start text's posiotion + + void init(QString text, QFont font); + void calcTextPos(); + inline void changeGradient(qreal left, qreal right); + +private slots: + void scrollSideToSide(); +}; + +#endif // FFSCROLLINGLABEL_H diff --git a/libffqw-n810-1.0/sources/ffscrollingradiobutton.cpp b/libffqw-n810-1.0/sources/ffscrollingradiobutton.cpp new file mode 100644 index 0000000..562362b --- /dev/null +++ b/libffqw-n810-1.0/sources/ffscrollingradiobutton.cpp @@ -0,0 +1,101 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollingradiobutton.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.10.13 + * @version 1.0 + */ + +#include "ffscrollingradiobutton.h" +#include + +/** + * Constructs FFScrollingRadioButton with parent + */ +FFScrollingRadioButton::FFScrollingRadioButton(QWidget* parent) : FFScrollingCheckBox(SCROLLINGRADIOBUTTON_PATH,parent) +{ + path = SCROLLINGRADIOBUTTON_PATH ; + + setAutoExclusive(true); +} +/** + * A virtual destructor + */ +FFScrollingRadioButton::~FFScrollingRadioButton() +{ + +} diff --git a/libffqw-n810-1.0/sources/ffscrollingradiobutton.h b/libffqw-n810-1.0/sources/ffscrollingradiobutton.h new file mode 100644 index 0000000..b5c9968 --- /dev/null +++ b/libffqw-n810-1.0/sources/ffscrollingradiobutton.h @@ -0,0 +1,112 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffscrollingradiobutton.h + * @brief Implementation of the FFScrollingRadioButton class. + * + * @author ComArch S.A. + * @date 2009.10.13 + * @version 1.0 + */ + +#ifndef FFSCROLLINGRADIOBUTTON_H_ +#define FFSCROLLINGRADIOBUTTON_H_ + +#ifndef MAEMO +#include +#endif + +#include "ffscrollingcheckbox.h" + + +static const QString SCROLLINGRADIOBUTTON_PATH = ":/standard/radiobutton"; ///< part of path to graphics files + +/** + * @author ComArch S.A. + * @date 2009.10.13 + * @version 1.0 + * + * @brief A class responsible for button with 2 labels and radiobutton + */ +class FFScrollingRadioButton : public FFScrollingCheckBox +{ + Q_OBJECT +public: + FFScrollingRadioButton(QWidget* parent = 0); + virtual ~FFScrollingRadioButton(); +private: + QString path; ///< contains part of path to graphics files +}; + +#endif /* FFSCROLLINGRADIOBUTTON_H_ */ diff --git a/libffqw-n810-1.0/sources/ffstringcombobox.cpp b/libffqw-n810-1.0/sources/ffstringcombobox.cpp new file mode 100644 index 0000000..7b6a1bf --- /dev/null +++ b/libffqw-n810-1.0/sources/ffstringcombobox.cpp @@ -0,0 +1,193 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffstringcombobox.cpp + * @brief Implementation of the FFStringComboBox class + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + + +#include "ffstringcombobox.h" +/** + * Constructs a FFStringComboBox with a parent. + */ +FFStringComboBox::FFStringComboBox(QString title, QWidget* parent) : + FFAbstractComboBox(new FFScrollingButton(title,""), parent) +{ + activator_ -> setIcon(QIcon(":/standard/combo_triangle_pressed.svg")); + activator_ -> setMargins(0,0,10,10); + activator_ -> setIconAlignment(Qt::AlignRight); + +} + +/** + * A virtual destructor. + */ +FFStringComboBox::~FFStringComboBox() +{ + ; +} + +/** + * Adds item to combobox + * @param item is a text for item + */ +void FFStringComboBox::addItem(QString item) +{ + addItem(QVariant(item)); +} +/** + * Adds items to combobox + * @param items is a list of text for items + */ +void FFStringComboBox::addItems(QList items) +{ + for(int i=0; isetDescription(items.at(i)); + temp->disableTitle(true); + + // Second step: You must call this function with previously prepared button + insertItem(temp,false); + } + emit reset(); +} +/** + * Returns title of combobox + */ +QString FFStringComboBox::title() +{ + return dynamic_cast(activator_)->title(); +} +/** + * Sets title of combobox + */ +void FFStringComboBox::setTitle(QString title) +{ + dynamic_cast(activator_)->setTitle(title); +} +/** + * Sets chosen value of FFStringComboBox on activator + * @param item is a pointer to chosen item. + */ + +void FFStringComboBox::setActivatorSpecs(FFAbstractButton* item) +{ + if(FFScrollingButton* but = dynamic_cast(item)) + { + dynamic_cast(activator_)->setDescription(but->description()); + } +} +/** + * Returns QVariant element containing value of chosen item + */ +QVariant FFStringComboBox::activatorSpecs() +{ + return QVariant(dynamic_cast(activator_)->description()); +} + + +/** + * Sets actual text. + *@param text is a text to set + */ +void FFStringComboBox::setCurrentText(QString text) +{ + for(int i = 0; i < items_.size(); ++i) + { + if(dynamic_cast (items_[i])->description() == text) + { + setCurrentItem(i); + return; + } + } +} +/** + * Adds new item to FFStringComboBox + */ +void FFStringComboBox::addItem(QVariant spec) +{ + // First step: you must prepare new button (button must be inherited from FFAbstractButton) + FFScrollingButton* temp = new FFScrollingButton; + temp->setDescription(spec.toString()); + temp->disableTitle(true); + + // Second step: You must call this function with previously prepared button + insertItem(temp); +} diff --git a/libffqw-n810-1.0/sources/ffstringcombobox.h b/libffqw-n810-1.0/sources/ffstringcombobox.h new file mode 100644 index 0000000..ff8a94f --- /dev/null +++ b/libffqw-n810-1.0/sources/ffstringcombobox.h @@ -0,0 +1,136 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffstringcombobox.h + * @brief Contains a necessary class declaration. + * + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + */ + +#ifndef FFSTRINGCOMBOBOX_H_ +#define FFSTRINGCOMBOBOX_H_ + +#ifndef MAEMO +#include +#endif + +#include "ffabstractcombobox.h" +#include "ffscrollingbutton.h" + +/** + * @author ComArch S.A. + * @date 2009.08.13 + * @version 1.0 + * + * @brief A class of combobox with texts + */ + +#ifdef MAEMO + +class FFStringComboBox : public FFAbstractComboBox + +#else + +class QDESIGNER_WIDGET_EXPORT FFStringComboBox : public FFAbstractComboBox + +#endif +{ + Q_OBJECT + +public: + FFStringComboBox(QString title = 0, QWidget* parent = 0); + virtual ~FFStringComboBox(); + + void addItem(QString item); + void addItems(QList items); + + QString title(); + + void setTitle(QString title); + +public slots: + void setCurrentText(QString text); + +protected: + virtual void setActivatorSpecs(FFAbstractButton* item); + virtual QVariant activatorSpecs(); + +private: + void addItem(QVariant item); + +}; + +#endif // FFSTRINGCOMBOBOX_H diff --git a/libffqw-n810-1.0/sources/ffviewcache.cpp b/libffqw-n810-1.0/sources/ffviewcache.cpp new file mode 100644 index 0000000..2c643fb --- /dev/null +++ b/libffqw-n810-1.0/sources/ffviewcache.cpp @@ -0,0 +1,176 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffviewcache.cpp + * @brief Implementation of the FFViewCache class + * + * @author ComArch S.A. + * @date 2009.07.30 + * @version 1.0 + */ +#include "ffviewcache.h" + + +QHash FFViewCache::graphicsTable; + +/** Constructs an FFViewCache with a parent. */ +FFViewCache::FFViewCache(QObject* parent) : QObject(parent) +{ + renderer_ = new QSvgRenderer(this); +} + +/** A virtual destructor */ +FFViewCache::~FFViewCache() +{ + ; +} + +/** + * This method is used to initiate FFViewCache class. + * Reads graphic from file in "svg" format and calls updateView method to set + * class parameters. + * + * @param path a text with path to file with a graphic +*/ + +void FFViewCache::init(QString path) +{ + + if(!graphicsTable.contains(path)) + { + QSvgRenderer* rend= new QSvgRenderer; + rend->load(path); + graphicsTable[path] = rend; + + } + renderer_= graphicsTable[path]; +} + +/** + * Fills QPixmap with graphic loaded by the QSvgRenderer from a file. + * + * @param size specifies size of a QPixmap storing a graphic +*/ +void FFViewCache::updateView(QSize size) +{ + /* creates pixmap with correct size */ + pixmap_ = QPixmap(size); + /* background will be transparent */ + pixmap_.fill(Qt::transparent); + + /* creates painter and fill pixmap by graphic */ + QPainter painter; + painter.begin(&pixmap_); + renderer_->render(&painter); + painter.end(); +} + +/** + * Returns graphic read from svg file +*/ +QPixmap FFViewCache::pixmap() const +{ + return pixmap_; +} + +/** + * Returns Svg renderer + */ +QSvgRenderer* FFViewCache::renderer() const +{ + return renderer_; +} + +/** + * Returns true when a file with graphic was correctly read + */ +bool FFViewCache::isValid() const +{ + return renderer_->isValid(); +} + +/** + * Returns default size of graphic read from file + */ +QSize FFViewCache::defaultSize() const +{ + return renderer_->defaultSize(); +} +/** + * Sets pixmap size to 0 + */ +void FFViewCache::setPixmapToZero() +{ + pixmap_ = QPixmap(0,0); +} diff --git a/libffqw-n810-1.0/sources/ffviewcache.h b/libffqw-n810-1.0/sources/ffviewcache.h new file mode 100644 index 0000000..4cb526a --- /dev/null +++ b/libffqw-n810-1.0/sources/ffviewcache.h @@ -0,0 +1,124 @@ +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + +http://www.gnu.org/licenses/gpl-3.0.txt +*/ +/** + * @file ffviewcache.h + * @brief Contains a necessary class declaration. + * + * @author Marcin Kusmierski, Damian Plonek, Michał Palczewski, Dawid Klimt + * @date 2009.07.30 + * @version 1.0 + */ + +#ifndef FFVIEWCACHE_H +#define FFVIEWCACHE_H + +#include +#include +#include +#include +#include +/** + * @author ComArch S.A. + * @date 2009.07.30 + * @version 1.0 + * + * @brief A class responsible for widgets' view and event mask + */ +class FFViewCache : public QObject +{ +Q_OBJECT +public: + FFViewCache(QObject* parent = 0); + virtual ~FFViewCache(); + + void init(QString path); + void updateView(QSize size); + QPixmap pixmap() const; + QSvgRenderer* renderer() const; + bool isValid() const; + QSize defaultSize() const; + void setPixmapToZero(); + +private: + + static QHash graphicsTable; ///

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 z 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 literal 0 HcmV?d00001 diff --git a/libffqw-n810-1.0/data/img/img.qrc b/libffqw-n810-1.0/data/img/img.qrc new file mode 100644 index 0000000..872404f --- /dev/null +++ b/libffqw-n810-1.0/data/img/img.qrc @@ -0,0 +1,68 @@ + + + standard/button_bottomcenter_clicked.svg + standard/button_bottomcenter_normal.svg + standard/button_bottomleft_clicked.svg + standard/button_bottomleft_normal.svg + standard/button_bottomright_clicked.svg + standard/button_bottomright_normal.svg + standard/button_center_clicked.svg + standard/button_centerleft_clicked.svg + standard/button_centerleft_normal.svg + standard/button_center_normal.svg + standard/button_centerright_clicked.svg + standard/button_centerright_normal.svg + standard/button_false.svg + standard/button_topcenter_clicked.svg + standard/button_topcenter_normal.svg + standard/button_topleft_clicked.svg + standard/button_topleft_normal.svg + standard/button_topright_clicked.svg + standard/button_topright_normal.svg + standard/button_true.svg + standard/chart_default.svg + standard/chart_legendOFF.svg + standard/chart_legendON.svg + standard/chart_zoomin.svg + standard/chart_zoomout.svg + standard/combo_button_bottomcenter_clicked.svg + standard/combo_button_bottomcenter_normal.svg + standard/combo_button_bottomleft_clicked.svg + standard/combo_button_bottomleft_normal.svg + standard/combo_button_bottomright_clicked.svg + standard/combo_button_bottomright_normal.svg + standard/combo_button_center_clicked.svg + standard/combo_button_centerleft_clicked.svg + standard/combo_button_centerleft_normal.svg + standard/combo_button_center_normal.svg + standard/combo_button_centerright_clicked.svg + standard/combo_button_centerright_normal.svg + standard/combo_button_topcenter_clicked.svg + standard/combo_button_topcenter_normal.svg + standard/combo_button_topleft_clicked.svg + standard/combo_button_topleft_normal.svg + standard/combo_button_topright_clicked.svg + standard/combo_button_topright_normal.svg + standard/combo_colorarrow.svg + standard/combo_colorarrow_pressed.svg + standard/combo_colorbackground.svg + standard/combo_colorbackground_pressed.svg + standard/combo_string_arrow.svg + standard/combo_string_arrow_pressed.svg + standard/combo_string_background.svg + standard/combo_string_background_pressed.svg + standard/combo_triangle.svg + standard/combo_triangle_pressed.svg + standard/dpad_background.svg + standard/dpad_button_down.svg + standard/dpad_button_down_pressed.svg + standard/dpad_button_left.svg + standard/dpad_button_left_pressed.svg + standard/dpad_button_right.svg + standard/dpad_button_right_pressed.svg + standard/dpad_button_up.svg + standard/dpad_button_up_pressed.svg + standard/radiobutton_false.svg + standard/radiobutton_true.svg + + diff --git a/libffqw-n810-1.0/data/img/standard/button_bottomcenter_clicked.svg b/libffqw-n810-1.0/data/img/standard/button_bottomcenter_clicked.svg new file mode 100644 index 0000000..4f7c236 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_bottomcenter_clicked.svg @@ -0,0 +1,1122 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_bottomcenter_normal.svg b/libffqw-n810-1.0/data/img/standard/button_bottomcenter_normal.svg new file mode 100644 index 0000000..bff7151 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_bottomcenter_normal.svg @@ -0,0 +1,575 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_bottomleft_clicked.svg b/libffqw-n810-1.0/data/img/standard/button_bottomleft_clicked.svg new file mode 100644 index 0000000..cec989c --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_bottomleft_clicked.svg @@ -0,0 +1,1122 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_bottomleft_normal.svg b/libffqw-n810-1.0/data/img/standard/button_bottomleft_normal.svg new file mode 100644 index 0000000..422f443 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_bottomleft_normal.svg @@ -0,0 +1,565 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_bottomright_clicked.svg b/libffqw-n810-1.0/data/img/standard/button_bottomright_clicked.svg new file mode 100644 index 0000000..8902372 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_bottomright_clicked.svg @@ -0,0 +1,1121 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_bottomright_normal.svg b/libffqw-n810-1.0/data/img/standard/button_bottomright_normal.svg new file mode 100644 index 0000000..96da0b4 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_bottomright_normal.svg @@ -0,0 +1,609 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_center_clicked.svg b/libffqw-n810-1.0/data/img/standard/button_center_clicked.svg new file mode 100644 index 0000000..edd9f85 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_center_clicked.svg @@ -0,0 +1,1155 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_center_normal.svg b/libffqw-n810-1.0/data/img/standard/button_center_normal.svg new file mode 100644 index 0000000..f34dbd6 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_center_normal.svg @@ -0,0 +1,579 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_centerleft_clicked.svg b/libffqw-n810-1.0/data/img/standard/button_centerleft_clicked.svg new file mode 100644 index 0000000..2c4a76c --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_centerleft_clicked.svg @@ -0,0 +1,1136 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_centerleft_normal.svg b/libffqw-n810-1.0/data/img/standard/button_centerleft_normal.svg new file mode 100644 index 0000000..6184bf5 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_centerleft_normal.svg @@ -0,0 +1,609 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_centerright_clicked.svg b/libffqw-n810-1.0/data/img/standard/button_centerright_clicked.svg new file mode 100644 index 0000000..9a1793b --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_centerright_clicked.svg @@ -0,0 +1,1137 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_centerright_normal.svg b/libffqw-n810-1.0/data/img/standard/button_centerright_normal.svg new file mode 100644 index 0000000..aaa95a1 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_centerright_normal.svg @@ -0,0 +1,587 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_false.svg b/libffqw-n810-1.0/data/img/standard/button_false.svg new file mode 100644 index 0000000..3317bb1 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_false.svg @@ -0,0 +1,514 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_topcenter_clicked.svg b/libffqw-n810-1.0/data/img/standard/button_topcenter_clicked.svg new file mode 100644 index 0000000..523daa8 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_topcenter_clicked.svg @@ -0,0 +1,1131 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_topcenter_normal.svg b/libffqw-n810-1.0/data/img/standard/button_topcenter_normal.svg new file mode 100644 index 0000000..b69662d --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_topcenter_normal.svg @@ -0,0 +1,565 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_topleft_clicked.svg b/libffqw-n810-1.0/data/img/standard/button_topleft_clicked.svg new file mode 100644 index 0000000..976ac1d --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_topleft_clicked.svg @@ -0,0 +1,1111 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_topleft_normal.svg b/libffqw-n810-1.0/data/img/standard/button_topleft_normal.svg new file mode 100644 index 0000000..187a2ee --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_topleft_normal.svg @@ -0,0 +1,566 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_topright_clicked.svg b/libffqw-n810-1.0/data/img/standard/button_topright_clicked.svg new file mode 100644 index 0000000..51dcbdb --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_topright_clicked.svg @@ -0,0 +1,1121 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_topright_normal.svg b/libffqw-n810-1.0/data/img/standard/button_topright_normal.svg new file mode 100644 index 0000000..943c800 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_topright_normal.svg @@ -0,0 +1,575 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/button_true.svg b/libffqw-n810-1.0/data/img/standard/button_true.svg new file mode 100644 index 0000000..eae911d --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/button_true.svg @@ -0,0 +1,497 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/chart_default.svg b/libffqw-n810-1.0/data/img/standard/chart_default.svg new file mode 100644 index 0000000..85b38f0 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/chart_default.svg @@ -0,0 +1,175 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/chart_legendOFF.svg b/libffqw-n810-1.0/data/img/standard/chart_legendOFF.svg new file mode 100644 index 0000000..d0e3e81 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/chart_legendOFF.svg @@ -0,0 +1,574 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/chart_legendON.svg b/libffqw-n810-1.0/data/img/standard/chart_legendON.svg new file mode 100644 index 0000000..35a321a --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/chart_legendON.svg @@ -0,0 +1,574 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/chart_zoomin.svg b/libffqw-n810-1.0/data/img/standard/chart_zoomin.svg new file mode 100644 index 0000000..e676bdc --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/chart_zoomin.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/chart_zoomout.svg b/libffqw-n810-1.0/data/img/standard/chart_zoomout.svg new file mode 100644 index 0000000..522d081 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/chart_zoomout.svg @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_bottomcenter_clicked.svg b/libffqw-n810-1.0/data/img/standard/combo_button_bottomcenter_clicked.svg new file mode 100644 index 0000000..1ea9b25 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_bottomcenter_clicked.svg @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_bottomcenter_normal.svg b/libffqw-n810-1.0/data/img/standard/combo_button_bottomcenter_normal.svg new file mode 100644 index 0000000..6cedc9c --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_bottomcenter_normal.svg @@ -0,0 +1,524 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_bottomleft_clicked.svg b/libffqw-n810-1.0/data/img/standard/combo_button_bottomleft_clicked.svg new file mode 100644 index 0000000..d234a2e --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_bottomleft_clicked.svg @@ -0,0 +1,621 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_bottomleft_normal.svg b/libffqw-n810-1.0/data/img/standard/combo_button_bottomleft_normal.svg new file mode 100644 index 0000000..25c95e1 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_bottomleft_normal.svg @@ -0,0 +1,524 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_bottomright_clicked.svg b/libffqw-n810-1.0/data/img/standard/combo_button_bottomright_clicked.svg new file mode 100644 index 0000000..590216d --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_bottomright_clicked.svg @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_bottomright_normal.svg b/libffqw-n810-1.0/data/img/standard/combo_button_bottomright_normal.svg new file mode 100644 index 0000000..5fd4c72 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_bottomright_normal.svg @@ -0,0 +1,524 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_center_clicked.svg b/libffqw-n810-1.0/data/img/standard/combo_button_center_clicked.svg new file mode 100644 index 0000000..2c43ff9 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_center_clicked.svg @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_center_normal.svg b/libffqw-n810-1.0/data/img/standard/combo_button_center_normal.svg new file mode 100644 index 0000000..35c2b83 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_center_normal.svg @@ -0,0 +1,480 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_centerleft_clicked.svg b/libffqw-n810-1.0/data/img/standard/combo_button_centerleft_clicked.svg new file mode 100644 index 0000000..6b3b52d --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_centerleft_clicked.svg @@ -0,0 +1,624 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_centerleft_normal.svg b/libffqw-n810-1.0/data/img/standard/combo_button_centerleft_normal.svg new file mode 100644 index 0000000..82af72c --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_centerleft_normal.svg @@ -0,0 +1,527 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_centerright_clicked.svg b/libffqw-n810-1.0/data/img/standard/combo_button_centerright_clicked.svg new file mode 100644 index 0000000..a41afc7 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_centerright_clicked.svg @@ -0,0 +1,606 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_centerright_normal.svg b/libffqw-n810-1.0/data/img/standard/combo_button_centerright_normal.svg new file mode 100644 index 0000000..b225906 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_centerright_normal.svg @@ -0,0 +1,527 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_topcenter_clicked.svg b/libffqw-n810-1.0/data/img/standard/combo_button_topcenter_clicked.svg new file mode 100644 index 0000000..ae218d9 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_topcenter_clicked.svg @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_topcenter_normal.svg b/libffqw-n810-1.0/data/img/standard/combo_button_topcenter_normal.svg new file mode 100644 index 0000000..011a412 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_topcenter_normal.svg @@ -0,0 +1,524 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_topleft_clicked.svg b/libffqw-n810-1.0/data/img/standard/combo_button_topleft_clicked.svg new file mode 100644 index 0000000..823d289 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_topleft_clicked.svg @@ -0,0 +1,648 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_topleft_normal.svg b/libffqw-n810-1.0/data/img/standard/combo_button_topleft_normal.svg new file mode 100644 index 0000000..a30f950 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_topleft_normal.svg @@ -0,0 +1,523 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_topright_clicked.svg b/libffqw-n810-1.0/data/img/standard/combo_button_topright_clicked.svg new file mode 100644 index 0000000..8e35adf --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_topright_clicked.svg @@ -0,0 +1,603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_button_topright_normal.svg b/libffqw-n810-1.0/data/img/standard/combo_button_topright_normal.svg new file mode 100644 index 0000000..5e22a10 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_button_topright_normal.svg @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_colorarrow.svg b/libffqw-n810-1.0/data/img/standard/combo_colorarrow.svg new file mode 100644 index 0000000..b55ec36 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_colorarrow.svg @@ -0,0 +1,975 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + Text Text + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_colorarrow_pressed.svg b/libffqw-n810-1.0/data/img/standard/combo_colorarrow_pressed.svg new file mode 100644 index 0000000..7d40d50 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_colorarrow_pressed.svg @@ -0,0 +1,1528 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_colorbackground.svg b/libffqw-n810-1.0/data/img/standard/combo_colorbackground.svg new file mode 100644 index 0000000..e809fee --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_colorbackground.svg @@ -0,0 +1,720 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_colorbackground_pressed.svg b/libffqw-n810-1.0/data/img/standard/combo_colorbackground_pressed.svg new file mode 100644 index 0000000..deb83f9 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_colorbackground_pressed.svg @@ -0,0 +1,719 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_string_arrow.svg b/libffqw-n810-1.0/data/img/standard/combo_string_arrow.svg new file mode 100644 index 0000000..cd35dcf --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_string_arrow.svg @@ -0,0 +1,998 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + Text Text + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_string_arrow_pressed.svg b/libffqw-n810-1.0/data/img/standard/combo_string_arrow_pressed.svg new file mode 100644 index 0000000..4c52924 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_string_arrow_pressed.svg @@ -0,0 +1,1554 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_string_background.svg b/libffqw-n810-1.0/data/img/standard/combo_string_background.svg new file mode 100644 index 0000000..e809fee --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_string_background.svg @@ -0,0 +1,720 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_string_background_pressed.svg b/libffqw-n810-1.0/data/img/standard/combo_string_background_pressed.svg new file mode 100644 index 0000000..deb83f9 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_string_background_pressed.svg @@ -0,0 +1,719 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_triangle.svg b/libffqw-n810-1.0/data/img/standard/combo_triangle.svg new file mode 100644 index 0000000..095c33c --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_triangle.svg @@ -0,0 +1,978 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Text Text + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/combo_triangle_pressed.svg b/libffqw-n810-1.0/data/img/standard/combo_triangle_pressed.svg new file mode 100644 index 0000000..cdd0ef4 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/combo_triangle_pressed.svg @@ -0,0 +1,931 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Text Text + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/dpad_background.svg b/libffqw-n810-1.0/data/img/standard/dpad_background.svg new file mode 100644 index 0000000..129b1b0 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/dpad_background.svg @@ -0,0 +1,1885 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/dpad_button_down.svg b/libffqw-n810-1.0/data/img/standard/dpad_button_down.svg new file mode 100644 index 0000000..22af200 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/dpad_button_down.svg @@ -0,0 +1,1941 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/dpad_button_down_pressed.svg b/libffqw-n810-1.0/data/img/standard/dpad_button_down_pressed.svg new file mode 100644 index 0000000..a335441 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/dpad_button_down_pressed.svg @@ -0,0 +1,3909 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/dpad_button_left.svg b/libffqw-n810-1.0/data/img/standard/dpad_button_left.svg new file mode 100644 index 0000000..d436e8a --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/dpad_button_left.svg @@ -0,0 +1,1941 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/dpad_button_left_pressed.svg b/libffqw-n810-1.0/data/img/standard/dpad_button_left_pressed.svg new file mode 100644 index 0000000..996214e --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/dpad_button_left_pressed.svg @@ -0,0 +1,3913 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/dpad_button_right.svg b/libffqw-n810-1.0/data/img/standard/dpad_button_right.svg new file mode 100644 index 0000000..361a5e4 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/dpad_button_right.svg @@ -0,0 +1,1941 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/dpad_button_right_pressed.svg b/libffqw-n810-1.0/data/img/standard/dpad_button_right_pressed.svg new file mode 100644 index 0000000..6d7714b --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/dpad_button_right_pressed.svg @@ -0,0 +1,3917 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/dpad_button_up.svg b/libffqw-n810-1.0/data/img/standard/dpad_button_up.svg new file mode 100644 index 0000000..16eaa01 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/dpad_button_up.svg @@ -0,0 +1,1941 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/dpad_button_up_pressed.svg b/libffqw-n810-1.0/data/img/standard/dpad_button_up_pressed.svg new file mode 100644 index 0000000..6f6233a --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/dpad_button_up_pressed.svg @@ -0,0 +1,3910 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/radiobutton_false.svg b/libffqw-n810-1.0/data/img/standard/radiobutton_false.svg new file mode 100644 index 0000000..3a313b1 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/radiobutton_false.svg @@ -0,0 +1,432 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/data/img/standard/radiobutton_true.svg b/libffqw-n810-1.0/data/img/standard/radiobutton_true.svg new file mode 100644 index 0000000..a7fbc46 --- /dev/null +++ b/libffqw-n810-1.0/data/img/standard/radiobutton_true.svg @@ -0,0 +1,442 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libffqw-n810-1.0/debian/README b/libffqw-n810-1.0/debian/README new file mode 100644 index 0000000..242606a --- /dev/null +++ b/libffqw-n810-1.0/debian/README @@ -0,0 +1,6 @@ +The Debian Package libffqw +---------------------------- + +Comments regarding the Package + + -- unknown Fri, 8 Jan 2010 14:15:07 +0100 diff --git a/libffqw-n810-1.0/debian/README.Debian b/libffqw-n810-1.0/debian/README.Debian new file mode 100644 index 0000000..8ab4a3d --- /dev/null +++ b/libffqw-n810-1.0/debian/README.Debian @@ -0,0 +1,6 @@ +libffqw for Debian +------------------ + + + + -- unknown Fri, 8 Jan 2010 14:15:07 +0100 diff --git a/libffqw-n810-1.0/debian/changelog b/libffqw-n810-1.0/debian/changelog new file mode 100644 index 0000000..425e0f8 --- /dev/null +++ b/libffqw-n810-1.0/debian/changelog @@ -0,0 +1,5 @@ +libffqw-n810 (1.0) unstable; urgency=low + + * Initial Release. + + -- Michal Palczewski Fri, 8 Jan 2010 14:15:07 +0100 diff --git a/libffqw-n810-1.0/debian/compat b/libffqw-n810-1.0/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/libffqw-n810-1.0/debian/compat @@ -0,0 +1 @@ +5 diff --git a/libffqw-n810-1.0/debian/control b/libffqw-n810-1.0/debian/control new file mode 100644 index 0000000..0cbdb9b --- /dev/null +++ b/libffqw-n810-1.0/debian/control @@ -0,0 +1,40 @@ +Source: libffqw-n810 +Priority: extra +Maintainer: Michal A. Palczewski +Build-Depends: debhelper (>= 5) +Standards-Version: 3.7.2 +Section: libs + +Package: libffqw-n810-dev +Section: user/other +Architecture: any +Depends: libffqw-n810 (= ${Source-Version}) +Description: Finger Friendly Qt Widgets for Maemo + Library provides finger friendly widgets for Maemo platform. + Works On Fremantle and Diablo. Development packages. +XB-Maemo-Icon-26: + iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A + /wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oBCAwFL1gZpM4AAAAZdEVYdENv + bW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAABF0lEQVRIx9VWMRLCIBBcGAtMOhkrC1+AKUxp + 5R98h3/wB34hrX/wBTbKGyxTqqmMjUTIkIBK4rgzTJjLHcvtHQxEZFGJJ87bO0JisqbVnCii0+La + GMBXDACQ74rWhZWfjYy6SL6FUomM5qxUO7XtSIevnw2DLrLIDzdT0nTYDZEcj03DtCadq8C+fr1K + F8sjLiKxS+dbZJdfLI/Gl6n2Dg2VyUUk1bwT6Xg6BAPANRtFTzCIclEYo7HYov0qsv1/EW08F9x4 + dl4tlurBXDJj1AM+uXp+W6OPD6ijpkGIXAT/KZ1qnLeIfPQOmlFoMuqSwUcWHxCRReVpf32rBvVs + uWRWm/4SogAwW0atBG2LuDamnlukrwfkA722cNGhoLXOAAAAAElFTkSuQmCC + +Package: libffqw-n810 +Section: user/other +Architecture: any +Depends: libqt4-gui (>=4.5), libqt4-gui (<<4.6), libqt4-svg (>=4.5), libqt4-svg (<<4.6), +Description: Finger Friendly Qt Widgets for Maemo + Library provides finger friendly widgets for Maemo platform. + Works On Fremantle and Diablo. +XB-Maemo-Icon-26: + iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A + /wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oBCAwFL1gZpM4AAAAZdEVYdENv + bW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAABF0lEQVRIx9VWMRLCIBBcGAtMOhkrC1+AKUxp + 5R98h3/wB34hrX/wBTbKGyxTqqmMjUTIkIBK4rgzTJjLHcvtHQxEZFGJJ87bO0JisqbVnCii0+La + GMBXDACQ74rWhZWfjYy6SL6FUomM5qxUO7XtSIevnw2DLrLIDzdT0nTYDZEcj03DtCadq8C+fr1K + F8sjLiKxS+dbZJdfLI/Gl6n2Dg2VyUUk1bwT6Xg6BAPANRtFTzCIclEYo7HYov0qsv1/EW08F9x4 + dl4tlurBXDJj1AM+uXp+W6OPD6ijpkGIXAT/KZ1qnLeIfPQOmlFoMuqSwUcWHxCRReVpf32rBvVs + uWRWm/4SogAwW0atBG2LuDamnlukrwfkA722cNGhoLXOAAAAAElFTkSuQmCC diff --git a/libffqw-n810-1.0/debian/copyright b/libffqw-n810-1.0/debian/copyright new file mode 100644 index 0000000..380a638 --- /dev/null +++ b/libffqw-n810-1.0/debian/copyright @@ -0,0 +1,23 @@ +This is libffqw, written and maintained by unknown +on Fri, 8 Jan 2010 14:15:07 +0100. + +Copyright Holder: Comarch S.A. + +License: + + 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. diff --git a/libffqw-n810-1.0/debian/cron.d.ex b/libffqw-n810-1.0/debian/cron.d.ex new file mode 100644 index 0000000..75576e4 --- /dev/null +++ b/libffqw-n810-1.0/debian/cron.d.ex @@ -0,0 +1,4 @@ +# +# Regular cron jobs for the libffqw package +# +0 4 * * * root libffqw_maintenance diff --git a/libffqw-n810-1.0/debian/dirs b/libffqw-n810-1.0/debian/dirs new file mode 100644 index 0000000..ca882bb --- /dev/null +++ b/libffqw-n810-1.0/debian/dirs @@ -0,0 +1,2 @@ +usr/bin +usr/sbin diff --git a/libffqw-n810-1.0/debian/docs b/libffqw-n810-1.0/debian/docs new file mode 100644 index 0000000..e69de29 diff --git a/libffqw-n810-1.0/debian/emacsen-install.ex b/libffqw-n810-1.0/debian/emacsen-install.ex new file mode 100644 index 0000000..64f4d86 --- /dev/null +++ b/libffqw-n810-1.0/debian/emacsen-install.ex @@ -0,0 +1,45 @@ +#! /bin/sh -e +# /usr/lib/emacsen-common/packages/install/libffqw + +# Written by Jim Van Zandt , borrowing heavily +# from the install scripts for gettext by Santiago Vila +# and octave by Dirk Eddelbuettel . + +FLAVOR=$1 +PACKAGE=libffqw + +if [ ${FLAVOR} = emacs ]; then exit 0; fi + +echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR} + +#FLAVORTEST=`echo $FLAVOR | cut -c-6` +#if [ ${FLAVORTEST} = xemacs ] ; then +# SITEFLAG="-no-site-file" +#else +# SITEFLAG="--no-site-file" +#fi +FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile" + +ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} +ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} + +# Install-info-altdir does not actually exist. +# Maybe somebody will write it. +if test -x /usr/sbin/install-info-altdir; then + echo install/${PACKAGE}: install Info links for ${FLAVOR} + install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/info/${PACKAGE}.info.gz +fi + +install -m 755 -d ${ELCDIR} +cd ${ELDIR} +FILES=`echo *.el` +cp ${FILES} ${ELCDIR} +cd ${ELCDIR} + +cat << EOF > path.el +(setq load-path (cons "." load-path) byte-compile-warnings nil) +EOF +${FLAVOR} ${FLAGS} ${FILES} +rm -f *.el path.el + +exit 0 diff --git a/libffqw-n810-1.0/debian/emacsen-remove.ex b/libffqw-n810-1.0/debian/emacsen-remove.ex new file mode 100644 index 0000000..a99dfcc --- /dev/null +++ b/libffqw-n810-1.0/debian/emacsen-remove.ex @@ -0,0 +1,15 @@ +#!/bin/sh -e +# /usr/lib/emacsen-common/packages/remove/libffqw + +FLAVOR=$1 +PACKAGE=libffqw + +if [ ${FLAVOR} != emacs ]; then + if test -x /usr/sbin/install-info-altdir; then + echo remove/${PACKAGE}: removing Info links for ${FLAVOR} + install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/info/libffqw.info.gz + fi + + echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} + rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} +fi diff --git a/libffqw-n810-1.0/debian/emacsen-startup.ex b/libffqw-n810-1.0/debian/emacsen-startup.ex new file mode 100644 index 0000000..bc8681b --- /dev/null +++ b/libffqw-n810-1.0/debian/emacsen-startup.ex @@ -0,0 +1,25 @@ +;; -*-emacs-lisp-*- +;; +;; Emacs startup file, e.g. /etc/emacs/site-start.d/50libffqw.el +;; for the Debian libffqw package +;; +;; Originally contributed by Nils Naumann +;; Modified by Dirk Eddelbuettel +;; Adapted for dh-make by Jim Van Zandt + +;; The libffqw package follows the Debian/GNU Linux 'emacsen' policy and +;; byte-compiles its elisp files for each 'emacs flavor' (emacs19, +;; xemacs19, emacs20, xemacs20...). The compiled code is then +;; installed in a subdirectory of the respective site-lisp directory. +;; We have to add this to the load-path: +(let ((package-dir (concat "/usr/share/" + (symbol-name flavor) + "/site-lisp/libffqw"))) +;; If package-dir does not exist, the libffqw package must have +;; removed but not purged, and we should skip the setup. + (when (file-directory-p package-dir) + (setq load-path (cons package-dir load-path)) + (autoload 'libffqw-mode "libffqw-mode" + "Major mode for editing libffqw files." t) + (add-to-list 'auto-mode-alist '("\\.libffqw$" . libffqw-mode)))) + diff --git a/libffqw-n810-1.0/debian/files b/libffqw-n810-1.0/debian/files new file mode 100644 index 0000000..00ab8f9 --- /dev/null +++ b/libffqw-n810-1.0/debian/files @@ -0,0 +1,2 @@ +libffqw-n810-dev_1.0_armel.deb user/other extra +libffqw-n810_1.0_armel.deb user/other extra diff --git a/libffqw-n810-1.0/debian/init.d.ex b/libffqw-n810-1.0/debian/init.d.ex new file mode 100644 index 0000000..ee9d1e9 --- /dev/null +++ b/libffqw-n810-1.0/debian/init.d.ex @@ -0,0 +1,81 @@ +#! /bin/sh +# +# skeleton example file to build /etc/init.d/ scripts. +# This file should be used to construct scripts for /etc/init.d. +# +# Written by Miquel van Smoorenburg . +# Modified for Debian +# by Ian Murdock . +# +# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl +# + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/sbin/libffqw +NAME=libffqw +DESC=libffqw + +test -x $DAEMON || exit 0 + +# Include libffqw defaults if available +if [ -f /etc/default/libffqw ] ; then + . /etc/default/libffqw +fi + +set -e + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON + echo "$NAME." + ;; + #reload) + # + # If the daemon can reload its config files on the fly + # for example by sending it SIGHUP, do it here. + # + # If the daemon responds to changes in its config file + # directly anyway, make this a do-nothing entry. + # + # echo "Reloading $DESC configuration files." + # start-stop-daemon --stop --signal 1 --quiet --pidfile \ + # /var/run/$NAME.pid --exec $DAEMON + #;; + force-reload) + # + # If the "reload" option is implemented, move the "force-reload" + # option to the "reload" entry above. If not, "force-reload" is + # just the same as "restart" except that it does nothing if the + # daemon isn't already running. + # check wether $DAEMON is running. If so, restart + start-stop-daemon --stop --test --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON \ + && $0 restart \ + || exit 0 + ;; + restart) + echo -n "Restarting $DESC: " + start-stop-daemon --stop --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON + sleep 1 + start-stop-daemon --start --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + *) + N=/etc/init.d/$NAME + # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/libffqw-n810-1.0/debian/libffqw-default.ex b/libffqw-n810-1.0/debian/libffqw-default.ex new file mode 100644 index 0000000..376c2f5 --- /dev/null +++ b/libffqw-n810-1.0/debian/libffqw-default.ex @@ -0,0 +1,10 @@ +# Defaults for libffqw initscript +# sourced by /etc/init.d/libffqw +# installed at /etc/default/libffqw by the maintainer scripts + +# +# This is a POSIX shell fragment +# + +# Additional options that are passed to the Daemon. +DAEMON_OPTS="" diff --git a/libffqw-n810-1.0/debian/libffqw-dev.dirs b/libffqw-n810-1.0/debian/libffqw-dev.dirs new file mode 100644 index 0000000..4418816 --- /dev/null +++ b/libffqw-n810-1.0/debian/libffqw-dev.dirs @@ -0,0 +1,2 @@ +usr/lib +usr/include diff --git a/libffqw-n810-1.0/debian/libffqw-dev.install b/libffqw-n810-1.0/debian/libffqw-dev.install new file mode 100644 index 0000000..3c996c8 --- /dev/null +++ b/libffqw-n810-1.0/debian/libffqw-dev.install @@ -0,0 +1,6 @@ +usr/include/* +usr/lib/lib*.a +usr/lib/lib*.so +usr/lib/pkgconfig/* +usr/lib/*.la +usr/share/pkgconfig/* diff --git a/libffqw-n810-1.0/debian/libffqw-n810.substvars b/libffqw-n810-1.0/debian/libffqw-n810.substvars new file mode 100644 index 0000000..768df32 --- /dev/null +++ b/libffqw-n810-1.0/debian/libffqw-n810.substvars @@ -0,0 +1 @@ +shlibs:Depends=libc6 (>= 2.5.0-1), libgcc1 (>= 1:4.2.1), libqt4-maemo5-core (>= 4.6.0~git20091215), libqt4-maemo5-gui (>= 4.6.0~git20091215), libqt4-maemo5-svg (>= 4.6.0~git20091215), libstdc++6 (>= 4.2.1) diff --git a/libffqw-n810-1.0/debian/libffqw.doc-base.EX b/libffqw-n810-1.0/debian/libffqw.doc-base.EX new file mode 100644 index 0000000..ad8ded1 --- /dev/null +++ b/libffqw-n810-1.0/debian/libffqw.doc-base.EX @@ -0,0 +1,22 @@ +Document: libffqw +Title: Debian libffqw Manual +Author: +Abstract: This manual describes what libffqw is + and how it can be used to + manage online manuals on Debian systems. +Section: unknown + +Format: debiandoc-sgml +Files: /usr/share/doc/libffqw/libffqw.sgml.gz + +Format: postscript +Files: /usr/share/doc/libffqw/libffqw.ps.gz + +Format: text +Files: /usr/share/doc/libffqw/libffqw.text.gz + +Format: HTML +Index: /usr/share/doc/libffqw/html/index.html +Files: /usr/share/doc/libffqw/html/*.html + + diff --git a/libffqw-n810-1.0/debian/libffqw.substvars b/libffqw-n810-1.0/debian/libffqw.substvars new file mode 100644 index 0000000..768df32 --- /dev/null +++ b/libffqw-n810-1.0/debian/libffqw.substvars @@ -0,0 +1 @@ +shlibs:Depends=libc6 (>= 2.5.0-1), libgcc1 (>= 1:4.2.1), libqt4-maemo5-core (>= 4.6.0~git20091215), libqt4-maemo5-gui (>= 4.6.0~git20091215), libqt4-maemo5-svg (>= 4.6.0~git20091215), libstdc++6 (>= 4.2.1) diff --git a/libffqw-n810-1.0/debian/libffqw1.dirs b/libffqw-n810-1.0/debian/libffqw1.dirs new file mode 100644 index 0000000..6845771 --- /dev/null +++ b/libffqw-n810-1.0/debian/libffqw1.dirs @@ -0,0 +1 @@ +usr/lib diff --git a/libffqw-n810-1.0/debian/libffqw1.install b/libffqw-n810-1.0/debian/libffqw1.install new file mode 100644 index 0000000..d0dbfd1 --- /dev/null +++ b/libffqw-n810-1.0/debian/libffqw1.install @@ -0,0 +1 @@ +usr/lib/lib*.so.* diff --git a/libffqw-n810-1.0/debian/manpage.1.ex b/libffqw-n810-1.0/debian/manpage.1.ex new file mode 100644 index 0000000..bbd81d8 --- /dev/null +++ b/libffqw-n810-1.0/debian/manpage.1.ex @@ -0,0 +1,59 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH LIBFFQW SECTION "January 8, 2010" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +libffqw \- program to do something +.SH SYNOPSIS +.B libffqw +.RI [ options ] " files" ... +.br +.B bar +.RI [ options ] " files" ... +.SH DESCRIPTION +This manual page documents briefly the +.B libffqw +and +.B bar +commands. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBlibffqw\fP is a program that... +.SH OPTIONS +These programs follow the usual GNU command line syntax, with long +options starting with two dashes (`-'). +A summary of options is included below. +For a complete description, see the Info files. +.TP +.B \-h, \-\-help +Show summary of options. +.TP +.B \-v, \-\-version +Show version of program. +.SH SEE ALSO +.BR bar (1), +.BR baz (1). +.br +The programs are documented fully by +.IR "The Rise and Fall of a Fooish Bar" , +available via the Info system. +.SH AUTHOR +libffqw was written by . +.PP +This manual page was written by unknown , +for the Debian project (but may be used by others). diff --git a/libffqw-n810-1.0/debian/manpage.sgml.ex b/libffqw-n810-1.0/debian/manpage.sgml.ex new file mode 100644 index 0000000..573e274 --- /dev/null +++ b/libffqw-n810-1.0/debian/manpage.sgml.ex @@ -0,0 +1,156 @@ + manpage.1'. You may view + the manual page with: `docbook-to-man manpage.sgml | nroff -man | + less'. A typical entry in a Makefile or Makefile.am is: + +manpage.1: manpage.sgml + docbook-to-man $< > $@ + + + The docbook-to-man binary is found in the docbook-to-man package. + Please remember that if you create the nroff version in one of the + debian/rules file targets (such as build), you will need to include + docbook-to-man in your Build-Depends control field. + + --> + + + FIRSTNAME"> + SURNAME"> + + January 8, 2010"> + + SECTION"> + michal.palczewski@comarch.com"> + + LIBFFQW"> + + + Debian"> + GNU"> + GPL"> +]> + + + +

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%0DV3?%do@zLr>#q=kN?Qmy?#h4O$~4pc6K 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�nNKo_SgKh|%;) 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 Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# filter section matches. +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. + +GENERATE_TREEVIEW = NONE + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = YES + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Options related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/libffqw-1.0/bin/libffqw-dev_1.0_armel.deb b/libffqw-1.0/bin/libffqw-dev_1.0_armel.deb new file mode 100644 index 0000000000000000000000000000000000000000..c76a6dfee69c6816880c3ce6903b23427dbb0fc2 GIT binary patch literal 17622 zcmagEb8xRs5bqh=wr$%^PHfw@ZQHhUV%v6dlAPGK`P*~v-QC*Vs=e>jQ=jT*s;B3v zdj9B{Z#OZYk+X@V0F0@bv6YcMy|ISu;CT4chHwt4fQ{|e1j$*p!X(DsS+hE$V zkM>T^a<$Rh_F>f!?{pGB;Ar*Q>*R!hMRpNo-e-29z?j3nPAi!jyDhtx(L!2=p&R3( zP$jK(Dy3f#^7&1giOnd$R^4uvWkDpTC|hNo&12m&vVttvxEkqA0Z)3-+p?6?q8xa$$PwBX zqtWiuB?n?#5=j&x9^2X+t##vM3RXO0g&A|k8X?!W(mD5Ps2&snmc`YkG=pBEtuui) zn96$LD(fGqnSV0s@v#25t};)oJ_0=*8IQ~&@yi_Fz0r%YpIJP=yxQ>s$uTCkHJp2l z93AC+9b1|z8XpDk*NagXg4Lf)))9Q=RH!Q=y%A+nK2cR6qT+-&ij6CJ6P%}(1IhX{-xVrRYm@C$Ly{0T0<{v+*+^(!? zgi#uJr(7zj%>5N+9Aa!M0)+R>%&Q2>g0nT0mxjTj0N=~8eG8A4YQO9CX& zsJ#8qp&$PV2+#dK1&Rj@UPfv~NFOkScPJj{$9QbBcL&wKfnFNzomCZ4FaEus#@iLym^&$OcQS*l28{x zLchdCJolu)X5(0b*A?`pG!(>Haxw;$!uqMKpLb=B0z3f23rT(5fcxQZ#P~lKKd%;h zGFf5Sohf(SV@O+F#wkY|(vdb)SllXovTcsnHK)g0=!0rWN8-u?d7<`*vjUcA=J~02 zhiyP=)tX&wmfh%Vd$TzwcMbr)vrnIeX`&;mi>nN!2e^Jzy5Jz0CKLjV+|Up(Z!;VY z>-{vD+2&0<4C%Lo<7sQV=e8#Y%NdxfKZai#OjGS)?``l62;)*s-p@U-5mB^53|rc) zIRas8W?Wv}c^pOaF^+{>EQmw?#jt98VKpQHvb7-&^~OIQjoUt1j%n2>=F{3p@(;$1 z(2T4N2kA5+kCdue@S9OfR{F4;H^|ul>+>cS-QF=@6eY^rqE;OGd`3jrxbsoVNbfk~;n)rVx-CjlQ{K3mO61UI zz3%*1>9%$JzS3?bPQUOBf5?-%@4^i(ot$M%c8oZC$9C+~S#^`O>%)z2>jC|hjk)W* zYh6BwqWnEoi?ui#@AMtHh;zRh=~dUvSDqJJ-_6{)-y2VRR+wdZmzzcoguC((!~QjE zw!vx6j@$-l^uAkM{TubciHL`m@|WEdW{<`&hnfWi0@vf0&(3#_tT*)Dvo7j0`QsLd z-}NVrU*5g9TOJDYb0k%ai&{-umz%X|WM>`q!FR3;xox<0Hj~klU;YP#H~Ax#j9r}X z&I4FT$NKQw6PzLdu~eSZ*IZ7U{hfu}e75v3 zp)h!@+h5rJ%||Z&c<+uHx;g3CRNJg1U~@$wl{TxgwA;4I@~b_@_!JXfIvKmdSM?t6`asDOY>ja-fX?yIZrd)>8aVMtyZhmRR5`Nwe~tLkp!gfH+S~Q2ke{t zl-;IHNx1bksp}bxKh4g{Jd;{{m%QF(i8bQ#%t;y{jVw>iP65*W(={lRIv#-I0Dn&; zk7d04T8+m6-*JEeL4$Y2u>jDqe&y}0hC{&5*e>BSL`q-#Ls4u%Yg3=~Kd%J9sQB#^ z{NV(wAES1k_rU$Grp`1rK&Dk!E9~B&?zhGo=UR0Q)6W2O4k5Q0?@z*ymKGfy*WCW( zuhRy9Wrwx++&|OXC1d%ZfHei4=iroYuj8;J!r0tZ@`?|?Qw>Ve`Klp0Mzq{sLto5~ z42?#WzdjOCbHZm{@{}Es4%-VZ2*Hz;w_`xPM{E+kW~a+FTm%kvwYp-M)54yeO)8ET zocf-aK+1y7WBOcAhwGQTPJ2&4-G}iX^1BHK3xWkB`JiU=z`IDSK@PC;j{74TK-_me zJ5&$3{tG#9y-GbtLSB%XzOLs94ETZ)PbEa|TZ2R$&mYraJvU1g=-xMXzI#ShH)-RQ zCviOs_*`|9+$$$|_c*}ym%2jj8I_};w1s)6uY>+ErLdn|k?;dLqXs76}6tP_szRL+l`J0FBIe7(%zz*gY|y>W$3$gc!o zcA@Hq-`u^s2(gWnOQHe=?ZfmIU5ZkRWh@|3he&;KIa3gIH=Nf8J**%2{s~FeEM_WG zNIqJixeBXv!reTG9|zszsN{xeFt|C3Pk=~9%;ve3wqB5-tRE$LM_LyEFVui;C1X1Pb z2zGh5k<|nWJn;b_f+&p;m0tKE$AF>T&PUm-pc@=vzrY3273oSE8fys#oLY+P`2X;T zu{cZY*aiK~TEN|;Uerqn)`@B-B$7YCE@Uhy01h70XEfK9H)bqe#PW&_KV0Yro*d=^ z#m2P!^D5!NC9w`2o&s#lyM2~zv3QjmN-STM_%SR)pQ0O>gy6W>NQ59$bQ;Dy15aeY z79Mp}@Chn7Hn?Xxhew_!^GmZgAP5gicK4Mrk-UBBtxzj7JWm}PxB}`qiOL12qlfdx zkq@Y6SsO{tTVpa7a!JoCvJ9x-xPVHed9(A*(;}k5kk^DWxCgl{4C?UNSBMJ)MLA)s zNMr9hS~+(0lr;efn+{>YgY7(B>^ykLJ61cH7FYp(U7Ula3&fpx?j#oEQvFD5WuzN~ z8P)d@JO?T7C5RVd5KAirXCMp(wWY3v?j;x+)qwk+-cj-@uB1++>H%&Y;z(cC242S} ziRa_Td$|8Pp|BBq1G2)Ra)Wf_FD?ytd1eN$g!zz5(S z%~K=8U2;)`>p7vFLI!C<{IE#P7Yd$?+t`D*Q5zfsK&F|O@Cp?(-vU9}6RC(v5VHfO z-=f|9TUrz(q*k4-L;_qFy)PS&8L;8Vpeh=On3~X{-uGa{$WoAfIZvGY;SIf`%0=Me zcUULI?4jgBT3oP}l&)N89(%zS5GcW0As#;m2J8tpU?|}1+cj%|HsTm5Xw|5RkXJ{+ zBsEwhiLH3=M8s^;H0v@un8A2ARTtr2CD;4N$A{s&kT#`e-e7Pb;6cP1EJ}aFSo#whB`LwuV8=wa^AAE}Dn3#+_P-~7gs8;XIi^8{F|CSYP98tVv@BCjvZ#(mbqKZE|qp4$H!p;>x(qalofs4inVV~Z8gUp4OWM(dbmy2patOS7r zX*~8p28db@vIrp|q2>ay*M>2f@JzRw$wbie;dA!)>;9N_c1c(n>#L_v-}#g&zWojW zX6trDKzM0j$G4u{h#B%AUW`a7%R&H>g+1`~#vw!qcJXK^DR(p8(zKEO+<6yMu<|O& z3oaegy{@k{Z!sv+ibJg&w~S~?Q^L?>ch9J5t_}TDGL!&g@^{w(9it_7so9P-jH1@% z116Ibst6T0_XxpV;N+REC|v0K?jV+kke5^wFLyqdQUU0G*bsuo9}YKh(a&1H<9-;c zwEyu?)qxn%!s}@C)pCBNdIv{OeZD+7MGZaFNm||a5W)9|=np%Bq+yu_9CqqRHbx_b z`UM}hU%EkskXrwuHU z5=tU0pi*3%w`!xKVe$Mh-Yrwf3z8`B!E$j22XiozFu1zB>WKN`&Mm^%b)HxiB`r` zfjI#d#v7@T2vg~zE%LX)1=Rf-_YKh9kUS7%Yer5EB-m6?(4SBRxJ}sp38DTuT?W*r zb8^Ce11>&3!dC%0-~IoEfc1}na&b@7(SWk#syBtFpU=9#edTwj(A7gfOi!PZ40Jw? zzsEi9nNV-Y%tH^gzdNcnpkA_cp)}-2+dp!gkjCo21+FmMJIdv%uAxcc7Wl*a^!XQ^ z?R{_CPG5fWu?~ZG27(-?FBsbclLJFx>A74f-fFkr#Qgh%I<#bTTMhleY62S+^dwi! zTZ!_l16CTYvas9CP||ydg!8R9`l|RmpU)wGr%P_MD(=;`-)E|7Gdd-bkjwu9u}o5eD<2(HiUkL%TASa3AC>An-*C`K+v9 z&EF$EM@OlubaY@M7oHAm*gV~g-PS_J*M4GZy?d-(@nFr`fp}7Q7g<jjU+Oc)I{WUIcuoG+PGLFqd6{b@)UFbPUuD^8tM%t~Ur zn5)8t&JE5&c0Go??~P{*+9f%xY$m|*pR`EaK2**ac`of9e%QtCp$ZNt;(m}}Karws#6QeIEshMaOylJ=m9z4NGh^+{x9E50c z=fH%(+j3BoD7-xmmIGHynupRtmRP1;s2~ZpBy$q9A&@fS4CH#^oXM8sK4b{ub@qdF zwHqWuy)lj`;1Z5S>~~n82T}xo4~IKO><%lQgI`tbgalF|PrzoaD~{r?V0z8wdwBA9hU(2x?IxFm&7^iGU)hszx4SOn z3}u978;tm^1qb!~ooE%SlgUyzSrYCd%CV}Wa5c}*La(VLUprzlc+vog$YtLzk98}p z%P>!&Vq+nxmto1+8}MopX`{JtWfun{?~M_6V~)zZl3=#HOadmjHZtLcFErW+n37Ie zwuTULwS*dP#!{Dz6+*RHY7ltHp?Jt$M1gd7NTs71BCIwi<5Vn4KYIU~Fa#koPrFn- zQ=^VV!Bvq@RF1()sRDo$%+prT_+{h{ol{?2=31DNoAjGDmyDWBv5-S2kC!r)O~L z_TVf8V>KJ5*K6x;#C0W>kgOLDIeh=9F6cp+WJDQXBJC8$jf&$@an?59{;|_qNL{!1 zF&x2!rO*ZffjKUuXwdb!?s0-4_ernQ{G$FC8j5Yd43K<6{7*;3Lm0pL#?u?KUF?Og z3}0|Ecku@&_aadwIT;=GTGU=*Ve(nSZ3upfB*$(lW>QPq4huDyZ1t<5_30^FVrk2)VeL-uD3be1X9*?;xZlOO}qd-!RVd}`&z&Jp&-3DGQ^NsdB(W@w z6_4YisB&HDFW$zC6R3Mhv?=G8SVrBghNztUv-h0j;pu_ zYI?-KqBw_Jx~05|{J@ZpozPvxiOE#l6*CdGkaa3dw%E?)m)O!!vz>Fk)_ZE@TsZJ> zf?Nl*2uCQ4vb59`Rb^Y`CV{51gjN|K5@WiF-mdFR&Eo3Cu&d#sipsGFz#g3mEaf_- z3T(dwG!Q52Qj7_y4G*G0F0qCi56<5~Kq#>@NdzB~Izl`E4oW9S2~nmTy=n<$z7#h| zlX@7(ZrFS_Ap}k?PN`D(?rH{QuL@>v;bKL%UMGzD5erPCl8gCuQe?N`l}zz)KY|0D zz{-V^;5Z-It-Bw`DtbuF|{IqeTXKS;(l)Di|GRQ*36G(f%SFTLt41Y zG66Dm0g>E7=I#Hfw?#4OU;{4CXp$A>Q%oW~X$V=RY&5Iw&m@1jWx2D($zQ_rA|6;+ z--4R$&cLcjky9|c>kzv#$gdyp--9jdPr*p>i3m5(aW=SLpyaO;!pVo)OpA`M(&5Av z^kkbYV^~t_4}8tcwG1T|Ff7N9jz$L z{{XDwW+iEm8IJC*{SvM6=JyVLP}z(e!hp?L-+b-VvGt1!rtV&?Tm?vv#1^}`4&R;iL@uAFf`ixjWO z?ZQ7coAA1mIG-ec99c?#?B~1c$Vo&@b*p5~OLsQE3B`Ax`wjr=G?ype1+8&S&w#eq zfU9ppAHetypz;6TEI|DFNhlWgJgpHNw_guo{_;hE_rqGT37FjQh!B9P{sUBc^_=Vi z*Sz)J-hbY*C46ghn~vET7WD1AhiJ0Q*VEafo$qFFrdIOfUElUv{96xQS*5iC*nwe_ zO=v8w0E0Tk-FzF42dLNznsMvQ`cwepHkV=6=-yl@Ojt3612HSy=^TlpIJ-)xx(|)k z**}W)#Ir%-Rg>REF=FozE;3r5V7FT z@*WaDqT|*g$pD3fN_8!+?{S!LyxLR|GP;7)fjDs)H}8YBFy30`@B5q;%r$YQ}uF!XfxrETUxtXBqm2elo`nwYvt5R zTGmBvBSHpY3*dBcaDOD=j;H)GVEVZABK-YF$7}T?pf5w=BuyP@r1$c1Pwpmf?F#AT zq;9v9aYlrp7Xya3{gJ3dKk(tsMxX$MYw2fl`T6B!@RRr!xGl@WD9Au&|PooYWZYqfsBa9gAwi zzss^bpcC@cK_09Ey@p843bUk{uLb1`*NTT;$WPx>A5a>DTiV4VuqxiA%Q#ZU&csFt^JpQI#JhJ6*tkA&tvis~36rcC*Ehf_ zas;Vx7Z(dXxi|<~eyfXvy~9Z#EhY~QB}9zktLZAv$j~)>SD8pz5RmPmvXUW3%oAW4PHLBYX!na6h589 zV~3H;BU3pOishA{G8Aa4W!5ZE(R^k$DK}pEm;hlY9`V|XpWcz61)v*&O=JVsU2HX6 z)2^0gNQ+r-@tYk6PHsv>TW8|g-_)572`rPL&qoc_0&9o}JS{SR4D*@yq<+$g3p=&URnz-XbNeHUSP~;^^_cse`HNHWv)Ok9 z$36?X@Lzi00_=XL&%VuH9?RJPnqLI}3!ekKfR$FL1iYV4mQV176Q$-nt9Mox^LJ~r z4p(dpUiDL_I{&Q|Tfa})*ihPv1D)?#E+`W#Ofox-wpoSV9sho*$~11$A{uW$id8G9 ztbFW`R9ERm9?_r{V#c~{aq%4>Q=$mI?RpQK2+HS|jmxngqh23%K=G=r$8AhfWE!T1 z+Ay1>rdqGB@ldk40L=g#-KIH#c4CurF$yalv!Olx6n*I8fEn@*rk;2X7BqCxV&zw0 zu1ik*2{W!$_78QrV)>9Cow^x~eIL5H68C4U3H&frX=bC>?3|6P>4T!X;m$nEyJXzt z^mur7X_)3}czlzJ38wJw>fIG&HrcfEJQ9{(snyCzlc`}Xfi_%py$;bZr}72NSY zA7{_F=#7YH@1UDHDCV{hyqsaC2-5s`M-EjtR}?*W<#BFm?*P;)BnGhzfk7ZspyN#l zX8%CcDl`VM1ckx;JQVv^PmTJ&S?m1+(DSeu#9}N4fk^X?x0h-o0fSvFZe3rdYsdS+ zmElp3HAL2jo|^EEw>g@F1JU!ye=*4z%q^p^TM2{|bbXP;o$j~UM_R6t<|}=Hsbuy=-m96t9w#H$!8m zMEUI|b5nR@`R;W-sl)E=EwSW(rcVILsZ|!n&}}Io9VspToh9^AoZ(5(;IiVo&Be{P z>Ch*@{qJh#wo1nlewapZJ(bd{;*tt!ZU)d!SGGel+kEN`ngvmlZDb+!ELe%!?%t^$e? z1}%6%DYQhy;9`%0GiADvR+;~@FT>P&D<_K=4)IXbBcMvWj_(w(wg&QxCjQb99 z0EL7P*A+e#*M!z0i54d&>LhtJab<+(DRyESCMp9V`ap?m;uh}g2H@|=YrXs{n$JHw zG-}BV%dxZ~A6cJcFYwhR({TW@HA%2EE50^2im#cdxN~lTiND5uDge) zX=-s3{oJ)A+$6vi&oGPB!4=!U%$ReU=uT0A*JPN8?a?^(UK|Dq@+%5S+j2N6A}1@U z<2S;LobIn~(!X01g44u`L^tl;At`Uc;up=5THA+=H1@51>WaIWA9vr#m#tgYmsz$qE& z^a{_XLKg~SEv5)M;&Ub>)lfM(tY$Uuk@mQw0kIO1PwVwcZ)bn*D(Ru5aH<(aH;RZz z%u-+;yP|+m;1>jNGBEwc$GvW zN~a2nFX}Dc!o9#qa9v2=3t+=T&oenrFe2`<7ibP?`iqRh-|IlaR?ekFe~z~V#v+bd z2*5)GKotfb%T2VjIq@mS1XZ)AmK4xM8j_^7P{CQ$2;$*_(NRxX`1F~ncU~G$GJ`ij zv|rz;tb^E!Aj`y-rlYB@af9XIk-O#tF0!021B77+3OnY<7B3}B)kD*5mm2tXf}Qjvc5>#1z*?&^nBSTt$N zQ(%D4KzJd6?PD%6>j}PxADU^BR0P%!U1QlK=#v}1a!NSH8>0WERgY&n9$iuk1+g?e zcW*dSJVUpRBP2Qjdo1Ab=@Kr}T&@Qpyo(Js=!S9)flXM76Y2Ugfp|k<+PRD|mOD~DD#K8IxXiYF0HWn)V3P(Ifi6!_+67JmNO%KCf zTZSP_;?s7`)J55EK7&j@Ei-3IKpsedB#e1WXOAtA=qbc98YCO~Tb?OK>1i23r_6YO ztOkrsnh)we+{~T(0h7%_`%&bRgRcv#Lq)PCcWwVW06W(JTlg2>P~M5*2&TLZ%X?NE zpfump+xK(c+{|U$7f@lm3ut^HwD}LbFI)>!(+`nK0@2RL0*%?zbIK!l7`S)OqRvvJ z&iRo2l569JU@zit_c)&QXa4jDPMdOpP)*k90Y=q2m=lC~trkstgrqE8PIK(M;Lz!o zBl>&4;Z*0h&Lx~c`+H~Wm0@cV2$9{ySVFVF1c|btV`#rS@!0B*ga_jTgATjX+x>tJ zu<#b_H#0MJ?Qq8|u{rgT7}X`z$2Kk4O3zqf`^ax?mr%Rlu5nwgtD2S#*Zb3ES)w!? zuxbh^uutg&)?VjPsDZr=4d@Mu$G}BHjP_`p$v%oW^Zw^_mA}n&Xfh_~VpS`({*I+M z>POPn;-Ka9z6#l+s88;VBNo(XGT$`CuFmS+V9LGSkU^F>e!p-e1fR`~mYU%l%YMM3 zvNBi6!kO%ZOChd4k(-g64~yQm)ifLCmsr*l@2Ko1hT94bWa3#1SkpS)LWeB=hg2f{ z%LmBX>w%TnBDs87wOlZ#8=*`?LN1G2D^$aJmZb%!iFE!bTS+ku>z8~u-Gt{J9DC2l zINMqFDpN>}c7}05Zh$9RVd|0ML+oUY$ayp6q_lR0tKS@lIlOUKSveKU-y9U^Ds|jP z6+2#?7pa}<$)P=2-)Z{Uo*Y6}l1g){yzUB?7TV6m(0Mq?O3eLjR0lINqN1Bdc>^%- zJ{EFi{NTr5@{1m4X`S*%FZARcF5Z?>D!m2L%-Zz7rUocFtKrOyQT^6a8fB+NdsBNj z3ZX4oU~sW%U|JF5@@1BnHOq?YPp}~XD=Vq;H6=e2q^(?LC$i9GY*j*xD0@sS%nZeRP6-KN0Nx{N7flD}oele56>s&QNS)(7;jbC;(1Ql-T zGYXG-lUi#`PY*}Tn<4=k2q`0JnJ`P{?y=NDTH8YLv{8kqF??b+69vsH6;C83q=<}( zj6;}eBH3l&^{=|r4f4F6Hgs4|_lyi_Z!SmM2fL=uAVLl-fl*@=j$OPnk{I>%sWTQg zI$%uMs+ps#aV-P4Y3ouyepv5iK-5)ala4&6J7Ju_ItYeXZgoX3K3Z%?VU zHggBEnq{iNgB?xAJ4Dii&DYN{h_64Aw^NsTf-|`P8jJ!|*QRPtz7tm2eE`EdfQDDW zt8c{rz1c_qDu_Zq6yXADdMoaC>+*=-QM(n<2jQF$Ly*-u`J7a+!;j?eXi_pIRV#jk zZr;hpufq;A@o8!kc9e^_W3tY3Ybh!tWq1`F4COIcNwF3kjl~pc+ z6+b4|&6cEGPv`NP-ob1r^><^KFK#HwN!^dZBH(r09ssN-c)AGCP&}=_1guRTtJMJ7 zKLY*>fQDy4HO77tIv`D^{6KK=^S0gk^I+^etN4Cxxmo|h1V)QK|MWK@;`Y7#pK0&q zA^($gpqq-Z`75h%oB~e>ik-hMJZ?;NES(O{>6gRwhUEC>tSrxs2XKoq63cW%Qpe0Mt3A%6~jeTxKr<>VDS#3xao_yWtr7jcx_bRmyK=J0g1HYZh#q2SniQ#Zugl8d3Zkg&rlmqRI5E^SWD`Ld( zdK{na#+*9WC}LNY;Od>vec=0R2^#TIi7aqR-uQ7RS{>(QK4PG~Z{}X9n2OF%i@z&P zoA^l)gL%7%9cYhA$wcR_+*giMKrbSFG$y<6=2`CSCZ%^= zyDSmtsC)j|Hn!D7EZ9eXFDTM}3yJ80>KXon`M?4HeQRFUWdGc+4zT$z>?XevW@891 zN^v+^2(gf>Q>37T7RCjBCDT};-4-GLPCZ?Of>pS4x9eY==_1P2I0$MT#%@&3M>7{+ zRm@36))XcF%w1%^DRP`6z3mo5Q^Kj$Q=2=AsNKURu?#Dxor}&cBI;7ugF}a#qGHUg za2S}vtz)&c-w~TN>X7VBvAzJDjkTuN-81JnT){{_OfAB9yC zzKd;zxA~{&`poRUUd&eacF>BAE{uDPU+S%%5xT#Y2VZWFPRQ~%-pyV_U!4iDi2K)( z*&yndtg`+U){m5by>E5@I-H2+QxsJ<1Fb6aFy;#7I3HwCa;yIPTX3cE8_D!x^+C;i zSSK-U4CvAotd@hVn1IRuE)bgJ@qyONOfZ)IW_BkzU4B~buM#2Lm(z%qXM)bZBTR{- z&E{iRI*tcuyg-XC?KPY63j=OU=RnK4&pM?#(EZ?7Z!e6Y@ssE)2E`uBp<>Zt=@Og; zO1y9lEhUa9h$fF+J^)B;9!;)XnX5CF2hP67UXjNR{ESF&EZ`VjBY#{!%%^!|_o8q4 z!Q&Q;jxO1W798;%`)-na387I;x+UJ9o+nnRg$bz^uiLgJV@Eog_PDXYjwmwHDE42C zYfP^9$JWBa`KIrlBvu<1R7F{z9Dt=^N{*N_+*Md%!M``v*v9vMM(vvhwa-g3%tlTP zs{r4m-x(r}lU8#gWvg8s%=Br_tZbKH=V+mn9^{J;HjF|_?&rX2O_3Fs^ikcBzM4BC zk&j(%6c0gPe#5u?S;bWIW@gJO`>1?zZgRA`XexEQ+*wg=Ysy(#V(|Iw%59Z4iB>Hy zB%PJGbp)gwB+YKtg|#T+jDgEO(i*ynXc*ed59fZ5vEV(D^eIFzj8}ju+nTi?6H>1; zL}<_EB>A&&d@HTYvs09D8HF0-a6l~+3(pdjDIj8w5?q~DL6Db$&d}HZHgQ?S1Rhq)~lM2%5fGkv>622&rx{ip2#Q)WDuu#@gQEYP@ zj0)>X2Sgq`> zcSxY@0aRl(D5}Zci(nxL4hjQFr&X%7(TnI){;{KGlTU2ZfRM<1AS^{AG}qnU)9QSX zXc*Q|qsW5632n*bI(`Ipmo$+J9B4t+R@8!Wia2gjm=$aq@Epo0@A7)oVd1Ttm@6rU zxPd&JDmZgDeBK@xn!Pbg5fLe7Bx@xw@j3_ftTFNZ6TcxP^A#WTFuf7YtS`T*Kf!c{ ztG&LdF3dRH*rcyPC0%aE=!7OG>NvGYmI&7RP7gZP?#MPOjZwm9aFf71B)K}JU&;t% z@HPllmQUUagrvc73of4R?eP7g&hne$`6)gQnUa*Bpbh#k{2&1Z>F8}ba{xhyQu$K@$pe!eVNnQ2>K)YU* z^FI$Q|ChrX#uflcJ5&8FUB=PhZm^MVJV!)8e zUGn_2s$%QfaJ8g^qM%JSgF^u5Y^40Nfq&z~-)6=GrUS(SsE#X}FwH6HAQGp?Zyw4z zOEz_XA>7BgWzz8w1P0T7TdLW;vg;6LVi+oG^C&EY=}T{9iyZeby#3x6AwLmV{)jlG9f<_4YA1Q2FzwlhJjuZXOJ zreQVVu2RiPzN3U4aY<84EKWz5Om>BD(~P*s#IIdGj8nraelo(9)B~(IW*2dL zJU(!5gaV0HSN*L{uiKLbe*E60lEn2!DbCxv1j{(^e-CI0jXuGk)AkU1VR(RP%iJC?=)E?% zox6kPhjmDuP#OqKDvP)!891#UYVXBc^QcRt8H6TI8C%Kyp;*W#aR38fVdMU}%ex)~ z6CidoM&T6-sHy0fbn=rIN2clT^%!&q9$c>S4h_GYb(PIM zfN(AHl*vtQ`i()hWzECxasENdL4NLf^ZXos zj7hBi1=N1e{}%*oKMShF6`%H5xCo*d8Dc-HpA*=>x8e+KVCav!5s*aqPqx_m?Hpaa z-2NQi{jbva<%6Vk%Ui-Z-)b_Y2#*YU-|w1ThCP?%9u#^=6cpTH0X2-M&9|>}9N(QV ztGCq3s2TkMTMJnYPe;c;cCHB*7Cy5j=9}-a6&W-(zgDfys=DrNdFu%ht$G(IIY)g~ z+6->5T5;>_OT3b+n|1XM0HZ$F&JEsxXC%@jT6)U?M#Qb5hrb$e^Au5NN!o!J?5_qeHkvALe#Z6n#C-O}4G(SV$F|F-jC zcTiiY@uKZY@WVh=Wz+49R36v60cjljoh4p%N5K|8ilEpJT2Ei;~yta7K2 z-7t#MJ>EuAlBAVJSs~j_3Ukti-)Q4sR+qqEBW)B1 z38Zx(22x(5%YSZEknc;CQSWip%Oa`cUsE2EWz$>tgK3pjSOU?jXvAYXr(tT#oXAjv z(BDT!jL-tjv3ku_n40HrfDlwV@)WxCQluB2|0*5c9d-Bz$NUApq6ny45_H!;UCwInswSy^9=4qr6w-C5wdkHehdD38^S9^?06&|;DovrKDPk8d0 z_!-*?)qLvs^N!bmhi7X?uCmVw0}IO%HVaB0r2s-7Hw#1$y%8XjV(FBgC-+wzudd~n z(dVurN+2}qQh8&}0R}TGg0fLfgPkSz8OP&|u%dT}T!lxOpMwloa&N}G4}IGIhXj?xXjv?C$q|2f-TeKb z1Rn>)RJ!F+b_=iDcSMT3bQ5Td2M=4^5arDNp5kYu9kGa!K%9(>SWYSaGR8fCJ(AWo z4M*Cf2-JSzw&J59CMub--zljtWdeW~u$)NG6WhLu(^Ayv?WM71+j0KaWq^IgxXny5 z4%JKwVoG9LlKIgnhZrf@nF}|rVOn*HJF=MA zUKXs}S8OR&rRu~G$4G3~OA-1}fxO-Yl*emMVuW5|wH1#~0~K}lJ6C*HOK~t%?!@LJ zZH6>Be>v!>d!S~?=fkys#|kfhK=z2|^aHcby!*3lVqfR`=-8=(%#L@SsczN2?c(|- zqfCXZni*BBTYuAHSHB&1n`exFT(*R-V2jNOI=D|dlHqHKmC$o#iCCL$EUbgQ^Bgex1IAz|08WCM7xNj8zmxRktQkwxjbaFcFP*aI)NY*zVjPESWG zc_%IN3RBCZLX_IRSfjUDFXFGvN4ouUXBYzp^1OW zWgwiWVlE0~ZOL~}-|*aa%ug;^mFsfkcwycXJcOHQGE`_Ptj2ODY=v0hWwh{8CeO*Q z$ziR9hGZ@-u~Uy9V==B8BCHvr<>N?KXF_Yc_*Mx{6(en=MJ*a~3p`3!nVw}5KGCk@Wt2lmW?~Nx zP~~IF5`zX3pcnGb!5SPI;~%DR$)_f#i0gNRVK-v0v=f=S+P~~GcQp^uy~%3l8V?|H z@{Mo~H;QI_#SpL>ls4(4xpF4(Zx#BE?My(mB&cI7AxS%~s}J8*D@V?2W>Sw01GSJN zZ#t_Lax2$jBeh%)&TpTMkdo*(tocXB>-7S0ka-7r-U2QFtn>+l#f-OLh@Sj|9_PK6q?F-Zm_@=#rF=5_*yYW51&t+D_F+9-@_!RC3*jz z8eIe$E4}ApDG00>C&p`mgIg4e9G<`qgDaO3NM!f(1|KvL=3qGBrm^mK5%=Ag(;O!| z)s;FSu3_p=p0L+WiRuP~NRPljCO5BCk*sV-F>x4-F4*f)$1#gJQLvhn9PznXaYw!R zf;VRO_T*zz@{(yfBKwd^*DRPMLugWnI$FrSS0p*hO&IRTUxhn8Ohn_+_qd|KTKck( z7jDd~fxW9I5uVYU?c*^3CB02e&YOR=?|Qqxp9U{K8NC3r+klP#t@&IR z1*o?{CitWeY@P8W+(-bvVpr(8K2fT1H{N=jVl2^5k`W=i)ad5>mS1ahqJ||bc@c^A z{&GwJl8rei@F&{Kzn@(@iE)reshrQpgg^*IA1z@8vqMS-nzA(3nuGQGEg_$On=kE- z|Znmv-=ZQNAjEb#57dVK&!~X7E*A`#-$W{x5ROZIOd(s zzk`GWIH3(MnrSMtZTy9>Y+0j0YR}06X@Ix@TvdOsc=}c^!SH2b$#`z?|gd8$dE^aGVB zwd&hJojbv~4)k3d#29}r^OI>%isAV{5y5aOtWB!aIK)FOou_pVaLhbBmZ7P+%3dTm z9Fq*|-pChH0?{7O17&9%W+$_x59wemZ$K7m%XTO;U2uE~Y6qXR9}YJ2baT-2+c8cD zlwLkqy#`&UipgV6y0C z{4)N>om}<0m%J(ue=zkJR=A8<7o!s2U2@F!+hx|lsRXoUo@JLm_GZlMnJSXWrA#$U z-gy=~Crw%DyeXoJrh?jS2`_3iGbh3jLZrCw=;{jdv^^{#iIIY%o7A)Nd%CnBFlnL{ z8kY%;<)Umy2Z0msg6ZnIASY6tDlU7z=_&i)tJ{=15K zeg7ZHep1QLlKG$S)35-&A67`f@y%)gAZ52U;Py7-=hWcCzV4;M9&lpt(`xXQF@E_o z)c^L;-skeB@iQ*?E*bC^@FV~J`nO;2eHUh6O_kS1sK6(YL8349#zZ)O=KPGQ~ zP6a=2{Xae8`(8Z&R#sob0WT?>mm&Rk?SQ@Aj($LZ!PQs)8zJE1*#Y4baGfFWewefS zj#%(@u={q}ukrTrgxDMKcH!}3bBg#gBKStS!}v{qnfaIb1OmQ2(t;xpU3YxX)M)>%?8vaa959L=nBE!oQtjWFAB)#|-5L3hcy|0H zhDY>9p>T{Z9bG$wp1fhfk6)dv*hR#qN4`8y!h3M(<2Qw`tsb~~pZ!a);r8p@+Ts1Y z@h(Uozv3UG9&2v?kDXXKO*?h@rfs2-_qFn^>gDd+Zv1!jed1s7YfIes{%2lYTY7lT z|JP;z_RsG(`1GMLz9`RmPquSbB0Dd~igjOqtvE5i_?6g)y}MpcF5em8k;l20gRNHo zj#KSY?XOc=^QPZPI+dIDP+%F`*M&PP8F{IjjP56&s@-jnn_B&Bhe(Z~pThLbR`b5B z*Uw1|KR6@WY(aHOUrJbW_sIlKg9VIFN*DiL^mEheD}MV*;;!F%d&~3t>D-`akDmI4 zL<_3bpXiafbW19Rq3Ll|^?O!_D`nE|KjtaevD|zy?~1kT^947{viw$GduR47PVVY0 zzt^d|ufDl5U3U57jk`_zj6aw0Mp`$XWIJ=9Wm;vPgwo^L2DhyBcKn?KKL_?RTw!lk;Fvz=u0q$w z7lmgFKj_Z>^!ZfQ&PRLRT;Xbc*0Fx&okJ(z+GQ+A>Q?5LNcplNL4a%KZ<&{^?{7Ft t|68QAnen=TgzfaQnTM}kyqvn*;#U9P8$_c&F}45fpENAk%@D!F003_?;y(ZY literal 0 HcmV?d00001 diff --git a/libffqw-1.0/bin/libffqw_1.0_armel.deb b/libffqw-1.0/bin/libffqw_1.0_armel.deb new file mode 100644 index 0000000000000000000000000000000000000000..8f7acbc12c3c785a0e4e5bd6cf1b97f44aa1cd61 GIT binary patch literal 300234 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