diff --git a/demo_r2/demo_r2.pro b/demo_r2/demo_r2.pro new file mode 100644 index 0000000..b2a09dc --- /dev/null +++ b/demo_r2/demo_r2.pro @@ -0,0 +1,64 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2016-04-01T17:38:18 +# +#------------------------------------------------- +include(../common.pri) +QT += core gui + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +TARGET = demo_r2 +TEMPLATE = app + +SOURCES += main.cpp\ + mainwindow.cpp + +HEADERS += mainwindow.h + +FORMS += mainwindow.ui + +INCLUDEPATH += $$PWD/../include +DEPENDPATH += $$PWD/../include + +RESOURCES += \ + demo_r2.qrc + +EXTRA_DIR += $$PWD/demo_reports +DEST_DIR = $${BUILD_DIR}/$${BUILD_TYPE}/demo +REPORTS_DIR = $${DEST_DIR} + +unix:{ + LIBS += -L$${BUILD_DIR}/$${BUILD_TYPE}/lib -llimereport + contains(CONFIG,zint){ + LIBS += -L$${BUILD_DIR}/$${BUILD_TYPE}/lib -lQtZint + } + DESTDIR = $$DEST_DIR + QMAKE_POST_LINK += mkdir -p $$quote($$REPORTS_DIR) | $$QMAKE_COPY_DIR $$quote($$EXTRA_DIR) $$quote($$REPORTS_DIR) $$escape_expand(\n\t) +linux{ + #Link share lib to ../lib rpath + QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN + QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib + QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/../lib + QMAKE_LFLAGS_RPATH += #. .. ./libs +} + target.path = $${DEST_DIR} + INSTALLS = target +} + +win32 { + EXTRA_DIR ~= s,/,\\,g + DEST_DIR ~= s,/,\\,g + REPORTS_DIR ~= s,/,\\,g + + DESTDIR = $$DEST_DIR + RC_FILE += mainicon.rc + + QMAKE_POST_LINK += $$QMAKE_COPY_DIR $$quote($$EXTRA_DIR) $$quote($$REPORTS_DIR) $$escape_expand(\\n\\t) + contains(CONFIG,zint){ + LIBS += -L$${BUILD_DIR}/$${BUILD_TYPE}/lib -lQtZint + } + LIBS += -L$${BUILD_DIR}/$${BUILD_TYPE}/lib -llimereport +} + + diff --git a/demo_r2/demo_r2.qrc b/demo_r2/demo_r2.qrc new file mode 100644 index 0000000..efab479 --- /dev/null +++ b/demo_r2/demo_r2.qrc @@ -0,0 +1,21 @@ + + + images/lr.png + images/logo.png + images/folder3.png + images/new_leaf1.png + images/logo1.png + images/design.png + images/PDF.png + images/ZoomIn.png + images/ZoomOut.png + images/First.png + images/Last.png + images/Next.png + images/Prev.png + images/Print.png + images/FitWidth.png + images/FitPage.png + images/OneToOne.png + + diff --git a/demo_r2/demo_reports/categories.lrxml b/demo_r2/demo_reports/categories.lrxml new file mode 100644 index 0000000..e1c3fd4 --- /dev/null +++ b/demo_r2/demo_reports/categories.lrxml @@ -0,0 +1,227 @@ + + + + + + page1 + + + + + + + + ReportPage1 + + + + DataBand1 + + + + ImageItem1 + + + + + DataBand1 + + + + + + + + category + Picture + + + +
+ + + + + ReportPage1 + + + + + + + + + category + + + + + + + + + + SubDetailBand1 + + + + TextItem1 + + + + + SubDetailBand1 + + + + + + $D{products.ProductName} + + + + + + + + + + + + + + + + TextItem2 + + + + + SubDetailBand1 + + + + + + $D{products.UnitPrice} + + + + + + + + + + + + + + + + + + ReportPage1 + + + + + + DataBand1 + + + products + + + + + + TextItem3 + + + + + ReportPage1 + + + + + + Lime Report Demo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + datasources + + + + northwind + QSQLITE + ./demo_reports/northwind.db + + + + + + + + + + category + Select * from categories + northwind + + + + + + products + Select * from products where CategoryID = $D{category.CategoryID} + northwind + category + + + + + + + TestName + TestValue + + + + line_groupbandheader1 + + + + +
+
diff --git a/demo_r2/demo_reports/change_item_from_script.lrxml b/demo_r2/demo_reports/change_item_from_script.lrxml new file mode 100644 index 0000000..2e79dbc --- /dev/null +++ b/demo_r2/demo_reports/change_item_from_script.lrxml @@ -0,0 +1,211 @@ + + + + + + page1 + + + + + + + + ReportPage1 + + + + DataBand1 + + + + TextItem2 + + + + + DataBand1 + + + + + + $S{ + +var selectedItemBegin = '<span style="background:black; color:red; font-weight:bold ">'; +var selectedItemEnd = '</span>' + +var customer = ""; + +if ($D{customers.CustomerID}=="ANTON"){ + customer = selectedItemBegin+$D{customers.CustomerID}+selectedItemEnd; +} else { + customer = $D{customers.CustomerID}; +} +'<span>Customer: </span>'+customer; + +} + + + + + + + + + + + + + + + + + + ReportPage1 + + + + + + + + + customers + + + + + + + + + + ReportHeader1 + + + + TextItem1 + + + + + ReportHeader1 + + + + + + $S{ +var color = new QColor('#DEB887'); +var font = new QFont('Times New Roman',26,false,true); +THIS.backgroundColor = color; +THIS.fontColor = QColor('red'); +THIS.font = font; + +'Test'} + + + + + + + + + + + + + + + + TextItem3 + + + + + ReportHeader1 + + + + + + <p> <span>test1</span> <span style="background:red">test</span> </p> + + + + + + + + + + + + + + + + + + ReportPage1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + datasources + + + + test + QSQLITE + ./demo_reports/northwind.db + + + + + + + + + + customers + Select * from customers limit 5 + test + + + + + + + + TestName + TestValue + + + + + diff --git a/demo_r2/demo_reports/demoReport1_report_header_group_subdetail.lrxml b/demo_r2/demo_reports/demoReport1_report_header_group_subdetail.lrxml new file mode 100644 index 0000000..e036b0e --- /dev/null +++ b/demo_r2/demo_reports/demoReport1_report_header_group_subdetail.lrxml @@ -0,0 +1,632 @@ + + + + + + page1 + + + + + + + + ReportPage1 + + + + ReportHeader1 + + + + TextItem1 + + + + + ReportHeader1 + + + Lime +Report + + + + + + + + + + + + + + + ImageItem1 + + + + + ReportHeader1 + + + 89504e470d0a1a0a0000000d494844520000006400000071080600000023f9067c000000097048597300000dd700000dd70142289b780000119c49444154789ced9d79701cd59dc73feff55cba46b7c18eed8d84c1b6c02c4636b58ea928d8c609b0bb64c3429104ca5420b001c292cd3ae50d7120091bbb300e570a0c2609391c0889b99c1828b0036c42488c8d8d1cf9968c25d91aeb1849a3397afa78fb47cf48e383b2248f3c9a91be5553d3d3afbbe7757ffbbddfeffd8ef704a780dfef07104208745d17a73a7e1c83871002c330304d13c00638e503deb871a36bf1e2c5771886e1374d5328a546ba9e630642086f2010f8d3b469d35ec7e1c2729deaa44020e002beee72b9ced6340da5d4782b49135c2e577e28145a0b6c077a80e82909e9eaea12b66d8b6834aaaf5cb9f2059fcf67bb5c2e4388715e868b4824622e58b060e6a5975eba2810084c00a602fb180421a2b7b7570098a669ad58b1621b70180802d688d63ab711abadadfdbc94b2ce344d17e00524c0295b4812524a05f402078056c0601032681c274001d1d9b367cf9152da899e46e13c4b31684212308128104e6c8f6378b04b4b4b63272b182a2149a894cf38860129e5c9f79fe17a8ce31418276494619c905186e1ca9013a094e2b8b1c9b806360c199b36428410ac59b3068fc7a3b5b5b5b9bababa4428143a9ea49c47d23ed5d8d8686fdebcd92461a31a2cd24608c0c2850b7d555555cb84105f554a598ccd56226ddb8eb6b4b43c595d5dfd108e5818f41021ad843cf0c003f1bababab57bf6ec79aba9a9a9c2300c4f3aaf9f0d104208cbb2ac8f3efa28004c04dac904215eaf97b56bd7aab56bd776242a509cb8fe586b25c9f1591c88e0989804839427692344d7f56465e240178ef5722c43e190613104e19e36426ebdf5569e7aeaa964454cc64d2b082150437420a58d90a79e7a0aa514efbfff3eab57af1e6bddd431b02c8bbd7bf7aa1d3b760cf9dcb40af59e9e1e317dfaf4090f3ffc70795f5f9fb42c6b4c12a394b21b1b1b3bafbcf2ca761cb5f7cc7759008140c05b5555f5359fcf779bdfef5763d1bb2884909665450dc3580bfc08a7eb36067b7eda0859b06001d3a74fd78195c033c0598087b1a76541c2e721a5acb46d3b309413d346c8e6cd9b939b16d08df356b8187b26faa48a6bd8b6ddc710959bb476590c6858a1c4672cb68e54d864ca7492625c5443ad44aec2e7f3118b9dd431f8b148ab71f1b5d75ea3a4a4c4130c06dddddddda2afaf6fccb590847151eddab5cb7cf4d147e389dd99d1b2ce39e79c7ee3a26ddb63dab8d8dadafae4a38f3efa50625f668c8bf7dd775fbcaeae6ecdae5dbbde3874e85085aeeb1e31d6ecef806ddb564b4b4b07703699322e161414b06edd3ab56eddba2e1c197214d0d275fd2c4252cbd2851091841b62d0481b21e1709844450c9c40ba1ec6669705098baf52ca66880185692364f7eeddcc98312359199381e0afb186fefbcecfcf27128964c6b83863c60c945284c361d78e1d3bdcb66dd3d1d131e644881002d33469686830972f5f9e941d99d1b2745d777b3c9e2f5e72c9255799a6698f455b168e96a55f78e1851b962f5fbe9e449ac1604f4e2b211b366c50b5b5b507dadbdbff1608048ae2f1b89b2178cb720022d1428cfafa7a1ba8648881e9692364e6cc995c7bedb516b0056804ca0177baae9f6550802ea554b66d674686ecdab52b591113c7853bd66d59966ddb0619362e82330689e3a8bf63a5ab3a1ec96e3a738172c761ac47c60ffbdec7637b4719c60919651895849c247226db9403c731348c14f2919221a7052104adadad1228080402aeaeae2e2984c80a992484108661a88686065d08116588f274541202e0f7fb27e4e7e7ff72c284093312ba7c56b49244d449a4babafac96f7ce31b8f3030141814462d21f7dd775fd7942953beb67dfbf6a99d9d9d2596656585295f08816559768a3fe428d94ec8d2a54b59b56a958993131f05f271e45d56b4129cb19821840867cc1f924eac5ab50a9c9b8ae1bc6182ec21230995202373093b23802185618e420cb9eea352edede93926934165eb2767d4dee2e26294526cd9b2456cd8b0411ac6a04363338e8450a7bebe5e2554f5cc587bd38d7038ecaea9a939b7aaaaaa3012896493fc10b66d5b4d4d4d6dafbefaea61ce60f4fb097fb264c9127efef39f9fc62507609a66797e7efe8352ca595eaf17b247a80bdbb663c160f027c0c33856ef918d7eafacaca4a1a1a1f0e8d1a3de482422a2d1a8d075ddb8fcf2cbfb18620ad7c9b06cd9324a4a4a8e02d700938032b22b705b0171b7db5d6e18c6d1a19c382c42962d5be6292d2d5d5b565676594272d9e170f843e0cb38898e3aa7f1f056ae5c090331c2dd89eb659b2bd8300c23c299705099a629955213344d3b0b48469b848099c01e1c07d5e93ebc64026932c62b9bc848be3c4356db874548381c3e7e324c158bc5bc38ddcb41d2d7df67f33450c3aaf3b0083959ac956ddb9263f3d2d3d9c5642321c3c2a81c188e658c1332ca907142dc19afc1e8c219893ab9f762b4da4a64811b615a1034503fdc86f56117b691620bfde3bfc0c2dfc3d042cb720be924a49f849716e3bdb01caf5be2366c8a8a3d7c420a2a04e4d90a6528621797d3da1aa1cd52e85183d89fdb885eb681380965604609ecee4e63edb204e9214408a46dca7228bc773ee72d9acc055e8d85122e9282a9273b65820fa6158361531f3579775a31af4d29e2fd8e183df7be4f647777d69bde8785d327c48c23224151d9f466d95faee1bfce2d67e6604f15804732cbe36156b187dbaafd341f8ef0649ec66fdf0d70f8a583843501961a3bc40c8b903e7c0acb8058103e781136de4f61a0a5e0dc0a669ecea3f348a67cb290fbefba80db3f33891fe8162fbfda4c72fead3141ca500951000b8ffcc6cf960945bcf1001cdae34ca0e1e1844766296c4b61db0a4b2994022500211002a426909ac475fc30d3ab31694e254f3c5dc7e2a5efb1fcd7fb69c4b167e57cfefb500991f75ccc9485d6f65bdcbfbc792e0a671af914580a3b6e61e8367a632f47767773784f0f6d2d7d043b6284f35c70561ebe73fd949d5fc6e4e9c55495fba870493c9a18a88f0026e5f36f3f9ecf3fe4bbb8f3e9ddd4e3182e739a945313229cf80261c5e51dd3a8f9ce6c7ee4d198e894258e51604b4df5e956744f0fcdcfede783c71bd819b368c3310c8670e68bd719485e71013ea0e8a6f39875fbf95c3eab8c4bbc927c2106c647255e2e5e71098fb784f9da6bcdd47b35a2ba95bba47c2c21791a442de8a140a18744c18edff91fa9e3db9a9692eaac004d424105ed65b37aae7a70d3b35b8334006d4000e8c021248663b94d9dfb2369fbf23eb397bf3fb397376e3a8fb9df9bc36d930b982585f33f0228f372e1e397f2fdea67f9ba6e71c82389c67394928f1d27479df7585dd3fc44a1f6c62abf6bdd1d9e63c800c82b82e90b50776f523d37fc2ab4354883807ae03d9c55630ee01013c46921111c726289ed10d029042dc0ee67f6f2d2dc17b9635b07eb554ad72405727201f35ff92cb70065713b7733b34e2024d5aa1eb811ff25a2f1dbf20f2bca8f6f4b76e104c5d5f7c3dd6fc0e40bd08c3e05f42868c621a10fa755243d8827d39214602b852520ecd1683f1ae5c36bdfe47b1f74f08bd403dd92fc4bcfe6ba697e2e000a4f56f75cc03137a5be95101940eb0d1496f9f88e4772776abbb015ea48dc133cfa8535dd2cb82b71627fe86dd27f3cd4d5779402e21696df4de4608803dfdfca836d11de4af5ace4bba87c643ed703a5621407689c0efa09e9b909c403cef681ebc99b90c77fba044b530fb614f6fe5e5a17bfee59d75531abfd24d74bfa4086eda0ea359c94b8973fe2c0abcdacb0ed810001af46de45657c0a98a29cf0d26c097c18342440e3f550fc8cb3a3fd465c530ab9c125b83ff54025a4aaefe4e0dc17f84553c4b3bdd45fd03782f55240ac3bcedfdb63fcb67faf80420f155f9ac66c72b4db9200d5cf393f1e9c8328f430df2d5973ec511a91c973f58b5fe0b95e83bf9f555eb2c3eff78747ba72af7c446720ca2bfd3b14b804de4f4fe47cc04f0ea65d1ff386dd7201555e8d678fd92f04d6d4b976f8a6e7a2ca11d6fb6a6a6a9add6ef7888713be759858b74e8352031a9726707fa280b3812272508ef43ff8835fa2a0c8cd1382c4a02f8180eeea0e7ee99988f015291ccda9bba6a62636d273987812352bf512b31447fa2b2c90856efc3832243709d9f4cfb826e673b3142c4e2dec3388def5176da3955fa14bd11f9663e7e7e78fb8a12f39f0f3695808e2294502671e2e37d995333228c8b995f08fe54c724b7e985a60d8988fede4ede79bb46d3e8fcb48040e9b30bc64c6e122cf8526a134f9db56d8e178ff1a8a39450680acef4274c570f519fc9f61130147c5792fc0be6f6f6153698167afdbed8e4b29873ce5693a90a7512a0525c9df96c26a8dd08333d6c939038a8c5970de6f38e4ff194bde3ec29a884947678c8eeb37f112d0545c5cbc4fd3b4e440ef8cbe910dd7915fe0667eff0ee1b4dcad1d1ce1582b40ce2019c06c037d97ff8187be3283f74b3cd41c8e500fecaeaeaeeef8b84510471a93f229714bae4edd173589bdd8c4411cdb58b2ebca1952925a8a8d935c19f8e96e5e07b624eef2e8f9e79f7f467ddbea1e10ff0bcf2f427a24b334415db2ccb4b0f7f570b83dc61101bd2a073d89a96aa3c279e3ba8170e22ecdcaca4aef89a78d0c9abee89001f0d9c94cf46afc777fa180b049f48583ec0082ca592839e756ac3e991e6fe338920084659d997b5ebf18aa9e75b68fde88cfe7e26a2958942c570a5ac31c7db89ead3899b97de4a250cf7405001efb147ce133cef6772f42f83dccf7481e4c3da6374ef8a77b780f382c1c07987ec2857200191fe96ebe0a2efb0a886b9cdfff53cb451ec9e3405ef2184b616fefa471f587bc0bb42867c6ba9cebae20c3841cb81ece790ef883f33b7233177a246b85e0bcd4e39afb68bff3cfbc0e1cc27180252775c939648c90e012284de487beb808f9d9a9d47a258f4b416dea711d317a57ed60d3ce2e3e948203b6a2931c5e012e2384bc77f500192d5fc65deea3ce2bf989382eecb4374ee4378dfcf5f106de96827db6a2951c951d496484907f7ad9f90e2ec15be0e6f36ec9d3380ea77ef4c689ac6f62cb9d7fe26501fb6c45234e5044ce6956a9c8a896a5e02c4df018c79111b731df6c65e757dee645609f721249735690a722a3843cbd9b8e8321965bea5899a09c94858826e800f625be739e0cc82021f7d6c2b7fe4aecfa4dbcb4a79b27535526af86fbdfab98f7bbcb9907484b41d919b31764161923e47b5ba1cc8bdad24ed757dfe1a1963e7e9f5aae09bc574d65c9cfeaf857a0b44b47cb73e59effe37864b4cbead2513e17e6bb015a96fd8de55d3a5b53cbdd92c2ebce61d9f7e7b008288e9ae3848c3862a6e31afef57ef63e5ccfd2b0c947a9e5f92e26fc470df7947999468ec662a522e38424a080d80fb6b1f5b9fd2cd52d82c9c71e36d11b82f49678f82403b158394b4ada08494e4283f37087e3c9b381de5bde61d3a666be6b9a447b747a9fdfcf9f3eb3815f3586083010a6aa12ff99aeea8f1aa46d60a8699a3671e2c4e22baeb8a2fcf6db6f374a4b4b6ddb1eda184e0ac1ae964ef9c10b4fbc531cfae3d3cda1f8d45bf7f9dfa9ad2d6a9f397346f7e73ef739dfecd9b32bdd6eb77df0e0c1981022428ed9b4d24288104254545414af5fbffebaaaaaaa3abfdf1f95520eeb414d9c34894fd7fe58b6f7463cdece4eb14dc517959496868a8b8bfbdc6eb795b23cf66660238e5d2b67c628696b2145454545f3e6cd5b98b6eb1516503da9f2a4658661d8dddddd79c0361c67558c1c6929a345a80f099665c50f1f3e5c8a331d949b1c2103864948228c3463537f0b215c96657971727f732a606e585d56281452baae1f8c46a3d5baaebb1273659d11082144341a8d0583c120391e753268ac5ebd5a5fbd7af5ddc00ca00a279bf64cc2064252ca1edbb6738a94614d1c80f34022c07ee00867befb528069db762f39e6b01aae9625185884385373f62413496db24f86a88f1ba39d9290840017524af737bff9cd0be6cd9be79b3367ceb9050505166476b42c84c8bad1ba10826834aa0b216a841027f42ca724c4344d9452bacbe572af58b1e21edbb693339266db5b396a5058580810370c43eaba6e92129f7c4a429a9b9bed8e8e8e8d6d6d6de78442a1024065cb7a50a31cc2e5727976eedcd9c4406ac5a05673d670a698a9022ac8d2c1e42886e976bb038661b400d1c11022189828c633a2551b9b48ae241407aca1ca81f1d6917e1c33edc8ff0311504d2a89d602380000000049454e44ae426082 + + + + + + + + ShapeItem1 + + + + + ReportHeader1 + + + + + + + + + + + + ShapeItem2 + + + + + ReportHeader1 + + + + + + + + + + + + TextItem9 + + + + + ReportHeader1 + + + REPORT + + + + + + + + + + + + + + + TextItem10 + + + + + ReportHeader1 + + + HEADER + + + + + + + + + + + + + + + + + ReportPage1 + + + + + + + + + + DataBand1 + + + + TextItem3 + + + + + DataBand1 + + + $D{orders.OrderDate} + + + + + + + + + + + + + + + TextItem4 + + + + + DataBand1 + + + $D{orders.OrderID} + + + + + + + + + + + + + + + TextItem12 + + + + + DataBand1 + + + DATA BAND + + + + + + + + + + + + + + + TextItem16 + + + + + DataBand1 + + + OrderID + + + + + + + + + + + + + + + TextItem17 + + + + + DataBand1 + + + Order Date + + + + + + + + + + + + + + + + + ReportPage1 + + + + + + + orders + + + + + + + GroupBandHeader1 + + + + TextItem2 + + + + + GroupBandHeader1 + + + $D{orders.CompanyName} + + + + + + + + + + + + + + + ShapeItem3 + + + + + GroupBandHeader1 + + + + + + + + + + + + TextItem11 + + + + + GroupBandHeader1 + + + GROUP HEADER + + + + + + + + + + + + + + + + + ReportPage1 + + + + DataBand1 + + + CompanyName + + + + + SubDetailBand1 + + + + TextItem5 + + + + + SubDetailBand1 + + + $D{orderitems.ProductName} + + + + + + + + + + + + + + + TextItem6 + + + + + SubDetailBand1 + + + $D{orderitems.Quantity} + + + + + + + + + + + + + + + TextItem7 + + + + + SubDetailBand1 + + + $S{line("SubDetailBand1")} + + + + + + + + + + + + + + + TextItem13 + + + + + SubDetailBand1 + + + SUBDETAIL BAND + + + + + + + + + + + + + + + + + ReportPage1 + + + + DataBand1 + + + orderitems + + + + SubDetailFooterBand1 + + + + TextItem8 + + + + + SubDetailFooterBand1 + + + $S{SUM($D{orderitems.Quantity},"SubDetailBand1")} + + + + + + + + + + + + + + + TextItem14 + + + + + SubDetailFooterBand1 + + + SUBDETAIL FOOTER + + + + + + + + + + + + + + + TextItem15 + + + + + SubDetailFooterBand1 + + + Total + + + + + + + + + + + + + + + ShapeItem4 + + + + + SubDetailFooterBand1 + + + + + + + + + + + + + + ReportPage1 + + + + SubDetailBand1 + + + + + + + + + + + + + + + + + + + datasources + + + + northwind + QSQLITE + ./demo_reports/northwind.db + + + + + + + + + + orders + Select * from orders +inner join customers on customers.customerid = orders.customerid order by companyname +limit 50 + northwind + + + + + + orderitems + Select * from orderitems + inner join products on products.productid = orderitems.productid +where orderid = $D{orders.orderid} + northwind + orders + + + + + + + diff --git a/demo_r2/demo_reports/northwind.db b/demo_r2/demo_reports/northwind.db new file mode 100644 index 0000000..42a4ef6 Binary files /dev/null and b/demo_r2/demo_reports/northwind.db differ diff --git a/demo_r2/images/First.png b/demo_r2/images/First.png new file mode 100644 index 0000000..0c98969 Binary files /dev/null and b/demo_r2/images/First.png differ diff --git a/demo_r2/images/FitPage.png b/demo_r2/images/FitPage.png new file mode 100644 index 0000000..c79ca9d Binary files /dev/null and b/demo_r2/images/FitPage.png differ diff --git a/demo_r2/images/FitWidth.png b/demo_r2/images/FitWidth.png new file mode 100644 index 0000000..899f3d1 Binary files /dev/null and b/demo_r2/images/FitWidth.png differ diff --git a/demo_r2/images/Last.png b/demo_r2/images/Last.png new file mode 100644 index 0000000..c705017 Binary files /dev/null and b/demo_r2/images/Last.png differ diff --git a/demo_r2/images/Next.png b/demo_r2/images/Next.png new file mode 100644 index 0000000..3b2dd70 Binary files /dev/null and b/demo_r2/images/Next.png differ diff --git a/demo_r2/images/OneToOne.png b/demo_r2/images/OneToOne.png new file mode 100644 index 0000000..4b7184b Binary files /dev/null and b/demo_r2/images/OneToOne.png differ diff --git a/demo_r2/images/PDF.png b/demo_r2/images/PDF.png new file mode 100644 index 0000000..6e68818 Binary files /dev/null and b/demo_r2/images/PDF.png differ diff --git a/demo_r2/images/Prev.png b/demo_r2/images/Prev.png new file mode 100644 index 0000000..8912f07 Binary files /dev/null and b/demo_r2/images/Prev.png differ diff --git a/demo_r2/images/Print.png b/demo_r2/images/Print.png new file mode 100644 index 0000000..8ce4960 Binary files /dev/null and b/demo_r2/images/Print.png differ diff --git a/demo_r2/images/ZoomIn.png b/demo_r2/images/ZoomIn.png new file mode 100644 index 0000000..ecbff88 Binary files /dev/null and b/demo_r2/images/ZoomIn.png differ diff --git a/demo_r2/images/ZoomOut.png b/demo_r2/images/ZoomOut.png new file mode 100644 index 0000000..da1e2ef Binary files /dev/null and b/demo_r2/images/ZoomOut.png differ diff --git a/demo_r2/images/design.png b/demo_r2/images/design.png new file mode 100644 index 0000000..24e41bb Binary files /dev/null and b/demo_r2/images/design.png differ diff --git a/demo_r2/images/folder3.png b/demo_r2/images/folder3.png new file mode 100644 index 0000000..d857735 Binary files /dev/null and b/demo_r2/images/folder3.png differ diff --git a/demo_r2/images/logo.png b/demo_r2/images/logo.png new file mode 100644 index 0000000..a466bbb Binary files /dev/null and b/demo_r2/images/logo.png differ diff --git a/demo_r2/images/logo1.png b/demo_r2/images/logo1.png new file mode 100644 index 0000000..29f3370 Binary files /dev/null and b/demo_r2/images/logo1.png differ diff --git a/demo_r2/images/lr.png b/demo_r2/images/lr.png new file mode 100644 index 0000000..2206744 Binary files /dev/null and b/demo_r2/images/lr.png differ diff --git a/demo_r2/images/new_leaf1.png b/demo_r2/images/new_leaf1.png new file mode 100644 index 0000000..d89f8d3 Binary files /dev/null and b/demo_r2/images/new_leaf1.png differ diff --git a/demo_r2/main.cpp b/demo_r2/main.cpp new file mode 100644 index 0000000..b48f94e --- /dev/null +++ b/demo_r2/main.cpp @@ -0,0 +1,11 @@ +#include "mainwindow.h" +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + + return a.exec(); +} diff --git a/demo_r2/main.ico b/demo_r2/main.ico new file mode 100644 index 0000000..6bd0818 Binary files /dev/null and b/demo_r2/main.ico differ diff --git a/demo_r2/mainicon.rc b/demo_r2/mainicon.rc new file mode 100644 index 0000000..83c0128 --- /dev/null +++ b/demo_r2/mainicon.rc @@ -0,0 +1 @@ +DI_ICON1 ICON "main.ico" diff --git a/demo_r2/mainwindow.cpp b/demo_r2/mainwindow.cpp new file mode 100644 index 0000000..06a02fd --- /dev/null +++ b/demo_r2/mainwindow.cpp @@ -0,0 +1,123 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" +#include +#include +#include +#include + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); + m_preview = m_report.createPreviewWidget(); + connect(m_preview,SIGNAL(scalePercentChanged(int)), this, SLOT(slotScalePercentChanged(int))); + ui->groupBox_2->layout()->addWidget(m_preview); + buildReportsTree(QApplication::applicationDirPath()+"/demo_reports/", ui->treeWidget); + connect(ui->tbZoomIn, SIGNAL(clicked(bool)), m_preview, SLOT(zoomIn())); + connect(ui->tbZoomOut, SIGNAL(clicked(bool)), m_preview, SLOT(zoomOut())); + connect(ui->tbFirstPage, SIGNAL(clicked(bool)), m_preview, SLOT(firstPage())); + connect(ui->tbPrevPage, SIGNAL(clicked(bool)), m_preview, SLOT(priorPage())); + connect(ui->tbNextPage, SIGNAL(clicked(bool)), m_preview, SLOT(nextPage())); + connect(ui->tbLastPage, SIGNAL(clicked(bool)), m_preview, SLOT(lastPage())); + connect(ui->cbScalePercent, SIGNAL(currentIndexChanged(QString)), this, SLOT(scaleComboboxChanged(QString))); + connect(ui->tbFitWidth, SIGNAL(clicked(bool)), m_preview, SLOT(fitWidth())); + connect(ui->tbFitPage, SIGNAL(clicked(bool)), m_preview, SLOT(fitPage())); + connect(m_preview, SIGNAL(pagesSet(int)), this, SLOT(slotPagesSet(int))); + connect(m_preview, SIGNAL(pageChanged(int)), this, SLOT(slotPageChanged(int))); + connect(ui->tbPDFExport, SIGNAL(clicked(bool)), m_preview, SLOT(printToPDF())); + connect(ui->tbPrint, SIGNAL(clicked(bool)), m_preview, SLOT(print())); + initPercentCombobox(); + enableUI(false); + QDesktopWidget *desktop = QApplication::desktop(); + + int screenWidth = desktop->screenGeometry().width(); + int screenHeight = desktop->screenGeometry().height(); + + int x = screenWidth*0.1; + int y = screenHeight*0.1; + + resize(screenWidth*0.8, screenHeight*0.8); + move(x, y); + if (QFile::exists(QApplication::applicationDirPath()+"/demo_reports/categories.lrxml")){ + m_report.loadFromFile(QApplication::applicationDirPath()+"/demo_reports/categories.lrxml"); + m_preview->refreshPages(); + } +} + +MainWindow::~MainWindow() +{ + delete ui; +} + +void MainWindow::enableUI(bool value) +{ + ui->tbDesign->setEnabled(value); + ui->tbPrint->setEnabled(value); + ui->tbPDFExport->setEnabled(value); + ui->tbFirstPage->setEnabled(value); + ui->tbPrevPage->setEnabled(value); + ui->tbNextPage->setEnabled(value); + ui->tbLastPage->setEnabled(value); + ui->tbZoomIn->setEnabled(value); + ui->tbZoomOut->setEnabled(value); + ui->tbFitWidth->setEnabled(value); + ui->tbFitPage->setEnabled(value); + ui->tbOneToOne->setEnabled(value); + ui->sbPageNavigator->setEnabled(value); + ui->cbScalePercent->setEnabled(value); +} + +void MainWindow::slotScalePercentChanged(int percent) +{ + ui->cbScalePercent->setCurrentText(QString("%1\%").arg(percent)); +} + +void MainWindow::scaleComboboxChanged(QString text) +{ + m_preview->setScalePercent(text.remove(text.count()-1,1).toInt()); +} + +void MainWindow::slotPagesSet(int pagesCount) +{ + ui->sbPageNavigator->setSuffix(tr(" of %1").arg(pagesCount)); + ui->sbPageNavigator->setMinimum(1); + ui->sbPageNavigator->setMaximum(pagesCount); + ui->sbPageNavigator->setValue(1); + enableUI(true); +} + +void MainWindow::slotPageChanged(int page) +{ + ui->sbPageNavigator->setValue(page); +} + +void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int ) +{ + m_report.loadFromFile(item->data(0,Qt::UserRole).toString()); + m_preview->refreshPages(); +} + +void MainWindow::initPercentCombobox() +{ + for (int i = 10; i<310; i+=10){ + ui->cbScalePercent->addItem(QString("%1\%").arg(i)); + } + ui->cbScalePercent->setCurrentIndex(4); +} + +void MainWindow::on_sbPageNavigator_valueChanged(int arg1) +{ + m_preview->pageNavigatorChanged(arg1); +} + +void MainWindow::on_tbDesign_clicked() +{ + m_report.designReport(); + m_preview->refreshPages(); +} + +void MainWindow::on_tbOneToOne_clicked() +{ + m_preview->setScalePercent(100); +} diff --git a/demo_r2/mainwindow.h b/demo_r2/mainwindow.h new file mode 100644 index 0000000..5d9d176 --- /dev/null +++ b/demo_r2/mainwindow.h @@ -0,0 +1,61 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include + +namespace Ui { +class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); +private: + void enableUI(bool value); +private slots: + void slotScalePercentChanged(int percent); + void scaleComboboxChanged(QString text); + void slotPagesSet(int pagesCount); + void slotPageChanged(int page); + void on_treeWidget_itemClicked(QTreeWidgetItem *item, int); + void on_sbPageNavigator_valueChanged(int arg1); + void on_tbDesign_clicked(); + void on_tbOneToOne_clicked(); +private: + template< typename T > + void buildReportsTree(const QString &path, T* parentItem) + { + QDir reportsDir(path); + QStringList items = reportsDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); + foreach( QString dir, items){ + QTreeWidgetItem* listItem = new QTreeWidgetItem(parentItem); + listItem->setText(0,dir); + listItem->setIcon(0,QIcon(":/images/images/folder.png")); + buildReportsTree(reportsDir.path()+"/"+dir, listItem); + } + QStringList nameFilters; + nameFilters <<"*.lrxml"; + items = reportsDir.entryList(nameFilters, QDir::Files); + foreach( QString file, items){ + QTreeWidgetItem* listItem = new QTreeWidgetItem(parentItem); + listItem->setIcon(0,QIcon(":/images/images/report.png")); + listItem->setText(0,file); + listItem->setData(0,Qt::UserRole,reportsDir.path()+"/"+file); + } + } + void initPercentCombobox(); +private: + Ui::MainWindow *ui; + LimeReport::ReportEngine m_report; + LimeReport::PreviewReportWidget* m_preview; +}; + +#endif // MAINWINDOW_H diff --git a/demo_r2/mainwindow.ui b/demo_r2/mainwindow.ui new file mode 100644 index 0000000..84ccfc8 --- /dev/null +++ b/demo_r2/mainwindow.ui @@ -0,0 +1,587 @@ + + + MainWindow + + + + 0 + 0 + 1157 + 554 + + + + Lime Report Demo + + + + :/images/images/logo1.png:/images/images/logo1.png + + + + + + + + + + + + 75 + true + + + + Reports + + + + + + + 0 + 0 + + + + + 200 + 16777215 + + + + + 50 + false + + + + false + + + false + + + + 1 + + + + + + + + + + + 7 + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 50 + 59 + + + + + + + :/images/images/logo1.png + + + true + + + + + + + 1 + + + 5 + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + + + + + + 127 + 170 + 24 + + + + + + + 0 + 189 + 0 + + + + + + + + + 127 + 170 + 24 + + + + + + + 0 + 189 + 0 + + + + + + + + + 190 + 190 + 190 + + + + + + + 190 + 190 + 190 + + + + + + + + + 14 + 75 + true + + + + Lime Report + + + Qt::AlignCenter + + + + + + + + 14 + 75 + true + + + + DEMO + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + + + + + + + 75 + true + + + + Preview + + + + 4 + + + + + 2 + + + + + + 6 + + + + ... + + + + :/images/images/design.png:/images/images/design.png + + + + 24 + 24 + + + + true + + + + + + + QFrame::VLine + + + QFrame::Sunken + + + + + + + + + + ... + + + + :/images/images/Print.png:/images/images/Print.png + + + + 24 + 24 + + + + true + + + + + + + ... + + + + :/images/images/PDF.png:/images/images/PDF.png + + + + 24 + 24 + + + + true + + + + + + + QFrame::VLine + + + QFrame::Sunken + + + + + + + + + + ... + + + + :/images/images/ZoomIn.png:/images/images/ZoomIn.png + + + + 24 + 24 + + + + true + + + + + + + ... + + + + :/images/images/ZoomOut.png:/images/images/ZoomOut.png + + + + 24 + 24 + + + + true + + + + + + + true + + + true + + + + + + + ... + + + + :/images/images/OneToOne.png:/images/images/OneToOne.png + + + + 24 + 24 + + + + true + + + + + + + ... + + + + :/images/images/FitWidth.png:/images/images/FitWidth.png + + + + 24 + 24 + + + + true + + + + + + + ... + + + + :/images/images/FitPage.png:/images/images/FitPage.png + + + + 24 + 24 + + + + true + + + + + + + QFrame::VLine + + + QFrame::Sunken + + + + + + + + + + ... + + + + :/images/images/First.png:/images/images/First.png + + + + 24 + 24 + + + + true + + + + + + + ... + + + + :/images/images/Prev.png:/images/images/Prev.png + + + + 24 + 24 + + + + true + + + + + + + Page: + + + 10000000 + + + + + + + ... + + + + :/images/images/Next.png:/images/images/Next.png + + + + 24 + 24 + + + + true + + + + + + + ... + + + + :/images/images/Last.png:/images/images/Last.png + + + + 24 + 24 + + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + + + + + diff --git a/limereport.pro b/limereport.pro index 9ec2517..2b46b10 100644 --- a/limereport.pro +++ b/limereport.pro @@ -9,7 +9,7 @@ SUBDIRS += \ CONFIG += ordered -SUBDIRS += demo_r1 +SUBDIRS += demo_r1 demo_r2