diff --git a/CMakeLists.txt b/CMakeLists.txt
index 27ad16130..cacb75e4e 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -287,7 +287,7 @@ set(APP_SOURCES
src/gui/messagesview.cpp
src/gui/statusbar.cpp
src/gui/iconfactory.cpp
- src/gui/formcategorydetails.cpp
+ src/gui/formstandardcategorydetails.cpp
src/gui/plaintoolbutton.cpp
src/gui/lineeditwithstatus.cpp
src/gui/messagebox.cpp
@@ -352,7 +352,7 @@ set(APP_HEADERS
src/gui/feedsview.h
src/gui/messagesview.h
src/gui/statusbar.h
- src/gui/formcategorydetails.h
+ src/gui/formstandardcategorydetails.h
src/gui/plaintoolbutton.h
src/gui/lineeditwithstatus.h
src/gui/messagebox.h
@@ -378,7 +378,7 @@ set(APP_FORMS
src/gui/formsettings.ui
src/gui/formwelcome.ui
src/gui/formabout.ui
- src/gui/formcategorydetails.ui
+ src/gui/formstandardcategorydetails.ui
)
# Add translations.
diff --git a/resources/skins/base/blau.xml b/resources/skins/base/blau.xml
index c12180b0c..c2c9d6083 100644
--- a/resources/skins/base/blau.xml
+++ b/resources/skins/base/blau.xml
@@ -6,7 +6,7 @@
rotter.martinos@gmail.com
- PGh0bWw+DQogIDxoZWFkPg0KICAgIDxzdHlsZT4NCiAgICAgIGJvZHkgew0KICAgICAgICBtYXJnaW46IDBweDsNCiAgICAgICAgcGFkZGluZzogMHB4Ow0KICAgICAgfQ0KICAgIA0KICAgICAgcHJlIHsNCiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOw0KICAgICAgfQ0KDQogICAgICAuaGVhZGVydGV4dCB7DQogICAgICAgIGZvbnQtc2l6ZTogMjBweDsNCiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsNCiAgICAgIH0NCg0KICAgICAgLmhlYWRlciB7DQogICAgICAgIGZvbnQtc2l6ZTogMTdweDsNCiAgICAgICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSxyZ2JhKDk5LDEzNSwyMjksMSkpLCBjb2xvci1zdG9wKDEwMCUscmdiYSg2NCwxMDksMjM2LDEpKSk7DQogICAgICAgIHBhZGRpbmc6IDZweDsNCiAgICAgICAgbWFyZ2luOiAwcHggYXV0bzsNCiAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICBib3JkZXI6IDAuNXB4IHNvbGlkIGJsYWNrOw0KICAgICAgfQ0KDQogICAgICAuaGVhZGVyIGEgew0KICAgICAgICBjb2xvcjogd2hpdGU7DQogICAgICB9DQoNCiAgICAgIC5jb250ZW50IHsNCiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGdyYXk7DQogICAgICAgIGZvbnQtc2l6ZTogMTZweDsNCiAgICAgICAgbWFyZ2luOiAwcHggYXV0bzsNCiAgICAgICAgcGFkZGluZzogNnB4Ow0KICAgICAgICBwYWRkaW5nLXRvcDogMTJweDsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgLmNvbnRhaW5lciB7DQogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGdyYXk7DQogICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4Ow0KICAgICAgICBtYXJnaW46IDEwcHg7DQogICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMnB4IDJweCAxNnB4IDBweCByZ2JhKDUwLCA1MCwgNTAsIDAuNjIpOw0KICAgICAgfQ0KICAgIDwvc3R5bGU+DQogICAgPHRpdGxlPg0KICAgICAgJTENCiAgICA8L3RpdGxlPg0KICA8L2hlYWQ+DQogIDxib2R5Pg0KICAgICUyDQogIDwvYm9keT4NCjwvaHRtbD4=
+ PGh0bWw+DQogIDxoZWFkPg0KICAgIDxzdHlsZT4NCiAgICAgIGJvZHkgew0KICAgICAgICBtYXJnaW46IDBweDsNCiAgICAgICAgcGFkZGluZzogMHB4Ow0KICAgICAgfQ0KICAgIA0KICAgICAgcHJlIHsNCiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOw0KICAgICAgfQ0KDQogICAgICAuaGVhZGVydGV4dCB7DQogICAgICAgIGZvbnQtc2l6ZTogMjBweDsNCiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsNCiAgICAgIH0NCg0KICAgICAgLmhlYWRlciB7DQogICAgICAgIGZvbnQtc2l6ZTogMTdweDsNCiAgICAgICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSxyZ2JhKDk5LDEzNSwyMjksMSkpLCBjb2xvci1zdG9wKDEwMCUscmdiYSg2NCwxMDksMjM2LDEpKSk7DQogICAgICAgIHBhZGRpbmc6IDZweDsNCiAgICAgICAgbWFyZ2luOiAwcHggYXV0bzsNCiAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICBib3JkZXI6IDAuNXB4IHNvbGlkIGJsYWNrOw0KICAgICAgfQ0KDQogICAgICAuaGVhZGVyIGEgew0KICAgICAgICBjb2xvcjogd2hpdGU7DQogICAgICB9DQoNCiAgICAgIC5jb250ZW50IHsNCiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGdyYXk7DQogICAgICAgIGZvbnQtc2l6ZTogMTZweDsNCgkJY29sb3I6ICNlZWVlZWU7DQogICAgICAgIG1hcmdpbjogMHB4IGF1dG87DQogICAgICAgIHBhZGRpbmc6IDZweDsNCiAgICAgICAgcGFkZGluZy10b3A6IDEycHg7DQogICAgICB9DQogICAgICANCiAgICAgIC5jb250YWluZXIgew0KCQlmb250LWZhbWlseTogIlRyZWJ1Y2hldCBNUyIsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgZ3JheTsNCiAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHg7DQogICAgICAgIG1hcmdpbjogMTBweDsNCiAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAycHggMnB4IDE2cHggMHB4IHJnYmEoNTAsIDUwLCA1MCwgMC42Mik7DQogICAgICB9DQogICAgPC9zdHlsZT4NCiAgICA8dGl0bGU+DQogICAgICAlMQ0KICAgIDwvdGl0bGU+DQogIDwvaGVhZD4NCiAgPGJvZHk+DQogICAgJTINCiAgPC9ib2R5Pg0KPC9odG1sPg==
ICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXJ0ZXh0Ij4NCiAgICAgICAgICAlMQ0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgJTIgKCU1KQ0KICAgICAgICA8YnI+DQogICAgICAgIDxhIGhyZWY9IiUzIj4NCiAgICAgICAgICAlMw0KICAgICAgICA8L2E+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KICAgICAgICAlNCANCiAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg==
LyogUVdpZGdldCAqLw0KUVdpZGdldCB7DQogIGNvbG9yOiAjY2NjY2NjOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzMjMyOw0KfQ0KDQpRV2lkZ2V0OjppdGVtOmhvdmVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogUUxpbmVhckdyYWRpZW50KCB4MTogMCwgeTE6IDAsIHgyOiAwLCB5MjogMSwgc3RvcDogMCAjNTY5ZGU1LCBzdG9wOiAxICM0YjhhYzkpOw0KICBjb2xvcjogIzAwMDAwMDsNCn0NCg0KUVdpZGdldDpkaXNhYmxlZCB7DQogIGNvbG9yOiAjNzc3Nzc3Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzMjMyOw0KfQ0KDQovKiBRVG9vbEJ1dHRvbiAqLw0KUVRvb2xCdXR0b24gLCBRVG9vbEJ1dHRvbjpkaXNhYmxlZCB7DQogIGJvcmRlcjogbm9uZTsNCiAgcGFkZGluZzogMHB4Ow0KICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCn0NCg0KUVRvb2xCdXR0b246aG92ZXIgew0KICBib3JkZXItcmFkaXVzOiAycHg7DQogIGJvcmRlcjogMXB4IHNvbGlkIGdyYXk7DQp9DQoNCi8qIFFTdGF0dXNCYXIgKi8NClFTdGF0dXNCYXIgUVRvb2xCdXR0b24gew0KICBtYXJnaW4tbGVmdDogNXB4Ow0KICBtYXJnaW4tcmlnaHQ6IDVweDsNCn0NCg0KUVN0YXR1c0Jhcjo6aXRlbSB7DQogIGJvcmRlcjogdHJhbnNwYXJlbnQ7DQp9DQoNCi8qIFFUb29sQmFyICovDQpRVG9vbEJhcjo6c2VwYXJhdG9yIHsNCiAgd2lkdGg6IDFweDsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzU5NTk1OTsNCg0KICBtYXJnaW4tbGVmdDogNXB4Ow0KICBtYXJnaW4tcmlnaHQ6IDVweDsNCn0NCg0KUVRvb2xCYXIgew0KICBwYWRkaW5nLWxlZnQ6IDVweDsNCiAgcGFkZGluZy1yaWdodDogNXB4Ow0KfQ0KDQovKiBRVG9vbFRpcCAqLw0KUVRvb2xUaXAgew0KICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzU2OWRlNTsNCiAgY29sb3I6IGJsYWNrOw0KICBib3JkZXItcmFkaXVzOiAxcHg7DQogIG9wYWNpdHk6IDIyMDsNCn0NCg0KLyogUU1lbnVCYXIgKi8NClFNZW51QmFyOjppdGVtIHsNCiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQNCn0NCg0KUU1lbnVCYXI6Oml0ZW06c2VsZWN0ZWQgew0KICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgYm9yZGVyOiAxcHggc29saWQgIzU2OWRlNTsNCn0NCg0KUU1lbnVCYXI6Oml0ZW06cHJlc3NlZCB7DQogIGJhY2tncm91bmQ6ICM0NDQ7DQogIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7DQogIGJhY2tncm91bmQtY29sb3I6IFFMaW5lYXJHcmFkaWVudCggeDE6MCwgeTE6MCwgeDI6MCwgeTI6MSwgc3RvcDoxICMyMTIxMjEsIHN0b3A6MC40ICMzNDM0MzQgKTsNCiAgbWFyZ2luLWJvdHRvbTogLTFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCn0NCg0KLyogUU1lbnUgKi8NClFNZW51IHsNCiAgYm9yZGVyOiAxcHggc29saWQgIzAwMDsNCn0NCg0KUU1lbnU6Oml0ZW0gew0KICBwYWRkaW5nOiAycHggMTBweCAycHggMjNweDsNCn0NCg0KUU1lbnU6Omljb24gew0KICBwYWRkaW5nLWxlZnQ6IDRweDsNCn0NCg0KUU1lbnU6Oml0ZW06c2VsZWN0ZWQgew0KICBjb2xvcjogIzAwMDAwMDsNCiAgYmFja2dyb3VuZC1jb2xvcjogUUxpbmVhckdyYWRpZW50KCB4MTogMCwgeTE6IDAsIHgyOiAwLCB5MjogMSwgc3RvcDogMCAjNTY5ZGU1LCBzdG9wOiAxICM0NDdjYjUpOw0KfQ0KDQpRTWVudTo6c2VwYXJhdG9yIHsNCiAgaGVpZ2h0OiAxcHg7DQogIGJhY2tncm91bmQtY29sb3I6ICM1OTU5NTk7DQogIGNvbG9yOiB3aGl0ZTsNCiAgbWFyZ2luLXRvcDogM3B4Ow0KICBtYXJnaW4tYm90dG9tOiAzcHg7DQogIG1hcmdpbi1sZWZ0OiA1cHg7DQogIG1hcmdpbi1yaWdodDogNXB4Ow0KfQ0KDQovKiBRUHVzaEJ1dHRvbiAqLw0KUVB1c2hCdXR0b24gew0KICBjb2xvcjogI2IxYjFiMTsNCiAgYmFja2dyb3VuZC1jb2xvcjogUUxpbmVhckdyYWRpZW50KCB4MTogMCwgeTE6IDAsIHgyOiAwLCB5MjogMSwgc3RvcDogMCAjNTY1NjU2LCBzdG9wOiAwLjEgIzUyNTI1Miwgc3RvcDogMC41ICM0ZTRlNGUsIHN0b3A6IDAuOSAjNGE0YTRhLCBzdG9wOiAxICM0NjQ2NDYpOw0KICBib3JkZXI6IDFweCBzb2xpZCAjMWUxZTFlOw0KICBib3JkZXItcmFkaXVzOiAxcHg7DQogIHBhZGRpbmc6IDNweDsNCiAgZm9udC1zaXplOiAxMnB4Ow0KICBwYWRkaW5nLWxlZnQ6IDZweDsNCiAgcGFkZGluZy1yaWdodDogNnB4Ow0KICBtaW4td2lkdGg6IDMwcHg7DQp9DQoNClFQdXNoQnV0dG9uOnByZXNzZWQgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiBRTGluZWFyR3JhZGllbnQoIHgxOiAwLCB5MTogMCwgeDI6IDAsIHkyOiAxLCBzdG9wOiAwICMyZDJkMmQsIHN0b3A6IDAuMSAjMmIyYjJiLCBzdG9wOiAwLjUgIzI5MjkyOSwgc3RvcDogMC45ICMyODI4MjgsIHN0b3A6IDEgIzI1MjUyNSkNCn0NCg0KLyogUUNvbWJvQm94ICovDQpRQ29tYm9Cb3ggew0KICBzZWxlY3Rpb24tYmFja2dyb3VuZC1jb2xvcjogIzU2OWRlNTsNCiAgYmFja2dyb3VuZC1jb2xvcjogUUxpbmVhckdyYWRpZW50KCB4MTogMCwgeTE6IDAsIHgyOiAwLCB5MjogMSwgc3RvcDogMCAjNTY1NjU2LCBzdG9wOiAwLjEgIzUyNTI1Miwgc3RvcDogMC41ICM0ZTRlNGUsIHN0b3A6IDAuOSAjNGE0YTRhLCBzdG9wOiAxICM0NjQ2NDYpOw0KICBib3JkZXI6IDFweCBzb2xpZCAjMWUxZTFlOw0KICBib3JkZXItcmFkaXVzOiAxcHg7DQogIHBhZGRpbmc6IDJweDsNCiAgcGFkZGluZy10b3A6IDFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgcGFkZGluZy1sZWZ0OiA0cHg7DQp9DQoNClFDb21ib0JveDpob3ZlciwgUVB1c2hCdXR0b246aG92ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiBRTGluZWFyR3JhZGllbnQoIHgxOiAwLCB5MTogMCwgeDI6IDAsIHkyOiAxLCBzdG9wOiAwICM1NjlkZTUsIHN0b3A6IDEgIzQ0N2NiNSk7DQogIGNvbG9yOiBibGFjazsNCn0NCg0KUUNvbWJvQm94Om9uIHsNCiAgcGFkZGluZzogMXB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiBRTGluZWFyR3JhZGllbnQoIHgxOiAwLCB5MTogMCwgeDI6IDAsIHkyOiAxLCBzdG9wOiAwICMyZDJkMmQsIHN0b3A6IDAuMSAjMmIyYjJiLCBzdG9wOiAwLjUgIzI5MjkyOSwgc3RvcDogMC45ICMyODI4MjgsIHN0b3A6IDEgIzI1MjUyNSk7DQp9DQoNClFDb21ib0JveCBRQWJzdHJhY3RJdGVtVmlldyB7DQogIGJvcmRlcjogMXB4IHNvbGlkIFFMaW5lYXJHcmFkaWVudCggeDE6IDAsIHkxOiAwLCB4MjogMCwgeTI6IDEsIHN0b3A6IDAgIzU2OWRlNSwgc3RvcDogMSAjNDQ3Y2I1KTsNCiAgc2VsZWN0aW9uLWJhY2tncm91bmQtY29sb3I6IFFMaW5lYXJHcmFkaWVudCggeDE6IDAsIHkxOiAwLCB4MjogMCwgeTI6IDEsIHN0b3A6IDAgIzU2OWRlNSwgc3RvcDogMSAjNDQ3Y2I1KTsNCn0NCg0KUUNvbWJvQm94Ojpkcm9wLWRvd24gew0KICBzdWJjb250cm9sLW9yaWdpbjogcGFkZGluZzsNCiAgc3ViY29udHJvbC1wb3NpdGlvbjogdG9wIHJpZ2h0Ow0KICB3aWR0aDogMTVweDsNCiAgYm9yZGVyLWxlZnQtd2lkdGg6IDBweDsNCiAgYm9yZGVyLWxlZnQtY29sb3I6IGRhcmtncmF5Ow0KICBib3JkZXItbGVmdC1zdHlsZTogc29saWQ7DQogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxcHg7DQogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxcHg7DQp9DQoNClFDb21ib0JveDo6ZG93bi1hcnJvdyB7DQogIGltYWdlOiB1cmwoIyMvaW1hZ2VzL2Rvd25fYXJyb3cucG5nKQ0KfQ0KDQovKiBRU2Nyb2xsQmFyICovDQpRU2Nyb2xsQmFyOmhvcml6b250YWwgew0KICBib3JkZXI6IDFweCBzb2xpZCAjMjIyMjIyOw0KICBiYWNrZ3JvdW5kOiBRTGluZWFyR3JhZGllbnQoIHgxOiAwLCB5MTogMCwgeDI6IDAsIHkyOiAxLCBzdG9wOiAwLjAgIzEyMTIxMiwgc3RvcDogMC4yICMyODI4MjgsIHN0b3A6IDEgIzQ4NDg0OCk7DQogIGhlaWdodDogMTNweDsNCiAgbWFyZ2luOiAwcHggMTZweCAwIDE2cHg7DQp9DQoNClFTY3JvbGxCYXI6OmhhbmRsZTpob3Jpem9udGFsIHsNCiAgYmFja2dyb3VuZDogUUxpbmVhckdyYWRpZW50KCB4MTogMCwgeTE6IDAsIHgyOiAxLCB5MjogMCwgc3RvcDogMCAjNTY5ZGU1LCBzdG9wOiAwLjUgIzQ0N2NiNSwgc3RvcDogMSAjNTY5ZGU1KTsNCiAgbWluLWhlaWdodDogMjBweDsNCiAgYm9yZGVyLXJhZGl1czogMXB4Ow0KfQ0KDQpRU2Nyb2xsQmFyOjphZGQtbGluZTpob3Jpem9udGFsIHsNCiAgYm9yZGVyOiAxcHggc29saWQgIzFiMWIxOTsNCiAgYm9yZGVyLXJhZGl1czogMXB4Ow0KICBiYWNrZ3JvdW5kOiBRTGluZWFyR3JhZGllbnQoIHgxOiAwLCB5MTogMCwgeDI6IDEsIHkyOiAwLCBzdG9wOiAwICM1NjlkZTUsIHN0b3A6IDEgIzQ0N2NiNSk7DQogIHdpZHRoOiAxM3B4Ow0KICBzdWJjb250cm9sLXBvc2l0aW9uOiByaWdodDsNCiAgc3ViY29udHJvbC1vcmlnaW46IG1hcmdpbjsNCn0NCg0KUVNjcm9sbEJhcjo6c3ViLWxpbmU6aG9yaXpvbnRhbCB7DQogIGJvcmRlcjogMXB4IHNvbGlkICMxYjFiMTk7DQogIGJvcmRlci1yYWRpdXM6IDFweDsNCiAgYmFja2dyb3VuZDogUUxpbmVhckdyYWRpZW50KCB4MTogMCwgeTE6IDAsIHgyOiAxLCB5MjogMCwgc3RvcDogMCAjNTY5ZGU1LCBzdG9wOiAxICM0NDdjYjUpOw0KICB3aWR0aDogMTNweDsNCiAgc3ViY29udHJvbC1wb3NpdGlvbjogbGVmdDsNCiAgc3ViY29udHJvbC1vcmlnaW46IG1hcmdpbjsNCn0NCg0KUVNjcm9sbEJhcjo6cmlnaHQtYXJyb3c6aG9yaXpvbnRhbCwgUVNjcm9sbEJhcjo6bGVmdC1hcnJvdzpob3Jpem9udGFsIHsNCiAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7DQogIHdpZHRoOiAxcHg7DQogIGhlaWdodDogMXB4Ow0KICBiYWNrZ3JvdW5kOiB3aGl0ZTsNCn0NCg0KUVNjcm9sbEJhcjo6YWRkLXBhZ2U6aG9yaXpvbnRhbCwgUVNjcm9sbEJhcjo6c3ViLXBhZ2U6aG9yaXpvbnRhbCB7DQogIGJhY2tncm91bmQ6IG5vbmUNCn0NCg0KUVNjcm9sbEJhcjp2ZXJ0aWNhbCB7DQogIGJhY2tncm91bmQ6IFFMaW5lYXJHcmFkaWVudCggeDE6IDAsIHkxOiAwLCB4MjogMSwgeTI6IDAsIHN0b3A6IDAuMCAjMTIxMjEyLCBzdG9wOiAwLjIgIzI4MjgyOCwgc3RvcDogMSAjNDg0ODQ4KTsNCiAgd2lkdGg6IDEzcHg7DQogIG1hcmdpbjogMTZweCAwIDE2cHggMDsNCiAgYm9yZGVyOiAxcHggc29saWQgIzIyMjIyMjsNCn0NCg0KUVNjcm9sbEJhcjo6aGFuZGxlOnZlcnRpY2FsIHsNCiAgYmFja2dyb3VuZDogUUxpbmVhckdyYWRpZW50KCB4MTogMCwgeTE6IDAsIHgyOiAwLCB5MjogMSwgc3RvcDogMCAjNTY5ZGU1LCBzdG9wOiAwLjUgIzQ0N2NiNSwgc3RvcDogMSAjNTY5ZGU1KTsNCiAgbWluLWhlaWdodDogMjBweDsNCiAgYm9yZGVyLXJhZGl1czogMXB4Ow0KfQ0KUVNjcm9sbEJhcjo6YWRkLWxpbmU6dmVydGljYWwgew0KICBib3JkZXI6IDFweCBzb2xpZCAjMWIxYjE5Ow0KICBib3JkZXItcmFkaXVzOiAxcHg7DQogIGJhY2tncm91bmQ6IFFMaW5lYXJHcmFkaWVudCggeDE6IDAsIHkxOiAwLCB4MjogMCwgeTI6IDEsIHN0b3A6IDAgIzU2OWRlNSwgc3RvcDogMSAjNDQ3Y2I1KTsNCiAgaGVpZ2h0OiAxM3B4Ow0KICBzdWJjb250cm9sLXBvc2l0aW9uOiBib3R0b207DQogIHN1YmNvbnRyb2wtb3JpZ2luOiBtYXJnaW47DQp9DQoNClFTY3JvbGxCYXI6OnN1Yi1saW5lOnZlcnRpY2FsIHsNCiAgYm9yZGVyOiAxcHggc29saWQgIzFiMWIxOTsNCiAgYm9yZGVyLXJhZGl1czogMXB4Ow0KICBiYWNrZ3JvdW5kOiBRTGluZWFyR3JhZGllbnQoIHgxOiAwLCB5MTogMCwgeDI6IDAsIHkyOiAxLCBzdG9wOiAwICM1NjlkZTUsIHN0b3A6IDEgIzQ0N2NiNSk7DQogIGhlaWdodDogMTNweDsNCiAgc3ViY29udHJvbC1wb3NpdGlvbjogdG9wOw0KICBzdWJjb250cm9sLW9yaWdpbjogbWFyZ2luOw0KfQ0KDQpRU2Nyb2xsQmFyOjp1cC1hcnJvdzp2ZXJ0aWNhbCwgUVNjcm9sbEJhcjo6ZG93bi1hcnJvdzp2ZXJ0aWNhbCB7DQogIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOw0KICB3aWR0aDogMXB4Ow0KICBoZWlnaHQ6IDFweDsNCiAgYmFja2dyb3VuZDogd2hpdGU7DQp9DQoNClFTY3JvbGxCYXI6OmFkZC1wYWdlOnZlcnRpY2FsLCBRU2Nyb2xsQmFyOjpzdWItcGFnZTp2ZXJ0aWNhbCB7DQogIGJhY2tncm91bmQ6IG5vbmU7DQp9DQoNCi8qIFFTcGxpdHRlciAqLw0KUVNwbGl0dGVyOjpoYW5kbGUgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGU0ZTRlOw0KfQ0KDQovKiBRSGVhZGVyVmlldyAqLw0KUUhlYWRlclZpZXcgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsNCiAgY29sb3I6ICNjY2NjY2M7DQp9DQoNClFIZWFkZXJWaWV3OjpzZWN0aW9uIHsNCiAgbWluLWhlaWdodDogMjBweDsNCiAgYm9yZGVyOiAwLjUgcHggc29saWQgIzU5NTk1OTsNCiAgYm9yZGVyLXJpZ2h0OiAwLjUgc29saWQgIzcwNzA3MDsNCiAgYmFja2dyb3VuZC1jb2xvcjogUUxpbmVhckdyYWRpZW50KCB4MTogMCwgeTE6IDAsIHgyOiAwLCB5MjogMSwgc3RvcDogMCAjNTY1NjU2LCBzdG9wOiAwLjEgIzUyNTI1Miwgc3RvcDogMC41ICM0ZTRlNGUsIHN0b3A6IDAuOSAjNGE0YTRhLCBzdG9wOiAxICM0NjQ2NDYpOw0KfQ0KDQpRSGVhZGVyVmlldzo6c2VjdGlvbjpmaXJzdCB7DQogIHBhZGRpbmctbGVmdDogNHB4Ow0KICBwYWRkaW5nLXJpZ2h0OiAycHg7DQp9DQoNClFIZWFkZXJWaWV3OjpzZWN0aW9uOiFmaXJzdCB7DQogIHBhZGRpbmctbGVmdDogMnB4Ow0KICBwYWRkaW5nLXJpZ2h0OiAycHg7DQp9DQoNClFIZWFkZXJWaWV3OjpzZWN0aW9uOmhvdmVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogUUxpbmVhckdyYWRpZW50KCB4MTogMCwgeTE6IDAsIHgyOiAwLCB5MjogMSwgc3RvcDogMCAjNTY1NjU2LCBzdG9wOiAwLjEgIzUwNTA1MCwgc3RvcDogMC41ICM0ZTRlNGUsIHN0b3A6IDAuOSAjNDA0MDQwLCBzdG9wOiAxICM0MDQwNDApOw0KfQ0KDQovKiBRVHJlZVZpZXcgKi8NClFUcmVlVmlldzo6YnJhbmNoOmhhcy1zaWJsaW5nczohYWRqb2lucy1pdGVtICB7DQogIGJvcmRlci1pbWFnZTogdXJsKHFzcy9kdW1teS5wbmcpIDA7DQp9DQoNClFUcmVlVmlldzo6YnJhbmNoOmhhcy1zaWJsaW5nczphZGpvaW5zLWl0ZW0gew0KICBib3JkZXItaW1hZ2U6IHVybChxc3MvZHVtbXkucG5nKSAwOw0KfQ0KDQpRVHJlZVZpZXc6OmJyYW5jaDohaGFzLWNoaWxkcmVuOiFoYXMtc2libGluZ3M6YWRqb2lucy1pdGVtICB7DQogIGJvcmRlci1pbWFnZTogdXJsKHFzcy9kdW1teS5wbmcpIDA7DQp9DQoNClFUcmVlVmlldzo6YnJhbmNoOmhhcy1jaGlsZHJlbjohaGFzLXNpYmxpbmdzOmNsb3NlZCwNClFUcmVlVmlldzo6YnJhbmNoOmNsb3NlZDpoYXMtY2hpbGRyZW46aGFzLXNpYmxpbmdzICB7DQogIGJvcmRlci1pbWFnZTogbm9uZTsNCiAgaW1hZ2U6IHVybChxc3MvYnJhbmNoLWNsb3NlZC5wbmcpOw0KfQ0KDQpRVHJlZVZpZXc6OmJyYW5jaDpvcGVuOmhhcy1jaGlsZHJlbjohaGFzLXNpYmxpbmdzLA0KUVRyZWVWaWV3OjpicmFuY2g6b3BlbjpoYXMtY2hpbGRyZW46aGFzLXNpYmxpbmdzICB7DQogIGJvcmRlci1pbWFnZTogbm9uZTsNCiAgaW1hZ2U6IHVybChxc3MvYnJhbmNoLW9wZW4ucG5nKTsNCn0NCg0KUVRyZWVWaWV3OjppdGVtIHsNCiAgcGFkZGluZzogMXB4Ow0KfSANCg0KUVRyZWVWaWV3W2hpZGVUcmVlPSJ0cnVlIl06OmJyYW5jaDohaGFzLWNobGlkcmVuOmhhc1NpYmxpbmdzIHsNCiAgYm9yZGVyLWltYWdlOiBub25lOw0KICBpbWFnZTogbm9uZTsNCn0NCg0KUVRyZWVWaWV3OjppdGVtOnNlbGVjdGVkLCBRVHJlZVZpZXc6OmJyYW5jaDpzZWxlY3RlZCwgUVRyZWVWaWV3OjppdGVtOnNlbGVjdGVkOmFjdGl2ZSwgUVRyZWVWaWV3OjppdGVtOnNlbGVjdGVkOiFhY3RpdmUsIFFUcmVlVmlldzo6aXRlbTpob3ZlciB7DQogIGJhY2tncm91bmQtY29sb3I6IFFMaW5lYXJHcmFkaWVudCggeDE6IDAsIHkxOiAwLCB4MjogMCwgeTI6IDEsIHN0b3A6IDAgIzU2OWRlNSwgc3RvcDogMSAjNGI4YWM5KTsNCiAgY29sb3I6ICMwMDAwMDA7DQp9DQoNCi8qIFFMaXN0VmlldyAqLw0KUUxpc3RWaWV3ICB7DQogIHNob3ctZGVjb3JhdGlvbi1zZWxlY3RlZDogMTsNCn0NCiANClFMaXN0Vmlldzo6aXRlbTpzZWxlY3RlZCwgUUxpc3RWaWV3OjppdGVtOnNlbGVjdGVkOiFhY3RpdmUsIFFMaXN0Vmlldzo6aXRlbTpzZWxlY3RlZDphY3RpdmUsIFFMaXN0Vmlldzo6aXRlbTpob3ZlciB7DQogIGJhY2tncm91bmQtY29sb3I6IFFMaW5lYXJHcmFkaWVudCggeDE6IDAsIHkxOiAwLCB4MjogMCwgeTI6IDEsIHN0b3A6IDAgIzU2OWRlNSwgc3RvcDogMSAjNGI4YWM5KTsNCiAgY29sb3I6ICMwMDAwMDA7DQp9DQoNCi8qIFFUZXh0RWRpdCwgUVBsYWluVGV4dEVkaXQgKi8NClFUZXh0RWRpdDpmb2N1cywgUVBsYWluVGV4dEVkaXQ6Zm9jdXMsIFFMaW5lRWRpdDpmb2N1cyB7DQogIGJvcmRlcjogMXB4IHNvbGlkIFFMaW5lYXJHcmFkaWVudCggeDE6IDAsIHkxOiAwLCB4MjogMCwgeTI6IDEsIHN0b3A6IDAgIzU2OWRlNSwgc3RvcDogMSAjNDQ3Y2I1KQ0KfQ0KDQpRVGV4dEVkaXQsIFFQbGFpblRleHRFZGl0IHsNCiAgYmFja2dyb3VuZC1jb2xvcjogUUxpbmVhckdyYWRpZW50KCB4MTogMCwgeTE6IDAsIHgyOiAwLCB5MjogMSwgc3RvcDogMCAjNGQ0ZDRkLCBzdG9wOiAwICM2NDY0NjQsIHN0b3A6IDEgIzVkNWQ1ZCkNCn0NCg0KLyogUUxpbmVFZGl0ICovDQpRTGluZUVkaXQgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiBRTGluZWFyR3JhZGllbnQoIHgxOiAwLCB5MTogMCwgeDI6IDAsIHkyOiAxLCBzdG9wOiAwICM0ZDRkNGQsIHN0b3A6IDAgIzY0NjQ2NCwgc3RvcDogMSAjNWQ1ZDVkKTsNCiAgcGFkZGluZzogMXB4Ow0KICBib3JkZXItc3R5bGU6IHNvbGlkOw0KICBib3JkZXI6IDFweCBzb2xpZCAjNTk1OTU5Ow0KICBib3JkZXItcmFkaXVzOiAwcHg7DQp9DQoNCi8qIFFQcm9ncmVzc0JhciAqLw0KUVByb2dyZXNzQmFyIHsNCiAgYm9yZGVyOiB0cmFuc3BhcmVudDsNCiAgYm9yZGVyLXJhZGl1czogMXB4Ow0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQpRUHJvZ3Jlc3NCYXI6OmNodW5rIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogUUxpbmVhckdyYWRpZW50KCB4MTogMCwgeTE6IDAsIHgyOiAwLCB5MjogMSwgc3RvcDogMCAjNTY5ZGU1LCBzdG9wOiAxICM0YjhhYzkpOw0KICB3aWR0aDogM3B4Ow0KICBtYXJnaW46IDAuNXB4Ow0KfQ0KDQovKiBRQ2hlY2tCb3ggKi8NClFDaGVja0JveDo6aW5kaWNhdG9yIHsNCiAgY29sb3I6ICNiMWIxYjE7DQogIGJhY2tncm91bmQtY29sb3I6ICMzMjMyMzI7DQogIGJvcmRlcjogMXB4IHNvbGlkICNiMWIxYjE7DQogIHdpZHRoOiA5cHg7DQogIGhlaWdodDogOXB4Ow0KfQ0KDQpRQ2hlY2tCb3g6OmluZGljYXRvcjpjaGVja2VkIHsNCiAgaW1hZ2U6IHVybCgjIy9pbWFnZXMvY2hlY2tib3gucG5nKQ0KfQ0KDQpRQ2hlY2tCb3g6OmluZGljYXRvcjpkaXNhYmxlZCB7DQogIGJvcmRlcjogMXB4IHNvbGlkICM0NDQNCn0NCg0KLyogUVJhZGlvQnV0dG9uICovDQpRUmFkaW9CdXR0b246OmluZGljYXRvcjpkaXNhYmxlZCB7DQogIGJvcmRlcjogMXB4IHNvbGlkICM0NDQNCn0NCg0KUVJhZGlvQnV0dG9uOjppbmRpY2F0b3Igew0KICBib3JkZXItcmFkaXVzOiA2cHgNCn0NCg0KUVJhZGlvQnV0dG9uOjppbmRpY2F0b3I6Y2hlY2tlZCwgUVJhZGlvQnV0dG9uOjppbmRpY2F0b3I6dW5jaGVja2VkIHsNCiAgY29sb3I6ICNiMWIxYjE7DQogIGJhY2tncm91bmQtY29sb3I6ICMzMjMyMzI7DQogIGJvcmRlcjogMXB4IHNvbGlkICNiMWIxYjE7DQp9DQoNClFSYWRpb0J1dHRvbjo6aW5kaWNhdG9yOmNoZWNrZWQgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiBxcmFkaWFsZ3JhZGllbnQoIGN4OiAwLjUsIGN5OiAwLjUsIGZ4OiAwLjUsIGZ5OiAwLjUsIHJhZGl1czogMS4wLCBzdG9wOiAwLjI1ICM1NjlkZTUsIHN0b3A6IDAuMyAjMzIzMjMyICkNCn0NCg0KUVJhZGlvQnV0dG9uOjppbmRpY2F0b3I6aG92ZXIsIFFDaGVja0JveDo6aW5kaWNhdG9yOmhvdmVyIHsNCiAgYm9yZGVyOiAxcHggc29saWQgIzU2OWRlNQ0KfQ==
\ No newline at end of file
diff --git a/resources/skins/base/vergilius.xml b/resources/skins/base/vergilius.xml
index 82a5fb5ac..1b0d8d087 100644
--- a/resources/skins/base/vergilius.xml
+++ b/resources/skins/base/vergilius.xml
@@ -6,7 +6,7 @@
rotter.martinos@gmail.com
- PGh0bWw+DQogIDxoZWFkPg0KICAgIDxzdHlsZT4NCiAgICAgIGJvZHkgew0KICAgICAgICBtYXJnaW46IDBweDsNCiAgICAgICAgcGFkZGluZzogMHB4Ow0KICAgICAgfQ0KICAgIA0KICAgICAgcHJlIHsNCiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOw0KICAgICAgfQ0KDQogICAgICAuaGVhZGVydGV4dCB7DQogICAgICAgIGZvbnQtc2l6ZTogMjBweDsNCiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsNCiAgICAgIH0NCg0KICAgICAgLmhlYWRlciB7DQogICAgICAgIGZvbnQtc2l6ZTogMTdweDsNCiAgICAgICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSxyZ2JhKDk5LDEzNSwyMjksMSkpLCBjb2xvci1zdG9wKDEwMCUscmdiYSg2NCwxMDksMjM2LDEpKSk7DQogICAgICAgIHBhZGRpbmc6IDZweDsNCiAgICAgICAgbWFyZ2luOiAwcHggYXV0bzsNCiAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICBib3JkZXI6IDAuNXB4IHNvbGlkIGJsYWNrOw0KICAgICAgfQ0KDQogICAgICAuaGVhZGVyIGEgew0KICAgICAgICBjb2xvcjogd2hpdGU7DQogICAgICB9DQoNCiAgICAgIC5jb250ZW50IHsNCiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGdyYXk7DQogICAgICAgIGZvbnQtc2l6ZTogMTZweDsNCiAgICAgICAgbWFyZ2luOiAwcHggYXV0bzsNCiAgICAgICAgcGFkZGluZzogNnB4Ow0KICAgICAgICBwYWRkaW5nLXRvcDogMTJweDsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgLmNvbnRhaW5lciB7DQogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGdyYXk7DQogICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4Ow0KICAgICAgICBtYXJnaW46IDEwcHg7DQogICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogMnB4IDJweCAxNnB4IDBweCByZ2JhKDUwLCA1MCwgNTAsIDAuNjIpOw0KICAgICAgfQ0KICAgIDwvc3R5bGU+DQogICAgPHRpdGxlPg0KICAgICAgJTENCiAgICA8L3RpdGxlPg0KICA8L2hlYWQ+DQogIDxib2R5Pg0KICAgICUyDQogIDwvYm9keT4NCjwvaHRtbD4=
+ PGh0bWw+DQogIDxoZWFkPg0KICAgIDxzdHlsZT4NCiAgICAgIGJvZHkgew0KICAgICAgICBtYXJnaW46IDBweDsNCiAgICAgICAgcGFkZGluZzogMHB4Ow0KICAgICAgfQ0KICAgIA0KICAgICAgcHJlIHsNCiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOw0KCQlmb250LWZhbWlseTogIkNvdXJpZXIgTmV3IiwgQ291cmllciwgbW9ub3NwYWNlOw0KICAgICAgfQ0KDQogICAgICAuaGVhZGVydGV4dCB7DQogICAgICAgIGZvbnQtc2l6ZTogMjBweDsNCiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsNCiAgICAgIH0NCg0KICAgICAgLmhlYWRlciB7DQogICAgICAgIGZvbnQtc2l6ZTogMTdweDsNCiAgICAgICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSxyZ2JhKDk5LDEzNSwyMjksMSkpLCBjb2xvci1zdG9wKDEwMCUscmdiYSg2NCwxMDksMjM2LDEpKSk7DQogICAgICAgIHBhZGRpbmc6IDZweDsNCiAgICAgICAgbWFyZ2luOiAwcHggYXV0bzsNCiAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICBib3JkZXI6IDAuNXB4IHNvbGlkIGJsYWNrOw0KICAgICAgfQ0KDQogICAgICAuaGVhZGVyIGEgew0KICAgICAgICBjb2xvcjogd2hpdGU7DQogICAgICB9DQoNCiAgICAgIC5jb250ZW50IHsNCiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGdyYXk7DQogICAgICAgIGZvbnQtc2l6ZTogMTZweDsNCiAgICAgICAgbWFyZ2luOiAwcHggYXV0bzsNCiAgICAgICAgcGFkZGluZzogNnB4Ow0KICAgICAgICBwYWRkaW5nLXRvcDogMTJweDsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgLmNvbnRhaW5lciB7DQoJCWZvbnQtZmFtaWx5OiAiVHJlYnVjaGV0IE1TIiwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBncmF5Ow0KICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweDsNCiAgICAgICAgbWFyZ2luOiAxMHB4Ow0KICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDJweCAycHggMTZweCAwcHggcmdiYSg1MCwgNTAsIDUwLCAwLjYyKTsNCiAgICAgIH0NCiAgICA8L3N0eWxlPg0KICAgIDx0aXRsZT4NCiAgICAgICUxDQogICAgPC90aXRsZT4NCiAgPC9oZWFkPg0KICA8Ym9keT4NCiAgICAlMg0KICA8L2JvZHk+DQo8L2h0bWw+
ICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXJ0ZXh0Ij4NCiAgICAgICAgICAlMQ0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgJTIgKCU1KQ0KICAgICAgICA8YnI+DQogICAgICAgIDxhIGhyZWY9IiUzIj4NCiAgICAgICAgICAlMw0KICAgICAgICA8L2E+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KICAgICAgICAlNCANCiAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg==
UVRyZWVWaWV3OjpicmFuY2g6aGFzLXNpYmxpbmdzOiFhZGpvaW5zLWl0ZW0gIHsNCiAgYm9yZGVyLWltYWdlOiB1cmwocXNzL2R1bW15LnBuZykgMDsNCn0NCg0KUVRyZWVWaWV3OjpicmFuY2g6aGFzLXNpYmxpbmdzOmFkam9pbnMtaXRlbSB7DQogIGJvcmRlci1pbWFnZTogdXJsKHFzcy9kdW1teS5wbmcpIDA7DQp9DQoNClFUcmVlVmlldzo6YnJhbmNoOiFoYXMtY2hpbGRyZW46IWhhcy1zaWJsaW5nczphZGpvaW5zLWl0ZW0gIHsNCiAgYm9yZGVyLWltYWdlOiB1cmwocXNzL2R1bW15LnBuZykgMDsNCn0NCg0KUVRyZWVWaWV3OjpicmFuY2g6aGFzLWNoaWxkcmVuOiFoYXMtc2libGluZ3M6Y2xvc2VkLA0KUVRyZWVWaWV3OjpicmFuY2g6Y2xvc2VkOmhhcy1jaGlsZHJlbjpoYXMtc2libGluZ3MgIHsNCiAgYm9yZGVyLWltYWdlOiBub25lOw0KICBpbWFnZTogdXJsKHFzcy9icmFuY2gtY2xvc2VkLnBuZyk7DQp9DQoNClFUcmVlVmlldzo6YnJhbmNoOm9wZW46aGFzLWNoaWxkcmVuOiFoYXMtc2libGluZ3MsDQpRVHJlZVZpZXc6OmJyYW5jaDpvcGVuOmhhcy1jaGlsZHJlbjpoYXMtc2libGluZ3MgIHsNCiAgYm9yZGVyLWltYWdlOiBub25lOw0KICBpbWFnZTogdXJsKHFzcy9icmFuY2gtb3Blbi5wbmcpOw0KfQ0KDQpRVHJlZVZpZXc6Oml0ZW0gew0KICBwYWRkaW5nOiAxcHggMXB4IDFweCAxcHg7DQp9IA0KDQpRVHJlZVZpZXdbaGlkZVRyZWU9InRydWUiXTo6YnJhbmNoOiFoYXMtY2hsaWRyZW46aGFzU2libGluZ3Mgew0KICBib3JkZXItaW1hZ2U6IG5vbmU7DQogIGltYWdlOiBub25lOw0KfQ0K
\ No newline at end of file
diff --git a/src/core/feedsmodel.cpp b/src/core/feedsmodel.cpp
index 82b5afc17..d781bd39e 100644
--- a/src/core/feedsmodel.cpp
+++ b/src/core/feedsmodel.cpp
@@ -137,21 +137,18 @@ bool FeedsModel::removeItem(const QModelIndex &index) {
if (index.isValid()) {
QModelIndex parent_index = index.parent();
FeedsModelRootItem *deleting_item = itemForIndex(index);
- FeedsModelRootItem *parent_item = itemForIndex(parent_index);
+ FeedsModelRootItem *parent_item = deleting_item->parent();
// Try to persistently remove the item.
if (deleting_item->removeItself()) {
// Item was persistently removed.
// Remove it from the model.
beginRemoveRows(parent_index, index.row(), index.row());
-
- if (parent_item->removeChild(deleting_item)) {
- // Free deleted item (and its children) from the memory.
- delete deleting_item;
- }
-
+ parent_item->removeChild(deleting_item);
endRemoveRows();
+ delete deleting_item;
+
return true;
}
}
@@ -204,11 +201,7 @@ bool FeedsModel::addStandardCategory(FeedsModelStandardCategory *category,
// Category was added to the persistent storage,
// so add it to the model.
beginInsertRows(parent_index, parent->childCount(), parent->childCount());
-
- // Add category to parent's children list.
parent->appendChild(category);
-
- // Everything is completed now.
endInsertRows();
return true;
@@ -219,6 +212,8 @@ bool FeedsModel::editStandardCategory(FeedsModelStandardCategory *original_categ
QSqlDatabase database = DatabaseFactory::instance()->connection(objectName(),
DatabaseFactory::FromSettings);
QSqlQuery query_update_category(database);
+ FeedsModelRootItem *original_parent = original_category->parent();
+ FeedsModelRootItem *new_parent = new_category->parent();
query_update_category.setForwardOnly(true);
query_update_category.prepare("UPDATE Categories "
@@ -227,38 +222,44 @@ bool FeedsModel::editStandardCategory(FeedsModelStandardCategory *original_categ
query_update_category.bindValue(":title", new_category->title());
query_update_category.bindValue(":description", new_category->description());
query_update_category.bindValue(":icon", IconFactory::toByteArray(new_category->icon()));
- query_update_category.bindValue(":parent_id", new_category->parent()->id());
+ query_update_category.bindValue(":parent_id", new_parent->id());
query_update_category.bindValue(":id", original_category->id());
if (!query_update_category.exec()) {
+ // Persistent storage update failed, no way to continue now.
return false;
}
- // TODO: nastavit originalni kategorii podle nove; doimplementovat
- // celkove dodelat
+ // Setup new model data for the original item.
+ original_category->setDescription(new_category->description());
+ original_category->setIcon(new_category->icon());
+ original_category->setTitle(new_category->title());
- if (original_category->parent() != new_category->parent()) {
- // User edited category but left its parent intact.
- beginRemoveRows(indexForItem(original_category->parent()),
- original_category->parent()->childItems().indexOf(original_category),
- original_category->parent()->childItems().indexOf(original_category));
-
- original_category->parent()->removeChild(original_category);
+ if (original_parent != new_parent) {
+ // User edited category and set it new parent item,
+ // se we need to move the item in the model too.
+ int original_index_of_category = original_parent->childItems().indexOf(original_category);
+ int new_index_of_category = new_parent->childCount();
+ // Remove the original item from the model...
+ beginRemoveRows(indexForItem(original_parent),
+ original_index_of_category,
+ original_index_of_category);
+ original_parent->removeChild(original_category);
endRemoveRows();
- beginInsertRows(indexForItem(new_category->parent()),
- new_category->parent()->childCount(),
- new_category->parent()->childCount());
-
- new_category->parent()->appendChild(original_category);
-
+ // ... and insert it under the new parent.
+ beginInsertRows(indexForItem(new_parent),
+ new_index_of_category,
+ new_index_of_category);
+ new_parent->appendChild(original_category);
endInsertRows();
}
// Free temporary category from memory.
delete new_category;
+ // Editing is done.
return true;
}
diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp
index ebfba9eae..52f05580b 100644
--- a/src/gui/feedmessageviewer.cpp
+++ b/src/gui/feedmessageviewer.cpp
@@ -217,8 +217,8 @@ void FeedMessageViewer::createConnections() {
SIGNAL(triggered()), this, SLOT(updateSelectedFeeds()));
connect(FormMain::instance()->m_ui->m_actionUpdateAllFeeds,
SIGNAL(triggered()), this, SLOT(updateAllFeeds()));
- connect(FormMain::instance()->m_ui->m_actionAddNewCategory,
- SIGNAL(triggered()), m_feedsView, SLOT(addNewCategory()));
+ connect(FormMain::instance()->m_ui->m_actionAddStandardCategory,
+ SIGNAL(triggered()), m_feedsView, SLOT(addNewStandardCategory()));
connect(FormMain::instance()->m_ui->m_actionEditSelectedFeedCategory,
SIGNAL(triggered()), m_feedsView, SLOT(editSelectedItem()));
connect(FormMain::instance()->m_ui->m_actionViewSelectedItemsNewspaperMode,
diff --git a/src/gui/feedsview.cpp b/src/gui/feedsview.cpp
index 3b5be13ff..ee74f74fb 100644
--- a/src/gui/feedsview.cpp
+++ b/src/gui/feedsview.cpp
@@ -8,7 +8,7 @@
#include "core/feedsmodelcategory.h"
#include "core/feedsmodelstandardcategory.h"
#include "gui/formmain.h"
-#include "gui/formcategorydetails.h"
+#include "gui/formstandardcategorydetails.h"
#include
#include
@@ -69,8 +69,8 @@ void FeedsView::clearSelectedFeeds() {
setSelectedFeedsClearStatus(1);
}
-void FeedsView::addNewCategory() {
- QPointer form_pointer = new FormCategoryDetails(m_sourceModel, this);
+void FeedsView::addNewStandardCategory() {
+ QPointer form_pointer = new FormStandardCategoryDetails(m_sourceModel, this);
if (form_pointer.data()->exec(NULL) == QDialog::Accepted) {
// TODO: nova kategorie pridana
@@ -82,8 +82,25 @@ void FeedsView::addNewCategory() {
delete form_pointer.data();
}
+void FeedsView::editStandardCategory(FeedsModelStandardCategory *category) {
+ FeedsModelStandardCategory *std_category = static_cast(category);
+ QPointer form_pointer = new FormStandardCategoryDetails(m_sourceModel, this);
+
+ if (form_pointer.data()->exec(std_category) == QDialog::Accepted) {
+ // TODO: kategorie upravena
+ }
+ else {
+ // TODO: kategorie neupravena (uživatel zrušil dialog)
+ }
+
+ delete form_pointer.data();
+}
+
void FeedsView::editSelectedItem() {
- // TODO: Implement this.
+ // TODO: preda pridavanim/upravou/mazanim kanalu/kategorii
+ // ziskat ZAPISOVACI zamek pres systemfactory::applicationCloseLock
+ // a po dokonceni cinnosti jej odevzdavat
+
FeedsModelCategory *category;
FeedsModelFeed *feed;
@@ -92,18 +109,7 @@ void FeedsView::editSelectedItem() {
switch (category->type()) {
case FeedsModelCategory::Standard: {
// User wants to edit standard category.
- FeedsModelStandardCategory *std_category = static_cast(category);
-
- QPointer form_pointer = new FormCategoryDetails(m_sourceModel, this);
-
- if (form_pointer.data()->exec(std_category) == QDialog::Accepted) {
- // TODO: kategorie upravena
- }
- else {
- // TODO: kategorie neupravena
- }
-
- delete form_pointer.data();
+ editStandardCategory(static_cast(category));
break;
}
diff --git a/src/gui/feedsview.h b/src/gui/feedsview.h
index 45f049501..a9cdde993 100644
--- a/src/gui/feedsview.h
+++ b/src/gui/feedsview.h
@@ -68,11 +68,14 @@ class FeedsView : public QTreeView {
void setSelectedFeedsClearStatus(int clear);
void clearSelectedFeeds();
- // Category operators.
- void addNewCategory();
+ // Base manipulators.
void editSelectedItem();
void deleteSelectedItem();
+ // Standard category manipulators.
+ void addNewStandardCategory();
+ void editStandardCategory(FeedsModelStandardCategory *category);
+
// Reloads counts for selected feeds.
void updateCountsOfSelectedFeeds(bool update_total_too = true);
diff --git a/src/gui/formmain.cpp b/src/gui/formmain.cpp
index 5256e9c49..bf6591549 100755
--- a/src/gui/formmain.cpp
+++ b/src/gui/formmain.cpp
@@ -223,7 +223,7 @@ void FormMain::setupIcons() {
m_ui->m_actionClearFeeds->setIcon(IconThemeFactory::instance()->fromTheme("mail-mark-junk"));
m_ui->m_actionDeleteSelectedFeedCategory->setIcon(IconThemeFactory::instance()->fromTheme("edit-delete"));
m_ui->m_actionDeleteSelectedMessages->setIcon(IconThemeFactory::instance()->fromTheme("mail-mark-junk"));
- m_ui->m_actionAddNewCategory->setIcon(IconThemeFactory::instance()->fromTheme("document-new"));
+ m_ui->m_actionAddStandardCategory->setIcon(IconThemeFactory::instance()->fromTheme("document-new"));
m_ui->m_actionAddNewFeed->setIcon(IconThemeFactory::instance()->fromTheme("document-new"));
m_ui->m_actionEditSelectedFeedCategory->setIcon(IconThemeFactory::instance()->fromTheme("gnome-other"));
m_ui->m_actionMarkAllFeedsRead->setIcon(IconThemeFactory::instance()->fromTheme("mail-mark-not-junk"));
diff --git a/src/gui/formmain.ui b/src/gui/formmain.ui
index b117b2cc1..0d4ab8c9e 100644
--- a/src/gui/formmain.ui
+++ b/src/gui/formmain.ui
@@ -15,7 +15,16 @@
-
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
0
-
@@ -39,7 +48,7 @@
0
0
979
- 20
+ 21