Merge pull request #97 from Bombe/focus-host-input
authorManuel Nickschas <sputnick@quassel-irc.org>
Sat, 7 Feb 2015 16:57:26 +0000 (17:57 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sat, 7 Feb 2015 16:57:26 +0000 (17:57 +0100)
Set initial focus to host input widget.

811 files changed:
.travis.yml
CMakeLists.txt
cmake/FindQCA2-QT5.cmake [new file with mode: 0644]
cmake/QuasselInstallDirs.cmake [new file with mode: 0644]
data/CMakeLists.txt
data/quassel.desktop
data/quasselclient.desktop
icons/CMakeLists.txt
icons/README.Oxygen
icons/hicolor.qrc
icons/hicolor/16x16/actions/im-user-away.png [moved from icons/oxygen_kde/16x16/actions/im-user-away.png with 100% similarity]
icons/hicolor/16x16/actions/im-user-offline.png [moved from icons/oxygen_kde/16x16/actions/im-user-offline.png with 100% similarity]
icons/hicolor/16x16/actions/im-user.png [moved from icons/oxygen_kde/16x16/actions/im-user.png with 100% similarity]
icons/hicolor/16x16/status/irc-channel-joined.png [moved from icons/oxygen/16x16/status/irc-channel-active.png with 100% similarity]
icons/hicolor/16x16/status/irc-channel-parted.png [moved from icons/oxygen/16x16/status/irc-channel-inactive.png with 100% similarity]
icons/hicolor/scalable/status/irc-channel-joined.svgz [moved from icons/oxygen/scalable/status/irc-channel-active.svgz with 100% similarity]
icons/hicolor/scalable/status/irc-channel-parted.svgz [moved from icons/oxygen/scalable/status/irc-channel-inactive.svgz with 100% similarity]
icons/import/blacklisted-icons
icons/import/extra-icons
icons/import/import_oxygen.pl
icons/oxygen.qrc
icons/oxygen/128x128/actions/application-exit.png [new file with mode: 0644]
icons/oxygen/128x128/actions/configure.png [new file with mode: 0644]
icons/oxygen/128x128/actions/document-edit.png [new file with mode: 0644]
icons/oxygen/128x128/actions/edit-find.png [new file with mode: 0644]
icons/oxygen/128x128/actions/go-down.png [new file with mode: 0644]
icons/oxygen/128x128/actions/go-next.png [new file with mode: 0644]
icons/oxygen/128x128/actions/go-previous.png [new file with mode: 0644]
icons/oxygen/128x128/actions/go-up.png [new file with mode: 0644]
icons/oxygen/128x128/actions/im-ban-kick-user.png [new file with mode: 0644]
icons/oxygen/128x128/actions/im-ban-user.png [new file with mode: 0644]
icons/oxygen/128x128/actions/im-kick-user.png [new file with mode: 0644]
icons/oxygen/128x128/actions/im-user-away.png [new file with mode: 0644]
icons/oxygen/128x128/actions/im-user-offline.png [new file with mode: 0644]
icons/oxygen/128x128/actions/im-user.png [new file with mode: 0644]
icons/oxygen/128x128/actions/list-add-user.png [new file with mode: 0644]
icons/oxygen/128x128/actions/mail-message-new.png [new file with mode: 0644]
icons/oxygen/128x128/actions/tools-report-bug.png [new file with mode: 0644]
icons/oxygen/128x128/apps/quassel.png [moved from icons/oxygen_kde/128x128/apps/quassel.png with 100% similarity]
icons/oxygen/128x128/devices/network-wired.png [new file with mode: 0644]
icons/oxygen/128x128/status/dialog-information.png [new file with mode: 0644]
icons/oxygen/128x128/status/security-high.png [new file with mode: 0644]
icons/oxygen/128x128/status/security-low.png [new file with mode: 0644]
icons/oxygen/16x16/actions/application-exit.png [moved from icons/oxygen_kde/16x16/actions/application-exit.png with 100% similarity]
icons/oxygen/16x16/actions/configure-shortcuts.png [moved from icons/oxygen_kde/16x16/actions/configure-shortcuts.png with 100% similarity]
icons/oxygen/16x16/actions/configure.png [moved from icons/oxygen_kde/16x16/actions/configure.png with 100% similarity]
icons/oxygen/16x16/actions/dialog-cancel.png [moved from icons/oxygen_kde/16x16/actions/dialog-cancel.png with 100% similarity]
icons/oxygen/16x16/actions/dialog-close.png [new file with mode: 0644]
icons/oxygen/16x16/actions/document-edit.png [moved from icons/oxygen_kde/16x16/actions/document-edit.png with 100% similarity]
icons/oxygen/16x16/actions/document-encrypt.png [moved from icons/oxygen_kde/16x16/actions/document-encrypt.png with 100% similarity]
icons/oxygen/16x16/actions/document-open.png [moved from icons/oxygen_kde/16x16/actions/document-open.png with 100% similarity]
icons/oxygen/16x16/actions/edit-clear-locationbar-ltr.png [moved from icons/oxygen_kde/16x16/actions/edit-clear-locationbar-ltr.png with 100% similarity]
icons/oxygen/16x16/actions/edit-clear-locationbar-rtl.png [moved from icons/oxygen_kde/16x16/actions/edit-clear-locationbar-rtl.png with 100% similarity]
icons/oxygen/16x16/actions/edit-copy.png [moved from icons/oxygen_kde/16x16/actions/edit-copy.png with 100% similarity]
icons/oxygen/16x16/actions/edit-delete.png [moved from icons/oxygen_kde/16x16/actions/edit-delete.png with 100% similarity]
icons/oxygen/16x16/actions/edit-find.png [moved from icons/oxygen_kde/16x16/actions/edit-find.png with 100% similarity]
icons/oxygen/16x16/actions/edit-rename.png [moved from icons/oxygen_kde/16x16/actions/edit-rename.png with 100% similarity]
icons/oxygen/16x16/actions/flag-blue.png [moved from icons/oxygen_kde/16x16/actions/flag-blue.png with 100% similarity]
icons/oxygen/16x16/actions/format-fill-color.png [moved from icons/oxygen_kde/16x16/actions/format-fill-color.png with 100% similarity]
icons/oxygen/16x16/actions/format-list-unordered.png [new file with mode: 0644]
icons/oxygen/16x16/actions/format-text-bold.png [moved from icons/oxygen_kde/16x16/actions/format-text-bold.png with 100% similarity]
icons/oxygen/16x16/actions/format-text-color.png [moved from icons/oxygen_kde/16x16/actions/format-text-color.png with 100% similarity]
icons/oxygen/16x16/actions/format-text-italic.png [moved from icons/oxygen_kde/16x16/actions/format-text-italic.png with 100% similarity]
icons/oxygen/16x16/actions/format-text-underline.png [moved from icons/oxygen_kde/16x16/actions/format-text-underline.png with 100% similarity]
icons/oxygen/16x16/actions/go-down.png [moved from icons/oxygen_kde/16x16/actions/go-down.png with 100% similarity]
icons/oxygen/16x16/actions/go-next-view.png [moved from icons/oxygen_kde/16x16/actions/go-next-view.png with 100% similarity]
icons/oxygen/16x16/actions/go-next.png [moved from icons/oxygen_kde/16x16/actions/go-next.png with 100% similarity]
icons/oxygen/16x16/actions/go-previous-view.png [moved from icons/oxygen_kde/16x16/actions/go-previous-view.png with 100% similarity]
icons/oxygen/16x16/actions/go-previous.png [moved from icons/oxygen_kde/16x16/actions/go-previous.png with 100% similarity]
icons/oxygen/16x16/actions/go-up.png [moved from icons/oxygen_kde/16x16/actions/go-up.png with 100% similarity]
icons/oxygen/16x16/actions/help-about.png [moved from icons/oxygen_kde/16x16/actions/help-about.png with 100% similarity]
icons/oxygen/16x16/actions/im-ban-kick-user.png [moved from icons/oxygen_kde/16x16/actions/im-ban-kick-user.png with 100% similarity]
icons/oxygen/16x16/actions/im-ban-user.png [moved from icons/oxygen_kde/16x16/actions/im-ban-user.png with 100% similarity]
icons/oxygen/16x16/actions/im-kick-user.png [moved from icons/oxygen_kde/16x16/actions/im-kick-user.png with 100% similarity]
icons/oxygen/16x16/actions/im-user-away.png [new file with mode: 0644]
icons/oxygen/16x16/actions/im-user-offline.png [new file with mode: 0644]
icons/oxygen/16x16/actions/im-user.png [new file with mode: 0644]
icons/oxygen/16x16/actions/irc-close-channel.png [moved from icons/oxygen_kde/16x16/actions/irc-close-channel.png with 100% similarity]
icons/oxygen/16x16/actions/irc-join-channel.png [moved from icons/oxygen_kde/16x16/actions/irc-join-channel.png with 100% similarity]
icons/oxygen/16x16/actions/irc-operator.png [moved from icons/oxygen_kde/16x16/actions/irc-operator.png with 100% similarity]
icons/oxygen/16x16/actions/irc-remove-operator.png [moved from icons/oxygen_kde/16x16/actions/irc-remove-operator.png with 100% similarity]
icons/oxygen/16x16/actions/irc-unvoice.png [moved from icons/oxygen_kde/16x16/actions/irc-unvoice.png with 100% similarity]
icons/oxygen/16x16/actions/irc-voice.png [moved from icons/oxygen_kde/16x16/actions/irc-voice.png with 100% similarity]
icons/oxygen/16x16/actions/list-add-user.png [new file with mode: 0644]
icons/oxygen/16x16/actions/list-add.png [moved from icons/oxygen_kde/16x16/actions/list-add.png with 100% similarity]
icons/oxygen/16x16/actions/list-remove-user.png [new file with mode: 0644]
icons/oxygen/16x16/actions/mail-message-new.png [moved from icons/oxygen_kde/16x16/actions/mail-message-new.png with 100% similarity]
icons/oxygen/16x16/actions/media-playback-start.png [moved from icons/oxygen_kde/16x16/actions/media-playback-start.png with 100% similarity]
icons/oxygen/16x16/actions/network-connect.png [moved from icons/oxygen_kde/16x16/actions/network-connect.png with 100% similarity]
icons/oxygen/16x16/actions/network-disconnect.png [moved from icons/oxygen_kde/16x16/actions/network-disconnect.png with 100% similarity]
icons/oxygen/16x16/actions/show-menu.png [moved from icons/oxygen_kde/16x16/actions/show-menu.png with 100% similarity]
icons/oxygen/16x16/actions/tools-report-bug.png [moved from icons/oxygen_kde/16x16/actions/tools-report-bug.png with 100% similarity]
icons/oxygen/16x16/actions/view-fullscreen.png [moved from icons/oxygen_kde/16x16/actions/view-fullscreen.png with 100% similarity]
icons/oxygen/16x16/actions/view-refresh.png [moved from icons/oxygen_kde/16x16/actions/view-refresh.png with 100% similarity]
icons/oxygen/16x16/actions/zoom-in.png [moved from icons/oxygen_kde/16x16/actions/zoom-in.png with 100% similarity]
icons/oxygen/16x16/actions/zoom-original.png [moved from icons/oxygen_kde/16x16/actions/zoom-original.png with 100% similarity]
icons/oxygen/16x16/actions/zoom-out.png [moved from icons/oxygen_kde/16x16/actions/zoom-out.png with 100% similarity]
icons/oxygen/16x16/apps/quassel.png [moved from icons/oxygen_kde/16x16/apps/quassel.png with 100% similarity]
icons/oxygen/16x16/devices/network-wired.png [moved from icons/oxygen_kde/16x16/devices/network-wired.png with 100% similarity]
icons/oxygen/16x16/status/dialog-information.png [moved from icons/oxygen_kde/16x16/status/dialog-information.png with 100% similarity]
icons/oxygen/16x16/status/security-high.png [moved from icons/oxygen_kde/16x16/status/security-high.png with 100% similarity]
icons/oxygen/16x16/status/security-low.png [moved from icons/oxygen_kde/16x16/status/security-low.png with 100% similarity]
icons/oxygen/16x16/status/user-away.png [moved from icons/oxygen_kde/16x16/status/user-away.png with 100% similarity]
icons/oxygen/22x22/actions/application-exit.png [new file with mode: 0644]
icons/oxygen/22x22/actions/configure-shortcuts.png [new file with mode: 0644]
icons/oxygen/22x22/actions/configure.png [new file with mode: 0644]
icons/oxygen/22x22/actions/dialog-cancel.png [new file with mode: 0644]
icons/oxygen/22x22/actions/dialog-close.png [moved from icons/oxygen_kde/22x22/actions/dialog-close.png with 100% similarity]
icons/oxygen/22x22/actions/document-edit.png [new file with mode: 0644]
icons/oxygen/22x22/actions/document-encrypt.png [new file with mode: 0644]
icons/oxygen/22x22/actions/document-open.png [new file with mode: 0644]
icons/oxygen/22x22/actions/edit-clear-locationbar-ltr.png [new file with mode: 0644]
icons/oxygen/22x22/actions/edit-clear-locationbar-rtl.png [moved from icons/oxygen_kde/22x22/actions/edit-clear-locationbar-rtl.png with 100% similarity]
icons/oxygen/22x22/actions/edit-copy.png [new file with mode: 0644]
icons/oxygen/22x22/actions/edit-delete.png [new file with mode: 0644]
icons/oxygen/22x22/actions/edit-find.png [new file with mode: 0644]
icons/oxygen/22x22/actions/edit-rename.png [moved from icons/oxygen_kde/22x22/actions/edit-rename.png with 100% similarity]
icons/oxygen/22x22/actions/flag-blue.png [new file with mode: 0644]
icons/oxygen/22x22/actions/format-fill-color.png [new file with mode: 0644]
icons/oxygen/22x22/actions/format-list-unordered.png [new file with mode: 0644]
icons/oxygen/22x22/actions/format-text-bold.png [new file with mode: 0644]
icons/oxygen/22x22/actions/format-text-color.png [new file with mode: 0644]
icons/oxygen/22x22/actions/format-text-italic.png [new file with mode: 0644]
icons/oxygen/22x22/actions/format-text-underline.png [new file with mode: 0644]
icons/oxygen/22x22/actions/go-down.png [new file with mode: 0644]
icons/oxygen/22x22/actions/go-next-view.png [new file with mode: 0644]
icons/oxygen/22x22/actions/go-next.png [new file with mode: 0644]
icons/oxygen/22x22/actions/go-previous-view.png [new file with mode: 0644]
icons/oxygen/22x22/actions/go-previous.png [new file with mode: 0644]
icons/oxygen/22x22/actions/go-up.png [new file with mode: 0644]
icons/oxygen/22x22/actions/help-about.png [new file with mode: 0644]
icons/oxygen/22x22/actions/im-ban-kick-user.png [new file with mode: 0644]
icons/oxygen/22x22/actions/im-ban-user.png [new file with mode: 0644]
icons/oxygen/22x22/actions/im-kick-user.png [new file with mode: 0644]
icons/oxygen/22x22/actions/im-user-away.png [new file with mode: 0644]
icons/oxygen/22x22/actions/im-user-offline.png [new file with mode: 0644]
icons/oxygen/22x22/actions/im-user.png [new file with mode: 0644]
icons/oxygen/22x22/actions/irc-close-channel.png [new file with mode: 0644]
icons/oxygen/22x22/actions/irc-join-channel.png [new file with mode: 0644]
icons/oxygen/22x22/actions/irc-operator.png [new file with mode: 0644]
icons/oxygen/22x22/actions/irc-remove-operator.png [new file with mode: 0644]
icons/oxygen/22x22/actions/irc-unvoice.png [new file with mode: 0644]
icons/oxygen/22x22/actions/irc-voice.png [new file with mode: 0644]
icons/oxygen/22x22/actions/list-add-user.png [moved from icons/oxygen_kde/22x22/actions/list-add-user.png with 100% similarity]
icons/oxygen/22x22/actions/list-add.png [new file with mode: 0644]
icons/oxygen/22x22/actions/list-remove-user.png [moved from icons/oxygen_kde/22x22/actions/list-remove-user.png with 100% similarity]
icons/oxygen/22x22/actions/mail-message-new.png [new file with mode: 0644]
icons/oxygen/22x22/actions/media-playback-start.png [new file with mode: 0644]
icons/oxygen/22x22/actions/network-connect.png [new file with mode: 0644]
icons/oxygen/22x22/actions/network-disconnect.png [new file with mode: 0644]
icons/oxygen/22x22/actions/show-menu.png [new file with mode: 0644]
icons/oxygen/22x22/actions/tools-report-bug.png [new file with mode: 0644]
icons/oxygen/22x22/actions/view-fullscreen.png [new file with mode: 0644]
icons/oxygen/22x22/actions/view-refresh.png [new file with mode: 0644]
icons/oxygen/22x22/actions/zoom-in.png [new file with mode: 0644]
icons/oxygen/22x22/actions/zoom-original.png [new file with mode: 0644]
icons/oxygen/22x22/actions/zoom-out.png [new file with mode: 0644]
icons/oxygen/22x22/apps/quassel.png [moved from icons/oxygen_kde/22x22/apps/quassel.png with 100% similarity]
icons/oxygen/22x22/devices/network-wired.png [new file with mode: 0644]
icons/oxygen/22x22/status/dialog-information.png [new file with mode: 0644]
icons/oxygen/22x22/status/security-high.png [new file with mode: 0644]
icons/oxygen/22x22/status/security-low.png [new file with mode: 0644]
icons/oxygen/22x22/status/user-away.png [new file with mode: 0644]
icons/oxygen/256x256/apps/quassel.png [new file with mode: 0644]
icons/oxygen/256x256/devices/network-wired.png [new file with mode: 0644]
icons/oxygen/32x32/actions/application-exit.png [new file with mode: 0644]
icons/oxygen/32x32/actions/configure-shortcuts.png [new file with mode: 0644]
icons/oxygen/32x32/actions/configure.png [new file with mode: 0644]
icons/oxygen/32x32/actions/dialog-cancel.png [new file with mode: 0644]
icons/oxygen/32x32/actions/dialog-close.png [new file with mode: 0644]
icons/oxygen/32x32/actions/document-edit.png [new file with mode: 0644]
icons/oxygen/32x32/actions/document-encrypt.png [new file with mode: 0644]
icons/oxygen/32x32/actions/document-open.png [new file with mode: 0644]
icons/oxygen/32x32/actions/edit-clear-locationbar-ltr.png [new file with mode: 0644]
icons/oxygen/32x32/actions/edit-clear-locationbar-rtl.png [new file with mode: 0644]
icons/oxygen/32x32/actions/edit-copy.png [new file with mode: 0644]
icons/oxygen/32x32/actions/edit-delete.png [new file with mode: 0644]
icons/oxygen/32x32/actions/edit-find.png [new file with mode: 0644]
icons/oxygen/32x32/actions/edit-rename.png [new file with mode: 0644]
icons/oxygen/32x32/actions/flag-blue.png [new file with mode: 0644]
icons/oxygen/32x32/actions/format-fill-color.png [new file with mode: 0644]
icons/oxygen/32x32/actions/format-list-unordered.png [new file with mode: 0644]
icons/oxygen/32x32/actions/format-text-bold.png [new file with mode: 0644]
icons/oxygen/32x32/actions/format-text-color.png [new file with mode: 0644]
icons/oxygen/32x32/actions/format-text-italic.png [new file with mode: 0644]
icons/oxygen/32x32/actions/format-text-underline.png [new file with mode: 0644]
icons/oxygen/32x32/actions/go-down.png [new file with mode: 0644]
icons/oxygen/32x32/actions/go-next-view.png [new file with mode: 0644]
icons/oxygen/32x32/actions/go-next.png [new file with mode: 0644]
icons/oxygen/32x32/actions/go-previous-view.png [new file with mode: 0644]
icons/oxygen/32x32/actions/go-previous.png [new file with mode: 0644]
icons/oxygen/32x32/actions/go-up.png [new file with mode: 0644]
icons/oxygen/32x32/actions/help-about.png [new file with mode: 0644]
icons/oxygen/32x32/actions/im-ban-kick-user.png [new file with mode: 0644]
icons/oxygen/32x32/actions/im-ban-user.png [new file with mode: 0644]
icons/oxygen/32x32/actions/im-kick-user.png [new file with mode: 0644]
icons/oxygen/32x32/actions/im-user-away.png [new file with mode: 0644]
icons/oxygen/32x32/actions/im-user-offline.png [new file with mode: 0644]
icons/oxygen/32x32/actions/im-user.png [new file with mode: 0644]
icons/oxygen/32x32/actions/irc-close-channel.png [new file with mode: 0644]
icons/oxygen/32x32/actions/irc-join-channel.png [new file with mode: 0644]
icons/oxygen/32x32/actions/irc-operator.png [new file with mode: 0644]
icons/oxygen/32x32/actions/irc-remove-operator.png [new file with mode: 0644]
icons/oxygen/32x32/actions/irc-unvoice.png [new file with mode: 0644]
icons/oxygen/32x32/actions/irc-voice.png [new file with mode: 0644]
icons/oxygen/32x32/actions/list-add-user.png [new file with mode: 0644]
icons/oxygen/32x32/actions/list-add.png [new file with mode: 0644]
icons/oxygen/32x32/actions/list-remove-user.png [new file with mode: 0644]
icons/oxygen/32x32/actions/mail-message-new.png [new file with mode: 0644]
icons/oxygen/32x32/actions/media-playback-start.png [new file with mode: 0644]
icons/oxygen/32x32/actions/network-connect.png [new file with mode: 0644]
icons/oxygen/32x32/actions/network-disconnect.png [new file with mode: 0644]
icons/oxygen/32x32/actions/show-menu.png [new file with mode: 0644]
icons/oxygen/32x32/actions/tools-report-bug.png [new file with mode: 0644]
icons/oxygen/32x32/actions/view-fullscreen.png [new file with mode: 0644]
icons/oxygen/32x32/actions/view-refresh.png [new file with mode: 0644]
icons/oxygen/32x32/actions/zoom-in.png [new file with mode: 0644]
icons/oxygen/32x32/actions/zoom-original.png [new file with mode: 0644]
icons/oxygen/32x32/actions/zoom-out.png [new file with mode: 0644]
icons/oxygen/32x32/apps/quassel.png [moved from icons/oxygen_kde/32x32/apps/quassel.png with 100% similarity]
icons/oxygen/32x32/devices/network-wired.png [new file with mode: 0644]
icons/oxygen/32x32/status/dialog-information.png [new file with mode: 0644]
icons/oxygen/32x32/status/security-high.png [new file with mode: 0644]
icons/oxygen/32x32/status/security-low.png [new file with mode: 0644]
icons/oxygen/32x32/status/user-away.png [new file with mode: 0644]
icons/oxygen/48x48/actions/application-exit.png [new file with mode: 0644]
icons/oxygen/48x48/actions/configure-shortcuts.png [new file with mode: 0644]
icons/oxygen/48x48/actions/configure.png [new file with mode: 0644]
icons/oxygen/48x48/actions/dialog-cancel.png [new file with mode: 0644]
icons/oxygen/48x48/actions/dialog-close.png [new file with mode: 0644]
icons/oxygen/48x48/actions/document-edit.png [new file with mode: 0644]
icons/oxygen/48x48/actions/document-encrypt.png [new file with mode: 0644]
icons/oxygen/48x48/actions/document-open.png [new file with mode: 0644]
icons/oxygen/48x48/actions/edit-clear-locationbar-ltr.png [new file with mode: 0644]
icons/oxygen/48x48/actions/edit-clear-locationbar-rtl.png [new file with mode: 0644]
icons/oxygen/48x48/actions/edit-copy.png [new file with mode: 0644]
icons/oxygen/48x48/actions/edit-delete.png [new file with mode: 0644]
icons/oxygen/48x48/actions/edit-find.png [new file with mode: 0644]
icons/oxygen/48x48/actions/edit-rename.png [new file with mode: 0644]
icons/oxygen/48x48/actions/flag-blue.png [new file with mode: 0644]
icons/oxygen/48x48/actions/format-fill-color.png [new file with mode: 0644]
icons/oxygen/48x48/actions/format-list-unordered.png [new file with mode: 0644]
icons/oxygen/48x48/actions/format-text-bold.png [new file with mode: 0644]
icons/oxygen/48x48/actions/format-text-color.png [new file with mode: 0644]
icons/oxygen/48x48/actions/format-text-italic.png [new file with mode: 0644]
icons/oxygen/48x48/actions/format-text-underline.png [new file with mode: 0644]
icons/oxygen/48x48/actions/go-down.png [new file with mode: 0644]
icons/oxygen/48x48/actions/go-next-view.png [new file with mode: 0644]
icons/oxygen/48x48/actions/go-next.png [new file with mode: 0644]
icons/oxygen/48x48/actions/go-previous-view.png [new file with mode: 0644]
icons/oxygen/48x48/actions/go-previous.png [new file with mode: 0644]
icons/oxygen/48x48/actions/go-up.png [new file with mode: 0644]
icons/oxygen/48x48/actions/help-about.png [moved from icons/oxygen_kde/48x48/status/dialog-information.png with 100% similarity]
icons/oxygen/48x48/actions/im-ban-kick-user.png [moved from icons/oxygen_kde/48x48/actions/im-ban-kick-user.png with 100% similarity]
icons/oxygen/48x48/actions/im-ban-user.png [moved from icons/oxygen_kde/48x48/actions/im-ban-user.png with 100% similarity]
icons/oxygen/48x48/actions/im-kick-user.png [moved from icons/oxygen_kde/48x48/actions/im-kick-user.png with 100% similarity]
icons/oxygen/48x48/actions/im-user-away.png [new file with mode: 0644]
icons/oxygen/48x48/actions/im-user-offline.png [new file with mode: 0644]
icons/oxygen/48x48/actions/im-user.png [moved from icons/oxygen_kde/48x48/actions/im-user.png with 100% similarity]
icons/oxygen/48x48/actions/irc-close-channel.png [moved from icons/oxygen_kde/48x48/actions/irc-close-channel.png with 100% similarity]
icons/oxygen/48x48/actions/irc-join-channel.png [moved from icons/oxygen_kde/48x48/actions/irc-join-channel.png with 100% similarity]
icons/oxygen/48x48/actions/irc-operator.png [moved from icons/oxygen_kde/48x48/actions/irc-operator.png with 100% similarity]
icons/oxygen/48x48/actions/irc-remove-operator.png [moved from icons/oxygen_kde/48x48/actions/irc-remove-operator.png with 100% similarity]
icons/oxygen/48x48/actions/irc-unvoice.png [moved from icons/oxygen_kde/48x48/actions/irc-unvoice.png with 100% similarity]
icons/oxygen/48x48/actions/irc-voice.png [moved from icons/oxygen_kde/48x48/actions/irc-voice.png with 100% similarity]
icons/oxygen/48x48/actions/list-add-user.png [new file with mode: 0644]
icons/oxygen/48x48/actions/list-add.png [new file with mode: 0644]
icons/oxygen/48x48/actions/list-remove-user.png [new file with mode: 0644]
icons/oxygen/48x48/actions/mail-message-new.png [moved from icons/oxygen_kde/48x48/actions/mail-message-new.png with 100% similarity]
icons/oxygen/48x48/actions/media-playback-start.png [new file with mode: 0644]
icons/oxygen/48x48/actions/network-connect.png [moved from icons/oxygen_kde/48x48/actions/network-connect.png with 100% similarity]
icons/oxygen/48x48/actions/network-disconnect.png [moved from icons/oxygen_kde/48x48/actions/network-disconnect.png with 100% similarity]
icons/oxygen/48x48/actions/show-menu.png [new file with mode: 0644]
icons/oxygen/48x48/actions/tools-report-bug.png [new file with mode: 0644]
icons/oxygen/48x48/actions/view-fullscreen.png [new file with mode: 0644]
icons/oxygen/48x48/actions/view-refresh.png [new file with mode: 0644]
icons/oxygen/48x48/actions/zoom-in.png [new file with mode: 0644]
icons/oxygen/48x48/actions/zoom-original.png [new file with mode: 0644]
icons/oxygen/48x48/actions/zoom-out.png [new file with mode: 0644]
icons/oxygen/48x48/apps/quassel.png [moved from icons/oxygen_kde/48x48/apps/quassel.png with 100% similarity]
icons/oxygen/48x48/devices/network-wired.png [new file with mode: 0644]
icons/oxygen/48x48/status/dialog-information.png [new file with mode: 0644]
icons/oxygen/48x48/status/security-high.png [new file with mode: 0644]
icons/oxygen/48x48/status/security-low.png [new file with mode: 0644]
icons/oxygen/48x48/status/user-away.png [new file with mode: 0644]
icons/oxygen/64x64/actions/application-exit.png [new file with mode: 0644]
icons/oxygen/64x64/actions/configure.png [new file with mode: 0644]
icons/oxygen/64x64/actions/document-edit.png [new file with mode: 0644]
icons/oxygen/64x64/actions/edit-find.png [new file with mode: 0644]
icons/oxygen/64x64/actions/go-down.png [new file with mode: 0644]
icons/oxygen/64x64/actions/go-next.png [new file with mode: 0644]
icons/oxygen/64x64/actions/go-previous.png [new file with mode: 0644]
icons/oxygen/64x64/actions/go-up.png [new file with mode: 0644]
icons/oxygen/64x64/actions/im-ban-kick-user.png [new file with mode: 0644]
icons/oxygen/64x64/actions/im-ban-user.png [new file with mode: 0644]
icons/oxygen/64x64/actions/im-kick-user.png [new file with mode: 0644]
icons/oxygen/64x64/actions/im-user-away.png [new file with mode: 0644]
icons/oxygen/64x64/actions/im-user-offline.png [new file with mode: 0644]
icons/oxygen/64x64/actions/im-user.png [new file with mode: 0644]
icons/oxygen/64x64/actions/list-add-user.png [new file with mode: 0644]
icons/oxygen/64x64/actions/tools-report-bug.png [new file with mode: 0644]
icons/oxygen/64x64/apps/quassel.png [moved from icons/oxygen_kde/64x64/apps/quassel.png with 100% similarity]
icons/oxygen/64x64/devices/network-wired.png [new file with mode: 0644]
icons/oxygen/64x64/status/dialog-information.png [new file with mode: 0644]
icons/oxygen/64x64/status/security-high.png [new file with mode: 0644]
icons/oxygen/64x64/status/security-low.png [new file with mode: 0644]
icons/oxygen/64x64/status/user-away.png [new file with mode: 0644]
icons/oxygen/AUTHORS
icons/oxygen/CONTRIBUTING
icons/oxygen/COPYING
icons/oxygen/index.theme [new file with mode: 0644]
icons/oxygen/scalable/actions/application-exit.svgz [moved from icons/oxygen_kde/scalable/actions/application-exit.svgz with 100% similarity]
icons/oxygen/scalable/actions/configure-shortcuts.svgz [moved from icons/oxygen_kde/scalable/actions/configure-shortcuts.svgz with 100% similarity]
icons/oxygen/scalable/actions/configure.svgz [moved from icons/oxygen_kde/scalable/actions/configure.svgz with 100% similarity]
icons/oxygen/scalable/actions/dialog-cancel.svgz [moved from icons/oxygen_kde/scalable/actions/dialog-cancel.svgz with 100% similarity]
icons/oxygen/scalable/actions/dialog-close.svgz [moved from icons/oxygen_kde/scalable/actions/dialog-close.svgz with 100% similarity]
icons/oxygen/scalable/actions/document-edit.svgz [moved from icons/oxygen_kde/scalable/actions/document-edit.svgz with 100% similarity]
icons/oxygen/scalable/actions/document-encrypt.svgz [moved from icons/oxygen_kde/scalable/actions/document-encrypt.svgz with 100% similarity]
icons/oxygen/scalable/actions/edit-clear-locationbar-ltr.svgz [moved from icons/oxygen_kde/scalable/actions/edit-clear-locationbar-ltr.svgz with 100% similarity]
icons/oxygen/scalable/actions/edit-clear-locationbar-rtl.svgz [moved from icons/oxygen_kde/scalable/actions/edit-clear-locationbar-rtl.svgz with 100% similarity]
icons/oxygen/scalable/actions/edit-copy.svgz [moved from icons/oxygen_kde/scalable/actions/edit-copy.svgz with 100% similarity]
icons/oxygen/scalable/actions/edit-delete.svgz [moved from icons/oxygen_kde/scalable/actions/edit-delete.svgz with 100% similarity]
icons/oxygen/scalable/actions/edit-find.svgz [moved from icons/oxygen_kde/scalable/actions/edit-find.svgz with 100% similarity]
icons/oxygen/scalable/actions/edit-rename.svgz [moved from icons/oxygen_kde/scalable/actions/edit-rename.svgz with 100% similarity]
icons/oxygen/scalable/actions/flag-blue.svgz [moved from icons/oxygen_kde/scalable/actions/flag-blue.svgz with 100% similarity]
icons/oxygen/scalable/actions/format-fill-color.svgz [moved from icons/oxygen_kde/scalable/actions/format-fill-color.svgz with 100% similarity]
icons/oxygen/scalable/actions/format-text-color.svgz [moved from icons/oxygen_kde/scalable/actions/format-text-color.svgz with 100% similarity]
icons/oxygen/scalable/actions/go-down.svgz [moved from icons/oxygen_kde/scalable/actions/go-down.svgz with 100% similarity]
icons/oxygen/scalable/actions/go-next-view.svgz [moved from icons/oxygen_kde/scalable/actions/go-next-view.svgz with 100% similarity]
icons/oxygen/scalable/actions/go-next.svgz [moved from icons/oxygen_kde/scalable/actions/go-next.svgz with 100% similarity]
icons/oxygen/scalable/actions/go-previous-view.svgz [moved from icons/oxygen_kde/scalable/actions/go-previous-view.svgz with 100% similarity]
icons/oxygen/scalable/actions/go-previous.svgz [moved from icons/oxygen_kde/scalable/actions/go-previous.svgz with 100% similarity]
icons/oxygen/scalable/actions/go-up.svgz [moved from icons/oxygen_kde/scalable/actions/go-up.svgz with 100% similarity]
icons/oxygen/scalable/actions/im-ban-kick-user.svgz [moved from icons/oxygen_kde/scalable/actions/im-ban-kick-user.svgz with 100% similarity]
icons/oxygen/scalable/actions/im-ban-user.svgz [moved from icons/oxygen_kde/scalable/actions/im-ban-user.svgz with 100% similarity]
icons/oxygen/scalable/actions/im-kick-user.svgz [moved from icons/oxygen_kde/scalable/actions/im-kick-user.svgz with 100% similarity]
icons/oxygen/scalable/actions/im-user-away.svgz [moved from icons/oxygen_kde/scalable/actions/im-user-away.svgz with 100% similarity]
icons/oxygen/scalable/actions/im-user-offline.svgz [moved from icons/oxygen_kde/scalable/actions/im-user-offline.svgz with 100% similarity]
icons/oxygen/scalable/actions/im-user.svgz [moved from icons/oxygen_kde/scalable/actions/im-user.svgz with 100% similarity]
icons/oxygen/scalable/actions/irc-close-channel.svgz [moved from icons/oxygen_kde/scalable/actions/irc-close-channel.svgz with 100% similarity]
icons/oxygen/scalable/actions/irc-join-channel.svgz [moved from icons/oxygen_kde/scalable/actions/irc-join-channel.svgz with 100% similarity]
icons/oxygen/scalable/actions/irc-operator.svgz [moved from icons/oxygen_kde/scalable/actions/irc-operator.svgz with 100% similarity]
icons/oxygen/scalable/actions/irc-remove-operator.svgz [moved from icons/oxygen_kde/scalable/actions/irc-remove-operator.svgz with 100% similarity]
icons/oxygen/scalable/actions/irc-unvoice.svgz [moved from icons/oxygen_kde/scalable/actions/irc-unvoice.svgz with 100% similarity]
icons/oxygen/scalable/actions/irc-voice.svgz [moved from icons/oxygen_kde/scalable/actions/irc-voice.svgz with 100% similarity]
icons/oxygen/scalable/actions/list-add-user.svgz [moved from icons/oxygen_kde/scalable/actions/list-add-user.svgz with 100% similarity]
icons/oxygen/scalable/actions/list-add.svgz [moved from icons/oxygen_kde/scalable/actions/list-add.svgz with 100% similarity]
icons/oxygen/scalable/actions/list-remove-user.svgz [moved from icons/oxygen_kde/scalable/actions/list-remove-user.svgz with 100% similarity]
icons/oxygen/scalable/actions/media-playback-start.svgz [moved from icons/oxygen_kde/scalable/actions/media-playback-start.svgz with 100% similarity]
icons/oxygen/scalable/actions/network-connect.svgz [moved from icons/oxygen_kde/scalable/actions/network-connect.svgz with 100% similarity]
icons/oxygen/scalable/actions/network-disconnect.svgz [moved from icons/oxygen_kde/scalable/actions/network-disconnect.svgz with 100% similarity]
icons/oxygen/scalable/actions/show-menu.svgz [moved from icons/oxygen_kde/scalable/actions/show-menu.svgz with 100% similarity]
icons/oxygen/scalable/actions/tools-report-bug.svgz [moved from icons/oxygen_kde/scalable/actions/tools-report-bug.svgz with 100% similarity]
icons/oxygen/scalable/actions/view-fullscreen.svgz [moved from icons/oxygen_kde/scalable/actions/view-fullscreen.svgz with 100% similarity]
icons/oxygen/scalable/actions/view-refresh.svgz [moved from icons/oxygen_kde/scalable/actions/view-refresh.svgz with 100% similarity]
icons/oxygen/scalable/apps/quassel.svgz [moved from icons/oxygen_kde/scalable/apps/quassel.svgz with 100% similarity]
icons/oxygen/scalable/devices/network-wired.svgz [moved from icons/oxygen_kde/scalable/devices/network-wired.svgz with 100% similarity]
icons/oxygen/scalable/status/dialog-information.svgz [moved from icons/oxygen_kde/scalable/status/dialog-information.svgz with 100% similarity]
icons/oxygen/scalable/status/security-high.svgz [moved from icons/oxygen_kde/scalable/status/security-high.svgz with 100% similarity]
icons/oxygen/scalable/status/security-low.svgz [moved from icons/oxygen_kde/scalable/status/security-low.svgz with 100% similarity]
icons/oxygen/scalable/status/user-away.svgz [moved from icons/oxygen_kde/scalable/status/user-away.svgz with 100% similarity]
icons/oxygen_kde.qrc [deleted file]
po/CMakeLists.txt
src/CMakeLists.txt
src/client/CMakeLists.txt
src/client/abstractmessageprocessor.cpp
src/client/abstractmessageprocessor.h
src/client/abstractui.h
src/client/backlogrequester.cpp
src/client/backlogrequester.h
src/client/backlogsettings.h
src/client/buffermodel.cpp
src/client/buffermodel.h
src/client/buffersettings.cpp
src/client/buffersettings.h
src/client/bufferviewoverlay.cpp
src/client/bufferviewoverlay.h
src/client/client.cpp
src/client/client.h
src/client/clientaliasmanager.cpp
src/client/clientaliasmanager.h
src/client/clientauthhandler.cpp
src/client/clientauthhandler.h
src/client/clientbacklogmanager.cpp
src/client/clientbacklogmanager.h
src/client/clientbufferviewconfig.cpp
src/client/clientbufferviewconfig.h
src/client/clientbufferviewmanager.cpp
src/client/clientbufferviewmanager.h
src/client/clientcoreinfo.h
src/client/clientidentity.cpp
src/client/clientidentity.h
src/client/clientignorelistmanager.cpp
src/client/clientignorelistmanager.h
src/client/clientirclisthelper.cpp
src/client/clientirclisthelper.h
src/client/clientsettings.cpp
src/client/clientsettings.h
src/client/clienttransfer.cpp
src/client/clienttransfer.h
src/client/clienttransfermanager.cpp
src/client/clienttransfermanager.h
src/client/clientuserinputhandler.cpp
src/client/clientuserinputhandler.h
src/client/coreaccount.cpp
src/client/coreaccount.h
src/client/coreaccountmodel.cpp
src/client/coreaccountmodel.h
src/client/coreconnection.cpp
src/client/coreconnection.h
src/client/execwrapper.cpp
src/client/execwrapper.h
src/client/irclistmodel.cpp
src/client/irclistmodel.h
src/client/messagefilter.cpp
src/client/messagefilter.h
src/client/messagemodel.cpp
src/client/messagemodel.h
src/client/networkmodel.cpp
src/client/networkmodel.h
src/client/selectionmodelsynchronizer.cpp
src/client/selectionmodelsynchronizer.h
src/client/treemodel.cpp
src/client/treemodel.h
src/common/CMakeLists.txt
src/common/abstractcliparser.h
src/common/aliasmanager.cpp
src/common/aliasmanager.h
src/common/authhandler.cpp
src/common/authhandler.h
src/common/backlogmanager.cpp
src/common/backlogmanager.h
src/common/basichandler.cpp
src/common/basichandler.h
src/common/bufferinfo.cpp
src/common/bufferinfo.h
src/common/buffersyncer.cpp
src/common/buffersyncer.h
src/common/bufferviewconfig.cpp
src/common/bufferviewconfig.h
src/common/bufferviewmanager.cpp
src/common/bufferviewmanager.h
src/common/cliparser.cpp
src/common/cliparser.h
src/common/compressor.cpp
src/common/compressor.h
src/common/coreinfo.h
src/common/ctcpevent.cpp
src/common/ctcpevent.h
src/common/event.cpp
src/common/event.h
src/common/eventmanager.cpp
src/common/eventmanager.h
src/common/identity.cpp
src/common/identity.h
src/common/ignorelistmanager.cpp
src/common/ignorelistmanager.h
src/common/internalpeer.cpp
src/common/internalpeer.h
src/common/ircchannel.cpp
src/common/ircchannel.h
src/common/ircevent.cpp
src/common/ircevent.h
src/common/irclisthelper.cpp
src/common/irclisthelper.h
src/common/ircuser.cpp
src/common/ircuser.h
src/common/logbacktrace_unix.cpp
src/common/logbacktrace_win.cpp
src/common/logger.cpp
src/common/logger.h
src/common/mac_utils.cpp
src/common/mac_utils.h
src/common/main.cpp
src/common/message.cpp
src/common/message.h
src/common/messageevent.cpp
src/common/messageevent.h
src/common/network.cpp
src/common/network.h
src/common/networkconfig.cpp
src/common/networkconfig.h
src/common/networkevent.cpp
src/common/networkevent.h
src/common/peer.cpp
src/common/peer.h
src/common/peerfactory.cpp
src/common/peerfactory.h
src/common/presetnetworks.cpp
src/common/presetnetworks.h
src/common/protocol.h
src/common/protocols/datastream/datastreampeer.cpp
src/common/protocols/datastream/datastreampeer.h
src/common/protocols/legacy/legacypeer.cpp
src/common/protocols/legacy/legacypeer.h
src/common/qt5cliparser.cpp [moved from src/uisupport/icon.h with 51% similarity]
src/common/qt5cliparser.h [moved from src/uisupport/icon.cpp with 74% similarity]
src/common/quassel.cpp
src/common/quassel.h
src/common/remotepeer.cpp
src/common/remotepeer.h
src/common/settings.cpp
src/common/settings.h
src/common/signalproxy.cpp
src/common/signalproxy.h
src/common/syncableobject.cpp
src/common/syncableobject.h
src/common/transfer.cpp
src/common/transfer.h
src/common/transfermanager.cpp
src/common/transfermanager.h
src/common/types.h
src/common/util.cpp
src/common/util.h
src/core/CMakeLists.txt
src/core/abstractsqlstorage.cpp
src/core/abstractsqlstorage.h
src/core/cipher.cpp
src/core/core.cpp
src/core/core.h
src/core/corealiasmanager.cpp
src/core/corealiasmanager.h
src/core/coreapplication.cpp
src/core/coreapplication.h
src/core/coreauthhandler.cpp
src/core/coreauthhandler.h
src/core/corebacklogmanager.cpp
src/core/corebacklogmanager.h
src/core/corebasichandler.cpp
src/core/corebasichandler.h
src/core/corebuffersyncer.cpp
src/core/corebuffersyncer.h
src/core/corebufferviewconfig.cpp
src/core/corebufferviewconfig.h
src/core/corebufferviewmanager.cpp
src/core/corebufferviewmanager.h
src/core/corecoreinfo.cpp
src/core/corecoreinfo.h
src/core/coreeventmanager.h
src/core/coreidentity.cpp
src/core/coreidentity.h
src/core/coreignorelistmanager.cpp
src/core/coreignorelistmanager.h
src/core/coreircchannel.cpp
src/core/coreircchannel.h
src/core/coreirclisthelper.cpp
src/core/coreirclisthelper.h
src/core/coreircuser.cpp
src/core/coreircuser.h
src/core/corenetwork.cpp
src/core/corenetwork.h
src/core/corenetworkconfig.cpp
src/core/corenetworkconfig.h
src/core/coresession.cpp
src/core/coresession.h
src/core/coresessioneventprocessor.cpp
src/core/coresessioneventprocessor.h
src/core/coresettings.cpp
src/core/coresettings.h
src/core/coretransfer.cpp
src/core/coretransfer.h
src/core/coretransfermanager.cpp
src/core/coretransfermanager.h
src/core/coreuserinputhandler.cpp
src/core/coreuserinputhandler.h
src/core/coreusersettings.cpp
src/core/coreusersettings.h
src/core/ctcpparser.cpp
src/core/ctcpparser.h
src/core/eventstringifier.cpp
src/core/eventstringifier.h
src/core/ircparser.cpp
src/core/ircparser.h
src/core/netsplit.cpp
src/core/netsplit.h
src/core/oidentdconfiggenerator.cpp
src/core/oidentdconfiggenerator.h
src/core/postgresqlstorage.cpp
src/core/postgresqlstorage.h
src/core/sessionthread.cpp
src/core/sessionthread.h
src/core/sqlitestorage.cpp
src/core/sqlitestorage.h
src/core/sslserver.cpp
src/core/sslserver.h
src/core/storage.cpp
src/core/storage.h
src/qtui/CMakeLists.txt
src/qtui/aboutdlg.cpp
src/qtui/aboutdlg.h
src/qtui/awaylogfilter.cpp
src/qtui/awaylogfilter.h
src/qtui/awaylogview.cpp
src/qtui/awaylogview.h
src/qtui/bufferwidget.cpp
src/qtui/bufferwidget.h
src/qtui/channellistdlg.cpp
src/qtui/channellistdlg.h
src/qtui/chatitem.cpp
src/qtui/chatitem.h
src/qtui/chatline.cpp
src/qtui/chatline.h
src/qtui/chatlinemodel.cpp
src/qtui/chatlinemodel.h
src/qtui/chatlinemodelitem.cpp
src/qtui/chatlinemodelitem.h
src/qtui/chatmonitorfilter.cpp
src/qtui/chatmonitorfilter.h
src/qtui/chatmonitorview.cpp
src/qtui/chatmonitorview.h
src/qtui/chatscene.cpp
src/qtui/chatscene.h
src/qtui/chatview.cpp
src/qtui/chatview.h
src/qtui/chatviewsearchbar.cpp
src/qtui/chatviewsearchbar.h
src/qtui/chatviewsearchcontroller.cpp
src/qtui/chatviewsearchcontroller.h
src/qtui/chatviewsettings.cpp
src/qtui/chatviewsettings.h
src/qtui/columnhandleitem.cpp
src/qtui/columnhandleitem.h
src/qtui/coreconfigwizard.cpp
src/qtui/coreconfigwizard.h
src/qtui/coreconnectdlg.cpp
src/qtui/coreconnectdlg.h
src/qtui/coreconnectionstatuswidget.cpp
src/qtui/coreconnectionstatuswidget.h
src/qtui/coreinfodlg.cpp
src/qtui/coreinfodlg.h
src/qtui/debugbufferviewoverlay.cpp
src/qtui/debugbufferviewoverlay.h
src/qtui/debugconsole.cpp
src/qtui/debugconsole.h
src/qtui/debuglogwidget.cpp
src/qtui/debuglogwidget.h
src/qtui/debugmessagemodelfilter.cpp
src/qtui/debugmessagemodelfilter.h
src/qtui/indicatornotificationbackend.cpp
src/qtui/inputwidget.cpp
src/qtui/inputwidget.h
src/qtui/ircconnectionwizard.cpp
src/qtui/ircconnectionwizard.h
src/qtui/knotificationbackend.cpp
src/qtui/knotificationbackend.h
src/qtui/legacysystemtray.cpp
src/qtui/legacysystemtray.h
src/qtui/mainpage.cpp
src/qtui/mainpage.h
src/qtui/mainwin.cpp
src/qtui/mainwin.h
src/qtui/markerlineitem.cpp
src/qtui/markerlineitem.h
src/qtui/monoapplication.cpp
src/qtui/monoapplication.h
src/qtui/msgprocessorstatuswidget.cpp
src/qtui/msgprocessorstatuswidget.h
src/qtui/nicklistwidget.cpp
src/qtui/nicklistwidget.h
src/qtui/phononnotificationbackend.cpp
src/qtui/phononnotificationbackend.h
src/qtui/qtui.cpp
src/qtui/qtui.h
src/qtui/qtuiapplication.cpp
src/qtui/qtuiapplication.h
src/qtui/qtuimessageprocessor.cpp
src/qtui/qtuimessageprocessor.h
src/qtui/qtuisettings.cpp
src/qtui/qtuisettings.h
src/qtui/qtuistyle.cpp
src/qtui/qtuistyle.h
src/qtui/receivefiledlg.cpp
src/qtui/receivefiledlg.h
src/qtui/settingsdlg.cpp
src/qtui/settingsdlg.h
src/qtui/settingspagedlg.cpp
src/qtui/settingspagedlg.h
src/qtui/settingspages/aliasesmodel.cpp
src/qtui/settingspages/aliasesmodel.h
src/qtui/settingspages/aliasessettingspage.cpp
src/qtui/settingspages/aliasessettingspage.h
src/qtui/settingspages/appearancesettingspage.cpp
src/qtui/settingspages/appearancesettingspage.h
src/qtui/settingspages/backlogsettingspage.cpp
src/qtui/settingspages/backlogsettingspage.h
src/qtui/settingspages/bufferviewsettingspage.cpp
src/qtui/settingspages/bufferviewsettingspage.h
src/qtui/settingspages/chatmonitorsettingspage.cpp
src/qtui/settingspages/chatmonitorsettingspage.h
src/qtui/settingspages/chatviewsettingspage.cpp
src/qtui/settingspages/chatviewsettingspage.h
src/qtui/settingspages/connectionsettingspage.cpp
src/qtui/settingspages/connectionsettingspage.h
src/qtui/settingspages/coreaccountsettingspage.cpp
src/qtui/settingspages/coreaccountsettingspage.h
src/qtui/settingspages/coreconnectionsettingspage.cpp
src/qtui/settingspages/coreconnectionsettingspage.h
src/qtui/settingspages/coreconnectionsettingspage.ui
src/qtui/settingspages/highlightsettingspage.cpp
src/qtui/settingspages/highlightsettingspage.h
src/qtui/settingspages/identitiessettingspage.cpp
src/qtui/settingspages/identitiessettingspage.h
src/qtui/settingspages/identityeditwidget.cpp
src/qtui/settingspages/identityeditwidget.h
src/qtui/settingspages/ignorelistmodel.cpp
src/qtui/settingspages/ignorelistmodel.h
src/qtui/settingspages/ignorelistsettingspage.cpp
src/qtui/settingspages/ignorelistsettingspage.h
src/qtui/settingspages/inputwidgetsettingspage.cpp
src/qtui/settingspages/inputwidgetsettingspage.h
src/qtui/settingspages/itemviewsettingspage.cpp
src/qtui/settingspages/itemviewsettingspage.h
src/qtui/settingspages/keysequencewidget.cpp
src/qtui/settingspages/keysequencewidget.h
src/qtui/settingspages/networkssettingspage.cpp
src/qtui/settingspages/networkssettingspage.h
src/qtui/settingspages/notificationssettingspage.cpp
src/qtui/settingspages/notificationssettingspage.h
src/qtui/settingspages/previewbufferview.h
src/qtui/settingspages/shortcutsmodel.cpp
src/qtui/settingspages/shortcutsmodel.h
src/qtui/settingspages/shortcutssettingspage.cpp
src/qtui/settingspages/shortcutssettingspage.h
src/qtui/settingspages/topicwidgetsettingspage.cpp
src/qtui/settingspages/topicwidgetsettingspage.h
src/qtui/simplenetworkeditor.cpp
src/qtui/simplenetworkeditor.h
src/qtui/snorenotificationbackend.cpp
src/qtui/sslinfodlg.cpp
src/qtui/sslinfodlg.h
src/qtui/statusnotifieritem.cpp
src/qtui/statusnotifieritem.h
src/qtui/statusnotifieritemdbus.cpp
src/qtui/systemtray.cpp
src/qtui/systemtray.h
src/qtui/systraynotificationbackend.cpp
src/qtui/systraynotificationbackend.h
src/qtui/taskbarnotificationbackend.cpp
src/qtui/taskbarnotificationbackend.h
src/qtui/titlesetter.cpp
src/qtui/titlesetter.h
src/qtui/topicwidget.cpp
src/qtui/topicwidget.h
src/qtui/verticaldock.cpp
src/qtui/verticaldock.h
src/qtui/webpreviewitem.cpp
src/qtui/webpreviewitem.h
src/uisupport/CMakeLists.txt
src/uisupport/aboutdata.cpp [new file with mode: 0644]
src/uisupport/aboutdata.h [new file with mode: 0644]
src/uisupport/abstractbuffercontainer.cpp
src/uisupport/abstractbuffercontainer.h
src/uisupport/abstractitemview.cpp
src/uisupport/abstractitemview.h
src/uisupport/abstractnotificationbackend.h
src/uisupport/action.cpp
src/uisupport/action.h
src/uisupport/actioncollection.cpp
src/uisupport/actioncollection.h
src/uisupport/bufferhotlistfilter.cpp
src/uisupport/bufferhotlistfilter.h
src/uisupport/bufferview.cpp
src/uisupport/bufferview.h
src/uisupport/bufferviewfilter.cpp
src/uisupport/bufferviewfilter.h
src/uisupport/bufferviewoverlayfilter.cpp
src/uisupport/bufferviewoverlayfilter.h
src/uisupport/clearablelineedit.cpp
src/uisupport/clearablelineedit.h
src/uisupport/clickable.cpp
src/uisupport/clickable.h
src/uisupport/clickablelabel.cpp
src/uisupport/clickablelabel.h
src/uisupport/colorbutton.cpp
src/uisupport/colorbutton.h
src/uisupport/contextmenuactionprovider.cpp
src/uisupport/contextmenuactionprovider.h
src/uisupport/flatproxymodel.cpp
src/uisupport/flatproxymodel.h
src/uisupport/fontselector.cpp
src/uisupport/fontselector.h
src/uisupport/graphicalui.cpp
src/uisupport/graphicalui.h
src/uisupport/iconloader.cpp [deleted file]
src/uisupport/iconloader.h [deleted file]
src/uisupport/kcmdlinewrapper.cpp
src/uisupport/kcmdlinewrapper.h
src/uisupport/multilineedit.cpp
src/uisupport/multilineedit.h
src/uisupport/networkmodelcontroller.cpp
src/uisupport/networkmodelcontroller.h
src/uisupport/nickview.cpp
src/uisupport/nickview.h
src/uisupport/nickviewfilter.cpp
src/uisupport/nickviewfilter.h
src/uisupport/qssparser.cpp
src/uisupport/qssparser.h
src/uisupport/resizingstackedwidget.cpp
src/uisupport/resizingstackedwidget.h
src/uisupport/settingspage.cpp
src/uisupport/settingspage.h
src/uisupport/styledlabel.cpp
src/uisupport/styledlabel.h
src/uisupport/tabcompleter.cpp
src/uisupport/tabcompleter.h
src/uisupport/toolbaractionprovider.cpp
src/uisupport/toolbaractionprovider.h
src/uisupport/uisettings.cpp
src/uisupport/uisettings.h
src/uisupport/uistyle.cpp
src/uisupport/uistyle.h

index defbb62..476319e 100644 (file)
@@ -26,4 +26,9 @@ script:
   - cd build
   - if [ "$QT_VERSION" = "qt4" ]; then cmake ..; fi
   - if [ "$QT_VERSION" = "qt5" ]; then source /opt/qt52/bin/qt52-env.sh && cmake  -DUSE_QT5=ON ..; fi
-  - make
\ No newline at end of file
+  - make
+
+matrix:
+  exclude:
+    - compiler: clang
+      env: QT_VERSION=qt4
index fc22665..2c2ff02 100644 (file)
@@ -6,7 +6,7 @@
 # General setup
 #####################################################################
 
-cmake_minimum_required(VERSION 2.8.9)
+cmake_minimum_required(VERSION 2.8.9)  # You'll need at least 2.8.12 for KDE Frameworks integration
 project(QuasselIRC)
 
 # Versions
@@ -61,9 +61,17 @@ add_feature_info(WANT_CORE WANT_CORE "Build the core (server) binary")
 add_feature_info(WANT_QTCLIENT WANT_QTCLIENT "Build the client-only binary (requires a core to connect to)")
 add_feature_info(WANT_MONO WANT_MONO "Build the monolithic (all-in-one) binary")
 
-# Whether to enable KDE integration (pulls in kdelibs and friends as a dependency); requires Qt4 for now
-cmake_dependent_option(WITH_KDE "KDE4 integration" OFF "USE_QT4" OFF)
-add_feature_info(WITH_KDE WITH_KDE "Enable KDE4 integration")
+# Whether to enable KDE integration (work in progress for Qt5 / KDE Frameworks)
+# Note that when building with Qt5, WITH_KDE enables integration with higher-tier KDE frameworks that
+# require runtime support. We still optionally make use of certain Tier 1 frameworks even if WITH_KDE
+# is disabled.
+if (USE_QT4)
+    option(WITH_KDE "KDE4 integration" OFF)
+    add_feature_info(WITH_KDE WITH_KDE "Enable KDE4 integration")
+else()
+    option(WITH_KDE "Integration with the KDE Frameworks runtime environment")
+    add_feature_info(WITH_KDE WITH_KDE "Integrate with the KDE Frameworks runtime environment")
+endif()
 
 cmake_dependent_option(WITH_OXYGEN "Install Oxygen icon set (usually shipped with KDE)" ON "NOT WITH_KDE" OFF)
 if (NOT WITH_KDE)
@@ -131,11 +139,7 @@ if (USE_QT5)
     add_definitions(-DHAVE_QT5)
 else()
     message(STATUS "Building for Qt4...")
-    if (BUILD_GUI)
-        set(QT_MIN_VERSION "4.6.0")
-    else()
-        set(QT_MIN_VERSION "4.4.0")
-    endif()
+    set(QT_MIN_VERSION "4.8.0")
 
     # Select a Qt installation here, if you don't want to use system Qt
     if(QT_PATH)
@@ -144,6 +148,7 @@ else()
     endif()
 endif()
 
+
 # Find package dependencies
 #
 # Note that you can forcefully disable optional packages
@@ -224,6 +229,45 @@ if (USE_QT5)
         endif()
         add_feature_info("WITH_WEBKIT, QtWebKit and QtWebKitWidgets modules" Qt5WebKitWidgets_FOUND "Support showing previews for URLs in chat")
 
+        # KDE Frameworks
+        ################
+
+        if (WITH_KDE)
+            set(ecm_find_type "REQUIRED")
+        else()
+            # Even with KDE integration disabled, we optionally use tier1 frameworks if we find them
+            set(ecm_find_type "RECOMMENDED")
+        endif()
+
+        # extra-cmake-modules
+        find_package(ECM NO_MODULE QUIET)
+        set_package_properties(ECM PROPERTIES TYPE ${ecm_find_type}
+            URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules"
+            DESCRIPTION "extra modules for CMake, maintained by the KDE project"
+            PURPOSE     "Required to find KDE Frameworks components"
+        )
+
+        if (ECM_FOUND)
+            list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
+        endif()
+
+        if (WITH_KDE)
+            find_package(KF5CoreAddons QUIET)
+            set_package_properties(KF5CoreAddons PROPERTIES TYPE REQUIRED
+                URL "http://inqlude.org/libraries/kcoreaddons.html"
+                DESCRIPTION "framework for solving common problems such as caching, randomization, and more"
+                PURPOSE     "Required for KDE Frameworks integration"
+            )
+
+            find_package(KF5TextWidgets QUIET)
+            set_package_properties(KF5TextWidgets PROPERTIES TYPE REQUIRED
+                URL "http://inqlude.org/libraries/ktextwidgets.html"
+                DESCRIPTION "framework providing an assortment of widgets for displaying and editing text"
+                PURPOSE     "Allows to use extra features provided by KDE Frameworks in input widgets"
+            )
+
+        endif()
+
     endif(BUILD_GUI)
     if (BUILD_CORE)
         find_package(Qt5Script QUIET)
@@ -235,14 +279,12 @@ if (USE_QT5)
             DESCRIPTION "the database support module for Qt5"
         )
 
-        # While QCA2 seems to support Qt5, it is not actually co-installable or distinguishable from the Qt4 version...
-        # In order to avoid linking against the Qt4 version (which is probably the one installed), disable this for now
-        #find_package(QCA2 QUIET)
-        #set_package_properties(QCA2 PROPERTIES TYPE RECOMMENDED
-        #    URL "https://projects.kde.org/projects/kdesupport/qca"
-        #    DESCRIPTION "Qt Cryptographic Architecture"
-        #    PURPOSE "Required for encryption support"
-        #)
+        find_package(QCA2-QT5)
+        set_package_properties(QCA2-QT5 PROPERTIES TYPE RECOMMENDED
+            URL "https://projects.kde.org/projects/kdesupport/qca"
+            DESCRIPTION "Qt Cryptographic Architecture"
+            PURPOSE "Required for encryption support"
+        )
 
     endif(BUILD_CORE)
 
@@ -324,6 +366,7 @@ else(USE_QT5)
         )
 
     endif(BUILD_GUI)
+
     if (BUILD_CORE)
 
         find_package(QCA2 QUIET)
@@ -366,31 +409,72 @@ if (NOT WIN32)
 endif()
 
 
-# Various checks
+# Additional compile settings
 #####################################################################
 
-if (NOT ZLIB_FOUND)
-    message(STATUS "zlib NOT found, using bundled miniz for compression")
-    if (${CMAKE_SIZEOF_VOID_P} EQUAL 4)
-        message(STATUS "WARNING: This may be slow on 32 bit systems!")
-    endif()
+# This sets -fPIC and friends if required by the installed Qt5 library
+if (USE_QT5 AND Qt5_POSITION_INDEPENDENT_CODE)
+    set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+endif()
+
+# Needed to compile with mingw without kde
+if (MINGW AND NOT KDE4_FOUND)
+    add_definitions(-D_WIN32_WINNT=0x0500)
+    message(STATUS "Added _WIN32_WINNT=0x0500 definition for MinGW")
+    # workaround for bug in mingw gcc 4.0
+    add_definitions(-U__STRICT_ANSI__)
 endif()
 
+# Sanitize compiler flags - old versions of KDE set -ansi, which breaks -std=c++11
+if (CMAKE_COMPILER_IS_GNUCXX)
+    string(REPLACE "-ansi" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
+endif()
+
+
+# Setup KDE / KDE Frameworks
+#####################################################################
+
+# We want to do this up here, so we have the necessary variables and defines set before
+# compiling anything
+
 if (KDE4_FOUND)
-    # We always use external icons for KDE4 support, since we use its iconloader rather than our own
+    # We always use external icons for KDE4 support, since we use its iconloader rather than Qt's
     set(EMBED_DATA OFF)
 
     # Better have the compile flags global, even for the core, to avoid problems with linking the mono client
-    add_definitions(-DHAVE_KDE ${KDE4_DEFINITIONS})
+    add_definitions(-DHAVE_KDE -DHAVE_KDE4 ${KDE4_DEFINITIONS})
+    set(WITH_KDE4 TRUE)
+endif()
+
+if (USE_QT5 AND WITH_KDE)
+    # If KDE Frameworks are present, they're most probably providing Qt5 integration including icon loading
+    set(EMBED_DATA OFF)
+
+    include(KDEInstallDirs)
+    include(KDECompilerSettings)
+    include(KDECMakeSettings)
+
+    add_definitions(-DHAVE_KDE -DHAVE_KF5)
+    set(WITH_KF5 TRUE)
+endif()
+
+# This needs to come after setting up KDE integration, so we can use KDE-specific paths
+include(QuasselInstallDirs)
+
+# Various config-dependent checks and settings
+#####################################################################
+
+if (NOT ZLIB_FOUND)
+    message(STATUS "zlib NOT found, using bundled miniz for compression")
+    if (${CMAKE_SIZEOF_VOID_P} EQUAL 4)
+        message(STATUS "WARNING: This may be slow on 32 bit systems!")
+    endif()
 endif()
 
 # Check for SSL support in Qt
 # As there's no easy way to get Qt's configuration in particular for Qt5, let's just compile
 # a small test program checking the defines. This works for both Qt4 and Qt5.
 cmake_push_check_state(RESET)
-if (Qt5_POSITION_INDEPENDENT_CODE)
-    set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-endif()
 set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES} ${Qt5Core_INCLUDE_DIRS})
 check_cxx_source_compiles("
     #include \"qglobal.h\"
@@ -414,96 +498,77 @@ endif()
 
 add_feature_info("Qt Linguist Tools" QT_LCONVERT_EXECUTABLE "Translation support for Quassel")
 
-# Various settings
-##################
+if (EMBED_DATA)
+    message(STATUS "Embedding data files into the binary")
+else()
+    message(STATUS "Installing data files separately")
+endif()
+
+if (INDICATEQT_FOUND)
+    add_definitions(-DXDG_APPS_INSTALL_DIR=${CMAKE_INSTALL_APPDIR})
+endif()
 
-# needed to compile with mingw without kde
-if (MINGW AND NOT KDE4_FOUND)
-    add_definitions(-D_WIN32_WINNT=0x0500)
-    message(STATUS "Added _WIN32_WINNT=0x0500 definition for MinGW")
-# workaround for bug in mingw gcc 4.0
-    add_definitions(-U__STRICT_ANSI__)
+if (NOT WIN32)
+    check_function_exists(umask HAVE_UMASK)
+    if(HAVE_UMASK)
+        add_definitions(-DHAVE_UMASK)
+    endif(HAVE_UMASK)
 endif()
 
-# Now set up install locations; those are set by KDE if integration is enabled
-if(NOT KDE4_FOUND)
-  if(WIN32)
-    set(BIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX} CACHE FILEPATH "Install path for binaries")
-    set(DATA_INSTALL_DIR $ENV{APPDATA}/quassel-irc.org/share/apps CACHE FILEPATH "Install path for data files")
-    set(ICON_INSTALL_DIR $ENV{APPDATA}/quassel-irc.org/share/icons CACHE FILEPATH "Global icon install path")
-    set(XDG_APPS_INSTALL_DIR $ENV{APPDATA}/quassel-irc.org/share/applications CACHE FILEPATH "Install path for .desktop files")
-  else(WIN32)
-    set(BIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/bin CACHE FILEPATH "Install path for binaries")
-    set(DATA_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/apps CACHE FILEPATH "Install path for data files")
-    set(ICON_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/icons CACHE FILEPATH "Global icon install path")
-    set(XDG_APPS_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/applications CACHE FILEPATH "Install path for .desktop files")
-  endif(WIN32)
+
+# Windows-specific stuff
+#####################################################################
+
+if (WIN32)
+    link_libraries(imm32 winmm dbghelp Secur32)  # missing by default :/
+    if (MSVC)
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DNOMINMAX")
+        set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBUGINFO "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt /DEFAULTLIB:msvcrt")
+        set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt")
+        set(CMAKE_EXE_LINKER_FLAGS_DEBUGFULL "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+        link_libraries(Version dwmapi shlwapi)
+        if (USE_QT5)
+            set(QT_QTMAIN_LIBRARY Qt5::WinMain)
+        endif()
+    endif()
+    if(HAVE_SSL AND STATIC)
+        find_package(OpenSSL REQUIRED)
+        link_libraries(${OPENSSL_LIBRARIES} ${OPENSSL_EAY_LIBRARIES})
+    endif()
 endif()
 
-if(EMBED_DATA)
-  message(STATUS "Embedding data files into the binary")
-else(EMBED_DATA)
-  message(STATUS "Installing data files separately")
-endif(EMBED_DATA)
 
-# RPATH needs to be set correctly
-# Do this down here, since otherwise KDE wants to handle it itself, and fails
-set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1)
-set(CMAKE_BUILD_WITH_INSTALL_RPATH 1)
+# Static builds (very much non-portable, so don't use -DSTATIC
+# unless you know what you do!)
+#####################################################################
 
-# Set global buildflags
-# This is very much non-portable, so don't use -DSTATIC until you know what
-# you do.
 if(STATIC AND CMAKE_COMPILER_IS_GNUCXX)
-  set(CMAKE_CXX_FLAGS "-static-libgcc ${CMAKE_CXX_FLAGS}")
-  link_directories(${CMAKE_BINARY_DIR}/staticlibs) # override dynamic libs
-  if(HAVE_SSL)
-    set(QUASSEL_SSL_LIBRARIES ssl crypto)  # these miss in static builds
-  endif(HAVE_SSL)
-endif(STATIC AND CMAKE_COMPILER_IS_GNUCXX)
-
-if(WIN32)
-  link_libraries(imm32 winmm dbghelp Secur32)  # missing by default :/
-  if(MSVC)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DNOMINMAX")
-    set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBUGINFO "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt /DEFAULTLIB:msvcrt")
-    set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt")
-    set(CMAKE_EXE_LINKER_FLAGS_DEBUGFULL "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
-    link_libraries(Version dwmapi shlwapi)
-    if(USE_QT5)
-      set(QT_QTMAIN_LIBRARY Qt5::WinMain)
-    endif(USE_QT5)
-  endif(MSVC)
-  if(HAVE_SSL AND STATIC)
-     find_package(OpenSSL REQUIRED)
-     link_libraries(${OPENSSL_LIBRARIES} ${OPENSSL_EAY_LIBRARIES})
-  endif(HAVE_SSL AND STATIC)
-endif(WIN32)
-
-if(INDICATEQT_FOUND)
-  add_definitions(-DXDG_APPS_INSTALL_DIR=${XDG_APPS_INSTALL_DIR})
+    set(CMAKE_CXX_FLAGS "-static-libgcc ${CMAKE_CXX_FLAGS}")
+    link_directories(${CMAKE_BINARY_DIR}/staticlibs) # override dynamic libs
+    if (HAVE_SSL)
+        set(QUASSEL_SSL_LIBRARIES ssl crypto)  # these miss in static builds
+    endif()
 endif()
 
-if(NOT WIN32)
-  check_function_exists(umask HAVE_UMASK)
-  if(HAVE_UMASK)
-    add_definitions(-DHAVE_UMASK)
-  endif(HAVE_UMASK)
-endif(NOT WIN32)
 
 # Generate version information from Git
+#####################################################################
+
 include(GetGitRevisionDescription)
 get_git_head_revision(GIT_REFSPEC GIT_HEAD)
 git_describe(GIT_DESCRIBE --long)
 
 # Sanitize things if we're not in a Git repo
-if(NOT GIT_HEAD OR NOT GIT_DESCRIBE)
+if (NOT GIT_HEAD OR NOT GIT_DESCRIBE)
     set(GIT_HEAD "")
     set(GIT_DESCRIBE "")
 endif()
 
 configure_file(version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY)
 
+# Prepare the build
+#####################################################################
+
 # These variables will be added to the main targets (CORE, QTCLIENT, MONO)
 set(COMMON_DEPS ${RC_WIN32})
 set(CORE_DEPS )
@@ -515,6 +580,7 @@ add_subdirectory(icons)
 add_subdirectory(pics)
 add_subdirectory(po)
 
+
 # Set up and display feature summary
 #####################################################################
 
@@ -525,7 +591,7 @@ feature_summary(WHAT ALL
 
 # Finally, compile the sources
 # We want this after displaying the feature summary to avoid ugly
-# CMake backtraces in case a required Qt5 modules misses
+# CMake backtraces in case a required Qt5 module is missing
 #####################################################################
 
 add_subdirectory(src)
diff --git a/cmake/FindQCA2-QT5.cmake b/cmake/FindQCA2-QT5.cmake
new file mode 100644 (file)
index 0000000..0d28590
--- /dev/null
@@ -0,0 +1,48 @@
+# - Try to find QCA2 (Qt Cryptography Architecture 2) for QT5
+# Once done this will define
+#
+#  QCA2-QT5_FOUND - system has QCA2-QT5
+#  QCA2-QT5_INCLUDE_DIR - the QCA2-QT5 include directory
+#  QCA2-QT5_LIBRARIES - the libraries needed to use QCA2-QT5
+#  QCA2-QT5_DEFINITIONS - Compiler switches required for using QCA2-QT5
+#
+# use pkg-config to get the directories and then use these values
+# in the FIND_PATH() and FIND_LIBRARY() calls
+
+# Copyright (c) 2006, Michael Larouche, <michael.larouche@kdemail.net>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+include(FindLibraryWithDebug)
+
+if (QCA2-QT5_INCLUDE_DIR AND QCA2-QT5_LIBRARIES)
+
+  # in cache already
+  set(QCA2-QT5_FOUND TRUE)
+
+else (QCA2-QT5_INCLUDE_DIR AND QCA2-QT5_LIBRARIES)
+
+
+  if (NOT WIN32)
+    find_package(PkgConfig)
+    pkg_check_modules(PC_QCA2-QT5 QUIET qca2-qt5)
+    set(QCA2-QT5_DEFINITIONS ${PC_QCA2-QT5_CFLAGS_OTHER})
+  endif (NOT WIN32)
+
+  find_library_with_debug(QCA2-QT5_LIBRARIES
+                  WIN32_DEBUG_POSTFIX d
+                  NAMES qca-qt5
+                  HINTS ${PC_QCA2-QT5_LIBDIR} ${PC_QCA2-QT5_LIBRARY_DIRS}
+                  )
+
+  find_path(QCA2-QT5_INCLUDE_DIR QtCrypto
+            HINTS ${PC_QCA2-QT5_INCLUDEDIR} ${PC_QCA2-QT5_INCLUDE_DIRS}
+            PATH_SUFFIXES QtCrypto)
+
+  include(FindPackageHandleStandardArgs)
+  find_package_handle_standard_args(QCA2-QT5 DEFAULT_MSG QCA2-QT5_LIBRARIES QCA2-QT5_INCLUDE_DIR)
+
+  mark_as_advanced(QCA2-QT5_INCLUDE_DIR QCA2-QT5_LIBRARIES)
+
+endif (QCA2-QT5_INCLUDE_DIR AND QCA2-QT5_LIBRARIES)
diff --git a/cmake/QuasselInstallDirs.cmake b/cmake/QuasselInstallDirs.cmake
new file mode 100644 (file)
index 0000000..9075a80
--- /dev/null
@@ -0,0 +1,65 @@
+# This file sets up install locations for Quassel
+#
+# (C) 2015 by the Quassel Project <devel@quassel-irc.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+
+# Setup install locations
+#####################################################################
+
+# We support the CMake standard variables (CMAKE_INSTALL_<TYPE>_DIR),
+# which can be overridden on the command line. If KDE integration is enabled,
+# we make use of its settings.
+
+if (NOT WITH_KDE)
+    if (WIN32)
+        # On Windows, we have to guess good paths
+        # We must check if the variables are already defined on the command line
+        if (NOT DEFINED CMAKE_INSTALL_BINDIR)
+            set(CMAKE_INSTALL_BINDIR "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Install path for binaries")
+        endif()
+        if (NOT DEFINED CMAKE_INSTALL_DATADIR)
+            set(CMAKE_INSTALL_DATADIR "$ENV{APPDATA}/quassel-irc.org/share/apps" CACHE PATH "Install path for data files")
+        endif()
+        if (NOT DEFINED CMAKE_INSTALL_ICONDIR)
+            set(CMAKE_INSTALL_ICONDIR "$ENV{APPDATA}/quassel-irc.org/share/icons" CACHE PATH "Install path for icons")
+        endif()
+        if (NOT DEFINED CMAKE_INSTALL_APPDIR)
+            set(CMAKE_INSTALL_APPDIR "$ENV{APPDATA}/quassel-irc.org/share/applications" CACHE PATH "Install path for .desktop files")
+        endif()
+    else()
+        # This sets the standard variables; however it doesn't know about icons and apps
+        include(GNUInstallDirs)
+
+        # Special treatment for paths relative to DATAROOTDIR, as found in GNUInstallDirs
+        if (NOT CMAKE_INSTALL_ICONDIR)
+            set(CMAKE_INSTALL_ICONDIR "" CACHE PATH "Install path for icons")
+            set(CMAKE_INSTALL_ICONDIR "${CMAKE_INSTALL_DATAROOTDIR}/icons")
+        endif()
+        if (NOT CMAKE_INSTALL_APPDIR)
+            set(CMAKE_INSTALL_APPDIR "" CACHE PATH "Install path for .desktop files")
+            set(CMAKE_INSTALL_APPDIR "${CMAKE_INSTALL_DATAROOTDIR}/applications")
+        endif()
+    endif()
+else()
+    if (WITH_KDE4)
+        # FindKDE4Internal.cmake sets its own set of variables, however with deprecated names
+        if (NOT DEFINED CMAKE_INSTALL_BINDIR)
+            set(CMAKE_INSTALL_BINDIR "${BIN_INSTALL_DIR}" CACHE PATH "Install path for binaries")
+        endif()
+        if (NOT DEFINED CMAKE_INSTALL_DATADIR)
+            set(CMAKE_INSTALL_DATADIR "${DATA_INSTALL_DIR}" CACHE PATH "Install path for data files")
+        endif()
+        if (NOT DEFINED CMAKE_INSTALL_ICONDIR)
+            set(CMAKE_INSTALL_ICONDIR "${ICON_INSTALL_DIR}" CACHE PATH "Install path for icons")
+        endif()
+        if (NOT DEFINED CMAKE_INSTALL_APPDIR)
+            set(CMAKE_INSTALL_APPDIR "${XDG_APPS_INSTALL_DIR}" CACHE PATH "Install path for .desktop files")
+        endif()
+    endif()
+
+    # KF5 does the correct thing, so we don't need to do anything
+    # We have already included KDEInstallDirs at this point.
+endif()
index e9f4a06..04b322b 100644 (file)
@@ -1,26 +1,26 @@
 if (BUILD_GUI)
     if (KDE4_FOUND OR (UNIX AND NOT APPLE))
         if (WANT_QTCLIENT)
-            install(FILES quasselclient.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
+            install(FILES quasselclient.desktop DESTINATION ${CMAKE_INSTALL_APPDIR})
         endif()
 
         if (WANT_MONO)
-            install(FILES quassel.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
+            install(FILES quassel.desktop DESTINATION ${CMAKE_INSTALL_APPDIR})
         endif()
 
         if (KDE4_FOUND)
-            install(FILES quassel.notifyrc DESTINATION ${DATA_INSTALL_DIR}/quassel)
+            install(FILES quassel.notifyrc DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel)
         endif()
     endif()
 
     if (EMBED_DATA)
         set(CLIENT_RCS ${CLIENT_RCS} ${CMAKE_CURRENT_SOURCE_DIR}/data.qrc PARENT_SCOPE)
     else()
-        install(FILES networks.ini DESTINATION ${DATA_INSTALL_DIR}/quassel)
-        install(DIRECTORY stylesheets DESTINATION ${DATA_INSTALL_DIR}/quassel)
+        install(FILES networks.ini DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel)
+        install(DIRECTORY stylesheets DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel)
     endif()
 
     if (NOT WIN32)
-        install(DIRECTORY scripts DESTINATION ${DATA_INSTALL_DIR}/quassel USE_SOURCE_PERMISSIONS)
+        install(DIRECTORY scripts DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel USE_SOURCE_PERMISSIONS)
     endif()
 endif()
index 158b9b9..a067eb6 100644 (file)
@@ -73,3 +73,4 @@ Icon=quassel
 TryExec=quassel
 Exec=quassel
 Categories=Qt;Network;Chat;IRCClient;
+X-DBUS-ServiceName=org.quassel-irc.quassel
index c11cffe..5be24ce 100644 (file)
@@ -72,3 +72,4 @@ Icon=quassel
 TryExec=quasselclient
 Exec=quasselclient
 Categories=Qt;Network;Chat;IRCClient;
+X-DBUS-ServiceName=org.quassel-irc.quasselclient
index b9cc9a0..1a25353 100644 (file)
@@ -1,56 +1,42 @@
 # Install icons
-# We put them in DATA_INSTALL_DIR rather than ICON_INSTALL_DIR, to avoid
-# polluting the global namespace and to allow overriding
+#
+# We put the bundled oxygen icon theme in DATADIR rather than ICONDIR,
+# in order to avoid conflicts. As we add this directory to XDG_DATA_DIRS at runtime,
+# the bundled theme will be found by Qt only if there is no oxygen theme installed
+# in system directories.
+#
+# The hicolor folder contains icons vital for the Quassel UI (such as in the channel and nick
+# lists). It is installed into the system icon directory (in order to allow overriding) and
+# additionally always embedded as a fallback resource.
+
+if (WANT_MONO OR WANT_QTCLIENT)
+    set(ICON_RCS ${CMAKE_CURRENT_SOURCE_DIR}/hicolor.qrc) # always embed those
+
+    if (EMBED_DATA)
+        if (WITH_OXYGEN)
+            message(STATUS "Embedding bundled Oxygen icons")
+            set(ICON_RCS ${ICON_RCS} ${CMAKE_CURRENT_SOURCE_DIR}/oxygen.qrc)
+        endif()
+    else()
+        install(DIRECTORY hicolor DESTINATION ${CMAKE_INSTALL_ICONDIR})
+        if (WITH_OXYGEN)
+            message(STATUS "Installing bundled Oxygen icons")
+            install(DIRECTORY oxygen DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons)
+        endif()
+    endif()
+
+    if (NOT WITH_OXYGEN)
+        message(STATUS "Not installing bundled Oxygen icons")
+    endif()
 
-if(WANT_MONO OR WANT_QTCLIENT)
-
-  # Figure out if we want to install KDE's icons
-  # Starting with KDE 4.3, they shouldn't be needed anymore
-  set(INSTALL_OXY true)
-  string(TOUPPER ${WITH_OXYGEN} OXY_UPPER)
-  if(NOT OXY_UPPER)
-    set(INSTALL_OXY false)
-  elseif(OXY_UPPER MATCHES "AUTO")
-    if(HAVE_KDE)
-      if(KDE_VERSION VERSION_GREATER 4.2.99)
-        set(INSTALL_OXY false)
-      endif(KDE_VERSION VERSION_GREATER 4.2.99)
-    endif(HAVE_KDE)
-  endif(NOT OXY_UPPER)
-
-  if(INSTALL_OXY)
-    message(STATUS "Installing Oxygen icons")
-  else(INSTALL_OXY)
-    message(STATUS "Not installing Oxygen icons")
-  endif(INSTALL_OXY)
-
-  if(EMBED_DATA)
-    set(ICON_RCS ${CMAKE_CURRENT_SOURCE_DIR}/hicolor.qrc ${CMAKE_CURRENT_SOURCE_DIR}/oxygen.qrc)
-    if(INSTALL_OXY)
-      set(ICON_RCS ${ICON_RCS} ${CMAKE_CURRENT_SOURCE_DIR}/oxygen_kde.qrc)
-    endif(INSTALL_OXY)
     set(CLIENT_RCS ${CLIENT_RCS} ${ICON_RCS} PARENT_SCOPE)
-  else(EMBED_DATA)
-    install(DIRECTORY hicolor DESTINATION ${ICON_INSTALL_DIR})
-    install(DIRECTORY oxygen DESTINATION ${DATA_INSTALL_DIR}/quassel/icons)
-    if(INSTALL_OXY)
-      install(DIRECTORY oxygen_kde/ DESTINATION ${DATA_INSTALL_DIR}/quassel/icons/oxygen)
-    endif(INSTALL_OXY)
-  endif(EMBED_DATA)
-endif(WANT_MONO OR WANT_QTCLIENT)
+endif()
 
 # Application icon
 
-# cmake-2.6.2 can't handle nested conditions
-# if((UNIX AND NOT APPLE) OR HAVE_KDE)
-if(HAVE_KDE OR UNIX)
- if(HAVE_KDE OR NOT APPLE)
-
-  install(FILES oxygen_kde/48x48/apps/quassel.png DESTINATION ${ICON_INSTALL_DIR}/hicolor/48x48/apps)
-  if(CMAKE_INSTALL_PREFIX STREQUAL "/usr")
-    install(FILES oxygen_kde/48x48/apps/quassel.png DESTINATION /usr/share/pixmaps)
-  endif(CMAKE_INSTALL_PREFIX STREQUAL "/usr")
-
-# endif((UNIX AND NOT APPLE) OR HAVE_KDE)
- endif(HAVE_KDE OR NOT APPLE)
-endif(HAVE_KDE OR UNIX)
+if (HAVE_KDE OR (UNIX AND NOT APPLE))
+    install(FILES hicolor/48x48/apps/quassel.png DESTINATION ${CMAKE_INSTALL_ICONDIR}/hicolor/48x48/apps)
+    if (CMAKE_INSTALL_PREFIX STREQUAL "/usr")
+        install(FILES hicolor/48x48/apps/quassel.png DESTINATION /usr/share/pixmaps)
+    endif()
+endif()
index fe160b5..43c8709 100644 (file)
@@ -1,15 +1,15 @@
-The icons found in oxygen and oxygen_kde are a stripped version of the Oxygen
+The icons found in the oxygen directory are a stripped version of the Oxygen
 icon theme, part of KDE4, as found in KDE's svn. We have removed the parts of
 the theme we don't use in order to conserve space in our own repository and to
 make downloads smaller.
 
 The icons found here have been imported from:
-svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebase/runtime/pics/oxygen
-Revision: 1017094
+svn://anonsvn.kde.org/home/kde/trunk/kdesupport/oxygen-icons
+Revision: 1394510
 
 We, the authors of Quassel IRC, do solely distribute this icon set (or parts
 thereof), we are not involved in creating/editing/maintaining it. Please see
-the appropriate files, in particular AUTHORS and COPYING, in this directory.
+the appropriate files, in particular AUTHORS and COPYING, in the oxygen directory.
 All icon files in this directory were copied verbatim and not modified by us.
 
 We would like to thank the Oxygen team for creating such terrific artwork,
index cd5b9e8..2ad00b1 100644 (file)
@@ -3,19 +3,24 @@
     <file>hicolor/16x16/apps/quassel.png</file>
     <file>hicolor/22x22/apps/quassel.png</file>
     <file>hicolor/32x32/apps/quassel.png</file>
-    <file>hicolor/48x48/apps/quassel.png</file>
-    <file>hicolor/64x64/apps/quassel.png</file>
-    <file>hicolor/128x128/apps/quassel.png</file>
+    <file alias="quassel.png">hicolor/48x48/apps/quassel.png</file>
+    <file alias="quassel-64.png">hicolor/64x64/apps/quassel.png</file>
+    <file alias="quassel-128.png">hicolor/128x128/apps/quassel.png</file>
     <file>hicolor/16x16/status/quassel-message.png</file>
     <file>hicolor/22x22/status/quassel-message.png</file>
     <file>hicolor/32x32/status/quassel-message.png</file>
-    <file>hicolor/48x48/status/quassel-message.png</file>
+    <file alias="quassel-message.png">hicolor/48x48/status/quassel-message.png</file>
     <file>hicolor/64x64/status/quassel-message.png</file>
     <file>hicolor/16x16/status/quassel-inactive.png</file>
     <file>hicolor/22x22/status/quassel-inactive.png</file>
     <file>hicolor/32x32/status/quassel-inactive.png</file>
-    <file>hicolor/48x48/status/quassel-inactive.png</file>
-    <file>hicolor/64x64/status/quassel-inactive.png</file>
-    <file>hicolor/128x128/status/quassel-inactive.png</file>
+    <file alias="quassel-inactive.png">hicolor/48x48/status/quassel-inactive.png</file>
+    <file alias="quassel-inactive-64.png">hicolor/64x64/status/quassel-inactive.png</file>
+    <file alias="quassel-inactive-128.png">hicolor/128x128/status/quassel-inactive.png</file>
+    <file alias="irc-channel-joined.png">hicolor/16x16/status/irc-channel-joined.png</file>
+    <file alias="irc-channel-parted.png">hicolor/16x16/status/irc-channel-parted.png</file>
+    <file alias="im-user.png">hicolor/16x16/actions/im-user.png</file>
+    <file alias="im-user-away.png">hicolor/16x16/actions/im-user-away.png</file>
+    <file alias="im-user-offline.png">hicolor/16x16/actions/im-user-offline.png</file>
   </qresource>
 </RCC>
index d72687f..4393918 100644 (file)
@@ -1,4 +1,4 @@
 quassel-inactive
 quassel-message
-irc-channel-active
-irc-channel-inactive
+irc-channel-joined
+irc-channel-parted
index 5e3956d..40fce8f 100644 (file)
@@ -1 +1 @@
-quassel 16 22 32 48 64 128
+quassel
index 9efc260..c6132d0 100755 (executable)
@@ -20,56 +20,41 @@ use File::Find;
 my $oxygen = shift;
 
 my $source = "../src";
-my $quassel_icons = "oxygen";
-my $output = "oxygen_kde";
-my $qrcfile_quassel = "oxygen.qrc";
-my $qrcfile_kde = "oxygen_kde.qrc";
+my $output = "oxygen";
+my $qrcfile_kde = "oxygen.qrc";
 
 my $extrafile = "import/extra-icons";
 my $blacklistfile = "import/blacklisted-icons";
 
-my %sizes = (
-        Desktop => 48,
-        Bar => 22,
-        MainBar => 22,
-        Small => 16,
-        Panel => 32,
-        Dialog => 22
-);
-
 my %req_icons;
+my %found_icons;
 my %blacklist;
 my %extra;
 
 # First, load the icon blacklist
-# Format: icon-name 16 22 32
 open BLACKLIST, "<$blacklistfile" or die "Could not open $blacklistfile\n";
 while(<BLACKLIST>) {
   s/#.*//;
-  next unless my ($name, $sizes) = /([-\w]+)\s+(\d+(?:\s+\d+)*)?/;
-  $blacklist{$name} = $sizes;
+  next unless my ($name) = /([-\w]+)\s*/;
+  $blacklist{$name} = 1;
 }
 close BLACKLIST;
 
 # We now grep the source for things like SmallIcon("fubar") and generate size and name from that
 print "Grepping $source for requested icons...\n";
-my @results = `grep -r Icon\\(\\" $source`;
+my @results = `grep -r QIcon::fromTheme\\(\\" $source`;
 foreach(@results) {
-  next unless my ($type, $name) = /\W+(\s|Desktop|Bar|MainBar|Small|Panel|Dialog)Icon\("([-\w]+)/;
-  $type = "Desktop" if $type =~ /\s+/;
-  my $size = $sizes{$type};
-  $req_icons{$size}{$name} = 1
-    unless exists $blacklist{$name} and ($blacklist{$name} == undef or $blacklist{$name} =~ /$size/);
+  next unless my ($name) = /\W+QIcon::fromTheme\(\"([-\w]+)/;
+  $req_icons{$name} = 1
+    unless exists $blacklist{$name};
 }
 
 # Add extra icons
 open EXTRA, "<$extrafile" or die "Could not open $extrafile\n";
 while(<EXTRA>) {
   s/#.*//;
-  next unless my ($name, $sizes) = /([-\w]+)\s+(\d+(?:\s+\d+)*)/;
-  foreach(split /\s+/, $sizes) {
-    $req_icons{$_}{$name} = 1;
-  }
+  next unless my ($name) = /([-\w]+)\s*/;
+  $req_icons{$name} = 1;
 }
 close EXTRA;
 
@@ -81,45 +66,52 @@ system("rm -rf $output");
 my %scalables;
 
 print "Copying icons from $oxygen...\n";
-foreach my $size (keys %req_icons) {
-  my $sizestr = $size.'x'.$size;
-  opendir (BASEDIR, "$oxygen/$sizestr") or die "Could not open dir for size $size\n";
-  foreach my $cat (readdir BASEDIR) {
+opendir (BASEDIR, "$oxygen") or die "Could not open oxygen basedir\n";
+foreach my $sizestr (readdir BASEDIR) {
+  next unless $sizestr =~ /\d+x\d+/;
+  opendir (SIZEDIR, "$oxygen/$sizestr") or die "Could not open dir $sizestr\n";
+  foreach my $cat (readdir SIZEDIR) {
     next if $cat eq '.' or $cat eq '..';
-    system "mkdir -p $output/$sizestr/$cat" and die "Could not create category dir\n";
+    #system "mkdir -p $output/$sizestr/$cat" and die "Could not create category dir\n";
     system "mkdir -p $output/scalable/$cat" and die "Could not create category dir\n";
     opendir (CATDIR, "$oxygen/$sizestr/$cat") or die "Could not open category dir\n";
     foreach my $icon (readdir CATDIR) {
       $icon =~ s/\.png$//;
-      next unless exists $req_icons{$size}{$icon};
-      $scalables{"$cat/$icon"} = 1;
+      next unless exists $req_icons{$icon};
+      $scalables{$cat}{$icon} = 1;
+      system "mkdir -p $output/$sizestr/$cat" and die "Could not create category dir\n";
       system "cp -a $oxygen/$sizestr/$cat/$icon.png $output/$sizestr/$cat"
         and die "Error while copying file $sizestr/$cat/$icon.png\n";
-      # print "Copy: $oxygen/$sizestr/$cat/$icon.png\n";
-      delete $req_icons{$size}{$icon};
+      #print "Copy: $oxygen/$sizestr/$cat/$icon.png\n";
+      $found_icons{$icon} = 1;
     }
     closedir CATDIR;
   }
-  closedir BASEDIR;
+  closedir SIZEDIR;
 }
+closedir BASEDIR;
 
 # Copy scalables
-foreach my $scalable (keys %scalables) {
-  system "cp -a $oxygen/scalable/$scalable.svgz $output/scalable/$scalable.svgz";
+foreach my $cat (keys %scalables) {
+  system "mkdir -p $output/scalable/$cat" and die "Could not create category dir\n";
+  foreach my $scalable (keys %scalables{$cat}) {
+    system "cp -a $oxygen/scalable/$cat/$scalable.svgz $output/scalable/$cat/$scalable.svgz";
+  }
 }
 
 # Warn if we have still icons left
-foreach my $size (keys %req_icons) {
-  foreach my $missing (keys %{ $req_icons{$size} }) {
-    print "Warning: Missing icon $missing (size $size)\n";
-  }
+foreach my $icon (keys %req_icons) {
+  next if defined $found_icons{$icon};
+  print "Warning: Missing icon $icon\n";
 }
 
 # Generate .qrc
 my @file_list;
-generate_qrc($quassel_icons, $qrcfile_quassel);
 generate_qrc($output, $qrcfile_kde);
 
+# Copy license etc.
+system "cp $oxygen/AUTHORS $oxygen/CONTRIBUTING $oxygen/COPYING $oxygen/index.theme $output/";
+
 print "Done.\n";
 
 ########################################################################################
@@ -144,8 +136,6 @@ sub generate_qrc {
 
 sub push_icon_path {
   return unless /\.png$/;
-  my $alias = $File::Find::name;
-  $alias =~ s,^[^/]*(.*),$1,;
 
-  push @file_list, "    <file alias=\"oxygen$alias\">$File::Find::name</file>";
+  push @file_list, "    <file>$File::Find::name</file>";
 }
index b0261da..3b01942 100644 (file)
@@ -1,6 +1,290 @@
 <RCC>
   <qresource prefix="/icons">
-    <file alias="oxygen/16x16/status/irc-channel-inactive.png">oxygen/16x16/status/irc-channel-inactive.png</file>
-    <file alias="oxygen/16x16/status/irc-channel-active.png">oxygen/16x16/status/irc-channel-active.png</file>
+    <file>oxygen/22x22/actions/irc-voice.png</file>
+    <file>oxygen/22x22/actions/go-next.png</file>
+    <file>oxygen/22x22/actions/im-user.png</file>
+    <file>oxygen/22x22/actions/im-ban-kick-user.png</file>
+    <file>oxygen/22x22/actions/application-exit.png</file>
+    <file>oxygen/22x22/actions/go-previous.png</file>
+    <file>oxygen/22x22/actions/list-remove-user.png</file>
+    <file>oxygen/22x22/actions/dialog-close.png</file>
+    <file>oxygen/22x22/actions/irc-close-channel.png</file>
+    <file>oxygen/22x22/actions/mail-message-new.png</file>
+    <file>oxygen/22x22/actions/media-playback-start.png</file>
+    <file>oxygen/22x22/actions/document-edit.png</file>
+    <file>oxygen/22x22/actions/show-menu.png</file>
+    <file>oxygen/22x22/actions/go-next-view.png</file>
+    <file>oxygen/22x22/actions/document-open.png</file>
+    <file>oxygen/22x22/actions/dialog-cancel.png</file>
+    <file>oxygen/22x22/actions/edit-delete.png</file>
+    <file>oxygen/22x22/actions/edit-clear-locationbar-ltr.png</file>
+    <file>oxygen/22x22/actions/edit-copy.png</file>
+    <file>oxygen/22x22/actions/list-add-user.png</file>
+    <file>oxygen/22x22/actions/network-disconnect.png</file>
+    <file>oxygen/22x22/actions/network-connect.png</file>
+    <file>oxygen/22x22/actions/irc-remove-operator.png</file>
+    <file>oxygen/22x22/actions/view-refresh.png</file>
+    <file>oxygen/22x22/actions/format-text-color.png</file>
+    <file>oxygen/22x22/actions/irc-unvoice.png</file>
+    <file>oxygen/22x22/actions/im-kick-user.png</file>
+    <file>oxygen/22x22/actions/irc-operator.png</file>
+    <file>oxygen/22x22/actions/configure-shortcuts.png</file>
+    <file>oxygen/22x22/actions/format-list-unordered.png</file>
+    <file>oxygen/22x22/actions/irc-join-channel.png</file>
+    <file>oxygen/22x22/actions/format-fill-color.png</file>
+    <file>oxygen/22x22/actions/help-about.png</file>
+    <file>oxygen/22x22/actions/list-add.png</file>
+    <file>oxygen/22x22/actions/format-text-italic.png</file>
+    <file>oxygen/22x22/actions/go-up.png</file>
+    <file>oxygen/22x22/actions/zoom-in.png</file>
+    <file>oxygen/22x22/actions/edit-clear-locationbar-rtl.png</file>
+    <file>oxygen/22x22/actions/tools-report-bug.png</file>
+    <file>oxygen/22x22/actions/im-user-offline.png</file>
+    <file>oxygen/22x22/actions/view-fullscreen.png</file>
+    <file>oxygen/22x22/actions/format-text-bold.png</file>
+    <file>oxygen/22x22/actions/zoom-out.png</file>
+    <file>oxygen/22x22/actions/flag-blue.png</file>
+    <file>oxygen/22x22/actions/document-encrypt.png</file>
+    <file>oxygen/22x22/actions/go-down.png</file>
+    <file>oxygen/22x22/actions/zoom-original.png</file>
+    <file>oxygen/22x22/actions/edit-rename.png</file>
+    <file>oxygen/22x22/actions/im-user-away.png</file>
+    <file>oxygen/22x22/actions/configure.png</file>
+    <file>oxygen/22x22/actions/format-text-underline.png</file>
+    <file>oxygen/22x22/actions/edit-find.png</file>
+    <file>oxygen/22x22/actions/im-ban-user.png</file>
+    <file>oxygen/22x22/actions/go-previous-view.png</file>
+    <file>oxygen/22x22/devices/network-wired.png</file>
+    <file>oxygen/22x22/apps/quassel.png</file>
+    <file>oxygen/22x22/status/dialog-information.png</file>
+    <file>oxygen/22x22/status/security-low.png</file>
+    <file>oxygen/22x22/status/user-away.png</file>
+    <file>oxygen/22x22/status/security-high.png</file>
+    <file>oxygen/32x32/actions/go-next-view.png</file>
+    <file>oxygen/32x32/actions/go-up.png</file>
+    <file>oxygen/32x32/actions/list-add.png</file>
+    <file>oxygen/32x32/actions/format-fill-color.png</file>
+    <file>oxygen/32x32/actions/go-next.png</file>
+    <file>oxygen/32x32/actions/im-user.png</file>
+    <file>oxygen/32x32/actions/go-previous-view.png</file>
+    <file>oxygen/32x32/actions/edit-copy.png</file>
+    <file>oxygen/32x32/actions/view-refresh.png</file>
+    <file>oxygen/32x32/actions/network-connect.png</file>
+    <file>oxygen/32x32/actions/zoom-out.png</file>
+    <file>oxygen/32x32/actions/im-ban-kick-user.png</file>
+    <file>oxygen/32x32/actions/application-exit.png</file>
+    <file>oxygen/32x32/actions/network-disconnect.png</file>
+    <file>oxygen/32x32/actions/list-remove-user.png</file>
+    <file>oxygen/32x32/actions/im-kick-user.png</file>
+    <file>oxygen/32x32/actions/irc-operator.png</file>
+    <file>oxygen/32x32/actions/edit-rename.png</file>
+    <file>oxygen/32x32/actions/edit-clear-locationbar-rtl.png</file>
+    <file>oxygen/32x32/actions/mail-message-new.png</file>
+    <file>oxygen/32x32/actions/document-edit.png</file>
+    <file>oxygen/32x32/actions/im-ban-user.png</file>
+    <file>oxygen/32x32/actions/document-open.png</file>
+    <file>oxygen/32x32/actions/format-list-unordered.png</file>
+    <file>oxygen/32x32/actions/dialog-cancel.png</file>
+    <file>oxygen/32x32/actions/format-text-italic.png</file>
+    <file>oxygen/32x32/actions/list-add-user.png</file>
+    <file>oxygen/32x32/actions/go-previous.png</file>
+    <file>oxygen/32x32/actions/flag-blue.png</file>
+    <file>oxygen/32x32/actions/irc-remove-operator.png</file>
+    <file>oxygen/32x32/actions/im-user-offline.png</file>
+    <file>oxygen/32x32/actions/view-fullscreen.png</file>
+    <file>oxygen/32x32/actions/configure.png</file>
+    <file>oxygen/32x32/actions/irc-close-channel.png</file>
+    <file>oxygen/32x32/actions/im-user-away.png</file>
+    <file>oxygen/32x32/actions/edit-find.png</file>
+    <file>oxygen/32x32/actions/media-playback-start.png</file>
+    <file>oxygen/32x32/actions/help-about.png</file>
+    <file>oxygen/32x32/actions/configure-shortcuts.png</file>
+    <file>oxygen/32x32/actions/irc-join-channel.png</file>
+    <file>oxygen/32x32/actions/zoom-in.png</file>
+    <file>oxygen/32x32/actions/edit-delete.png</file>
+    <file>oxygen/32x32/actions/irc-voice.png</file>
+    <file>oxygen/32x32/actions/format-text-underline.png</file>
+    <file>oxygen/32x32/actions/go-down.png</file>
+    <file>oxygen/32x32/actions/irc-unvoice.png</file>
+    <file>oxygen/32x32/actions/tools-report-bug.png</file>
+    <file>oxygen/32x32/actions/dialog-close.png</file>
+    <file>oxygen/32x32/actions/format-text-color.png</file>
+    <file>oxygen/32x32/actions/edit-clear-locationbar-ltr.png</file>
+    <file>oxygen/32x32/actions/zoom-original.png</file>
+    <file>oxygen/32x32/actions/format-text-bold.png</file>
+    <file>oxygen/32x32/actions/document-encrypt.png</file>
+    <file>oxygen/32x32/actions/show-menu.png</file>
+    <file>oxygen/32x32/devices/network-wired.png</file>
+    <file>oxygen/32x32/apps/quassel.png</file>
+    <file>oxygen/32x32/status/user-away.png</file>
+    <file>oxygen/32x32/status/dialog-information.png</file>
+    <file>oxygen/32x32/status/security-high.png</file>
+    <file>oxygen/32x32/status/security-low.png</file>
+    <file>oxygen/16x16/actions/edit-delete.png</file>
+    <file>oxygen/16x16/actions/im-user-offline.png</file>
+    <file>oxygen/16x16/actions/view-fullscreen.png</file>
+    <file>oxygen/16x16/actions/im-user.png</file>
+    <file>oxygen/16x16/actions/go-next.png</file>
+    <file>oxygen/16x16/actions/show-menu.png</file>
+    <file>oxygen/16x16/actions/list-add.png</file>
+    <file>oxygen/16x16/actions/edit-clear-locationbar-ltr.png</file>
+    <file>oxygen/16x16/actions/irc-unvoice.png</file>
+    <file>oxygen/16x16/actions/format-text-italic.png</file>
+    <file>oxygen/16x16/actions/dialog-close.png</file>
+    <file>oxygen/16x16/actions/edit-copy.png</file>
+    <file>oxygen/16x16/actions/irc-close-channel.png</file>
+    <file>oxygen/16x16/actions/zoom-out.png</file>
+    <file>oxygen/16x16/actions/irc-join-channel.png</file>
+    <file>oxygen/16x16/actions/format-list-unordered.png</file>
+    <file>oxygen/16x16/actions/zoom-original.png</file>
+    <file>oxygen/16x16/actions/go-next-view.png</file>
+    <file>oxygen/16x16/actions/irc-remove-operator.png</file>
+    <file>oxygen/16x16/actions/tools-report-bug.png</file>
+    <file>oxygen/16x16/actions/configure-shortcuts.png</file>
+    <file>oxygen/16x16/actions/edit-clear-locationbar-rtl.png</file>
+    <file>oxygen/16x16/actions/view-refresh.png</file>
+    <file>oxygen/16x16/actions/format-text-bold.png</file>
+    <file>oxygen/16x16/actions/media-playback-start.png</file>
+    <file>oxygen/16x16/actions/document-encrypt.png</file>
+    <file>oxygen/16x16/actions/format-text-color.png</file>
+    <file>oxygen/16x16/actions/edit-rename.png</file>
+    <file>oxygen/16x16/actions/im-kick-user.png</file>
+    <file>oxygen/16x16/actions/irc-operator.png</file>
+    <file>oxygen/16x16/actions/im-ban-user.png</file>
+    <file>oxygen/16x16/actions/go-previous-view.png</file>
+    <file>oxygen/16x16/actions/format-text-underline.png</file>
+    <file>oxygen/16x16/actions/flag-blue.png</file>
+    <file>oxygen/16x16/actions/network-connect.png</file>
+    <file>oxygen/16x16/actions/format-fill-color.png</file>
+    <file>oxygen/16x16/actions/document-edit.png</file>
+    <file>oxygen/16x16/actions/zoom-in.png</file>
+    <file>oxygen/16x16/actions/go-previous.png</file>
+    <file>oxygen/16x16/actions/configure.png</file>
+    <file>oxygen/16x16/actions/im-ban-kick-user.png</file>
+    <file>oxygen/16x16/actions/application-exit.png</file>
+    <file>oxygen/16x16/actions/document-open.png</file>
+    <file>oxygen/16x16/actions/list-remove-user.png</file>
+    <file>oxygen/16x16/actions/edit-find.png</file>
+    <file>oxygen/16x16/actions/dialog-cancel.png</file>
+    <file>oxygen/16x16/actions/go-down.png</file>
+    <file>oxygen/16x16/actions/list-add-user.png</file>
+    <file>oxygen/16x16/actions/mail-message-new.png</file>
+    <file>oxygen/16x16/actions/help-about.png</file>
+    <file>oxygen/16x16/actions/network-disconnect.png</file>
+    <file>oxygen/16x16/actions/irc-voice.png</file>
+    <file>oxygen/16x16/actions/go-up.png</file>
+    <file>oxygen/16x16/actions/im-user-away.png</file>
+    <file>oxygen/16x16/devices/network-wired.png</file>
+    <file>oxygen/16x16/apps/quassel.png</file>
+    <file>oxygen/16x16/status/security-low.png</file>
+    <file>oxygen/16x16/status/user-away.png</file>
+    <file>oxygen/16x16/status/security-high.png</file>
+    <file>oxygen/16x16/status/dialog-information.png</file>
+    <file>oxygen/64x64/actions/list-add-user.png</file>
+    <file>oxygen/64x64/actions/im-user-away.png</file>
+    <file>oxygen/64x64/actions/configure.png</file>
+    <file>oxygen/64x64/actions/im-user-offline.png</file>
+    <file>oxygen/64x64/actions/go-next.png</file>
+    <file>oxygen/64x64/actions/im-user.png</file>
+    <file>oxygen/64x64/actions/go-up.png</file>
+    <file>oxygen/64x64/actions/im-ban-kick-user.png</file>
+    <file>oxygen/64x64/actions/edit-find.png</file>
+    <file>oxygen/64x64/actions/application-exit.png</file>
+    <file>oxygen/64x64/actions/go-down.png</file>
+    <file>oxygen/64x64/actions/go-previous.png</file>
+    <file>oxygen/64x64/actions/im-ban-user.png</file>
+    <file>oxygen/64x64/actions/im-kick-user.png</file>
+    <file>oxygen/64x64/actions/document-edit.png</file>
+    <file>oxygen/64x64/actions/tools-report-bug.png</file>
+    <file>oxygen/64x64/devices/network-wired.png</file>
+    <file>oxygen/64x64/apps/quassel.png</file>
+    <file>oxygen/64x64/status/security-high.png</file>
+    <file>oxygen/64x64/status/security-low.png</file>
+    <file>oxygen/64x64/status/user-away.png</file>
+    <file>oxygen/64x64/status/dialog-information.png</file>
+    <file>oxygen/128x128/actions/mail-message-new.png</file>
+    <file>oxygen/128x128/actions/im-ban-kick-user.png</file>
+    <file>oxygen/128x128/actions/document-edit.png</file>
+    <file>oxygen/128x128/actions/im-user-offline.png</file>
+    <file>oxygen/128x128/actions/application-exit.png</file>
+    <file>oxygen/128x128/actions/im-user.png</file>
+    <file>oxygen/128x128/actions/go-next.png</file>
+    <file>oxygen/128x128/actions/im-kick-user.png</file>
+    <file>oxygen/128x128/actions/go-down.png</file>
+    <file>oxygen/128x128/actions/list-add-user.png</file>
+    <file>oxygen/128x128/actions/im-ban-user.png</file>
+    <file>oxygen/128x128/actions/go-previous.png</file>
+    <file>oxygen/128x128/actions/configure.png</file>
+    <file>oxygen/128x128/actions/tools-report-bug.png</file>
+    <file>oxygen/128x128/actions/im-user-away.png</file>
+    <file>oxygen/128x128/actions/go-up.png</file>
+    <file>oxygen/128x128/actions/edit-find.png</file>
+    <file>oxygen/128x128/devices/network-wired.png</file>
+    <file>oxygen/128x128/apps/quassel.png</file>
+    <file>oxygen/128x128/status/security-high.png</file>
+    <file>oxygen/128x128/status/security-low.png</file>
+    <file>oxygen/128x128/status/dialog-information.png</file>
+    <file>oxygen/48x48/actions/document-open.png</file>
+    <file>oxygen/48x48/actions/configure-shortcuts.png</file>
+    <file>oxygen/48x48/actions/go-next.png</file>
+    <file>oxygen/48x48/actions/im-user.png</file>
+    <file>oxygen/48x48/actions/flag-blue.png</file>
+    <file>oxygen/48x48/actions/dialog-cancel.png</file>
+    <file>oxygen/48x48/actions/list-add-user.png</file>
+    <file>oxygen/48x48/actions/configure.png</file>
+    <file>oxygen/48x48/actions/edit-find.png</file>
+    <file>oxygen/48x48/actions/irc-join-channel.png</file>
+    <file>oxygen/48x48/actions/edit-clear-locationbar-ltr.png</file>
+    <file>oxygen/48x48/actions/dialog-close.png</file>
+    <file>oxygen/48x48/actions/network-disconnect.png</file>
+    <file>oxygen/48x48/actions/list-add.png</file>
+    <file>oxygen/48x48/actions/irc-voice.png</file>
+    <file>oxygen/48x48/actions/format-list-unordered.png</file>
+    <file>oxygen/48x48/actions/media-playback-start.png</file>
+    <file>oxygen/48x48/actions/tools-report-bug.png</file>
+    <file>oxygen/48x48/actions/go-next-view.png</file>
+    <file>oxygen/48x48/actions/edit-rename.png</file>
+    <file>oxygen/48x48/actions/network-connect.png</file>
+    <file>oxygen/48x48/actions/irc-close-channel.png</file>
+    <file>oxygen/48x48/actions/go-up.png</file>
+    <file>oxygen/48x48/actions/format-text-bold.png</file>
+    <file>oxygen/48x48/actions/zoom-out.png</file>
+    <file>oxygen/48x48/actions/document-encrypt.png</file>
+    <file>oxygen/48x48/actions/im-ban-user.png</file>
+    <file>oxygen/48x48/actions/show-menu.png</file>
+    <file>oxygen/48x48/actions/help-about.png</file>
+    <file>oxygen/48x48/actions/view-refresh.png</file>
+    <file>oxygen/48x48/actions/format-text-italic.png</file>
+    <file>oxygen/48x48/actions/go-previous.png</file>
+    <file>oxygen/48x48/actions/zoom-original.png</file>
+    <file>oxygen/48x48/actions/go-previous-view.png</file>
+    <file>oxygen/48x48/actions/im-kick-user.png</file>
+    <file>oxygen/48x48/actions/edit-clear-locationbar-rtl.png</file>
+    <file>oxygen/48x48/actions/irc-operator.png</file>
+    <file>oxygen/48x48/actions/edit-copy.png</file>
+    <file>oxygen/48x48/actions/format-text-color.png</file>
+    <file>oxygen/48x48/actions/zoom-in.png</file>
+    <file>oxygen/48x48/actions/format-text-underline.png</file>
+    <file>oxygen/48x48/actions/im-ban-kick-user.png</file>
+    <file>oxygen/48x48/actions/application-exit.png</file>
+    <file>oxygen/48x48/actions/list-remove-user.png</file>
+    <file>oxygen/48x48/actions/im-user-offline.png</file>
+    <file>oxygen/48x48/actions/view-fullscreen.png</file>
+    <file>oxygen/48x48/actions/mail-message-new.png</file>
+    <file>oxygen/48x48/actions/go-down.png</file>
+    <file>oxygen/48x48/actions/edit-delete.png</file>
+    <file>oxygen/48x48/actions/format-fill-color.png</file>
+    <file>oxygen/48x48/actions/irc-remove-operator.png</file>
+    <file>oxygen/48x48/actions/irc-unvoice.png</file>
+    <file>oxygen/48x48/actions/document-edit.png</file>
+    <file>oxygen/48x48/actions/im-user-away.png</file>
+    <file>oxygen/48x48/devices/network-wired.png</file>
+    <file>oxygen/48x48/apps/quassel.png</file>
+    <file>oxygen/48x48/status/user-away.png</file>
+    <file>oxygen/48x48/status/dialog-information.png</file>
+    <file>oxygen/48x48/status/security-high.png</file>
+    <file>oxygen/48x48/status/security-low.png</file>
+    <file>oxygen/256x256/devices/network-wired.png</file>
+    <file>oxygen/256x256/apps/quassel.png</file>
   </qresource>
 </RCC>
diff --git a/icons/oxygen/128x128/actions/application-exit.png b/icons/oxygen/128x128/actions/application-exit.png
new file mode 100644 (file)
index 0000000..32be6b3
Binary files /dev/null and b/icons/oxygen/128x128/actions/application-exit.png differ
diff --git a/icons/oxygen/128x128/actions/configure.png b/icons/oxygen/128x128/actions/configure.png
new file mode 100644 (file)
index 0000000..ecbb741
Binary files /dev/null and b/icons/oxygen/128x128/actions/configure.png differ
diff --git a/icons/oxygen/128x128/actions/document-edit.png b/icons/oxygen/128x128/actions/document-edit.png
new file mode 100644 (file)
index 0000000..76ff8ec
Binary files /dev/null and b/icons/oxygen/128x128/actions/document-edit.png differ
diff --git a/icons/oxygen/128x128/actions/edit-find.png b/icons/oxygen/128x128/actions/edit-find.png
new file mode 100644 (file)
index 0000000..9123820
Binary files /dev/null and b/icons/oxygen/128x128/actions/edit-find.png differ
diff --git a/icons/oxygen/128x128/actions/go-down.png b/icons/oxygen/128x128/actions/go-down.png
new file mode 100644 (file)
index 0000000..262deb2
Binary files /dev/null and b/icons/oxygen/128x128/actions/go-down.png differ
diff --git a/icons/oxygen/128x128/actions/go-next.png b/icons/oxygen/128x128/actions/go-next.png
new file mode 100644 (file)
index 0000000..3e0c424
Binary files /dev/null and b/icons/oxygen/128x128/actions/go-next.png differ
diff --git a/icons/oxygen/128x128/actions/go-previous.png b/icons/oxygen/128x128/actions/go-previous.png
new file mode 100644 (file)
index 0000000..88db1dc
Binary files /dev/null and b/icons/oxygen/128x128/actions/go-previous.png differ
diff --git a/icons/oxygen/128x128/actions/go-up.png b/icons/oxygen/128x128/actions/go-up.png
new file mode 100644 (file)
index 0000000..02007f2
Binary files /dev/null and b/icons/oxygen/128x128/actions/go-up.png differ
diff --git a/icons/oxygen/128x128/actions/im-ban-kick-user.png b/icons/oxygen/128x128/actions/im-ban-kick-user.png
new file mode 100644 (file)
index 0000000..d6523ff
Binary files /dev/null and b/icons/oxygen/128x128/actions/im-ban-kick-user.png differ
diff --git a/icons/oxygen/128x128/actions/im-ban-user.png b/icons/oxygen/128x128/actions/im-ban-user.png
new file mode 100644 (file)
index 0000000..3a8033f
Binary files /dev/null and b/icons/oxygen/128x128/actions/im-ban-user.png differ
diff --git a/icons/oxygen/128x128/actions/im-kick-user.png b/icons/oxygen/128x128/actions/im-kick-user.png
new file mode 100644 (file)
index 0000000..4aa1fff
Binary files /dev/null and b/icons/oxygen/128x128/actions/im-kick-user.png differ
diff --git a/icons/oxygen/128x128/actions/im-user-away.png b/icons/oxygen/128x128/actions/im-user-away.png
new file mode 100644 (file)
index 0000000..680ad12
Binary files /dev/null and b/icons/oxygen/128x128/actions/im-user-away.png differ
diff --git a/icons/oxygen/128x128/actions/im-user-offline.png b/icons/oxygen/128x128/actions/im-user-offline.png
new file mode 100644 (file)
index 0000000..9d9c0e5
Binary files /dev/null and b/icons/oxygen/128x128/actions/im-user-offline.png differ
diff --git a/icons/oxygen/128x128/actions/im-user.png b/icons/oxygen/128x128/actions/im-user.png
new file mode 100644 (file)
index 0000000..3309570
Binary files /dev/null and b/icons/oxygen/128x128/actions/im-user.png differ
diff --git a/icons/oxygen/128x128/actions/list-add-user.png b/icons/oxygen/128x128/actions/list-add-user.png
new file mode 100644 (file)
index 0000000..5d29c0f
Binary files /dev/null and b/icons/oxygen/128x128/actions/list-add-user.png differ
diff --git a/icons/oxygen/128x128/actions/mail-message-new.png b/icons/oxygen/128x128/actions/mail-message-new.png
new file mode 100644 (file)
index 0000000..2f170fb
Binary files /dev/null and b/icons/oxygen/128x128/actions/mail-message-new.png differ
diff --git a/icons/oxygen/128x128/actions/tools-report-bug.png b/icons/oxygen/128x128/actions/tools-report-bug.png
new file mode 100644 (file)
index 0000000..051e738
Binary files /dev/null and b/icons/oxygen/128x128/actions/tools-report-bug.png differ
diff --git a/icons/oxygen/128x128/devices/network-wired.png b/icons/oxygen/128x128/devices/network-wired.png
new file mode 100644 (file)
index 0000000..cbcf1b6
Binary files /dev/null and b/icons/oxygen/128x128/devices/network-wired.png differ
diff --git a/icons/oxygen/128x128/status/dialog-information.png b/icons/oxygen/128x128/status/dialog-information.png
new file mode 100644 (file)
index 0000000..fe7dd00
Binary files /dev/null and b/icons/oxygen/128x128/status/dialog-information.png differ
diff --git a/icons/oxygen/128x128/status/security-high.png b/icons/oxygen/128x128/status/security-high.png
new file mode 100644 (file)
index 0000000..34ac983
Binary files /dev/null and b/icons/oxygen/128x128/status/security-high.png differ
diff --git a/icons/oxygen/128x128/status/security-low.png b/icons/oxygen/128x128/status/security-low.png
new file mode 100644 (file)
index 0000000..7ba8312
Binary files /dev/null and b/icons/oxygen/128x128/status/security-low.png differ
diff --git a/icons/oxygen/16x16/actions/dialog-close.png b/icons/oxygen/16x16/actions/dialog-close.png
new file mode 100644 (file)
index 0000000..2c2f99e
Binary files /dev/null and b/icons/oxygen/16x16/actions/dialog-close.png differ
diff --git a/icons/oxygen/16x16/actions/format-list-unordered.png b/icons/oxygen/16x16/actions/format-list-unordered.png
new file mode 100644 (file)
index 0000000..076bf18
Binary files /dev/null and b/icons/oxygen/16x16/actions/format-list-unordered.png differ
diff --git a/icons/oxygen/16x16/actions/im-user-away.png b/icons/oxygen/16x16/actions/im-user-away.png
new file mode 100644 (file)
index 0000000..38c61ac
Binary files /dev/null and b/icons/oxygen/16x16/actions/im-user-away.png differ
diff --git a/icons/oxygen/16x16/actions/im-user-offline.png b/icons/oxygen/16x16/actions/im-user-offline.png
new file mode 100644 (file)
index 0000000..ea10ab3
Binary files /dev/null and b/icons/oxygen/16x16/actions/im-user-offline.png differ
diff --git a/icons/oxygen/16x16/actions/im-user.png b/icons/oxygen/16x16/actions/im-user.png
new file mode 100644 (file)
index 0000000..1d3adc2
Binary files /dev/null and b/icons/oxygen/16x16/actions/im-user.png differ
diff --git a/icons/oxygen/16x16/actions/list-add-user.png b/icons/oxygen/16x16/actions/list-add-user.png
new file mode 100644 (file)
index 0000000..b413be2
Binary files /dev/null and b/icons/oxygen/16x16/actions/list-add-user.png differ
diff --git a/icons/oxygen/16x16/actions/list-remove-user.png b/icons/oxygen/16x16/actions/list-remove-user.png
new file mode 100644 (file)
index 0000000..6ac1d68
Binary files /dev/null and b/icons/oxygen/16x16/actions/list-remove-user.png differ
diff --git a/icons/oxygen/22x22/actions/application-exit.png b/icons/oxygen/22x22/actions/application-exit.png
new file mode 100644 (file)
index 0000000..ed5f8b2
Binary files /dev/null and b/icons/oxygen/22x22/actions/application-exit.png differ
diff --git a/icons/oxygen/22x22/actions/configure-shortcuts.png b/icons/oxygen/22x22/actions/configure-shortcuts.png
new file mode 100644 (file)
index 0000000..391ba80
Binary files /dev/null and b/icons/oxygen/22x22/actions/configure-shortcuts.png differ
diff --git a/icons/oxygen/22x22/actions/configure.png b/icons/oxygen/22x22/actions/configure.png
new file mode 100644 (file)
index 0000000..45b8fae
Binary files /dev/null and b/icons/oxygen/22x22/actions/configure.png differ
diff --git a/icons/oxygen/22x22/actions/dialog-cancel.png b/icons/oxygen/22x22/actions/dialog-cancel.png
new file mode 100644 (file)
index 0000000..c1adfc0
Binary files /dev/null and b/icons/oxygen/22x22/actions/dialog-cancel.png differ
diff --git a/icons/oxygen/22x22/actions/document-edit.png b/icons/oxygen/22x22/actions/document-edit.png
new file mode 100644 (file)
index 0000000..3d8f3a3
Binary files /dev/null and b/icons/oxygen/22x22/actions/document-edit.png differ
diff --git a/icons/oxygen/22x22/actions/document-encrypt.png b/icons/oxygen/22x22/actions/document-encrypt.png
new file mode 100644 (file)
index 0000000..0f2c9b7
Binary files /dev/null and b/icons/oxygen/22x22/actions/document-encrypt.png differ
diff --git a/icons/oxygen/22x22/actions/document-open.png b/icons/oxygen/22x22/actions/document-open.png
new file mode 100644 (file)
index 0000000..317a357
Binary files /dev/null and b/icons/oxygen/22x22/actions/document-open.png differ
diff --git a/icons/oxygen/22x22/actions/edit-clear-locationbar-ltr.png b/icons/oxygen/22x22/actions/edit-clear-locationbar-ltr.png
new file mode 100644 (file)
index 0000000..8d902d5
Binary files /dev/null and b/icons/oxygen/22x22/actions/edit-clear-locationbar-ltr.png differ
diff --git a/icons/oxygen/22x22/actions/edit-copy.png b/icons/oxygen/22x22/actions/edit-copy.png
new file mode 100644 (file)
index 0000000..d34cdcd
Binary files /dev/null and b/icons/oxygen/22x22/actions/edit-copy.png differ
diff --git a/icons/oxygen/22x22/actions/edit-delete.png b/icons/oxygen/22x22/actions/edit-delete.png
new file mode 100644 (file)
index 0000000..b0de61d
Binary files /dev/null and b/icons/oxygen/22x22/actions/edit-delete.png differ
diff --git a/icons/oxygen/22x22/actions/edit-find.png b/icons/oxygen/22x22/actions/edit-find.png
new file mode 100644 (file)
index 0000000..1b7a252
Binary files /dev/null and b/icons/oxygen/22x22/actions/edit-find.png differ
diff --git a/icons/oxygen/22x22/actions/flag-blue.png b/icons/oxygen/22x22/actions/flag-blue.png
new file mode 100644 (file)
index 0000000..b37b97a
Binary files /dev/null and b/icons/oxygen/22x22/actions/flag-blue.png differ
diff --git a/icons/oxygen/22x22/actions/format-fill-color.png b/icons/oxygen/22x22/actions/format-fill-color.png
new file mode 100644 (file)
index 0000000..e31f00e
Binary files /dev/null and b/icons/oxygen/22x22/actions/format-fill-color.png differ
diff --git a/icons/oxygen/22x22/actions/format-list-unordered.png b/icons/oxygen/22x22/actions/format-list-unordered.png
new file mode 100644 (file)
index 0000000..d60c0f6
Binary files /dev/null and b/icons/oxygen/22x22/actions/format-list-unordered.png differ
diff --git a/icons/oxygen/22x22/actions/format-text-bold.png b/icons/oxygen/22x22/actions/format-text-bold.png
new file mode 100644 (file)
index 0000000..a5535e3
Binary files /dev/null and b/icons/oxygen/22x22/actions/format-text-bold.png differ
diff --git a/icons/oxygen/22x22/actions/format-text-color.png b/icons/oxygen/22x22/actions/format-text-color.png
new file mode 100644 (file)
index 0000000..98f6173
Binary files /dev/null and b/icons/oxygen/22x22/actions/format-text-color.png differ
diff --git a/icons/oxygen/22x22/actions/format-text-italic.png b/icons/oxygen/22x22/actions/format-text-italic.png
new file mode 100644 (file)
index 0000000..a50211f
Binary files /dev/null and b/icons/oxygen/22x22/actions/format-text-italic.png differ
diff --git a/icons/oxygen/22x22/actions/format-text-underline.png b/icons/oxygen/22x22/actions/format-text-underline.png
new file mode 100644 (file)
index 0000000..e511395
Binary files /dev/null and b/icons/oxygen/22x22/actions/format-text-underline.png differ
diff --git a/icons/oxygen/22x22/actions/go-down.png b/icons/oxygen/22x22/actions/go-down.png
new file mode 100644 (file)
index 0000000..63331a5
Binary files /dev/null and b/icons/oxygen/22x22/actions/go-down.png differ
diff --git a/icons/oxygen/22x22/actions/go-next-view.png b/icons/oxygen/22x22/actions/go-next-view.png
new file mode 100644 (file)
index 0000000..9eba071
Binary files /dev/null and b/icons/oxygen/22x22/actions/go-next-view.png differ
diff --git a/icons/oxygen/22x22/actions/go-next.png b/icons/oxygen/22x22/actions/go-next.png
new file mode 100644 (file)
index 0000000..aa7cbb9
Binary files /dev/null and b/icons/oxygen/22x22/actions/go-next.png differ
diff --git a/icons/oxygen/22x22/actions/go-previous-view.png b/icons/oxygen/22x22/actions/go-previous-view.png
new file mode 100644 (file)
index 0000000..40219e5
Binary files /dev/null and b/icons/oxygen/22x22/actions/go-previous-view.png differ
diff --git a/icons/oxygen/22x22/actions/go-previous.png b/icons/oxygen/22x22/actions/go-previous.png
new file mode 100644 (file)
index 0000000..8230340
Binary files /dev/null and b/icons/oxygen/22x22/actions/go-previous.png differ
diff --git a/icons/oxygen/22x22/actions/go-up.png b/icons/oxygen/22x22/actions/go-up.png
new file mode 100644 (file)
index 0000000..4459024
Binary files /dev/null and b/icons/oxygen/22x22/actions/go-up.png differ
diff --git a/icons/oxygen/22x22/actions/help-about.png b/icons/oxygen/22x22/actions/help-about.png
new file mode 100644 (file)
index 0000000..a5607bc
Binary files /dev/null and b/icons/oxygen/22x22/actions/help-about.png differ
diff --git a/icons/oxygen/22x22/actions/im-ban-kick-user.png b/icons/oxygen/22x22/actions/im-ban-kick-user.png
new file mode 100644 (file)
index 0000000..180582c
Binary files /dev/null and b/icons/oxygen/22x22/actions/im-ban-kick-user.png differ
diff --git a/icons/oxygen/22x22/actions/im-ban-user.png b/icons/oxygen/22x22/actions/im-ban-user.png
new file mode 100644 (file)
index 0000000..3771291
Binary files /dev/null and b/icons/oxygen/22x22/actions/im-ban-user.png differ
diff --git a/icons/oxygen/22x22/actions/im-kick-user.png b/icons/oxygen/22x22/actions/im-kick-user.png
new file mode 100644 (file)
index 0000000..f9f0eec
Binary files /dev/null and b/icons/oxygen/22x22/actions/im-kick-user.png differ
diff --git a/icons/oxygen/22x22/actions/im-user-away.png b/icons/oxygen/22x22/actions/im-user-away.png
new file mode 100644 (file)
index 0000000..297e40c
Binary files /dev/null and b/icons/oxygen/22x22/actions/im-user-away.png differ
diff --git a/icons/oxygen/22x22/actions/im-user-offline.png b/icons/oxygen/22x22/actions/im-user-offline.png
new file mode 100644 (file)
index 0000000..49ec47c
Binary files /dev/null and b/icons/oxygen/22x22/actions/im-user-offline.png differ
diff --git a/icons/oxygen/22x22/actions/im-user.png b/icons/oxygen/22x22/actions/im-user.png
new file mode 100644 (file)
index 0000000..69de2e4
Binary files /dev/null and b/icons/oxygen/22x22/actions/im-user.png differ
diff --git a/icons/oxygen/22x22/actions/irc-close-channel.png b/icons/oxygen/22x22/actions/irc-close-channel.png
new file mode 100644 (file)
index 0000000..7a62ed2
Binary files /dev/null and b/icons/oxygen/22x22/actions/irc-close-channel.png differ
diff --git a/icons/oxygen/22x22/actions/irc-join-channel.png b/icons/oxygen/22x22/actions/irc-join-channel.png
new file mode 100644 (file)
index 0000000..557e2f1
Binary files /dev/null and b/icons/oxygen/22x22/actions/irc-join-channel.png differ
diff --git a/icons/oxygen/22x22/actions/irc-operator.png b/icons/oxygen/22x22/actions/irc-operator.png
new file mode 100644 (file)
index 0000000..a3707c4
Binary files /dev/null and b/icons/oxygen/22x22/actions/irc-operator.png differ
diff --git a/icons/oxygen/22x22/actions/irc-remove-operator.png b/icons/oxygen/22x22/actions/irc-remove-operator.png
new file mode 100644 (file)
index 0000000..a8ea364
Binary files /dev/null and b/icons/oxygen/22x22/actions/irc-remove-operator.png differ
diff --git a/icons/oxygen/22x22/actions/irc-unvoice.png b/icons/oxygen/22x22/actions/irc-unvoice.png
new file mode 100644 (file)
index 0000000..abfe3f9
Binary files /dev/null and b/icons/oxygen/22x22/actions/irc-unvoice.png differ
diff --git a/icons/oxygen/22x22/actions/irc-voice.png b/icons/oxygen/22x22/actions/irc-voice.png
new file mode 100644 (file)
index 0000000..5bb2ebe
Binary files /dev/null and b/icons/oxygen/22x22/actions/irc-voice.png differ
diff --git a/icons/oxygen/22x22/actions/list-add.png b/icons/oxygen/22x22/actions/list-add.png
new file mode 100644 (file)
index 0000000..e029787
Binary files /dev/null and b/icons/oxygen/22x22/actions/list-add.png differ
diff --git a/icons/oxygen/22x22/actions/mail-message-new.png b/icons/oxygen/22x22/actions/mail-message-new.png
new file mode 100644 (file)
index 0000000..543f1c5
Binary files /dev/null and b/icons/oxygen/22x22/actions/mail-message-new.png differ
diff --git a/icons/oxygen/22x22/actions/media-playback-start.png b/icons/oxygen/22x22/actions/media-playback-start.png
new file mode 100644 (file)
index 0000000..2820368
Binary files /dev/null and b/icons/oxygen/22x22/actions/media-playback-start.png differ
diff --git a/icons/oxygen/22x22/actions/network-connect.png b/icons/oxygen/22x22/actions/network-connect.png
new file mode 100644 (file)
index 0000000..b0c5296
Binary files /dev/null and b/icons/oxygen/22x22/actions/network-connect.png differ
diff --git a/icons/oxygen/22x22/actions/network-disconnect.png b/icons/oxygen/22x22/actions/network-disconnect.png
new file mode 100644 (file)
index 0000000..046b601
Binary files /dev/null and b/icons/oxygen/22x22/actions/network-disconnect.png differ
diff --git a/icons/oxygen/22x22/actions/show-menu.png b/icons/oxygen/22x22/actions/show-menu.png
new file mode 100644 (file)
index 0000000..dca073f
Binary files /dev/null and b/icons/oxygen/22x22/actions/show-menu.png differ
diff --git a/icons/oxygen/22x22/actions/tools-report-bug.png b/icons/oxygen/22x22/actions/tools-report-bug.png
new file mode 100644 (file)
index 0000000..9e2c8e2
Binary files /dev/null and b/icons/oxygen/22x22/actions/tools-report-bug.png differ
diff --git a/icons/oxygen/22x22/actions/view-fullscreen.png b/icons/oxygen/22x22/actions/view-fullscreen.png
new file mode 100644 (file)
index 0000000..ceda818
Binary files /dev/null and b/icons/oxygen/22x22/actions/view-fullscreen.png differ
diff --git a/icons/oxygen/22x22/actions/view-refresh.png b/icons/oxygen/22x22/actions/view-refresh.png
new file mode 100644 (file)
index 0000000..45b5535
Binary files /dev/null and b/icons/oxygen/22x22/actions/view-refresh.png differ
diff --git a/icons/oxygen/22x22/actions/zoom-in.png b/icons/oxygen/22x22/actions/zoom-in.png
new file mode 100644 (file)
index 0000000..8660d29
Binary files /dev/null and b/icons/oxygen/22x22/actions/zoom-in.png differ
diff --git a/icons/oxygen/22x22/actions/zoom-original.png b/icons/oxygen/22x22/actions/zoom-original.png
new file mode 100644 (file)
index 0000000..4eeacb1
Binary files /dev/null and b/icons/oxygen/22x22/actions/zoom-original.png differ
diff --git a/icons/oxygen/22x22/actions/zoom-out.png b/icons/oxygen/22x22/actions/zoom-out.png
new file mode 100644 (file)
index 0000000..23e2a76
Binary files /dev/null and b/icons/oxygen/22x22/actions/zoom-out.png differ
diff --git a/icons/oxygen/22x22/devices/network-wired.png b/icons/oxygen/22x22/devices/network-wired.png
new file mode 100644 (file)
index 0000000..7e22be7
Binary files /dev/null and b/icons/oxygen/22x22/devices/network-wired.png differ
diff --git a/icons/oxygen/22x22/status/dialog-information.png b/icons/oxygen/22x22/status/dialog-information.png
new file mode 100644 (file)
index 0000000..a5607bc
Binary files /dev/null and b/icons/oxygen/22x22/status/dialog-information.png differ
diff --git a/icons/oxygen/22x22/status/security-high.png b/icons/oxygen/22x22/status/security-high.png
new file mode 100644 (file)
index 0000000..80be848
Binary files /dev/null and b/icons/oxygen/22x22/status/security-high.png differ
diff --git a/icons/oxygen/22x22/status/security-low.png b/icons/oxygen/22x22/status/security-low.png
new file mode 100644 (file)
index 0000000..daa1c4a
Binary files /dev/null and b/icons/oxygen/22x22/status/security-low.png differ
diff --git a/icons/oxygen/22x22/status/user-away.png b/icons/oxygen/22x22/status/user-away.png
new file mode 100644 (file)
index 0000000..f16d92b
Binary files /dev/null and b/icons/oxygen/22x22/status/user-away.png differ
diff --git a/icons/oxygen/256x256/apps/quassel.png b/icons/oxygen/256x256/apps/quassel.png
new file mode 100644 (file)
index 0000000..7b0df4e
Binary files /dev/null and b/icons/oxygen/256x256/apps/quassel.png differ
diff --git a/icons/oxygen/256x256/devices/network-wired.png b/icons/oxygen/256x256/devices/network-wired.png
new file mode 100644 (file)
index 0000000..ec7270f
Binary files /dev/null and b/icons/oxygen/256x256/devices/network-wired.png differ
diff --git a/icons/oxygen/32x32/actions/application-exit.png b/icons/oxygen/32x32/actions/application-exit.png
new file mode 100644 (file)
index 0000000..dd76354
Binary files /dev/null and b/icons/oxygen/32x32/actions/application-exit.png differ
diff --git a/icons/oxygen/32x32/actions/configure-shortcuts.png b/icons/oxygen/32x32/actions/configure-shortcuts.png
new file mode 100644 (file)
index 0000000..1d8a340
Binary files /dev/null and b/icons/oxygen/32x32/actions/configure-shortcuts.png differ
diff --git a/icons/oxygen/32x32/actions/configure.png b/icons/oxygen/32x32/actions/configure.png
new file mode 100644 (file)
index 0000000..c774740
Binary files /dev/null and b/icons/oxygen/32x32/actions/configure.png differ
diff --git a/icons/oxygen/32x32/actions/dialog-cancel.png b/icons/oxygen/32x32/actions/dialog-cancel.png
new file mode 100644 (file)
index 0000000..6ce7961
Binary files /dev/null and b/icons/oxygen/32x32/actions/dialog-cancel.png differ
diff --git a/icons/oxygen/32x32/actions/dialog-close.png b/icons/oxygen/32x32/actions/dialog-close.png
new file mode 100644 (file)
index 0000000..b049b68
Binary files /dev/null and b/icons/oxygen/32x32/actions/dialog-close.png differ
diff --git a/icons/oxygen/32x32/actions/document-edit.png b/icons/oxygen/32x32/actions/document-edit.png
new file mode 100644 (file)
index 0000000..c5883ac
Binary files /dev/null and b/icons/oxygen/32x32/actions/document-edit.png differ
diff --git a/icons/oxygen/32x32/actions/document-encrypt.png b/icons/oxygen/32x32/actions/document-encrypt.png
new file mode 100644 (file)
index 0000000..353a22c
Binary files /dev/null and b/icons/oxygen/32x32/actions/document-encrypt.png differ
diff --git a/icons/oxygen/32x32/actions/document-open.png b/icons/oxygen/32x32/actions/document-open.png
new file mode 100644 (file)
index 0000000..8ba5441
Binary files /dev/null and b/icons/oxygen/32x32/actions/document-open.png differ
diff --git a/icons/oxygen/32x32/actions/edit-clear-locationbar-ltr.png b/icons/oxygen/32x32/actions/edit-clear-locationbar-ltr.png
new file mode 100644 (file)
index 0000000..023cfb8
Binary files /dev/null and b/icons/oxygen/32x32/actions/edit-clear-locationbar-ltr.png differ
diff --git a/icons/oxygen/32x32/actions/edit-clear-locationbar-rtl.png b/icons/oxygen/32x32/actions/edit-clear-locationbar-rtl.png
new file mode 100644 (file)
index 0000000..32b0666
Binary files /dev/null and b/icons/oxygen/32x32/actions/edit-clear-locationbar-rtl.png differ
diff --git a/icons/oxygen/32x32/actions/edit-copy.png b/icons/oxygen/32x32/actions/edit-copy.png
new file mode 100644 (file)
index 0000000..d4180c6
Binary files /dev/null and b/icons/oxygen/32x32/actions/edit-copy.png differ
diff --git a/icons/oxygen/32x32/actions/edit-delete.png b/icons/oxygen/32x32/actions/edit-delete.png
new file mode 100644 (file)
index 0000000..351659b
Binary files /dev/null and b/icons/oxygen/32x32/actions/edit-delete.png differ
diff --git a/icons/oxygen/32x32/actions/edit-find.png b/icons/oxygen/32x32/actions/edit-find.png
new file mode 100644 (file)
index 0000000..9b3fe6b
Binary files /dev/null and b/icons/oxygen/32x32/actions/edit-find.png differ
diff --git a/icons/oxygen/32x32/actions/edit-rename.png b/icons/oxygen/32x32/actions/edit-rename.png
new file mode 100644 (file)
index 0000000..5f089f5
Binary files /dev/null and b/icons/oxygen/32x32/actions/edit-rename.png differ
diff --git a/icons/oxygen/32x32/actions/flag-blue.png b/icons/oxygen/32x32/actions/flag-blue.png
new file mode 100644 (file)
index 0000000..9373e3d
Binary files /dev/null and b/icons/oxygen/32x32/actions/flag-blue.png differ
diff --git a/icons/oxygen/32x32/actions/format-fill-color.png b/icons/oxygen/32x32/actions/format-fill-color.png
new file mode 100644 (file)
index 0000000..af5421e
Binary files /dev/null and b/icons/oxygen/32x32/actions/format-fill-color.png differ
diff --git a/icons/oxygen/32x32/actions/format-list-unordered.png b/icons/oxygen/32x32/actions/format-list-unordered.png
new file mode 100644 (file)
index 0000000..09bca30
Binary files /dev/null and b/icons/oxygen/32x32/actions/format-list-unordered.png differ
diff --git a/icons/oxygen/32x32/actions/format-text-bold.png b/icons/oxygen/32x32/actions/format-text-bold.png
new file mode 100644 (file)
index 0000000..8949f44
Binary files /dev/null and b/icons/oxygen/32x32/actions/format-text-bold.png differ
diff --git a/icons/oxygen/32x32/actions/format-text-color.png b/icons/oxygen/32x32/actions/format-text-color.png
new file mode 100644 (file)
index 0000000..66fee9c
Binary files /dev/null and b/icons/oxygen/32x32/actions/format-text-color.png differ
diff --git a/icons/oxygen/32x32/actions/format-text-italic.png b/icons/oxygen/32x32/actions/format-text-italic.png
new file mode 100644 (file)
index 0000000..b566b34
Binary files /dev/null and b/icons/oxygen/32x32/actions/format-text-italic.png differ
diff --git a/icons/oxygen/32x32/actions/format-text-underline.png b/icons/oxygen/32x32/actions/format-text-underline.png
new file mode 100644 (file)
index 0000000..7c8bd5b
Binary files /dev/null and b/icons/oxygen/32x32/actions/format-text-underline.png differ
diff --git a/icons/oxygen/32x32/actions/go-down.png b/icons/oxygen/32x32/actions/go-down.png
new file mode 100644 (file)
index 0000000..b834f25
Binary files /dev/null and b/icons/oxygen/32x32/actions/go-down.png differ
diff --git a/icons/oxygen/32x32/actions/go-next-view.png b/icons/oxygen/32x32/actions/go-next-view.png
new file mode 100644 (file)
index 0000000..3bce02d
Binary files /dev/null and b/icons/oxygen/32x32/actions/go-next-view.png differ
diff --git a/icons/oxygen/32x32/actions/go-next.png b/icons/oxygen/32x32/actions/go-next.png
new file mode 100644 (file)
index 0000000..c4da8a9
Binary files /dev/null and b/icons/oxygen/32x32/actions/go-next.png differ
diff --git a/icons/oxygen/32x32/actions/go-previous-view.png b/icons/oxygen/32x32/actions/go-previous-view.png
new file mode 100644 (file)
index 0000000..3ec011e
Binary files /dev/null and b/icons/oxygen/32x32/actions/go-previous-view.png differ
diff --git a/icons/oxygen/32x32/actions/go-previous.png b/icons/oxygen/32x32/actions/go-previous.png
new file mode 100644 (file)
index 0000000..68ed8a1
Binary files /dev/null and b/icons/oxygen/32x32/actions/go-previous.png differ
diff --git a/icons/oxygen/32x32/actions/go-up.png b/icons/oxygen/32x32/actions/go-up.png
new file mode 100644 (file)
index 0000000..86d1f71
Binary files /dev/null and b/icons/oxygen/32x32/actions/go-up.png differ
diff --git a/icons/oxygen/32x32/actions/help-about.png b/icons/oxygen/32x32/actions/help-about.png
new file mode 100644 (file)
index 0000000..ee59e17
Binary files /dev/null and b/icons/oxygen/32x32/actions/help-about.png differ
diff --git a/icons/oxygen/32x32/actions/im-ban-kick-user.png b/icons/oxygen/32x32/actions/im-ban-kick-user.png
new file mode 100644 (file)
index 0000000..68ae081
Binary files /dev/null and b/icons/oxygen/32x32/actions/im-ban-kick-user.png differ
diff --git a/icons/oxygen/32x32/actions/im-ban-user.png b/icons/oxygen/32x32/actions/im-ban-user.png
new file mode 100644 (file)
index 0000000..e795d04
Binary files /dev/null and b/icons/oxygen/32x32/actions/im-ban-user.png differ
diff --git a/icons/oxygen/32x32/actions/im-kick-user.png b/icons/oxygen/32x32/actions/im-kick-user.png
new file mode 100644 (file)
index 0000000..1c8f519
Binary files /dev/null and b/icons/oxygen/32x32/actions/im-kick-user.png differ
diff --git a/icons/oxygen/32x32/actions/im-user-away.png b/icons/oxygen/32x32/actions/im-user-away.png
new file mode 100644 (file)
index 0000000..c0d7e53
Binary files /dev/null and b/icons/oxygen/32x32/actions/im-user-away.png differ
diff --git a/icons/oxygen/32x32/actions/im-user-offline.png b/icons/oxygen/32x32/actions/im-user-offline.png
new file mode 100644 (file)
index 0000000..cace13e
Binary files /dev/null and b/icons/oxygen/32x32/actions/im-user-offline.png differ
diff --git a/icons/oxygen/32x32/actions/im-user.png b/icons/oxygen/32x32/actions/im-user.png
new file mode 100644 (file)
index 0000000..0254741
Binary files /dev/null and b/icons/oxygen/32x32/actions/im-user.png differ
diff --git a/icons/oxygen/32x32/actions/irc-close-channel.png b/icons/oxygen/32x32/actions/irc-close-channel.png
new file mode 100644 (file)
index 0000000..9ab9cee
Binary files /dev/null and b/icons/oxygen/32x32/actions/irc-close-channel.png differ
diff --git a/icons/oxygen/32x32/actions/irc-join-channel.png b/icons/oxygen/32x32/actions/irc-join-channel.png
new file mode 100644 (file)
index 0000000..8dab9aa
Binary files /dev/null and b/icons/oxygen/32x32/actions/irc-join-channel.png differ
diff --git a/icons/oxygen/32x32/actions/irc-operator.png b/icons/oxygen/32x32/actions/irc-operator.png
new file mode 100644 (file)
index 0000000..604a279
Binary files /dev/null and b/icons/oxygen/32x32/actions/irc-operator.png differ
diff --git a/icons/oxygen/32x32/actions/irc-remove-operator.png b/icons/oxygen/32x32/actions/irc-remove-operator.png
new file mode 100644 (file)
index 0000000..1fcf97d
Binary files /dev/null and b/icons/oxygen/32x32/actions/irc-remove-operator.png differ
diff --git a/icons/oxygen/32x32/actions/irc-unvoice.png b/icons/oxygen/32x32/actions/irc-unvoice.png
new file mode 100644 (file)
index 0000000..7a91fd2
Binary files /dev/null and b/icons/oxygen/32x32/actions/irc-unvoice.png differ
diff --git a/icons/oxygen/32x32/actions/irc-voice.png b/icons/oxygen/32x32/actions/irc-voice.png
new file mode 100644 (file)
index 0000000..606fefb
Binary files /dev/null and b/icons/oxygen/32x32/actions/irc-voice.png differ
diff --git a/icons/oxygen/32x32/actions/list-add-user.png b/icons/oxygen/32x32/actions/list-add-user.png
new file mode 100644 (file)
index 0000000..8aa98ec
Binary files /dev/null and b/icons/oxygen/32x32/actions/list-add-user.png differ
diff --git a/icons/oxygen/32x32/actions/list-add.png b/icons/oxygen/32x32/actions/list-add.png
new file mode 100644 (file)
index 0000000..5724694
Binary files /dev/null and b/icons/oxygen/32x32/actions/list-add.png differ
diff --git a/icons/oxygen/32x32/actions/list-remove-user.png b/icons/oxygen/32x32/actions/list-remove-user.png
new file mode 100644 (file)
index 0000000..cfaa4e2
Binary files /dev/null and b/icons/oxygen/32x32/actions/list-remove-user.png differ
diff --git a/icons/oxygen/32x32/actions/mail-message-new.png b/icons/oxygen/32x32/actions/mail-message-new.png
new file mode 100644 (file)
index 0000000..a8fb51d
Binary files /dev/null and b/icons/oxygen/32x32/actions/mail-message-new.png differ
diff --git a/icons/oxygen/32x32/actions/media-playback-start.png b/icons/oxygen/32x32/actions/media-playback-start.png
new file mode 100644 (file)
index 0000000..7190685
Binary files /dev/null and b/icons/oxygen/32x32/actions/media-playback-start.png differ
diff --git a/icons/oxygen/32x32/actions/network-connect.png b/icons/oxygen/32x32/actions/network-connect.png
new file mode 100644 (file)
index 0000000..4e32020
Binary files /dev/null and b/icons/oxygen/32x32/actions/network-connect.png differ
diff --git a/icons/oxygen/32x32/actions/network-disconnect.png b/icons/oxygen/32x32/actions/network-disconnect.png
new file mode 100644 (file)
index 0000000..623c8e0
Binary files /dev/null and b/icons/oxygen/32x32/actions/network-disconnect.png differ
diff --git a/icons/oxygen/32x32/actions/show-menu.png b/icons/oxygen/32x32/actions/show-menu.png
new file mode 100644 (file)
index 0000000..fa35882
Binary files /dev/null and b/icons/oxygen/32x32/actions/show-menu.png differ
diff --git a/icons/oxygen/32x32/actions/tools-report-bug.png b/icons/oxygen/32x32/actions/tools-report-bug.png
new file mode 100644 (file)
index 0000000..c7ace70
Binary files /dev/null and b/icons/oxygen/32x32/actions/tools-report-bug.png differ
diff --git a/icons/oxygen/32x32/actions/view-fullscreen.png b/icons/oxygen/32x32/actions/view-fullscreen.png
new file mode 100644 (file)
index 0000000..e7758fe
Binary files /dev/null and b/icons/oxygen/32x32/actions/view-fullscreen.png differ
diff --git a/icons/oxygen/32x32/actions/view-refresh.png b/icons/oxygen/32x32/actions/view-refresh.png
new file mode 100644 (file)
index 0000000..afa2a9d
Binary files /dev/null and b/icons/oxygen/32x32/actions/view-refresh.png differ
diff --git a/icons/oxygen/32x32/actions/zoom-in.png b/icons/oxygen/32x32/actions/zoom-in.png
new file mode 100644 (file)
index 0000000..d90f809
Binary files /dev/null and b/icons/oxygen/32x32/actions/zoom-in.png differ
diff --git a/icons/oxygen/32x32/actions/zoom-original.png b/icons/oxygen/32x32/actions/zoom-original.png
new file mode 100644 (file)
index 0000000..c243a32
Binary files /dev/null and b/icons/oxygen/32x32/actions/zoom-original.png differ
diff --git a/icons/oxygen/32x32/actions/zoom-out.png b/icons/oxygen/32x32/actions/zoom-out.png
new file mode 100644 (file)
index 0000000..e3eb020
Binary files /dev/null and b/icons/oxygen/32x32/actions/zoom-out.png differ
diff --git a/icons/oxygen/32x32/devices/network-wired.png b/icons/oxygen/32x32/devices/network-wired.png
new file mode 100644 (file)
index 0000000..2c49e92
Binary files /dev/null and b/icons/oxygen/32x32/devices/network-wired.png differ
diff --git a/icons/oxygen/32x32/status/dialog-information.png b/icons/oxygen/32x32/status/dialog-information.png
new file mode 100644 (file)
index 0000000..ee59e17
Binary files /dev/null and b/icons/oxygen/32x32/status/dialog-information.png differ
diff --git a/icons/oxygen/32x32/status/security-high.png b/icons/oxygen/32x32/status/security-high.png
new file mode 100644 (file)
index 0000000..95e73d9
Binary files /dev/null and b/icons/oxygen/32x32/status/security-high.png differ
diff --git a/icons/oxygen/32x32/status/security-low.png b/icons/oxygen/32x32/status/security-low.png
new file mode 100644 (file)
index 0000000..9ea4953
Binary files /dev/null and b/icons/oxygen/32x32/status/security-low.png differ
diff --git a/icons/oxygen/32x32/status/user-away.png b/icons/oxygen/32x32/status/user-away.png
new file mode 100644 (file)
index 0000000..233b124
Binary files /dev/null and b/icons/oxygen/32x32/status/user-away.png differ
diff --git a/icons/oxygen/48x48/actions/application-exit.png b/icons/oxygen/48x48/actions/application-exit.png
new file mode 100644 (file)
index 0000000..9ae1f1f
Binary files /dev/null and b/icons/oxygen/48x48/actions/application-exit.png differ
diff --git a/icons/oxygen/48x48/actions/configure-shortcuts.png b/icons/oxygen/48x48/actions/configure-shortcuts.png
new file mode 100644 (file)
index 0000000..59ec430
Binary files /dev/null and b/icons/oxygen/48x48/actions/configure-shortcuts.png differ
diff --git a/icons/oxygen/48x48/actions/configure.png b/icons/oxygen/48x48/actions/configure.png
new file mode 100644 (file)
index 0000000..71deb5a
Binary files /dev/null and b/icons/oxygen/48x48/actions/configure.png differ
diff --git a/icons/oxygen/48x48/actions/dialog-cancel.png b/icons/oxygen/48x48/actions/dialog-cancel.png
new file mode 100644 (file)
index 0000000..fd285bc
Binary files /dev/null and b/icons/oxygen/48x48/actions/dialog-cancel.png differ
diff --git a/icons/oxygen/48x48/actions/dialog-close.png b/icons/oxygen/48x48/actions/dialog-close.png
new file mode 100644 (file)
index 0000000..8d7f19f
Binary files /dev/null and b/icons/oxygen/48x48/actions/dialog-close.png differ
diff --git a/icons/oxygen/48x48/actions/document-edit.png b/icons/oxygen/48x48/actions/document-edit.png
new file mode 100644 (file)
index 0000000..e8fe097
Binary files /dev/null and b/icons/oxygen/48x48/actions/document-edit.png differ
diff --git a/icons/oxygen/48x48/actions/document-encrypt.png b/icons/oxygen/48x48/actions/document-encrypt.png
new file mode 100644 (file)
index 0000000..b80c2a6
Binary files /dev/null and b/icons/oxygen/48x48/actions/document-encrypt.png differ
diff --git a/icons/oxygen/48x48/actions/document-open.png b/icons/oxygen/48x48/actions/document-open.png
new file mode 100644 (file)
index 0000000..3432ed2
Binary files /dev/null and b/icons/oxygen/48x48/actions/document-open.png differ
diff --git a/icons/oxygen/48x48/actions/edit-clear-locationbar-ltr.png b/icons/oxygen/48x48/actions/edit-clear-locationbar-ltr.png
new file mode 100644 (file)
index 0000000..3e62098
Binary files /dev/null and b/icons/oxygen/48x48/actions/edit-clear-locationbar-ltr.png differ
diff --git a/icons/oxygen/48x48/actions/edit-clear-locationbar-rtl.png b/icons/oxygen/48x48/actions/edit-clear-locationbar-rtl.png
new file mode 100644 (file)
index 0000000..7257212
Binary files /dev/null and b/icons/oxygen/48x48/actions/edit-clear-locationbar-rtl.png differ
diff --git a/icons/oxygen/48x48/actions/edit-copy.png b/icons/oxygen/48x48/actions/edit-copy.png
new file mode 100644 (file)
index 0000000..d33b436
Binary files /dev/null and b/icons/oxygen/48x48/actions/edit-copy.png differ
diff --git a/icons/oxygen/48x48/actions/edit-delete.png b/icons/oxygen/48x48/actions/edit-delete.png
new file mode 100644 (file)
index 0000000..394d3a7
Binary files /dev/null and b/icons/oxygen/48x48/actions/edit-delete.png differ
diff --git a/icons/oxygen/48x48/actions/edit-find.png b/icons/oxygen/48x48/actions/edit-find.png
new file mode 100644 (file)
index 0000000..bb95091
Binary files /dev/null and b/icons/oxygen/48x48/actions/edit-find.png differ
diff --git a/icons/oxygen/48x48/actions/edit-rename.png b/icons/oxygen/48x48/actions/edit-rename.png
new file mode 100644 (file)
index 0000000..bc5476d
Binary files /dev/null and b/icons/oxygen/48x48/actions/edit-rename.png differ
diff --git a/icons/oxygen/48x48/actions/flag-blue.png b/icons/oxygen/48x48/actions/flag-blue.png
new file mode 100644 (file)
index 0000000..d8d891e
Binary files /dev/null and b/icons/oxygen/48x48/actions/flag-blue.png differ
diff --git a/icons/oxygen/48x48/actions/format-fill-color.png b/icons/oxygen/48x48/actions/format-fill-color.png
new file mode 100644 (file)
index 0000000..39c6c67
Binary files /dev/null and b/icons/oxygen/48x48/actions/format-fill-color.png differ
diff --git a/icons/oxygen/48x48/actions/format-list-unordered.png b/icons/oxygen/48x48/actions/format-list-unordered.png
new file mode 100644 (file)
index 0000000..830243d
Binary files /dev/null and b/icons/oxygen/48x48/actions/format-list-unordered.png differ
diff --git a/icons/oxygen/48x48/actions/format-text-bold.png b/icons/oxygen/48x48/actions/format-text-bold.png
new file mode 100644 (file)
index 0000000..d30b47e
Binary files /dev/null and b/icons/oxygen/48x48/actions/format-text-bold.png differ
diff --git a/icons/oxygen/48x48/actions/format-text-color.png b/icons/oxygen/48x48/actions/format-text-color.png
new file mode 100644 (file)
index 0000000..8ed346b
Binary files /dev/null and b/icons/oxygen/48x48/actions/format-text-color.png differ
diff --git a/icons/oxygen/48x48/actions/format-text-italic.png b/icons/oxygen/48x48/actions/format-text-italic.png
new file mode 100644 (file)
index 0000000..d286bc0
Binary files /dev/null and b/icons/oxygen/48x48/actions/format-text-italic.png differ
diff --git a/icons/oxygen/48x48/actions/format-text-underline.png b/icons/oxygen/48x48/actions/format-text-underline.png
new file mode 100644 (file)
index 0000000..2734a28
Binary files /dev/null and b/icons/oxygen/48x48/actions/format-text-underline.png differ
diff --git a/icons/oxygen/48x48/actions/go-down.png b/icons/oxygen/48x48/actions/go-down.png
new file mode 100644 (file)
index 0000000..780714b
Binary files /dev/null and b/icons/oxygen/48x48/actions/go-down.png differ
diff --git a/icons/oxygen/48x48/actions/go-next-view.png b/icons/oxygen/48x48/actions/go-next-view.png
new file mode 100644 (file)
index 0000000..e5e05d6
Binary files /dev/null and b/icons/oxygen/48x48/actions/go-next-view.png differ
diff --git a/icons/oxygen/48x48/actions/go-next.png b/icons/oxygen/48x48/actions/go-next.png
new file mode 100644 (file)
index 0000000..6cbd487
Binary files /dev/null and b/icons/oxygen/48x48/actions/go-next.png differ
diff --git a/icons/oxygen/48x48/actions/go-previous-view.png b/icons/oxygen/48x48/actions/go-previous-view.png
new file mode 100644 (file)
index 0000000..85bc2e3
Binary files /dev/null and b/icons/oxygen/48x48/actions/go-previous-view.png differ
diff --git a/icons/oxygen/48x48/actions/go-previous.png b/icons/oxygen/48x48/actions/go-previous.png
new file mode 100644 (file)
index 0000000..2741394
Binary files /dev/null and b/icons/oxygen/48x48/actions/go-previous.png differ
diff --git a/icons/oxygen/48x48/actions/go-up.png b/icons/oxygen/48x48/actions/go-up.png
new file mode 100644 (file)
index 0000000..7174fa8
Binary files /dev/null and b/icons/oxygen/48x48/actions/go-up.png differ
diff --git a/icons/oxygen/48x48/actions/im-user-away.png b/icons/oxygen/48x48/actions/im-user-away.png
new file mode 100644 (file)
index 0000000..f28ba0d
Binary files /dev/null and b/icons/oxygen/48x48/actions/im-user-away.png differ
diff --git a/icons/oxygen/48x48/actions/im-user-offline.png b/icons/oxygen/48x48/actions/im-user-offline.png
new file mode 100644 (file)
index 0000000..c7e33db
Binary files /dev/null and b/icons/oxygen/48x48/actions/im-user-offline.png differ
diff --git a/icons/oxygen/48x48/actions/list-add-user.png b/icons/oxygen/48x48/actions/list-add-user.png
new file mode 100644 (file)
index 0000000..083f804
Binary files /dev/null and b/icons/oxygen/48x48/actions/list-add-user.png differ
diff --git a/icons/oxygen/48x48/actions/list-add.png b/icons/oxygen/48x48/actions/list-add.png
new file mode 100644 (file)
index 0000000..af5b56e
Binary files /dev/null and b/icons/oxygen/48x48/actions/list-add.png differ
diff --git a/icons/oxygen/48x48/actions/list-remove-user.png b/icons/oxygen/48x48/actions/list-remove-user.png
new file mode 100644 (file)
index 0000000..5bc6e08
Binary files /dev/null and b/icons/oxygen/48x48/actions/list-remove-user.png differ
diff --git a/icons/oxygen/48x48/actions/media-playback-start.png b/icons/oxygen/48x48/actions/media-playback-start.png
new file mode 100644 (file)
index 0000000..dbeee2b
Binary files /dev/null and b/icons/oxygen/48x48/actions/media-playback-start.png differ
diff --git a/icons/oxygen/48x48/actions/show-menu.png b/icons/oxygen/48x48/actions/show-menu.png
new file mode 100644 (file)
index 0000000..4cde58f
Binary files /dev/null and b/icons/oxygen/48x48/actions/show-menu.png differ
diff --git a/icons/oxygen/48x48/actions/tools-report-bug.png b/icons/oxygen/48x48/actions/tools-report-bug.png
new file mode 100644 (file)
index 0000000..239a43e
Binary files /dev/null and b/icons/oxygen/48x48/actions/tools-report-bug.png differ
diff --git a/icons/oxygen/48x48/actions/view-fullscreen.png b/icons/oxygen/48x48/actions/view-fullscreen.png
new file mode 100644 (file)
index 0000000..aed8fc3
Binary files /dev/null and b/icons/oxygen/48x48/actions/view-fullscreen.png differ
diff --git a/icons/oxygen/48x48/actions/view-refresh.png b/icons/oxygen/48x48/actions/view-refresh.png
new file mode 100644 (file)
index 0000000..0b08b23
Binary files /dev/null and b/icons/oxygen/48x48/actions/view-refresh.png differ
diff --git a/icons/oxygen/48x48/actions/zoom-in.png b/icons/oxygen/48x48/actions/zoom-in.png
new file mode 100644 (file)
index 0000000..b99d367
Binary files /dev/null and b/icons/oxygen/48x48/actions/zoom-in.png differ
diff --git a/icons/oxygen/48x48/actions/zoom-original.png b/icons/oxygen/48x48/actions/zoom-original.png
new file mode 100644 (file)
index 0000000..2f49354
Binary files /dev/null and b/icons/oxygen/48x48/actions/zoom-original.png differ
diff --git a/icons/oxygen/48x48/actions/zoom-out.png b/icons/oxygen/48x48/actions/zoom-out.png
new file mode 100644 (file)
index 0000000..f08f094
Binary files /dev/null and b/icons/oxygen/48x48/actions/zoom-out.png differ
diff --git a/icons/oxygen/48x48/devices/network-wired.png b/icons/oxygen/48x48/devices/network-wired.png
new file mode 100644 (file)
index 0000000..07333a1
Binary files /dev/null and b/icons/oxygen/48x48/devices/network-wired.png differ
diff --git a/icons/oxygen/48x48/status/dialog-information.png b/icons/oxygen/48x48/status/dialog-information.png
new file mode 100644 (file)
index 0000000..8f3a936
Binary files /dev/null and b/icons/oxygen/48x48/status/dialog-information.png differ
diff --git a/icons/oxygen/48x48/status/security-high.png b/icons/oxygen/48x48/status/security-high.png
new file mode 100644 (file)
index 0000000..fb54fd7
Binary files /dev/null and b/icons/oxygen/48x48/status/security-high.png differ
diff --git a/icons/oxygen/48x48/status/security-low.png b/icons/oxygen/48x48/status/security-low.png
new file mode 100644 (file)
index 0000000..9d5659f
Binary files /dev/null and b/icons/oxygen/48x48/status/security-low.png differ
diff --git a/icons/oxygen/48x48/status/user-away.png b/icons/oxygen/48x48/status/user-away.png
new file mode 100644 (file)
index 0000000..3be2fce
Binary files /dev/null and b/icons/oxygen/48x48/status/user-away.png differ
diff --git a/icons/oxygen/64x64/actions/application-exit.png b/icons/oxygen/64x64/actions/application-exit.png
new file mode 100644 (file)
index 0000000..c1549f4
Binary files /dev/null and b/icons/oxygen/64x64/actions/application-exit.png differ
diff --git a/icons/oxygen/64x64/actions/configure.png b/icons/oxygen/64x64/actions/configure.png
new file mode 100644 (file)
index 0000000..79f92de
Binary files /dev/null and b/icons/oxygen/64x64/actions/configure.png differ
diff --git a/icons/oxygen/64x64/actions/document-edit.png b/icons/oxygen/64x64/actions/document-edit.png
new file mode 100644 (file)
index 0000000..a0ec6b7
Binary files /dev/null and b/icons/oxygen/64x64/actions/document-edit.png differ
diff --git a/icons/oxygen/64x64/actions/edit-find.png b/icons/oxygen/64x64/actions/edit-find.png
new file mode 100644 (file)
index 0000000..884bd5f
Binary files /dev/null and b/icons/oxygen/64x64/actions/edit-find.png differ
diff --git a/icons/oxygen/64x64/actions/go-down.png b/icons/oxygen/64x64/actions/go-down.png
new file mode 100644 (file)
index 0000000..c23774b
Binary files /dev/null and b/icons/oxygen/64x64/actions/go-down.png differ
diff --git a/icons/oxygen/64x64/actions/go-next.png b/icons/oxygen/64x64/actions/go-next.png
new file mode 100644 (file)
index 0000000..31b2a6b
Binary files /dev/null and b/icons/oxygen/64x64/actions/go-next.png differ
diff --git a/icons/oxygen/64x64/actions/go-previous.png b/icons/oxygen/64x64/actions/go-previous.png
new file mode 100644 (file)
index 0000000..f53d410
Binary files /dev/null and b/icons/oxygen/64x64/actions/go-previous.png differ
diff --git a/icons/oxygen/64x64/actions/go-up.png b/icons/oxygen/64x64/actions/go-up.png
new file mode 100644 (file)
index 0000000..e44c37a
Binary files /dev/null and b/icons/oxygen/64x64/actions/go-up.png differ
diff --git a/icons/oxygen/64x64/actions/im-ban-kick-user.png b/icons/oxygen/64x64/actions/im-ban-kick-user.png
new file mode 100644 (file)
index 0000000..4506f59
Binary files /dev/null and b/icons/oxygen/64x64/actions/im-ban-kick-user.png differ
diff --git a/icons/oxygen/64x64/actions/im-ban-user.png b/icons/oxygen/64x64/actions/im-ban-user.png
new file mode 100644 (file)
index 0000000..c3072ef
Binary files /dev/null and b/icons/oxygen/64x64/actions/im-ban-user.png differ
diff --git a/icons/oxygen/64x64/actions/im-kick-user.png b/icons/oxygen/64x64/actions/im-kick-user.png
new file mode 100644 (file)
index 0000000..6268e82
Binary files /dev/null and b/icons/oxygen/64x64/actions/im-kick-user.png differ
diff --git a/icons/oxygen/64x64/actions/im-user-away.png b/icons/oxygen/64x64/actions/im-user-away.png
new file mode 100644 (file)
index 0000000..3f841bb
Binary files /dev/null and b/icons/oxygen/64x64/actions/im-user-away.png differ
diff --git a/icons/oxygen/64x64/actions/im-user-offline.png b/icons/oxygen/64x64/actions/im-user-offline.png
new file mode 100644 (file)
index 0000000..2b3bca3
Binary files /dev/null and b/icons/oxygen/64x64/actions/im-user-offline.png differ
diff --git a/icons/oxygen/64x64/actions/im-user.png b/icons/oxygen/64x64/actions/im-user.png
new file mode 100644 (file)
index 0000000..dd7d7a2
Binary files /dev/null and b/icons/oxygen/64x64/actions/im-user.png differ
diff --git a/icons/oxygen/64x64/actions/list-add-user.png b/icons/oxygen/64x64/actions/list-add-user.png
new file mode 100644 (file)
index 0000000..12f73ef
Binary files /dev/null and b/icons/oxygen/64x64/actions/list-add-user.png differ
diff --git a/icons/oxygen/64x64/actions/tools-report-bug.png b/icons/oxygen/64x64/actions/tools-report-bug.png
new file mode 100644 (file)
index 0000000..b313d4d
Binary files /dev/null and b/icons/oxygen/64x64/actions/tools-report-bug.png differ
diff --git a/icons/oxygen/64x64/devices/network-wired.png b/icons/oxygen/64x64/devices/network-wired.png
new file mode 100644 (file)
index 0000000..2981c5b
Binary files /dev/null and b/icons/oxygen/64x64/devices/network-wired.png differ
diff --git a/icons/oxygen/64x64/status/dialog-information.png b/icons/oxygen/64x64/status/dialog-information.png
new file mode 100644 (file)
index 0000000..c65f616
Binary files /dev/null and b/icons/oxygen/64x64/status/dialog-information.png differ
diff --git a/icons/oxygen/64x64/status/security-high.png b/icons/oxygen/64x64/status/security-high.png
new file mode 100644 (file)
index 0000000..44da6b9
Binary files /dev/null and b/icons/oxygen/64x64/status/security-high.png differ
diff --git a/icons/oxygen/64x64/status/security-low.png b/icons/oxygen/64x64/status/security-low.png
new file mode 100644 (file)
index 0000000..d8ceb4b
Binary files /dev/null and b/icons/oxygen/64x64/status/security-low.png differ
diff --git a/icons/oxygen/64x64/status/user-away.png b/icons/oxygen/64x64/status/user-away.png
new file mode 100644 (file)
index 0000000..0f13341
Binary files /dev/null and b/icons/oxygen/64x64/status/user-away.png differ
index e35a25e..415ac58 100644 (file)
@@ -1,9 +1,8 @@
 Oxygen Icon Theme has been developed by The Oxygen Team.
 
 Art Directors:
-David Vignoni <david@oxygen-icons.org>
 Nuno F. Pinheiro <nuno@oxygen-icons.org>
-David J. Miller <miller@oxygen-icons.org>
+David Vignoni <david@oxygen-icons.org>
 
 Naming Coordinator
 Jakob Petsovits <jpetso@gmx.at>
@@ -15,9 +14,11 @@ Johann Ollivier Lapeyre <johann@oxygen-icons.org>
 Kenneth Wimer <ken@oxygen-icons.org> 
 Nuno F. Pinheiro <nuno@oxygen-icons.org>
 Riccardo Iaconelli <riccardo@oxygen-icons.org>
+David J. Miller <miller@oxygen-icons.org>
 
 Thanks to:
 Lee Olson: Contributed drawing used in application-x-bittorent icon.
 Marco Aurélio "Coré": Improved audio-input-microphone icon.
 Matthias Kretz: Contributed "audio-input-line" device icon.
 Mauricio Piacentini <piacentini@kde.org> : game icons mashup
+Erlend Hamberg: "text-x-haskell" mimetype icon.
index bbf2081..b68a7cc 100644 (file)
@@ -1,6 +1,6 @@
-If you'd like to help us make Oxygen or contribute in any way please join the irc channel #kde-artists on freenode.net or send a mail to the kde-artists mailing list (artists@kde.org). One of the teeam is almost always online. We'd love to to discuss the possiblity with you :-)
+If you'd like to help us make Oxygen or contribute in any way please join the irc channel #oxygen on freenode.net or send a mail to the kde-artists mailing list (all@oxygen -icons.org) or (nuno@oxygen-icons.org). One of the teeam is almost always online. We'd love to to discuss the possiblity with you :-)
 
-In order to coordinate the addition of icons to the theme itself, all artists should put their work in a dir labelled Oxygen/ARTIST_NAME (so, mine for instance is Oxygen/Ken/) this allows us to control not only the licensing of the theme but the compatability with the guidelines for creating Oxygen icons.
+In order to coordinate the addition of icons to the theme itself, all external artists should send their work for review to one of the refered emails, they will be reviewd for  licensing of the theme and the compatability with the guidelines for creating Oxygen icons.
 
 NOTE:
 Contributors should realize that the Oxygen icon theme mantainers can (and probably will) modify, delete, reuse contributed artwork.
index c87ac56..045b62e 100644 (file)
@@ -1,24 +1,25 @@
 The Oxygen Icon Theme
+    Copyright (C) 2007 Nuno Pinheiro <nuno@oxygen-icons.org>
     Copyright (C) 2007 David Vignoni <david@icon-king.com>
+    Copyright (C) 2007 David Miller <miller@oxygen-icons.org>
     Copyright (C) 2007 Johann Ollivier Lapeyre <johann@oxygen-icons.org>
     Copyright (C) 2007 Kenneth Wimer <kwwii@bootsplash.org>
-    Copyright (C) 2007 Nuno Fernades Pinheiro <nf.pinheiro@gmail.com>
     Copyright (C) 2007 Riccardo Iaconelli <riccardo@oxygen-icons.org>
-    Copyright (C) 2007 David Miller <miller@oxygen-icons.org>
+    
 
 and others
 
     This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Library General Public
+    modify it under the terms of the GNU Lesser General Public
     License as published by the Free Software Foundation; either
     version 3 of the License, or (at your option) any later version.
 
     This library 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
-    Library General Public License for more details.
+    Lesser General Public License for more details.
 
-    You should have received a copy of the GNU Library General Public
+    You should have received a copy of the GNU Lesser General Public
     License along with this library. If not, see <http://www.gnu.org/licenses/>.
 
 Clarification:
@@ -46,3 +47,170 @@ Clarification:
   the use of elements of this art library in a GUI.
 
   kde-artists [at] kde.org
+
+-----
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions. 
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version. 
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/icons/oxygen/index.theme b/icons/oxygen/index.theme
new file mode 100644 (file)
index 0000000..f9c09f6
--- /dev/null
@@ -0,0 +1,497 @@
+[Icon Theme]
+Name=Oxygen
+Name[bs]=Oxygen
+Name[ca]=Oxygen
+Name[ca@valencia]=Oxygen
+Name[cs]=Oxygen
+Name[da]=Oxygen
+Name[de]=Oxygen
+Name[el]=Oxygen
+Name[en_GB]=Oxygen
+Name[es]=Oxígeno
+Name[et]=Oxygen
+Name[eu]=Oxygen
+Name[fa]=اکسیژن
+Name[fi]=Oxygen
+Name[fr]=Oxygen
+Name[gl]=Oxygen
+Name[hu]=Oxygen
+Name[it]=Oxygen
+Name[kk]=Oxygen
+Name[ko]=Oxygen
+Name[mr]=ऑक्सीजन
+Name[nb]=Oxygen
+Name[nds]=Oxygen
+Name[nl]=Oxygen
+Name[pl]=Tlen
+Name[pt]=Oxygen
+Name[pt_BR]=Oxygen
+Name[ro]=Oxygen
+Name[ru]=Oxygen
+Name[sk]=Oxygen
+Name[sl]=Kisik
+Name[sr]=Кисеоник
+Name[sr@ijekavian]=Кисеоник
+Name[sr@ijekavianlatin]=Kiseonik
+Name[sr@latin]=Kiseonik
+Name[sv]=Oxygen
+Name[tr]=Oxygen
+Name[ug]=ئوكسېگىن
+Name[uk]=Oxygen
+Name[x-test]=xxOxygenxx
+Name[zh_CN]=Oxygen(氧气)
+Name[zh_TW]=Oxygen
+
+Comment=Oxygen Team
+Comment[bs]=Oxygen tim
+Comment[ca]=Equip de l'Oxygen
+Comment[ca@valencia]=Equip de l'Oxygen
+Comment[cs]=Tým Oxygen
+Comment[da]=Oxygen-holdet
+Comment[de]=Oxygen-Team
+Comment[el]=Ομάδα Oxygen
+Comment[en_GB]=Oxygen Team
+Comment[es]=Equipo Oxígeno
+Comment[et]=Oxygeni meeskond
+Comment[eu]=Oxygen taldea
+Comment[fa]=تیم اکسیژن
+Comment[fi]=Oxygenin kehitysryhmä
+Comment[fr]=Équipe Oxygen
+Comment[gl]=Equipo de Oxygen
+Comment[hu]=Oxygen csapat
+Comment[it]=La squadra di Oxygen
+Comment[kk]=Oxygen тобы
+Comment[ko]=Oxygen 팀
+Comment[mr]=ऑक्सीजन टीम
+Comment[nb]=Oxygen-laget
+Comment[nds]=Oxygen-Koppel
+Comment[nl]=Oxygen-team
+Comment[pl]=Zespół Oxygen
+Comment[pt]=Equipa do Oxygen
+Comment[pt_BR]=Equipe do Oxygen
+Comment[ro]=Echipa Oxygen
+Comment[ru]=Команда Oxygen
+Comment[sk]=Tím Oxygen
+Comment[sl]=Ekipa Kisika
+Comment[sr]=Тим Кисеоника
+Comment[sr@ijekavian]=Тим Кисеоника
+Comment[sr@ijekavianlatin]=Tim Kiseonika
+Comment[sr@latin]=Tim Kiseonika
+Comment[sv]=Oxygen-gruppen
+Comment[tr]=Oxygen Takımı
+Comment[ug]=ئوكسېگىن ئەترىتى
+Comment[uk]=Команда Oxygen
+Comment[x-test]=xxOxygen Teamxx
+Comment[zh_CN]=Oxygen 团队
+Comment[zh_TW]=Oxygen 開發團隊
+
+DisplayDepth=32
+
+Inherits=hicolor
+
+Example=folder
+
+LinkOverlay=link
+LockOverlay=lockoverlay
+ShareOverlay=share
+ZipOverlay=zip
+
+DesktopDefault=48
+DesktopSizes=16,22,32,48,64,128,256
+ToolbarDefault=22
+ToolbarSizes=16,22,32,48
+MainToolbarDefault=22
+MainToolbarSizes=16,22,32,48
+SmallDefault=16
+SmallSizes=16,22,32,48
+PanelDefault=32
+PanelSizes=16,22,32,48,64,128,256
+DialogDefault=32
+DialogSizes=16,22,32,48,64,128,256
+
+Directories=8x8/emblems,16x16/actions,16x16/animations,16x16/apps,16x16/categories,16x16/devices,16x16/emblems,16x16/emotes,16x16/intl,16x16/mimetypes,16x16/places,16x16/status,16x16/special,22x22/actions,22x22/animations,22x22/apps,22x22/categories,22x22/devices,22x22/emblems,22x22/emotes,22x22/intl,22x22/mimetypes,22x22/places,22x22/status,22x22/special,32x32/actions,32x32/animations,32x32/apps,32x32/categories,32x32/devices,32x32/emblems,32x32/emotes,32x32/intl,32x32/mimetypes,32x32/places,32x32/status,48x48/actions,48x48/animations,48x48/apps,48x48/categories,48x48/devices,48x48/emblems,48x48/emotes,48x48/intl,48x48/mimetypes,48x48/places,48x48/status,64x64/actions,64x64/animations,64x64/apps,64x64/categories,64x64/devices,64x64/emblems,64x64/emotes,64x64/intl,64x64/mimetypes,64x64/places,64x64/status,128x128/actions,128x128/animations,128x128/apps,128x128/categories,128x128/devices,128x128/emblems,128x128/emotes,128x128/intl,128x128/mimetypes,128x128/places,128x128/status,256x256/actions,256x256/apps,256x256/categories,256x256/devices,256x256/mimetypes,256x256/places,256x256/status
+
+[8x8/emblems]
+Size=8
+Context=Emblems
+Type=Threshold
+
+[16x16/actions]
+Size=16
+Context=Actions
+Type=Threshold
+
+[16x16/animations]
+Size=16
+Context=Animations
+Type=Threshold
+
+[16x16/apps]
+Size=16
+Context=Applications
+Type=Threshold
+
+[16x16/categories]
+Size=16
+Context=Categories
+Type=Threshold
+
+[16x16/devices]
+Size=16
+Context=Devices
+Type=Threshold
+
+[16x16/emblems]
+Size=16
+Context=Emblems
+Type=Threshold
+
+[16x16/emotes]
+Size=16
+Context=Emotes
+Type=Threshold
+
+[16x16/intl]
+Size=16
+Context=International
+Type=Threshold
+
+[16x16/mimetypes]
+Size=16
+Context=MimeTypes
+Type=Threshold
+
+[16x16/places]
+Size=16
+Context=Places
+Type=Threshold
+
+[16x16/status]
+Size=16
+Context=Status
+Type=Threshold
+
+[16x16/special]
+Size=16
+Context=Actions
+Type=Threshold
+
+[22x22/actions]
+Size=22
+Context=Actions
+Type=Threshold
+
+[22x22/animations]
+Size=22
+Context=Animations
+Type=Threshold
+
+[22x22/apps]
+Size=22
+Context=Applications
+Type=Threshold
+
+[22x22/categories]
+Size=22
+Context=Categories
+Type=Threshold
+
+[22x22/devices]
+Size=22
+Context=Devices
+Type=Threshold
+
+[22x22/emblems]
+Size=22
+Context=Emblems
+Type=Threshold
+
+[22x22/emotes]
+Size=22
+Context=Emotes
+Type=Threshold
+
+[22x22/intl]
+Size=22
+Context=International
+Type=Threshold
+
+[22x22/mimetypes]
+Size=22
+Context=MimeTypes
+Type=Threshold
+
+[22x22/places]
+Size=22
+Context=Places
+Type=Threshold
+
+[22x22/status]
+Size=22
+Context=Status
+Type=Threshold
+
+[22x22/special]
+Size=22
+Context=Actions
+Type=Threshold
+
+[32x32/actions]
+Size=32
+Context=Actions
+Type=Threshold
+
+[32x32/animations]
+Size=32
+Context=Animations
+Type=Threshold
+
+[32x32/apps]
+Size=32
+Context=Applications
+Type=Threshold
+
+[32x32/categories]
+Size=32
+Context=Categories
+Type=Threshold
+
+[32x32/devices]
+Size=32
+Context=Devices
+Type=Threshold
+
+[32x32/emblems]
+Size=32
+Context=Emblems
+Type=Threshold
+
+[32x32/emotes]
+Size=32
+Context=Emotes
+Type=Threshold
+
+[32x32/intl]
+Size=32
+Context=International
+Type=Threshold
+
+[32x32/mimetypes]
+Size=32
+Context=MimeTypes
+Type=Threshold
+
+[32x32/places]
+Size=32
+Context=Places
+Type=Threshold
+
+[32x32/status]
+Size=32
+Context=Status
+Type=Threshold
+
+[48x48/actions]
+Size=48
+Context=Actions
+Type=Threshold
+
+[48x48/animations]
+Size=48
+Context=Animations
+Type=Threshold
+
+[48x48/apps]
+Size=48
+Context=Applications
+Type=Threshold
+
+[48x48/categories]
+Size=48
+Context=Categories
+Type=Threshold
+
+[48x48/devices]
+Size=48
+Context=Devices
+Type=Threshold
+
+[48x48/emblems]
+Size=48
+Context=Emblems
+Type=Threshold
+
+[48x48/emotes]
+Size=48
+Context=Emotes
+Type=Threshold
+
+[48x48/intl]
+Size=48
+Context=International
+Type=Threshold
+
+[48x48/mimetypes]
+Size=48
+Context=MimeTypes
+Type=Threshold
+
+[48x48/places]
+Size=48
+Context=Places
+Type=Threshold
+
+[48x48/status]
+Size=48
+Context=Status
+Type=Threshold
+
+[64x64/actions]
+Size=64
+Context=Actions
+Type=Threshold
+
+[64x64/animations]
+Size=64
+Context=Animations
+Type=Threshold
+
+[64x64/apps]
+Size=64
+Context=Applications
+Type=Threshold
+
+[64x64/categories]
+Size=64
+Context=Categories
+Type=Threshold
+
+[64x64/devices]
+Size=64
+Context=Devices
+Type=Threshold
+
+[64x64/emblems]
+Size=64
+Context=Emblems
+Type=Threshold
+
+[64x64/emotes]
+Size=64
+Context=Emotes
+Type=Threshold
+
+[64x64/intl]
+Size=64
+Context=International
+Type=Threshold
+
+[64x64/mimetypes]
+Size=64
+Context=MimeTypes
+Type=Threshold
+
+[64x64/places]
+Size=64
+Context=Places
+Type=Threshold
+
+[64x64/status]
+Size=64
+Context=Status
+Type=Threshold
+
+[128x128/actions]
+Size=128
+Context=Actions
+Type=Threshold
+
+[128x128/animations]
+Size=128
+Context=Animations
+Type=Threshold
+
+[128x128/apps]
+Size=128
+Context=Applications
+Type=Threshold
+
+[128x128/categories]
+Size=128
+Context=Categories
+Type=Threshold
+
+[128x128/devices]
+Size=128
+Context=Devices
+Type=Threshold
+
+[128x128/emblems]
+Size=128
+Context=Emblems
+Type=Threshold
+
+[128x128/emotes]
+Size=128
+Context=Emotes
+Type=Threshold
+
+[128x128/categories]
+Size=128
+Context=Categories
+Type=Threshold
+
+[128x128/intl]
+Size=128
+Context=International
+Type=Threshold
+
+[128x128/mimetypes]
+Size=128
+Context=MimeTypes
+Type=Threshold
+
+[128x128/places]
+Size=128
+Context=Places
+Type=Threshold
+
+[128x128/status]
+Size=128
+Context=Status
+Type=Threshold
+
+[256x256/actions]
+Size=256
+Context=Actions
+Type=Threshold
+
+[256x256/apps]
+Size=256
+Context=Applications
+Type=Threshold
+
+[256x256/categories]
+Size=256
+Context=Categories
+Type=Threshold
+
+[256x256/devices]
+Size=256
+Context=Devices
+Type=Threshold
+
+[256x256/mimetypes]
+Size=256
+Context=MimeTypes
+Type=Threshold
+
+[256x256/places]
+Size=256
+Context=Places
+Type=Threshold
+
+[256x256/status]
+Size=256
+Context=Status
+Type=Threshold
diff --git a/icons/oxygen_kde.qrc b/icons/oxygen_kde.qrc
deleted file mode 100644 (file)
index 6ad3844..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<RCC>
-  <qresource prefix="/icons">
-    <file alias="oxygen/16x16/actions/im-kick-user.png">oxygen_kde/16x16/actions/im-kick-user.png</file>
-    <file alias="oxygen/16x16/actions/im-ban-kick-user.png">oxygen_kde/16x16/actions/im-ban-kick-user.png</file>
-    <file alias="oxygen/16x16/actions/irc-operator.png">oxygen_kde/16x16/actions/irc-operator.png</file>
-    <file alias="oxygen/16x16/actions/edit-copy.png">oxygen_kde/16x16/actions/edit-copy.png</file>
-    <file alias="oxygen/16x16/actions/irc-voice.png">oxygen_kde/16x16/actions/irc-voice.png</file>
-    <file alias="oxygen/16x16/actions/im-ban-user.png">oxygen_kde/16x16/actions/im-ban-user.png</file>
-    <file alias="oxygen/16x16/actions/edit-clear-locationbar-rtl.png">oxygen_kde/16x16/actions/edit-clear-locationbar-rtl.png</file>
-    <file alias="oxygen/16x16/actions/format-fill-color.png">oxygen_kde/16x16/actions/format-fill-color.png</file>
-    <file alias="oxygen/16x16/actions/dialog-cancel.png">oxygen_kde/16x16/actions/dialog-cancel.png</file>
-    <file alias="oxygen/16x16/actions/format-text-bold.png">oxygen_kde/16x16/actions/format-text-bold.png</file>
-    <file alias="oxygen/16x16/actions/flag-blue.png">oxygen_kde/16x16/actions/flag-blue.png</file>
-    <file alias="oxygen/16x16/actions/im-user.png">oxygen_kde/16x16/actions/im-user.png</file>
-    <file alias="oxygen/16x16/actions/go-next-view.png">oxygen_kde/16x16/actions/go-next-view.png</file>
-    <file alias="oxygen/16x16/actions/edit-find.png">oxygen_kde/16x16/actions/edit-find.png</file>
-    <file alias="oxygen/16x16/actions/media-playback-start.png">oxygen_kde/16x16/actions/media-playback-start.png</file>
-    <file alias="oxygen/16x16/actions/configure-shortcuts.png">oxygen_kde/16x16/actions/configure-shortcuts.png</file>
-    <file alias="oxygen/16x16/actions/tools-report-bug.png">oxygen_kde/16x16/actions/tools-report-bug.png</file>
-    <file alias="oxygen/16x16/actions/network-disconnect.png">oxygen_kde/16x16/actions/network-disconnect.png</file>
-    <file alias="oxygen/16x16/actions/format-text-italic.png">oxygen_kde/16x16/actions/format-text-italic.png</file>
-    <file alias="oxygen/16x16/actions/irc-remove-operator.png">oxygen_kde/16x16/actions/irc-remove-operator.png</file>
-    <file alias="oxygen/16x16/actions/irc-close-channel.png">oxygen_kde/16x16/actions/irc-close-channel.png</file>
-    <file alias="oxygen/16x16/actions/irc-join-channel.png">oxygen_kde/16x16/actions/irc-join-channel.png</file>
-    <file alias="oxygen/16x16/actions/go-up.png">oxygen_kde/16x16/actions/go-up.png</file>
-    <file alias="oxygen/16x16/actions/help-about.png">oxygen_kde/16x16/actions/help-about.png</file>
-    <file alias="oxygen/16x16/actions/view-fullscreen.png">oxygen_kde/16x16/actions/view-fullscreen.png</file>
-    <file alias="oxygen/16x16/actions/format-text-color.png">oxygen_kde/16x16/actions/format-text-color.png</file>
-    <file alias="oxygen/16x16/actions/mail-message-new.png">oxygen_kde/16x16/actions/mail-message-new.png</file>
-    <file alias="oxygen/16x16/actions/zoom-in.png">oxygen_kde/16x16/actions/zoom-in.png</file>
-    <file alias="oxygen/16x16/actions/im-user-offline.png">oxygen_kde/16x16/actions/im-user-offline.png</file>
-    <file alias="oxygen/16x16/actions/edit-clear-locationbar-ltr.png">oxygen_kde/16x16/actions/edit-clear-locationbar-ltr.png</file>
-    <file alias="oxygen/16x16/actions/edit-rename.png">oxygen_kde/16x16/actions/edit-rename.png</file>
-    <file alias="oxygen/16x16/actions/view-refresh.png">oxygen_kde/16x16/actions/view-refresh.png</file>
-    <file alias="oxygen/16x16/actions/configure.png">oxygen_kde/16x16/actions/configure.png</file>
-    <file alias="oxygen/16x16/actions/zoom-out.png">oxygen_kde/16x16/actions/zoom-out.png</file>
-    <file alias="oxygen/16x16/actions/go-previous.png">oxygen_kde/16x16/actions/go-previous.png</file>
-    <file alias="oxygen/16x16/actions/im-user-away.png">oxygen_kde/16x16/actions/im-user-away.png</file>
-    <file alias="oxygen/16x16/actions/document-edit.png">oxygen_kde/16x16/actions/document-edit.png</file>
-    <file alias="oxygen/16x16/actions/format-text-underline.png">oxygen_kde/16x16/actions/format-text-underline.png</file>
-    <file alias="oxygen/16x16/actions/zoom-original.png">oxygen_kde/16x16/actions/zoom-original.png</file>
-    <file alias="oxygen/16x16/actions/show-menu.png">oxygen_kde/16x16/actions/show-menu.png</file>
-    <file alias="oxygen/16x16/actions/go-previous-view.png">oxygen_kde/16x16/actions/go-previous-view.png</file>
-    <file alias="oxygen/16x16/actions/document-open.png">oxygen_kde/16x16/actions/document-open.png</file>
-    <file alias="oxygen/16x16/actions/network-connect.png">oxygen_kde/16x16/actions/network-connect.png</file>
-    <file alias="oxygen/16x16/actions/document-encrypt.png">oxygen_kde/16x16/actions/document-encrypt.png</file>
-    <file alias="oxygen/16x16/actions/go-down.png">oxygen_kde/16x16/actions/go-down.png</file>
-    <file alias="oxygen/16x16/actions/list-add.png">oxygen_kde/16x16/actions/list-add.png</file>
-    <file alias="oxygen/16x16/actions/go-next.png">oxygen_kde/16x16/actions/go-next.png</file>
-    <file alias="oxygen/16x16/actions/edit-delete.png">oxygen_kde/16x16/actions/edit-delete.png</file>
-    <file alias="oxygen/16x16/actions/irc-unvoice.png">oxygen_kde/16x16/actions/irc-unvoice.png</file>
-    <file alias="oxygen/16x16/actions/application-exit.png">oxygen_kde/16x16/actions/application-exit.png</file>
-    <file alias="oxygen/16x16/status/user-away.png">oxygen_kde/16x16/status/user-away.png</file>
-    <file alias="oxygen/16x16/status/security-high.png">oxygen_kde/16x16/status/security-high.png</file>
-    <file alias="oxygen/16x16/status/dialog-information.png">oxygen_kde/16x16/status/dialog-information.png</file>
-    <file alias="oxygen/16x16/status/security-low.png">oxygen_kde/16x16/status/security-low.png</file>
-    <file alias="oxygen/16x16/apps/quassel.png">oxygen_kde/16x16/apps/quassel.png</file>
-    <file alias="oxygen/16x16/devices/network-wired.png">oxygen_kde/16x16/devices/network-wired.png</file>
-    <file alias="oxygen/48x48/actions/im-kick-user.png">oxygen_kde/48x48/actions/im-kick-user.png</file>
-    <file alias="oxygen/48x48/actions/im-ban-kick-user.png">oxygen_kde/48x48/actions/im-ban-kick-user.png</file>
-    <file alias="oxygen/48x48/actions/irc-operator.png">oxygen_kde/48x48/actions/irc-operator.png</file>
-    <file alias="oxygen/48x48/actions/irc-voice.png">oxygen_kde/48x48/actions/irc-voice.png</file>
-    <file alias="oxygen/48x48/actions/im-ban-user.png">oxygen_kde/48x48/actions/im-ban-user.png</file>
-    <file alias="oxygen/48x48/actions/im-user.png">oxygen_kde/48x48/actions/im-user.png</file>
-    <file alias="oxygen/48x48/actions/network-disconnect.png">oxygen_kde/48x48/actions/network-disconnect.png</file>
-    <file alias="oxygen/48x48/actions/irc-remove-operator.png">oxygen_kde/48x48/actions/irc-remove-operator.png</file>
-    <file alias="oxygen/48x48/actions/irc-close-channel.png">oxygen_kde/48x48/actions/irc-close-channel.png</file>
-    <file alias="oxygen/48x48/actions/irc-join-channel.png">oxygen_kde/48x48/actions/irc-join-channel.png</file>
-    <file alias="oxygen/48x48/actions/mail-message-new.png">oxygen_kde/48x48/actions/mail-message-new.png</file>
-    <file alias="oxygen/48x48/actions/network-connect.png">oxygen_kde/48x48/actions/network-connect.png</file>
-    <file alias="oxygen/48x48/actions/irc-unvoice.png">oxygen_kde/48x48/actions/irc-unvoice.png</file>
-    <file alias="oxygen/48x48/status/dialog-information.png">oxygen_kde/48x48/status/dialog-information.png</file>
-    <file alias="oxygen/48x48/apps/quassel.png">oxygen_kde/48x48/apps/quassel.png</file>
-    <file alias="oxygen/128x128/apps/quassel.png">oxygen_kde/128x128/apps/quassel.png</file>
-    <file alias="oxygen/22x22/actions/edit-clear-locationbar-rtl.png">oxygen_kde/22x22/actions/edit-clear-locationbar-rtl.png</file>
-    <file alias="oxygen/22x22/actions/dialog-close.png">oxygen_kde/22x22/actions/dialog-close.png</file>
-    <file alias="oxygen/22x22/actions/edit-rename.png">oxygen_kde/22x22/actions/edit-rename.png</file>
-    <file alias="oxygen/22x22/actions/list-add-user.png">oxygen_kde/22x22/actions/list-add-user.png</file>
-    <file alias="oxygen/22x22/actions/list-remove-user.png">oxygen_kde/22x22/actions/list-remove-user.png</file>
-    <file alias="oxygen/22x22/apps/quassel.png">oxygen_kde/22x22/apps/quassel.png</file>
-    <file alias="oxygen/32x32/apps/quassel.png">oxygen_kde/32x32/apps/quassel.png</file>
-    <file alias="oxygen/64x64/apps/quassel.png">oxygen_kde/64x64/apps/quassel.png</file>
-  </qresource>
-</RCC>
index d1df92c..0616948 100644 (file)
@@ -64,7 +64,7 @@ set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${qm_files};i18
 if(EMBED_DATA)
   set(COMMON_RCS ${COMMON_RCS} ${resfile} PARENT_SCOPE)
 else(EMBED_DATA)
-  install(FILES ${qm_files} DESTINATION ${DATA_INSTALL_DIR}/quassel/translations)
+  install(FILES ${qm_files} DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/translations)
 endif(EMBED_DATA)
 
 add_custom_target(po DEPENDS ${qm_files})
index 59facd8..6221930 100644 (file)
@@ -30,6 +30,11 @@ if (WITH_OXYGEN)
     add_definitions(-DWITH_OXYGEN)
 endif()
 
+# For KAboutData
+if (WITH_KF5)
+    set(CLIENT_LIBRARIES ${CLIENT_LIBRARIES} KF5::CoreAddons)
+endif()
+
 # Needed for showing the cli option if appropriate
 if (HAVE_SYSLOG)
     add_definitions(-DHAVE_SYSLOG)
@@ -43,7 +48,7 @@ if(WANT_CORE)
                                     COMPILE_FLAGS "-DBUILD_CORE"
                                     OUTPUT_NAME ../quasselcore)
   target_link_libraries(quasselcore mod_core mod_common ${COMMON_LIBRARIES} ${QUASSEL_SSL_LIBRARIES} ${QT_QTMAIN_LIBRARY})
-  install(TARGETS quasselcore RUNTIME DESTINATION ${BIN_INSTALL_DIR})
+  install(TARGETS quasselcore RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 endif(WANT_CORE)
 
 if (KDE4_FOUND)
@@ -58,7 +63,7 @@ if(WANT_QTCLIENT)
                                       COMPILE_FLAGS "-DBUILD_QTUI"
                                       OUTPUT_NAME ../quasselclient)
   target_link_libraries(quasselclient mod_qtui mod_uisupport mod_client mod_common ${COMMON_LIBRARIES} ${CLIENT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES} ${QT_QTMAIN_LIBRARY})
-  install(TARGETS quasselclient RUNTIME DESTINATION ${BIN_INSTALL_DIR})
+  install(TARGETS quasselclient RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 endif(WANT_QTCLIENT)
 
 if(WANT_MONO)
@@ -69,7 +74,7 @@ if(WANT_MONO)
                                 COMPILE_FLAGS "-DBUILD_MONO"
                                 OUTPUT_NAME ../quassel)
   target_link_libraries(quassel mod_qtui mod_uisupport mod_client mod_core mod_common ${COMMON_LIBRARIES} ${CLIENT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES} ${QT_QTMAIN_LIBRARY})
-  install(TARGETS quassel RUNTIME DESTINATION ${BIN_INSTALL_DIR})
+  install(TARGETS quassel RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 endif(WANT_MONO)
 
 # Build bundles for MacOSX
index 3dd1504..4eef7d5 100644 (file)
@@ -38,11 +38,6 @@ set(SOURCES
     clientcoreinfo.h
 )
 
-if (KDE4_FOUND)
-    include_directories(${KDE4_INCLUDES})
-    add_definitions(-DHAVE_KDE ${KDE4_DEFINITIONS})
-endif()
-
 if (USE_QT5)
     list(APPEND qt_modules Widgets)
 endif()
@@ -52,8 +47,4 @@ qt_add_resources(SOURCES ${CLIENT_RCS})
 add_library(mod_client STATIC ${SOURCES})
 qt_use_modules(mod_client Network Core Gui ${qt_modules})
 
-if (KDE4_FOUND)
-    target_link_libraries(mod_client ${KDE4_SOLID_LIBS})
-endif()
-
-add_dependencies(mod_client mod_common)
+target_link_libraries(mod_client mod_common)
index 490d968..e0e6cb7 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1b83061..4803141 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 9ae112f..8112577 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 510115a..4a1e286 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 08894c4..7192aba 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 071809d..e2692b0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 8432625..61d4e98 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 05ddbef..55febae 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 0a4e0cd..9313840 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1c92267..2e75364 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 106c7cc..f04b453 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index bb95991..09d0fba 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3305f5b..7bbbefe 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d93c62b..8c707f3 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1c516b6..37f908e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 7c4875e..61d2638 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d5112d1..7ed231c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -169,6 +169,7 @@ void ClientAuthHandler::onSocketConnected()
         _probing = true;
 
         QDataStream stream(socket()); // stream handles the endianness for us
+        stream.setVersion(QDataStream::Qt_4_2);
 
         quint32 magic = Protocol::magic;
 #ifdef HAVE_SSL
index f6f2fc9..7d6c935 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 0a584ae..266bc4e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 51df5e3..e406988 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 6840f1f..2150bbf 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 9981525..3a08aca 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3da5dbc..95c1491 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 01e41fd..742523e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1555095..fb24511 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 162fa4d..baf01b3 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 58a1457..28b68b7 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d13ce71..6e52d38 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 446e4c4..41400da 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d65ce67..229e157 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 8caf515..28ea10e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e186d54..dc8e5c1 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -249,12 +249,10 @@ void CoreConnectionSettings::setNetworkDetectionMode(NetworkDetectionMode mode)
 
 CoreConnectionSettings::NetworkDetectionMode CoreConnectionSettings::networkDetectionMode()
 {
-#ifdef HAVE_KDE
-    NetworkDetectionMode def = UseSolid;
-#else
-    NetworkDetectionMode def = UsePingTimeout;
-#endif
-    return (NetworkDetectionMode)localValue("NetworkDetectionMode", def).toInt();
+    auto mode = localValue("NetworkDetectionMode", UseQNetworkConfigurationManager).toInt();
+    if (mode == 0)
+        mode = UseQNetworkConfigurationManager; // UseSolid is gone, map that to the new default
+    return static_cast<NetworkDetectionMode>(mode);
 }
 
 
index 55f1814..dd413e0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -124,7 +124,7 @@ class CoreConnectionSettings : public ClientSettings
 {
 public:
     enum NetworkDetectionMode {
-        UseSolid,
+        UseQNetworkConfigurationManager = 1, // UseSolid is gone
         UsePingTimeout,
         NoActiveDetection
     };
index 9f70e63..8398097 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 9753f41..04637c7 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1860e48..ec5c49f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 9004d3b..3c50a86 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2f89081..793f756 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 9a4a6ef..ea601cb 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index dc4eac3..541cf34 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 23bba92..3af7fc5 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 5fab6d9..0d5f4d4 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2741f4f..f85fb93 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 4928a8b..0e4b4f9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -57,10 +57,8 @@ void CoreConnection::init()
     _reconnectTimer.setSingleShot(true);
     connect(&_reconnectTimer, SIGNAL(timeout()), SLOT(reconnectTimeout()));
 
-#ifdef HAVE_KDE
-    connect(Solid::Networking::notifier(), SIGNAL(statusChanged(Solid::Networking::Status)),
-        SLOT(solidNetworkStatusChanged(Solid::Networking::Status)));
-#endif
+    _qNetworkConfigurationManager = new QNetworkConfigurationManager(this);
+    connect(_qNetworkConfigurationManager, SIGNAL(onlineStateChanged(bool)), SLOT(onlineStateChanged(bool)));
 
     CoreConnectionSettings s;
     s.initAndNotify("PingTimeoutInterval", this, SLOT(pingTimeoutIntervalChanged(QVariant)), 60);
@@ -127,16 +125,12 @@ void CoreConnection::reconnectTimeout()
     if (!_peer) {
         CoreConnectionSettings s;
         if (_wantReconnect && s.autoReconnect()) {
-#ifdef HAVE_KDE
-            // If using Solid, we don't want to reconnect if we're offline
-            if (s.networkDetectionMode() == CoreConnectionSettings::UseSolid) {
-                if (Solid::Networking::status() != Solid::Networking::Connected
-                    && Solid::Networking::status() != Solid::Networking::Unknown) {
+            // If using QNetworkConfigurationManager, we don't want to reconnect if we're offline
+            if (s.networkDetectionMode() == CoreConnectionSettings::UseQNetworkConfigurationManager) {
+               if (!_qNetworkConfigurationManager->isOnline()) {
                     return;
-                }
+               }
             }
-#endif /* HAVE_KDE */
-
             reconnectToCore();
         }
     }
@@ -169,35 +163,26 @@ void CoreConnection::reconnectIntervalChanged(const QVariant &interval)
 }
 
 
-#ifdef HAVE_KDE
-
-void CoreConnection::solidNetworkStatusChanged(Solid::Networking::Status status)
+void CoreConnection::onlineStateChanged(bool isOnline)
 {
     CoreConnectionSettings s;
-    if (s.networkDetectionMode() != CoreConnectionSettings::UseSolid)
+    if (s.networkDetectionMode() != CoreConnectionSettings::UseQNetworkConfigurationManager)
         return;
 
-    switch (status) {
-    case Solid::Networking::Unknown:
-    case Solid::Networking::Connected:
-        //qDebug() << "Solid: Network status changed to connected or unknown";
+    if(isOnline) {
+        // qDebug() << "QNetworkConfigurationManager reports Online";
         if (state() == Disconnected) {
             if (_wantReconnect && s.autoReconnect()) {
                 reconnectToCore();
             }
         }
-        break;
-    case Solid::Networking::Disconnecting:
-    case Solid::Networking::Unconnected:
+    } else {
+        // qDebug() << "QNetworkConfigurationManager reports Offline";
         if (state() != Disconnected && !isLocalConnection())
             disconnectFromCore(tr("Network is down"), true);
-        break;
-    default:
-        break;
     }
 }
 
-#endif
 
 bool CoreConnection::isEncrypted() const
 {
index f1b4395..0019a53 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
-#ifndef CORECONNECTION_H_
-#define CORECONNECTION_H_
+#pragma once
 
-#include "QPointer"
-#include "QTimer"
+#include <QNetworkConfigurationManager>
+#include <QPointer>
+#include <QTimer>
 
 #ifdef HAVE_SSL
 #  include <QSslSocket>
 #  include <QTcpSocket>
 #endif
 
-#ifdef HAVE_KDE
-#  include <Solid/Networking>
-#endif
-
 #include "coreaccount.h"
 #include "remotepeer.h"
 #include "types.h"
@@ -148,9 +144,7 @@ private slots:
     void reconnectIntervalChanged(const QVariant &interval);
     void reconnectTimeout();
 
-#ifdef HAVE_KDE
-    void solidNetworkStatusChanged(Solid::Networking::Status status);
-#endif
+    void onlineStateChanged(bool isOnline);
 
 private:
     QPointer<ClientAuthHandler> _authHandler;
@@ -171,6 +165,8 @@ private:
     CoreAccount _account;
     CoreAccountModel *accountModel() const;
 
+    QPointer<QNetworkConfigurationManager> _qNetworkConfigurationManager;
+
     friend class CoreConfigWizard;
 };
 
@@ -186,5 +182,3 @@ inline QString CoreConnection::progressText() const { return _progressText; }
 inline CoreConnection::ConnectionState CoreConnection::state() const { return _state; }
 inline bool CoreConnection::isConnected() const { return state() >= Connected; }
 inline CoreAccount CoreConnection::currentAccount() const { return _account; }
-
-#endif
index a1d07ac..24bd22b 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 648a72c..f9564cd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 161d6e7..ef80444 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index bb39bbe..791b505 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 6b8c28b..5efed2c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 62c24c3..e98bd5d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 5fc1e11..cbcfceb 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 09ae7d1..1bafe22 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 6d7f3ec..6da5832 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 8c4597d..20f3701 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index b3d9480..4d2ed23 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index f6b2e05..f4baffd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3360199..f599803 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d645e76..df34fb0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 23e5601..90ccb5f 100644 (file)
@@ -9,7 +9,6 @@ set(SOURCES
     buffersyncer.cpp
     bufferviewconfig.cpp
     bufferviewmanager.cpp
-    cliparser.cpp
     compressor.cpp
     ctcpevent.cpp
     event.cpp
@@ -46,8 +45,13 @@ set(SOURCES
     coreinfo.h
 )
 
+if (USE_QT5)
+    list(APPEND SOURCES qt5cliparser.cpp)
+else()
+    list(APPEND SOURCES cliparser.cpp)
+endif()
 
-if (QCA2_FOUND)
+if (QCA2_FOUND OR QCA2-QT5_FOUND)
     set(SOURCES ${SOURCES} keyevent.cpp)
 endif()
 
@@ -62,8 +66,8 @@ if (HAVE_SYSLOG)
     add_definitions(-DHAVE_SYSLOG)
 endif()
 
-if(APPLE)
-  set(SOURCES ${SOURCES} mac_utils.cpp)
+if (APPLE)
+    set(SOURCES ${SOURCES} mac_utils.cpp)
 endif(APPLE)
 
 if (WIN32)
@@ -81,8 +85,8 @@ qt_add_resources(SOURCES ${COMMON_RCS})
 add_library(mod_common STATIC ${SOURCES})
 qt_use_modules(mod_common Core Network)
 
-if(APPLE)
-  target_link_libraries(mod_common "-framework CoreServices" "-framework CoreFoundation")
+if (APPLE)
+    target_link_libraries(mod_common "-framework CoreServices" "-framework CoreFoundation")
 endif(APPLE)
 
 target_link_libraries(mod_common ${CMAKE_DL_LIBS} ${EXECINFO_LIBRARIES} ${ZLIB_LIBRARIES})
index d6403e4..293ccd9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -36,9 +36,9 @@ public:
     }
 
 
-    inline void addOption(const QString &longName, const char shortName = 0, const QString &help = QString(), const QString &def = QString())
+    inline void addOption(const QString &longName, const char shortName = 0, const QString &help = QString(), const QString &valueName = QString(), const QString &def = QString())
     {
-        addArgument(longName, CliParserArg(CliParserArg::CliArgOption, shortName, help, def));
+        addArgument(longName, CliParserArg(CliParserArg::CliArgOption, shortName, help, valueName, def));
     }
 
 
@@ -54,20 +54,21 @@ protected:
             CliArgOption
         };
 
-        CliParserArg(const CliArgType _type = CliArgInvalid, const char _shortName = 0, const QString _help = QString(), const QString _def = QString())
-            : type(_type),
-            shortName(_shortName),
-            help(_help),
-            def(_def),
-            value(QString()),
-            boolValue(false) {};
+        CliParserArg(const CliArgType type = CliArgInvalid, const char shortName = 0, const QString &help = QString(), const QString &valueName = QString(), const QString def = QString())
+            : type(type)
+            , shortName(shortName)
+            , help(help)
+            , valueName(valueName)
+            , def(def)
+            {};
 
         CliArgType type;
         char shortName;
         QString help;
+        QString valueName;
         QString def;
         QString value;
-        bool boolValue;
+        bool boolValue = false;
     };
 
     virtual void addArgument(const QString &longName, const CliParserArg &arg) = 0;
index 94985bb..05ef3c9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a536fe1..9257c0f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 7c2905d..47b70df 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index cc03588..ce2ac67 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1cfad9e..d9b23a7 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 9bafe47..b0f8401 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 42841c4..e6ff779 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index bf57790..1bd92b0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 5ff7f1f..bea0f78 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index bcd0d1a..d429cae 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index f7b42c7..05f337d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 66e9976..c225a65 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2b6f340..b740fc8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index ecf92eb..cbbac8d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index ed0418b..33ba528 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 19ebf8c..a18cb35 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 5168ea2..2e94e55 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -32,10 +32,8 @@ CliParser::CliParser() : AbstractCliParser()
 }
 
 
-void CliParser::addArgument(const QString &longName_, const CliParserArg &arg)
+void CliParser::addArgument(const QString &longName, const CliParserArg &arg)
 {
-    QString longName = longName_;
-    longName.remove(QRegExp("\\s*<.*>\\s*")); // KCmdLineArgs takes args of the form "arg <defval>"
     if (argsMap.contains(longName)) qWarning() << "Warning: Multiple definition of argument" << longName;
     if (arg.shortName != 0 && !lnameOfShortArg(arg.shortName).isNull())
         qWarning().nospace() << "Warning: Redefining shortName '" << arg.shortName << "' for " << longName << " previously defined for " << lnameOfShortArg(arg.shortName);
@@ -189,8 +187,8 @@ void CliParser::usage()
         }
         else output.append("    ");
         lnameField.append(" --").append(arg.key());
-        if (arg.value().type == CliParserArg::CliArgOption) {
-            lnameField.append("=[").append(arg.key().toUpper()).append("]");
+        if (arg.value().type == CliParserArg::CliArgOption && !arg.value().valueName.isEmpty()) {
+            lnameField.append("=<").append(arg.value().valueName).append(">");
         }
         output.append(lnameField.leftJustified(lnameFieldSize));
         if (!arg.value().help.isEmpty()) {
index 2403926..d659cec 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index f391a43..fd4fb3c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d910322..eedc545 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index f96a0e8..c34620f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 5fbfdb2..19455b2 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1a59c61..e143e2f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1abea9f..2306adc 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index fbca50e..be17243 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 203ad8a..de3d0d2 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e3b2980..ec14064 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 5fe2d07..b370c58 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e0757b1..dc34fe8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 845af07..cdd15eb 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 72ca0af..a2d3368 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a5e5005..1400839 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1a52fda..97499bd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 145a198..89b3b33 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 693ed9c..713bd3f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3b0ddd1..d5fe3c0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 34fe0c0..1869328 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a09975e..68f4a99 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 08fc629..ac8a7e0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d7276fd..543f2b7 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3424a63..c8840ed 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index cc9cbf6..72941e1 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 26951cd..8ac2cb1 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 27a3f6d..73f6b50 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2caa5d3..910c555 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a562b4d..a9b25d2 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 7b3ba88..2acf503 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 7884dfa..9d75da4 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include <cstdlib>
 
+#include <QTextCodec>
+
 #ifdef BUILD_CORE
 #  include "coreapplication.h"
 #elif defined BUILD_QTUI
+#  include "aboutdata.h"
 #  include "qtuiapplication.h"
 #elif defined BUILD_MONO
+#  include "aboutdata.h"
 #  include "monoapplication.h"
 
 #else
 #endif
 
 // We don't want quasselcore to depend on KDE
-#if defined HAVE_KDE && defined BUILD_CORE
-#  undef HAVE_KDE
+#if defined HAVE_KDE4 && defined BUILD_CORE
+#  undef HAVE_KDE4
+#endif
+// We don't want quasselcore to depend on KDE
+#if defined HAVE_KF5 && defined BUILD_CORE
+#  undef HAVE_KF5
 #endif
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  include <KAboutData>
 #  include "kcmdlinewrapper.h"
+#elif defined HAVE_KF5
+#  include <KCoreAddons/KAboutData>
+#  include "qt5cliparser.h"
+#elif defined HAVE_QT5
+#  include "qt5cliparser.h"
+#else
+#  include "cliparser.h"
 #endif
 
 #if !defined(BUILD_CORE) && defined(STATIC)
@@ -47,13 +62,19 @@ Q_IMPORT_PLUGIN(qjpeg)
 Q_IMPORT_PLUGIN(qgif)
 #endif
 
-#include "cliparser.h"
 #include "quassel.h"
 
 int main(int argc, char **argv)
 {
+#if QT_VERSION < 0x050000
+    // All our source files are in UTF-8, and Qt5 even requires that
+    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
+    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
+#endif
+
     Quassel::setupBuildInfo();
     QCoreApplication::setApplicationName(Quassel::buildInfo().applicationName);
+    QCoreApplication::setApplicationVersion(Quassel::buildInfo().plainVersionString);
     QCoreApplication::setOrganizationName(Quassel::buildInfo().organizationName);
     QCoreApplication::setOrganizationDomain(Quassel::buildInfo().organizationDomain);
 
@@ -67,26 +88,24 @@ int main(int argc, char **argv)
     Q_INIT_RESOURCE(sql);
 #endif
 #ifndef BUILD_CORE
-    Q_INIT_RESOURCE(pics); // always in a resource, for now
+    Q_INIT_RESOURCE(pics);
+    Q_INIT_RESOURCE(hicolor);
 #endif
 
 #ifdef EMBED_DATA
     Q_INIT_RESOURCE(i18n);
 # ifndef BUILD_CORE
     Q_INIT_RESOURCE(data);
-    Q_INIT_RESOURCE(hicolor);
-    Q_INIT_RESOURCE(oxygen);
 #   ifdef WITH_OXYGEN
-    Q_INIT_RESOURCE(oxygen_kde);
+    Q_INIT_RESOURCE(oxygen);
 #   endif
 # endif
 #endif
 
     AbstractCliParser *cliParser;
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     // We need to init KCmdLineArgs first
-    // TODO: build an AboutData compat class to replace our aboutDlg strings
     KAboutData aboutData("quassel", "kdelibs4", ki18n("Quassel IRC"), Quassel::buildInfo().plainVersionString.toUtf8(),
         ki18n("A modern, distributed IRC client"));
     aboutData.addLicense(KAboutData::License_GPL_V2);
@@ -96,6 +115,8 @@ int main(int argc, char **argv)
     KCmdLineArgs::init(argc, argv, &aboutData);
 
     cliParser = new KCmdLineWrapper();
+#elif defined HAVE_QT5
+    cliParser = new Qt5CliParser();
 #else
     cliParser = new CliParser();
 #endif
@@ -103,47 +124,49 @@ int main(int argc, char **argv)
 
     // Initialize CLI arguments
     // NOTE: We can't use tr() at this point, since app is not yet created
+    // TODO: Change this once we get rid of KDE4 and can initialize the parser after creating the app
 
     // put shared client&core arguments here
     cliParser->addSwitch("debug", 'd', "Enable debug output");
     cliParser->addSwitch("help", 'h', "Display this help and exit");
     cliParser->addSwitch("version", 'v', "Display version information");
 #ifdef BUILD_QTUI
-    cliParser->addOption("configdir <path>", 'c', "Specify the directory holding the client configuration");
+    cliParser->addOption("configdir", 'c', "Specify the directory holding the client configuration", "path");
 #else
-    cliParser->addOption("configdir <path>", 'c', "Specify the directory holding configuration files, the SQlite database and the SSL certificate");
+    cliParser->addOption("configdir", 'c', "Specify the directory holding configuration files, the SQlite database and the SSL certificate", "path");
 #endif
-    cliParser->addOption("datadir <path>", 0, "DEPRECATED - Use --configdir instead");
+    cliParser->addOption("datadir", 0, "DEPRECATED - Use --configdir instead", "path");
 
 #ifndef BUILD_CORE
     // put client-only arguments here
-    cliParser->addOption("qss <file.qss>", 0, "Load a custom application stylesheet");
+    cliParser->addOption("icontheme", 0, "Override the system icon theme ('oxygen' is recommended)", "theme");
+    cliParser->addOption("qss", 0, "Load a custom application stylesheet", "file.qss");
     cliParser->addSwitch("debugbufferswitches", 0, "Enables debugging for bufferswitches");
     cliParser->addSwitch("debugmodel", 0, "Enables debugging for models");
     cliParser->addSwitch("hidewindow", 0, "Start the client minimized to the system tray");
 #endif
 #ifndef BUILD_QTUI
     // put core-only arguments here
-    cliParser->addOption("listen <address>[,<address[,...]]>", 0, "The address(es) quasselcore will listen on", "::,0.0.0.0");
-    cliParser->addOption("port <port>", 'p', "The port quasselcore will listen at", QString("4242"));
+    cliParser->addOption("listen", 0, "The address(es) quasselcore will listen on", "<address>[,<address>[,...]]", "::,0.0.0.0");
+    cliParser->addOption("port", 'p', "The port quasselcore will listen at", "port", "4242");
     cliParser->addSwitch("norestore", 'n', "Don't restore last core's state");
-    cliParser->addOption("loglevel <level>", 'L', "Loglevel Debug|Info|Warning|Error", "Info");
+    cliParser->addOption("loglevel", 'L', "Loglevel Debug|Info|Warning|Error", "level", "Info");
 #ifdef HAVE_SYSLOG
     cliParser->addSwitch("syslog", 0, "Log to syslog");
 #endif
-    cliParser->addOption("logfile <path>", 'l', "Log to a file");
-    cliParser->addOption("select-backend <backendidentifier>", 0, "Switch storage backend (migrating data if possible)");
+    cliParser->addOption("logfile", 'l', "Log to a file", "path");
+    cliParser->addOption("select-backend", 0, "Switch storage backend (migrating data if possible)", "backendidentifier");
     cliParser->addSwitch("add-user", 0, "Starts an interactive session to add a new core user");
-    cliParser->addOption("change-userpass <username>", 0, "Starts an interactive session to change the password of the user identified by username");
+    cliParser->addOption("change-userpass", 0, "Starts an interactive session to change the password of the user identified by <username>", "username");
     cliParser->addSwitch("oidentd", 0, "Enable oidentd integration");
-    cliParser->addOption("oidentd-conffile <file>", 0, "Set path to oidentd configuration file");
+    cliParser->addOption("oidentd-conffile", 0, "Set path to oidentd configuration file", "file");
 #ifdef HAVE_SSL
     cliParser->addSwitch("require-ssl", 0, "Require SSL for client connections");
 #endif
     cliParser->addSwitch("enable-experimental-dcc", 0, "Enable highly experimental and unfinished support for CTCP DCC (DANGEROUS)");
 #endif
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     // the KDE version needs this extra call to parse argc/argv before app is instantiated
     if (!cliParser->init()) {
         cliParser->usage();
@@ -159,7 +182,7 @@ int main(int argc, char **argv)
     MonolithicApplication app(argc, argv);
 #  endif
 
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
     // the non-KDE version parses after app has been instantiated
     if (!cliParser->init(app.arguments())) {
         cliParser->usage();
@@ -167,6 +190,15 @@ int main(int argc, char **argv)
     }
 #endif
 
-    if (!app.init()) return EXIT_FAILURE;
+    if (!app.init())
+        return EXIT_FAILURE;
+
+#ifdef HAVE_KF5
+    // FIXME: This should be done after loading the translation catalogue, but still in main()
+    AboutData aboutData;
+    AboutData::setQuasselPersons(&aboutData);
+    KAboutData::setApplicationData(aboutData.kAboutData());
+#endif
+
     return app.exec();
 }
index d83edbd..2c01576 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e2fbcab..402faea 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a4a895f..88b26ff 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 5c0ca56..aa7e75e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 40881de..24ce125 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index b821052..190c62c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index bb18d48..a47a441 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 79489b0..c1a0f90 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 6ef957a..edb62ad 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 82a4b8d..3ef1bd3 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2cbdb74..1404159 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2bdcc56..a21e9c1 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2364b71..580c2ba 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 6b1bdf3..1ec5890 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index ac89f4a..58a4be9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 6dc85f7..522e7fc 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index b219e01..15f5e5d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 393d0e2..d3bd110 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e01fb34..1648c3a 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 98a7afa..6c4a716 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index ce960fa..0fe1328 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
similarity index 51%
rename from src/uisupport/icon.h
rename to src/common/qt5cliparser.cpp
index b794cd6..e224911 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
-#ifndef ICON_H_
-#define ICON_H_
+#include "qt5cliparser.h"
 
-#ifndef HAVE_KDE
+#include <QCoreApplication>
+#include <QDebug>
 
-#include <QIcon>
+bool Qt5CliParser::init(const QStringList &arguments)
+{
+    _qCliParser.addHelpOption();
+    _qCliParser.addVersionOption();
+    _qCliParser.setApplicationDescription(QCoreApplication::translate("CliParser", "Quassel IRC is a modern, distributed IRC client."));
+
+    _qCliParser.process(arguments);
+    return true; // process() does error handling by itself
+}
 
-/// A very thin wrapper around QIcon
-/** This wrapper class allows us to load an icon by its theme name rather than its full file name.
- *  The overloaded ctor uses IconLoader to locate an icon with this basename in the current theme
- *  or in Qt Resources.
- */
-class Icon : public QIcon
+
+bool Qt5CliParser::isSet(const QString &longName)
 {
-public:
-    Icon();
-    explicit Icon(const QString &iconName);
-    explicit Icon(const QIcon &copy);
 
-    Icon &operator=(const Icon &other);
-};
+    return _qCliParser.isSet(longName);
+}
 
 
-#else /* HAVE_KDE */
-#include <KIcon>
-class Icon : public KIcon
+QString Qt5CliParser::value(const QString &longName)
 {
-public:
-    inline Icon() : KIcon() {};
-    inline explicit Icon(const QString &iconName) : KIcon(iconName) {};
-    inline explicit Icon(const QIcon &copy) : KIcon(copy) {};
-};
+    return _qCliParser.value(longName);
+}
 
 
-#endif /* HAVE_KDE */
+void Qt5CliParser::usage()
+{
+    _qCliParser.showHelp();
+}
+
+
+void Qt5CliParser::addArgument(const QString &longName, const AbstractCliParser::CliParserArg &arg)
+{
+    QStringList names(longName);
+    if (arg.shortName != 0)
+        names << QString(arg.shortName);
 
-#endif
+    switch(arg.type) {
+    case CliParserArg::CliArgSwitch:
+        _qCliParser.addOption(QCommandLineOption(names, arg.help));
+        break;
+    case CliParserArg::CliArgOption:
+        _qCliParser.addOption(QCommandLineOption(names, arg.help, arg.valueName, arg.def));
+        break;
+    default:
+        qWarning() << "Warning: Unrecognized argument:" << longName;
+    }
+}
similarity index 74%
rename from src/uisupport/icon.cpp
rename to src/common/qt5cliparser.h
index b4b86ef..1a7e788 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
-#ifndef HAVE_KDE
+#pragma once
 
-#include "icon.h"
-#include "iconloader.h"
+#include <QCommandLineParser>
 
-Icon::Icon() : QIcon()
-{
-}
+#include "abstractcliparser.h"
 
 
-Icon::Icon(const QString &name) : QIcon()
+class Qt5CliParser : public AbstractCliParser
 {
-    addPixmap(IconLoader::global()->loadIcon(name, IconLoader::Desktop));
-}
-
+public:
+    bool init(const QStringList &arguments = QStringList());
 
-Icon::Icon(const QIcon &copy) : QIcon(copy)
-{
-}
+    QString value(const QString &longName);
+    bool isSet(const QString &longName);
+    void usage();
 
+private:
+    void addArgument(const QString &longName, const CliParserArg &arg);
 
-Icon &Icon::operator=(const Icon &other)
-{
-    if (this != &other) {
-        QIcon::operator=(other);
-    }
-    return *this;
-}
-
+    QCommandLineParser _qCliParser;
 
-#endif
+};
index f5954c0..c9da049 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -112,6 +112,7 @@ bool Quassel::init()
     _initialized = true;
     qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));
 
+    setupEnvironment();
     registerMetaTypes();
 
     Network::setDefaultCodecForServer("ISO-8859-1");
@@ -211,9 +212,40 @@ void Quassel::registerMetaTypes()
 }
 
 
+void Quassel::setupEnvironment()
+{
+    // On modern Linux systems, XDG_DATA_DIRS contains a list of directories containing application data. This
+    // is, for example, used by Qt for finding icons and other things. In case Quassel is installed in a non-standard
+    // prefix (or run from the build directory), it makes sense to add this to XDG_DATA_DIRS so we don't have to
+    // hack extra search paths into various places.
+#ifdef Q_OS_UNIX
+    QString xdgDataVar = QFile::decodeName(qgetenv("XDG_DATA_DIRS"));
+    if (xdgDataVar.isEmpty())
+        xdgDataVar = QLatin1String("/usr/local/share:/usr/share"); // sane defaults
+
+    QStringList xdgDirs = xdgDataVar.split(QLatin1Char(':'), QString::SkipEmptyParts);
+
+    // Add our install prefix (if we're not in a bindir, this just adds the current workdir)
+    QString appDir = QCoreApplication::applicationDirPath();
+    int binpos = appDir.lastIndexOf("/bin");
+    if (binpos >= 0) {
+        appDir.replace(binpos, 4, "/share");
+        xdgDirs.append(appDir);
+        // Also append apps/quassel, this is only for QIconLoader to find icons there
+        xdgDirs.append(appDir + "/apps/quassel");
+    } else
+        xdgDirs.append(appDir);  // build directory is always the last fallback
+
+    xdgDirs.removeDuplicates();
+
+    qputenv("XDG_DATA_DIRS", QFile::encodeName(xdgDirs.join(":")));
+#endif
+}
+
+
 void Quassel::setupBuildInfo()
 {
-    _buildInfo.applicationName = "Quassel IRC";
+    _buildInfo.applicationName = "quassel";
     _buildInfo.coreApplicationName = "quasselcore";
     _buildInfo.clientApplicationName = "quasselclient";
     _buildInfo.organizationName = "Quassel Project";
index b141f32..bcfad07 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -148,6 +148,7 @@ protected:
     inline void disableCrashhandler();
 
 private:
+    void setupEnvironment();
     void registerMetaTypes();
 
     static void handleSignal(int signal);
index 948bffa..e8fa578 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -252,11 +252,7 @@ void RemotePeer::handle(const HeartBeat &heartBeat)
 void RemotePeer::handle(const HeartBeatReply &heartBeatReply)
 {
     _heartBeatCount = 0;
-#if QT_VERSION >= 0x040700
     emit lagUpdated(heartBeatReply.timestamp.msecsTo(QDateTime::currentDateTime().toUTC()) / 2);
-#else
-    emit lagUpdated(heartBeatReply.timestamp.time().msecsTo(QDateTime::currentDateTime().toUTC().time()) / 2);
-#endif
 }
 
 
index 4489829..5650120 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d89b850..4363f09 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 4f556d7..ebd36c2 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e085cbb..d9102fd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 97efc2d..7fefdad 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 0a14203..b4f395f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3ddef14..08bd2e3 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 6037513..460b067 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index cacfeaa..0094851 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 257f4b2..5e5af46 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d2a888b..941e11c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a63e296..c69660f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 4797e72..a6acf58 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index aac8380..25f6cc5 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 6a0611a..43e6840 100644 (file)
@@ -54,6 +54,13 @@ if (QCA2_FOUND)
     list(APPEND LIBS ${QCA2_LIBRARIES})
 endif()
 
+if (QCA2-QT5_FOUND)
+    add_definitions(-DHAVE_QCA2)
+    include_directories(${QCA2-QT5_INCLUDE_DIR})
+    list(APPEND SOURCES cipher.cpp)
+    list(APPEND LIBS ${QCA2-QT5_LIBRARIES})
+endif()
+
 include_directories(${CMAKE_SOURCE_DIR}/src/common)
 
 set(CORE_RCS ${CORE_RCS} ${CMAKE_CURRENT_SOURCE_DIR}/sql.qrc)
@@ -62,8 +69,4 @@ qt_add_resources(SOURCES ${CORE_RCS})
 add_library(mod_core STATIC ${SOURCES})
 qt_use_modules(mod_core Core Network Script Sql)
 
-add_dependencies(mod_core mod_common)
-
-if (LIBS)
-    target_link_libraries(mod_core ${LIBS})
-endif()
+target_link_libraries(mod_core mod_common ${LIBS})
index 4554f3f..cb07454 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3e7b379..90a8aa9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 7cc75d0..a8232a3 100644 (file)
@@ -364,6 +364,10 @@ QByteArray Cipher::blowfishECB(QByteArray cipherText, bool direction)
     }
     else
     {
+        // ECB Blowfish encodes in blocks of 12 chars, so anything else is malformed input
+        if ((temp.length() % 12) != 0)
+            return cipherText;
+
         temp = b64ToByte(temp);
         while ((temp.length() % 8) != 0) temp.append('\0');
     }
@@ -376,8 +380,13 @@ QByteArray Cipher::blowfishECB(QByteArray cipherText, bool direction)
     if (!cipher.ok())
         return cipherText;
 
-    if (direction)
+    if (direction) {
+        // Sanity check
+        if ((temp2.length() % 8) != 0)
+            return cipherText;
+
         temp2 = byteToB64(temp2);
+    }
 
     return temp2;
 }
@@ -420,13 +429,13 @@ QByteArray Cipher::byteToB64(QByteArray text)
         right += v;
 
         for (int i = 0; i < 6; i++) {
-            encoded.append(base64.at(right & 0x3F).toAscii());
+            encoded.append(base64.at(right & 0x3F).toLatin1());
             right = right >> 6;
         }
 
-        //TODO make sure the .toascii doesn't break anything
+        //TODO make sure the .toLatin1 doesn't break anything
         for (int i = 0; i < 6; i++) {
-            encoded.append(base64.at(left & 0x3F).toAscii());
+            encoded.append(base64.at(left & 0x3F).toLatin1());
             left = left >> 6;
         }
     }
index 7068f84..e7b5639 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -222,7 +222,7 @@ Core::~Core()
     foreach(CoreAuthHandler *handler, _connectingClients) {
         handler->deleteLater(); // disconnect non authed clients
     }
-    qDeleteAll(sessions);
+    qDeleteAll(_sessions);
     qDeleteAll(_storageBackends);
 }
 
@@ -234,7 +234,8 @@ void Core::saveState()
     CoreSettings s;
     QVariantMap state;
     QVariantList activeSessions;
-    foreach(UserId user, instance()->sessions.keys()) activeSessions << QVariant::fromValue<UserId>(user);
+    foreach(UserId user, instance()->_sessions.keys())
+        activeSessions << QVariant::fromValue<UserId>(user);
     state["CoreStateVersion"] = 1;
     state["ActiveSessions"] = activeSessions;
     s.setCoreState(state);
@@ -247,7 +248,7 @@ void Core::restoreState()
         // qWarning() << qPrintable(tr("Cannot restore a state for an unconfigured core!"));
         return;
     }
-    if (instance()->sessions.count()) {
+    if (instance()->_sessions.count()) {
         qWarning() << qPrintable(tr("Calling restoreState() even though active sessions exist!"));
         return;
     }
@@ -265,7 +266,7 @@ void Core::restoreState()
         quInfo() << "Restoring previous core state...";
         foreach(QVariant v, activeSessions) {
             UserId user = v.value<UserId>();
-            instance()->createSession(user, true);
+            instance()->sessionForUser(user, true);
         }
     }
 }
@@ -577,19 +578,7 @@ void Core::setupClientSession(RemotePeer *peer, UserId uid)
     handler->deleteLater();
 
     // Find or create session for validated user
-    SessionThread *session;
-    if (sessions.contains(uid)) {
-        session = sessions[uid];
-    }
-    else {
-        session = createSession(uid);
-        if (!session) {
-            qWarning() << qPrintable(tr("Could not initialize session for client:")) << qPrintable(peer->description());
-            peer->close();
-            peer->deleteLater();
-            return;
-        }
-    }
+    sessionForUser(uid);
 
     // as we are currently handling an event triggered by incoming data on this socket
     // it is unsafe to directly move the socket to the client thread.
@@ -610,14 +599,7 @@ void Core::customEvent(QEvent *event)
 void Core::addClientHelper(RemotePeer *peer, UserId uid)
 {
     // Find or create session for validated user
-    if (!sessions.contains(uid)) {
-        qWarning() << qPrintable(tr("Could not find a session for client:")) << qPrintable(peer->description());
-        peer->close();
-        peer->deleteLater();
-        return;
-    }
-
-    SessionThread *session = sessions[uid];
+    SessionThread *session = sessionForUser(uid);
     session->addClient(peer);
 }
 
@@ -643,26 +625,20 @@ void Core::setupInternalClientSession(InternalPeer *clientPeer)
     clientPeer->setPeer(corePeer);
 
     // Find or create session for validated user
-    SessionThread *sessionThread;
-    if (sessions.contains(uid))
-        sessionThread = sessions[uid];
-    else
-        sessionThread = createSession(uid);
-
+    SessionThread *sessionThread = sessionForUser(uid);
     sessionThread->addClient(corePeer);
 }
 
 
-SessionThread *Core::createSession(UserId uid, bool restore)
+SessionThread *Core::sessionForUser(UserId uid, bool restore)
 {
-    if (sessions.contains(uid)) {
-        qWarning() << "Calling createSession() when a session for the user already exists!";
-        return 0;
-    }
-    SessionThread *sess = new SessionThread(uid, restore, this);
-    sessions[uid] = sess;
-    sess->start();
-    return sess;
+    if (_sessions.contains(uid))
+        return _sessions[uid];
+
+    SessionThread *session = new SessionThread(uid, restore, this);
+    _sessions[uid] = session;
+    session->start();
+    return session;
 }
 
 
index c71dfa8..a17211d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -530,7 +530,7 @@ private:
     void init();
     static Core *instanceptr;
 
-    SessionThread *createSession(UserId userId, bool restoreState = false);
+    SessionThread *sessionForUser(UserId userId, bool restoreState = false);
     void addClientHelper(RemotePeer *peer, UserId uid);
     //void processCoreSetup(QTcpSocket *socket, QVariantMap &msg);
     QString setupCoreForInternalUsage();
@@ -547,7 +547,7 @@ private:
 
 private:
     QSet<CoreAuthHandler *> _connectingClients;
-    QHash<UserId, SessionThread *> sessions;
+    QHash<UserId, SessionThread *> _sessions;
     Storage *_storage;
     QTimer _storageSyncTimer;
 
index 2669a63..4ba6a91 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1ad3b45..65b24f9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2ea44f8..9b48adb 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3be2dbe..11ba7bc 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d52a50b..75a2928 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index bb0b28b..a16ca1d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index bfa3f79..bb1d93f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 8ea273a..cda1e63 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d2bb0d5..dfa8a99 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a9b74d3..20d057f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 5e61de2..fc4812a 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2c71247..05ddd6a 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index dff072d..3fa9a46 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e8f29da..8658ebd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index de37c07..2c63d92 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d8b56b7..a6f6f4f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 999c6bc..36d70a6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1276a50..5ef95ed 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 10159c8..c637aa6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index f62411a..02c2ca4 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3950f6b..75eeee5 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3b630f3..05445ca 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index fe2df1b..c0f90ad 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 4f2f4f3..ccb82a5 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3cfd1a6..d5fc377 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 5429236..aefcec9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3b21452..76767cd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d1e4ee1..b4d02f0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 77fc0dc..8b1d001 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 4223c5f..7e9ce26 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -232,17 +232,18 @@ void CoreNetwork::disconnectFromIrc(bool requested, const QString &reason, bool
         _quitReason = reason;
 
     displayMsg(Message::Server, BufferInfo::StatusBuffer, "", tr("Disconnecting. (%1)").arg((!requested && !withReconnect) ? tr("Core Shutdown") : _quitReason));
-    switch (socket.state()) {
-    case QAbstractSocket::ConnectedState:
-        userInputHandler()->issueQuit(_quitReason);
+    if (socket.state() == QAbstractSocket::UnconnectedState) {
+        socketDisconnected();
+    } else {
+        if (socket.state() == QAbstractSocket::ConnectedState) {
+            userInputHandler()->issueQuit(_quitReason);
+        } else {
+            socket.close();
+        }
         if (requested || withReconnect) {
             // the irc server has 10 seconds to close the socket
             _socketCloseTimer.start(10000);
-            break;
         }
-    default:
-        socket.close();
-        socketDisconnected();
     }
 }
 
@@ -416,11 +417,7 @@ void CoreNetwork::socketHasData()
         else if (s.endsWith("\n"))
             s.chop(1);
         NetworkDataEvent *event = new NetworkDataEvent(EventManager::NetworkIncoming, this, s);
-#if QT_VERSION >= 0x040700
         event->setTimestamp(QDateTime::currentDateTimeUtc());
-#else
-        event->setTimestamp(QDateTime::currentDateTime().toUTC());
-#endif
         emit newEvent(event);
     }
 }
@@ -450,17 +447,15 @@ void CoreNetwork::socketInitialized()
         disconnectFromIrc();
         return;
     }
-    
+
     emit socketOpen(identity, localAddress(), localPort(), peerAddress(), peerPort());
-    
+
     Server server = usedServer();
 #ifdef HAVE_SSL
     if (server.useSsl && !socket.isEncrypted())
         return;
 #endif
-#if QT_VERSION >= 0x040600
     socket.setSocketOption(QAbstractSocket::KeepAliveOption, true);
-#endif
 
     emit socketInitialized(identity, localAddress(), localPort(), peerAddress(), peerPort());
 
index c4bea90..87121ba 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 4520528..3f4db23 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 89c4cf9..7450b81 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index ace622f..112aa85 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index ade372a..3eecc4b 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index f3e94e8..eef0dd2 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index b981be3..43e6754 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 0f6ab22..4837ae0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 7baa1c5..111ffe7 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 830c151..3ccb5a3 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 85248e6..3244efd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index c8f79dd..eb01263 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a01e285..8d8d576 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e9efbaa..832c2e0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -169,11 +169,7 @@ void CoreUserInputHandler::handleCtcp(const BufferInfo &bufferInfo, const QStrin
     QString verboseMessage = tr("sending CTCP-%1 request to %2").arg(ctcpTag).arg(nick);
 
     if (ctcpTag == "PING") {
-#if QT_VERSION >= 0x040700
         message = QString::number(QDateTime::currentMSecsSinceEpoch());
-#else
-        message = QString::number(QDateTime::currentDateTime().toTime_t());
-#endif
     }
 
     // FIXME make this a proper event
index 3c03508..dd9696c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 52ddd24..9383052 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 54d4527..5cad01c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 33845f6..fba3d13 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 04626ba..f45cb7a 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index c9c35ae..943727c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -733,12 +733,7 @@ void EventStringifier::handleCtcpPing(CtcpEvent *e)
     if (e->ctcpType() == CtcpEvent::Query)
         defaultHandler(e->ctcpCmd(), e);
     else {
-#if QT_VERSION >= 0x040700
         displayMsg(e, Message::Server, tr("Received CTCP-PING answer from %1 with %2 milliseconds round trip time")
             .arg(nickFromMask(e->prefix())).arg(QDateTime::fromMSecsSinceEpoch(e->param().toULongLong()).msecsTo(e->timestamp())));
-#else
-        displayMsg(e, Message::Server, tr("Received CTCP-PING answer from %1 with %2 seconds round trip time")
-            .arg(nickFromMask(e->prefix())).arg(QDateTime::fromTime_t(e->param().toInt()).secsTo(e->timestamp())));
-#endif
     }
 }
index dc0413f..7c4c86d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index acc765a..f536355 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index bf47f99..e16faca 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 64789cb..f86eef6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 0ebb96a..eac19ae 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 8c5f32b..1f877cb 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index eb936d8..aad24d9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index bb58da1..11adb1d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -152,12 +152,17 @@ void PostgreSqlStorage::setConnectionProperties(const QVariantMap &properties)
 
 int PostgreSqlStorage::installedSchemaVersion()
 {
-    QSqlQuery query = logDb().exec("SELECT value FROM coreinfo WHERE key = 'schemaversion'");
+    QSqlQuery query(logDb());
+    query.prepare("SELECT value FROM coreinfo WHERE key = 'schemaversion'");
+    safeExec(query);
+    watchQuery(query);
     if (query.first())
         return query.value(0).toInt();
 
     // maybe it's really old... (schema version 0)
-    query = logDb().exec("SELECT MAX(version) FROM coreinfo");
+    query.prepare("SELECT MAX(version) FROM coreinfo");
+    safeExec(query);
+    watchQuery(query);
     if (query.first())
         return query.value(0).toInt();
 
@@ -170,10 +175,10 @@ bool PostgreSqlStorage::updateSchemaVersion(int newVersion)
     QSqlQuery query(logDb());
     query.prepare("UPDATE coreinfo SET value = :version WHERE key = 'schemaversion'");
     query.bindValue(":version", newVersion);
-    query.exec();
+    safeExec(query);
 
     bool success = true;
-    if (query.lastError().isValid()) {
+    if (!watchQuery(query)) {
         qCritical() << "PostgreSqlStorage::updateSchemaVersion(int): Updating schema version failed!";
         success = false;
     }
@@ -186,10 +191,10 @@ bool PostgreSqlStorage::setupSchemaVersion(int version)
     QSqlQuery query(logDb());
     query.prepare("INSERT INTO coreinfo (key, value) VALUES ('schemaversion', :version)");
     query.bindValue(":version", version);
-    query.exec();
+    safeExec(query);
 
     bool success = true;
-    if (query.lastError().isValid()) {
+    if (!watchQuery(query)) {
         qCritical() << "PostgreSqlStorage::setupSchemaVersion(int): Updating schema version failed!";
         success = false;
     }
@@ -221,6 +226,7 @@ bool PostgreSqlStorage::updateUser(UserId user, const QString &password)
     query.bindValue(":userid", user.toInt());
     query.bindValue(":password", cryptedPassword(password));
     safeExec(query);
+    watchQuery(query);
     return query.numRowsAffected() != 0;
 }
 
@@ -232,6 +238,7 @@ void PostgreSqlStorage::renameUser(UserId user, const QString &newName)
     query.bindValue(":userid", user.toInt());
     query.bindValue(":username", newName);
     safeExec(query);
+    watchQuery(query);
     emit userRenamed(user, newName);
 }
 
@@ -243,6 +250,7 @@ UserId PostgreSqlStorage::validateUser(const QString &user, const QString &passw
     query.bindValue(":username", user);
     query.bindValue(":password", cryptedPassword(password));
     safeExec(query);
+    watchQuery(query);
 
     if (query.first()) {
         return query.value(0).toInt();
@@ -259,6 +267,7 @@ UserId PostgreSqlStorage::getUserId(const QString &user)
     query.prepare(queryString("select_userid"));
     query.bindValue(":username", user);
     safeExec(query);
+    watchQuery(query);
 
     if (query.first()) {
         return query.value(0).toInt();
@@ -274,6 +283,7 @@ UserId PostgreSqlStorage::internalUser()
     QSqlQuery query(logDb());
     query.prepare(queryString("select_internaluser"));
     safeExec(query);
+    watchQuery(query);
 
     if (query.first()) {
         return query.value(0).toInt();
@@ -287,7 +297,7 @@ UserId PostgreSqlStorage::internalUser()
 void PostgreSqlStorage::delUser(UserId user)
 {
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::delUser(): cannot start transaction!";
         return;
     }
@@ -320,6 +330,7 @@ void PostgreSqlStorage::setUserSetting(UserId userId, const QString &settingName
     selectQuery.bindValue(":userid", userId.toInt());
     selectQuery.bindValue(":settingname", settingName);
     safeExec(selectQuery);
+    watchQuery(selectQuery);
 
     QString setQueryString;
     if (!selectQuery.first()) {
@@ -335,6 +346,7 @@ void PostgreSqlStorage::setUserSetting(UserId userId, const QString &settingName
     setQuery.bindValue(":settingname", settingName);
     setQuery.bindValue(":settingvalue", rawData);
     safeExec(setQuery);
+    watchQuery(setQuery);
 }
 
 
@@ -345,6 +357,7 @@ QVariant PostgreSqlStorage::getUserSetting(UserId userId, const QString &setting
     query.bindValue(":userid", userId.toInt());
     query.bindValue(":settingname", settingName);
     safeExec(query);
+    watchQuery(query);
 
     if (query.first()) {
         QVariant data;
@@ -365,7 +378,7 @@ IdentityId PostgreSqlStorage::createIdentity(UserId user, CoreIdentity &identity
     IdentityId identityId;
 
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::createIdentity(): Unable to start Transaction!";
         qWarning() << " -" << qPrintable(db.lastError().text());
         return identityId;
@@ -399,8 +412,7 @@ IdentityId PostgreSqlStorage::createIdentity(UserId user, CoreIdentity &identity
     query.bindValue(":sslkey", QByteArray());
 #endif
     safeExec(query);
-    if (query.lastError().isValid()) {
-        watchQuery(query);
+    if (!watchQuery(query)) {
         db.rollback();
         return IdentityId();
     }
@@ -410,7 +422,6 @@ IdentityId PostgreSqlStorage::createIdentity(UserId user, CoreIdentity &identity
     identity.setId(identityId);
 
     if (!identityId.isValid()) {
-        watchQuery(query);
         db.rollback();
         return IdentityId();
     }
@@ -439,7 +450,7 @@ IdentityId PostgreSqlStorage::createIdentity(UserId user, CoreIdentity &identity
 bool PostgreSqlStorage::updateIdentity(UserId user, const CoreIdentity &identity)
 {
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::updateIdentity(): Unable to start Transaction!";
         qWarning() << " -" << qPrintable(db.lastError().text());
         return false;
@@ -450,6 +461,7 @@ bool PostgreSqlStorage::updateIdentity(UserId user, const CoreIdentity &identity
     checkQuery.bindValue(":identityid", identity.id().toInt());
     checkQuery.bindValue(":userid", user.toInt());
     safeExec(checkQuery);
+    watchQuery(checkQuery);
 
     // there should be exactly one identity for the given id and user
     if (!checkQuery.first() || checkQuery.value(0).toInt() != 1) {
@@ -524,7 +536,7 @@ bool PostgreSqlStorage::updateIdentity(UserId user, const CoreIdentity &identity
 void PostgreSqlStorage::removeIdentity(UserId user, IdentityId identityId)
 {
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::removeIdentity(): Unable to start Transaction!";
         qWarning() << " -" << qPrintable(db.lastError().text());
         return;
@@ -563,6 +575,7 @@ QList<CoreIdentity> PostgreSqlStorage::identities(UserId user)
     nickQuery.prepare(queryString("select_nicks"));
 
     safeExec(query);
+    watchQuery(query);
 
     while (query.next()) {
         CoreIdentity identity(IdentityId(query.value(0).toInt()));
@@ -609,7 +622,7 @@ NetworkId PostgreSqlStorage::createNetwork(UserId user, const NetworkInfo &info)
     NetworkId networkId;
 
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::createNetwork(): failed to begin transaction!";
         qWarning() << " -" << qPrintable(db.lastError().text());
         return false;
@@ -620,8 +633,7 @@ NetworkId PostgreSqlStorage::createNetwork(UserId user, const NetworkInfo &info)
     query.bindValue(":userid", user.toInt());
     bindNetworkInfo(query, info);
     safeExec(query);
-    if (query.lastError().isValid()) {
-        watchQuery(query);
+    if (!watchQuery(query)) {
         db.rollback();
         return NetworkId();
     }
@@ -630,7 +642,6 @@ NetworkId PostgreSqlStorage::createNetwork(UserId user, const NetworkInfo &info)
     networkId = query.value(0).toInt();
 
     if (!networkId.isValid()) {
-        watchQuery(query);
         db.rollback();
         return NetworkId();
     }
@@ -701,7 +712,7 @@ void PostgreSqlStorage::bindServerInfo(QSqlQuery &query, const Network::Server &
 bool PostgreSqlStorage::updateNetwork(UserId user, const NetworkInfo &info)
 {
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::updateNetwork(): failed to begin transaction!";
         qWarning() << " -" << qPrintable(db.lastError().text());
         return false;
@@ -756,7 +767,7 @@ bool PostgreSqlStorage::updateNetwork(UserId user, const NetworkInfo &info)
 bool PostgreSqlStorage::removeNetwork(UserId user, const NetworkId &networkId)
 {
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::removeNetwork(): cannot start transaction!";
         qWarning() << " -" << qPrintable(db.lastError().text());
         return false;
@@ -1002,7 +1013,7 @@ void PostgreSqlStorage::setUserModes(UserId user, NetworkId networkId, const QSt
 BufferInfo PostgreSqlStorage::bufferInfo(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer, bool create)
 {
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::bufferInfo(): cannot start read only transaction!";
         qWarning() << " -" << qPrintable(db.lastError().text());
         return BufferInfo();
@@ -1014,6 +1025,7 @@ BufferInfo PostgreSqlStorage::bufferInfo(UserId user, const NetworkId &networkId
     query.bindValue(":userid", user.toInt());
     query.bindValue(":buffercname", buffer.toLower());
     safeExec(query);
+    watchQuery(query);
 
     if (query.first()) {
         BufferInfo bufferInfo = BufferInfo(query.value(0).toInt(), networkId, (BufferInfo::Type)query.value(1).toInt(), 0, buffer);
@@ -1046,9 +1058,8 @@ BufferInfo PostgreSqlStorage::bufferInfo(UserId user, const NetworkId &networkId
 
     safeExec(createQuery);
 
-    if (createQuery.lastError().isValid()) {
+    if (!watchQuery(createQuery)) {
         qWarning() << "PostgreSqlStorage::bufferInfo(): unable to create buffer";
-        watchQuery(createQuery);
         db.rollback();
         return BufferInfo();
     }
@@ -1135,7 +1146,7 @@ QList<BufferId> PostgreSqlStorage::requestBufferIdsForNetwork(UserId user, Netwo
 bool PostgreSqlStorage::removeBuffer(const UserId &user, const BufferId &bufferId)
 {
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::removeBuffer(): cannot start transaction!";
         return false;
     }
@@ -1170,7 +1181,7 @@ bool PostgreSqlStorage::removeBuffer(const UserId &user, const BufferId &bufferI
 bool PostgreSqlStorage::renameBuffer(const UserId &user, const BufferId &bufferId, const QString &newName)
 {
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::renameBuffer(): cannot start transaction!";
         return false;
     }
@@ -1182,8 +1193,7 @@ bool PostgreSqlStorage::renameBuffer(const UserId &user, const BufferId &bufferI
     query.bindValue(":userid", user.toInt());
     query.bindValue(":bufferid", bufferId.toInt());
     safeExec(query);
-    if (query.lastError().isValid()) {
-        watchQuery(query);
+    if (!watchQuery(query)) {
         db.rollback();
         return false;
     }
@@ -1208,7 +1218,7 @@ bool PostgreSqlStorage::renameBuffer(const UserId &user, const BufferId &bufferI
 bool PostgreSqlStorage::mergeBuffersPermanently(const UserId &user, const BufferId &bufferId1, const BufferId &bufferId2)
 {
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::mergeBuffersPermanently(): cannot start transaction!";
         qWarning() << " -" << qPrintable(db.lastError().text());
         return false;
@@ -1343,7 +1353,7 @@ QHash<BufferId, MsgId> PostgreSqlStorage::bufferMarkerLineMsgIds(UserId user)
 bool PostgreSqlStorage::logMessage(Message &msg)
 {
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::logMessage(): cannot start transaction!";
         qWarning() << " -" << qPrintable(db.lastError().text());
         return false;
@@ -1362,7 +1372,9 @@ bool PostgreSqlStorage::logMessage(Message &msg)
 
         if (addSenderQuery.lastError().isValid()) {
             rollbackSavePoint("sender_sp1", db);
-            getSenderIdQuery = db.exec(getSenderIdQuery.lastQuery());
+            getSenderIdQuery.prepare(getSenderIdQuery.lastQuery());
+            safeExec(getSenderIdQuery);
+            watchQuery(getSenderIdQuery);
             getSenderIdQuery.first();
             senderId = getSenderIdQuery.value(0).toInt();
         }
@@ -1403,7 +1415,7 @@ bool PostgreSqlStorage::logMessage(Message &msg)
 bool PostgreSqlStorage::logMessages(MessageList &msgs)
 {
     QSqlDatabase db = logDb();
-    if (!db.transaction()) {
+    if (!beginTransaction(db)) {
         qWarning() << "PostgreSqlStorage::logMessage(): cannot start transaction!";
         qWarning() << " -" << qPrintable(db.lastError().text());
         return false;
@@ -1431,7 +1443,9 @@ bool PostgreSqlStorage::logMessages(MessageList &msgs)
             if (addSenderQuery.lastError().isValid()) {
                 // seems it was inserted meanwhile... by a different thread
                 rollbackSavePoint("sender_sp", db);
-                selectSenderQuery = db.exec(selectSenderQuery.lastQuery());
+                selectSenderQuery.prepare(selectSenderQuery.lastQuery());
+                safeExec(selectSenderQuery);
+                watchQuery(selectSenderQuery);
                 selectSenderQuery.first();
                 senderIdList << selectSenderQuery.value(0).toInt();
                 senderIds[sender] = selectSenderQuery.value(0).toInt();
@@ -1620,14 +1634,29 @@ QList<Message> PostgreSqlStorage::requestAllMsgs(UserId user, MsgId first, MsgId
 //   return;
 // }
 
+
+bool PostgreSqlStorage::beginTransaction(QSqlDatabase &db)
+{
+    bool result = db.transaction();
+    if (!db.isOpen()) {
+        db = logDb();
+        result = db.transaction();
+    }
+    return result;
+}
+
 bool PostgreSqlStorage::beginReadOnlyTransaction(QSqlDatabase &db)
 {
     QSqlQuery query = db.exec("BEGIN TRANSACTION READ ONLY");
+    if (!db.isOpen()) {
+        db = logDb();
+        query = db.exec("BEGIN TRANSACTION READ ONLY");
+    }
     return !query.lastError().isValid();
 }
 
 
-QSqlQuery PostgreSqlStorage::prepareAndExecuteQuery(const QString &queryname, const QString &paramstring, const QSqlDatabase &db)
+QSqlQuery PostgreSqlStorage::prepareAndExecuteQuery(const QString &queryname, const QString &paramstring, QSqlDatabase &db)
 {
     // Query preparing is done lazily. That means that instead of always checking if the query is already prepared
     // we just EXECUTE and catch the error
@@ -1641,10 +1670,22 @@ QSqlQuery PostgreSqlStorage::prepareAndExecuteQuery(const QString &queryname, co
         query = db.exec(QString("EXECUTE quassel_%1 (%2)").arg(queryname).arg(paramstring));
     }
 
-    if (db.lastError().isValid()) {
-        // and once again: Qt leaves us without error codes so we either parse (language dependant(!)) strings
+    if (!db.isOpen() || db.lastError().isValid()) {
+        // If the query failed because the DB connection was down, reopen the connection and start a new transaction.
+        if (!db.isOpen()) {
+            db = logDb();
+            if (!beginTransaction(db)) {
+                qWarning() << "PostgreSqlStorage::prepareAndExecuteQuery(): cannot start transaction while recovering from connection loss!";
+                qWarning() << " -" << qPrintable(db.lastError().text());
+                return query;
+            }
+            db.exec("SAVEPOINT quassel_prepare_query");
+        } else {
+            db.exec("ROLLBACK TO SAVEPOINT quassel_prepare_query");
+        }
+
+        // and once again: Qt leaves us without error codes so we either parse (language dependent(!)) strings
         // or we just guess the error. As we're only interested in unprepared queries, this will be our guess. :)
-        db.exec("ROLLBACK TO SAVEPOINT quassel_prepare_query");
         QSqlQuery checkQuery = db.exec(QString("SELECT count(name) FROM pg_prepared_statements WHERE name = 'quassel_%1' AND from_sql = TRUE").arg(queryname.toLower()));
         checkQuery.first();
         if (checkQuery.value(0).toInt() == 0) {
@@ -1655,7 +1696,7 @@ QSqlQuery PostgreSqlStorage::prepareAndExecuteQuery(const QString &queryname, co
                 return QSqlQuery(db);
             }
         }
-        // we alwas execute the query again, even if the query was already prepared.
+        // we always execute the query again, even if the query was already prepared.
         // this ensures, that the error is properly propagated to the calling function
         // (otherwise the last call would be the testing select to pg_prepared_statements
         // which always gives a proper result and the error would be lost)
@@ -1674,7 +1715,7 @@ QSqlQuery PostgreSqlStorage::prepareAndExecuteQuery(const QString &queryname, co
 }
 
 
-QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, const QVariantList &params, const QSqlDatabase &db)
+QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, const QVariantList &params, QSqlDatabase &db)
 {
     QSqlDriver *driver = db.driver();
 
@@ -1700,7 +1741,7 @@ QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, cons
 }
 
 
-QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, const QVariant &param, const QSqlDatabase &db)
+QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, const QVariant &param, QSqlDatabase &db)
 {
     QSqlField field;
     field.setType(param.type());
@@ -1720,6 +1761,26 @@ void PostgreSqlStorage::deallocateQuery(const QString &queryname, const QSqlData
 }
 
 
+void PostgreSqlStorage::safeExec(QSqlQuery &query)
+{
+    // If the query fails due to the connection being gone, it seems to cause
+    // exec() to return false but no lastError to be set
+    if(!query.exec() && !query.lastError().isValid())
+    {
+        QSqlDatabase db = logDb();
+        QSqlQuery retryQuery(db);
+        retryQuery.prepare(query.lastQuery());
+        QMapIterator<QString, QVariant> i(query.boundValues());
+        while (i.hasNext())
+        {
+            i.next();
+            retryQuery.bindValue(i.key(),i.value());
+        }
+        query = retryQuery;
+        query.exec();
+    }
+}
+
 // ========================================
 //  PostgreSqlMigrationWriter
 // ========================================
index 0d172ec..346f7cd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -116,10 +116,11 @@ protected:
     virtual bool setupSchemaVersion(int version);
     void safeExec(QSqlQuery &query);
 
+    bool beginTransaction(QSqlDatabase &db);
     bool beginReadOnlyTransaction(QSqlDatabase &db);
 
-    QSqlQuery executePreparedQuery(const QString &queryname, const QVariantList &params, const QSqlDatabase &db);
-    QSqlQuery executePreparedQuery(const QString &queryname, const QVariant &param, const QSqlDatabase &db);
+    QSqlQuery executePreparedQuery(const QString &queryname, const QVariantList &params, QSqlDatabase &db);
+    QSqlQuery executePreparedQuery(const QString &queryname, const QVariant &param, QSqlDatabase &db);
     void deallocateQuery(const QString &queryname, const QSqlDatabase &db);
 
     inline void savePoint(const QString &handle, const QSqlDatabase &db) { db.exec(QString("SAVEPOINT %1").arg(handle)); }
@@ -129,8 +130,8 @@ protected:
 private:
     void bindNetworkInfo(QSqlQuery &query, const NetworkInfo &info);
     void bindServerInfo(QSqlQuery &query, const Network::Server &server);
-    QSqlQuery prepareAndExecuteQuery(const QString &queryname, const QString &paramstring, const QSqlDatabase &db);
-    inline QSqlQuery prepareAndExecuteQuery(const QString &queryname, const QSqlDatabase &db) { return prepareAndExecuteQuery(queryname, QString(), db); }
+    QSqlQuery prepareAndExecuteQuery(const QString &queryname, const QString &paramstring, QSqlDatabase &db);
+    inline QSqlQuery prepareAndExecuteQuery(const QString &queryname, QSqlDatabase &db) { return prepareAndExecuteQuery(queryname, QString(), db); }
 
     QString _hostName;
     int _port;
@@ -140,8 +141,6 @@ private:
 };
 
 
-inline void PostgreSqlStorage::safeExec(QSqlQuery &query) { query.exec(); }
-
 // ========================================
 //  PostgreSqlMigration
 // ========================================
index 74d260b..c2f9b5a 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 12b5ef3..fee6e64 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 311b47f..837e6b8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index b2038dc..fc2efc4 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 203c377..78495b2 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index c264453..bd72f29 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 30d0ee2..2e81de6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index db86391..9984d31 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index b66b090..c9274a2 100644 (file)
@@ -172,7 +172,6 @@ include_directories(${CMAKE_SOURCE_DIR}/src/common
                     ${CMAKE_SOURCE_DIR}/src/qtui
                     ${CMAKE_SOURCE_DIR}/src/qtui/settingspages
                     ${CMAKE_SOURCE_DIR}/src/uisupport
-
 )
 
 qt_wrap_ui(UI ${FORMPATH} ${SPFRM})
@@ -185,8 +184,4 @@ endif()
 add_library(mod_qtui STATIC ${SOURCES} ${SPSRC} ${UI})
 qt_use_modules(mod_qtui Core Gui Network ${QT_MODULES})
 
-if (LIBS)
-    target_link_libraries(mod_qtui ${LIBS})
-endif()
-
-add_dependencies(mod_qtui mod_common mod_client mod_uisupport)
+target_link_libraries(mod_qtui mod_client mod_common mod_uisupport ${LIBS})
index b76f899..582fe93 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include "aboutdlg.h"
+
 #include <QDateTime>
+#include <QIcon>
 
-#include "aboutdlg.h"
-#include "icon.h"
-#include "iconloader.h"
+#include "aboutdata.h"
 #include "quassel.h"
 
-AboutDlg::AboutDlg(QWidget *parent) : QDialog(parent)
+AboutDlg::AboutDlg(QWidget *parent)
+    : QDialog(parent)
+    , _aboutData(new AboutData(this))
 {
+    AboutData::setQuasselPersons(_aboutData);
+
     ui.setupUi(this);
-    ui.quasselLogo->setPixmap(DesktopIcon("quassel", IconLoader::SizeHuge));
+    ui.quasselLogo->setPixmap(QIcon(":/icons/quassel-64.png").pixmap(64)); // don't let the icon theme affect our logo here
 
     ui.versionLabel->setText(QString(tr("<b>Version:</b> %1<br><b>Protocol version:</b> %2<br><b>Built:</b> %3"))
         .arg(Quassel::buildInfo().fancyVersionString)
@@ -39,7 +44,7 @@ AboutDlg::AboutDlg(QWidget *parent) : QDialog(parent)
     ui.contributorTextBrowser->setHtml(contributors());
     ui.thanksToTextBrowser->setHtml(thanksTo());
 
-    setWindowIcon(Icon("quassel"));
+    setWindowIcon(QIcon::fromTheme("quassel", QIcon(":/icons/quassel.png")));
 }
 
 
@@ -55,7 +60,7 @@ QString AboutDlg::about() const
              "Most icons are &copy; by the <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> and used under the "
              "<a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>"
              "Please use <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to report bugs."
-        ).arg("2005-2014");
+        ).arg("2005-2015");
 
     return res;
 }
@@ -64,16 +69,14 @@ QString AboutDlg::about() const
 QString AboutDlg::authors() const
 {
     QString res;
-    res = tr("Quassel IRC is mainly developed by:") +
-          "<dl>"
-          "<dt><b>Manuel \"Sputnick\" Nickschas</b></dt><dd><a href=\"mailto:sput@quassel-irc.org\">sput@quassel-irc.org</a><br>"
-          "Project Founder, Lead Developer</dd>"
-          "<dt><b>Marcus \"EgS\" Eggenberger</b></dt><dd><a href=\"mailto:egs@quassel-irc.org\">egs@quassel-irc.org</a><br>"
-          "Project Motivator, Lead Developer, Mac Maintainer</dd>"
-          "<dt><b>Alexander \"phon\" von Renteln</b></dt><dd><a href=\"mailto:phon@quassel-irc.org\">phon@quassel-irc.org</a><br>"
-          "Developer, Windows Maintainer</dd>"
-          "</dl>";
-
+    res = tr("Quassel IRC is mainly developed by:") + "<dl>";
+    for (const auto &person : _aboutData->authors()) {
+        res.append("<dt><b>" + person.prettyName() + "</b></dt><dd>");
+        if (!person.emailAddress().isEmpty())
+            res.append("<a href=\"mailto:" + person.emailAddress() + "\">" + person.emailAddress() + "</a><br>");
+        res.append(person.task() + "</dd>");
+    }
+    res.append("</dl>");
     return res;
 }
 
@@ -81,126 +84,11 @@ QString AboutDlg::authors() const
 QString AboutDlg::contributors() const
 {
     QString res;
-    res = tr("We would like to thank the following contributors (in alphabetical order) and everybody we forgot to mention here:")
-          + QString::fromUtf8("<br>"
-                              "<dl>"
-                              "<dt><b>Daniel \"al\" Albers</b></dt><dd>Master Of Translation, many fixes and enhancements</dd>"
-                              "<dt><b>Liudas Alisauskas</b></dt><dd>Lithuanian translation</dd>"
-                              "<dt><b>Terje \"tan\" Andersen</b></dt><dd>Norwegian translation, documentation</dd>"
-                              "<dt><b>Jens \"amiconn\" Arnold</b></dt><dd>Postgres migration fixes</dd>"
-                              "<dt><b>Adolfo Jayme Barrientos</b></dt><dd>Spanish translation</dd>"
-                              "<dt><b>Mattia Basaglia</b></dt><dd>Fixes</dd>"
-                              "<dt><b>Pete \"elbeardmorez\" Beardmore</b></dt><dd>Linewrap for input line</dd>"
-                              "<dt><b>Rafael \"EagleScreen\" Belmonte</b></dt><dd>Spanish translation</dd>"
-                              "<dt><b>Sergiu Bivol</b></dt><dd>Romanian translation</dd>"
-                              "<dt><b>Bruno Brigras</b></dt><dd>Crash fixes</dd>"
-                              "<dt><b>Florent Castelli</b></dt><dd>Sanitize topic handling</dd>"
-                              "<dt><b>Theo \"tampakrap\" Chatzimichos</b></dt><dd>Greek translation</dd>"
-                              "<dt><b>Yuri Chornoivan</b></dt><dd>Ukrainian translation</dd>"
-                              "<dt><b>Tomáš \"scarabeus\" Chvátal</b></dt><dd>Czech translation</dd>"
-                              "<dt><b>\"Condex\"</b></dt><dd>Galician translation</dd>"
-                              "<dt><b>Joshua \"tvakah\" Corbin</b></dt><dd>Various fixes</dd>"
-                              "<dt><b>\"cordata\"</b></dt><dd>Esperanto translation</dd>"
-                              "<dt><b>Matthias \"pennywise\" Coy</b></dt><dd>German translation</dd>"
-                              "<dt><b>\"derpella\"</b></dt><dd>Polish translation</dd>"
-                              "<dt><b>\"Dorian\"</b></dt><dd>French translation</dd>"
-                              "<dt><b>Luke Faraone</b></dt><dd>Doc fixes</dd>"
-                              "<dt><b>Chris \"stitch\" Fuenty</b></dt><dd>SASL support</dd>"
-                              "<dt><b>Kevin \"KRF\" Funk</b></dt><dd>German translation</dd>"
-                              "<dt><b>Fabiano \"elbryan\" Francesconi</b></dt><dd>Italian translation</dd>"
-                              "<dt><b>Leo Franchi</b></dt><dd>OSX improvements</dd>"
-                              "<dt><b>Sebastien Fricker</b></dt><dd>Audio backend improvements</dd>"
-                              "<dt><b>Alf Gaida</b></dt><dd>Language improvements</dd>"
-                              "<dt><b>Aurélien \"agateau\" Gâteau</b></dt><dd>Message Indicator support</dd>"
-                              "<dt><b>Marco \"kaffeedoktor\" Genise</b></dt><dd>Ideas, hacking, motivation</dd>"
-                              "<dt><b>Felix \"debfx\" Geyer</b></dt><dd>Certificate handling improvements</dd>"
-                              "<dt><b>Volkan Gezer</b></dt><dd>Turkish translation</dd>"
-                              "<dt><b>Sjors \"dazjorz\" Gielen</b></dt><dd>Fixes</dd>"
-                              "<dt><b>Sebastian \"seezer\" Goth</b></dt><dd>Many improvements and features</dd>"
-                              "<dt><b>Michael \"brot\" Groh</b></dt><dd>German translation, fixes</dd>"
-                              "<dt><b>\"Gryllida\"</b></dt><dd>IRC parser improvements</dd>"
-                              "<dt><b>H. İbrahim \"igungor\" Güngör</b></dt><dd>Turkish translation</dd>"
-                              "<dt><b>Jiri Grönroos</b></dt><dd>Finnish translation</dd>"
-                              "<dt><b>Chris \"Zren\" H</b></dt><dd>Various improvements</dd>"
-                              "<dt><b>Edward Hades</b></dt><dd>Russian translation</dd>"
-                              "<dt><b>John \"nox\" Hand</b></dt><dd>Former All-Seeing Eye logo</dd>"
-                              "<dt><b>Adam \"2kah\" Harwood</b></dt><dd>ChatView improvements</dd>"
-                              "<dt><b>Jonas \"Dante\" Heese</b></dt><dd>Project founder, various improvements</dd>"
-                              "<dt><b>Thomas \"Datafreak\" Hogh</b></dt><dd>Windows builder</dd>"
-                              "<dt><b>Johannes \"j0hu\" Huber</b></dt><dd>Many fixes and features, bug triaging</dd>"
-                              "<dt><b>Theofilos Intzoglou</b></dt><dd>Greek translation</dd>"
-                              "<dt><b>Jovan Jojkić</b></dt><dd>Serbian translation</dd>"
-                              "<dt><b>Allan Jude</b></dt><dd>Documentation improvements</dd>"
-                              "<dt><b>Michael \"ycros\" Kedzierski</b></dt><dd>Mac fixes</dd>"
-                              "<dt><b>Scott \"ScottK\" Kitterman<b></dt><dd>Kubuntu nightly packager, (packaging/build system) bughunter</dd>"
-                              "<dt><b>Paul \"Haudrauf\" Klumpp</b></dt><dd>Initial design and mainwindow layout</dd>"
-                              "<dt><b>Maia Kozheva</b></dt><dd>Russian translation</dd>"
-                              "<dt><b>Tae-Hoon Kwon</b></dt><dd>Korean translation</dd>"
-                              "<dt><b>\"Larso\"</b></dt><dd>Finnish translation</dd>"
-                              "<dt><b>Patrick \"bonsaikitten\" Lauer</b></dt><dd>Gentoo packaging</dd>"
-                              "<dt><b>Chris \"Fish-Face\" Le Sueur</b></dt><dd>Various fixes and improvements</dd>"
-                              "<dt><b>Jerome \"Adys\" Leclanche</b></dt><dd>Context menu fixes</dd>"
-                              "<dt><b>Hendrik \"nevcairiel\" Leppkes</b></dt><dd>Various features</dd>"
-                              "<dt><b>Jason Lynch</b></dt><dd>Bugfixes</dd>"
-                              "<dt><b>Awad \"firesock\" Mackie</b></dt><dd>ChatView improvements</dd>"
-                              "<dt><b>Michael \"mamarley\" Marley</b></dt><dd>Various fixes and improvements</dd>"
-                              "<dt><b>Martin \"m4yer\" Mayer</b></dt><dd>German translation</dd>"
-                              "<dt><b>Daniel \"hydrogen\" Meltzer</b></dt><dd>Various fixes and improvements</dd>"
-                              "<dt><b>Sebastian Meyer</b></dt><dd>Fixes</dd>"
-                              "<dt><b>Daniel E. Moctezuma</b></dt><dd>Japanese translation</dd>"
-                              "<dt><b>Chris \"kode54\" Moeller</b></dt><dd>Various fixes and improvements</dd>"
-                              "<dt><b>Thomas Müller</b></dt><dd>Fixes, Debian packaging</dd>"
-                              "<dt><b>Gábor \"ELITE_x\" Németh</b></dt><dd>Hungarian translation</dd>"
-                              "<dt><b>Per Nielsen</b></dt><dd>Danish translation</dd>"
-                              "<dt><b>J-P Nurmi</b></dt><dd>Fixes</dd>"
-                              "<dt><b>Marco \"Quizzlo\" Paolone</b></dt><dd>Italian translation</dd>"
-                              "<dt><b>Bas \"Tucos\" Pape</b></dt><dd>Many fixes and improvements, bug and patch triaging, tireless community support</dd>"
-                              "<dt><b>Bruno Patri</b></dt><dd>French translation</dd>"
-                              "<dt><b>Drew \"LinuxDolt\" Patridge</b></dt><dd>BluesTheme stylesheet</dd>"
-                              "<dt><b>Celeste \"seele\" Paul</b></dt><dd>Usability Queen</dd>"
-                              "<dt><b>Vit Pelcak</b></dt><dd>Czech translation</dd>"
-                              "<dt><b>Regis \"ZRegis\" Perrin</b></dt><dd>French translation</dd>"
-                              "<dt><b>Diego \"Flameeyes\" Petten&ograve;</b></dt><dd>Gentoo maintainer, build system improvements</dd>"
-                              "<dt><b>Simon Philips</b></dt><dd>Dutch translation</dd>"
-                              "<dt><b>Daniel \"billie\" Pielmeier</b></dt><dd>Gentoo maintainer</dd>"
-                              "<dt><b>Nuno \"pinheiro\" Pinheiro</b></dt><dd>Tons of Oxygen icons including our application icon</dd>"
-                              "<dt><b>David Planella</b></dt><dd>Translation system fixes</dd>"
-                              "<dt><b>Jure \"JLP\" Repinc</b></dt><dd>Slovenian translation</dd>"
-                              "<dt><b>Patrick \"TheOneRing\" von Reth</b></dt><dd>MinGW support, SNORE backend, Windows packager</dd>"
-                              "<dt><b>Dirk \"MarcLandis\" Rettschlag</b></dt><dd>Various fixes and new features</dd>"
-                              "<dt><b>Miguel Revilla</b></dt><dd>Spanish translation</dd>"
-                              "<dt><b>Jaak Ristioja</b></dt><dd>Fixes</dd>"
-                              "<dt><b>David \"Bombe\" Roden</b></dt><dd>Fixes</dd>"
-                              "<dt><b>Henning \"honk\" Rohlfs</b></dt><dd>Various fixes</dd>"
-                              "<dt><b>Stella \"differentreality\" Rouzi</b></dt><dd>Greek translation</dd>"
-                              "<dt><b>\"salnx\"</b></dt><dd>Highlight configuration improvements</dd>"
-                              "<dt><b>Martin \"sandsmark\" Sandsmark</b></dt><dd>Core fixes, Quasseldroid</dd>"
-                              "<dt><b>David Sansome</b></dt><dd>OSX Notification Center support</dd>"
-                              "<dt><b>Dennis \"DevUrandom\" Schridde</b></dt><dd>D-Bus notifications</dd>"
-                              "<dt><b>Jussi \"jussi01\" Schultink</b></dt><dd>Tireless tester, {ku|U}buntu tester and lobbyist, liters of delicious Finnish alcohol</dd>"
-                              "<dt><b>Tim \"xAFFE\" Schumacher</b></dt><dd>Fixes and feedback</dd>"
-                              "<dt><b>\"sfionov\"</b></dt><dd>Russian translation</dd>"
-                              "<dt><b>Harald \"apachelogger\" Sitter</b></dt><dd>{ku|U}buntu packager, motivator, promoter</dd>"
-                              "<dt><b>Ramanathan Sivagurunathan</b></dt><dd>Fixes</dd>"
-                              "<dt><b>Stefanos Sofroniou</b></dt><dd>Greek translation</dd>"
-                              "<dt><b>Rüdiger \"ruediger\" Sonderfeld</b></dt><dd>Emacs keybindings</dd>"
-                              "<dt><b>Alexander Stein</b></dt><dd>Tray icon fix</dd>"
-                              "<dt><b>Daniel \"son\" Steinmetz</b></dt><dd>Early beta tester and bughunter (on Vista&trade;!)</dd>"
-                              "<dt><b>Jesper Thomschütz</b></dt><dd>Various fixes</dd>"
-                              "<dt><b>Arthur \"roentgen\" Titeica</b></dt><dd>Romanian translation</dd>"
-                              "<dt><b>\"ToBeFree\"</b></dt><dd>German translation</dd>"
-                              "<dt><b>Edward \"Aides\" Toroshchin</b></dt><dd>Russian translation</dd>"
-                              "<dt><b>Adam \"adamt\" Tulinius</b></dt><dd>Early beta tester and bughunter, Danish translation</dd>"
-                              "<dt><b>Deniz Türkoglu</b></dt><dd>Mac fixes</dd>"
-                              "<dt><b>Frederik M.J. \"freqmod\" Vestre</b></dt><dd>Norwegian translation</dd>"
-                              "<dt><b>Atte Virtanen</b></dt><dd>Finnish translation</dd>"
-                              "<dt><b>Pavel \"int\" Volkovitskiy</b></dt><dd>Early beta tester and bughunter</dd>"
-                              "<dt><b>Roscoe van Wyk</b></dt><dd>Fixes</dd>"
-                              "<dt><b>Zé</b></dt><dd>Portuguese translation</dd>"
-                              "<dt><b>Benjamin \"zbenjamin\" Zeller</b></dt><dd>Windows build system fixes</dd>"
-                              "<dt><b>\"zeugma\"</b></dt><dd>Turkish translation</dd>"
-                              "</dl><br>"
-                              "...and anybody else finding and reporting bugs, giving feedback, helping others and being part of the community!");
+    res = tr("We would like to thank the following contributors (in alphabetical order) and everybody we forgot to mention here:") + "<br><dl>";
+    for (const auto &person : _aboutData->credits()) {
+        res.append("<dt><b>" + person.prettyName() + "</b></dt><dd>" + person.task() + "</dd>");
+    }
+    res.append("</dl><br>" + tr("...and anybody else finding and reporting bugs, giving feedback, helping others and being part of the community!"));
 
     return res;
 }
index d120c57..d54df8c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -25,6 +25,8 @@
 
 #include "ui_aboutdlg.h"
 
+class AboutData;
+
 class AboutDlg : public QDialog
 {
     Q_OBJECT
@@ -39,6 +41,8 @@ private:
     QString authors() const;
     QString contributors() const;
     QString thanksTo() const;
+
+    AboutData *_aboutData;
 };
 
 
index 3b6b8c3..fea9bfa 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index afa7562..8f82798 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d12bcc6..444633a 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 73358b9..764ac25 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3f6ba6d..6b01050 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -18,6 +18,7 @@
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include <QIcon>
 #include <QLayout>
 #include <QKeyEvent>
 #include <QMenu>
@@ -32,7 +33,6 @@
 #include "chatviewsearchcontroller.h"
 #include "chatviewsettings.h"
 #include "client.h"
-#include "iconloader.h"
 #include "multilineedit.h"
 #include "qtui.h"
 #include "settings.h"
@@ -77,16 +77,16 @@ BufferWidget::BufferWidget(QWidget *parent)
 
     Action *zoomInChatview = coll->add<Action>("ZoomInChatView", this, SLOT(zoomIn()));
     zoomInChatview->setText(tr("Zoom In"));
-    zoomInChatview->setIcon(SmallIcon("zoom-in"));
+    zoomInChatview->setIcon(QIcon::fromTheme("zoom-in"));
     zoomInChatview->setShortcut(QKeySequence::ZoomIn);
 
     Action *zoomOutChatview = coll->add<Action>("ZoomOutChatView", this, SLOT(zoomOut()));
-    zoomOutChatview->setIcon(SmallIcon("zoom-out"));
+    zoomOutChatview->setIcon(QIcon::fromTheme("zoom-out"));
     zoomOutChatview->setText(tr("Zoom Out"));
     zoomOutChatview->setShortcut(QKeySequence::ZoomOut);
 
     Action *zoomOriginalChatview = coll->add<Action>("ZoomOriginalChatView", this, SLOT(zoomOriginal()));
-    zoomOriginalChatview->setIcon(SmallIcon("zoom-original"));
+    zoomOriginalChatview->setIcon(QIcon::fromTheme("zoom-original"));
     zoomOriginalChatview->setText(tr("Actual Size"));
     //zoomOriginalChatview->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_0)); // used for RTS switching
 
index 88d5a4e..c245ebc 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index f16fd22..14a7e31 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include <QHeaderView>
 #include <QHBoxLayout>
+#include <QIcon>
 #include <QSpacerItem>
 
 #include "client.h"
 #include "clientirclisthelper.h"
-#include "icon.h"
-#include "iconloader.h"
 
 ChannelListDlg::ChannelListDlg(QWidget *parent)
     : QDialog(parent),
@@ -42,7 +41,7 @@ ChannelListDlg::ChannelListDlg(QWidget *parent)
     _sortFilter.setFilterKeyColumn(-1);
 
     ui.setupUi(this);
-    ui.advancedModeLabel->setPixmap(BarIcon("edit-rename"));
+    ui.advancedModeLabel->setPixmap(QIcon::fromTheme("edit-rename").pixmap(22));
 
     ui.channelListView->setSelectionBehavior(QAbstractItemView::SelectRows);
     ui.channelListView->setSelectionMode(QAbstractItemView::SingleSelection);
@@ -55,7 +54,7 @@ ChannelListDlg::ChannelListDlg(QWidget *parent)
 
     ui.searchChannelsButton->setAutoDefault(false);
 
-    setWindowIcon(Icon("format-list-unordered"));
+    setWindowIcon(QIcon::fromTheme("format-list-unordered"));
 
     connect(ui.advancedModeLabel, SIGNAL(clicked()), this, SLOT(toggleMode()));
     connect(ui.searchChannelsButton, SIGNAL(clicked()), this, SLOT(requestSearch()));
@@ -133,14 +132,14 @@ void ChannelListDlg::setAdvancedMode(bool advanced)
             delete _simpleModeSpacer;
             _simpleModeSpacer = 0;
         }
-        ui.advancedModeLabel->setPixmap(BarIcon("edit-clear-locationbar-rtl"));
+        ui.advancedModeLabel->setPixmap(QIcon::fromTheme("edit-clear-locationbar-rtl", QIcon::fromTheme("edit-clear")).pixmap(16));
     }
     else {
         if (!_simpleModeSpacer) {
             _simpleModeSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
             ui.searchLayout->insertSpacerItem(0, _simpleModeSpacer);
         }
-        ui.advancedModeLabel->setPixmap(BarIcon("edit-rename"));
+        ui.advancedModeLabel->setPixmap(QIcon::fromTheme("edit-rename").pixmap(16));
     }
 
     ui.channelNameLineEdit->clear();
index 61cd139..fda516a 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 117ec10..20dad9d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -23,6 +23,7 @@
 #include <QDesktopServices>
 #include <QFontMetrics>
 #include <QGraphicsSceneMouseEvent>
+#include <QIcon>
 #include <QPainter>
 #include <QPalette>
 #include <QTextLayout>
@@ -35,7 +36,6 @@
 #include "chatlinemodel.h"
 #include "chatview.h"
 #include "contextmenuactionprovider.h"
-#include "iconloader.h"
 #include "mainwin.h"
 #include "qtui.h"
 #include "qtuistyle.h"
@@ -798,7 +798,7 @@ void ContentsChatItem::addActionsToMenu(QMenu *menu, const QPointF &pos)
         switch (click.type()) {
         case Clickable::Url:
             privateData()->activeClickable = click;
-            menu->addAction(SmallIcon("edit-copy"), tr("Copy Link Address"),
+            menu->addAction(QIcon::fromTheme("edit-copy"), tr("Copy Link Address"),
                 &_actionProxy, SLOT(copyLinkToClipboard()))->setData(QVariant::fromValue<void *>(this));
             break;
         case Clickable::Channel:
index e051765..e23fac9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index def2450..81a7ed8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 8f350ba..61b6664 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index bfb1042..5e5dd62 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 7e1a4b4..eb7d8ed 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index eadbfa7..1fff2b5 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e651707..2ff8d4e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index db0c889..b2974dd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 945e401..b0d94e2 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a995ef0..a844e73 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -21,6 +21,7 @@
 #include "chatmonitorview.h"
 
 #include <QAction>
+#include <QIcon>
 #include <QMenu>
 #include <QContextMenuEvent>
 
@@ -29,7 +30,6 @@
 #include "chatitem.h"
 #include "chatscene.h"
 #include "client.h"
-#include "iconloader.h"
 #include "networkmodel.h"
 #include "buffermodel.h"
 #include "messagemodel.h"
@@ -70,7 +70,7 @@ void ChatMonitorView::addActionsToMenu(QMenu *menu, const QPointF &pos)
     }
 
     menu->addSeparator();
-    menu->addAction(SmallIcon("configure"), tr("Configure..."), this, SLOT(showSettingsPage()));
+    menu->addAction(QIcon::fromTheme("configure"), tr("Configure..."), this, SLOT(showSettingsPage()));
 }
 
 
index e58a910..f9c07e5 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 4dfd813..a0d9be3 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 #include <QDesktopServices>
 #include <QDrag>
 #include <QGraphicsSceneMouseEvent>
+#include <QIcon>
 #include <QMenu>
 #include <QMenuBar>
 #include <QMimeData>
 #include <QPersistentModelIndex>
 #include <QUrl>
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  include <KMenuBar>
 #else
 #  include <QMenuBar>
@@ -48,7 +49,6 @@
 #include "clientbacklogmanager.h"
 #include "columnhandleitem.h"
 #include "contextmenuactionprovider.h"
-#include "iconloader.h"
 #include "mainwin.h"
 #include "markerlineitem.h"
 #include "messagefilter.h"
@@ -823,7 +823,7 @@ void ChatScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
     // If we have text selected, insert the Copy Selection as first item
     if (isPosOverSelection(pos)) {
         QAction *sep = menu.insertSeparator(menu.actions().first());
-        QAction *act = new Action(SmallIcon("edit-copy"), tr("Copy Selection"), &menu, this,
+        QAction *act = new Action(QIcon::fromTheme("edit-copy"), tr("Copy Selection"), &menu, this,
             SLOT(selectionToClipboard()), QKeySequence::Copy);
         menu.insertAction(sep, act);
 
@@ -832,7 +832,7 @@ void ChatScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
             searchSelectionText = searchSelectionText.left(_webSearchSelectionTextMaxVisible).append(QString::fromUtf8("…"));
         searchSelectionText = tr("Search '%1'").arg(searchSelectionText);
 
-        menu.addAction(SmallIcon("edit-find"), searchSelectionText, this, SLOT(webSearchOnSelection()));
+        menu.addAction(QIcon::fromTheme("edit-find"), searchSelectionText, this, SLOT(webSearchOnSelection()));
     }
 
     if (QtUi::mainWindow()->menuBar()->isHidden())
index d8c4db9..d950c72 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 20b25e0..7197a24 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 9d7f3a9..26b14e1 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 6d0533a..e0d5ac6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "chatviewsearchbar.h"
 
+#include <QIcon>
+
 #include "action.h"
 #include "actioncollection.h"
-#include "iconloader.h"
 #include "qtui.h"
 
 ChatViewSearchBar::ChatViewSearchBar(QWidget *parent)
     : QWidget(parent)
 {
     ui.setupUi(this);
-    ui.hideButton->setIcon(BarIcon("dialog-close"));
-    ui.searchUpButton->setIcon(SmallIcon("go-up"));
-    ui.searchDownButton->setIcon(SmallIcon("go-down"));
+    ui.hideButton->setIcon(QIcon::fromTheme("dialog-close"));
+    ui.searchUpButton->setIcon(QIcon::fromTheme("go-up"));
+    ui.searchDownButton->setIcon(QIcon::fromTheme("go-down"));
     _searchDelayTimer.setSingleShot(true);
 
     layout()->setContentsMargins(0, 0, 0, 0);
index 3305eb1..d7cb71b 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 27608a5..e21dc8a 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 7fb35c0..66e0908 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -21,7 +21,7 @@
 #ifndef CHATVIEWSEARCHCONTROLLER_H
 #define CHATVIEWSEARCHCONTROLLER_H
 
-#include <QObject>
+#include <QGraphicsItem>
 #include <QHash>
 #include <QPointer>
 #include <QString>
@@ -87,14 +87,10 @@ private:
 
 
 // Highlight Items
-#include <QGraphicsItem>
-
 class SearchHighlightItem : public QObject, public QGraphicsItem
 {
     Q_OBJECT
-#if QT_VERSION >= 0x040600
     Q_INTERFACES(QGraphicsItem)
-#endif
 
 public :
         SearchHighlightItem(QRectF wordRect, QGraphicsItem *parent = 0);
index e718dab..b2e0060 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index c891f0f..08d6cb6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 87dc351..62bd14b 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 69f27ac..855eabd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e1d74fe..9dfbc8c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 #include <QDebug>
 #include <QAbstractButton>
 #include <QFormLayout>
+#include <QIcon>
 #include <QSpinBox>
 
 #include "coreconfigwizard.h"
 #include "coreconnection.h"
-#include "iconloader.h"
 
 CoreConfigWizard::CoreConfigWizard(CoreConnection *connection, const QList<QVariant> &backends, QWidget *parent)
     : QWizard(parent),
@@ -67,7 +67,7 @@ CoreConfigWizard::CoreConfigWizard(CoreConnection *connection, const QList<QVari
     setModal(true);
 
     setWindowTitle(tr("Core Configuration Wizard"));
-    setPixmap(QWizard::LogoPixmap, DesktopIcon("quassel"));
+    setPixmap(QWizard::LogoPixmap, QIcon::fromTheme("quassel", QIcon(":/icons/quassel.png")).pixmap(48));
 
     connect(connection, SIGNAL(coreSetupSuccess()), SLOT(coreSetupSuccess()));
     connect(connection, SIGNAL(coreSetupFailed(QString)), SLOT(coreSetupFailed(QString)));
index 38350bc..d948848 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e277a71..7591025 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  ***************************************************************************/
 
 #include <QDialogButtonBox>
+#include <QIcon>
 #include <QVBoxLayout>
 
 #include "coreconnectdlg.h"
 
-#include "iconloader.h"
 #include "clientsettings.h"
 #include "coreaccountsettingspage.h"
 
@@ -39,7 +39,7 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent) : QDialog(parent)
         _settingsPage->setSelectedAccount(lastAccount);
 
     setWindowTitle(tr("Connect to Core"));
-    setWindowIcon(SmallIcon("network-disconnect"));
+    setWindowIcon(QIcon::fromTheme("network-disconnect"));
 
     QVBoxLayout *layout = new QVBoxLayout(this);
     layout->addWidget(_settingsPage);
index 040d5ec..857dc77 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 77140b8..4ce89c0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -20,8 +20,9 @@
 
 #include "coreconnectionstatuswidget.h"
 
+#include <QIcon>
+
 #include "client.h"
-#include "iconloader.h"
 #include "signalproxy.h"
 
 CoreConnectionStatusWidget::CoreConnectionStatusWidget(CoreConnection *connection, QWidget *parent)
@@ -79,11 +80,11 @@ void CoreConnectionStatusWidget::connectionStateChanged(CoreConnection::Connecti
 {
     if (state >= CoreConnection::Connected) {
         if (coreConnection()->isEncrypted()) {
-            ui.sslLabel->setPixmap(SmallIcon("security-high"));
+            ui.sslLabel->setPixmap(QIcon::fromTheme("security-high").pixmap(16));
             ui.sslLabel->setToolTip(tr("The connection to your core is encrypted with SSL."));
         }
         else {
-            ui.sslLabel->setPixmap(SmallIcon("security-low"));
+            ui.sslLabel->setPixmap(QIcon::fromTheme("security-low").pixmap(16));
             ui.sslLabel->setToolTip(tr("The connection to your core is not encrypted."));
         }
         ui.sslLabel->show();
index b946a2e..68e1cb8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 5d23995..b8a7eb2 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 72b96f5..8b9e0a1 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index c785cb1..6900e04 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e75cd8b..3d7ff81 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 40ca4b6..23bd9f0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 74e99f5..5729d7e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 6f7f6d8..14cdf33 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 85e1a1c..408d4ee 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3e4637e..405f43b 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 93cfe41..28e084c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 4fc0bb8..e3cb0e3 100644 (file)
 
 #include "indicatornotificationbackend.h"
 
+#include <QIcon>
+#include <QImage>
+
 #include <qindicateserver.h>
 #include <qindicateindicator.h>
 
 #include "client.h"
 #include "clientsettings.h"
-#include "iconloader.h"
 #include "mainwin.h"
 #include "networkmodel.h"
 #include "qtui.h"
@@ -108,8 +110,8 @@ void IndicatorNotificationBackend::notify(const Notification &notification)
 
     QModelIndex index = Client::networkModel()->bufferIndex(bufferId);
     QVariant icon = QtUi::style()->bufferViewItemData(index, Qt::DecorationRole);
-    if (icon.canConvert<QPixmap>()) {
-        QImage image = icon.value<QPixmap>().toImage();
+    if (icon.canConvert<QIcon>()) {
+        QImage image = icon.value<QIcon>().pixmap(16).toImage();
         indicator->setIconProperty(image);
     }
 
@@ -175,7 +177,7 @@ IndicatorNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent)
 {
     ui.setupUi(this);
     // FIXME find proper icon (this one is used by the plasmoid as well)
-    ui.enabled->setIcon(SmallIcon("mail-message-new"));
+    ui.enabled->setIcon(QIcon::fromTheme("mail-message-new"));
 
     connect(ui.enabled, SIGNAL(toggled(bool)), SLOT(widgetChanged()));
 }
index 6ac42be..7d3b3e0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "inputwidget.h"
 
+#include <QIcon>
+
 #include "action.h"
 #include "actioncollection.h"
 #include "bufferview.h"
 #include "client.h"
-#include "iconloader.h"
 #include "ircuser.h"
 #include "networkmodel.h"
 #include "qtui.h"
@@ -60,11 +61,11 @@ InputWidget::InputWidget(QWidget *parent)
     ui.inputEdit->setMode(MultiLineEdit::MultiLine);
     ui.inputEdit->setPasteProtectionEnabled(true);
 
-    ui.boldButton->setIcon(SmallIcon("format-text-bold"));
-    ui.italicButton->setIcon(SmallIcon("format-text-italic"));
-    ui.underlineButton->setIcon(SmallIcon("format-text-underline"));
-    ui.textcolorButton->setIcon(SmallIcon("format-text-color"));
-    ui.highlightcolorButton->setIcon(SmallIcon("format-fill-color"));
+    ui.boldButton->setIcon(QIcon::fromTheme("format-text-bold"));
+    ui.italicButton->setIcon(QIcon::fromTheme("format-text-italic"));
+    ui.underlineButton->setIcon(QIcon::fromTheme("format-text-underline"));
+    ui.textcolorButton->setIcon(QIcon::fromTheme("format-text-color"));
+    ui.highlightcolorButton->setIcon(QIcon::fromTheme("format-fill-color"));
     ui.encryptionIconLabel->hide();
 
     _colorMenu = new QMenu();
@@ -470,7 +471,7 @@ void InputWidget::updateNickSelector() const
     ui.ownNick->addItems(nicks);
 
     if (me && me->isAway())
-        ui.ownNick->setItemData(nickIdx, SmallIcon("user-away"), Qt::DecorationRole);
+        ui.ownNick->setItemData(nickIdx, QIcon::fromTheme("user-away"), Qt::DecorationRole);
 
     ui.ownNick->setCurrentIndex(nickIdx);
 }
@@ -589,7 +590,7 @@ void InputWidget::colorChosen(QAction *action)
         mergeFormatOnSelection(fmt);
     }
     ui.textcolorButton->setDefaultAction(action);
-    ui.textcolorButton->setIcon(createColorToolButtonIcon(SmallIcon("format-text-color"), color));
+    ui.textcolorButton->setIcon(createColorToolButtonIcon(QIcon::fromTheme("format-text-color"), color));
 }
 
 
@@ -609,7 +610,7 @@ void InputWidget::colorHighlightChosen(QAction *action)
         mergeFormatOnSelection(fmt);
     }
     ui.highlightcolorButton->setDefaultAction(action);
-    ui.highlightcolorButton->setIcon(createColorToolButtonIcon(SmallIcon("format-fill-color"), color));
+    ui.highlightcolorButton->setIcon(createColorToolButtonIcon(QIcon::fromTheme("format-fill-color"), color));
 }
 
 
index f6bdf2e..cf36c13 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a73ad51..84fb928 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index bd8b9d1..a2805c3 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 20d84d9..41d5638 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include <KNotification>
 #include <KNotifyConfigWidget>
+#include <QIcon>
 #include <QTextDocument>
 #include <QVBoxLayout>
 
 #include "knotificationbackend.h"
 
 #include "client.h"
-#include "icon.h"
-#include "iconloader.h"
 #include "mainwin.h"
 #include "networkmodel.h"
 #include "qtui.h"
@@ -61,7 +60,7 @@ void KNotificationBackend::notify(const Notification &n)
 #else
     QString message = QString("<b>&lt;%1&gt;</b> %2").arg(n.sender, n.message.toHtmlEscaped());
 #endif
-    KNotification *notification = KNotification::event(type, message, DesktopIcon("dialog-information"), QtUi::mainWindow(),
+    KNotification *notification = KNotification::event(type, message, QIcon::fromTheme("dialog-information").pixmap(48), QtUi::mainWindow(),
         KNotification::RaiseWidgetOnActivation
         |KNotification::CloseWhenWidgetActivated
         |KNotification::CloseOnTimeout);
index d9c8c9d..2f21c9e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 56139e3..16700d6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This file is free software; you can redistribute it and/or modify     *
@@ -29,7 +29,7 @@ LegacySystemTray::LegacySystemTray(QWidget *parent)
     _blinkState(false),
     _lastMessageId(0)
 {
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
     _trayIcon = new QSystemTrayIcon(associatedWidget());
 #else
     _trayIcon = new KSystemTrayIcon(associatedWidget());
@@ -142,7 +142,7 @@ void LegacySystemTray::setState(State state_)
 }
 
 
-Icon LegacySystemTray::stateIcon() const
+QIcon LegacySystemTray::stateIcon() const
 {
     if (mode() == Legacy && state() == NeedsAttention && !_blinkState)
         return SystemTray::stateIcon(Active);
index 635554f..f366fbd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This file is free software; you can redistribute it and/or modify     *
 
 #ifndef QT_NO_SYSTEMTRAYICON
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  include <KSystemTrayIcon>
 #else
 #  include <QSystemTrayIcon>
 #endif
 
+#include <QIcon>
 #include <QTimer>
 
 #include "systemtray.h"
@@ -44,7 +45,7 @@ public:
 
     virtual bool isVisible() const;
     virtual inline bool isSystemTrayAvailable() const;
-    virtual Icon stateIcon() const; // overriden to care about blinkState
+    virtual QIcon stateIcon() const; // overriden to care about blinkState
 
 public slots:
     virtual void setState(State state);
@@ -69,7 +70,7 @@ private:
     bool _blinkState;
     uint _lastMessageId;
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     KSystemTrayIcon *_trayIcon;
 #else
     QSystemTrayIcon *_trayIcon;
index eb59b2a..82387ab 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 46d2389..0557f8e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 73124aa..cd4a5fe 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "mainwin.h"
 
+#include <QIcon>
 #include <QMenuBar>
 #include <QMessageBox>
 #include <QStatusBar>
 #include <QToolBar>
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  include <KAction>
 #  include <KActionCollection>
 #  include <KHelpMenu>
@@ -74,7 +75,6 @@
 #include "debuglogwidget.h"
 #include "debugmessagemodelfilter.h"
 #include "flatproxymodel.h"
-#include "iconloader.h"
 #include "inputwidget.h"
 #include "irclistmodel.h"
 #include "ircconnectionwizard.h"
@@ -93,7 +93,7 @@
 #include "topicwidget.h"
 #include "verticaldock.h"
 
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
 #  ifdef HAVE_PHONON
 #    include "phononnotificationbackend.h"
 #  endif
 #  endif
 #  include "systraynotificationbackend.h"
 #  include "taskbarnotificationbackend.h"
-#else /* HAVE_KDE */
+#else /* HAVE_KDE4 */
 #  include "knotificationbackend.h"
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
 
 #ifdef HAVE_SSL
 #  include "sslinfodlg.h"
 #include "settingspages/notificationssettingspage.h"
 #include "settingspages/topicwidgetsettingspage.h"
 
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
 #  include "settingspages/shortcutssettingspage.h"
 #endif
 
 MainWin::MainWin(QWidget *parent)
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     : KMainWindow(parent),
     _kHelpMenu(new KHelpMenu(this, KGlobal::mainComponent().aboutData())),
 #else
@@ -214,7 +214,7 @@ void MainWin::init()
     setupTitleSetter();
     setupHotList();
 
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
 #  ifdef HAVE_PHONON
     QtUi::registerNotificationBackend(new PhononNotificationBackend(this));
 #  endif
@@ -226,9 +226,9 @@ void MainWin::init()
 
     QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this));
 
-#else /* HAVE_KDE */
+#else /* HAVE_KDE4 */
     QtUi::registerNotificationBackend(new KNotificationBackend(this));
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
 
 #ifdef HAVE_INDICATEQT
     QtUi::registerNotificationBackend(new IndicatorNotificationBackend(this));
@@ -249,7 +249,7 @@ void MainWin::init()
 
     setDisconnectedState(); // Disable menus and stuff
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     setAutoSaveSettings();
 #endif
 
@@ -295,7 +295,7 @@ void MainWin::saveStateToSettings(UiSettings &s)
     if (lastBufId.isValid())
         s.setValue("LastUsedBufferId", lastBufId.toInt());
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     saveAutoSaveSettings();
 #endif
 }
@@ -307,7 +307,7 @@ void MainWin::restoreStateFromSettings(UiSettings &s)
     _normalPos = s.value("MainWinPos", pos()).toPoint();
     bool maximized = s.value("MainWinMaximized", false).toBool();
 
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
     restoreGeometry(s.value("MainWinGeometry").toByteArray());
 
     if (maximized) {
@@ -337,17 +337,11 @@ void MainWin::restoreStateFromSettings(UiSettings &s)
 
 void MainWin::updateIcon()
 {
-#ifdef Q_OS_MAC
-    const int size = 128;
-#else
-    const int size = 48;
-#endif
-
-    QPixmap icon;
+    QIcon icon;
     if (Client::isConnected())
-        icon = DesktopIcon("quassel", size);
+        icon = QIcon::fromTheme("quassel", QIcon(":/icons/quassel-128.png"));
     else
-        icon = DesktopIcon("quassel-inactive", size);
+        icon = QIcon::fromTheme("quassel-inactive", QIcon(":/icons/quassel-128.png"));
     setWindowIcon(icon);
     qApp->setWindowIcon(icon);
 }
@@ -357,16 +351,16 @@ void MainWin::setupActions()
 {
     ActionCollection *coll = QtUi::actionCollection("General", tr("General"));
     // File
-    coll->addAction("ConnectCore", new Action(SmallIcon("network-connect"), tr("&Connect to Core..."), coll,
+    coll->addAction("ConnectCore", new Action(QIcon::fromTheme("network-connect"), tr("&Connect to Core..."), coll,
             this, SLOT(showCoreConnectionDlg())));
-    coll->addAction("DisconnectCore", new Action(SmallIcon("network-disconnect"), tr("&Disconnect from Core"), coll,
+    coll->addAction("DisconnectCore", new Action(QIcon::fromTheme("network-disconnect"), tr("&Disconnect from Core"), coll,
             Client::instance(), SLOT(disconnectFromCore())));
-    coll->addAction("CoreInfo", new Action(SmallIcon("help-about"), tr("Core &Info..."), coll,
+    coll->addAction("CoreInfo", new Action(QIcon::fromTheme("help-about"), tr("Core &Info..."), coll,
             this, SLOT(showCoreInfoDlg())));
-    coll->addAction("ConfigureNetworks", new Action(SmallIcon("configure"), tr("Configure &Networks..."), coll,
+    coll->addAction("ConfigureNetworks", new Action(QIcon::fromTheme("configure"), tr("Configure &Networks..."), coll,
             this, SLOT(on_actionConfigureNetworks_triggered())));
     // FIXME: use QKeySequence::Quit once we depend on Qt 4.6
-    coll->addAction("Quit", new Action(SmallIcon("application-exit"), tr("&Quit"), coll,
+    coll->addAction("Quit", new Action(QIcon::fromTheme("application-exit"), tr("&Quit"), coll,
             this, SLOT(quit()), Qt::CTRL + Qt::Key_Q));
 
     // View
@@ -377,43 +371,43 @@ void MainWin::setupActions()
     lockAct->setCheckable(true);
     connect(lockAct, SIGNAL(toggled(bool)), SLOT(on_actionLockLayout_toggled(bool)));
 
-    coll->addAction("ToggleSearchBar", new Action(SmallIcon("edit-find"), tr("Show &Search Bar"), coll,
+    coll->addAction("ToggleSearchBar", new Action(QIcon::fromTheme("edit-find"), tr("Show &Search Bar"), coll,
             0, 0, QKeySequence::Find))->setCheckable(true);
     coll->addAction("ShowAwayLog", new Action(tr("Show Away Log"), coll,
             this, SLOT(showAwayLog())));
-    coll->addAction("ToggleMenuBar", new Action(SmallIcon("show-menu"), tr("Show &Menubar"), coll,
+    coll->addAction("ToggleMenuBar", new Action(QIcon::fromTheme("show-menu"), tr("Show &Menubar"), coll,
             0, 0, QKeySequence(Qt::CTRL + Qt::Key_M)))->setCheckable(true);
 
     coll->addAction("ToggleStatusBar", new Action(tr("Show Status &Bar"), coll,
             0, 0))->setCheckable(true);
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     QAction *fullScreenAct = KStandardAction::fullScreen(this, SLOT(onFullScreenToggled()), this, coll);
 #else
-    QAction *fullScreenAct = new Action(SmallIcon("view-fullscreen"), tr("&Full Screen Mode"), coll,
+    QAction *fullScreenAct = new Action(QIcon::fromTheme("view-fullscreen"), tr("&Full Screen Mode"), coll,
         this, SLOT(onFullScreenToggled()), QKeySequence(Qt::Key_F11));
     fullScreenAct->setCheckable(true);
 #endif
     coll->addAction("ToggleFullScreen", fullScreenAct);
 
     // Settings
-    QAction *configureShortcutsAct = new Action(SmallIcon("configure-shortcuts"), tr("Configure &Shortcuts..."), coll,
+    QAction *configureShortcutsAct = new Action(QIcon::fromTheme("configure-shortcuts"), tr("Configure &Shortcuts..."), coll,
         this, SLOT(showShortcutsDlg()));
     configureShortcutsAct->setMenuRole(QAction::NoRole);
     coll->addAction("ConfigureShortcuts", configureShortcutsAct);
 
   #ifdef Q_OS_MAC
-    QAction *configureQuasselAct = new Action(SmallIcon("configure"), tr("&Configure Quassel..."), coll,
+    QAction *configureQuasselAct = new Action(QIcon::fromTheme("configure"), tr("&Configure Quassel..."), coll,
         this, SLOT(showSettingsDlg()));
     configureQuasselAct->setMenuRole(QAction::PreferencesRole);
   #else
-    QAction *configureQuasselAct = new Action(SmallIcon("configure"), tr("&Configure Quassel..."), coll,
+    QAction *configureQuasselAct = new Action(QIcon::fromTheme("configure"), tr("&Configure Quassel..."), coll,
         this, SLOT(showSettingsDlg()), QKeySequence(Qt::Key_F7));
   #endif
     coll->addAction("ConfigureQuassel", configureQuasselAct);
 
     // Help
-    QAction *aboutQuasselAct = new Action(SmallIcon("quassel"), tr("&About Quassel"), coll,
+    QAction *aboutQuasselAct = new Action(QIcon(":/icons/quassel.png"), tr("&About Quassel"), coll,
         this, SLOT(showAboutDlg()));
     aboutQuasselAct->setMenuRole(QAction::AboutRole);
     coll->addAction("AboutQuassel", aboutQuasselAct);
@@ -422,17 +416,17 @@ void MainWin::setupActions()
         qApp, SLOT(aboutQt()));
     aboutQtAct->setMenuRole(QAction::AboutQtRole);
     coll->addAction("AboutQt", aboutQtAct);
-    coll->addAction("DebugNetworkModel", new Action(SmallIcon("tools-report-bug"), tr("Debug &NetworkModel"), coll,
+    coll->addAction("DebugNetworkModel", new Action(QIcon::fromTheme("tools-report-bug"), tr("Debug &NetworkModel"), coll,
             this, SLOT(on_actionDebugNetworkModel_triggered())));
-    coll->addAction("DebugBufferViewOverlay", new Action(SmallIcon("tools-report-bug"), tr("Debug &BufferViewOverlay"), coll,
+    coll->addAction("DebugBufferViewOverlay", new Action(QIcon::fromTheme("tools-report-bug"), tr("Debug &BufferViewOverlay"), coll,
             this, SLOT(on_actionDebugBufferViewOverlay_triggered())));
-    coll->addAction("DebugMessageModel", new Action(SmallIcon("tools-report-bug"), tr("Debug &MessageModel"), coll,
+    coll->addAction("DebugMessageModel", new Action(QIcon::fromTheme("tools-report-bug"), tr("Debug &MessageModel"), coll,
             this, SLOT(on_actionDebugMessageModel_triggered())));
-    coll->addAction("DebugHotList", new Action(SmallIcon("tools-report-bug"), tr("Debug &HotList"), coll,
+    coll->addAction("DebugHotList", new Action(QIcon::fromTheme("tools-report-bug"), tr("Debug &HotList"), coll,
             this, SLOT(on_actionDebugHotList_triggered())));
-    coll->addAction("DebugLog", new Action(SmallIcon("tools-report-bug"), tr("Debug &Log"), coll,
+    coll->addAction("DebugLog", new Action(QIcon::fromTheme("tools-report-bug"), tr("Debug &Log"), coll,
             this, SLOT(on_actionDebugLog_triggered())));
-    coll->addAction("ReloadStyle", new Action(SmallIcon("view-refresh"), tr("Reload Stylesheet"), coll,
+    coll->addAction("ReloadStyle", new Action(QIcon::fromTheme("view-refresh"), tr("Reload Stylesheet"), coll,
             QtUi::style(), SLOT(reload()), QKeySequence::Refresh));
 
     coll->addAction("HideCurrentBuffer", new Action(tr("Hide Current Buffer"), coll,
@@ -496,13 +490,13 @@ void MainWin::setupActions()
             QKeySequence(jumpModifier + Qt::Key_9)))->setProperty("Index", 9);
 
     // Buffer navigation
-    coll->addAction("NextBufferView", new Action(SmallIcon("go-next-view"), tr("Activate Next Chat List"), coll,
+    coll->addAction("NextBufferView", new Action(QIcon::fromTheme("go-next-view"), tr("Activate Next Chat List"), coll,
             this, SLOT(nextBufferView()), QKeySequence(QKeySequence::Forward)));
-    coll->addAction("PreviousBufferView", new Action(SmallIcon("go-previous-view"), tr("Activate Previous Chat List"), coll,
+    coll->addAction("PreviousBufferView", new Action(QIcon::fromTheme("go-previous-view"), tr("Activate Previous Chat List"), coll,
             this, SLOT(previousBufferView()), QKeySequence::Back));
-    coll->addAction("NextBuffer", new Action(SmallIcon("go-down"), tr("Go to Next Chat"), coll,
+    coll->addAction("NextBuffer", new Action(QIcon::fromTheme("go-down"), tr("Go to Next Chat"), coll,
             this, SLOT(nextBuffer()), QKeySequence(Qt::ALT + Qt::Key_Down)));
-    coll->addAction("PreviousBuffer", new Action(SmallIcon("go-up"), tr("Go to Previous Chat"), coll,
+    coll->addAction("PreviousBuffer", new Action(QIcon::fromTheme("go-up"), tr("Go to Previous Chat"), coll,
             this, SLOT(previousBuffer()), QKeySequence(Qt::ALT + Qt::Key_Up)));
 }
 
@@ -548,7 +542,7 @@ void MainWin::setupMenus()
     _viewMenu->addAction(coll->action("LockLayout"));
 
     _settingsMenu = menuBar()->addMenu(tr("&Settings"));
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     _settingsMenu->addAction(KStandardAction::configureNotifications(this, SLOT(showNotificationsDlg()), this));
     _settingsMenu->addAction(KStandardAction::keyBindings(this, SLOT(showShortcutsDlg()), this));
 #else
@@ -558,13 +552,13 @@ void MainWin::setupMenus()
 
     _helpMenu = menuBar()->addMenu(tr("&Help"));
     _helpMenu->addAction(coll->action("AboutQuassel"));
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
     _helpMenu->addAction(coll->action("AboutQt"));
 #else
     _helpMenu->addAction(KStandardAction::aboutKDE(_kHelpMenu, SLOT(aboutKDE()), this));
 #endif
     _helpMenu->addSeparator();
-    _helpDebugMenu = _helpMenu->addMenu(SmallIcon("tools-report-bug"), tr("Debug"));
+    _helpDebugMenu = _helpMenu->addMenu(QIcon::fromTheme("tools-report-bug"), tr("Debug"));
     _helpDebugMenu->addAction(coll->action("DebugNetworkModel"));
     _helpDebugMenu->addAction(coll->action("DebugBufferViewOverlay"));
     _helpDebugMenu->addAction(coll->action("DebugMessageModel"));
@@ -1004,7 +998,7 @@ void MainWin::setupToolBars()
     setUnifiedTitleAndToolBarOnMac(true);
 #endif
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     _mainToolBar = new KToolBar("MainToolBar", this, Qt::TopToolBarArea, false, true, true);
 #else
     _mainToolBar = new QToolBar(this);
@@ -1369,7 +1363,7 @@ void MainWin::showAboutDlg()
 
 void MainWin::showShortcutsDlg()
 {
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     KShortcutsDialog dlg(KShortcutsEditor::AllActions, KShortcutsEditor::LetterShortcutsDisallowed, this);
     foreach(KActionCollection *coll, QtUi::actionCollections())
     dlg.addCollection(coll, coll->property("Category").toString());
@@ -1397,7 +1391,7 @@ void MainWin::onFullScreenToggled()
     if (!action)
         return;
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     KToggleFullScreenAction *kAct = static_cast<KToggleFullScreenAction *>(action);
     kAct->setFullScreen(this, kAct->isChecked());
 #else
@@ -1564,7 +1558,7 @@ void MainWin::clientNetworkUpdated()
 
     switch (net->connectionState()) {
     case Network::Initialized:
-        action->setIcon(SmallIcon("network-connect"));
+        action->setIcon(QIcon::fromTheme("network-connect"));
         // if we have no currently selected buffer, jump to the first connecting statusbuffer
         if (!bufferWidget()->currentBuffer().isValid()) {
             QModelIndex idx = Client::networkModel()->networkIndex(net->networkId());
@@ -1575,10 +1569,10 @@ void MainWin::clientNetworkUpdated()
         }
         break;
     case Network::Disconnected:
-        action->setIcon(SmallIcon("network-disconnect"));
+        action->setIcon(QIcon::fromTheme("network-disconnect"));
         break;
     default:
-        action->setIcon(SmallIcon("network-wired"));
+        action->setIcon(QIcon::fromTheme("network-wired"));
     }
 }
 
index 0840037..30e5726 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -21,7 +21,7 @@
 #ifndef MAINWIN_H_
 #define MAINWIN_H_
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  include <KMainWindow>
 #else
 #  include <QMainWindow>
@@ -56,7 +56,7 @@ class KHelpMenu;
 
 //!\brief The main window of Quassel's QtUi.
 class MainWin
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     : public KMainWindow
 {
 #else
@@ -169,7 +169,7 @@ signals:
     void disconnectFromCore();
 
 private:
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     KHelpMenu *_kHelpMenu;
 #endif
 
index 6faa79a..171291c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 0981a09..e94ea78 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 12a89d8..a0ddbc0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -31,9 +31,9 @@ MonolithicApplication::MonolithicApplication(int &argc, char **argv)
     _internalInitDone(false)
 {
     _internal = new CoreApplicationInternal(); // needed for parser options
-#if defined(HAVE_KDE) || defined(Q_OS_MAC)
+#if defined(HAVE_KDE4) || defined(Q_OS_MAC)
     disableCrashhandler();
-#endif /* HAVE_KDE || Q_OS_MAC */
+#endif /* HAVE_KDE4 || Q_OS_MAC */
     setRunMode(Quassel::Monolithic);
 }
 
index 302a39d..6213ef9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2e6ac94..67415c8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 397618b..47883bc 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 5f8d7a8..d5af971 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a3b8436..1b7253f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 59513bf..6710c92 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -19,6 +19,7 @@
  ***************************************************************************/
 
 #include <QFileDialog>
+#include <QIcon>
 #include <QUrl>
 
 #include <phonon/mediaobject.h>
@@ -27,7 +28,6 @@
 #include "phononnotificationbackend.h"
 
 #include "clientsettings.h"
-#include "iconloader.h"
 #include "mainwin.h"
 #include "qtui.h"
 
@@ -112,9 +112,9 @@ PhononNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent)
 {
     ui.setupUi(this);
     _audioAvailable = !Phonon::BackendCapabilities::availableAudioOutputDevices().isEmpty();
-    ui.enabled->setIcon(SmallIcon("media-playback-start"));
-    ui.play->setIcon(SmallIcon("media-playback-start"));
-    ui.open->setIcon(SmallIcon("document-open"));
+    ui.enabled->setIcon(QIcon::fromTheme("media-playback-start"));
+    ui.play->setIcon(QIcon::fromTheme("media-playback-start"));
+    ui.open->setIcon(QIcon::fromTheme("document-open"));
 
     connect(ui.enabled, SIGNAL(toggled(bool)), SLOT(widgetChanged()));
     connect(ui.filename, SIGNAL(textChanged(const QString &)), SLOT(widgetChanged()));
index ca44986..26c08a2 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e65dfae..0e63780 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a868ec3..20c0d53 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index cd95678..a279442 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "qtuiapplication.h"
 
+#include <QIcon>
 #include <QStringList>
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  include <KStandardDirs>
 #endif
 
@@ -33,7 +34,7 @@
 #include "qtuisettings.h"
 
 QtUiApplication::QtUiApplication(int &argc, char **argv)
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     : KApplication(),
 #else
     : QApplication(argc, argv),
@@ -41,7 +42,7 @@ QtUiApplication::QtUiApplication(int &argc, char **argv)
     Quassel(),
     _aboutToQuit(false)
 {
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     Q_UNUSED(argc); Q_UNUSED(argv);
 
     // We need to setup KDE's data dirs
@@ -51,15 +52,15 @@ QtUiApplication::QtUiApplication(int &argc, char **argv)
     dataDirs.append(":/data/");
     setDataDirPaths(dataDirs);
 
-#else /* HAVE_KDE */
+#else /* HAVE_KDE4 */
 
     setDataDirPaths(findDataDirPaths());
 
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
 
-#if defined(HAVE_KDE) || defined(Q_OS_MAC)
+#if defined(HAVE_KDE4) || defined(Q_OS_MAC)
     disableCrashhandler();
-#endif /* HAVE_KDE || Q_OS_MAC */
+#endif /* HAVE_KDE4 || Q_OS_MAC */
     setRunMode(Quassel::ClientOnly);
 
 #if QT_VERSION < 0x050000
@@ -117,6 +118,13 @@ bool QtUiApplication::init()
             return false;
         }
 
+        // Set the icon theme
+        if (Quassel::isOptionSet("icontheme"))
+            QIcon::setThemeName(Quassel::optionValue("icontheme"));
+        else if (QIcon::themeName().isEmpty())
+            // Some platforms don't set a default icon theme; chances are we can find our bundled Oxygen theme though
+            QIcon::setThemeName("oxygen");
+
         // session resume
         QtUi *gui = new QtUi();
         Client::init(gui);
index e2da795..567d482 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -21,7 +21,7 @@
 #ifndef QTUIAPPLICATION_H_
 #define QTUIAPPLICATION_H_
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  include <KApplication>
 #else
 #  include <QApplication>
@@ -34,7 +34,7 @@
 
 class QtUi;
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 class QtUiApplication : public KApplication, public Quassel
 {
 #else
index 6a9f3b5..68690f8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index c918d8f..292ad58 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index aa0af3e..90264ff 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 49d05cc..8aea069 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2ec8a7e..80485b0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 868b270..da5012b 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3c09f83..287a188 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 99aa649..9e888e5 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 309f140..74871c4 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include <QIcon>
 #include <QMessageBox>
 #include <QPushButton>
 
 #include "settingsdlg.h"
 
 #include "client.h"
-#include "iconloader.h"
 
 SettingsDlg::SettingsDlg(QWidget *parent)
     : QDialog(parent),
@@ -33,7 +33,7 @@ SettingsDlg::SettingsDlg(QWidget *parent)
     ui.setupUi(this);
     setModal(true);
     setAttribute(Qt::WA_DeleteOnClose, true);
-    setWindowIcon(SmallIcon("configure"));
+    setWindowIcon(QIcon::fromTheme("configure"));
 
     updateGeometry();
 
index 6279a8d..b4ca90e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index c9c3d0b..2acccb9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include <QIcon>
 #include <QMessageBox>
 #include <QPushButton>
 
 #include "settingspagedlg.h"
 
-#include "iconloader.h"
-
 SettingsPageDlg::SettingsPageDlg(SettingsPage *page, QWidget *parent)
     : QDialog(parent)
 {
@@ -37,7 +36,7 @@ SettingsPageDlg::SettingsPageDlg(SettingsPage *page, QWidget *parent)
 
     ui.pageTitle->setText(page->title());
     setWindowTitle(tr("Configure %1").arg(page->title()));
-    setWindowIcon(SmallIcon("configure"));
+    setWindowIcon(QIcon::fromTheme("configure"));
 
     // make the scrollarea behave sanely
     ui.settingsFrame->setWidgetResizable(true);
index 0141672..c7b5209 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d909b47..46daed8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3a8e7b9..63a0ac8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1f9d679..15127e0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 #include "aliasessettingspage.h"
 
 #include <QHeaderView>
+#include <QIcon>
 #include <QItemSelectionModel>
 
-#include "iconloader.h"
-
 AliasesSettingsPage::AliasesSettingsPage(QWidget *parent)
     : SettingsPage(tr("IRC"), tr("Aliases"), parent)
 {
     ui.setupUi(this);
-    ui.newAliasButton->setIcon(SmallIcon("list-add"));
-    ui.deleteAliasButton->setIcon(SmallIcon("edit-delete"));
+    ui.newAliasButton->setIcon(QIcon::fromTheme("list-add"));
+    ui.deleteAliasButton->setIcon(QIcon::fromTheme("edit-delete"));
 
     ui.aliasesView->setSelectionBehavior(QAbstractItemView::SelectRows);
     ui.aliasesView->setSelectionMode(QAbstractItemView::SingleSelection);
index 0180604..74def75 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2935feb..0b61893 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index ca3eda6..e6433d6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index f06a0d2..1216f11 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 160bcd6..e739ef5 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3207075..a3308f9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "bufferviewsettingspage.h"
 
+#include <QIcon>
 #include <QMessageBox>
 
 #include "client.h"
-#include "iconloader.h"
 #include "network.h"
 #include "bufferviewconfig.h"
 #include "bufferviewfilter.h"
@@ -43,9 +43,9 @@ BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent)
     if (!(Client::coreFeatures() & Quassel::HideInactiveNetworks))
         ui.hideInactiveNetworks->hide();
 
-    ui.renameBufferView->setIcon(SmallIcon("edit-rename"));
-    ui.addBufferView->setIcon(SmallIcon("list-add"));
-    ui.deleteBufferView->setIcon(SmallIcon("edit-delete"));
+    ui.renameBufferView->setIcon(QIcon::fromTheme("edit-rename"));
+    ui.addBufferView->setIcon(QIcon::fromTheme("list-add"));
+    ui.deleteBufferView->setIcon(QIcon::fromTheme("edit-delete"));
 
     reset();
 
index 91902bd..9c81e74 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 535c987..0c3819f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "chatmonitorsettingspage.h"
 
+#include <QIcon>
+
 #include "client.h"
 #include "networkmodel.h"
 #include "bufferviewconfig.h"
 #include "buffermodel.h"
 #include "bufferview.h"
 #include "bufferviewfilter.h"
-#include "iconloader.h"
 #include "chatviewsettings.h"
 
 #include <QVariant>
@@ -36,8 +37,8 @@ ChatMonitorSettingsPage::ChatMonitorSettingsPage(QWidget *parent)
 {
     ui.setupUi(this);
 
-    ui.activateBuffer->setIcon(SmallIcon("go-next"));
-    ui.deactivateBuffer->setIcon(SmallIcon("go-previous"));
+    ui.activateBuffer->setIcon(QIcon::fromTheme("go-next"));
+    ui.deactivateBuffer->setIcon(QIcon::fromTheme("go-previous"));
 
     // setup available buffers config (for the bufferview on the left)
     _configAvailable = new BufferViewConfig(-667, this);
index b76b872..a41b266 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 8a0939f..9106613 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 12c2db3..b135161 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3c86c6a..c517fb6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e71f25e..3c9d41a 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index b7c1064..973737c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "coreaccountsettingspage.h"
 
+#include <QIcon>
+
 #include "client.h"
 #include "clientsettings.h"
 #include "coreaccountmodel.h"
-#include "iconloader.h"
 
 CoreAccountSettingsPage::CoreAccountSettingsPage(QWidget *parent)
     : SettingsPage(tr("Remote Cores"), QString(), parent),
@@ -33,9 +34,9 @@ CoreAccountSettingsPage::CoreAccountSettingsPage(QWidget *parent)
 {
     ui.setupUi(this);
     initAutoWidgets();
-    ui.addAccountButton->setIcon(SmallIcon("list-add"));
-    ui.editAccountButton->setIcon(SmallIcon("document-edit"));
-    ui.deleteAccountButton->setIcon(SmallIcon("edit-delete"));
+    ui.addAccountButton->setIcon(QIcon::fromTheme("list-add"));
+    ui.editAccountButton->setIcon(QIcon::fromTheme("document-edit"));
+    ui.deleteAccountButton->setIcon(QIcon::fromTheme("edit-delete"));
 
     _model = new CoreAccountModel(Client::coreAccountModel(), this);
     _filteredModel = new FilteredCoreAccountModel(_model, this);
index 2489f72..4bdd6b0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 09357a2..d73c010 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -24,13 +24,10 @@ CoreConnectionSettingsPage::CoreConnectionSettingsPage(QWidget *parent)
     : SettingsPage(tr("Remote Cores"), tr("Connection"), parent)
 {
     ui.setupUi(this);
-#ifndef HAVE_KDE
-    ui.useSolid->hide();
-#endif
 
     initAutoWidgets();
 
-    connect(ui.useSolid, SIGNAL(toggled(bool)), SLOT(widgetHasChanged()));
+    connect(ui.useQNetworkConfigurationManager, SIGNAL(toggled(bool)), SLOT(widgetHasChanged()));
     connect(ui.usePingTimeout, SIGNAL(toggled(bool)), SLOT(widgetHasChanged()));
     connect(ui.useNoTimeout, SIGNAL(toggled(bool)), SLOT(widgetHasChanged()));
 }
@@ -49,11 +46,7 @@ void CoreConnectionSettingsPage::widgetHasChanged()
 
 void CoreConnectionSettingsPage::defaults()
 {
-#ifdef HAVE_KDE
-    setRadioButtons(CoreConnectionSettings::UseSolid);
-#else
-    setRadioButtons(CoreConnectionSettings::UsePingTimeout);
-#endif
+    setRadioButtons(CoreConnectionSettings::UseQNetworkConfigurationManager);
 
     SettingsPage::defaults();
 }
@@ -80,11 +73,9 @@ void CoreConnectionSettingsPage::save()
 void CoreConnectionSettingsPage::setRadioButtons(CoreConnectionSettings::NetworkDetectionMode mode)
 {
     switch (mode) {
-#ifdef HAVE_KDE
-    case CoreConnectionSettings::UseSolid:
-        ui.useSolid->setChecked(true);
+    case CoreConnectionSettings::UseQNetworkConfigurationManager:
+        ui.useQNetworkConfigurationManager->setChecked(true);
         break;
-#endif
     case CoreConnectionSettings::UsePingTimeout:
         ui.usePingTimeout->setChecked(true);
         break;
@@ -96,10 +87,8 @@ void CoreConnectionSettingsPage::setRadioButtons(CoreConnectionSettings::Network
 
 CoreConnectionSettings::NetworkDetectionMode CoreConnectionSettingsPage::modeFromRadioButtons() const
 {
-#ifdef HAVE_KDE
-    if (ui.useSolid->isChecked())
-        return CoreConnectionSettings::UseSolid;
-#endif
+    if (ui.useQNetworkConfigurationManager->isChecked())
+        return CoreConnectionSettings::UseQNetworkConfigurationManager;
     if (ui.usePingTimeout->isChecked())
         return CoreConnectionSettings::UsePingTimeout;
 
index 060ebfa..a1a7f79 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 0e0308d..1589184 100644 (file)
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>446</width>
+    <width>476</width>
     <height>465</height>
    </rect>
   </property>
      </property>
      <layout class="QVBoxLayout" name="verticalLayout">
       <item>
-       <widget class="QRadioButton" name="useSolid">
+       <widget class="QRadioButton" name="useQNetworkConfigurationManager">
         <property name="toolTip">
-         <string>Rely on KDE's hardware layer to detect if we're online. Recommended for most KDE users</string>
+         <string>Rely on Qt's network configuration manager to detect if we're online</string>
         </property>
         <property name="text">
-         <string>Use KDE's network status detection (via Solid)</string>
+         <string>Automatic</string>
         </property>
         <property name="checked">
          <bool>false</bool>
      <item>
       <widget class="QSpinBox" name="reconnectInterval">
        <property name="toolTip">
-        <string>Actively ping the remote core and disconnect if we didn't get a reply after a certain time</string>
+        <string>Interval between consecutive connection attempts</string>
        </property>
        <property name="suffix">
         <string> seconds</string>
    </item>
   </layout>
  </widget>
+ <tabstops>
+  <tabstop>useQNetworkConfigurationManager</tabstop>
+  <tabstop>usePingTimeout</tabstop>
+  <tabstop>pingTimeout</tabstop>
+  <tabstop>useNoTimeout</tabstop>
+  <tabstop>autoReconnect</tabstop>
+  <tabstop>reconnectInterval</tabstop>
+ </tabstops>
  <resources/>
  <connections>
   <connection>
index fb0976a..2fe2a0b 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -252,9 +252,7 @@ void HighlightSettingsPage::save()
     NotificationSettings notificationSettings;
     notificationSettings.setHighlightList(highlightList);
 
-    NotificationSettings::HighlightNickType highlightNickType;
-    if (ui.highlightNoNick->isChecked())
-        highlightNickType = NotificationSettings::NoNick;
+    NotificationSettings::HighlightNickType highlightNickType = NotificationSettings::NoNick;
     if (ui.highlightCurrentNick->isChecked())
         highlightNickType = NotificationSettings::CurrentNick;
     if (ui.highlightAllNicks->isChecked())
@@ -279,18 +277,18 @@ bool HighlightSettingsPage::testHasChanged()
 {
     NotificationSettings notificationSettings;
 
-    NotificationSettings::HighlightNickType highlightNickType;
-    if (ui.highlightNoNick->isChecked())
-        highlightNickType = NotificationSettings::NoNick;
+    NotificationSettings::HighlightNickType highlightNickType = NotificationSettings::NoNick;
     if (ui.highlightCurrentNick->isChecked())
         highlightNickType = NotificationSettings::CurrentNick;
     if (ui.highlightAllNicks->isChecked())
         highlightNickType = NotificationSettings::AllNicks;
 
-    if (notificationSettings.highlightNick() != highlightNickType) return true;
-    if (notificationSettings.nicksCaseSensitive() != ui.nicksCaseSensitive->isChecked()) return true;
-
-    if (notificationSettings.highlightList() != highlightList) return true;
+    if (notificationSettings.highlightNick() != highlightNickType)
+        return true;
+    if (notificationSettings.nicksCaseSensitive() != ui.nicksCaseSensitive->isChecked())
+        return true;
+    if (notificationSettings.highlightList() != highlightList)
+        return true;
 
     return false;
 }
index 798073a..423e1b4 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index b26e45f..d75a1c0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "identitiessettingspage.h"
 
+#include <QIcon>
 #include <QInputDialog>
 #include <QMessageBox>
 
 #include "client.h"
-#include "iconloader.h"
 #include "signalproxy.h"
 
 IdentitiesSettingsPage::IdentitiesSettingsPage(QWidget *parent)
@@ -32,9 +32,9 @@ IdentitiesSettingsPage::IdentitiesSettingsPage(QWidget *parent)
     _editSsl(false)
 {
     ui.setupUi(this);
-    ui.renameIdentity->setIcon(BarIcon("edit-rename"));
-    ui.addIdentity->setIcon(BarIcon("list-add-user"));
-    ui.deleteIdentity->setIcon(BarIcon("list-remove-user"));
+    ui.renameIdentity->setIcon(QIcon::fromTheme("edit-rename"));
+    ui.addIdentity->setIcon(QIcon::fromTheme("list-add-user"));
+    ui.deleteIdentity->setIcon(QIcon::fromTheme("list-remove-user"));
 
     coreConnectionStateChanged(Client::isConnected()); // need a core connection!
     connect(Client::instance(), SIGNAL(coreConnectionStateChanged(bool)), this, SLOT(coreConnectionStateChanged(bool)));
@@ -417,7 +417,7 @@ SaveIdentitiesDlg::SaveIdentitiesDlg(const QList<CertIdentity *> &toCreate, cons
     : QDialog(parent)
 {
     ui.setupUi(this);
-    ui.abort->setIcon(SmallIcon("dialog-cancel"));
+    ui.abort->setIcon(QIcon::fromTheme("dialog-cancel"));
 
     numevents = toCreate.count() + toUpdate.count() + toRemove.count();
     rcvevents = 0;
index be0e946..b6b990a 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 331a081..eb93ff4 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -23,6 +23,7 @@
 #include <QDragEnterEvent>
 #include <QDropEvent>
 #include <QFileDialog>
+#include <QIcon>
 #include <QMimeData>
 #include <QUrl>
 #include <QMessageBox>
 #endif
 
 #include "client.h"
-#include "iconloader.h"
 
 IdentityEditWidget::IdentityEditWidget(QWidget *parent)
     : QWidget(parent)
 {
     ui.setupUi(this);
 
-    ui.addNick->setIcon(SmallIcon("list-add"));
-    ui.deleteNick->setIcon(SmallIcon("edit-delete"));
-    ui.renameNick->setIcon(SmallIcon("edit-rename"));
-    ui.nickUp->setIcon(SmallIcon("go-up"));
-    ui.nickDown->setIcon(SmallIcon("go-down"));
+    ui.addNick->setIcon(QIcon::fromTheme("list-add"));
+    ui.deleteNick->setIcon(QIcon::fromTheme("edit-delete"));
+    ui.renameNick->setIcon(QIcon::fromTheme("edit-rename"));
+    ui.nickUp->setIcon(QIcon::fromTheme("go-up"));
+    ui.nickDown->setIcon(QIcon::fromTheme("go-down"));
 
     // We need to know whenever the state of input widgets changes...
     connect(ui.realName, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged()));
index 6ef82b6..06bbeb0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a6ce4df..17d122e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 0383a7b..6065fb0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 4b80d64..4aca7d3 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -21,6 +21,7 @@
 #include "ignorelistsettingspage.h"
 
 #include <QHeaderView>
+#include <QIcon>
 #include <QItemSelectionModel>
 #include <QModelIndex>
 #include <QPainter>
 #include <QString>
 #include <QEvent>
 #include <QDebug>
-#include "iconloader.h"
 
 IgnoreListSettingsPage::IgnoreListSettingsPage(QWidget *parent)
     : SettingsPage(tr("IRC"), tr("Ignore List"), parent)
 {
     ui.setupUi(this);
     _delegate = new IgnoreListDelegate(ui.ignoreListView);
-    ui.newIgnoreRuleButton->setIcon(SmallIcon("list-add"));
-    ui.deleteIgnoreRuleButton->setIcon(SmallIcon("edit-delete"));
-    ui.editIgnoreRuleButton->setIcon(SmallIcon("configure"));
+    ui.newIgnoreRuleButton->setIcon(QIcon::fromTheme("list-add"));
+    ui.deleteIgnoreRuleButton->setIcon(QIcon::fromTheme("edit-delete"));
+    ui.editIgnoreRuleButton->setIcon(QIcon::fromTheme("configure"));
 
     ui.ignoreListView->setSelectionBehavior(QAbstractItemView::SelectRows);
     ui.ignoreListView->setSelectionMode(QAbstractItemView::SingleSelection);
index 91a0af3..99308ed 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 4c0231a..20bcff3 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -25,7 +25,7 @@ InputWidgetSettingsPage::InputWidgetSettingsPage(QWidget *parent)
 {
     ui.setupUi(this);
 
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
     ui.enableSpellCheck->hide();
 #endif
 
index e7a1718..5cc5de8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 00dce43..c3ebf3d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 89ca8ba..903cbcd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 9f75c75..66c6f48 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This class has been inspired by KDE's KKeySequenceWidget and uses     *
@@ -29,6 +29,7 @@
 #include <QDebug>
 #include <QKeyEvent>
 #include <QHBoxLayout>
+#include <QIcon>
 #include <QMessageBox>
 #include <QToolButton>
 
@@ -39,7 +40,6 @@
 
 #include "action.h"
 #include "actioncollection.h"
-#include "iconloader.h"
 #include "keysequencewidget.h"
 
 KeySequenceButton::KeySequenceButton(KeySequenceWidget *d_, QWidget *parent)
@@ -172,7 +172,7 @@ KeySequenceWidget::KeySequenceWidget(QWidget *parent)
 
     _keyButton = new KeySequenceButton(this, this);
     _keyButton->setFocusPolicy(Qt::StrongFocus);
-    _keyButton->setIcon(SmallIcon("configure"));
+    _keyButton->setIcon(QIcon::fromTheme("configure"));
     _keyButton->setToolTip(tr("Click on the button, then enter the shortcut like you would in the program.\nExample for Ctrl+a: hold the Ctrl key and press a."));
     layout->addWidget(_keyButton);
 
@@ -180,9 +180,9 @@ KeySequenceWidget::KeySequenceWidget(QWidget *parent)
     layout->addWidget(_clearButton);
 
     if (qApp->isLeftToRight())
-        _clearButton->setIcon(SmallIcon("edit-clear-locationbar-rtl"));
+        _clearButton->setIcon(QIcon::fromTheme("edit-clear-locationbar-rtl", QIcon::fromTheme("edit-clear")));
     else
-        _clearButton->setIcon(SmallIcon("edit-clear-locationbar-ltr"));
+        _clearButton->setIcon(QIcon::fromTheme("edit-clear-locationbar-ltr", QIcon::fromTheme("edit-clear")));
 
     setLayout(layout);
 
index 9d71b26..a0a3685 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This class has been inspired by KDE's KKeySequenceWidget and uses     *
index 69f5c81..011328d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  ***************************************************************************/
 
 #include <QHeaderView>
+#include <QIcon>
 #include <QMessageBox>
 #include <QTextCodec>
 
 #include "networkssettingspage.h"
 
 #include "client.h"
-#include "iconloader.h"
 #include "identity.h"
 #include "network.h"
 #include "presetnetworks.h"
@@ -52,21 +52,21 @@ NetworksSettingsPage::NetworksSettingsPage(QWidget *parent)
 #endif
 
     // set up icons
-    ui.renameNetwork->setIcon(SmallIcon("edit-rename"));
-    ui.addNetwork->setIcon(SmallIcon("list-add"));
-    ui.deleteNetwork->setIcon(SmallIcon("edit-delete"));
-    ui.addServer->setIcon(SmallIcon("list-add"));
-    ui.deleteServer->setIcon(SmallIcon("edit-delete"));
-    ui.editServer->setIcon(SmallIcon("configure"));
-    ui.upServer->setIcon(SmallIcon("go-up"));
-    ui.downServer->setIcon(SmallIcon("go-down"));
-    ui.editIdentities->setIcon(SmallIcon("configure"));
+    ui.renameNetwork->setIcon(QIcon::fromTheme("edit-rename"));
+    ui.addNetwork->setIcon(QIcon::fromTheme("list-add"));
+    ui.deleteNetwork->setIcon(QIcon::fromTheme("edit-delete"));
+    ui.addServer->setIcon(QIcon::fromTheme("list-add"));
+    ui.deleteServer->setIcon(QIcon::fromTheme("edit-delete"));
+    ui.editServer->setIcon(QIcon::fromTheme("configure"));
+    ui.upServer->setIcon(QIcon::fromTheme("go-up"));
+    ui.downServer->setIcon(QIcon::fromTheme("go-down"));
+    ui.editIdentities->setIcon(QIcon::fromTheme("configure"));
 
     _ignoreWidgetChanges = false;
 
-    connectedIcon = SmallIcon("network-connect");
-    connectingIcon = SmallIcon("network-wired"); // FIXME network-connecting
-    disconnectedIcon = SmallIcon("network-disconnect");
+    connectedIcon = QIcon::fromTheme("network-connect");
+    connectingIcon = QIcon::fromTheme("network-wired"); // FIXME network-connecting
+    disconnectedIcon = QIcon::fromTheme("network-disconnect");
 
     foreach(int mib, QTextCodec::availableMibs()) {
         QByteArray codec = QTextCodec::codecForMib(mib)->name();
@@ -497,7 +497,7 @@ void NetworksSettingsPage::displayNetwork(NetworkId id)
         foreach(Network::Server server, info.serverList) {
             QListWidgetItem *item = new QListWidgetItem(QString("%1:%2").arg(server.host).arg(server.port));
             if (server.useSsl)
-                item->setIcon(SmallIcon("document-encrypt"));
+                item->setIcon(QIcon::fromTheme("document-encrypt"));
             ui.serverList->addItem(item);
         }
         //setItemState(id);
@@ -784,7 +784,7 @@ IdentityId NetworksSettingsPage::defaultIdentity() const
 NetworkAddDlg::NetworkAddDlg(const QStringList &exist, QWidget *parent) : QDialog(parent), existing(exist)
 {
     ui.setupUi(this);
-    ui.useSSL->setIcon(SmallIcon("document-encrypt"));
+    ui.useSSL->setIcon(QIcon::fromTheme("document-encrypt"));
 
     // read preset networks
     QStringList networks = PresetNetworks::names();
@@ -863,7 +863,7 @@ void NetworkEditDlg::on_networkEdit_textChanged(const QString &text)
 ServerEditDlg::ServerEditDlg(const Network::Server &server, QWidget *parent) : QDialog(parent)
 {
     ui.setupUi(this);
-    ui.useSSL->setIcon(SmallIcon("document-encrypt"));
+    ui.useSSL->setIcon(QIcon::fromTheme("document-encrypt"));
     ui.host->setText(server.host);
     ui.host->setFocus();
     ui.port->setValue(server.port);
index 065869a..1162a63 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -21,7 +21,7 @@
 #ifndef NETWORKSSETTINGSPAGE_H
 #define NETWORKSSETTINGSPAGE_H
 
-#include <QPixmap>
+#include <QIcon>
 
 #include "network.h"
 #include "settingspage.h"
@@ -95,7 +95,7 @@ private:
     CertIdentity *_cid;
 #endif
 
-    QPixmap connectedIcon, connectingIcon, disconnectedIcon;
+    QIcon connectedIcon, connectingIcon, disconnectedIcon;
 
     void reset();
     bool testHasChanged();
index 6232bc5..6bd31db 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 51c0266..941d4e5 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index f82063a..fd0d6d5 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e0d3fd7..e352887 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index bb8bdcb..6e67021 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 7d91bc4..d1c8b73 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1144a15..c94fe37 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 514a054..ff4c7c4 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 589af47..3775108 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 38f5b58..6815101 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -20,7 +20,7 @@
 
 #include "simplenetworkeditor.h"
 
-#include "iconloader.h"
+#include <QIcon>
 
 #include "networkssettingspage.h"
 
@@ -29,11 +29,11 @@ SimpleNetworkEditor::SimpleNetworkEditor(QWidget *parent)
 {
     ui.setupUi(this);
 
-    ui.addServer->setIcon(SmallIcon("list-add"));
-    ui.deleteServer->setIcon(SmallIcon("edit-delete"));
-    ui.editServer->setIcon(SmallIcon("configure"));
-    ui.upServer->setIcon(SmallIcon("go-up"));
-    ui.downServer->setIcon(SmallIcon("go-down"));
+    ui.addServer->setIcon(QIcon::fromTheme("list-add"));
+    ui.deleteServer->setIcon(QIcon::fromTheme("edit-delete"));
+    ui.editServer->setIcon(QIcon::fromTheme("configure"));
+    ui.upServer->setIcon(QIcon::fromTheme("go-up"));
+    ui.downServer->setIcon(QIcon::fromTheme("go-down"));
 
     connect(ui.networkNameEdit, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged()));
     connect(ui.channelList, SIGNAL(textChanged()), this, SIGNAL(widgetHasChanged()));
@@ -65,7 +65,7 @@ void SimpleNetworkEditor::displayNetworkInfo(const NetworkInfo &networkInfo)
     foreach(Network::Server server, _networkInfo.serverList) {
         QListWidgetItem *item = new QListWidgetItem(QString("%1:%2").arg(server.host).arg(server.port));
         if (server.useSsl)
-            item->setIcon(SmallIcon("document-encrypt"));
+            item->setIcon(QIcon::fromTheme("document-encrypt"));
         ui.serverList->addItem(item);
     }
 
index 6dc2c60..ce18b1b 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3612bb0..6732c54 100644 (file)
@@ -24,7 +24,6 @@
 #include <QtGlobal>
 
 #include "client.h"
-#include "iconloader.h"
 #include "networkmodel.h"
 #include "systraynotificationbackend.h"
 #include "qtui.h"
@@ -50,7 +49,7 @@ SnoreNotificationBackend::SnoreNotificationBackend (QObject *parent)
     //TODO: try to get an instance of the tray icon to be able to show popups
     m_snore = new Snore::SnoreCore();
     m_snore->loadPlugins(Snore::SnorePlugin::BACKEND);
-    m_icon = Snore::Icon(DesktopIcon("quassel").toImage());
+    m_icon = Snore::Icon(QIcon::fromTheme("quassel", QIcon(":/icons/quassel.png")).pixmap(48).toImage());
     m_application = Snore::Application("Quassel", m_icon);
     m_application.hints().setValue("WINDOWS_APP_ID","QuasselProject.QuasselIRC");
 
index 88ac6b1..6fbf110 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 067cc4c..38c7d36 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index df04252..a75c325 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This contains code from KStatusNotifierItem, part of the KDE libs     *
@@ -51,15 +51,8 @@ public:
 protected:
     virtual QString iconNameForAction(QAction *action) // TODO Qt 4.7: fixme when we have converted our iconloader
     {
-        Icon icon(action->icon());
-#if QT_VERSION >= 0x040701
-        // QIcon::name() is in the 4.7 git branch, but it is not in 4.7 TP.
-        // If you get a build error here, you need to update your pre-release
-        // of Qt 4.7.
+        QIcon icon(action->icon());
         return icon.isNull() ? QString() : icon.name();
-#else
-        return QString();
-#endif
     }
 };
 
@@ -293,7 +286,7 @@ bool StatusNotifierItem::eventFilter(QObject *watched, QEvent *event)
 {
     if (mode() == StatusNotifier) {
         //FIXME: ugly ugly workaround to weird QMenu's focus problems
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
         if (watched == trayMenu() &&
             (event->type() == QEvent::WindowDeactivate || (event->type() == QEvent::MouseButtonRelease && static_cast<QMouseEvent *>(event)->button() == Qt::LeftButton))) {
             // put at the back of event queue to let the action activate anyways
index aa35635..76ac6eb 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This contains code from KStatusNotifierItem, part of the KDE libs     *
index 2d5e2d2..2be2328 100644 (file)
@@ -31,7 +31,7 @@
 #include <QMenu>
 #include <QMovie>
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  include <KWindowInfo>
 #  include <KWindowSystem>
 #endif
@@ -328,11 +328,11 @@ void StatusNotifierItemDBus::ContextMenu(int x, int y)
 
     //TODO: nicer placement, possible?
     if (!m_statusNotifierItem->trayMenu()->isVisible()) {
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
         m_statusNotifierItem->trayMenu()->setWindowFlags(Qt::Window|Qt::FramelessWindowHint);
 #endif
         m_statusNotifierItem->trayMenu()->popup(QPoint(x, y));
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
         KWindowSystem::setState(m_statusNotifierItem->trayMenu()->winId(), NET::SkipTaskbar|NET::SkipPager|NET::KeepAbove);
         KWindowSystem::setType(m_statusNotifierItem->trayMenu()->winId(), NET::PopupMenu);
         KWindowSystem::forceActiveWindow(m_statusNotifierItem->trayMenu()->winId());
index 02ecffa..df14869 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This file is free software; you can redistribute it and/or modify     *
 #include "action.h"
 #include "actioncollection.h"
 #include "client.h"
-#include "iconloader.h"
 #include "qtui.h"
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  include <KMenu>
 #  include <KWindowInfo>
 #  include <KWindowSystem>
@@ -40,9 +39,9 @@ SystemTray::SystemTray(QWidget *parent)
     _mode(Invalid),
     _state(Passive),
     _shouldBeVisible(true),
-    _passiveIcon(DesktopIcon("quassel-inactive")),
-    _activeIcon(DesktopIcon("quassel")),
-    _needsAttentionIcon(DesktopIcon("quassel-message")),
+    _passiveIcon(QIcon::fromTheme("quassel-inactive", QIcon(":/icons/quassel-inactive.png"))),
+    _activeIcon(QIcon::fromTheme("quassel", QIcon(":/icons/quassel.png"))),
+    _needsAttentionIcon(QIcon::fromTheme("quassel-message", QIcon(":/icons/quassel-message.png"))),
     _trayMenu(0),
     _associatedWidget(parent)
 {
@@ -67,7 +66,7 @@ void SystemTray::init()
     ActionCollection *coll = QtUi::actionCollection("General");
     _minimizeRestoreAction = new Action(tr("&Minimize"), this, this, SLOT(minimizeRestore()));
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     KMenu *kmenu;
     _trayMenu = kmenu = new KMenu();
     kmenu->addTitle(_activeIcon, "Quassel IRC");
@@ -77,7 +76,7 @@ void SystemTray::init()
 
     _trayMenu->setTitle("Quassel IRC");
 
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
     _trayMenu->setAttribute(Qt::WA_Hover);
 #endif
 
@@ -108,7 +107,7 @@ void SystemTray::setMode(Mode mode_)
 {
     if (mode_ != _mode) {
         _mode = mode_;
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
         if (_trayMenu) {
             if (_mode == Legacy) {
                 _trayMenu->setWindowFlags(Qt::Popup);
@@ -122,13 +121,13 @@ void SystemTray::setMode(Mode mode_)
 }
 
 
-Icon SystemTray::stateIcon() const
+QIcon SystemTray::stateIcon() const
 {
     return stateIcon(state());
 }
 
 
-Icon SystemTray::stateIcon(State state) const
+QIcon SystemTray::stateIcon(State state) const
 {
     switch (state) {
     case Passive:
@@ -138,7 +137,7 @@ Icon SystemTray::stateIcon(State state) const
     case NeedsAttention:
         return _needsAttentionIcon;
     }
-    return Icon();
+    return QIcon();
 }
 
 
index 151d349..864f9dd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This file is free software; you can redistribute it and/or modify     *
@@ -21,7 +21,7 @@
 #ifndef SYSTEMTRAY_H_
 #define SYSTEMTRAY_H_
 
-#include "icon.h"
+#include <QIcon>
 
 class Action;
 class QMenu;
@@ -84,7 +84,7 @@ public slots:
 
 signals:
     void activated(SystemTray::ActivationReason);
-    void iconChanged(const Icon &);
+    void iconChanged(const QIcon &icon);
     void animationEnabledChanged(bool);
     void toolTipChanged(const QString &title, const QString &subtitle);
     void messageClicked(uint notificationId);
@@ -97,8 +97,8 @@ protected:
     virtual void setMode(Mode mode);
     inline bool shouldBeVisible() const;
 
-    virtual Icon stateIcon() const;
-    Icon stateIcon(State state) const;
+    virtual QIcon stateIcon() const;
+    QIcon stateIcon(State state) const;
     inline QString toolTipTitle() const;
     inline QString toolTipSubTitle() const;
     inline QMenu *trayMenu() const;
@@ -116,7 +116,7 @@ private:
     bool _shouldBeVisible;
 
     QString _toolTipTitle, _toolTipSubTitle;
-    Icon _passiveIcon, _activeIcon, _needsAttentionIcon;
+    QIcon _passiveIcon, _activeIcon, _needsAttentionIcon;
     bool _animationEnabled;
 
     QMenu *_trayMenu;
index 5492f0a..1608225 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 #include <QApplication>
 #include <QCheckBox>
 #include <QGroupBox>
+#include <QIcon>
 #include <QHBoxLayout>
 
 #include "systraynotificationbackend.h"
 
 #include "client.h"
 #include "clientsettings.h"
-#include "icon.h"
-#include "iconloader.h"
 #include "mainwin.h"
 #include "networkmodel.h"
 #include "qtui.h"
@@ -154,7 +153,7 @@ SettingsPage *SystrayNotificationBackend::createConfigWidget() const
 SystrayNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent) : SettingsPage("Internal", "SystrayNotification", parent)
 {
     _showBubbleBox = new QCheckBox(tr("Show a message in a popup"));
-    _showBubbleBox->setIcon(SmallIcon("dialog-information"));
+    _showBubbleBox->setIcon(QIcon::fromTheme("dialog-information"));
     connect(_showBubbleBox, SIGNAL(toggled(bool)), this, SLOT(widgetChanged()));
     QHBoxLayout *layout = new QHBoxLayout(this);
     layout->addWidget(_showBubbleBox);
index 5d99371..82e3921 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a689c13..26444f7 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 #include <QApplication>
 #include <QCheckBox>
 #include <QHBoxLayout>
+#include <QIcon>
 #include <QSpinBox>
 
 #include "taskbarnotificationbackend.h"
 
 #include "clientsettings.h"
-#include "iconloader.h"
 #include "mainwin.h"
 #include "qtui.h"
 
@@ -84,7 +84,7 @@ TaskbarNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent) : Settin
 #else
     layout->addWidget(enabledBox = new QCheckBox(tr("Mark taskbar entry, timeout:"), this));
 #endif
-    enabledBox->setIcon(SmallIcon("flag-blue"));
+    enabledBox->setIcon(QIcon::fromTheme("flag-blue"));
     enabledBox->setEnabled(true);
 
     timeoutBox = new QSpinBox(this);
index 5536d66..3adb09f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 02a8f95..2ef0bd1 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 09759cd..002a686 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index ae83501..95d6284 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -20,8 +20,9 @@
 
 #include "topicwidget.h"
 
+#include <QIcon>
+
 #include "client.h"
-#include "iconloader.h"
 #include "networkmodel.h"
 #include "uisettings.h"
 #include "graphicalui.h"
@@ -31,7 +32,7 @@ TopicWidget::TopicWidget(QWidget *parent)
     : AbstractItemView(parent)
 {
     ui.setupUi(this);
-    ui.topicEditButton->setIcon(SmallIcon("edit-rename"));
+    ui.topicEditButton->setIcon(QIcon::fromTheme("edit-rename"));
     ui.topicLineEdit->setLineWrapEnabled(true);
     ui.topicLineEdit->installEventFilter(this);
 
index bb25afa..87c163c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 4f0bbeb..6cd25e7 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index f949229..bad09fb 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1923707..1d7a27c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 71517f7..1ad2e85 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 8be2e95..0b78acc 100644 (file)
@@ -1,6 +1,7 @@
 # Builds the uisupport module
 
 set(SOURCES
+    aboutdata.cpp
     abstractbuffercontainer.cpp
     abstractitemview.cpp
     action.cpp
@@ -17,8 +18,6 @@ set(SOURCES
     flatproxymodel.cpp
     fontselector.cpp
     graphicalui.cpp
-    icon.cpp
-    iconloader.cpp
     multilineedit.cpp
     networkmodelcontroller.cpp
     nickview.cpp
@@ -36,7 +35,7 @@ set(SOURCES
     abstractnotificationbackend.h
 )
 
-if (KDE4_FOUND)
+if (WITH_KDE4)
     include_directories(${KDE4_INCLUDES})
     add_definitions(-DHAVE_KDE ${KDE4_DEFINITIONS})
     set(SOURCES ${SOURCES} kcmdlinewrapper.cpp)
@@ -53,8 +52,12 @@ endif()
 add_library(mod_uisupport STATIC ${SOURCES})
 qt_use_modules(mod_uisupport Core Gui Network ${qt_modules})
 
-if (KDE4_FOUND)
+target_link_libraries(mod_uisupport mod_client mod_common)
+
+if (WITH_KDE4)
     target_link_libraries(mod_uisupport ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBRARY})
 endif()
 
-add_dependencies(mod_uisupport mod_common mod_client)
+if (WITH_KF5)
+    target_link_libraries(mod_uisupport KF5::CoreAddons KF5::TextWidgets)
+endif()
diff --git a/src/uisupport/aboutdata.cpp b/src/uisupport/aboutdata.cpp
new file mode 100644 (file)
index 0000000..17356fd
--- /dev/null
@@ -0,0 +1,300 @@
+/***************************************************************************
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   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) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
+ ***************************************************************************/
+
+#include "aboutdata.h"
+
+#include <QImage>
+
+#include "quassel.h"
+
+
+AboutPerson::AboutPerson(const QString &name, const QString &nick, const QString &task, const QString &emailAddress, QLocale::Language translatedLanguage)
+    : _name(name)
+    , _nick(nick)
+    , _task(task)
+    , _emailAddress(emailAddress)
+    , _language(translatedLanguage)
+{
+
+}
+
+
+QString AboutPerson::name() const
+{
+    return _name;
+}
+
+
+QString AboutPerson::nick() const
+{
+    return _nick;
+}
+
+
+QString AboutPerson::task() const
+{
+    return _task;
+}
+
+
+QString AboutPerson::emailAddress() const
+{
+    return _emailAddress;
+}
+
+
+QLocale::Language AboutPerson::translatedLanguage() const
+{
+    return _language;
+}
+
+
+QString AboutPerson::prettyName() const
+{
+    if (!name().isEmpty() && !nick().isEmpty())
+        return name() + " (" + nick() + ')';
+
+    if (name().isEmpty() && !nick().isEmpty())
+        return nick();
+
+    return name();
+}
+
+
+/**************************************************************************************************/
+
+
+AboutData::AboutData(QObject *parent)
+    : QObject(parent)
+{
+
+}
+
+
+QList<AboutPerson> AboutData::authors() const
+{
+    return _authors;
+}
+
+
+QList< AboutPerson > AboutData::credits() const
+{
+    return _credits;
+}
+
+
+AboutData &AboutData::addAuthor(const AboutPerson &author)
+{
+    _authors.append(author);
+    return *this;
+}
+
+
+AboutData &AboutData::addAuthors(std::initializer_list<AboutPerson> authors)
+{
+    _authors.append(authors);
+    return *this;
+}
+
+
+AboutData &AboutData::addCredit(const AboutPerson &credit)
+{
+    _credits.append(credit);
+    return *this;
+}
+
+
+AboutData &AboutData::addCredits(std::initializer_list<AboutPerson> credits)
+{
+    _credits.append(credits);
+    return *this;
+}
+
+#ifdef HAVE_KF5
+
+KAboutData AboutData::kAboutData() const
+{
+    KAboutData aboutData(
+        Quassel::buildInfo().applicationName,
+        tr("Quassel IRC"),
+        Quassel::buildInfo().plainVersionString
+    );
+    aboutData.addLicense(KAboutLicense::GPL_V2);
+    aboutData.addLicense(KAboutLicense::GPL_V3);
+    aboutData.setShortDescription(tr("A modern, distributed IRC client"));
+    aboutData.setProgramLogo(QVariant::fromValue(QImage(":/pics/quassel-logo.png")));
+    aboutData.setBugAddress("http://bugs.quassel-irc.org/projects/quassel-irc/issues/new");
+    aboutData.setOrganizationDomain(Quassel::buildInfo().organizationDomain.toUtf8());
+
+    for (const auto &person : authors()) {
+        aboutData.addAuthor(person.prettyName(), person.task(), person.emailAddress());
+    }
+
+    for (const auto &person : credits()) {
+        aboutData.addCredit(person.prettyName(), person.task(), person.emailAddress());
+    }
+
+    return aboutData;
+}
+
+#endif
+
+
+/**************************************************************************************************/
+
+/*
+ * NOTE: The list of contributors was retrieved from the Git history, but sometimes things fall
+ *       through the cracks... especially for translations, we don't have an easy way to track
+ *       contributors' names.
+ *       If you find wrong data for yourself, want your nickname and/or mail addresses added or
+ *       removed, or feel left out or unfairly credited, please don't hesitate to let us know! We
+ *       do want to credit everyone who has contributed to Quassel development.
+ */
+
+void AboutData::setQuasselPersons(AboutData *aboutData)
+{
+    aboutData->addAuthors({
+        { "Manuel Nickschas", "Sputnick", tr("Project Founder, Lead Developer"), "sputnick@quassel-irc.org" },
+        { "Marcus Eggenberger", "EgS", tr("Project Motivator, Lead Developer"), "egs@quassel-irc.org" },
+        { "Alexander von Renteln", "phon", tr("Former Lead Developer"), "phon@quassel-irc.org" },
+        { "Daniel Albers", "al", tr("Master of Translation, many fixes and enhancements") },
+        { "Sebastian Goth", "seezer", tr("Many features, fixes and improvements") },
+        { "Bas Pape", "Tucos", tr("Many fixes and improvements, bug and patch triaging, community support") },
+    });
+
+    aboutData->addCredits({
+        { "Adam Harwood", "2kah", tr("Chatview improvements") },
+        { "Adam Tulinius", "adamt", tr("Early beta tester and bughunter, Danish translation"), "", QLocale::Danish },
+        { "Adolfo Jayme Barrientos", "", tr("Spanish translation"), "", QLocale::Spanish },
+        { "Alexander Stein", "", tr("Tray icon fix") },
+        { "Alf Gaida", "agaida", tr("Language improvements") },
+        { "Allan Jude", "", tr("Documentation improvements") },
+        { "Arthur Titeica", "roentgen", tr("Romanian translation"), "", QLocale::Romanian },
+        { "Atte Virtanen", "", tr("Finnish translation"), "", QLocale::Finnish },
+        { "Aurélien Gâteau", "agateau", tr("Message indicator support") },
+        { "Awad Mackie", "firesock", tr("Chatview improvements") },
+        { "Benjamin Zeller", "zbenjamin", tr("Windows build system fixes") },
+        { "Bruno Brigras", "", tr("Crash fixes") },
+        { "Bruno Patri", "", tr("French translation"), "", QLocale::French },
+        { "Celeste Paul", "seele", tr("Usability review") },
+        { "Chris Fuenty", "stitch", tr("SASL support") },
+        { "Chris H", "Zren", tr("Various improvements") },
+        { "Chris Le Sueur", "Fish-Face", tr("Various fixes and improvements") },
+        { "Chris Moeller", "kode54", tr("Various fixes and improvements") },
+        { "", "Condex", tr("Galician translation"), "", QLocale::Galician },
+        { "", "cordata", tr("Esperanto translation"), "", QLocale::Esperanto },
+        { "Daniel E. Moctezuma", "", tr("Japanese translation"), "", QLocale::Japanese },
+        { "Daniel Meltzer", "hydrogen", tr("Various fixes and improvements") },
+        { "Daniel Pielmeier", "billie", tr("Gentoo maintainer") },
+        { "Daniel Steinmetz", "son", tr("Early beta tester and bughunter (on Vista™!)") },
+        { "David Planella", "", tr("Translation system fixes") },
+        { "David Sansome", "", tr("OSX Notification Center support") },
+        { "David Roden", "Bombe", tr("Fixes") },
+        { "Deniz Türkoglu", "", tr("Mac fixes") },
+        { "Dennis Schridde", "devurandom", tr("D-Bus notifications") },
+        { "", "derpella", tr("Polish translation"), "", QLocale::Polish },
+        { "Diego Pettenò", "Flameeyes", tr("Build system improvements") },
+        { "Dirk Rettschlag", "MarcLandis", tr("Formatting support and other input line improvements, many other fixes") },
+        { "", "Dorian", tr("French translation"), "", QLocale::French },
+        { "Drew Patridge", "LinuxDolt", tr("BluesTheme stylesheet") },
+        { "Edward Hades", "", tr("Russian translation"), "", QLocale::Russian },
+        { "Fabiano Francesconi", "elbryan", tr("Italian translation"), "", QLocale::Italian },
+        { "Felix Geyer", "debfx", tr("Certificate handling improvements") },
+        { "Florent Castelli", "", tr("Sanitize topic handling") },
+        { "Frederik M.J. Vestre", "freqmod", tr("Norwegian translation"), "", QLocale::Norwegian },
+        { "Gábor Németh", "ELITE_x", tr("Hungarian translation"), "", QLocale::Hungarian },
+        { "Gryllida A", "gry", tr("IRC parser improvements") },
+        { "H. İbrahim Güngör", "igungor", tr("Turkish translation"), "", QLocale::Turkish },
+        { "Harald Fernengel", "harryF", tr("Initial Qt5 support") },
+        { "Harald Sitter", "apachelogger", tr("{Ku|U}buntu packager, motivator, promoter") },
+        { "Hendrik Leppkes", "nevcairiel", tr("Various features") },
+        { "Henning Rohlfs", "honk", tr("Various fixes") },
+        { "J-P Nurmi", "", tr("Various fixes") },
+        { "Jaak Ristioja", "", tr("Bugfixes") },
+        { "Jason Lynch", "", tr("Bugfixes") },
+        { "Jens Arnold", "amiconn", tr("Postgres migration fixes") },
+        { "Jerome Leclanche", "Adys", tr("Context menu fixes") },
+        { "Jesper Thomschütz", "", tr("Various fixes") },
+        { "Jiri Grönroos", "", tr("Finnish translation"), "", QLocale::Finnish },
+        { "Johannes Huber", "johu", tr("Many fixes and improvements, bug triaging") },
+        { "John Hand", "nox", tr("Original \"All-Seeing Eye\" logo") },
+        { "Jonas Heese", "Dante", tr("Project founder, various improvements") },
+        { "Joshua T Corbin", "tvakah", tr("Various fixes") },
+        { "Jovan Jojkić", "", tr("Serbian translation"), "", QLocale::Serbian },
+        { "Jure Repinc", "JLP", tr("Slovenian translation"), "", QLocale::Slovenian },
+        { "Jussi Schultink", "jussi01", tr("Tireless tester, {Ku|U}buntu tester and lobbyist, liters of delicious Finnish alcohol") },
+        { "K. Ernest Lee", "iFire", tr("Qt5 porting help, Travis CI setup") },
+        { "Kevin Funk", "KRF", tr("German translation"), "", QLocale::German },
+        { "", "Larso", tr("Finnish translation"), "", QLocale::Finnish },
+        { "Lasse Liehu", "", tr("Finnish translation"), "", QLocale::Finnish },
+        { "Leo Franchi", "", tr("OSX improvements") },
+        { "Liudas Alisauskas", "", tr("Lithuanian translation"), "", QLocale::Lithuanian },
+        { "Luke Faraone", "", tr("Documentation fixes") },
+        { "Maia Kozheva", "", tr("Russian translation"), "", QLocale::Russian },
+        { "Marco Genise", "kaffeedoktor", tr("Ideas, hacking, initial motivation") },
+        { "Marco Paolone", "Quizzlo", tr("Italian translation"), "", QLocale::Italian },
+        { "Martin Mayer", "m4yer", tr("German translation"), "", QLocale::German },
+        { "Martin Sandsmark", "sandsmark", tr("Core and other fixes, QuasselDroid") },
+        { "Matthias Coy", "pennywise", tr("German translation"), "", QLocale::German },
+        { "Mattia Basaglia", "", tr("Fixes") },
+        { "Michael Groh", "brot", tr("German translation, fixes"), "", QLocale::German },
+        { "Michael Kedzierski", "ycros", tr("Mac fixes") },
+        { "Michael Marley", "mamarley", tr("Many fixes and improvements; Ubuntu live packages") },
+        { "Miguel Revilla", "", tr("Spanish translation"), "", QLocale::Spanish },
+        { "Nuno Pinheiro", "", tr("Tons of Oxygen icons including the Quassel logo") },
+        { "Patrick Lauer", "bonsaikitten", tr("Gentoo maintainer") },
+        { "Patrick von Reth", "TheOneRing", tr("MinGW support, SNORE backend, Windows packaging") },
+        { "Paul Klumpp", "Haudrauf", tr("Initial design and main window layout") },
+        { "Pavel Volkovitskiy", "int", tr("Early beta tester and bughunter") },
+        { "Per Nielsen", "", tr("Danish translation"), "", QLocale::Danish },
+        { "Pete Beardmore", "elbeardmorez", tr("Linewrap for input line") },
+        { "Ramanathan Sivagurunathan", "", tr("Bugfixes") },
+        { "Regis Perrin", "ZRegis", tr("French translation"), "", QLocale::French },
+        { "Rolf Eike Beer", "", tr("Build system fixes") },
+        { "Roscoe van Wyk", "", tr("Bugfixes") },
+        { "Rüdiger Sonderfeld", "ruediger", tr("Emacs keybindings") },
+        { "", "salnx", tr("Highlight configuration improvements") },
+        { "Scott Kitterman", "ScottK", tr("Kubuntu packager, (packaging/build system) bughunter") },
+        { "Sebastian Meyer", "", tr("Bugfixes") },
+        { "Sebastien Fricker", "", tr("Audio backend improvements") },
+        { "", "sfionov", tr("Russian translation"), "", QLocale::Russian },
+        { "Simon Philips", "", tr("Dutch translation"), "", QLocale::Dutch },
+        { "Sjors Gielen", "dazjorz", tr("Bugfixes") },
+        { "Stefanos Sofroniou", "", tr("Greek translation"), "", QLocale::Greek },
+        { "Stella Rouzi", "differentreality", tr("Greek translation"), "", QLocale::Greek },
+        { "Rafael Belmonte", "EagleScreen", tr("Spanish translation"), "", QLocale::Spanish },
+        { "Sergiu Bivol", "", tr("Romanian translation"), "", QLocale::Romanian },
+        { "Tae-Hoon Kwon", "", tr("Korean translation"), "", QLocale::Korean },
+        { "Terje Andersen", "tan", tr("Norwegian translation, documentation") },
+        { "Theo Chatzimichos", "tampakrap", tr("Greek translation"), "", QLocale::Greek },
+        { "Theofilos Intzoglou", "", tr("Greek translation"), "", QLocale::Greek },
+        { "Thomas Hogh", "Datafreak", tr("Former Windows builder") },
+        { "Thomas Müller", "", tr("Fixes, Debian packaging") },
+        { "Tim Schumacher", "xAFFE", tr("Fixes and feedback") },
+        { "", "ToBeFree", tr("German translation"), "", QLocale::German },
+        { "Tomáš Chvátal", "scarabeus", tr("Czech translation"), "", QLocale::Czech },
+        { "Vit Pelcak", "", tr("Czech translation"), "", QLocale::Czech },
+        { "Volkan Gezer", "", tr("Turkish translation"), "", QLocale::Turkish },
+        { "Yaohan Chen", "hagabaka", tr("Network detection improvements") },
+        { "Yuri Chornoivan", "", tr("Ukrainian translation"), "", QLocale::Ukrainian },
+        { "Zé", "", tr("Portuguese translation"), "", QLocale::Portuguese },
+        { "", "zeugma", tr("Turkish translation"), "", QLocale::Turkish }
+    });
+}
diff --git a/src/uisupport/aboutdata.h b/src/uisupport/aboutdata.h
new file mode 100644 (file)
index 0000000..6c306be
--- /dev/null
@@ -0,0 +1,194 @@
+/***************************************************************************
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   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) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
+ ***************************************************************************/
+
+#pragma once
+
+#include <QLocale>
+
+#ifdef HAVE_KF5
+#  include <KCoreAddons/KAboutData>
+#endif
+
+
+/**
+ * Represents a contributor or author for Quassel.
+ *
+ * This is used to show a list of contributors in the About Quassel dialog.
+ */
+class AboutPerson
+{
+public:
+    /**
+     * Constructor.
+     *
+     * @param[in] name The person's name (in the form "Firstname Surname")
+     * @param[in] nick The person's nickname, if applicable
+     * @param[in] task Things the person does or has done for the project
+     * @param[in] emailAddress The person's email address, if applicable
+     * @param[in] translatedLanguage The language the person helped translate (only applicable for translators)
+     */
+    AboutPerson(const QString &name, const QString &nick, const QString &task, const QString &emailAddress = QString(), QLocale::Language translatedLanguage = QLocale::C);
+
+    /**
+     * Gets the person's name.
+     *
+     * @returns The person's name
+     */
+    QString name() const;
+
+    /**
+     * Gets the person's nick.
+     *
+     * @returns The person's nick
+     */
+    QString nick() const;
+
+    /**
+     * Gets the person's task.
+     *
+     * @returns The person's task
+     */
+    QString task() const;
+
+    /**
+     * Gets the person's e-mail address.
+     *
+     * @returns The person's e-mail address
+     */
+    QString emailAddress() const;
+
+    /**
+     * Gets the language this person helped translate.
+     *
+     * @returns The language this person helped translate
+     */
+    QLocale::Language translatedLanguage() const;
+
+    /**
+     * Gets the person's formatted name and nick.
+     *
+     * @returns The person's name and nick formatted for combined output
+     */
+    QString prettyName() const;
+
+private:
+    QString _name;               ///< The person's name
+    QString _nick;               ///< The person's nick
+    QString _task;               ///< The person's task
+    QString _emailAddress;       ///< The person's email address
+    QLocale::Language _language; ///< The language the person helps translate
+};
+
+
+/**
+ * Holds a list of authors, contributors and translators.
+ *
+ * This class is meant to hold the list of people who contributed to Quassel, used for displaying
+ * the About Quassel dialog. Additionally, this class can provide a KAboutData object to be shown
+ * if KDE integration is enabled.
+ */
+class AboutData : public QObject
+{
+    Q_OBJECT
+public:
+    /**
+     * Default constructor.
+     *
+     * @param[in] parent The parent object, if applicable
+     */
+    AboutData(QObject *parent = nullptr);
+
+    /**
+     * Adds an author to the list of contributors.
+     *
+     * Authors are people who contributed a significant amount of code to Quassel.
+     *
+     * @param[in] author The author to add
+     * @returns A reference to this AboutData instance
+     */
+    AboutData &addAuthor(const AboutPerson &author);
+
+    /**
+     * Adds a list of authors to the list of contributors.
+     *
+     * This method allows the use of a brace initializer in order to easily add a long list of
+     * people.
+     *
+     * @param[in] authors A list of authors to add
+     * @returns A reference to this AboutData instance
+     */
+    AboutData &addAuthors(std::initializer_list<AboutPerson> authors);
+
+    /**
+     * Adds a contributor.
+     *
+     * @param[in] author The contributor to add
+     * @returns A reference to this AboutData instance
+     */
+    AboutData &addCredit(const AboutPerson &credit);
+
+    /**
+     * Adds a list of contributors.
+     *
+     * This method allows the use of brace initializers in order to easily add a long list of
+     * people.
+     *
+     * @param[in] authors A list of contributors to add
+     * @returns A reference to this AboutData instance
+     */
+    AboutData &addCredits(std::initializer_list<AboutPerson> credits);
+
+    /**
+     * Gets the list of authors stored in this AboutData instance.
+     *
+     * @returns A list of authors
+     */
+    QList<AboutPerson> authors() const;
+
+    /**
+     * Gets the list of non-author contributors stored in this AboutData instance.
+     *
+     * @returns A list of contributors
+     */
+    QList<AboutPerson> credits() const;
+
+#ifdef HAVE_KF5
+    /**
+     * Creates a KAboutData instance based on the contents of this AboutData instance.
+     *
+     * @returns A KAboutData instance holding the list of contributors as well as any additional
+     *          data required for KAboutDialog and friends
+     */
+    KAboutData kAboutData() const;
+#endif
+
+    /**
+     * Fills the given AboutData instance with data relevant for Quassel itself.
+     *
+     * This method adds a (hardcoded) list of contributors to the given AboutData instance.
+     *
+     * @param[in,out] aboutData An existing AboutData instance to add Quassel's contributors to
+     */
+    static void setQuasselPersons(AboutData *aboutData);
+
+private:
+    QList<AboutPerson> _authors;  ///< The list of authors
+    QList<AboutPerson> _credits;  ///< The list of other contributors
+};
index f56e58d..4527563 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index b2e90fb..d983654 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 4ad4486..ac084a2 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 13abb48..8ae6d22 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 62f107c..7d7cc7f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 77b9d52..c222dc1 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -25,7 +25,7 @@
 #include <QApplication>
 
 Action::Action(QObject *parent)
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     : KAction(parent)
 #else
     : QWidgetAction(parent)
@@ -36,7 +36,7 @@ Action::Action(QObject *parent)
 
 
 Action::Action(const QString &text, QObject *parent, const QObject *receiver, const char *slot, const QKeySequence &shortcut)
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     : KAction(parent)
 #else
     : QWidgetAction(parent)
@@ -51,7 +51,7 @@ Action::Action(const QString &text, QObject *parent, const QObject *receiver, co
 
 
 Action::Action(const QIcon &icon, const QString &text, QObject *parent, const QObject *receiver, const char *slot, const QKeySequence &shortcut)
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     : KAction(parent)
 #else
     : QWidgetAction(parent)
@@ -66,7 +66,7 @@ Action::Action(const QIcon &icon, const QString &text, QObject *parent, const QO
 }
 
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 void Action::init() {}
 #else
 void Action::init()
@@ -124,4 +124,4 @@ void Action::setShortcut(const QKeySequence &key, ShortcutTypes type)
 }
 
 
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
index 0d97c08..dbef28c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -23,7 +23,7 @@
 #ifndef ACTION_H_
 #define ACTION_H_
 
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
 
 #include <QShortcut>
 #include <QWidgetAction>
@@ -71,7 +71,7 @@ private slots:
 
 Q_DECLARE_OPERATORS_FOR_FLAGS(Action::ShortcutTypes)
 
-#else /* HAVE_KDE */
+#else /* HAVE_KDE4 */
 #include <KAction>
 
 class Action : public KAction
index c918c82..b862ae8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -20,7 +20,7 @@
  * Parts of this implementation are based on KDE's KActionCollection.      *
  ***************************************************************************/
 
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
 
 #include <QAction>
 #include <QDebug>
@@ -305,4 +305,4 @@ bool ActionCollection::unlistAction(QAction *action)
 }
 
 
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
index d14981a..a76fc04 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -23,7 +23,7 @@
 #ifndef ACTIONCOLLECTION_H_
 #define ACTIONCOLLECTION_H_
 
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
 
 #include <QDebug>
 #include <QList>
@@ -123,7 +123,7 @@ private:
 int ActionCollection::count() const { return actions().count(); }
 bool ActionCollection::isEmpty() const { return actions().count(); }
 
-#else /* HAVE_KDE */
+#else /* HAVE_KDE4 */
 
 #include <KActionCollection>
 
index e40f900..0df4203 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3254d80..0a2d3ac 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 167d6b9..7973785 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1c0c52e..a49ce15 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 2720fd1..970f037 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -30,7 +30,6 @@
 #include "client.h"
 #include "clientbufferviewconfig.h"
 #include "graphicalui.h"
-#include "iconloader.h"
 #include "networkmodel.h"
 #include "uistyle.h"
 
index 3c63467..1a4d781 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 86569ae..6eb9a41 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index de8b5e8..d8db915 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index c7b1fab..1b0fea7 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "clearablelineedit.h"
 
+#include <QIcon>
 #include <QToolButton>
 #include <QStyle>
 
-#include "iconloader.h"
-
 ClearableLineEdit::ClearableLineEdit(QWidget *parent)
     : QLineEdit(parent)
 {
     clearButton = new QToolButton(this);
-    clearButton->setIcon(SmallIcon("edit-clear-locationbar-rtl"));
+    clearButton->setIcon(QIcon::fromTheme("edit-clear-locationbar-rtl", QIcon::fromTheme("edit-clear")));
 #ifndef Q_WS_QWS
     clearButton->setCursor(Qt::ArrowCursor);
 #endif
index d55be74..e6b63ba 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3b32f26..5364a70 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d64c140..d0edd9e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a1ca1a7..c1872f8 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index b35e40c..f7fd0f4 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d173010..fae6170 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -24,7 +24,7 @@
 #include <QStyle>
 #include <QStyleOptionFrame>
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  include <KColorDialog>
 #else
 #  include <QColorDialog>
@@ -56,7 +56,7 @@ QColor ColorButton::color() const
 
 void ColorButton::chooseColor()
 {
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
     QColor c = color();
     KColorDialog::getColor(c, this);
 #else
index 30a87a8..3b993d1 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3eefc16..0d9e483 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -18,6 +18,7 @@
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include <QIcon>
 #include <QInputDialog>
 #include <QMenu>
 #include <QMessageBox>
@@ -27,7 +28,6 @@
 
 #include "buffermodel.h"
 #include "buffersettings.h"
-#include "iconloader.h"
 #include "clientidentity.h"
 #include "network.h"
 #include "util.h"
 
 ContextMenuActionProvider::ContextMenuActionProvider(QObject *parent) : NetworkModelController(parent)
 {
-    registerAction(NetworkConnect, SmallIcon("network-connect"), tr("Connect"));
-    registerAction(NetworkDisconnect, SmallIcon("network-disconnect"), tr("Disconnect"));
+    registerAction(NetworkConnect, QIcon::fromTheme("network-connect"), tr("Connect"));
+    registerAction(NetworkDisconnect, QIcon::fromTheme("network-disconnect"), tr("Disconnect"));
 
-    registerAction(BufferJoin, SmallIcon("irc-join-channel"), tr("Join"));
-    registerAction(BufferPart, SmallIcon("irc-close-channel"), tr("Part"));
+    registerAction(BufferJoin, QIcon::fromTheme("irc-join-channel"), tr("Join"));
+    registerAction(BufferPart, QIcon::fromTheme("irc-close-channel"), tr("Part"));
     registerAction(BufferRemove, tr("Delete Chat(s)..."));
     registerAction(BufferSwitchTo, tr("Go to Chat"));
 
@@ -54,7 +54,7 @@ ContextMenuActionProvider::ContextMenuActionProvider(QObject *parent) : NetworkM
     registerAction(HideApplyToAll, tr("Set as Default..."));
     registerAction(HideUseDefaults, tr("Use Defaults..."));
 
-    registerAction(JoinChannel, SmallIcon("irc-join-channel"), tr("Join Channel..."));
+    registerAction(JoinChannel, QIcon::fromTheme("irc-join-channel"), tr("Join Channel..."));
 
     registerAction(NickQuery, tr("Start Query"));
     registerAction(NickSwitchTo, tr("Show Query"));
@@ -76,15 +76,15 @@ ContextMenuActionProvider::ContextMenuActionProvider(QObject *parent) : NetworkM
     registerAction(NickIgnoreToggleEnabled3, "Enable", true);
     registerAction(NickIgnoreToggleEnabled4, "Enable", true);
 
-    registerAction(NickOp, SmallIcon("irc-operator"), tr("Give Operator Status"));
-    registerAction(NickDeop, SmallIcon("irc-remove-operator"), tr("Take Operator Status"));
-    registerAction(NickHalfop, SmallIcon("irc-voice"), tr("Give Half-Operator Status"));
-    registerAction(NickDehalfop, SmallIcon("irc-unvoice"), tr("Take Half-Operator Status"));
-    registerAction(NickVoice, SmallIcon("irc-voice"), tr("Give Voice"));
-    registerAction(NickDevoice, SmallIcon("irc-unvoice"), tr("Take Voice"));
-    registerAction(NickKick, SmallIcon("im-kick-user"), tr("Kick From Channel"));
-    registerAction(NickBan, SmallIcon("im-ban-user"), tr("Ban From Channel"));
-    registerAction(NickKickBan, SmallIcon("im-ban-kick-user"), tr("Kick && Ban"));
+    registerAction(NickOp, QIcon::fromTheme("irc-operator"), tr("Give Operator Status"));
+    registerAction(NickDeop, QIcon::fromTheme("irc-remove-operator"), tr("Take Operator Status"));
+    registerAction(NickHalfop, QIcon::fromTheme("irc-voice"), tr("Give Half-Operator Status"));
+    registerAction(NickDehalfop, QIcon::fromTheme("irc-unvoice"), tr("Take Half-Operator Status"));
+    registerAction(NickVoice, QIcon::fromTheme("irc-voice"), tr("Give Voice"));
+    registerAction(NickDevoice, QIcon::fromTheme("irc-unvoice"), tr("Take Voice"));
+    registerAction(NickKick, QIcon::fromTheme("im-kick-user"), tr("Kick From Channel"));
+    registerAction(NickBan, QIcon::fromTheme("im-ban-user"), tr("Ban From Channel"));
+    registerAction(NickKickBan, QIcon::fromTheme("im-ban-kick-user"), tr("Kick && Ban"));
 
     registerAction(HideBufferTemporarily, tr("Hide Chat(s) Temporarily"));
     registerAction(HideBufferPermanently, tr("Hide Chat(s) Permanently"));
index b27aaa6..eb512f6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 9587403..bd6dcd0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -204,8 +204,9 @@ QItemSelection FlatProxyModel::mapSelectionToSource(const QItemSelection &proxyS
             row++;
         }
 
-        Q_ASSERT(topLeftItem && bottomRightItem); // there should be one range left.
-        sourceSelection << QItemSelectionRange(mapToSource(createIndex(topLeftItem->pos(), left, topLeftItem)), mapToSource(createIndex(bottomRightItem->pos(), right, bottomRightItem)));
+        if (topLeftItem && bottomRightItem) { // there should be one range left.
+            sourceSelection << QItemSelectionRange(mapToSource(createIndex(topLeftItem->pos(), left, topLeftItem)), mapToSource(createIndex(bottomRightItem->pos(), right, bottomRightItem)));
+        }
     }
 
     return sourceSelection;
index 90c1a5d..079b08d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 466a0a3..df0946d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index f65bbd6..0150d19 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 1c17a5e..0fb34b0 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This contains code from KStatusNotifierItem, part of the KDE libs     *
@@ -31,7 +31,7 @@
 #ifdef Q_WS_X11
 #  include <QX11Info>
 #endif
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  include <KWindowInfo>
 #  include <KWindowSystem>
 #endif
@@ -166,7 +166,7 @@ bool GraphicalUi::checkMainWidgetVisibility(bool perform)
         return true;
     }
 
-#elif defined(HAVE_KDE) && defined(Q_WS_X11)
+#elif defined(HAVE_KDE4) && defined(Q_WS_X11)
     KWindowInfo info1 = KWindowSystem::windowInfo(mainWidget()->winId(), NET::XAWMState | NET::WMState | NET::WMDesktop);
     // mapped = visible (but possibly obscured)
     bool mapped = (info1.mappingState() == NET::Visible) && !info1.isMinimized();
@@ -261,7 +261,7 @@ void GraphicalUi::minimizeRestore(bool show)
 
 void GraphicalUi::activateMainWidget()
 {
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  ifdef Q_WS_X11
     KWindowInfo info = KWindowSystem::windowInfo(mainWidget()->winId(), NET::WMDesktop | NET::WMFrameExtents);
     if (_onAllDesktops) {
@@ -282,7 +282,7 @@ void GraphicalUi::activateMainWidget()
     KWindowSystem::forceActiveWindow(mainWidget()->winId());
 #  endif
 
-#else /* HAVE_KDE */
+#else /* HAVE_KDE4 */
 
 #ifdef Q_WS_X11
     // Bypass focus stealing prevention
@@ -300,13 +300,13 @@ void GraphicalUi::activateMainWidget()
     mainWidget()->raise();
     mainWidget()->activateWindow();
 
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
 }
 
 
 void GraphicalUi::hideMainWidget()
 {
-#if defined(HAVE_KDE) && defined(Q_WS_X11)
+#if defined(HAVE_KDE4) && defined(Q_WS_X11)
     KWindowInfo info = KWindowSystem::windowInfo(mainWidget()->winId(), NET::WMDesktop | NET::WMFrameExtents);
     _onAllDesktops = info.onAllDesktops();
 #endif
index 59d0658..e35b3ce 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
diff --git a/src/uisupport/iconloader.cpp b/src/uisupport/iconloader.cpp
deleted file mode 100644 (file)
index 940c342..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
- *   devel@quassel-irc.org                                                 *
- *                                                                         *
- *   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) version 3.                                           *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
- ***************************************************************************/
-
-#ifndef HAVE_KDE
-
-#include <QCoreApplication>
-#include <QDebug>
-#include <QDir>
-#include <QFile>
-
-#include "iconloader.h"
-#include "quassel.h"
-#include "util.h"
-
-IconLoader IconLoader::_iconLoader;
-int IconLoader::_groupSize[] = { 48, 22, 22, 16, 32, 22 };  // default sizes taken from Oxygen
-
-IconLoader *IconLoader::global()
-{
-    // Workaround: the static _iconLoader might be initialized before the resources it needs
-    // This way, first call to global() will init it by setting the theme
-    if (_iconLoader.theme().isEmpty())
-        _iconLoader.setTheme("oxygen");
-    return &_iconLoader;
-}
-
-
-IconLoader::IconLoader(QObject *parent) : QObject(parent)
-{
-    // setTheme("oxygen");
-}
-
-
-IconLoader::~IconLoader()
-{
-}
-
-
-void IconLoader::setTheme(const QString &theme)
-{
-    _theme = theme;
-    // check which dirs could contain themed icons
-    _themedIconDirNames.clear();
-    _plainIconDirNames.clear();
-
-    // First, look for a system theme
-    // This is supposed to only work on Unix, though other platforms might set $XDG_DATA_DIRS if they please.
-    QStringList iconDirNames = QString(qgetenv("XDG_DATA_DIRS")).split(':', QString::SkipEmptyParts);
-    if (!iconDirNames.isEmpty()) {
-        for (int i = 0; i < iconDirNames.count(); i++)
-            iconDirNames[i].append(QString("/icons/"));
-    }
-#ifdef Q_OS_UNIX
-    else {
-        // Provide a fallback
-        iconDirNames << "/usr/share/icons/";
-    }
-    // Add our prefix too
-    QString appDir = QCoreApplication::applicationDirPath();
-    int binpos = appDir.lastIndexOf("/bin");
-    if (binpos >= 0) {
-        appDir.replace(binpos, 4, "/share");
-        appDir.append("/icons/");
-        if (!iconDirNames.contains(appDir))
-            iconDirNames.append(appDir);
-    }
-#endif
-
-    // Now look for an icons/ subdir in our data paths
-    foreach(const QString &dir, Quassel::dataDirPaths())
-    iconDirNames << dir + "icons/";
-
-    // Add our resource path too
-    iconDirNames << ":/icons/";
-
-    // Ready do add theme names
-    foreach(const QString &dir, iconDirNames) {
-        QString path = dir + theme + '/';
-        if (QFile::exists(path))
-            _themedIconDirNames << path;
-    }
-    foreach(const QString &dir, iconDirNames) {
-        QString path = dir + "hicolor/";
-        if (QFile::exists(path))
-            _themedIconDirNames << path;
-    }
-
-    // We ship some plain (non-themed) icons in $data/pics
-    foreach(const QString &dir, Quassel::dataDirPaths()) {
-        QString path = dir + "pics/";
-        if (QFile::exists(path))
-            _plainIconDirNames << path;
-    }
-    // And of course, our resource path
-    if (QFile::exists(":/pics"))
-        _plainIconDirNames << ":/pics";
-}
-
-
-// TODO: optionally implement cache (speed/memory tradeoff?)
-QPixmap IconLoader::loadIcon(const QString &name, IconLoader::Group group, int size)
-{
-    if (group < 0 || group >= LastGroup) {
-        qWarning() << "Invalid icon group!";
-        return QPixmap();
-    }
-    if (size == 0)
-        size = _groupSize[group];
-
-    QString path = findIconPath(name, size);
-    if (path.isEmpty()) return QPixmap();
-
-    // load the icon
-    return QPixmap(path);
-}
-
-
-QString IconLoader::findIconPath(const QString &name, int size)
-{
-    QString fname = QString("%1.png").arg(name); // we only support PNG so far
-    // First, look for a themed icon... we don't do anything fancy here, only exact match for both name and size
-    foreach(QString basedir, _themedIconDirNames) {
-        QDir sizedir(QString("%1/%2x%2").arg(basedir).arg(QString::number(size)));
-        if (sizedir.exists()) {
-            // ignore context, i.e. scan all subdirs
-            QStringList contextdirs = sizedir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
-            foreach(QString dir, contextdirs) {
-                QString path = QString("%1/%2/%3").arg(sizedir.absolutePath(), dir, fname);
-                if (QFile::exists(path)) return path;
-            }
-        }
-    }
-    // Now check the plain dirs
-    foreach(QString dir, _plainIconDirNames) {
-        QString path = QString("%1/%2").arg(dir, name);
-        if (QFile::exists(path)) return path;
-    }
-
-    qWarning() << "Icon not found:" << name << size;
-    return QString();
-}
-
-
-// Convenience constructors
-
-QPixmap DesktopIcon(const QString &name, int force_size)
-{
-    IconLoader *loader = IconLoader::global();
-    return loader->loadIcon(name, IconLoader::Desktop, force_size);
-}
-
-
-QPixmap BarIcon(const QString &name, int force_size)
-{
-    IconLoader *loader = IconLoader::global();
-    return loader->loadIcon(name, IconLoader::Toolbar, force_size);
-}
-
-
-QPixmap MainBarIcon(const QString &name, int force_size)
-{
-    IconLoader *loader = IconLoader::global();
-    return loader->loadIcon(name, IconLoader::MainToolbar, force_size);
-}
-
-
-QPixmap SmallIcon(const QString &name, int force_size)
-{
-    IconLoader *loader = IconLoader::global();
-    return loader->loadIcon(name, IconLoader::Small, force_size);
-}
-
-
-#endif
diff --git a/src/uisupport/iconloader.h b/src/uisupport/iconloader.h
deleted file mode 100644 (file)
index ee94db6..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
- *   devel@quassel-irc.org                                                 *
- *                                                                         *
- *   Based in part on KDE's kiconloader.h                                  *
- *   This declares a subset of that API.                                   *
- *                                                                         *
- *   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) version 3.                                           *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
- ***************************************************************************/
-
-#ifndef ICONLOADER_H_
-#define ICONLOADER_H_
-
-#ifndef HAVE_KDE
-
-#include <QPixmap>
-
-/// Provides basic facilities to load icons from standard locations or resources
-/** This implements a (very) basic subset of KIconLoader's API, such that we can use those classes
- *  interchangeably in Quassel.
- *
- *  We currently (unless somebody does a more fancy implementation ;-)) assume the Oxygen icon theme
- *  to be used. In particular, this means that we do assume its directory layout and existing icons to
- *  be present. Though it should be easy to switch to a different theme name, we don't currently support
- *  any fallback mechanism if this other theme misses an icon for a given size. Also, we only support PNG.
- *
- *  Since we do support integrating the required part of Oxygen into the binary via Qt Resources, this
- *  should work for everyone for now.
- *
- *  - $XDG_DATA_DIRS/icons/$theme (in order)
- *  - :/icons/$theme (fallback in case we use Qt Resources)
- *  - $XDG_DATA_DIRS/apps/quassel/icons/hicolor (our own unthemed icons)
- *  - :/icons/hicolor
- *  - $XDG_DATA_DIRS/apps/quassel/pics
- *  - :/pics
- *
- *  We don't search for size/context dirs in /pics, i.e. for a given $name, we expect pics/$name.png.
- */
-class IconLoader : public QObject
-{
-    Q_OBJECT
-
-public:
-    enum Group {
-        NoGroup = -1, ///< No group
-        Desktop = 0, ///< Desktop icons
-        Toolbar,    ///< Toolbar icons
-        MainToolbar, ///< Main toolbar icons
-        Small,      ///< Small icons, e.g. for buttons
-        Panel,      ///< Panel icons
-        Dialog,     ///< Icons for use in dialog title etc.
-        LastGroup
-    };
-
-    /// Standard icon sizes
-    enum StdSizes {
-        SizeSmall = 16,   ///< Small icons for menu entries
-        SizeSmallMedium = 22, ///< Slightly larger small icons for toolbars, panels, etc
-        SizeMedium = 32,  ///< Medium-sized icons for the desktop
-        SizeLarge = 48,   ///< Large icons for the panel
-        SizeHuge = 64,    ///< Huge icons for iconviews
-        SizeEnormous = 128 ///< Enormous icons for iconviews
-    };
-
-    explicit IconLoader(QObject *parent = 0);
-    ~IconLoader();
-
-    static IconLoader *global();
-
-    /// Load a pixmap for the given name and group
-    QPixmap loadIcon(const QString &name, IconLoader::Group group, int size = 0);
-
-    inline QString theme() const;
-    void setTheme(const QString &name);
-
-private:
-    QString findIconPath(const QString &name, int size);
-
-    static IconLoader _iconLoader;
-    QString _theme;
-    QStringList _themedIconDirNames;
-    QStringList _plainIconDirNames;
-    static int _groupSize[];
-};
-
-
-// convenience
-QPixmap DesktopIcon(const QString &name, int size = 0);
-QPixmap BarIcon(const QString &name, int size = 0);
-QPixmap MainBarIcon(const QString &name, int size = 0);
-QPixmap SmallIcon(const QString &name, int size = 0);
-//QPixmap SmallMediumIcon(const QString &name, int size = 0);  // not part of KIconLoader
-
-QString IconLoader::theme() const { return _theme; }
-
-#else /* HAVE_KDE */
-
-#include <KIconLoader>
-class IconLoader : public KIconLoader
-{
-    Q_OBJECT
-};
-
-
-#endif /* HAVE_KDE */
-
-#endif
index b61b6e8..a263e3c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -27,11 +27,16 @@ KCmdLineWrapper::KCmdLineWrapper()
 }
 
 
-void KCmdLineWrapper::addArgument(const QString &longName, const CliParserArg &arg)
+void KCmdLineWrapper::addArgument(const QString &longName_, const CliParserArg &arg)
 {
+    QString longName = longName_;
+    if (arg.type == CliParserArg::CliArgOption && !arg.valueName.isEmpty())
+        longName += " <" + arg.valueName + ">";
+
     if (arg.shortName != 0) {
-        _cmdLineOptions.add(QByteArray().append(arg.shortName));
+        _cmdLineOptions.add(QByteArray(1, arg.shortName));
     }
+
     _cmdLineOptions.add(longName.toUtf8(), ki18n(arg.help.toUtf8()), arg.def.toUtf8());
 }
 
index fc0bbb0..f5ab1b1 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index f5ed317..ed0dbb6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -43,9 +43,7 @@ MultiLineEdit::MultiLineEdit(QWidget *parent)
     _emacsMode(false),
     _lastDocumentHeight(-1)
 {
-#if QT_VERSION >= 0x040500
-    document()->setDocumentMargin(0); // new in Qt 4.5 and we really don't want it here
-#endif
+    document()->setDocumentMargin(0);
 
     setAcceptRichText(false);
 #ifdef HAVE_KDE
@@ -296,18 +294,7 @@ bool MultiLineEdit::event(QEvent *e)
 
 void MultiLineEdit::keyPressEvent(QKeyEvent *event)
 {
-    // Workaround the fact that Qt < 4.5 doesn't know InsertLineSeparator yet
-#if QT_VERSION >= 0x040500
     if (event == QKeySequence::InsertLineSeparator) {
-#else
-
-# ifdef Q_OS_MAC
-    if ((event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) && event->modifiers() & Qt::META) {
-# else
-    if ((event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) && event->modifiers() & Qt::SHIFT) {
-# endif
-#endif
-
         if (_mode == SingleLine) {
             event->accept();
             on_returnPressed();
@@ -564,22 +551,18 @@ QString MultiLineEdit::convertRichtextToMircCodes()
 
         cursor.clearSelection();
     }
-    if (color) {
-        color = false;
+
+    if (color)
         mircText.append('\x03');
-    }
-    if (underline) {
-        underline = false;
+
+    if (underline)
         mircText.append('\x1f');
-    }
-    if (italic) {
-        italic = false;
+
+    if (italic)
         mircText.append('\x1d');
-    }
-    if (bold) {
-        bold = false;
+
+    if (bold)
         mircText.append('\x02');
-    }
 
     return mircText;
 }
index 899cc07..7591a51 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 #include <QKeyEvent>
 #include <QHash>
 
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
 #  include <KDE/KTextEdit>
 #  define MultiLineEditParent KTextEdit
+#elif defined HAVE_KF5
+#  include <KTextWidgets/KTextEdit>
+#  define MultiLineEditParent KTextEdit
 #else
 #  include <QTextEdit>
 #  define MultiLineEditParent QTextEdit
index 9e42fe2..e447238 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -21,6 +21,7 @@
 #include <QComboBox>
 #include <QDialogButtonBox>
 #include <QGridLayout>
+#include <QIcon>
 #include <QLabel>
 #include <QLineEdit>
 #include <QInputDialog>
@@ -31,7 +32,6 @@
 
 #include "buffermodel.h"
 #include "buffersettings.h"
-#include "iconloader.h"
 #include "clientidentity.h"
 #include "network.h"
 #include "util.h"
@@ -59,7 +59,7 @@ Action *NetworkModelController::registerAction(ActionType type, const QString &t
 }
 
 
-Action *NetworkModelController::registerAction(ActionType type, const QPixmap &icon, const QString &text, bool checkable)
+Action *NetworkModelController::registerAction(ActionType type, const QIcon &icon, const QString &text, bool checkable)
 {
     Action *act;
     if (icon.isNull())
@@ -526,7 +526,7 @@ void NetworkModelController::handleNickAction(ActionType type, QAction *action)
 
 NetworkModelController::JoinDlg::JoinDlg(const QModelIndex &index, QWidget *parent) : QDialog(parent)
 {
-    setWindowIcon(SmallIcon("irc-join-channel"));
+    setWindowIcon(QIcon::fromTheme("irc-join-channel"));
     setWindowTitle(tr("Join Channel"));
 
     QGridLayout *layout = new QGridLayout(this);
index a06c08c..3f1b29f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -138,7 +138,7 @@ protected:
     void setSlot(QObject *receiver, const char *method);
 
     Action *registerAction(ActionType type, const QString &text, bool checkable = false);
-    Action *registerAction(ActionType type, const QPixmap &icon, const QString &text, bool checkable = false);
+    Action *registerAction(NetworkModelController::ActionType type, const QIcon &icon, const QString &text, bool checkable = false);
     bool checkRequirements(const QModelIndex &index, ItemActiveStates requiredActiveState = QFlags<ItemActiveState>(ActiveState | InactiveState));
 
     QString nickName(const QModelIndex &index) const;
index 782fcb9..fa17ad7 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3f5734e..fd922da 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 83a7ce3..1482040 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -22,7 +22,6 @@
 
 #include "buffersettings.h"
 #include "graphicalui.h"
-#include "iconloader.h"
 #include "networkmodel.h"
 #include "uistyle.h"
 
index f452b67..df81e99 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e02bf46..1d8254e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index a45b7da..e2081b9 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 0650209..b3fbe78 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index af715c4..1d6e2bf 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index adbe13d..009ab4c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index ccd93fb..eaa0d5f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index e6c0712..90af6e6 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 330838c..e91188f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 5cc80c9..130095d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index b3b51bc..4e11c9d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3c92cf1..ed8ea61 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include <QIcon>
 #include <QMenu>
 #include <QToolBar>
 
 #include "toolbaractionprovider.h"
 
-#include "iconloader.h"
-
 ToolBarActionProvider::ToolBarActionProvider(QObject *parent)
     : NetworkModelController(parent)
 {
-    registerAction(NetworkConnectAll, DesktopIcon("network-connect"), tr("Connect"))->setToolTip(tr("Connect to IRC"));
-    registerAction(NetworkDisconnectAll, DesktopIcon("network-disconnect"), tr("Disconnect"))->setToolTip(tr("Disconnect from IRC"));
-
-    registerAction(BufferPart, DesktopIcon("irc-close-channel"), tr("Part"))->setToolTip(tr("Leave currently selected channel"));
-    registerAction(JoinChannel, DesktopIcon("irc-join-channel"), tr("Join"))->setToolTip(tr("Join a channel"));
-
-    registerAction(NickQuery, DesktopIcon("mail-message-new"), tr("Query"))->setToolTip(tr("Start a private conversation")); // fix icon
-    registerAction(NickWhois, DesktopIcon("im-user"), tr("Whois"))->setToolTip(tr("Request user information")); // fix icon
-
-    registerAction(NickOp, DesktopIcon("irc-operator"), tr("Op"))->setToolTip(tr("Give operator privileges to user"));
-    registerAction(NickDeop, DesktopIcon("irc-remove-operator"), tr("Deop"))->setToolTip(tr("Take operator privileges from user"));
-    registerAction(NickVoice, DesktopIcon("irc-voice"), tr("Voice"))->setToolTip(tr("Give voice to user"));
-    registerAction(NickDevoice, DesktopIcon("irc-unvoice"), tr("Devoice"))->setToolTip(tr("Take voice from user"));
-    registerAction(NickKick, DesktopIcon("im-kick-user"), tr("Kick"))->setToolTip(tr("Remove user from channel"));
-    registerAction(NickBan, DesktopIcon("im-ban-user"), tr("Ban"))->setToolTip(tr("Ban user from channel"));
-    registerAction(NickKickBan, DesktopIcon("im-ban-kick-user"), tr("Kick/Ban"))->setToolTip(tr("Remove and ban user from channel"));
+    registerAction(NetworkConnectAll, QIcon::fromTheme("network-connect"), tr("Connect"))->setToolTip(tr("Connect to IRC"));
+    registerAction(NetworkDisconnectAll, QIcon::fromTheme("network-disconnect"), tr("Disconnect"))->setToolTip(tr("Disconnect from IRC"));
+
+    registerAction(BufferPart, QIcon::fromTheme("irc-close-channel"), tr("Part"))->setToolTip(tr("Leave currently selected channel"));
+    registerAction(JoinChannel, QIcon::fromTheme("irc-join-channel"), tr("Join"))->setToolTip(tr("Join a channel"));
+
+    registerAction(NickQuery, QIcon::fromTheme("mail-message-new"), tr("Query"))->setToolTip(tr("Start a private conversation")); // fix icon
+    registerAction(NickWhois, QIcon::fromTheme("im-user"), tr("Whois"))->setToolTip(tr("Request user information")); // fix icon
+
+    registerAction(NickOp, QIcon::fromTheme("irc-operator"), tr("Op"))->setToolTip(tr("Give operator privileges to user"));
+    registerAction(NickDeop, QIcon::fromTheme("irc-remove-operator"), tr("Deop"))->setToolTip(tr("Take operator privileges from user"));
+    registerAction(NickVoice, QIcon::fromTheme("irc-voice"), tr("Voice"))->setToolTip(tr("Give voice to user"));
+    registerAction(NickDevoice, QIcon::fromTheme("irc-unvoice"), tr("Devoice"))->setToolTip(tr("Take voice from user"));
+    registerAction(NickKick, QIcon::fromTheme("im-kick-user"), tr("Kick"))->setToolTip(tr("Remove user from channel"));
+    registerAction(NickBan, QIcon::fromTheme("im-ban-user"), tr("Ban"))->setToolTip(tr("Ban user from channel"));
+    registerAction(NickKickBan, QIcon::fromTheme("im-ban-kick-user"), tr("Kick/Ban"))->setToolTip(tr("Remove and ban user from channel"));
 
     _networksConnectMenu = new QMenu();
     _networksConnectMenu->setSeparatorsCollapsible(false);
index ab3e6bd..781923e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index d173118..80d8fed 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 32109b3..f882a93 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
index 3ed50c1..944b604 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -19,9 +19,9 @@
  ***************************************************************************/
 
 #include <QApplication>
+#include <QIcon>
 
 #include "buffersettings.h"
-#include "iconloader.h"
 #include "qssparser.h"
 #include "quassel.h"
 #include "uistyle.h"
@@ -33,13 +33,13 @@ QString UiStyle::_timestampFormatString;
 
 UiStyle::UiStyle(QObject *parent)
     : QObject(parent),
-    _channelJoinedIcon(SmallIcon("irc-channel-active")),
-    _channelPartedIcon(SmallIcon("irc-channel-inactive")),
-    _userOfflineIcon(SmallIcon("im-user-offline")),
-    _userOnlineIcon(SmallIcon("im-user")),
-    _userAwayIcon(SmallIcon("im-user-away")),
-    _categoryOpIcon(SmallIcon("irc-operator")),
-    _categoryVoiceIcon(SmallIcon("irc-voice")),
+    _channelJoinedIcon(QIcon::fromTheme("irc-channel-joined", QIcon(":/icons/irc-channel-joined.png"))),
+    _channelPartedIcon(QIcon::fromTheme("irc-channel-parted", QIcon(":/icons/irc-channel-parted.png"))),
+    _userOfflineIcon(QIcon::fromTheme("im-user-offline", QIcon::fromTheme("user-offline", QIcon(":/icons/im-user-offline.png")))),
+    _userOnlineIcon(QIcon::fromTheme("im-user", QIcon::fromTheme("user-available", QIcon(":/icons/im-user.png")))), // im-user-* are non-standard oxygen extensions
+    _userAwayIcon(QIcon::fromTheme("im-user-away", QIcon::fromTheme("user-away", QIcon(":/icons/im-user-away.png")))),
+    _categoryOpIcon(QIcon::fromTheme("irc-operator")),
+    _categoryVoiceIcon(QIcon::fromTheme("irc-voice")),
     _opIconLimit(UserCategoryItem::categoryFromModes("o")),
     _voiceIconLimit(UserCategoryItem::categoryFromModes("v"))
 {
index ccdeecd..1e8736f 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2015 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -24,6 +24,7 @@
 #include <QDataStream>
 #include <QFontMetricsF>
 #include <QHash>
+#include <QIcon>
 #include <QTextCharFormat>
 #include <QTextLayout>
 #include <QPalette>
@@ -185,13 +186,13 @@ private:
     static QHash<QString, FormatType> _formatCodes;
     static QString _timestampFormatString;
 
-    QPixmap _channelJoinedIcon;
-    QPixmap _channelPartedIcon;
-    QPixmap _userOfflineIcon;
-    QPixmap _userOnlineIcon;
-    QPixmap _userAwayIcon;
-    QPixmap _categoryOpIcon;
-    QPixmap _categoryVoiceIcon;
+    QIcon _channelJoinedIcon;
+    QIcon _channelPartedIcon;
+    QIcon _userOfflineIcon;
+    QIcon _userOnlineIcon;
+    QIcon _userAwayIcon;
+    QIcon _categoryOpIcon;
+    QIcon _categoryVoiceIcon;
     int _opIconLimit;
     int _voiceIconLimit;
     bool _showNickViewIcons;