From ed2403332358cd0ae0429ca00616db704b54fab6 Mon Sep 17 00:00:00 2001 From: defnax Date: Fri, 17 Jun 2011 20:04:10 +0000 Subject: [PATCH] removed not needed gui plugins git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4284 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- plugins/i2pmessenger_plugin/Doxyfile | 283 --- .../I2PMessengerPlugin.cpp | 31 - .../i2pmessenger_plugin/I2PMessengerPlugin.h | 27 - plugins/i2pmessenger_plugin/about.html | 16 - plugins/i2pmessenger_plugin/application.ini | 18 - .../gui/form_DebugMessages.cpp | 76 - .../gui/form_DebugMessages.h | 44 - .../gui/form_DebugMessages.ui | 77 - .../gui/form_HelpDialog.cpp | 77 - .../i2pmessenger_plugin/gui/form_HelpDialog.h | 42 - .../gui/form_HelpDialog.ui | 684 ------- plugins/i2pmessenger_plugin/gui/form_Main.cpp | 586 ------ plugins/i2pmessenger_plugin/gui/form_Main.h | 106 -- plugins/i2pmessenger_plugin/gui/form_Main.ui | 68 - .../gui/form_chatwidget.cpp | 234 --- .../i2pmessenger_plugin/gui/form_chatwidget.h | 55 - .../gui/form_chatwidget.ui | 297 --- .../gui/form_fileRecive.cpp | 123 -- .../i2pmessenger_plugin/gui/form_fileRecive.h | 48 - .../gui/form_fileRecive.ui | 206 --- .../i2pmessenger_plugin/gui/form_fileSend.cpp | 156 -- .../i2pmessenger_plugin/gui/form_fileSend.h | 48 - .../i2pmessenger_plugin/gui/form_fileSend.ui | 242 --- .../i2pmessenger_plugin/gui/form_newUser.cpp | 102 - .../i2pmessenger_plugin/gui/form_newUser.h | 40 - .../i2pmessenger_plugin/gui/form_newUser.ui | 126 -- .../i2pmessenger_plugin/gui/form_rename.cpp | 41 - plugins/i2pmessenger_plugin/gui/form_rename.h | 40 - .../i2pmessenger_plugin/gui/form_rename.ui | 122 -- .../gui/form_settingsgui.cpp | 313 ---- .../gui/form_settingsgui.h | 59 - .../gui/form_settingsgui.ui | 1647 ----------------- plugins/i2pmessenger_plugin/gui/gui_icons.h | 46 - .../gui/icons/1leftarrow.png | Bin 589 -> 0 bytes .../i2pmessenger_plugin/gui/icons/Thumbs.db | Bin 54272 -> 0 bytes .../i2pmessenger_plugin/gui/icons/Tools.gif | Bin 929 -> 0 bytes .../i2pmessenger_plugin/gui/icons/about.png | Bin 1490 -> 0 bytes .../gui/icons/add_group.png | Bin 1412 -> 0 bytes .../gui/icons/add_user.png | Bin 1214 -> 0 bytes .../i2pmessenger_plugin/gui/icons/chatty.png | Bin 933 -> 0 bytes plugins/i2pmessenger_plugin/gui/icons/dnd.png | Bin 894 -> 0 bytes .../gui/icons/editcopy.png | Bin 784 -> 0 bytes .../gui/icons/encrypted24.png | Bin 1264 -> 0 bytes .../i2pmessenger_plugin/gui/icons/exit.png | Bin 1583 -> 0 bytes .../i2pmessenger_plugin/gui/icons/green.png | Bin 774 -> 0 bytes .../gui/icons/i2pmessenger_win.rc | 3 - .../gui/icons/i2pmessenger_win.rc.h | 25 - .../gui/icons/invisible.png | Bin 932 -> 0 bytes .../gui/icons/looknfeel24.png | Bin 1258 -> 0 bytes .../gui/icons/personal.ico | Bin 25214 -> 0 bytes .../gui/icons/quick_restart.png | Bin 4123 -> 0 bytes .../i2pmessenger_plugin/gui/icons/rebuild.png | Bin 931 -> 0 bytes plugins/i2pmessenger_plugin/gui/icons/red.png | Bin 644 -> 0 bytes .../i2pmessenger_plugin/gui/icons/self.png | Bin 768 -> 0 bytes .../i2pmessenger_plugin/gui/icons/send.png | Bin 860 -> 0 bytes .../gui/icons/settings.png | Bin 1535 -> 0 bytes .../gui/icons/socket24.png | Bin 1785 -> 0 bytes .../i2pmessenger_plugin/gui/icons/sound.png | Bin 1639 -> 0 bytes .../gui/icons/sound_off.png | Bin 1826 -> 0 bytes .../gui/icons/status_unknown.png | Bin 1220 -> 0 bytes .../gui/icons/userblue24.png | Bin 1351 -> 0 bytes .../gui/icons/usergreen24.png | Bin 1252 -> 0 bytes .../gui/icons/userlightgrey24.png | Bin 1287 -> 0 bytes .../gui/icons/useroffline24.png | Bin 1205 -> 0 bytes .../gui/icons/userred24.png | Bin 1005 -> 0 bytes .../gui/icons/window_fullscreen.png | Bin 623 -> 0 bytes .../gui/icons/window_nofullscreen.png | Bin 647 -> 0 bytes plugins/i2pmessenger_plugin/gui/icons/xa.png | Bin 953 -> 0 bytes .../i2pmessenger_plugin/gui/icons/yellow.png | Bin 701 -> 0 bytes plugins/i2pmessenger_plugin/gui/resourcen.qrc | 29 - plugins/i2pmessenger_plugin/qt_chat.pro | 99 - plugins/i2pmessenger_plugin/sounds/File.wav | Bin 23430 -> 0 bytes plugins/i2pmessenger_plugin/sounds/Notify.wav | Bin 12213 -> 0 bytes .../i2pmessenger_plugin/sounds/Startup.wav | Bin 19478 -> 0 bytes .../i2pmessenger_plugin/src/ConnectionI2P.cpp | 338 ---- .../i2pmessenger_plugin/src/ConnectionI2P.h | 123 -- plugins/i2pmessenger_plugin/src/Core.cpp | 962 ---------- plugins/i2pmessenger_plugin/src/Core.h | 154 -- .../src/DebugMessageManager.cpp | 57 - .../src/DebugMessageManager.h | 53 - .../src/FileTransferRecive.cpp | 150 -- .../src/FileTransferRecive.h | 61 - .../src/FileTransferSend.cpp | 144 -- .../src/FileTransferSend.h | 79 - .../src/I2PSamMessageAnalyser.cpp | 251 --- .../src/I2PSamMessageAnalyser.h | 96 - plugins/i2pmessenger_plugin/src/Main.cpp | 37 - .../i2pmessenger_plugin/src/PacketManager.cpp | 72 - .../i2pmessenger_plugin/src/PacketManager.h | 45 - plugins/i2pmessenger_plugin/src/Protocol.cpp | 333 ---- plugins/i2pmessenger_plugin/src/Protocol.h | 95 - .../i2pmessenger_plugin/src/SoundManager.cpp | 101 - .../i2pmessenger_plugin/src/SoundManager.h | 61 - plugins/i2pmessenger_plugin/src/User.cpp | 224 --- plugins/i2pmessenger_plugin/src/User.h | 127 -- .../src/UserConnectThread.cpp | 58 - .../src/UserConnectThread.h | 52 - plugins/i2pmessenger_plugin/templates/cpp | 19 - plugins/i2pmessenger_plugin/templates/h | 19 - plugins/linkscloud_plugin/AddLinksDialog.cpp | 124 -- plugins/linkscloud_plugin/AddLinksDialog.h | 48 - plugins/linkscloud_plugin/AddLinksDialog.ui | 289 --- plugins/linkscloud_plugin/LinksDialog.cpp | 1055 ----------- plugins/linkscloud_plugin/LinksDialog.h | 91 - plugins/linkscloud_plugin/LinksDialog.ui | 588 ------ plugins/linkscloud_plugin/LinksPlugin.cpp | 32 - plugins/linkscloud_plugin/LinksPlugin.h | 27 - .../linkscloud_plugin/linkscloud_plugin.pro | 58 - 108 files changed, 12259 deletions(-) delete mode 100644 plugins/i2pmessenger_plugin/Doxyfile delete mode 100644 plugins/i2pmessenger_plugin/I2PMessengerPlugin.cpp delete mode 100644 plugins/i2pmessenger_plugin/I2PMessengerPlugin.h delete mode 100644 plugins/i2pmessenger_plugin/about.html delete mode 100644 plugins/i2pmessenger_plugin/application.ini delete mode 100644 plugins/i2pmessenger_plugin/gui/form_DebugMessages.cpp delete mode 100644 plugins/i2pmessenger_plugin/gui/form_DebugMessages.h delete mode 100644 plugins/i2pmessenger_plugin/gui/form_DebugMessages.ui delete mode 100644 plugins/i2pmessenger_plugin/gui/form_HelpDialog.cpp delete mode 100644 plugins/i2pmessenger_plugin/gui/form_HelpDialog.h delete mode 100644 plugins/i2pmessenger_plugin/gui/form_HelpDialog.ui delete mode 100644 plugins/i2pmessenger_plugin/gui/form_Main.cpp delete mode 100644 plugins/i2pmessenger_plugin/gui/form_Main.h delete mode 100644 plugins/i2pmessenger_plugin/gui/form_Main.ui delete mode 100644 plugins/i2pmessenger_plugin/gui/form_chatwidget.cpp delete mode 100644 plugins/i2pmessenger_plugin/gui/form_chatwidget.h delete mode 100644 plugins/i2pmessenger_plugin/gui/form_chatwidget.ui delete mode 100644 plugins/i2pmessenger_plugin/gui/form_fileRecive.cpp delete mode 100644 plugins/i2pmessenger_plugin/gui/form_fileRecive.h delete mode 100644 plugins/i2pmessenger_plugin/gui/form_fileRecive.ui delete mode 100644 plugins/i2pmessenger_plugin/gui/form_fileSend.cpp delete mode 100644 plugins/i2pmessenger_plugin/gui/form_fileSend.h delete mode 100644 plugins/i2pmessenger_plugin/gui/form_fileSend.ui delete mode 100644 plugins/i2pmessenger_plugin/gui/form_newUser.cpp delete mode 100644 plugins/i2pmessenger_plugin/gui/form_newUser.h delete mode 100644 plugins/i2pmessenger_plugin/gui/form_newUser.ui delete mode 100644 plugins/i2pmessenger_plugin/gui/form_rename.cpp delete mode 100644 plugins/i2pmessenger_plugin/gui/form_rename.h delete mode 100644 plugins/i2pmessenger_plugin/gui/form_rename.ui delete mode 100644 plugins/i2pmessenger_plugin/gui/form_settingsgui.cpp delete mode 100644 plugins/i2pmessenger_plugin/gui/form_settingsgui.h delete mode 100644 plugins/i2pmessenger_plugin/gui/form_settingsgui.ui delete mode 100644 plugins/i2pmessenger_plugin/gui/gui_icons.h delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/1leftarrow.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/Thumbs.db delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/Tools.gif delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/about.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/add_group.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/add_user.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/chatty.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/dnd.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/editcopy.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/encrypted24.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/exit.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/green.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/i2pmessenger_win.rc delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/i2pmessenger_win.rc.h delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/invisible.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/looknfeel24.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/personal.ico delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/quick_restart.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/rebuild.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/red.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/self.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/send.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/settings.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/socket24.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/sound.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/sound_off.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/status_unknown.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/userblue24.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/usergreen24.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/userlightgrey24.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/useroffline24.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/userred24.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/window_fullscreen.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/window_nofullscreen.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/xa.png delete mode 100644 plugins/i2pmessenger_plugin/gui/icons/yellow.png delete mode 100644 plugins/i2pmessenger_plugin/gui/resourcen.qrc delete mode 100644 plugins/i2pmessenger_plugin/qt_chat.pro delete mode 100644 plugins/i2pmessenger_plugin/sounds/File.wav delete mode 100644 plugins/i2pmessenger_plugin/sounds/Notify.wav delete mode 100644 plugins/i2pmessenger_plugin/sounds/Startup.wav delete mode 100644 plugins/i2pmessenger_plugin/src/ConnectionI2P.cpp delete mode 100644 plugins/i2pmessenger_plugin/src/ConnectionI2P.h delete mode 100644 plugins/i2pmessenger_plugin/src/Core.cpp delete mode 100644 plugins/i2pmessenger_plugin/src/Core.h delete mode 100644 plugins/i2pmessenger_plugin/src/DebugMessageManager.cpp delete mode 100644 plugins/i2pmessenger_plugin/src/DebugMessageManager.h delete mode 100644 plugins/i2pmessenger_plugin/src/FileTransferRecive.cpp delete mode 100644 plugins/i2pmessenger_plugin/src/FileTransferRecive.h delete mode 100644 plugins/i2pmessenger_plugin/src/FileTransferSend.cpp delete mode 100644 plugins/i2pmessenger_plugin/src/FileTransferSend.h delete mode 100644 plugins/i2pmessenger_plugin/src/I2PSamMessageAnalyser.cpp delete mode 100644 plugins/i2pmessenger_plugin/src/I2PSamMessageAnalyser.h delete mode 100644 plugins/i2pmessenger_plugin/src/Main.cpp delete mode 100644 plugins/i2pmessenger_plugin/src/PacketManager.cpp delete mode 100644 plugins/i2pmessenger_plugin/src/PacketManager.h delete mode 100644 plugins/i2pmessenger_plugin/src/Protocol.cpp delete mode 100644 plugins/i2pmessenger_plugin/src/Protocol.h delete mode 100644 plugins/i2pmessenger_plugin/src/SoundManager.cpp delete mode 100644 plugins/i2pmessenger_plugin/src/SoundManager.h delete mode 100644 plugins/i2pmessenger_plugin/src/User.cpp delete mode 100644 plugins/i2pmessenger_plugin/src/User.h delete mode 100644 plugins/i2pmessenger_plugin/src/UserConnectThread.cpp delete mode 100644 plugins/i2pmessenger_plugin/src/UserConnectThread.h delete mode 100644 plugins/i2pmessenger_plugin/templates/cpp delete mode 100644 plugins/i2pmessenger_plugin/templates/h delete mode 100644 plugins/linkscloud_plugin/AddLinksDialog.cpp delete mode 100644 plugins/linkscloud_plugin/AddLinksDialog.h delete mode 100644 plugins/linkscloud_plugin/AddLinksDialog.ui delete mode 100644 plugins/linkscloud_plugin/LinksDialog.cpp delete mode 100644 plugins/linkscloud_plugin/LinksDialog.h delete mode 100644 plugins/linkscloud_plugin/LinksDialog.ui delete mode 100644 plugins/linkscloud_plugin/LinksPlugin.cpp delete mode 100644 plugins/linkscloud_plugin/LinksPlugin.h delete mode 100644 plugins/linkscloud_plugin/linkscloud_plugin.pro diff --git a/plugins/i2pmessenger_plugin/Doxyfile b/plugins/i2pmessenger_plugin/Doxyfile deleted file mode 100644 index 9e3f2c382..000000000 --- a/plugins/i2pmessenger_plugin/Doxyfile +++ /dev/null @@ -1,283 +0,0 @@ -# Doxyfile 1.5.1-KDevelop - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = qt_chat -PROJECT_NUMBER = 0.1 -OUTPUT_DIRECTORY = -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = YES -STRIP_FROM_PATH = /home/normal/ -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = NO -OPTIMIZE_OUTPUT_JAVA = NO -BUILTIN_STL_SUPPORT = NO -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = NO -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = NO -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = /home/normal/c++/qt_chat -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.d \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.idl \ - *.odl \ - *.cs \ - *.php \ - *.php3 \ - *.inc \ - *.m \ - *.mm \ - *.dox \ - *.py \ - *.C \ - *.CC \ - *.C++ \ - *.II \ - *.I++ \ - *.H \ - *.HH \ - *.H++ \ - *.CS \ - *.PHP \ - *.PHP3 \ - *.M \ - *.MM \ - *.PY \ - *.C \ - *.H \ - *.tlh \ - *.diff \ - *.patch \ - *.moc \ - *.xpm \ - *.dox -RECURSIVE = yes -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = * -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -REFERENCES_LINK_SOURCE = YES -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = YES -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = yes -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = qt_chat.tag -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -CALLER_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/plugins/i2pmessenger_plugin/I2PMessengerPlugin.cpp b/plugins/i2pmessenger_plugin/I2PMessengerPlugin.cpp deleted file mode 100644 index 4f7e0c0e0..000000000 --- a/plugins/i2pmessenger_plugin/I2PMessengerPlugin.cpp +++ /dev/null @@ -1,31 +0,0 @@ -//#include -//#include -//#include - -#include "I2PMessengerPlugin.h" -#include "gui/form_Main.h" - -QString -I2PMessengerPlugin::pluginDescription() const -{ - QString res; - res = "A I2P Messenger plugin" ; - - return res; -} - -QString -I2PMessengerPlugin::pluginName() const -{ - return "I2P Messenger" ; -} - -QWidget* -I2PMessengerPlugin::pluginWidget(QWidget * parent ) -{ - form_MainWindow* mainForm= new form_MainWindow(); - return mainForm; -} - - -Q_EXPORT_PLUGIN2(i2pmessenger_plugin, I2PMessengerPlugin) diff --git a/plugins/i2pmessenger_plugin/I2PMessengerPlugin.h b/plugins/i2pmessenger_plugin/I2PMessengerPlugin.h deleted file mode 100644 index a989d6c3f..000000000 --- a/plugins/i2pmessenger_plugin/I2PMessengerPlugin.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef _HWA_PLUGIN_H_ -#define _HWA_PLUGIN_H_ - -#include - -#include -#include - -#include - -#include - -class I2PMessengerPlugin: public QObject, public PluginInterface -{ - Q_OBJECT - Q_INTERFACES(PluginInterface) - - public slots: - - virtual QString pluginDescription() const ; - virtual QString pluginName() const ; - - virtual QWidget* pluginWidget(QWidget * parent = 0) ; - -}; - -#endif diff --git a/plugins/i2pmessenger_plugin/about.html b/plugins/i2pmessenger_plugin/about.html deleted file mode 100644 index 4edcea111..000000000 --- a/plugins/i2pmessenger_plugin/about.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -
-

- -
-Applicationversion:	[APPVERSIONSTRING]
-Protocolversion:	[PROTOCOLVERSIONSTRING]
-	
-
-
- - diff --git a/plugins/i2pmessenger_plugin/application.ini b/plugins/i2pmessenger_plugin/application.ini deleted file mode 100644 index 181cda3d7..000000000 --- a/plugins/i2pmessenger_plugin/application.ini +++ /dev/null @@ -1,18 +0,0 @@ -[%General] -Debug_Max_Message_count=99 -Waittime_between_rechecking_offline_users=30000 -current_Style=Plastique -current_Style_sheet=Default - -[Network] -Destination=test -SamHost=192.168.0.1 -SamPort=7656 -SessionOptionString="inbound.nickname=I2PChat inbound.quantity=1 inbound.backupQuantity=1 inbound.length=1 outbound.quantity=1 outbound.backupQuantity=1 outbound.length=1" -TunnelName=I2PChat -inbound.backupQuantity=1 -inbound.length=1 -inbound.quantity=1 -outbound.backupQuantity=1 -outbound.length=1 -outbound.quantity=1 diff --git a/plugins/i2pmessenger_plugin/gui/form_DebugMessages.cpp b/plugins/i2pmessenger_plugin/gui/form_DebugMessages.cpp deleted file mode 100644 index be6b181c6..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_DebugMessages.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include "form_DebugMessages.h" - -form_DebugMessages::form_DebugMessages(cCore* core,QDialog *parent){ - setupUi(this); - this->setAttribute(Qt::WA_DeleteOnClose,true); - - this->core=core; - this->DebugMessageManager=core->get_DebugMessageHandler(); - - connect(cmd_clear,SIGNAL(clicked() ),this,SLOT(clearDebugMessages())); - connect(DebugMessageManager,SIGNAL(newDebugMessage(QString) ),this,SLOT(newDebugMessage( QString))); - connect(cmd_connectionDump,SIGNAL(clicked()),this, - SLOT(connectionDump())); - - newDebugMessage(""); -} - -form_DebugMessages::~form_DebugMessages() -{ -} - -void form_DebugMessages::connectionDump() -{ - QString Message=core->get_connectionDump(); - - QMessageBox* msgBox= new QMessageBox(this); - msgBox->setIcon(QMessageBox::Information); - msgBox->setText("DebugInformations fromCore"); - msgBox->setInformativeText(Message); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); -} - - - - - -void form_DebugMessages::newDebugMessage(QString Message) -{ - textEdit->clear(); - - QStringList temp=DebugMessageManager->getAllMessages(); - for(int i=0;itextEdit->append(temp[i]); - } - - QTextCursor cursor = textEdit->textCursor(); - cursor.movePosition(QTextCursor::Start); - textEdit->setTextCursor(cursor); - -} -void form_DebugMessages::clearDebugMessages(){ - DebugMessageManager->clearAllMessages(); - textEdit->clear(); -} diff --git a/plugins/i2pmessenger_plugin/gui/form_DebugMessages.h b/plugins/i2pmessenger_plugin/gui/form_DebugMessages.h deleted file mode 100644 index 60184ee3f..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_DebugMessages.h +++ /dev/null @@ -1,44 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef FORM_DEBUGMESSAGES_H -#define FORM_DEBUGMESSAGES_H - -#include -#include "ui_form_DebugMessages.h" -#include "src/Core.h" -#include "src/DebugMessageManager.h" - -class form_DebugMessages : public QDialog, private Ui::form_DebugMessages -{ - Q_OBJECT - public: - form_DebugMessages(cCore* core,QDialog *parent = 0); - ~form_DebugMessages(); - - private slots: - void newDebugMessage(QString Message); - void clearDebugMessages(); - void connectionDump(); - - private: - cCore* core; - cDebugMessageManager* DebugMessageManager; -}; -#endif diff --git a/plugins/i2pmessenger_plugin/gui/form_DebugMessages.ui b/plugins/i2pmessenger_plugin/gui/form_DebugMessages.ui deleted file mode 100644 index fae069100..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_DebugMessages.ui +++ /dev/null @@ -1,77 +0,0 @@ - - form_DebugMessages - - - - 0 - 0 - 400 - 300 - - - - DebugMessages - - - - 9 - - - 6 - - - - - - - - 6 - - - 0 - - - - - ConnectionDump - - - - - - - &Clear - - - - - - - C&lose - - - - - - - - - - - cmd_close - clicked() - form_DebugMessages - close() - - - 296 - 276 - - - 199 - 149 - - - - - diff --git a/plugins/i2pmessenger_plugin/gui/form_HelpDialog.cpp b/plugins/i2pmessenger_plugin/gui/form_HelpDialog.cpp deleted file mode 100644 index bc521c675..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_HelpDialog.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************** - * I2P Messenger is distributed under the following license: - * - * Copyright (C) 2009, I2P Messenger - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - ****************************************************************/ - - -#include "form_HelpDialog.h" - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - - -form_HelpDialog::form_HelpDialog(QString ProgrammVersion,QString ProtocolVersion,QWidget *parent) -:QDialog(parent) -{ - - ui.setupUi(this); - this->setAttribute(Qt::WA_DeleteOnClose,true); - - QString tmp; - - - - QFile aboutFile(QString(QApplication::applicationDirPath()+"/about.html")); - if (aboutFile.open(QIODevice::ReadOnly | QIODevice::Text)) { - QTextStream in(&aboutFile); - tmp=in.readAll(); - tmp.replace("[APPVERSIONSTRING]",ProgrammVersion); - tmp.replace("[PROTOCOLVERSIONSTRING]",ProtocolVersion); - ui.about->setText(tmp); - } - -/* - QFile authorsFile(QLatin1String(":/authors.html")); - if (authorsFile.open(QIODevice::ReadOnly | QIODevice::Text)) { - QTextStream in(&authorsFile); - ui.authors->setText(in.readAll()); - } - QFile thanksFile(QLatin1String(":/thanks.html")); - if (thanksFile.open(QIODevice::ReadOnly | QIODevice::Text)) { - QTextStream in(&thanksFile); - ui.thanks->setText(in.readAll()); - } - */ - //ui.authors->setText - - - ui.label_2->setMinimumWidth(20); -} - - diff --git a/plugins/i2pmessenger_plugin/gui/form_HelpDialog.h b/plugins/i2pmessenger_plugin/gui/form_HelpDialog.h deleted file mode 100644 index faffa04c0..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_HelpDialog.h +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************** - * I2P Messenger is distributed under the following license: - * - * Copyright (C) 2009, I2P Messenger - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - ****************************************************************/ - -#ifndef _HELPDIALOG_H -#define _HELPDIALOG_H - -#include - -#include "ui_form_HelpDialog.h" - - -class form_HelpDialog : public QDialog -{ - Q_OBJECT - -public: - form_HelpDialog(QString ProgrammVersion,QString ProtocolVersion,QWidget *parent = 0); -private slots: - -private: - Ui::form_HelpDialog ui; -}; - -#endif diff --git a/plugins/i2pmessenger_plugin/gui/form_HelpDialog.ui b/plugins/i2pmessenger_plugin/gui/form_HelpDialog.ui deleted file mode 100644 index 6b0ea94bf..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_HelpDialog.ui +++ /dev/null @@ -1,684 +0,0 @@ - - form_HelpDialog - - - - 0 - 0 - 501 - 328 - - - - - 0 - 0 - - - - - - - - - 0 - 0 - 0 - - - - - - - 208 - 208 - 208 - - - - - - - 255 - 255 - 255 - - - - - - - 247 - 247 - 247 - - - - - - - 104 - 104 - 104 - - - - - - - 139 - 139 - 139 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 240 - 240 - 240 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 231 - 231 - 231 - - - - - - - - - 0 - 0 - 0 - - - - - - - 208 - 208 - 208 - - - - - - - 255 - 255 - 255 - - - - - - - 247 - 247 - 247 - - - - - - - 104 - 104 - 104 - - - - - - - 139 - 139 - 139 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 240 - 240 - 240 - - - - - - - 0 - 0 - 0 - - - - - - - 192 - 192 - 192 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 231 - 231 - 231 - - - - - - - - - 104 - 104 - 104 - - - - - - - 208 - 208 - 208 - - - - - - - 255 - 255 - 255 - - - - - - - 247 - 247 - 247 - - - - - - - 104 - 104 - 104 - - - - - - - 139 - 139 - 139 - - - - - - - 104 - 104 - 104 - - - - - - - 255 - 255 - 255 - - - - - - - 104 - 104 - 104 - - - - - - - 240 - 240 - 240 - - - - - - - 240 - 240 - 240 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 128 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 231 - 231 - 231 - - - - - - - - - Arial - 8 - 50 - false - false - false - false - - - - Qt::NoContextMenu - - - - 0 - - - 0 - - - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 0 - - - 6 - - - - - - - - :/images/info16.png - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">About I2P Messenger</span></p></body></html> - - - - - - - - - - - 0 - - - - About - - - - 9 - - - 6 - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:1; text-indent:0px;"></p></body></html> - - - true - - - - - - - - Authors - - - - 6 - - - 9 - - - - - false - - - QTextEdit::NoWrap - - - true - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - false - - - Qt::TextBrowserInteraction - - - - - - - - Thanks to - - - - 6 - - - 9 - - - - - false - - - QTextEdit::NoWrap - - - true - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - false - - - Qt::TextBrowserInteraction - - - - - - - - - - - authors - tabWidget - - - - - - diff --git a/plugins/i2pmessenger_plugin/gui/form_Main.cpp b/plugins/i2pmessenger_plugin/gui/form_Main.cpp deleted file mode 100644 index 10c9156ba..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_Main.cpp +++ /dev/null @@ -1,586 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include - -#include "form_Main.h" - - - -form_MainWindow::form_MainWindow(QWidget* parent) - : QMainWindow(parent){ - setupUi(this); // this sets up GUI - - //this->setAttribute(Qt::WA_DeleteOnClose,true); - - initStyle(); - - //initTryIconMenu(); - //initTryIcon(); - init(); -} -void form_MainWindow::init() -{ - using namespace SESSION_Types; - - Core= new cCore(); - fillComboBox(); - initToolBars(); - applicationIsClosing=false; - - Mute=false; - - - QListWidget* listWidget=this->listWidget; - - connect (Core,SIGNAL(eventUserChanged()),this, - SLOT(eventUserChanged())); - - connect(Core,SIGNAL(eventOnlineStatusChanged()),this, - SLOT(OnlineStateChanged())); - - connect(listWidget,SIGNAL(itemDoubleClicked( QListWidgetItem* )),this, - SLOT(openChatDialog ())); - - connect(listWidget, SIGNAL( customContextMenuRequested(QPoint)), this, - SLOT( connecttreeWidgetCostumPopupMenu(QPoint))); - - connect(comboBox,SIGNAL(currentIndexChanged( int)),this, - SLOT(onlineComboBoxChanged())); - - this->eventUserChanged(); -} - -form_MainWindow::~form_MainWindow(){ - - delete Core; - //delete trayIcon; - //applicationIsClosing=true; - //this->close(); -} - - -void form_MainWindow::fillComboBox() -{ - QComboBox* comboBox = this->comboBox; - comboBox->addItem(QIcon(ICON_USER_TRYTOCONNECT) ,"TryToConnect"); - comboBox->addItem(QIcon(ICON_USER_OFFLINE) ,"Offline"); -} - -void form_MainWindow::onlineComboBoxChanged() -{ - QComboBox* comboBox= this->comboBox; - QString text=comboBox->currentText(); - - if(text.contains("Online",Qt::CaseInsensitive)==true){ - if(Core->getOnlineStatus()!=User::USERONLINE) - Core->setOnlineStatus(User::USERONLINE); - } - else if(text.contains("WantToChat",Qt::CaseInsensitive)==true){ - if(Core->getOnlineStatus()!=User::USERWANTTOCHAT) - Core->setOnlineStatus(User::USERWANTTOCHAT); - } - else if(text.contains("Away",Qt::CaseInsensitive)==true){ - if(Core->getOnlineStatus()!=User::USERAWAY) - Core->setOnlineStatus(User::USERAWAY); - } - else if(text.contains("don't disturb",Qt::CaseInsensitive)==true){ - if(Core->getOnlineStatus()!=User::USERDONT_DISTURB) - Core->setOnlineStatus(User::USERDONT_DISTURB); - } - else if(text.contains("Invisible",Qt::CaseInsensitive)==true){ - if(Core->getOnlineStatus()!=User::USERINVISIBLE) - Core->setOnlineStatus(User::USERINVISIBLE); - } - else if(text.contains("Offline",Qt::CaseInsensitive)==true){ - if(Core->checkIfAFileTransferOrReciveisActive()==false){ - if(Core->getOnlineStatus()!=User::USEROFFLINE) - Core->setOnlineStatus(User::USEROFFLINE); - } - else{ - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Information); - msgBox->setText(""); - msgBox->setInformativeText("Sorry a Filetransfer or Filerecive ist active,\nClosing aborted"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - OnlineStateChanged(); - - } - } - else if(text.contains("TryToConnect",Qt::CaseInsensitive)==true){ - if(Core->getOnlineStatus()!=User::USERTRYTOCONNECT) - Core->setOnlineStatus(User::USERTRYTOCONNECT); - } - -} - -void form_MainWindow::initToolBars() -{ - //toolBar->setIconSize(QSize(24, 24)); - QToolBar* toolBar=this->toolBar; - - - toolBar->setMovable(false); - toolBar->addAction(QIcon(ICON_NEWUSER) ,"add User" ,this,SLOT(openAdduserWindow() ) ); - toolBar->addAction(QIcon(ICON_SETTINGS) ,"Settings" ,this,SLOT(openConfigWindow() ) ); - toolBar->addAction(QIcon(ICON_DEBUGMESSAGES) ,"DebugMessages",this,SLOT(openDebugMessagesWindow() ) ); - toolBar->addAction(QIcon(ICON_MYDESTINATION) ,"ME" ,this,SLOT(namingMe())); - //toolBar->addAction(QIcon(ICON_CLOSE) ,"Close" ,this,SLOT(closeApplication())); - toolBar->addAction(QIcon(ICON_ABOUT) ,"About" ,this,SLOT(openAboutDialog())); -} - - -void form_MainWindow::openConfigWindow(){ - - form_settingsgui* dialog= new form_settingsgui(); - connect(this,SIGNAL(closeAllWindows()),dialog, - SLOT(close())); - - dialog->show(); - -} -void form_MainWindow::openAdduserWindow(){ - form_newUserWindow* dialog= new form_newUserWindow(Core); - - connect(this,SIGNAL(closeAllWindows()),dialog, - SLOT(close())); - - dialog->show(); -} - -void form_MainWindow::openDebugMessagesWindow(){ - form_DebugMessages* dialog= new form_DebugMessages(this->Core); - - connect(this,SIGNAL(closeAllWindows()),dialog, - SLOT(close())); - - dialog->show(); -} - -void form_MainWindow::namingMe(){ - QClipboard *clipboard = QApplication::clipboard(); - QString Destination=Core->getMyDestination(); - if(Destination!=""){ - clipboard->setText(Destination); - QMessageBox::information(this, "", - "Your Destination is in the clipboard",QMessageBox::Close); - } - else - QMessageBox::information(this, "", - "Your Client must be Online for that",QMessageBox::Close); -} -void form_MainWindow::closeApplication(){ - - if(Core->checkIfAFileTransferOrReciveisActive()==false){ - - emit closeAllWindows(); - - delete Core; - delete trayIcon; - applicationIsClosing=true; - this->close(); - } - else{ - - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Information); - msgBox->setText(""); - msgBox->setInformativeText("Sorry a Filetransfer or Filerecive ist active,\nClosing aborted"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - - } - - - -} -void form_MainWindow::eventUserChanged(){ - - bool showUnreadMessageAtTray=false; - QList users=Core->get_userList(); - listWidget->clear(); - - - for(int i=0;igetHaveNewUnreadMessages()==true){ - newItem->setIcon(QIcon(ICON_NEWUNREADMESSAGE)); - showUnreadMessageAtTray=true; - - } - else - switch(users.at(i)->get_OnlineState()) - { - - case USERTRYTOCONNECT: - { - newItem->setIcon(QIcon(ICON_USER_OFFLINE)); - break; - } - case USERINVISIBLE: - case USEROFFLINE: - { - newItem->setIcon(QIcon(ICON_USER_OFFLINE)); - break; - } - case USERONLINE: - { - newItem->setIcon(QIcon(ICON_USER_ONLINE)); - break; - } - case USERWANTTOCHAT: - { - newItem->setIcon(QIcon(ICON_USER_WANTTOCHAT)); - break; - } - case USERAWAY: - { - newItem->setIcon(QIcon(ICON_USER_AWAY)); - break; - } - case USERDONT_DISTURB: - { - newItem->setIcon(QIcon(ICON_USER_DONT_DUSTURB)); - break; - } - - - } - newItem->setText(users.at(i)->get_Name()); - newItem->setTextAlignment(Qt::AlignLeft); - newItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - ChildWidthI2PDestinationAsText->setText(users.at(i)->get_I2PDestination()); - ChildWidthI2PDestinationAsText->setHidden(true);//DEBUG - } - - /*if(showUnreadMessageAtTray==false) - trayIcon->setIcon(QIcon(ICON_QTCHAT)); - else - trayIcon->setIcon(QIcon(ICON_NEWUNREADMESSAGE));*/ -} - -//void form_MainWindow::UserDoubleClicked(QListWidgetItem * item) -void form_MainWindow::openChatDialog() -{ - QListWidgetItem *t=listWidget->item(listWidget->currentRow()+1); - QString Destination =t->text(); - - cUser* User; - User=Core->getUserByI2P_Destination(Destination); - if(User==NULL)return; - - if(User->getHaveAllreadyOneChatWindow()==false){ - form_ChatWidget* tmp= new form_ChatWidget(User); - - connect(this,SIGNAL(closeAllWindows()),tmp, - SLOT(close())); - - eventUserChanged(); - - tmp->show(); - } - else{ - QMessageBox::information(this, "", - "Only one Chatwindows for each User",QMessageBox::Close); - } -} -void form_MainWindow::connecttreeWidgetCostumPopupMenu(QPoint point){ - QListWidget* listWidget=this->listWidget; - - if(listWidget->count()==0)return; - - QMenu contextMnu( this ); - QMouseEvent *mevent = new QMouseEvent( QEvent::MouseButtonPress, point, Qt::RightButton, - Qt::RightButton, Qt::NoModifier ); - - - QAction* UserChat = new QAction("Chat",this); - connect( UserChat , SIGNAL(triggered()),this, SLOT( openChatDialog())); - - - QAction* UserDelete = new QAction("Delete",this); - connect( UserDelete , SIGNAL(triggered()),this, SLOT( deleteUserClicked())); - - QAction* UserRename = new QAction("Rename",this); - connect(UserRename,SIGNAL(triggered()),this, SLOT(userRenameCLicked())); - - QAction* CopyDestination = new QAction("Copy Destination",this); - connect(CopyDestination,SIGNAL(triggered()),this, SLOT(copyDestination())); - - - - contextMnu.clear(); - contextMnu.addAction(UserChat); - - QListWidgetItem *t=listWidget->item(listWidget->currentRow()+1); - QString Destination =t->text(); - - cUser* User; - User=Core->getUserByI2P_Destination(Destination); - - if(User->get_ConnectionStatus()==ONLINE) - { - QAction* UserSendFile = new QAction("SendFile",this); - connect(UserSendFile,SIGNAL(triggered()),this, SLOT(SendFile())); - contextMnu.addAction(UserSendFile); - } - - contextMnu.addSeparator(); - contextMnu.addAction(UserRename); - contextMnu.addAction(UserDelete); - contextMnu.addAction(CopyDestination); - - contextMnu.exec( mevent->globalPos()); -} - -void form_MainWindow::deleteUserClicked(){ - QListWidgetItem *t=listWidget->item(listWidget->currentRow()+1); - QString Destination =t->text(); - - Core->deleteUserByI2PDestination(Destination); -} - -void form_MainWindow::userRenameCLicked(){ - QListWidgetItem *t=listWidget->item(listWidget->currentRow()); - QString OldNickname=t->text(); - - QListWidgetItem *t2= listWidget->item(listWidget->currentRow()+1); - QString Destination =t2->text(); - - form_RenameWindow* Dialog= new form_RenameWindow(Core,OldNickname,Destination); - Dialog->show(); -} - -/*void form_MainWindow::closeEvent(QCloseEvent *e) -{ - static bool firstTime = true; - if(applicationIsClosing==true) return; - - if (trayIcon->isVisible()) { - if (firstTime) - { - - firstTime = false; - } - hide(); - e->ignore(); - } - -} - -void form_MainWindow::updateMenu() -{ - toggleVisibilityAction->setText(isVisible() ? tr("Hide") : tr("Show")); -} - -void form_MainWindow::toggleVisibility(QSystemTrayIcon::ActivationReason e) -{ - if(e == QSystemTrayIcon::Trigger || e == QSystemTrayIcon::DoubleClick){ - if(isHidden()){ - show(); - - //eventUserChanged(); - - if(isMinimized()){ - if(isMaximized()){ - showMaximized(); - }else{ - showNormal(); - } - } - raise(); - activateWindow(); - }else{ - hide(); - } - } -} - -void form_MainWindow::toggleVisibilitycontextmenu() -{ - if (isVisible()) - hide(); - else - show(); -}*/ - -void form_MainWindow::OnlineStateChanged() -{ - QComboBox* comboBox = this->comboBox; - if(Core->getOnlineStatus()==User::USERONLINE) - { - comboBox->clear(); - comboBox->addItem(QIcon(ICON_USER_ONLINE) , "Online"); //index 0 - comboBox->addItem(QIcon(ICON_USER_WANTTOCHAT) , "WantToChat"); //1 - comboBox->addItem(QIcon(ICON_USER_AWAY) , "Away"); //2 - comboBox->addItem(QIcon(ICON_USER_DONT_DUSTURB) , "don't disturb"); //3 - comboBox->addItem(QIcon(ICON_USER_INVISIBLE) , "Invisible"); //4 - comboBox->addItem(QIcon(ICON_USER_OFFLINE) , "Offline"); //5 - - - } - else if(Core->getOnlineStatus()==User::USEROFFLINE){ - comboBox->clear(); - comboBox->addItem(QIcon(ICON_USER_OFFLINE) , "Offline"); - comboBox->addItem(QIcon(ICON_USER_TRYTOCONNECT) , "TryToConnect"); - comboBox->setCurrentIndex(0); - } - else if(Core->getOnlineStatus()==User::USERWANTTOCHAT){ - comboBox->setCurrentIndex(1); - } - else if(Core->getOnlineStatus()==User::USERAWAY){ - comboBox->setCurrentIndex(2); - } - else if(Core->getOnlineStatus()==User::USERDONT_DISTURB){ - comboBox->setCurrentIndex(3); - } - else if(Core->getOnlineStatus()==User::USERINVISIBLE){ - comboBox->setCurrentIndex(4); - } -} - -void form_MainWindow::openAboutDialog() -{ - form_HelpDialog* dialog = new form_HelpDialog(Core->get_ClientVersion(),Core->get_ProtocolVersion()); - - connect(this,SIGNAL(closeAllWindows()),dialog, - SLOT(close())); - - dialog->show(); -} - -void form_MainWindow::initStyle() -{ - QSettings * settings=new QSettings(QApplication::applicationDirPath()+"/application.ini",QSettings::IniFormat); - settings->beginGroup("General"); - //Load Style - QString Style=(settings->value("current_Style","")).toString(); - if(Style.isEmpty()==true) - { - //find default Style for this System - QRegExp regExp("Q(.*)Style"); - Style = QApplication::style()->metaObject()->className(); - - if (Style == QLatin1String("QMacStyle")) - Style = QLatin1String("Macintosh (Aqua)"); - else if (regExp.exactMatch(Style)) - Style = regExp.cap(1); - - //styleCombo->addItems(QStyleFactory::keys()); - } - - qApp->setStyle(Style); - //Load Style end - - //Load Stylesheet - QFile file(QApplication::applicationDirPath() + "/qss/" + - settings->value("current_Style_sheet","Default").toString() + ".qss"); - - file.open(QFile::ReadOnly); - QString styleSheet = QLatin1String(file.readAll()); - qApp->setStyleSheet(styleSheet); - //load Stylesheet end - settings->endGroup(); - - delete settings; -} - -/*void form_MainWindow::initTryIconMenu() -{ - // Tray icon Menu - menu = new QMenu(this); - QObject::connect(menu, SIGNAL(aboutToShow()), this, SLOT(updateMenu())); - toggleVisibilityAction = - menu->addAction(QIcon(ICON_QTCHAT), tr("Show/Hide"), this, SLOT(toggleVisibilitycontextmenu())); - - toggleMuteAction= - menu->addAction(QIcon(ICON_SOUND_ON), tr("Sound on"),this,SLOT(muteSound())); - menu->addSeparator(); - //menu->addAction(QIcon(ICON_MINIMIZE), tr("Minimize"), this, SLOT(showMinimized())); - //menu->addAction(QIcon(ICON_MAXIMIZE), tr("Maximize"), this, SLOT(showMaximized())); - menu->addSeparator(); - menu->addAction(QIcon(ICON_CLOSE), tr("&Quit"), this, SLOT(closeApplication())); - - - -} - -void form_MainWindow::initTryIcon() -{ - // Create the tray icon - trayIcon = new QSystemTrayIcon(this); - trayIcon->setToolTip(tr("I2PChat")); - trayIcon->setContextMenu(menu); - trayIcon->setIcon(QIcon(ICON_QTCHAT)); - - connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, - SLOT(toggleVisibility(QSystemTrayIcon::ActivationReason))); - trayIcon->show(); -}*/ - -void form_MainWindow::SendFile() -{ - QString FilePath=QFileDialog::getOpenFileName(this,"Open File", ".", "all Files (*.*)"); - - QListWidgetItem *t=listWidget->item(listWidget->currentRow()+1); - QString Destination =t->text(); - - if(!FilePath.isEmpty()) - Core->addNewFileTransfer(FilePath,Destination); - -} - -void form_MainWindow::copyDestination() -{ - QListWidgetItem *t=listWidget->item(listWidget->currentRow()+1); - QString Destination =t->text(); - - QClipboard *clipboard = QApplication::clipboard(); - - clipboard->setText(Destination); - QMessageBox::information(this, "", - "The Destination is in the clipboard",QMessageBox::Close); - -} - -void form_MainWindow::muteSound() -{ - if(this->Mute==false) - { - toggleMuteAction->setIcon(QIcon(ICON_SOUND_OFF)); - toggleMuteAction->setText("Sound off"); - Mute=true; - } - else - { - toggleMuteAction->setIcon(QIcon(ICON_SOUND_ON)); - toggleMuteAction->setText("Sound on"); - Mute=false; - - } - Core->MuteSound(Mute); -} diff --git a/plugins/i2pmessenger_plugin/gui/form_Main.h b/plugins/i2pmessenger_plugin/gui/form_Main.h deleted file mode 100644 index f4841c48d..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_Main.h +++ /dev/null @@ -1,106 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef FORM_MAIN_H -#define FORM_MAIN_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "ui_form_Main.h" -#include "gui_icons.h" -#include "form_settingsgui.h" -#include "form_newUser.h" -#include "form_DebugMessages.h" -#include "form_chatwidget.h" -#include "form_rename.h" -#include "form_HelpDialog.h" -#include "src/Core.h" -#include "src/User.h" - - -class form_MainWindow : public QMainWindow, private Ui::form_MainWindow -{ - Q_OBJECT - - public: - form_MainWindow ( QWidget* parent=0 ); - ~form_MainWindow(); - - protected: - //void closeEvent(QCloseEvent *); - - signals: - void closeAllWindows(); - - private slots: - //Windows - void openConfigWindow(); - void openAdduserWindow(); - void openDebugMessagesWindow(); - void openAboutDialog(); - void openChatDialog (); - //Windows end - void namingMe(); - void copyDestination(); - void SendFile(); - void closeApplication(); - void eventUserChanged(); - void muteSound(); - - - void connecttreeWidgetCostumPopupMenu ( QPoint point ); - void deleteUserClicked(); - void userRenameCLicked(); - //void updateMenu(); - void onlineComboBoxChanged(); - //void toggleVisibility(QSystemTrayIcon::ActivationReason e); - //void toggleVisibilitycontextmenu(); - void OnlineStateChanged(); - private: - void init(); - void initStyle(); - //void initTryIconMenu(); - //void initTryIcon(); - void initToolBars(); - - void fillComboBox(); - - cCore* Core; - bool applicationIsClosing; - - cConnectionI2P* I2P; - form_newUserWindow* newUserWindow; - - QSystemTrayIcon *trayIcon; - QAction* toggleVisibilityAction, *toolAct; - QAction* toggleMuteAction; - QMenu *menu; - bool Mute; - -}; -#endif diff --git a/plugins/i2pmessenger_plugin/gui/form_Main.ui b/plugins/i2pmessenger_plugin/gui/form_Main.ui deleted file mode 100644 index 71aa4f84e..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_Main.ui +++ /dev/null @@ -1,68 +0,0 @@ - - form_MainWindow - - - - 0 - 0 - 233 - 427 - - - - I2PChat - - - :/icons/userblue24.png - - - - - 9 - - - 6 - - - - - QComboBox::NoInsert - - - - - - - Qt::CustomContextMenu - - - QAbstractItemView::AllEditTriggers - - - - - - - - - - 21 - 30 - - - - false - - - Qt::Horizontal - - - 4 - - - - - - - - diff --git a/plugins/i2pmessenger_plugin/gui/form_chatwidget.cpp b/plugins/i2pmessenger_plugin/gui/form_chatwidget.cpp deleted file mode 100644 index 18acca326..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_chatwidget.cpp +++ /dev/null @@ -1,234 +0,0 @@ -#include "form_chatwidget.h" -#include "src/User.h" - -bool ChatEventEater::eventFilter(QObject *obj, QEvent *event) -{ - if ( event->type() == QEvent::KeyPress ) - { - QKeyEvent *keyEvent = static_cast(event); - if ( obj->objectName() == "message") - { - if ( keyEvent->key() == Qt::Key_Return && keyEvent->modifiers() == Qt::NoModifier) - { - emit sendMessage(); - return true; - } - else if (keyEvent->key() == Qt::Key_Return - && keyEvent->modifiers() == Qt::ControlModifier) - { - emit sendMessage(); - return true; - } - } - return QObject::eventFilter(obj, event); - } - - return false; -} - - -form_ChatWidget::form_ChatWidget(cUser* user,QWidget* parent /* = 0 */) -: QWidget(parent) -{ - - setupUi(this); - this->setAttribute(Qt::WA_DeleteOnClose,true); - - this->user=user; - - user->set_HaveAllreadyOneChatWindow(true); - - QTextEdit *message=this->message; - - m_event_eater = new ChatEventEater(this); - connect(m_event_eater, SIGNAL(sendMessage()), - send, SLOT(click())); - - message->installEventFilter(m_event_eater); - - connect(user,SIGNAL(newMessageRecived()),this, - SLOT(newMessageRecived())); - - connect(user,SIGNAL(OnlineStateChanged()),this, - SLOT(changeWindowsTitle())); - - connect(this,SIGNAL(sendChatMessage(QString)),user, - SLOT(sendChatMessage(QString))); - - connect(message,SIGNAL(cursorPositionChanged()),this, - SLOT(WorkAround())); - - - mCurrentFont = user->get_textFont(); - textColor = user->get_textColor(); - - - QPixmap pxm(24,24); - pxm.fill(textColor); - txtColor->setIcon(pxm); - - - connect(send, SIGNAL(clicked()), SLOT(sendMessageSignal())); - connect(txtColor, SIGNAL(clicked()), SLOT(setTextColor())); - connect(txtBold, SIGNAL(clicked(bool)),SLOT(setBold(bool))); - connect(txtFont, SIGNAL(clicked()), SLOT(setFont())); - - message->setTextColor(textColor); - message->setCurrentFont(mCurrentFont); - - - resize(450,400); - changeWindowsTitle(); - newMessageRecived(); - -} - -void form_ChatWidget::newMessageRecived(){ - QTextEdit *chat=this->chat; - chat->clear(); - - QStringList Messages=user->get_ChatMessages(); - int i=0; - while(iaddMessage(test); - i++; - } -} - - -void form_ChatWidget::addMessage(QString text){ - QTextEdit *chat=this->chat; - - chat->insertHtml(text); - - QTextCursor cursor = chat->textCursor(); - cursor.movePosition(QTextCursor::End); - chat->setTextCursor(cursor); -} - -void form_ChatWidget::setTextColor(){ - QTextEdit *message=this->message; - textColor = QColorDialog::getColor(Qt::black, this); - - //textColor = QColorDialog::getColor(message->textColor(), this); - QPixmap pxm(24,24); - pxm.fill(textColor); - txtColor->setIcon(pxm); - user->set_textColor(textColor); - - message->setTextColor(textColor); - - -} - -void form_ChatWidget::setFont() -{ - QTextEdit *message=this->message; - bool ok; - mCurrentFont = QFontDialog::getFont(&ok, mCurrentFont, this); - - user->set_textFont(mCurrentFont); - message->setCurrentFont(mCurrentFont); - message->setFocus(); -} - - -void form_ChatWidget::setBold(bool t){ - - QTextEdit *message=this->message; - QFont font = message->currentFont(); - font.setBold(t); - user->set_textFont(mCurrentFont); - message->setCurrentFont(font); - -} - -void form_ChatWidget::closeEvent(QCloseEvent *e){ - user->set_HaveAllreadyOneChatWindow(false); - disconnect(user,SIGNAL(newMessageRecived()),this, - SLOT(newMessageRecived())); -} - -void form_ChatWidget::sendMessageSignal(){ - QTextEdit *message=this->message; - if(message->toPlainText().length()==0)return; - - emit sendChatMessage(message->toHtml()); - message->clear(); - - //message->document()->clear(); - -} - -void form_ChatWidget::WorkAround() -{ - QTextEdit *message=this->message; - if(message->textCursor().position()>1)return; - else if(message->textCursor().position()==1 && message->toPlainText().length()==1) - { - message->selectAll(); - - - //message->textCursor().setPosition(QTextCursor::Start); - //message->textCursor().setPosition(QTextCursor::Left); - //message->textCursor().select(QTextCursor::Document); - //message->textCursor().movePosition(QTextCursor::End,QTextCursor::KeepAnchor); - - message->setTextColor(textColor); - message->setCurrentFont(mCurrentFont); - - message->moveCursor(QTextCursor::End,QTextCursor::MoveAnchor); - message->textCursor().clearSelection(); - } - -} - - -void form_ChatWidget::changeWindowsTitle() -{ - QString OnlineStatus; - QString OnlineStatusIcon; - switch(user->get_OnlineState()) - { - - case USERTRYTOCONNECT: - case USERINVISIBLE: - case USEROFFLINE:{ - OnlineStatus="offline"; - this->setWindowIcon(QIcon(ICON_USER_OFFLINE)); - break; - } - case USERONLINE: - { - OnlineStatus="online"; - this->setWindowIcon(QIcon(ICON_USER_ONLINE)); - break; - } - case USERWANTTOCHAT: - { - OnlineStatus="want to chat"; - this->setWindowIcon(QIcon(ICON_USER_WANTTOCHAT)); - break; - } - case USERAWAY: - { - OnlineStatus="away"; - this->setWindowIcon(QIcon(ICON_USER_AWAY)); - break; - } - case USERDONT_DISTURB: - { - OnlineStatus="don't disturb"; - this->setWindowIcon(QIcon(ICON_USER_DONT_DUSTURB)); - break; - } - - - } - - - - this->setWindowTitle("Chat with: "+user->get_Name()+" ("+ OnlineStatus +")"); -} - diff --git a/plugins/i2pmessenger_plugin/gui/form_chatwidget.h b/plugins/i2pmessenger_plugin/gui/form_chatwidget.h deleted file mode 100644 index aa0bfcf95..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_chatwidget.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef FORM_CHATWIDGET_h -#define FORM_CHATWIDGET_h - - -#include "ui_form_chatwidget.h" -#include "gui_icons.h" - -#include -#include -#include -#include -class ChatEventEater : public QObject -{ - Q_OBJECT - -public: - ChatEventEater(QWidget *parent = 0) : QObject(parent){ } - bool m_send_on_enter; - -signals: - void sendMessage(); -protected: - bool eventFilter(QObject *obj, QEvent *event); - -}; - -class cUser; -class form_ChatWidget : public QWidget, public Ui::form_chatwidget -{ -Q_OBJECT -public: - form_ChatWidget(cUser* user,QWidget* parent = 0); - void closeEvent(QCloseEvent *e); -private slots: - void sendMessageSignal(); - void addMessage(QString text); - void setTextColor(); - void newMessageRecived(); - void setBold(bool t); - void setFont(); - void WorkAround(); - void changeWindowsTitle(); - - -signals: - void sendChatMessage(QString chatMessage); - -private: - QColor textColor; - QStringList history; - cUser* user; - QFont mCurrentFont; - ChatEventEater *m_event_eater; -}; -#endif diff --git a/plugins/i2pmessenger_plugin/gui/form_chatwidget.ui b/plugins/i2pmessenger_plugin/gui/form_chatwidget.ui deleted file mode 100644 index 2d65dda41..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_chatwidget.ui +++ /dev/null @@ -1,297 +0,0 @@ - - form_chatwidget - - - - 0 - 0 - 707 - 575 - - - - User Chat - - - - 9 - - - 6 - - - - - - 0 - 0 - - - - false - - - Qt::Vertical - - - - true - - - - - - 6 - - - 0 - - - - - 6 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - true - - - - 24 - 24 - - - - B - - - - - - - - - 24 - 24 - - - - true - - - false - - - - - - - true - - - - 24 - 24 - - - - U - - - - - - - - - 24 - 24 - - - - true - - - - - - - true - - - - 24 - 24 - - - - I - - - - - - - - - 24 - 24 - - - - true - - - - - - - true - - - - 24 - 24 - - - - C - - - - - - - - - 24 - 24 - - - - - - - - - 24 - 24 - - - - - 24 - 24 - - - - F - - - - - - - - - 6 - - - 0 - - - - - - - - - - 6 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Senden - - - - - - - - - - - - - - - - - txtItalic - clicked(bool) - message - setFontItalic(bool) - - - 644 - 258 - - - 348 - 401 - - - - - txtUnder - clicked(bool) - message - setFontUnderline(bool) - - - 614 - 258 - - - 348 - 401 - - - - - diff --git a/plugins/i2pmessenger_plugin/gui/form_fileRecive.cpp b/plugins/i2pmessenger_plugin/gui/form_fileRecive.cpp deleted file mode 100644 index 49b8deb6e..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_fileRecive.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include "form_fileRecive.h" -#include "src/FileTransferRecive.h" - -form_fileRecive::form_fileRecive(cFileTransferRecive * FileRecive) -{ - setupUi(this); - this->setAttribute(Qt::WA_DeleteOnClose,true); - - this->FileRecive=FileRecive; - init(); - - connect(FileRecive,SIGNAL(event_FileRecivedFinishedOK()),this, - SLOT(slot_FileRecivedFinishedOK())); - - connect(FileRecive,SIGNAL(event_allreadyRecivedSizeChanged(quint64)),this, - SLOT(slot_allreadyRecivedSizeChanged(quint64))); - - connect(FileRecive,SIGNAL(event_FileReciveError()),this, - SLOT(slot_FileReciveError())); - - connect(FileRecive,SIGNAL(event_FileReciveAbort()),this, - SLOT(slot_FileReciveAbort())); - - connect(pushButton,SIGNAL(pressed()),this, - SLOT(slot_Button())); - -} - -void form_fileRecive::init() -{ - QLabel *label_4=this->label_4; - QLabel *label_6=this->label_6; - QLabel *label_7=this->label_7; - QProgressBar * progressBar= this->progressBar; - - - label_4->setText(FileRecive->get_FileName()); - - QString SSize; - SSize.setNum(FileRecive->get_FileSize(),10); - label_6->setText(SSize); - label_7->setText("Bits"); - checkBox_3->setChecked(true); - progressBar->setMinimum(0); - progressBar->setMaximum(FileRecive->get_FileSize()); - progressBar->setValue(0); -} - -void form_fileRecive::slot_Button() -{ - QPushButton* pushButton= this->pushButton; - FileRecive->abbortFileRecive(); - this->close(); -} - -void form_fileRecive::slot_allreadyRecivedSizeChanged(quint64 value) -{ - progressBar->setValue(value); -} - -void form_fileRecive::slot_FileRecivedFinishedOK() -{ - QCheckBox* checkBox_4= this->checkBox_4; - checkBox_4->setChecked(true); - - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Information); - msgBox->setText("cFileTransfer"); - msgBox->setInformativeText("FileRecive Finished"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - - this->close(); -} - -void form_fileRecive::slot_FileReciveError() -{ - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Information); - msgBox->setText("cFileTransferRecive(StreamStatus)"); - msgBox->setInformativeText("FileRecive Error(connection Broke)\nnincomplead File deleted"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - - this->close(); -} - -void form_fileRecive::slot_FileReciveAbort() -{ - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Information); - msgBox->setText("Filetransfer"); - msgBox->setInformativeText("the Sender abort the Filetransfer\nincomplead File deleted"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - - this->close(); -} diff --git a/plugins/i2pmessenger_plugin/gui/form_fileRecive.h b/plugins/i2pmessenger_plugin/gui/form_fileRecive.h deleted file mode 100644 index 17d6f5a2f..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_fileRecive.h +++ /dev/null @@ -1,48 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#ifndef FORM_FILERECIVE_H -#define FORM_FILERECIVE_H - -#include - -#include "ui_form_fileRecive.h" - - -class cFileTransferRecive; -class form_fileRecive : public QDialog, public Ui::form_FileRecive -{ - Q_OBJECT - public: - form_fileRecive(cFileTransferRecive* FileRecive); - - private slots: - void slot_Button(); - void slot_allreadyRecivedSizeChanged(quint64 value); - void slot_FileRecivedFinishedOK(); - void slot_FileReciveError(); - void slot_FileReciveAbort();//the othersite abort the filesend - - - private: - void init(); - cFileTransferRecive* FileRecive; -}; -#endif diff --git a/plugins/i2pmessenger_plugin/gui/form_fileRecive.ui b/plugins/i2pmessenger_plugin/gui/form_fileRecive.ui deleted file mode 100644 index 86ec75d9f..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_fileRecive.ui +++ /dev/null @@ -1,206 +0,0 @@ - - form_FileRecive - - - - 0 - 0 - 530 - 300 - - - - - 530 - 300 - - - - - 530 - 300 - - - - - 530 - 300 - - - - Dialog - - - - - 10 - 10 - 251 - 131 - - - - Status - - - - - 20 - 20 - 145 - 100 - - - - - - - false - - - Reciveing - - - - - - - false - - - Finished - - - - - - - - - - 266 - 9 - 254 - 131 - - - - FileInfo - - - - - 10 - 40 - 231 - 61 - - - - - - - FileName: - - - - - - - Name - - - - - - - FileSize: - - - - - - - Size - - - - - - - SizeTyp - - - - - - - - - - 230 - 240 - 75 - 28 - - - - abort - - - - - - 10 - 140 - 511 - 91 - - - - FileSend - - - - - 20 - 20 - 54 - 18 - - - - progress - - - - - - 20 - 40 - 481 - 23 - - - - 24 - - - - - - 480 - 70 - 21 - 18 - - - - 100 - - - - - - - diff --git a/plugins/i2pmessenger_plugin/gui/form_fileSend.cpp b/plugins/i2pmessenger_plugin/gui/form_fileSend.cpp deleted file mode 100644 index a0f74de43..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_fileSend.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include "form_fileSend.h" - - - -form_fileSend::form_fileSend(cFileTransferSend * FileTransfer) -{ - setupUi(this); - this->setAttribute(Qt::WA_DeleteOnClose,true); - - this->FileTransfer=FileTransfer; - QPushButton* pushButton= this->pushButton; - - init(); - - connect(FileTransfer,SIGNAL(event_allreadySendedSizeChanged(quint64)),this, - SLOT(slot_allreadySendedSizeChanged(quint64))); - - connect(FileTransfer,SIGNAL(event_FileTransferFinishedOK()),this, - SLOT(slot_FileTransferFinishedOK())); - - connect(FileTransfer,SIGNAL(event_FileTransferAccepted(bool)),this, - SLOT(slot_FileTransferAccepted(bool))); - - connect(FileTransfer,SIGNAL(event_FileTransferAborted()),this, - SLOT(slot_FileTransferAborted())); - - connect(FileTransfer,SIGNAL(event_FileTransferError()),this, - SLOT(slot_FileTransferError())); - - connect(pushButton,SIGNAL(pressed()),this, - SLOT(slot_Button())); -} - -void form_fileSend::init() -{ - - QLabel *label_4=this->label_4; - QLabel *label_6=this->label_6; - QLabel *label_7=this->label_7; - QProgressBar * progressBar= this->progressBar; - - - label_4->setText(FileTransfer->get_FileName()); - - QString SSize; - SSize.setNum(FileTransfer->get_FileSize(),10); - label_6->setText(SSize); - label_7->setText("Bits"); - progressBar->setMinimum(0); - progressBar->setMaximum(FileTransfer->get_FileSize()); - progressBar->setValue(0); -} - -void form_fileSend::slot_allreadySendedSizeChanged(quint64 value) -{ - progressBar->setValue(value); -} - -void form_fileSend::slot_FileTransferFinishedOK() -{ - QCheckBox* checkBox_4= this->checkBox_4; - checkBox_4->setChecked(true); - - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Information); - msgBox->setText("Filetransfer"); - msgBox->setInformativeText("Filetransfer Finished (OK)"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - this->close(); - - this->close(); -} - -void form_fileSend::slot_FileTransferAccepted(bool t) -{ - QPushButton* pushButton= this->pushButton; - - if(t==true){ - checkBox_2->setChecked(true); - checkBox_3->setChecked(true); - } - else{ - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Information); - msgBox->setText("FileTransfer)"); - msgBox->setInformativeText("Filetransfer don't Accepted\nFileSending Abborted"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - - this->close(); - } -} - -void form_fileSend::slot_Button() -{ - QPushButton* pushButton= this->pushButton; - FileTransfer->abbortFileSend(); - - this->close(); -} - -void form_fileSend::slot_FileTransferError() -{ - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Information); - msgBox->setText("Filetransfer"); - msgBox->setInformativeText("FileTransfer Error(connection Broke)"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - - this->close(); -} - -void form_fileSend::slot_FileTransferAborted() -{ - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Information); - msgBox->setText("Filetransfer"); - msgBox->setInformativeText("The Reciver abort the Filerecive"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - this->close(); -} - - - - diff --git a/plugins/i2pmessenger_plugin/gui/form_fileSend.h b/plugins/i2pmessenger_plugin/gui/form_fileSend.h deleted file mode 100644 index 1839c43c0..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_fileSend.h +++ /dev/null @@ -1,48 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - - - -#ifndef FORM_FILESEND_H -#define FORM_FILESEND_H - -#include - -#include "ui_form_fileSend.h" -#include "src/FileTransferSend.h" -class form_fileSend : public QDialog, public Ui::form_FileSend -{ - Q_OBJECT - public: - form_fileSend(cFileTransferSend* FileTransfer); - - private slots: - void slot_allreadySendedSizeChanged(quint64 value); - void slot_FileTransferFinishedOK(); - void slot_FileTransferError(); - void slot_FileTransferAccepted(bool t); - void slot_FileTransferAborted(); - void slot_Button(); - - private: - void init(); - cFileTransferSend* FileTransfer; -}; -#endif diff --git a/plugins/i2pmessenger_plugin/gui/form_fileSend.ui b/plugins/i2pmessenger_plugin/gui/form_fileSend.ui deleted file mode 100644 index f5cf999cf..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_fileSend.ui +++ /dev/null @@ -1,242 +0,0 @@ - - form_FileSend - - - - 0 - 0 - 530 - 300 - - - - - 530 - 300 - - - - - 530 - 300 - - - - - 530 - 300 - - - - Dialog - - - - - 10 - 10 - 251 - 131 - - - - Status - - - - - 20 - 20 - 145 - 100 - - - - - - - false - - - FileInfo sended - - - true - - - - - - - false - - - FileTransfer Accepted - - - - - - - false - - - Transfering - - - - - - - false - - - Finished - - - - - - - - - - 266 - 9 - 254 - 131 - - - - FileInfo - - - - - 10 - 40 - 231 - 61 - - - - - - - FileName: - - - - - - - Name - - - - - - - FileSize: - - - - - - - Size - - - - - - - SizeTyp - - - - - - - - - - 230 - 240 - 75 - 28 - - - - abort - - - - - - 10 - 140 - 511 - 91 - - - - FileSend - - - - - 20 - 20 - 54 - 18 - - - - progress - - - - - - 20 - 40 - 481 - 23 - - - - 24 - - - - - - 480 - 70 - 21 - 18 - - - - 100 - - - - - - 20 - 70 - 21 - 18 - - - - 0 - - - - - - - diff --git a/plugins/i2pmessenger_plugin/gui/form_newUser.cpp b/plugins/i2pmessenger_plugin/gui/form_newUser.cpp deleted file mode 100644 index 90704d343..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_newUser.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include "form_newUser.h" - -form_newUserWindow::form_newUserWindow(cCore* Core,QDialog *parent){ - setupUi(this); - this->setAttribute(Qt::WA_DeleteOnClose,true); - this->Core=Core; - connect(buttonBox,SIGNAL(accepted()),this,SLOT(addnewUser())); -} -void form_newUserWindow::addnewUser() -{ - QString Name=lineEdit->text(); - QString I2PDestination=textEdit->toPlainText(); - - if(Name.isEmpty()) - { - QMessageBox* msgBox= new QMessageBox(this); - msgBox->setIcon(QMessageBox::Warning); - msgBox->setText("Adding User"); - msgBox->setInformativeText("You must add a nick for the User\nadding abborted"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - return; - } - - if(I2PDestination.length()!=516) - { - QMessageBox* msgBox= new QMessageBox(this); - msgBox->setIcon(QMessageBox::Warning); - msgBox->setText("Adding User"); - msgBox->setInformativeText("The Destination is to short (must be 516)\nadding abborted"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - - return; - } - - - - if(!I2PDestination.right(4).contains("AAAA",Qt::CaseInsensitive)){ - //the last 4 char must be "AAAA" - QMessageBox* msgBox= new QMessageBox(this); - msgBox->setIcon(QMessageBox::Warning); - msgBox->setText("Adding User"); - msgBox->setInformativeText("The Destination must end with AAAA\nadding abborted"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - return; - } - - - if(I2PDestination==Core->getMyDestination()) - { - QMessageBox* msgBox= new QMessageBox(this); - msgBox->setIcon(QMessageBox::Warning); - msgBox->setText("Adding User"); - msgBox->setInformativeText("This Destination is yours, adding aborted !"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - return; - - } - - if(Core->addNewUser(Name,I2PDestination,0)==false){ - - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Warning); - msgBox->setInformativeText("There allready exits one user with the same I2P,- or TorDestination"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - - this->close(); - } -} diff --git a/plugins/i2pmessenger_plugin/gui/form_newUser.h b/plugins/i2pmessenger_plugin/gui/form_newUser.h deleted file mode 100644 index 5e52400fd..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_newUser.h +++ /dev/null @@ -1,40 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef FORM_NEWUSER_H -#define FORM_NEWUSER_H - -#include -#include "ui_form_newUser.h" -#include "src/Core.h" - -class form_newUserWindow : public QDialog, private Ui::form_newUserWindow -{ - Q_OBJECT - public: - form_newUserWindow(cCore* Core,QDialog *parent = 0); - - private slots: - void addnewUser(); - - private: - cCore* Core; -}; - -#endif diff --git a/plugins/i2pmessenger_plugin/gui/form_newUser.ui b/plugins/i2pmessenger_plugin/gui/form_newUser.ui deleted file mode 100644 index c97a7c51a..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_newUser.ui +++ /dev/null @@ -1,126 +0,0 @@ - - form_newUserWindow - - - - 0 - 0 - 465 - 434 - - - - new User - - - - - - 0 - - - 6 - - - - - 6 - - - 0 - - - - - - - 6 - - - 0 - - - - - Nickname: - - - - - - - - - - - - Destination I2P: - - - - - - - - - - - - Qt::Horizontal - - - - 258 - 20 - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - buttonBox - accepted() - form_newUserWindow - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - form_newUserWindow - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/plugins/i2pmessenger_plugin/gui/form_rename.cpp b/plugins/i2pmessenger_plugin/gui/form_rename.cpp deleted file mode 100644 index 92f498bb8..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_rename.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include "form_rename.h" - -form_RenameWindow::form_RenameWindow(cCore* Core,QString OldNickname,QString Destination){ - setupUi(this); - - this->setAttribute(Qt::WA_DeleteOnClose,true); - this->Core=Core; - this->Destination=Destination; - - QLineEdit* lineEdit = this->lineEdit; - lineEdit->setText(OldNickname); - - connect(okButton,SIGNAL(clicked()),this, - SLOT(OK())); -} - -void form_RenameWindow::OK(){ - QLineEdit* lineEdit_2 = this->lineEdit_2; - Core->renameuserByI2PDestination(Destination,lineEdit_2->text()); - this->close(); -} \ No newline at end of file diff --git a/plugins/i2pmessenger_plugin/gui/form_rename.h b/plugins/i2pmessenger_plugin/gui/form_rename.h deleted file mode 100644 index 4225f8ed5..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_rename.h +++ /dev/null @@ -1,40 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef FORM_RENAME_H -#define FORM_RENAME_H - -#include -#include "ui_form_rename.h" -#include "src/Core.h" - - -class form_RenameWindow : public QDialog, private Ui::form_renameWindow -{ - Q_OBJECT - public: - form_RenameWindow(cCore* Core,QString OldNickname,QString Destination); - private slots: - void OK(); - private: - cCore* Core; - QString Destination; -}; - -#endif diff --git a/plugins/i2pmessenger_plugin/gui/form_rename.ui b/plugins/i2pmessenger_plugin/gui/form_rename.ui deleted file mode 100644 index 476540054..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_rename.ui +++ /dev/null @@ -1,122 +0,0 @@ - - form_renameWindow - - - - 0 - 0 - 324 - 152 - - - - Dialog - - - - 9 - - - 6 - - - - - New Nickname - - - - 9 - - - 6 - - - - - Old Nickname - - - - - - - false - - - - - - - New Nickname - - - - - - - - - - Qt::Vertical - - - - 268 - 0 - - - - - - - - - - - Qt::Horizontal - - - - 125 - 22 - - - - - - - - OK - - - - - - - Cancel - - - - - - - - - CancelButton - clicked() - form_renameWindow - close() - - - 277 - 129 - - - 161 - 75 - - - - - diff --git a/plugins/i2pmessenger_plugin/gui/form_settingsgui.cpp b/plugins/i2pmessenger_plugin/gui/form_settingsgui.cpp deleted file mode 100644 index bee599860..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_settingsgui.cpp +++ /dev/null @@ -1,313 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include "form_settingsgui.h" - -form_settingsgui::form_settingsgui(QWidget *parent, Qt::WFlags flags) - : QDialog(parent, flags) -{ - setupUi(this); - this->setAttribute(Qt::WA_DeleteOnClose,true); - settings= new QSettings(QApplication::applicationDirPath()+"/application.ini",QSettings::IniFormat); - - loadqss(); - styleCombo->addItems(QStyleFactory::keys()); - loadSettings(); - - connect(ok_Button, SIGNAL(clicked(bool) ),this,SLOT(saveSettings() ) ); - connect(cancel_Button, SIGNAL(clicked(bool) ),this,SLOT(close() ) ); - connect(cmd_openFile, SIGNAL(clicked(bool) ),this,SLOT(on_cmd_openFile())); - connect(cmd_openFile_2,SIGNAL(clicked(bool) ),this,SLOT(on_cmd_openFile2())); - connect(cmd_openFile_3,SIGNAL(clicked(bool) ),this,SLOT(on_cmd_openFile3())); - connect(cmd_openFile_4,SIGNAL(clicked(bool) ),this,SLOT(on_cmd_openFile4())); - connect(cmd_openFile_5,SIGNAL(clicked(bool) ),this,SLOT(on_cmd_openFile5())); - connect(cmd_openFile_6,SIGNAL(clicked(bool) ),this,SLOT(on_cmd_openFile6())); - -} - -form_settingsgui::~form_settingsgui() -{ - delete (settings); -} - -void form_settingsgui::loadSettings() -{ - settings->beginGroup("General"); - spinBox->setValue(settings->value("Debug_Max_Message_count","20").toInt()); - spinBox_3->setValue(settings->value("Waittime_between_rechecking_offline_users","30000").toInt()/1000); - - - if(settings->value("current_Style","").toString().isEmpty()==false) - styleCombo->setCurrentIndex(styleCombo->findText(settings->value("current_Style","").toString())); - else - { - //find default Style for this System - QRegExp regExp("Q(.*)Style"); - QString defaultStyle = QApplication::style()->metaObject()->className(); - - if (defaultStyle == QLatin1String("QMacStyle")) - defaultStyle = QLatin1String("Macintosh (Aqua)"); - else if (regExp.exactMatch(defaultStyle)) - defaultStyle = regExp.cap(1); - - //styleCombo->addItems(QStyleFactory::keys()); - styleCombo->setCurrentIndex(styleCombo->findText(defaultStyle)); - - } - - styleSheetCombo->setCurrentIndex(styleSheetCombo->findText(settings->value("current_Style_sheet","Default").toString())); - settings->endGroup(); - - settings->beginGroup("Network"); - lineEdit_3->setText(settings->value("SamHost","127.0.0.1").toString()); - lineEdit_2->setText(settings->value("Destination","test").toString()); - lineEdit->setText(settings->value("TunnelName","I2PChat").toString()); - spinBox_10->setValue(settings->value("SamPort","7656").toInt()); - - spinBox_4->setMinimum(1); - spinBox_4->setValue(settings->value("inbound.length","1").toInt()); - spinBox_4->setMaximum(3); - - spinBox_5->setMinimum(0); - spinBox_5->setValue(settings->value("inbound.quantity","1").toInt()); - spinBox_5->setMaximum(3); - - spinBox_6->setMinimum(0); - spinBox_6->setValue(settings->value("inbound.backupQuantity","1").toInt()); - spinBox_6->setMaximum(3); - - spinBox_7->setMinimum(0); - spinBox_7->setValue(settings->value("outbound.backupQuantity","1").toInt()); - spinBox_7->setMaximum(3); - - spinBox_8->setMinimum(1); - spinBox_8->setValue(settings->value("outbound.length","1").toInt()); - spinBox_8->setMaximum(3); - - spinBox_9->setMinimum(0); - spinBox_9->setValue(settings->value("outbound.quantity","1").toInt()); - spinBox_9->setMaximum(3); - settings->endGroup(); - - - settings->beginGroup("Sound"); - settings->beginGroup("SoundFilePath"); - txt_SoundFile->setText(settings->value("User_go_Online","").toString()); - txt_SoundFile2->setText(settings->value("User_go_Offline","").toString()); - txt_SoundFile3->setText(settings->value("FileSend_Finished","").toString()); - txt_SoundFile4->setText(settings->value("FileRecive_Incoming","").toString()); - txt_SoundFile5->setText(settings->value("FileRecive_Finished","").toString()); - txt_SoundFile6->setText(settings->value("NewChatMessage","").toString()); - - if(!txt_SoundFile->text().isEmpty())checkBoxSound->setEnabled(true); - if(!txt_SoundFile2->text().isEmpty())checkBoxSound_2->setEnabled(true); - if(!txt_SoundFile3->text().isEmpty())checkBoxSound_3->setEnabled(true); - if(!txt_SoundFile4->text().isEmpty())checkBoxSound_4->setEnabled(true); - if(!txt_SoundFile5->text().isEmpty())checkBoxSound_5->setEnabled(true); - if(!txt_SoundFile6->text().isEmpty())checkBoxSound_6->setEnabled(true); - - settings->endGroup(); - - settings->beginGroup("Enable"); - checkBoxSound->setChecked(settings->value("User_go_Online",false).toBool()); - checkBoxSound_2->setChecked(settings->value("User_go_Offline",false).toBool()); - checkBoxSound_3->setChecked(settings->value("FileSend_Finished",false).toBool()); - checkBoxSound_4->setChecked(settings->value("FileRecive_Incoming",false).toBool()); - checkBoxSound_5->setChecked(settings->value("FileRecive_Finished",false).toBool()); - checkBoxSound_6->setChecked(settings->value("NewChatMessage",false).toBool()); - settings->endGroup(); - - settings->endGroup(); - -} -void form_settingsgui::saveSettings() -{ - QString SessionOptionString; - QString temp; - - SessionOptionString="inbound.nickname="+lineEdit->text(); - - SessionOptionString+=" inbound.quantity="; - temp.setNum(spinBox_5->value()); - SessionOptionString+=temp; - - SessionOptionString+=" inbound.backupQuantity="; - temp.setNum(spinBox_6->value()); - SessionOptionString+=temp; - - SessionOptionString+=" inbound.length="; - temp.setNum(spinBox_4->value()); - SessionOptionString+=temp; - - SessionOptionString+=" outbound.quantity="; - temp.setNum(spinBox_9->value()); - SessionOptionString+=temp; - - SessionOptionString+=" outbound.backupQuantity="; - temp.setNum(spinBox_7->value()); - SessionOptionString+=temp; - - SessionOptionString+=" outbound.length="; - temp.setNum(spinBox_8->value()); - SessionOptionString+=temp; - - settings->beginGroup("General"); - settings->setValue("Debug_Max_Message_count",spinBox->value()); - settings->setValue("Waittime_between_rechecking_offline_users",spinBox_3->value()*1000); - settings->setValue("current_Style",styleCombo->currentText()); - settings->setValue("current_Style_sheet",styleSheetCombo->currentText()); - settings->endGroup(); - - settings->beginGroup("Network"); - settings->setValue("SamHost",lineEdit_3->text()); - settings->setValue("Destination",lineEdit_2->text()); - settings->setValue("TunnelName",lineEdit->text()); - settings->setValue("SamPort",spinBox_10->value()); - //Inbound options - settings->setValue("inbound.quantity",spinBox_5->value()); - settings->setValue("inbound.backupQuantity",spinBox_6->value()); - settings->setValue("inbound.length",spinBox_4->value()); - //Outpound options - settings->setValue("outbound.quantity",spinBox_9->value()); - settings->setValue("outbound.backupQuantity",spinBox_7->value()); - settings->setValue("outbound.length",spinBox_8->value()); - - settings->setValue("SessionOptionString",SessionOptionString); - settings->endGroup(); - settings->beginGroup("Sound"); - settings->beginGroup("Enable"); - settings->setValue("User_go_Online",checkBoxSound->isChecked()); - settings->setValue("User_go_Offline",checkBoxSound_2->isChecked()); - settings->setValue("FileSend_Finished",checkBoxSound_3->isChecked()); - settings->setValue("FileRecive_Incoming",checkBoxSound_4->isChecked()); - settings->setValue("FileRecive_Finished",checkBoxSound_5->isChecked()); - settings->setValue("NewChatMessage",checkBoxSound_6->isChecked()); - settings->endGroup(); - settings->beginGroup("SoundFilePath"); - settings->setValue("User_go_Online",txt_SoundFile->text()); - settings->setValue("User_go_Offline",txt_SoundFile2->text()); - settings->setValue("FileSend_Finished",txt_SoundFile3->text()); - settings->setValue("FileRecive_Incoming",txt_SoundFile4->text()); - settings->setValue("FileRecive_Finished",txt_SoundFile5->text()); - settings->setValue("NewChatMessage",txt_SoundFile6->text()); - settings->endGroup(); - settings->endGroup(); - this->close(); -} - - -void form_settingsgui::on_styleCombo_activated(const QString &styleName) -{ - qApp->setStyle(styleName); - -} - -void form_settingsgui::on_styleSheetCombo_activated(const QString &sheetName) -{ - loadStyleSheet(sheetName); -} - -void form_settingsgui::loadStyleSheet(const QString &sheetName) -{ - // external Stylesheets - QFile file(QApplication::applicationDirPath() + "/qss/" + sheetName.toLower() + ".qss"); - - file.open(QFile::ReadOnly); - QString styleSheet = QLatin1String(file.readAll()); - - - qApp->setStyleSheet(styleSheet); -} - -void form_settingsgui::loadqss() -{ - - QFileInfoList slist = QDir(QApplication::applicationDirPath() + "/qss/").entryInfoList(); - foreach(QFileInfo st, slist) - { - if(st.fileName() != "." && st.fileName() != ".." && st.isFile()) - styleSheetCombo->addItem(st.fileName().remove(".qss")); - } -} -////FilePath=QFileDialog::getOpenFileName(this,"Open File", ".", "all Files (*.*)"); -void form_settingsgui::on_cmd_openFile() -{ - - txt_SoundFile->setText(QFileDialog::getOpenFileName(this,"Open File", ".", "wav (*.wav)")); - if(txt_SoundFile->text().isEmpty()){ - checkBoxSound->setChecked(false); - checkBoxSound->setEnabled(false); - } - else - checkBoxSound->setEnabled(true); -} - -void form_settingsgui::on_cmd_openFile2() -{ - txt_SoundFile2->setText(QFileDialog::getOpenFileName(this,"Open File", ".", "wav (*.wav)")); - if(txt_SoundFile2->text().isEmpty()){ - checkBoxSound_2->setChecked(false); - checkBoxSound_2->setEnabled(false); - } - else - checkBoxSound_2->setEnabled(true); - -} -void form_settingsgui::on_cmd_openFile3() -{ - txt_SoundFile3->setText(QFileDialog::getOpenFileName(this,"Open File", ".", "wav (*.wav)")); - if(txt_SoundFile3->text().isEmpty()){ - checkBoxSound_3->setChecked(false); - checkBoxSound_3->setEnabled(false); - } - else - checkBoxSound_3->setEnabled(true); -} -void form_settingsgui::on_cmd_openFile4() -{ - txt_SoundFile4->setText(QFileDialog::getOpenFileName(this,"Open File", ".", "wav (*.wav)")); - if(txt_SoundFile4->text().isEmpty()){ - checkBoxSound_4->setChecked(false); - checkBoxSound_4->setEnabled(false); - } - else - checkBoxSound_4->setEnabled(true); -} -void form_settingsgui::on_cmd_openFile5() -{ - txt_SoundFile5->setText(QFileDialog::getOpenFileName(this,"Open File", ".", "wav (*.wav)")); - if(txt_SoundFile5->text().isEmpty()){ - checkBoxSound_5->setChecked(false); - checkBoxSound_5->setEnabled(false); - } - else - checkBoxSound_5->setEnabled(true); -} -void form_settingsgui::on_cmd_openFile6() -{ - txt_SoundFile6->setText(QFileDialog::getOpenFileName(this,"Open File", ".", "wav (*.wav)")); - if(txt_SoundFile6->text().isEmpty()){ - checkBoxSound_6->setChecked(false); - checkBoxSound_6->setEnabled(false); - } - else - checkBoxSound_6->setEnabled(true); - -} \ No newline at end of file diff --git a/plugins/i2pmessenger_plugin/gui/form_settingsgui.h b/plugins/i2pmessenger_plugin/gui/form_settingsgui.h deleted file mode 100644 index 9d706225e..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_settingsgui.h +++ /dev/null @@ -1,59 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#ifndef SETTINGSGUI_H -#define SETTINGSGUI_H - -#include "ui_form_settingsgui.h" -#include -#include - - -class form_settingsgui : public QDialog, private Ui::form_settingsgui -{ - Q_OBJECT - -public: - form_settingsgui(QWidget *parent = 0, Qt::WFlags flags = 0); - ~form_settingsgui(); - -private slots: - void loadSettings(); - void saveSettings(); - void on_styleCombo_activated(const QString &styleName); - void on_styleSheetCombo_activated(const QString &styleSheetName); - - void on_cmd_openFile(); - void on_cmd_openFile2(); - void on_cmd_openFile3(); - void on_cmd_openFile4(); - void on_cmd_openFile5(); - void on_cmd_openFile6(); - -private: - QSettings* settings; - void loadStyleSheet(const QString &sheetName); - void loadqss(); - -}; - - -#endif - diff --git a/plugins/i2pmessenger_plugin/gui/form_settingsgui.ui b/plugins/i2pmessenger_plugin/gui/form_settingsgui.ui deleted file mode 100644 index ede91b7b9..000000000 --- a/plugins/i2pmessenger_plugin/gui/form_settingsgui.ui +++ /dev/null @@ -1,1647 +0,0 @@ - - form_settingsgui - - - - 0 - 0 - 600 - 500 - - - - - 0 - 0 - - - - - 600 - 500 - - - - - 600 - 500 - - - - Settings - - - - :/icons/settings.png:/icons/settings.png - - - false - - - true - - - - - 9 - 9 - 600 - 500 - - - - - 0 - 0 - - - - - 600 - 500 - - - - - 600 - 500 - - - - QFrame::NoFrame - - - QFrame::Plain - - - - 9 - - - 6 - - - - - - 0 - 0 - - - - - 0 - 300 - - - - - 128 - 500 - - - - - MS Shell Dlg 2 - 10 - 50 - false - - - - Qt::ScrollBarAlwaysOff - - - Qt::ScrollBarAlwaysOff - - - false - - - QListView::TopToBottom - - - QListView::Fixed - - - QListView::SinglePass - - - 0 - - - - General - - - - :/icons/settings.png:/icons/settings.png - - - - - Network - - - - :/icons/socket24.png:/icons/socket24.png - - - - - User Details - - - - :/icons/userblue24.png:/icons/userblue24.png - - - - - Style - - - - :/icons/looknfeel24.png:/icons/looknfeel24.png - - - - - Security - - - - :/icons/encrypted24.png:/icons/encrypted24.png - - - - - Sound - - - - :/icons/sound.png:/icons/sound.png - - - - - - - - 0 - - - 6 - - - - - - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 9 - - - 6 - - - - - - 75 - 24 - - - - - 16777215 - 75 - - - - OK - - - false - - - true - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 16 - 25 - - - - - - - - - 0 - 24 - - - - Help - - - - - - - - 75 - 24 - - - - - 75 - 16777215 - - - - Cancel - - - - - - - - - - Qt::Horizontal - - - - 181 - 20 - - - - - - - - - - 5 - - - - - - 10 - 100 - 401 - 80 - - - - Waittime between rechecking offline users - - - - - 10 - 30 - 131 - 16 - - - - Tine in sec. - - - - - - 160 - 30 - 81 - 22 - - - - 30 - - - 99999 - - - - - - - 10 - 40 - 401 - 61 - - - - SAM log - - - - - 160 - 30 - 81 - 22 - - - - - - - 10 - 30 - 121 - 17 - - - - Max. Log Messages - - - - - - - 10 - 0 - 106 - 32 - - - - - 0 - - - 6 - - - - - - 0 - 0 - - - - - 0 - 30 - - - - - Sans Serif - 16 - 75 - true - true - true - false - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:16pt; font-weight:600; font-style:italic; text-decoration: underline;"> -<p style=" -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:400; font-style:normal; text-decoration:none;">General</span></p></body></html> - - - Qt::AlignCenter - - - - - - - - - - - - - Qt::AlignCenter - - - - - - - - - - - 10 - 0 - 118 - 32 - - - - - 0 - - - 6 - - - - - - 32 - 32 - - - - - - - - - - Qt::AlignCenter - - - - - - - - 0 - 30 - - - - - Sans Serif - 16 - 75 - true - true - true - false - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:16pt; font-weight:600; font-style:italic;"> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; text-decoration: underline;"><span style=" font-weight:400; font-style:normal; text-decoration:none;">Network</span></p></body></html> - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - - 10 - 130 - 411 - 281 - - - - Tunnel Options - - - - - 20 - 20 - 101 - 16 - - - - Tunnel Name - - - - - - 130 - 20 - 261 - 20 - - - - - - - 10 - 159 - 391 - 111 - - - - Outbound - - - - - 10 - 20 - 91 - 16 - - - - Length - - - - - - 10 - 50 - 81 - 16 - - - - Quantity - - - - - - 120 - 20 - 101 - 22 - - - - - - - 120 - 50 - 101 - 22 - - - - - - - 120 - 80 - 101 - 22 - - - - - - - 10 - 80 - 102 - 17 - - - - Backup Quantity - - - - - - - 10 - 40 - 391 - 121 - - - - Inbound - - - - - 10 - 50 - 81 - 16 - - - - Quantity - - - - - - 10 - 20 - 81 - 16 - - - - Length - - - - - - 120 - 80 - 101 - 22 - - - - - - - 120 - 50 - 101 - 22 - - - - - - - 120 - 20 - 101 - 22 - - - - - - - 10 - 80 - 102 - 17 - - - - Backup Quantity - - - - - - - - 10 - 40 - 411 - 81 - - - - SAM Connection - - - - - 10 - 20 - 101 - 16 - - - - SAM HOST IP - - - - - - 10 - 50 - 101 - 16 - - - - Destination - - - - - - 130 - 50 - 261 - 20 - - - - - - - 130 - 20 - 113 - 20 - - - - - - - 250 - 20 - 31 - 16 - - - - Port - - - - - - 290 - 20 - 101 - 22 - - - - 65000 - - - 7656 - - - - - - - - - 10 - 50 - 411 - 375 - - - - - - - - - 20 - 70 - 81 - 16 - - - - Age - - - - - false - - - - 100 - 70 - 91 - 22 - - - - - - false - - - - 100 - 110 - 71 - 18 - - - - Male - - - - - - 20 - 140 - 71 - 16 - - - - Interests - - - - - - 20 - 110 - 46 - 14 - - - - Gender - - - - - - 20 - 40 - 61 - 17 - - - - Nickname - - - - - false - - - - 190 - 110 - 71 - 18 - - - - Female - - - - - false - - - - 100 - 30 - 301 - 20 - - - - - - false - - - - 20 - 160 - 381 - 201 - - - - - - - - 1 - 37 - 179 - 16 - - - - - - - - - - - - - 10 - 0 - 150 - 32 - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><img src=":/icons/userblue24.png" /></p></body></html> - - - Qt::AlignCenter - - - - - - - - 0 - 30 - - - - - Sans Serif - 16 - 75 - true - true - true - false - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:16pt; font-weight:600; font-style:italic; text-decoration: underline;"> -<p style=" -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:400; font-style:normal; text-decoration:none;">User Details</span></p></body></html> - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - - - - 10 - 120 - 431 - 181 - - - - StyleSheet - - - - true - - - - 110 - 30 - 266 - 21 - - - - - 16777215 - 87 - - - - - 75 - true - - - - - 200 - 87 - - - - - Default - - - - - - - 20 - 30 - 81 - 20 - - - - - 0 - 0 - - - - Style Sheet: - - - - - - - 10 - 40 - 431 - 71 - - - - Style - - - - true - - - - 110 - 30 - 131 - 18 - - - - - 0 - 0 - - - - - - - 20 - 30 - 51 - 20 - - - - - 0 - 0 - - - - Style: - - - - - - - 11 - 0 - 77 - 31 - - - - - - - - - - - - - Qt::AlignCenter - - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt;">Style</span></p></body></html> - - - - - - - - - - - 10 - 40 - 411 - 91 - - - - - - - - false - - - - 20 - 50 - 391 - 18 - - - - Request Authorization - - - - - false - - - - 20 - 20 - 361 - 18 - - - - Block all unknown Users - - - - - - - 10 - 0 - 104 - 27 - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><img src=":/icons/encrypted24.png" /></p></body></html> - - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" -qt-block-indent:0; text-indent:0px; font-size:8pt;"><span style=" font-size:12pt; font-weight:600;">Security</span></p></body></html> - - - - - - - - - - - 10 - 0 - 104 - 27 - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><img src=":/icons/sound.png" /></p></body></html> - - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" -qt-block-indent:0; text-indent:0px; font-size:8pt;"><span style=" font-size:12pt; font-weight:600;">Sound</span></p></body></html> - - - - - - - - - 0 - 40 - 441 - 381 - - - - Sound Events - - - - - 10 - 20 - 421 - 81 - - - - User - - - - false - - - - 10 - 20 - 80 - 23 - - - - go Online - - - - - false - - - - 10 - 50 - 80 - 23 - - - - go Offline - - - - - false - - - - 90 - 20 - 281 - 24 - - - - - - false - - - - 90 - 50 - 281 - 24 - - - - - - - 380 - 20 - 31 - 21 - - - - ... - - - - - - 380 - 50 - 31 - 21 - - - - ... - - - - - - - 10 - 100 - 421 - 61 - - - - FileSend - - - - false - - - - 90 - 20 - 281 - 24 - - - - - - - 380 - 20 - 31 - 21 - - - - ... - - - - - false - - - - 10 - 20 - 80 - 23 - - - - Finished - - - - - - - 10 - 160 - 421 - 91 - - - - FileRecive - - - - false - - - - 10 - 20 - 80 - 23 - - - - Incoming - - - - - false - - - - 90 - 20 - 281 - 24 - - - - - - - 380 - 20 - 31 - 21 - - - - ... - - - - - - 380 - 50 - 31 - 21 - - - - ... - - - - - false - - - - 10 - 50 - 80 - 23 - - - - Finished - - - - - false - - - - 90 - 50 - 281 - 24 - - - - - - - - 10 - 260 - 421 - 111 - - - - Chatmessage - - - - - 380 - 20 - 31 - 21 - - - - ... - - - - - false - - - - 10 - 20 - 80 - 23 - - - - New - - - - - false - - - - 90 - 20 - 281 - 24 - - - - - - - - - - - - - ok_Button - cancel_Button - help_Button - - - - - - - itemListWidget - currentRowChanged(int) - stackedWidget - setCurrentIndex(int) - - - 62 - 80 - - - 195 - 80 - - - - - diff --git a/plugins/i2pmessenger_plugin/gui/gui_icons.h b/plugins/i2pmessenger_plugin/gui/gui_icons.h deleted file mode 100644 index da87c94ac..000000000 --- a/plugins/i2pmessenger_plugin/gui/gui_icons.h +++ /dev/null @@ -1,46 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef GUI_ICONS_H -#define GUI_ICONS_H - -/*Icons */ -#define ICON_QUIT ":/icons/exit.png" -#define ICON_MINIMIZE ":/icons/window_nofullscreen.png" -#define ICON_MAXIMIZE ":/icons/window_fullscreen.png" -#define ICON_QTCHAT ":/icons/userblue24.png" -#define ICON_CLOSE ":/icons/exit.png" -#define ICON_NEWUSER ":/icons/add_user.png" -#define ICON_SETTINGS ":/icons/settings.png" -#define ICON_NEWUNREADMESSAGE ":/icons/send.png" -#define ICON_USER_TRYTOCONNECT ":/icons/yellow.png" -#define ICON_USER_OFFLINE ":/icons/red.png" -#define ICON_USER_ONLINE ":/icons/green.png" -#define ICON_USER_WANTTOCHAT ":/icons/chatty.png" -#define ICON_USER_AWAY ":/icons/xa.png" -#define ICON_USER_DONT_DUSTURB ":/icons/dnd.png" -#define ICON_USER_INVISIBLE ":/icons/invisible.png" -#define ICON_DEBUGMESSAGES ":/icons/status_unknown.png" -#define ICON_MYDESTINATION ":/icons/editcopy.png" -#define ICON_ABOUT ":/icons/about.png" -#define ICON_SOUND_ON ":/icons/sound.png" -#define ICON_SOUND_OFF ":/icons/sound_off.png" - - -#endif \ No newline at end of file diff --git a/plugins/i2pmessenger_plugin/gui/icons/1leftarrow.png b/plugins/i2pmessenger_plugin/gui/icons/1leftarrow.png deleted file mode 100644 index 5f8b761b12c82e565f42ea061249d0c3ebf1003e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T0$nVy={=00R98HgJuMj3%cBSVRG%}o2ct8S`X&V+p|y*S#ozi)@^Y(^Y_kpzfU0Wi)@4%#SnyXoMbhOFCx{7(tS==Zz|s|;{l znC7{K&o}Bln@$?NJF%i^kjohm06_$4=0L0hz_|3@FA@u*-k$Dl!sS3BZGo-kij9&8 zqL2gezl=~f92xNOWmhO} zWaV;4EIG1w_uF?LM`ph)6#^}_X!F^i+BJ|(1+%FjO(|Pq*-uPgA3Xm(8a+Gt;m3Sa zgN}e-hhD1zngXZ_z$+vuRrc1<&E+@Gk54?CnzB?4TU&KF>uXR@I8f<~>y;n7_!z); z{lwinPOtmOuHK-ca>9ezDiW+sbM#o&ALx4>jx468;}GIM0RRvmc84=tx;i2m*BEE6 b`O?}iOyaM!b2U#f00000NkvXXu0mjfC{+?< diff --git a/plugins/i2pmessenger_plugin/gui/icons/Thumbs.db b/plugins/i2pmessenger_plugin/gui/icons/Thumbs.db deleted file mode 100644 index 7382d7c67b50de5e88c31dacbe6a39dad450c04f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54272 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 I|MWZXf2L;t5&!@I diff --git a/plugins/i2pmessenger_plugin/gui/icons/Tools.gif b/plugins/i2pmessenger_plugin/gui/icons/Tools.gif deleted file mode 100644 index 4c626bb7b7f3e11a7d3e96d59c2469ccc79941a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 929 zcmX|=QD|FL7{`CNYi*3J#>*uHjZ$ZvcE%ExYp7e0%%pMaXy>Hh7VgGcZaao;R%bJO zxWtBJYmqqHt`DMd#1Td&V+`roi@4_MgUB9+5RlS`jEo6IipH{09bWIf4W5UO@BBI6 z|NDRcbI#lQ#$ zoFDXVG&bZOpR%*HaIug(ttbg)>D#6J`Ft$o&mZ%TC&#t8_ul<`-=)J>zqy+KBwrYl z7vJ?h`uCB)#~NY~plBVOU<>gxyF(v|@ z2OaAzH|E_Tjr1!{bgqa@n)nLAmk|z_8H`y&bbKsYNff)^>S5=g&_UK z+(@I*J|MQ5_+_@)JDygVFHFZ{6YBEXH7lG|4Sfp zmd#fYvz9autkYC!de;UEwqk>K3kSM0%cCgS8n!dfTX}t>YTfzDh?T$2i9o~J{ibd(!>-&L0DryMvDf&!)qHKTiCd+m&$!?r`_ur{XTHyb|b+@&BD%0%w4;QTydH?_b diff --git a/plugins/i2pmessenger_plugin/gui/icons/about.png b/plugins/i2pmessenger_plugin/gui/icons/about.png deleted file mode 100644 index 68733266bc26afa2be7d6a826ab6faafd0302b6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1490 zcmV;@1ugoCP)5Jq6DM}CA>>j5R8?8%5_>1LI$h#*`Qt<0{?udU#(v+Uu*?PiDMo4 z&aM;t?>Kz))?54fckL>qayb_vV0pPlu{ayOdv>PgCN`pj$+V&Wh4**q%4prc>7-yy!hk`FV2q)J>=`qD&zqeD%QDlc^-Y$ zcuh(vlC!eGA!G~iP-g@(ZX&O$C-P$&AX{yA*~#d%3&A^ z!;lzKAf&+aVp^MQGHDZl?Ja5ID8Tb0gkTMziIpOb6FHH_$T)4LFijn=&QmSEg%WAZ zh91mJ0n^T7*;x!LjTdNqe`Ci5fudIT@cjr-s5mB$0>Yq5p4uyZJ1q}Dxce2o&c~AMk?88LK1{(9iWs>Ql(5l(gtmk-QGvr&4-!(&xb#* zk34nhf7|uZ=bz}>_qmf}X9t-tji9x{N~Lh!ECYQV92#gxNI|i@$l1XX)sjhDjx;TrQ6eKDPMBho1ka*OrIA@uepV%{w~pYwzBDth>GQ z#bS1f#`K@Q7hW&_znE&B$jaDL0000007*qoM6N<$g8zNdi2wiq diff --git a/plugins/i2pmessenger_plugin/gui/icons/add_group.png b/plugins/i2pmessenger_plugin/gui/icons/add_group.png deleted file mode 100644 index 99e0c90ea880ad540a1fecffe737a113ff7be760..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1412 zcmV-~1$+95P)3`q)_fueDrN7#$|w%P(J^cfH^DEh44F|Ir=& z_L+Gjd3PYi8aEC~1muP14wk=O+(-V8!M1*T?d2B_>^fuJx#=CRKaV5zNpz>$`R~oS z%bwXkv-7XL^uJ(<^lhr0+tO*b-jO*`E7<9K?MS9a_kNFwW*JT#pcc3+rzalXw%R7k zPEhE*Z*!ry`@u%Fc}it+%4JsOgC2kA{!JZ+Kl1~6K{IsWL%<{qd8Q&m)e?i~-@1RQ zd4i!V14^fDbqrXow2 zPeGz(jVRlezh!Kqj+bBk788d?5c>gYQ+)Y72Vx)X4hb zW5HiJOD1q?&Whb148c|HpN)!~R3R_Qun%Qp`bCxvl zn$9eb0ssQcNJ7uAgqG=sOcq(CUV2w^eqNt7tP9P+M++zv&6?$!`Tk;y!z9};ag0xt%& za!`{UNVH~Q7u0V6z!W0KMGQBa#cnEaU}pBDk6rRiQysS|xm@3nmPwxP@;r>Lv(eU9 z;60;{zt*|`#f~*b{*t1eFce9^rNnQs6CR43eXf)*$B-YrbhuhO>4?tyw7Vt$2}!j) z@`Vwy@g2>X1qdF4Dhd+6Zl|XnceP3Gi<1ofJmX8LiO{DM14I6Hhkxr z%uOdvuvi@8u!^>LE#Z36eyBFg~SO$BqbU` zz!4lZBBGJl@BPOPgvOIMUvqQDsW0G-(hyRsH-MWOLP*qGH{#hc!BltN(ymeG%i;jLgif*RE!y#PN4qu3lx zLKg~{lxX->OuAJZ<-ypmuCqg#59ijdxU5~z*%{cH34^ClnlFJ0igj1_BAZGgp(l|` zB=Gi|dti5G0AGXGY#+{KnLt+Vt?@z#R;PJTNpX8;WoR8$WU! z$Ma)g7SKYI$jLSo?QRgAAXXx9HA1Y0AY3Asr!b5b%#M}e96pW_ZB=F9$Hs=S#&`t) zZd`OU3Z2$|@}^=Hj@@Rp_Z5(=z`xYR3_XtWpg>qDf|3A?lmWjNNz*_SF*N5J2rHxD zfh*>nH3UoO&woJ3MJ)`)fzEAvpYGTkwP^~+^!r7u;Dca>fP?@6N9E=m{%u5y3ye}zHw~Dk0T{=eg|QdkTMlU125L<^c<7ZQ9-|a`GqGg!gd4$0000Y$7O diff --git a/plugins/i2pmessenger_plugin/gui/icons/add_user.png b/plugins/i2pmessenger_plugin/gui/icons/add_user.png deleted file mode 100644 index 12f1a2be7509504c46fc46abcba1de5d7a57268c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1214 zcmV;v1VQ_WP)||h6Rxjfnbd6T<}Uvlo&&ZEZFGML`kqD zvNQ$_N?;)b2_TJPFhr3k5Tq@ohDQh5na7$$YxSzs{~Tb-V;0wkmG)Nc4K-*=loAzS^a`GV`hk)$@Ftp-S_|y{-++)>%fN*z)GNb8VFW0o zX`>}_I6(>-OO_t1gV6WOZm5XD5FrG@urQk@V`NI`i2~A0Rvrt8qVTd%AfyBYMzZBD zkez~=Zbi3Z7at2yN?nd;61{=fm==T@S|W#@Y$4WEB;B0AviSZ{fN`g2WT-m~eE)FE z^r<9rc{DSDw9~{=HkpDRrVB>TV*vnOt^R>mcSfva0-5cKRmqM$JG2YKeQ98PAer5mcxK_eZ%cD#b^Unq5}xBD3>)9AGji=3k(YlDS+olZ&A%)81PG8)9X5GI)Zqn8!JzbpTxN$OVS>`RCL#QN< z3$MVw@q}(^@yV7EXYE^SI>vP1`?U@$ znV+rc63?k14HMt-iGmPAQ|Nk#j1(Vzw;NKRC&9K2auk^qpTvpbV-#eXl$|9LQn&q-&>#GMHflXV<0s^ zf%23(>Fdi@?zgPPYo!L7tYJKR{r=kj1s)Vi{SX1p{m-o@N`vQjT^Oo)Rlj-a%*OPj c?msC1Z~n*AY5VI=+W-In07*qoM6N<$f+osN0ssI2 diff --git a/plugins/i2pmessenger_plugin/gui/icons/chatty.png b/plugins/i2pmessenger_plugin/gui/icons/chatty.png deleted file mode 100644 index bae29072d354e2e138b17cd54661e6b27694e4f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 933 zcmV;W16urvP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00006 zVoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_00Rk0L_t(|+KrP-Xk29g zg}?v)_cbqXr^a-eNld3TO(9X!g;HNtn=ZPkf(n|wy3kFF;6elu7orHd5-JKJ640HZ zE+kY6wMnd+fKA#w#>tp@C6i2MGBdsR&fJHKDo9Z9TOQ8l!1*Nqf&lG--so!|K6T&s zMt7%gvDW$74{?Ej|HGk(ICb^iiF)XM6fV4f%6;SjuL8FNa&K4J8)y(8KbC&}-ZS@D zl&+CEp3k3r5uC!uovc#&>5zze8m793ti;lqG~e58Y+F-5BkwKC$XHn(u(HaccpK zHP(QGa=q3pK0a(dnI3;3;+eltspm12IfCFfHX98h>I#MxVAncmo(hL^+~7x` ztRxbV=)tt?5%@TMhOz`t7U{TMR=vZtJjvvBF5akf1y}<%R0zRuf^(Dp zxk+Xx-a?HkU`l>{`eAC;TXczQ9PYw zCdR-?3!(Z1jzsrWQgM>HLj2Zg5whdqUjMzlIFfWv9y(&C^ti;Z49ujC7MJ*RnEhe9 zXfK4ws%>1D=}ygWG8^8S;EKOLJ$MHr=bqEvc=Uet!Aze_5sENZ^a_`La;HD|GPsbh z(gKoy8Ce1fKwJD%jD(4m?qSeMun(Zoq+Z-2-*jmFm$`oeFE3K-vHra700000NkvXX Hu0mjf8nCp! diff --git a/plugins/i2pmessenger_plugin/gui/icons/dnd.png b/plugins/i2pmessenger_plugin/gui/icons/dnd.png deleted file mode 100644 index 20d71a8adc969ed5df3803f04a1531fd23d89231..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 894 zcmV-^1A+XBP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00006 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 diff --git a/plugins/i2pmessenger_plugin/gui/icons/green.png b/plugins/i2pmessenger_plugin/gui/icons/green.png deleted file mode 100644 index 6a6687677a0ec2503b4f81e1f84b790013cd3442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 774 zcmV+h1Nr=kP)Bl%jwMiCfvIt7DNhl~3DT*iv7Qt>rsJM0KzB?ECAE>xc z5ElwA3N9)r1+7?0BY}iYYLcehWIDHVKhFI+$Au-dp&Os|?|B|xcpu3#H1Wzrt^HQ} zlbKIvt~Fn5K35LQKeC-H1N3oLJ}Y4A^{JOHe01USD`&3M?@ixZ8te`R(XD8miX1Rc zvet3)iFZyk8ZR|ISZl4dHq%YcdFRH)SH~}Tv)(-59OrF-&WD{zf8K9duH~z~S~@zH1Vw-plFnjhX}CJPR9~t~r|aw$K{0yp)q?=gqW5v{jmC20UGJ>7*!J4pS#P#I z=gtun0ZJ<}lMz)B>!Wp4Uxigz-Ou;)t>UowVfVA$uf_7s<@;C9UOjzS95Sj#49g)w z5s+3XnaNOEk?Wko6ez7obV6FCgnx&{#(Nu!cJ?s)>qh&=MJXh46(7MRC50)TGA24f zX@$-;)x)X}bfn$1H@5t()#<6}lLA3zGBTYVwWn2jWGr++nU}=3Uh$lCTb))p}*4)qd%it{(?W>o9Ugb%ldyOHRYtN%LY&b zgbfhiiBo^U|7APezHBO!gxAC020smcR(*BXopasf)#PGxrTLoWS`+C;dMDe?5z>% diff --git a/plugins/i2pmessenger_plugin/gui/icons/i2pmessenger_win.rc b/plugins/i2pmessenger_plugin/gui/icons/i2pmessenger_win.rc deleted file mode 100644 index 4415a832c..000000000 --- a/plugins/i2pmessenger_plugin/gui/icons/i2pmessenger_win.rc +++ /dev/null @@ -1,3 +0,0 @@ -#include "i2pmessenger_win.rc.h" - -IDI_ICON1 ICON "gui/icons/personal.ico" diff --git a/plugins/i2pmessenger_plugin/gui/icons/i2pmessenger_win.rc.h b/plugins/i2pmessenger_plugin/gui/icons/i2pmessenger_win.rc.h deleted file mode 100644 index eb3bb7641..000000000 --- a/plugins/i2pmessenger_plugin/gui/icons/i2pmessenger_win.rc.h +++ /dev/null @@ -1,25 +0,0 @@ -/**************************************************************** - * I2P Messenger is distributed under the following license: - * - * Copyright (C) 2009 - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - ****************************************************************/ - - - -#define IDI_ICON1 101 - diff --git a/plugins/i2pmessenger_plugin/gui/icons/invisible.png b/plugins/i2pmessenger_plugin/gui/icons/invisible.png deleted file mode 100644 index 5af7e412f2c7745a34c9d9bc8e3abbbc05c7a520..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmV;V16%xwP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00006 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 diff --git a/plugins/i2pmessenger_plugin/gui/icons/quick_restart.png b/plugins/i2pmessenger_plugin/gui/icons/quick_restart.png deleted file mode 100644 index 928e87422dff390bcce5b9813b3565c890962138..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4123 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 diff --git a/plugins/i2pmessenger_plugin/gui/icons/rebuild.png b/plugins/i2pmessenger_plugin/gui/icons/rebuild.png deleted file mode 100644 index d002ecac29fffacd81bd037fc1e158344e350620..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 931 zcmV;U16=%xP)! zO=w(I6vuz(-usd_)24k%oJyLKF%sJ%EhSQ0qzYP6L05_>DxxA@Ek#{Z?|?b+&FO(Z3&jV#_odj{s`DQ2J@v2ic)&SFEm{#l35X~}K!6|!P$G!; zXk#*)GHu82-@oq}Q<^T_b?=?Gr+`!(FS3ZoT8l$)*5RDTT95S(=RF801g!*sw)JUr zlOj+WYaOXn6V+9EWN74P9{c_S;%>vGaDwX(w6k%;21E;aS0F!?=iA># zsSY`$w{e_gc`+JT{XWQC*F}$H$>k#A;W-M!RSM+mct9I7YJ!$v9ckNGD*e!D+^^(O=+Z0h|;Z%4(fC8FBe+-maQCn^mQKZf0lNY zp*yyOKcpHMV9pdlN_cUZ6GIwuZ+Qvh3I_TIX{4f&y4{j%szWuH&4;1Kl@l zBX*vPs@Xsy6oj8Z7=QN9_EMZ{4q&pQBP#J+O;v#+1?-d}cjyX4s~9l$LU zv9#iA4Iv_kQqEahZy%+VS7;AjiIUAN>r-z6$p8LT@fSbmPT=Hu^dtZP002ovPDHLk FV1lF1y>I{k diff --git a/plugins/i2pmessenger_plugin/gui/icons/red.png b/plugins/i2pmessenger_plugin/gui/icons/red.png deleted file mode 100644 index c61ff41a75e1fa6b20bea83ad66e24a1c2da9241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmV-~0(YsXOL0+Lbja^BgAO)oep%tp6)(}yf8AxI$&CC4BWahcJiZTTK;BfCfeBZ}C_uRuFc%9sb ze2~!jicf1yAwGo;lM@uUtvf6DPWtc)vge(J(hVoOqYg%e-T0Y0Ulm%+HV1 zIA3KJ`C)zx7a5;ttVnT{7hgJe?lqkb8ym#27b=zKYunrB&k~&s+1<-*VvzZWS6|_+ z)6C_jre;*D71e5>wOVvKG@JS>D^}V0gZi(mHMsd6*E4Ap)!n#pOrt@w$<|g7CrJ?h zZL+@~_DMpLSn2h83(Uov{r;Y@hEw&EZIsv zPpK3dJTejt27~YpgMlOYyvc4iU!>UzZER;@k+{s9aybY~CE_^L9mnBZC{Qjt$?<0x zK_7z{4#-U~tyBsIN#fD^`p#{>Utsps^z@|BQL!%wu3K_>IBZ+!$aIR2M=6Wap0APmzu2H3#w*vq78 e`hUaupZF6ZQT0JpZW1H_0000C}%EIML{8D$V1E~<;5 zF1qYb=%y|rh$6Z$D59Y=s5w^~Q_A zUhNg|EziJVq^{9tJD`jWG8PJglp~YYh)u?@7uoTzSC zn?Q?0&Op{sKqmY5*?)#P2z5SJPMkVk_0qGst(e3tWHb;0bb7Fuc-GzX^Ses_f17Au zXFomBdqs%wQz6D*2{Hash~Y<~uk&2WW986)TL2hhd*V}S8~*8E%q11FnR!e_4hH3e z^V4!yXi)+AC@WjjeDD5nd^9RVctVJ-uAu1d9u$!&AtF&B&R=*K1hZ?gMqbR%oV|Lp zWpA@@W(KnJ(AO6xHk-p$S(bb)P-=skDv8?K+WNd7OioPdoX)DI z74BsgYq0^h%S?r9IZaJ9)cbA75=0f1yLY<6w{Km$o=nER07y%UaJk*yW}nZ$*5#_G yC@Co_6p|28C6)|@LZbr%pFc#SBX5AQ1;KA|JQyVixm^VS000025EHw diff --git a/plugins/i2pmessenger_plugin/gui/icons/send.png b/plugins/i2pmessenger_plugin/gui/icons/send.png deleted file mode 100644 index 9a7fbe1c82f81c14b9745f04014f0ddf659c90dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 860 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 diff --git a/plugins/i2pmessenger_plugin/gui/icons/sound.png b/plugins/i2pmessenger_plugin/gui/icons/sound.png deleted file mode 100644 index fe37e137ed1ebe72d935fe13c68a053c3100b894..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639 zcmV-t2AKJYP)u*!{8OJ~8*gh8@Cq9my*iLLG5E4eYZWL4%#s<9Tv}qYH#HF%Z z-}j^M@6q%8a9x*YY3r7)zQc!)d@GyH{(EjZRB!!KDuy$j|T=Q6^k?)HZI^g4vyo1 zAP@?Lc;UqjY~H$+w$@h0$H%#K>(=$Lv9T8qA39hA@IE3bvi!?Qkzy9s-h=g0XeC5i$Pi_o;^|e2~I_L$EWqD&NndtI)eVjjgmfX}7E#WXepM)R? zZ2Iz-=(ce8x?3M|W}P$)7pJ%eRgEbd-HTP%i8l2KJZ z!Jy9NOBb1$o~FH{owl~t-i027bY0g18rf@;*tSh`uo*>Baa;${;~_mhPOVl$(=_Tv zo$342OioVXG#W^fgwN;2bsc7BXPKCoAel-L4!39v09lp<$>+neEc|{ys$WA<6dH{N z4`ycY`~8@viJ~Z&rb(etAeWn>@ZbS~rU0TK;yNydVPY5tvLw;m9Ap6?2*SK1NoZOC zEf7FeRTNc46h$)WG?}{(6UefRWm%NVB_=W%Ov50UNMM>K4aXs1+XMmud_Et5u>i0e zjX|&1Lq|skdMJd?=R;N$BuSz@kzjQA4y9rVMOCmZn{ug0ty-n$bIS-cH&L6f;yMnh zqL56b5JeHwG{*o$fP42QF3(je#opc?x|ejLs49x0pePEd&Q8{@TaT{mnDsiAX%LP? zcwxgvlBpDmqN4a!WJO`s>Q(gi^iV359(;W5+LcdD^2w8LAKbqEn?JdE^A;bTIg23h zzXnS9yj}!Bz_d&njfaC~nkMyn{h?}gL{VVJj_?WIsC%$z%Se(w{P z-SOkcf3$Pw&Lg5IGJZG1$jB(wY88*i1A+jqi*4JOrip1;Se8jh*IBb>HJzyxwr#t| zjvaeBm&?7GN~IdRcI|Q(00RR9o~u`{M&t4L@B8}te(Lplu`G-G_ope(&QYyav2FX| zKEfrSX@o){5*_V$yT+q znM^i6I&&Nc%d!C%pU;OVF1#-3bh^^t-+#)s?W3tw>iYWi>&vaJt?pxhQmG^i4GlGA zGMOc%QfW&p7W>+=Wy{t?qtRefQ)Nvfjv+akHnV zrxcIJohSAHz%UFUo6XAkd_FuqJ-v8#c6OEHIL~RCmXIW=84&9AdZkjSWJOWD9SjCP zi9{kJt*x#3L?Ti1`~9CXeCDTLEEaupb94S`wc1>()dHqzDu5tKlBp<4#qameYMM5$ lX_~33>JyEg3HX21e*vQ)3x?D=aDM;*002ovPDHLkV1o1nE-(N9 diff --git a/plugins/i2pmessenger_plugin/gui/icons/sound_off.png b/plugins/i2pmessenger_plugin/gui/icons/sound_off.png deleted file mode 100644 index a7b048e8ba9a9e84f86b2710f324ab66a9391c22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1826 zcmV+-2i^FIP);uaSwAZ$Tl#rZ&h!gv%4uFxWbw%pO)T_3K{_8xleJ^X(DfnbJc;^*H_@_yz0 z{(QfmkMNqpL(8-vYr@H8t+q95*FL*?^{UTnx>48D)5EK;ywd+s*GGp}uKe8o;yrC? zMFdfJxQ_H$>ER6v7~S}tS+i%)KD1`dnwN?_o+bgor|G&+5QR@oPE39=lg&ICD4BKC zHyE50{vUwyvu(QkRX8*ca zW0R0xw7AQCtvmCemhfOi+ScvWz<#&ewP1c@BeEnjHJu`x$&$_G5CBC{P&JkG%naAB zU#GXXmqcQ!E1rn2DQSDF@4o`Ht=s(tPUo>gx4W`zRw+5tA`%WWFfc$Q9A;vC8~~@& zNx9ccbxjSv3Llwtnm`~(UtfP{aB!g2{hK#$+|!irMQ8i@HZ|Yjc-QMKuPpU=7#<$s z)X9@v>g;49$WG_D_UD=XlTGN46iIp@7;WUsODH|ZoHNgG)wz8t);vMyK=Qu}4qx^Q~PQsxJ<0$X$-Hp0@ISxkwB?!nd3j{$(DvE;Lo`*dz4_(*MbRAI?83+Uz zxD~uV)QZ0z;)V4aK+nTEdxEpU05KEltE#E0s$pG83CF(m4OsvD%n%?)b2+lPT#qbE zl$V#|bh$q96wAC``g?CMF+M@r@F1J3>)_D)?2m?Mv$?2WvV>G}ijMX}Y+d^m*tLt+ zhPnK3+Zz?5rioN!<)~cNnyRX-_-cvAqlY6AX8sk2s;ao%ZVC&Fn3!_L62nguuXwG?+VYAtojK%IorQUTidF~WLm%E9oA|)HYiy#W9 z!yy*7zs>laan5UbJaPC6k1bw0w)dSKhCP-cp^Bs8y`>b``RiNl?d?A>O_K#J%`9KG z3~#xY{JcEub~~m`VMvrXok^n`2105I*YAEsJRWCAQJA;?6s4uJtb+#+ZW)kOu81Zh zU`e&|UBH%87oZ2R#M`zqD>IEI zi1^yiQ(ND_fddD2e)z_gv}ZE0e4!z6(_Vh;oYb5vD*Va19S&-r{l z$Gx6un(V76r8pcV*661w(T^_&6*p3ZhK3SHj~+cZolLe_d)_+M)YV6@FrUr0$F=(o z05<({TUHdsWHOlyc6WCVhQnb+6h)^j%c`oXLfGSB;or_6-V9UVpG!~cGns!(XD@V~ zJGXCe&)Z5uSQZ$HjhzD{ zws<^lOifKWQmIs4I-S-4;U^o`efisy<1atuuZ6{rgDk_v^K@MMnC}gb{5SzWx_>hN z7oc1a31zZ$rE}CO5|20>2&T#9*d!lkARnHapQklqn!=T2`dUtA7Z21w0nf$O*D2X= QN&o-=07*qoM6N<$g4{!TZ~y=R diff --git a/plugins/i2pmessenger_plugin/gui/icons/status_unknown.png b/plugins/i2pmessenger_plugin/gui/icons/status_unknown.png deleted file mode 100644 index 2f0c0fa9fa54a807b9b39370db9331c8aa6a3c73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1220 zcmV;#1UvhQP)%Ea!4C`^=~NvM zheiiRhd5A4j00m3qlQEz3PsxjeUI07-+k}idyaz!wJFfLlQlTW-q~4upL4`VA8HmF z?dcm-LrK{2+Rc;9?4tts?rpiC219#>`pT16>Sw+^dT}B7d*9VF4Hg()+oJ4SDz24* zXBJwdOcv_(`4hW3oui{8J%^I8jW56c?fakq(C^Pz^Uwe+Y&OuoWAEVemP&B*9{1ka zc?@tDQYg_02yRJNZ|2SZbpxKBt|FoeyG8~UZ|asW*#d4wk}k}kXL#rO$6RHI>kV{N zBU6yvy|?oSP@LbuQ|Kl)L;zj=xuYw3S9p!u6j5c8=F}82DzjzF^2Gzo2d&|JT6jUtM~3^}te#Q<1z??F`D?#i^Ss%^kkD_F5}B6AP}2| zH?Mpku*&E-!EY(yH>-HHzYul->9rCR9Bdba076Z^n6hukJ#t&XnydrY3CnX0-0mL# z)pdidB=rz4P&ng1;#{3VO_ebpZ^wK#f^C{OSr8IHK%>d-A&+3h#_c&pfs~MA)ukj z6%3<;>Jd*d7&{6%{mnlHR!7df(`8@5ltU~B@ICM{VEd3?0*wZoydS za$rf&DMT@Q)>?GtIX<%-P i1$Pl}mi0TA1MoKA998HS&4X3n|i{`&gHiStvZY0{`^6mV6VitM1GG!+XfAwyH$N7(N1DwX>3!yX zzi+-HwdVKPZK*18QexOopRG*q`%xU*uM9d{Wn=9>H0Y&Lx%5uj>mwq&YS=jW(r)T# zP%!e+*S`JomG4~q`g1)~ZMN^O)x?<7N563DV&~q*%_7S_5P)4E232<23aAE7o_+3j z7ryrr-+c8nMSyHHBI^$r_68iCKYdwME2;__cHFL1E$`w0f)D3vwc5;Y-?+loW|!O7 z-e=h9Ai&1*9gMXuX|!Gu;mzF~IBVRl`HPsRKKpQyZu<&Fmf^Du>kKBU;I+#7dcaK` zeGzz*UCQ9{yx956*hSiJZ!zlkF(O!Japfja^9ZiCA5*GhTrvdRRl)_o2LSz8M*(Lo zph&4oH2nl|a}HNOgsZj?qS^tX#$igW!&Dmy7+pXo z8au?aa{(UeGqldWTdB9coc2;AsbkAcTz!UGt4wpBwnbz~RVFolKzKxQ#@a`MvP~R- zQ9u3pky9uC(BB%+9hQ+O!Nv)dhNCte|GM8!5hEaii21)q=ZeB_JIF>EQ50b<80!H3 zxbn&32ethN&j17kY=jOv8+WhY`3WM3F^CuzE?)u{A&)!QE1}?Xd|t4%Hn^Up*_n9e z1lD+F;x>zK{pO=%=P&U747kdyFv{0VTXy253<7EVoAF2i8V!o2YWpRi=;Ia*M{?ab})A$<&dfD2~DE z3gG8Vl)NT3`l0%fBlxQrlRe%oQs4LbSX>of_-DTQjdSn%%JkH=cWzQ-9#^Vhk_N8a zpnl*0E_U2szC#$L5OP8o5{i_N57E(3i{9E+bHgcwJ!oq`HBnZ_keK*x=cbqQG?(}-l~^PeI1Rb<>t4_~sNgka`>`isAj z4+FKCgSb)!;xcMV1a+twLIFMxguKJB*-ash|!8#^mT*-%lw3jpLd-7q1@k2xlqCxvuy7EyOBt--# zE=Ex#m=np&leVBlsb-lv*d*7WzHsE3qsXh={p1#D-%*}@hR%&Y zJ&Td6Ah@)@4k#M@*(O51b(@W)z~*|vpgSVZ!Z<=R>5U2C(R>qT}QI zjd?*tt|EdP^;RcW3b%U83ncrWroEA~^qEqvm(Y+S8pbn19-F)>D1wb*+V^t$J;fze zI=B8#)?fV`F$jVfcmCm(f*&4_%B>3l^Ww}GzxDFm^XDqf*%me~V~iO))p1k`gu>HV z@3M65O1QW1`@iJ9wLgbq@OG3m|NGz1ALN7ktKGYw-|DU{|A%nzIDgA{q6C}}*@{2#WnXd|-`4l4iv002ov JPDHLkV1jThn+X5_ diff --git a/plugins/i2pmessenger_plugin/gui/icons/usergreen24.png b/plugins/i2pmessenger_plugin/gui/icons/usergreen24.png deleted file mode 100644 index 8f5071bb5cc89b09eba032dbc86a812290b944b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1252 zcmV*6bzWi6Y5sP?H5SYQC#;0ElEE@f9_TPN*?29~i z<~gi3>TykdP!sk8y|46MBhofAW_{jw{p=Feb}pGu7GC-A6{_uu;qQio-2eiUOB2M4 zPfjIIAzYZ1ftPf~O9ULN2Y)=E{C7z#B5@iKFKAoQR0+F*Y&m-jxG*b7AE$9<2Ee4+ zsR;W4Q9%;HpY)`kNl6wGT-Tv3EwI@D-m2TY8Xv?uBB_9Z%N^-*O7_`|^mK~9!{f#O zDKa}qe>--J%hD3lLM2uazu-wvrKC$Kz4;y|{0T7D?KU8@6>d(UUf*#`?uoD;a2B#ySecz|+x3`4G8;FvGG_}L}_2&3>)_mS?e!d`#~nkl*FbXMj8J2{Rc+R_`MniigM|Pmykq` zXK=gdV->N|C`QG5^`u^Ft+oJg;#mLr`ui)-uCVd)1{i3rXs+B`k^iRw*&rhfLr+xD zOwml){LLoi)lx41^fH=iQ#!9ii-;a4aGi&a&mya=`ALDAr(N6qxchMTTlwd6G*jwP zjqiK1=CN(9C{-(Y?82k3??3?>+PUnRi^ro!EVA7b~r4%{hnfdD20Orb_XT zg1V@&V9f}bL}C%K!mRwHd{ji5NhCp01R)X$ z7N}#Bft5zQBT|oQF!0;{3*!&QjTQo4Ta64>n|B>|y0~00_vJYrpL-mD$|}b7n3@`g z1E8j+iWQ?cqR0!1x}fS+STw?3xNH2^agH!S4##x_l)JOLGAAmuw8c`o#6f+)xE^C_ zG)wEKL(CaH>k%vfaPitjtTys{bN1fayAR>d2>5clY_?ZzkBSP@tttE6eRk(|8HOR1 zRo4-3BDh{#LC7^{x;16|{+PKh&4KX<@sQwZLqKG6v_2xgJ16V~w##iY&5i)g_}{U7 zNS12KUf3g!Bd+VX_VzW(?ed=@jhCeN)m}qj5Q})$&-?ShV++qLJUKWwXfJ2Ww6%>B zcVk}*f?)&;?36ofT-=B|zu5V0^>OvDnV43{C(1K9e01a zl&)oiY>=&F1J`wP;zVN=$6+^Y7n{Xqai#cM*bDCgyUFRKar%j)3G`o-+$(6hsaOgC O0000a4qy+1Z)-z8;cUqIF|G_%8F!JkR$&@AJOz zkaOqGq1zHdK+`ld8jVAJeSM!PiZZsbv611N|0aaEs_XhpytHa^%QM52Tck zQi2fj?!}82f4_9;(h#LIx3aQgP)ZMvjEsEz`0?Y#AP7nTx{}ZY=w&;OV~mZB{dDHc z82~^W$JpH5M6=mMqtU?V=;)6^2yHhEZWu<_@ZvZ=Wm#5XdU_hwY85jxGjLrO08lQM z!5HI(Lg52K$j{v{cq*0ZDiNi0aCUYUPo6wMtJOlg-3DU}nM?-hbQ-SfqQAd?6hL=^ zAPBlf0Kl)+YIyeS85m>WoWnFt6pKad*|P__u0vJTmXxw90FR=m>!Fl#K?s3#It?i$ zGMNl)+eUwXKl=Lmkk9AAIsZcl(Vbv7b}8kuq9_so3BwSUWuZ_gpja%zwr%wE^gv2E zw`&AlPqtQzbAC6M%e~!bG@xl3Ow)vASujl#hGDn>R+E<#tM0Tc=X`gLX0!R#v17-6 zaa|XQT&k)<*LCFc`R{fX8e{A~^}xe0eC~no`%n}Glu~RvZ1Uc{dnLzlj&92a&N)2K z+qi%K{uc=_r4*MhUk2wKl+ynvQ5c43x7+YMZ{GL)qx<&l>)iC(wQGN!KYt!qu3YID zKvh+|sK~2w0LO7quh)AhrBDy>*V_N>m7%2&Xd}CH9_KvIF3IOLVPkj zJp7(v7>J?>)oK;CZNoIpcjo8kZxcek2k=9;Ui2J+5CUNsGD_*EsZ{E7RaJX6O#=Yz z-MbgIZG$m})zwwZ&CS8GtW%n%oocmO-+G?+wUqK3DP?mf85tiR?|?^9^u~n?7w+o1 zZr;3k6JZ!a*L4_%fowJl$8nHOr?I@ej8?0KD2fmS0es&_5CjN_ia9 zaUuuy@85s*?AfzsyWPgp(h`Iaoy0N5;JPjdAuvr7rfC8I+U+))%_e-`M=F&fQ51d2 z82b>|s)rYI@YanRHxPy)9LIsCX;2gesZ1(ogIcD^7%YG&x4c_l}hE! z#l=N1#$?8h!-o$sG&F=0Cr$tWqA0@V<|c#?9fxe^3ZCb6B+6#95JJFp z-Pacv7c&5SLdaIT-nQ3)fq?-=DTS)4NajQWo^^z`&0 zLdYy31iV_UCev$#Qi`>;H5i70P1+8P!X7BDn41OUTQ%2_ET z`1<;KGTzFiQVD~DgK%9Jl}ZJQqI7f@LSSdtOb8W4f$O^PeIJHl;Le>ps8lK|gb+|l z!6~K5hqtGurVdz^H4b33(P+GX`t)hdwryyd)=Ap-k3c8cwOS3gZru`-lao`mTJ2Zg z_a}0>+)}5ro;-Q7bE_Z-P$(2YDMh(l)-_E#Tr3ukI*v2oIL?4!7+J;`4a0Er>C>m{ x4<0-yKYH}&Z`XC_0sPb3+Y8V0Iu-_ie*rjpb`Hq6kf8to002ovPDHLkV1gCaUswPD diff --git a/plugins/i2pmessenger_plugin/gui/icons/useroffline24.png b/plugins/i2pmessenger_plugin/gui/icons/useroffline24.png deleted file mode 100644 index 3dc3ef1555f412ebd0613ec54681997127bd5042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1205 zcmV;m1WNmfP)g-Xk^;CUWA&x7l_a2yAe(#3;fcs;?eLjY?+ z2m^p9rBJKYP_Ng~Xf)7hG+^5{j4{hY6%0EB5HrT^JB~Bc>-8X|gl*fX)oO4Y2U5yC zLdahSewCLFe-AXdWQgN0+wJyuVHmzDJI*15fRqxoTJ7ti(GEwSf}fpcD} zD##Bn)@rr-Hk4AJl!6cfW6U+nvc8&_nE0^SY(fZuBuQY~HayRp2!h~p{wl}Ij4^1f z|KmX)fiVVImN81{C!F&;mSx>=9B0zDZH$kPqt$9*Y-|jaQgk{U7-L#Oh--|oPxCzI zTI(f3NZMCX7cX8c!Ie^P&d$!>mr}YbD=WzJ98yYDDiu_#RrtOS&N-exe~v86pp+^{ z$U&HHw|kxt@@wfqG4-_8Xf~TSuV26JE-x=*YikR}7ziQ27z3rW9CWsA_Z31M$4Ju@ zj4`6M{(=zlQK8~!C%=8`)-5Qd;QM|tYx+vBc#KjCT5IHa4##njBngZ$2!i0PXV0FM zJ;8+#006Bumr^!&c6QKiw=p?6S(;v4K1`D5Ig%vlOOY`KQ53Z|H#e)4(jEZtqRa>( zr$$Fd86gBh2)M3WN-tC%HqRJ?YPAZjH2`3JeH~hBjE|3FWo6|IfF(i*`2PNWq2N3r z1f5O?l}ZI+7$S-y9Gv%V`BqjV`B)z z5J3=tbKVE|y2;BqM-)X!(-cxlJbCg2K@e<|9#Be)6#e}0;lopo<9rO@LLA3))6>(o z=XvD_I7*{v@mS*MgzrBoD#;r5FcFP`q~?5u`i_yEA)BO@b7k_6RiwZ!}f-w#&` TZPksC00000NkvXXu0mjfTW2Xo diff --git a/plugins/i2pmessenger_plugin/gui/icons/userred24.png b/plugins/i2pmessenger_plugin/gui/icons/userred24.png deleted file mode 100644 index 99cba375f51ae99237bdcaa4f597cfb40fcb7a35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1005 zcmVJe3j?aBwAKrG<_B&0##o5lFOeRJoxT=4EEEPSRK=t!d<+^w;|au`ItwIbk7Rvb$0f%Dm-+^O`OCy0$f5X z={4*N7zvs%((O$igh;Xe7mT8eN(_}lMd1(m=GJEfzD3ydHVW} znVejJr&6>m-CDsX%YZY;S}-+4kxLsHhAkK>6zJ;u$LQ#)d2lM_{c2U4rMq{<6jhUP zkBc)5Z=QcE?d#Fe%O7U54wcKIdR=F|u2Wpbi?7FdU?V2Ur;_w!FmmUP8w5wnWgSVB zZQ^Q3Eqg!p;FY(&e1b$Dv7lv3j#=ZyC11_|p?*Gkg$^S4GNY(f# z#dw~PF7^c2gy%~o+Xe@1NmAF(&H=tDG8OVgL~eP(&YPUTH+|0OJl)3=NFF`t6>qQ( z{DxW7#4Tjjd@G4=v#o`5^C{Yqz-xGx?_NG}Vz{+ZQMr0mQQQ)qKxYD)7M~G4$$ZZu zZ`KmrV_g^D=aO~Hck6D$85m${Du##Q(pCUbL~k#(TI}JOGwOH_C)gZtK0tab39Zhy6t1Crc2;S8 zoXJV5)ubFAAuu=J+36b2Vpq(2A)FJqVgCHReoEXACQuq1Ba?{%Q4~k9xNFXdWim`m zm=T{3KgK?cwZvHw?6+_Rml^8gZEXL5SN9YOSwlnQa-`F-z+C5yqBuRbZn<#nT6m0~ zZ}HO%CyV?!7i+M8Q3+MBCaHjnbmrMI!0<*&PgClqD@{w4@;G-cbNvc`OmGo*pGvB! bu!#8|C4N6y$;$=)00000NkvXXu0mjfh4a(f diff --git a/plugins/i2pmessenger_plugin/gui/icons/window_fullscreen.png b/plugins/i2pmessenger_plugin/gui/icons/window_fullscreen.png deleted file mode 100644 index 18a00007a691ca6533c4d2a277dd3c2b855b3f3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 623 zcmV-#0+9WQP)Qh3-_My z`JBT!0!RT%{F}8zsZ=_(ZF^m7jSyn$FRk_DE`-4Eb}`~{%H{G~Q)^_qeaX#Dmt^uT zLP(^PlR&LCzCWPTxg?QD(rLHRuL~qzx`2>ozu(9A1ESFwO7&;5#$pQ$20jaS65zff z0F?4Dl~RO47LiEguZs6Pk6uq<20?)SSmVRd5%<^Dc(A!ibZL4|d#x6qPfqxHcE-c) zZG3-#1V}j!%}Rw@p@4Au}Dx@3-t@Th~E}bTu&y#W-&U3k$0_V9LDaRq3 z&oh@!Bc(LW@#CuN;(H$LdVQwA{e66;NM_z-rb6H(ovAnfKa%BZ87Mm*2zrH3Ej{^{0T;w~VC5pv2r?zdcj|XWy_rp^Izwd_- z0wDxSDXP`#d%^#1<2a)b!UDo0w?=M`5CXslegb_!0ZMB<_yq;@x!5lJ)w2Kq002ov JPDHLkV1oQd5vl+H diff --git a/plugins/i2pmessenger_plugin/gui/icons/window_nofullscreen.png b/plugins/i2pmessenger_plugin/gui/icons/window_nofullscreen.png deleted file mode 100644 index bfd4fa597e44f06d6d09802a500628373412aeb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmV;20(kw2P)OmLP(^P!9`;Xp6AkNtddNoXw>VN>FXq~6agWX<2ZPpPb?NkYv-?C*ESY0xibdW<) zNis3W{QdJd%`ap!X>z$Np64R_RSO4>GIQe$H_siy_uPP2Up`^#bb+p;*|uX>sJJ14 zkU!gA%T^p8ouW; zIGkep*m%IlcJCt+8)EtMN8GONbD+WwsxKaM{Olbjr=KIO-{mRnKf=YkRqTNXUq8JM zxNX}?%+5ZV%jfeGy+-Qw{jb#k;rS3kAcR0`O{G$KBlzEG?7b+2uz|>W+Uu#-E%<;3 hbO8s@fHuasKLKxpy~^JCfM5Us002ovPDHLkV1idd9sB?Q diff --git a/plugins/i2pmessenger_plugin/gui/icons/xa.png b/plugins/i2pmessenger_plugin/gui/icons/xa.png deleted file mode 100644 index e859acb94abede5c73dd1ac3e2dac75518980648..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 953 zcmV;q14jIbP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00006 zVoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_00SLKL_t(|+KrP>OdMqZ z#ed(-&g{cwEenN0SBOiX6~vm**kGF)8=A%#4F}`Jc=FPicrac(8NGNj(Rk2= zHZi@}#$F6!V``z1Qes<_w)`m|D}NSdWp;;|Z)Vm5jR&HM@A&fG;U({<@-GsgJ>L+0 z|Fc(~{XQ(W8)vrMNxy;v1pFVh8e;I5PlnBk^F`(Ur-ROk6z>6bfVw}c>^C%szu1|1 ztLLTe1grNrd@QZMdaVBSxJoAw-k(p$?sVs%f|@o5{5`*Je68Gj+{f3G`qAtTG4(&)Q*m zI?uyL#p2S2lb=~}=f?BF)rn0;#Fe*?=g)n7A-!d9Gv(G$at&%qC06qmvHT4E`d!l1 z>!3;S%dooxw#BV$QXcavL_hd%u(J} zxire7561cOL6M(W`UAS-V_9WpXJ=VlTto-~fRqwx+az_BQk8~L9j3;x!U~uHYyfu1TUva) z<_cmBF><*a*=!ci^Y+S8qG(}k=>Y-JRD_Otr764+=(dLs1WNh#jT@trkJkz=2q6f9 z0M~W@nXzuGEG)0kt}mguf^?jut`OflEkX^-R%y$O)KsOrpUY+SBb=|k;XTaY1 bFLM6|@>*Ys{UQFt00000NkvXXu0mjfEG@bN diff --git a/plugins/i2pmessenger_plugin/gui/icons/yellow.png b/plugins/i2pmessenger_plugin/gui/icons/yellow.png deleted file mode 100644 index a0634036e24cf816820eeb10cb2db514b9272914..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmV;u0z&1v7nJXtpXY!U>WGJQsp=gF?gb)lu1VvaxyJ%J5B7~w<3m4KN3WAEL$ZAng zxe7rEp%6i`&>A%_Wjce7Hs*Nd;+*rhI0Km&^lm=*dEfW{{_lH#*aF9oV7uPV)z}b; zH}|+5I7mLAZpGaa9c?s=>H4Txz9YoMu4G3W?M^#BK-tWdHy>O$gLbHnb7(CdQX}B3 zu?L!H^_NirI5zWDfNK}Ysj0-{cHs_AQP3NV;s{Ouwfu^O_hH8}366WU@ zSna&eB4A24E_3woeoj~Jp~~jWFT&yX;qY5xQwNa%BZ{F95u9RWd45u-IqG) zlEfD!#Ez#0q{CoF!H8tUF)$M#GA1Hr8JaOLV+@U~uh*WWN?lwwhI2hV0VEZSUw_CV zovD8d5jx3~AQEK;C{%K?7%R{|H28em^FYcN#KDYPw{H+4k|a|G1H;VSe9XhK877t9 z0V0aRXODfdvLtu02(bp{PwP46s%0kD0Wi`!ZwL8$>j{ru_wf#xRRD9~BjK`LtnA$# zKjC(%R{IE$WRMhV{gRDjBF5e4ym;`E9$*>>tAMz2o>WCCvd`-PS+f=_*)uUQGqW&p zxg6wqlMc6&sGeXEh|2)Y2T;8ps*t^wP}Z!7n7UPE4P+(rgb@Gwl>dd_;%F1|U0QI;00000NkvXXu0mjfMi4+3 diff --git a/plugins/i2pmessenger_plugin/gui/resourcen.qrc b/plugins/i2pmessenger_plugin/gui/resourcen.qrc deleted file mode 100644 index 915020361..000000000 --- a/plugins/i2pmessenger_plugin/gui/resourcen.qrc +++ /dev/null @@ -1,29 +0,0 @@ - - - icons/Tools.gif - icons/green.png - icons/red.png - icons/send.png - icons/exit.png - icons/add_user.png - icons/settings.png - icons/status_unknown.png - icons/quick_restart.png - icons/editcopy.png - icons/window_fullscreen.png - icons/window_nofullscreen.png - icons/userblue24.png - icons/self.png - icons/socket24.png - icons/looknfeel24.png - icons/encrypted24.png - icons/yellow.png - icons/invisible.png - icons/chatty.png - icons/dnd.png - icons/xa.png - icons/about.png - icons/sound.png - icons/sound_off.png - - diff --git a/plugins/i2pmessenger_plugin/qt_chat.pro b/plugins/i2pmessenger_plugin/qt_chat.pro deleted file mode 100644 index 226d44f74..000000000 --- a/plugins/i2pmessenger_plugin/qt_chat.pro +++ /dev/null @@ -1,99 +0,0 @@ -#=== this part is common (similar) for all plugin projects ===================== -TEMPLATE = lib -CONFIG += plugin release - -# this is directory, where PluginInterface.h is located -INCLUDEPATH += ../ - -# and, the result (*.so or *.dll) should appear in this directory -DESTDIR = ../bin -OBJECTS_DIR = temp/obj -RCC_DIR = temp/qrc -UI_DIR = temp/ui -MOC_DIR = temp/moc - - -# the name of the result file; -TARGET = $$qtLibraryTarget(i2pmessenger_plugin) - -HEADERS += ../PluginInterface.h \ - I2PMessengerPlugin.h -SOURCES += I2PMessengerPlugin.cpp - -#=============================================================================== - - -#CONFIG += qt release - -QT += network xml -#TEMPLATE = app - -DEPENDPATH += . \ - gui \ - src - -INCLUDEPATH += . \ - -SOURCES += src/Main.cpp \ - gui/form_Main.cpp \ - src/Core.cpp \ - gui/form_newUser.cpp \ - gui/form_DebugMessages.cpp \ - src/User.cpp \ - src/ConnectionI2P.cpp \ - src/I2PSamMessageAnalyser.cpp \ - src/DebugMessageManager.cpp \ - src/UserConnectThread.cpp \ - src/Protocol.cpp \ - gui/form_chatwidget.cpp \ - gui/form_rename.cpp \ - src/PacketManager.cpp \ - gui/form_settingsgui.cpp \ - gui/form_HelpDialog.cpp \ - src/FileTransferSend.cpp \ - src/FileTransferRecive.cpp \ - gui/form_fileSend.cpp \ - gui/form_fileRecive.cpp \ - src/SoundManager.cpp - -HEADERS += gui/form_Main.h \ - src/Core.h \ - gui/form_newUser.h \ - gui/form_DebugMessages.h \ - src/User.h \ - src/ConnectionI2P.h \ - src/I2PSamMessageAnalyser.h \ - src/DebugMessageManager.h \ - src/UserConnectThread.h \ - src/Protocol.h \ - gui/form_chatwidget.h \ - gui/form_rename.h \ - src/PacketManager.h \ - gui/form_settingsgui.h \ - gui/form_HelpDialog.h \ - src/FileTransferSend.h \ - src/FileTransferRecive.h \ - gui/form_fileSend.h \ - gui/form_fileRecive.h \ - src/SoundManager.h \ - gui/gui_icons.h - - - - -FORMS += gui/form_Main.ui \ - gui/form_DebugMessages.ui \ - gui/form_newUser.ui \ - gui/form_chatwidget.ui \ - gui/form_rename.ui \ - gui/form_settingsgui.ui \ - gui/form_HelpDialog.ui \ - gui/form_fileSend.ui \ - gui/form_fileRecive.ui - -RESOURCES += gui/resourcen.qrc - - - - - diff --git a/plugins/i2pmessenger_plugin/sounds/File.wav b/plugins/i2pmessenger_plugin/sounds/File.wav deleted file mode 100644 index 1cbc55f73f581594ecc17e951c9a5516099ae12e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23430 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 WMNTBX?bN;EfWK1Y6CWbg3T7QFb!s- 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 diff --git a/plugins/i2pmessenger_plugin/sounds/Startup.wav b/plugins/i2pmessenger_plugin/sounds/Startup.wav deleted file mode 100644 index f9f45e1b4fb34d8a79184aabe6b32a0df5732a79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19478 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 fbL2Nt`a%EXQxGv(`GmoveToThread(this->thread()); - - Analyser= new I2PSamMessageAnalyser(); - this->HandShakeWasSuccesfullDone=false; - this->SessionWasSuccesfullCreated=false; - this->nextFreeID=1; - - connect(tcpSocket,SIGNAL(connected() ),this,SLOT(connected() ),Qt::DirectConnection ); - connect(tcpSocket,SIGNAL(readyRead() ),this, SLOT(readFromSocket()),Qt::DirectConnection); - -} - -cConnectionI2P::~cConnectionI2P() -{ - doDisconnect(); - delete tcpSocket; - delete Analyser; -} -void cConnectionI2P::doConnect() -{ - - if(tcpSocket->state()==QAbstractSocket::UnconnectedState) - { - tcpSocket->connectToHost(SamHost,SamPort.toInt( )); - } - if(!tcpSocket->waitForConnected(1000)) - doDisconnect(); - -} - -void cConnectionI2P::doDisconnect() -{ - - if(tcpSocket->state()!=0) - { - tcpSocket->disconnectFromHost(); - emit debugMessages("<-- I2P Socket Disconnected -->\n"); - } - else if(tcpSocket->state()==QAbstractSocket::UnconnectedState) - emit debugMessages("<-- I2P Socket Disconnected -->\n"); - - this->nextFreeID=1; -} - -void cConnectionI2P::connected() -{ - - emit debugMessages("<-- I2P Socket Connected -->\n"); - //emit debugMessages("<-- SAM Connection Handshake send -->\n"); - emit debugMessages(SAM_HANDSHAKE); - - if(tcpSocket->state()==QAbstractSocket::ConnectedState) - { - tcpSocket->write(SAM_HANDSHAKE); - tcpSocket->flush(); - } -} - -void cConnectionI2P::readFromSocket() -{ - - - - using namespace SAM_Message_Types; - - QByteArray newData =tcpSocket->readAll(); - - QByteArray CurrentPacket; - IncomingPackets->append(newData); - - - while(IncomingPackets->contains("\n")==true){ - - CurrentPacket=IncomingPackets->left(IncomingPackets->indexOf("\n",0)+1); - //else return;//Not the complead Packet recived ??? maybe possible ??? - - QString t(CurrentPacket.data()); - - SAM_MESSAGE sam=Analyser->Analyse(t); - switch(sam.type) - { //emit the signals - case HELLO_REPLAY:{ - emit debugMessages(t); - emit HelloReplayRecived(sam.result); - if(sam.result==OK){ - this->HandShakeWasSuccesfullDone=true; - doSessionCreate(); - } - break; - } - case SESSION_STATUS:{ - emit debugMessages(t); - if(sam.result==OK)this->SessionWasSuccesfullCreated=true; - - emit SessionStatusRecived(sam.result,sam.Destination,sam.Message); - break; - } - case STREAM_STATUS:{ - emit debugMessages(t); - if(sam.result==OK) - this->doSendStreamSessionLimit(sam.ID,0); - - emit StreamStatusRecived(sam.result,sam.ID,sam.Message); - break; - } - case STREAM_CONNECTED:{ - emit debugMessages(t); - - this->doSendStreamSessionLimit(sam.ID,0); - - emit StreamConnectedRecived(sam.Destination,sam.ID); - break; - } - case STREAM_CLOSED:{ - emit debugMessages(t); - emit StreamClosedRecived(sam.result,sam.ID,sam.Message); - break; - } - case STREAM_SEND:{ - emit debugMessages(t); - emit StreamSendRecived(sam.ID,sam.result,sam.state); - break; - } - - case STREAM_READY_TO_SEND:{ - emit debugMessages(t); - emit StreamReadyToSendRecived(sam.ID); - break; - } - case NAMING_REPLY:{ - emit debugMessages(t); - emit NamingReplyRecived(sam.result,sam.Name,sam.Value,sam.Message); - break; - } - case STREAM_RECEIVED:{ - - if( sam.Size.toLong() > (IncomingPackets->length() - CurrentPacket.length()) ) - return;//Not the complead Packet recived ??? maybe possible ??? - - QByteArray Data=IncomingPackets->mid(CurrentPacket.length(),sam.Size.toLong()); - emit debugMessages(t+Data); - emit StreamDataRecived(sam.ID,sam.Size,Data); - IncomingPackets->remove(CurrentPacket.length(),sam.Size.toLong()); - break; - } - - - case ERROR_IN_ANALYSE:{ - emit debugMessages("\n"+t); - break; - } - default: - { - emit debugMessages("\n"+t); - break; - } - } - IncomingPackets->remove(0,IncomingPackets->indexOf("\n",0)+1); - }//while -} - -void cConnectionI2P::doSessionCreate(){ -using namespace SESSION_Types; -ConnectionReadyCheck(); - -QByteArray Message="SESSION CREATE STYLE="; - - switch(this->SessionStyle) - { - case STREAM: - { - Message+="STREAM"; - break; - } - case DATAGRAMM: - { - Message+="DATAGRAMM"; - break; - } - case RAW: - { - Message+="RAW"; - break; - } - } - - Message+=" DESTINATION="+this->SessionDestination+" DIRECTION="; - - switch(this->SessionDirection) - { - case BOTH: - { - Message+="BOTH"; - break; - } - case RECEIVE: - { - Message+="RECEIVE"; - break; - } - case CREATE: - { - Message+="CREATE"; - break; - } - } - if(this->SessionOptions.isEmpty()==false) - Message+=" "+SessionOptions; - - Message+="\n"; - - //emit debugMessages("<-Send Create Session Message->\n"); - emit debugMessages(Message); - - tcpSocket->write(Message); - tcpSocket->flush(); - -} - -qint32 cConnectionI2P::get_NextFreeId() -{ - return nextFreeID++; -} - -qint32 cConnectionI2P::doStreamConnect(QString Destination) -{ - - ConnectionReadyCheck(); - qint32 ID=get_NextFreeId(); - - QByteArray Message="STREAM CONNECT ID="; - Message+=QString::number(ID,10); - Message+=" DESTINATION="+Destination+"\n"; - - emit debugMessages(Message); - tcpSocket->write(Message); - tcpSocket->flush(); - return ID; -} - -void cConnectionI2P::doStreamClose(qint32 ID) -{ - ConnectionReadyCheck(); - QByteArray Message="STREAM CLOSE ID="; - Message+=QString::number(ID,10)+"\n"; - - emit debugMessages(Message); - tcpSocket->write(Message); - tcpSocket->flush(); -} - -void cConnectionI2P::doSendStreamSessionLimit(qint32 ID,quint64 value) -{ - ConnectionReadyCheck(); - QByteArray Message="STREAM RECEIVE ID="; - Message+=QString::number(ID,10)+" LIMIT="; - if(value==0) - Message+="NONE\n"; - else - { - QString Svalue; - Svalue.setNum(value,10); - Message+=Svalue+"\n"; - } - emit debugMessages(Message); - tcpSocket->write(Message); - tcpSocket->flush(); -} -void cConnectionI2P::doStreamSend(qint32 ID,QString Data) -{ - QByteArray t=""; - t.insert(0,Data); - doStreamSend(ID,t); -} -void cConnectionI2P::doStreamSend(qint32 ID,QByteArray Data) -{ - ConnectionReadyCheck(); - - QString Size; - Size.setNum(Data.length()); - - QByteArray Message="STREAM SEND ID="; - Message+=QString::number(ID,10)+" SIZE="+Size+"\n"; - Message.append(Data+="\n"); - - emit debugMessages(Message); - tcpSocket->write(Message); - tcpSocket->flush(); - -} -void cConnectionI2P::doNamingLookUP(QString Name) -{ - - ConnectionReadyCheck(); - - QByteArray Message="NAMING LOOKUP NAME="; - Message+=Name+"\n"; - emit debugMessages(Message); - tcpSocket->write(Message); - tcpSocket->flush(); - -} diff --git a/plugins/i2pmessenger_plugin/src/ConnectionI2P.h b/plugins/i2pmessenger_plugin/src/ConnectionI2P.h deleted file mode 100644 index 49c32cedf..000000000 --- a/plugins/i2pmessenger_plugin/src/ConnectionI2P.h +++ /dev/null @@ -1,123 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef CONENCTIONI2P_H -#define CONENCTIONI2P_H - -#include -#include -#include -#include - -#include "I2PSamMessageAnalyser.h" - -#define SAM_HANDSHAKE "HELLO VERSION MIN=2.0 MAX=2.0\n" - -namespace SESSION_Types -{ - enum SESSION_STYLE - { - STREAM, - DATAGRAMM, - RAW - }; - enum SESSION_DIRECTION - { - BOTH, - RECEIVE, - CREATE - }; -}; -//class cConnectionI2P -// -//Handshake with SAM an Session Creation are done atomatically -//all STREAMs will be init with no limit | limit is possible with the function doSendStreamSessionLimit -// -class cConnectionI2P :public QObject -{ - Q_OBJECT - - public: - cConnectionI2P( QString SamHost, - QString SamPort, - SESSION_Types::SESSION_STYLE SessionStyle, - QString SessionDestination, - SESSION_Types::SESSION_DIRECTION SessionDirection, - QString SessionOptions="", - QObject *parent = 0 - ); - - - ~cConnectionI2P(); - - public slots: - void doConnect(); - void doDisconnect(); - qint32 doStreamConnect(QString Destination);//base64key || return the new id for the stream - void doStreamSend(qint32 ID,QByteArray Data); - void doStreamSend(qint32 ID,QString Data); - void doStreamClose(qint32 ID); - void doSendStreamSessionLimit(qint32 ID,quint64 value=0); - void doNamingLookUP(QString Name); - - private slots: - void connected(); - void readFromSocket(); - - - signals: - void debugMessages(const QString Message); - void HelloReplayRecived(const SAM_Message_Types::RESULT result); - void SessionStatusRecived(const SAM_Message_Types::RESULT result,const QString Destination,const QString Message); - void StreamStatusRecived(const SAM_Message_Types::RESULT result,const qint32 ID,QString Message); - void StreamConnectedRecived(const QString Destinaton,const qint32 ID); - void StreamSendRecived(const qint32 ID,const SAM_Message_Types::RESULT result,SAM_Message_Types::STATE state); - void StreamClosedRecived(const SAM_Message_Types::RESULT result,qint32 ID,QString Message); - void StreamReadyToSendRecived(const qint32 ID); - void StreamDataRecived(const qint32 ID,const QString Size,const QByteArray Data); - void NamingReplyRecived(const SAM_Message_Types::RESULT result,QString Name,QString Value="",QString Message=""); - - private: - const QString SamHost; - const QString SamPort; - qint32 nextFreeID; - QByteArray* IncomingPackets; - QTcpSocket* tcpSocket; - I2PSamMessageAnalyser* Analyser; - - - bool HandShakeWasSuccesfullDone; - bool SessionWasSuccesfullCreated; - const SESSION_Types::SESSION_STYLE SessionStyle; - const QString SessionDestination; - const SESSION_Types::SESSION_DIRECTION SessionDirection; - const QString SessionOptions; - void doSessionCreate(); - qint32 get_NextFreeId(); - - inline void ConnectionReadyCheck() - { - if( HandShakeWasSuccesfullDone==false || - SessionWasSuccesfullCreated==false|| - tcpSocket->state()!=QAbstractSocket::ConnectedState) - return; - } - -}; -#endif diff --git a/plugins/i2pmessenger_plugin/src/Core.cpp b/plugins/i2pmessenger_plugin/src/Core.cpp deleted file mode 100644 index 640a722f2..000000000 --- a/plugins/i2pmessenger_plugin/src/Core.cpp +++ /dev/null @@ -1,962 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include "Core.h" - -cCore::cCore(){ - init(); -} - -cCore::~cCore(){ - this->UserConnectThread->stop(); - this->saveUserList(); - this->closeAllActiveConnections(); - for(int i=0;iusers.count();i++) - delete users.at(i); - - QList::Iterator it; - for(it=DataPacketsManagers.begin(); itDebugMessageHandler; - delete this->Protocol; - delete this->I2P; - delete this->SoundManager; -} - -cDebugMessageManager* cCore::get_DebugMessageHandler(){ - return this->DebugMessageHandler; -} - -bool cCore::addNewUser(QString Name,QString I2PDestination,qint32 I2PStream_ID){ - //TODO I2PDestination verify check - //check if user already exist - - if(I2PDestination.length()!=516){ - //Destination must be 516 length - return false; - } - - - if(!I2PDestination.right(4).contains("AAAA",Qt::CaseInsensitive)){ - //the last 4 char must be "AAAA" - return false; - } - - - if(I2PDestination.length()>0) - if(this->doesUserAllReadyExitsByI2PDestination(I2PDestination)==true) - return false; - - - //add newuser - cUser* newuser=new cUser(Protocol,Name,I2PDestination,I2PStream_ID); - connect(newuser,SIGNAL(newIncomingMessageRecived()),SoundManager, - SLOT(event_NewChatMessage())); - - connect(newuser,SIGNAL(connectionOnline()),SoundManager, - SLOT(event_User_go_Online())); - - connect(newuser,SIGNAL(connectionOffline()),SoundManager, - SLOT(event_User_go_Offline())); - - this->users.append(newuser); - saveUserList(); - - emit eventUserChanged(); - return true; -} - -bool cCore::deleteUserByI2PDestination(QString I2PDestination){ - for(int i=0;iget_I2PDestination()==I2PDestination){ - if(users.at(i)->get_ConnectionStatus()==ONLINE ||users.at(i)->get_ConnectionStatus()==TRYTOCONNECT) - { - this->StreamClose(users.at(i)->get_I2PStreamID()); - deletePacketManagerByID(users.at(i)->get_I2PStreamID()); - } - - users.removeAt(i); - saveUserList(); - emit eventUserChanged(); - return true; - } - } - return false; -} - - -bool cCore::doesUserAllReadyExitsByI2PDestination(const QString I2PDestination){ - if(I2PDestination==MyDestination) return true; - - for(int i=0;iget_I2PDestination()==I2PDestination){ - - return true; - } - } - - return false; -} -void cCore::doNamingLookUP(QString Name){ - I2P->doNamingLookUP(Name); -} - -void cCore::init(){ - using namespace SESSION_Types; - this->MyDestination=""; - this->currentOnlineStatus=User::USERTRYTOCONNECT; - - QSettings* settings= new QSettings(QApplication::applicationDirPath()+"/application.ini",QSettings::IniFormat); - settings->beginGroup("Network"); - - this->I2P= new cConnectionI2P( settings->value("SamHost","127.0.0.1").toString(), - settings->value("SamPort","7656").toString(), - STREAM, - settings->value("Destination","test").toString(), - BOTH, - settings->value("SessionOptionString","").toString() - ,this); - - this->I2P=I2P; - - //signals from I2PConnection Core - connect (I2P,SIGNAL(StreamClosedRecived(const SAM_Message_Types::RESULT, qint32, QString)),this, - SLOT(StreamClosedRecived(const SAM_Message_Types::RESULT, qint32, QString)),Qt::DirectConnection); - - connect (I2P,SIGNAL(StreamStatusRecived(const SAM_Message_Types::RESULT, const qint32, const QString)),this, - SLOT(StreamStatusRecived(const SAM_Message_Types::RESULT, const qint32, QString)),Qt::DirectConnection); - - connect (I2P,SIGNAL(SessionStatusRecived(const SAM_Message_Types::RESULT, const QString, const QString)),this, - SLOT(SessionStatusRecived(const SAM_Message_Types::RESULT, const QString, QString)),Qt::DirectConnection); - - connect (I2P,SIGNAL(StreamConnectedRecived(const QString, const qint32)),this, - SLOT(StreamConnectedRecived(const QString, const qint32)),Qt::DirectConnection); - - connect (I2P,SIGNAL(StreamReadyToSendRecived(const qint32)),this, - SLOT(StreamReadyToSendRecived(const qint32)),Qt::DirectConnection); - - connect (I2P,SIGNAL(StreamSendRecived(const qint32, const SAM_Message_Types::RESULT, SAM_Message_Types::STATE)),this, - SLOT(StreamSendRecived(const qint32, const SAM_Message_Types::RESULT, SAM_Message_Types::STATE)),Qt::DirectConnection); - - connect (I2P,SIGNAL(StreamDataRecived(const qint32, const QString, const QByteArray)),this, - SLOT(StreamDataRecived(const qint32, const QString, const QByteArray)),Qt::DirectConnection); - - connect (I2P,SIGNAL(NamingReplyRecived(const SAM_Message_Types::RESULT, QString, QString, QString)),this, - SLOT(NamingReplyRecived(const SAM_Message_Types::RESULT, QString, QString, QString)),Qt::DirectConnection); - - this->SoundManager=new cSoundManager(); - this->DebugMessageHandler= new cDebugMessageManager(I2P); - this->Protocol= new cProtocol(this); - this->loadUserList(); - this->I2P->doConnect(); - - this->UserConnectThread= new cUserConnectThread(this,settings->value("Waittime_between_rechecking_offline_users","30000").toInt()); - - delete settings; -} -void cCore::saveUserList(){ - QFile file(QApplication::applicationDirPath()+"/users.config"); - file.open(QIODevice::WriteOnly | QIODevice::Text); - QTextStream out(&file); - - for(int i=0;iusers.count();i++){ - out<<"Nick:\t"<<(users.at(i)->get_Name())<get_I2PDestination())<addNewUser(NickName,I2PDest); - NickName.clear(); - I2PDest.clear(); - } - else if(temp[0]=="TorDest:"){ - //ignore it - } - file.close(); - } -} - -void cCore::StreamClosedRecived(const SAM_Message_Types::RESULT result,qint32 ID,QString Message){ - - if(isThisID_a_FileSendID(ID)){ - //FileSend - for(int i=0;iget_StreamID()==ID){ - FileSends.at(i)->StreamClosed(result,ID,Message); - FileSends.removeAt(i); - return; - } - } - - } - else if(isThisID_a_FileReciveID(ID)){ - //Filerecive - for(int i=0;iget_StreamID()==ID){ - FileRecives.at(i)->StreamClosed(result,ID,Message); - FileRecives.removeAt(i); - return; - } - } - } - else if(this->isThisIDunknown(ID)==true){ - //if ID=UnKnown then remove the ID - this->removeUnknownID(ID); - } - - //known ID - - for(int i=0;iget_I2PStreamID()==ID){ - if( result==SAM_Message_Types::OK || - result==SAM_Message_Types::CANT_REACH_PEER || - result==SAM_Message_Types::TIMEOUT - ){ - users.at(i)->set_ConnectionStatus(OFFLINE); - break; - } - else { - //on I2P_ERROR or PEER_NOT_FOUND - users.at(i)->set_ConnectionStatus(ERROR); - break; - } - } - } - deletePacketManagerByID(ID); - emit eventUserChanged(); - -} - -void cCore::StreamStatusRecived(const SAM_Message_Types::RESULT result,const qint32 ID,QString Message){ - - if(isThisID_a_FileSendID(ID)){ - //FileSend - for(int i=0;iget_StreamID()==ID){ - FileSends.at(i)->StreamStatus(result,ID,Message); - if(result!=SAM_Message_Types::OK){ - I2P->doStreamClose(ID); - FileSends.removeAt(i); - } - return; - } - } - - } - else if(isThisID_a_FileReciveID(ID)){ - //Filerecive - for(int i=0;iget_StreamID()==ID){ - FileRecives.at(i)->StreamStatus(result,ID,Message); - if(result!=SAM_Message_Types::OK){ - I2P->doStreamClose(ID); - FileRecives.removeAt(i); - } - return; - } - } - } - else if(this->isThisIDunknown(ID)){ - if(result==SAM_Message_Types::OK){ - Protocol->newConnectionChat(ID); - return; - } - else{ - //I2P->doStreamClose(ID); - removeUnknownID(ID); - } - - } - - for(int i=0;iget_I2PStreamID()==ID){ - if(result==SAM_Message_Types::OK){ - users.at(i)->set_I2PStreamID(ID); - users.at(i)->set_ConnectionStatus(ONLINE); - - //this->Protocol->newConnectionChat(ID); - } - else if( result==SAM_Message_Types::CANT_REACH_PEER || - result==SAM_Message_Types::TIMEOUT - ){ - - if(users.at(i)->get_OnlineState()!=USEROFFLINE && users.at(i)->get_OnlineState()!=USERTRYTOCONNECT) - { - users.at(i)->IncomingMessageFromSystem("The Connection is broken: "+Message+"\nConnection closed"); - I2P->doStreamClose(ID); - } - deletePacketManagerByID(ID); - users.at(i)->set_ConnectionStatus(OFFLINE); - } - else if( result==SAM_Message_Types::INVALID_KEY){ - users.at(i)->IncomingMessageFromSystem("Invalid User - Destination: please delete the user\n"); - - if(users.at(i)->get_ConnectionStatus()==ONLINE) - I2P->doStreamClose(ID); - - deletePacketManagerByID(ID); - users.at(i)->set_ConnectionStatus(ERROR); - - } - else if(result==SAM_Message_Types::I2P_ERROR){ - users.at(i)->IncomingMessageFromSystem("I2P_Error: "+Message); - - if(users.at(i)->get_ConnectionStatus()==ONLINE) - I2P->doStreamClose(ID); - - deletePacketManagerByID(ID); - users.at(i)->set_ConnectionStatus(ERROR); - } - - emit eventUserChanged(); - break; - } - } - -} -void cCore::SessionStatusRecived(const SAM_Message_Types::RESULT result,const QString Destination,const QString Message) -{ - if(result==(SAM_Message_Types::OK)){ - currentOnlineStatus=User::USERONLINE; - emit eventOnlineStatusChanged(); - I2P->doNamingLookUP("ME");//get the current Destination from this client - this->UserConnectThread->start(); - - } -} -void cCore::StreamConnectedRecived(const QString Destinaton,const qint32 ID){ - //Someone connected you - //this->Protocol->newConnection(ID); - cConnection t(ID,Destinaton); - this->unknownConnections.push_back(t); -} -bool cCore::removeUnknownID(qint32 ID) -{ - for(int i=0;iunknownConnections.size();i++){ - if(unknownConnections.at(i).ID==ID){ - unknownConnections.removeAt(i); - return true; - } - } - - return false; -} -QString cCore::get_UserProtocolVersionByStreamID(qint32 ID){ - - for(int i=0;i< users.size();i++) - if(users.at(i)->get_I2PStreamID()==ID){ - - return users.at(i)->get_ProtocolVersion(); - } - - return ""; -} -void cCore::set_UserProtocolVersionByStreamID(qint32 ID,QString Version){ - - for(int i=0;i< users.size();i++) - if(users.at(i)->get_I2PStreamID()==ID){ - users.at(i)->set_ProtocolVersion(Version); - - return; - } - -} - -void cCore::removeUnknownIDCreateUserIfNeeded(const qint32 ID,const QString ProtocolVersion){ - //TODO add some security thinks for adding !!! at the moment all user are allowed to connect - - QString Destinaton; - - for(int i=0;iget_I2PDestination()==Destinaton){ - if(users.at(i)->get_ConnectionStatus()==OFFLINE){ - users.at(i)->set_ProtocolVersion(ProtocolVersion); - users.at(i)->set_I2PStreamID(ID); - users.at(i)->set_ConnectionStatus(ONLINE); - - cPacketManager* newPacket=new cPacketManager(ID); - connect(newPacket,SIGNAL(aPacketIsComplead(const qint32, const QByteArray)),Protocol, - SLOT(inputKnown(const qint32,const QByteArray))); - - DataPacketsManagers.push_back(newPacket); - } - else if(users.at(i)->get_ConnectionStatus()==ONLINE){ - /* - //close both Streams - if(ID!=users.at(i)->get_I2PStreamID()) - { - I2P->doStreamClose(ID); - I2P->doStreamClose(users.at(i)->get_I2PStreamID()); - } - */ - //close new connection and use the old - if(ID!=users.at(i)->get_I2PStreamID()) - I2P->doStreamClose(ID); - } - else if(users.at(i)->get_ConnectionStatus()==TRYTOCONNECT){ - /* - //Stop the TRYTOCONNECT - if(ID!=users.at(i)->get_I2PStreamID()) - I2P->doStreamClose(users.at(i)->get_I2PStreamID()); - - users.at(i)->set_ProtocolVersion(ProtocolVersion); - users.at(i)->set_I2PStreamID(ID); - users.at(i)->set_ConnectionStatus(ONLINE); - */ - //close the tryconnection use the new one - if(ID!=users.at(i)->get_I2PStreamID()) - I2P->doStreamClose(users.at(i)->get_I2PStreamID()); - users.at(i)->set_ProtocolVersion(ProtocolVersion); - users.at(i)->set_I2PStreamID(ID); - users.at(i)->set_ConnectionStatus(ONLINE); - - cPacketManager* newPacket=new cPacketManager(ID); - connect(newPacket,SIGNAL(aPacketIsComplead(const qint32, const QByteArray)),Protocol, - SLOT(inputKnown(const qint32,const QByteArray))); - - DataPacketsManagers.push_back(newPacket); - } - - - - - break; - } - } - - emit eventUserChanged(); -} - -void cCore::StreamReadyToSendRecived(const qint32 ID){ - - //FileSendsConnections - for(int i=0;iget_StreamID()==ID){ - FileSends.at(i)->StreamReadyToSend(true); - return; - } - } - - //the Rest (Chatconnections) - for(int i=0;iget_I2PStreamID()==ID){ - users.at(i)->set_ReadyToSend(true); - return; - } - } - -} -void cCore::StreamSendRecived(const qint32 ID,const SAM_Message_Types::RESULT result,SAM_Message_Types::STATE state){ -//FIXME what do when result = FAILED ?, impl. a stack ? - - //FileSendsConnections - for(int i=0;iget_StreamID()==ID){ - if(state==SAM_Message_Types::READY){ - FileSends.at(i)->StreamReadyToSend(true); - return; - } - else{ - FileSends.at(i)->StreamReadyToSend(false); - return; - } - } - } - - //the Rest (Chatconnections) - for(int i=0;iget_I2PStreamID()==ID){ - if(state==SAM_Message_Types::BUFFER_FULL)users.at(i)->set_ReadyToSend(false); - if(state==SAM_Message_Types::READY)users.at(i)->set_ReadyToSend(true); - } - } -} -const QList cCore::get_userList(){ - return users; -} -qint32 cCore::StreamConnect(QString Destination){ - qint32 ID; - - ID=I2P->doStreamConnect(Destination); - - cConnection t(ID,Destination); - this->unknownConnections.push_back(t); - return (ID); -} - -void cCore::StreamDataRecived(const qint32 ID,const QString Size,const QByteArray Data){ - - if(Data.isEmpty()==true)return; - - //FileRecive - for(int i=0;iget_StreamID()==ID){ - FileRecives.at(i)->operator <<(Data); - return; - } - } - - //FileSend - for(int i=0;iget_StreamID()==ID){ - FileSends.at(i)->operator <<(Data); - return; - } - } - //unknown connection - if(this->isThisIDunknown(ID)){ - QByteArray Data2=Protocol->inputUnknown(ID,Data); - if(Data2.isEmpty()==true) - return; - else{ - QList::Iterator it; - for(it=DataPacketsManagers.begin(); it!=DataPacketsManagers.end() ;++it){ - if((*(it))->getID()==ID){ - //(*(it))->operator <<(Data); - (*(*it))<::Iterator it; - for(it=DataPacketsManagers.begin(); it!=DataPacketsManagers.end() ;++it){ - if((*(it))->getID()==ID){ - //(*(it))->operator <<(Data); - (*(*it))<get_ConnectionStatus()==ONLINE || - users.at(i)->get_ConnectionStatus()==TRYTOCONNECT) - { - deletePacketManagerByID(users.at(i)->get_I2PStreamID()); - I2P->doStreamClose(users.at(i)->get_I2PStreamID()); - //removeUnknownID(users.at(i)->get_I2PStreamID()); - - users.at(i)->set_ConnectionStatus(User::OFFLINE); - users.at(i)->set_OnlineState(USEROFFLINE); - - } - //close all unknownConnections - for(int i=0;idoStreamClose(unknownConnections.at(i).ID); - removeUnknownID( unknownConnections.at(i).ID); - } - - //DataPacketsManagers.clear(); - - emit eventUserChanged(); - -} - -bool cCore::isThisIDunknown(qint32 ID){ - - for(int i=0;iunknownConnections.size();i++) - if(unknownConnections.at(i).ID==ID){ - - return true; - } - - return false; -} -cUser* cCore::getUserByI2P_ID(qint32 ID){ - - for(int i=0;iget_I2PStreamID()==ID){ - - return users.at(i); - } - } - - return NULL; -} -cUser* cCore::getUserByI2P_Destination(QString Destination){ - - for(int i=0;iget_I2PDestination()==Destination){ - - return users.at(i); - } - } - - return NULL; -} -void cCore::NamingReplyRecived(const SAM_Message_Types::RESULT result,QString Name,QString Value,QString Message){ - if(result==SAM_Message_Types::OK && Name=="ME") - this->MyDestination=Value; -} -const QString cCore::getMyDestination()const{ - return this->MyDestination; -} -bool cCore::isThisDestinationInunknownConnections(QString Destination){ - for(int i=0;iisThisIDunknown(ID)==true) - return; - else - { - QList::Iterator it; - for(it=DataPacketsManagers.begin(); it!=DataPacketsManagers.end() ;++it){ - if((*(it))->getID()==ID){ - //delete (*(it)); - DataPacketsManagers.erase(it); - break; - - } - } - } -} - -QString cCore::get_connectionDump(){ - QString Message; - - Message+="< Current open Unknown IDs: >\n"; - for(int i=0;i::Iterator it; - for(it=DataPacketsManagers.begin(); it!=DataPacketsManagers.end();++it) - Message+= (QString::number((*(it))->getID(),10)+"\n"); - - Message+="\n\n< Active FileTransfer: >\n"; - for(int i=0;iget_FileName()+"\n"; - Message+="StreamID:\t\t"+QString::number(FileSends.at(i)->get_StreamID(),10)+"\n"; - } - - Message+="\n\n< Active Filerecive: >\n"; - for(int i=0;iget_FileName()+"\n"; - Message+="StreamID:\t\t"+QString::number(FileRecives.at(i)->get_StreamID(),10)+"\n"; - } - - - Message+="\n\n< USER-Infos: >\n"; - for(int i=0;i< users.count();i++){ - Message+="Name:\t\t"+users.at(i)->get_Name()+"\n"; - Message+="ClientName:\t\t"+users.at(i)->get_ClientName()+"\n"; - Message+="ClientVersion:\t\t"+users.at(i)->get_ClientVersion()+"\n"; - Message+="ProtocolVersion:\t" +users.at(i)->get_ProtocolVersion()+"\n"; - Message+="I2PStreamID:\t\t" +QString::number(users.at(i)->get_I2PStreamID(),10)+"\n"; - - switch(users.at(i)->get_ConnectionStatus()) - { - case User::ONLINE: - { - Message+="ConnectionStatus:\tOnline\n\n"; - break; - } - case User::OFFLINE: - { - Message+="ConnectionStatus:\tOffline/Invisible\n\n"; - break; - } - case User::TRYTOCONNECT: - { - Message+="ConnectionStatus:\tTryToConnect\n\n"; - break; - - } - - case User::ERROR: - { - Message+="ConnectionStatus: (Stream)\tError\n\n"; - break; - - } - }; - } - return Message; -} - -bool cCore::renameuserByI2PDestination(const QString Destination, const QString newNickname){ - for(int i=0;iget_I2PDestination()==Destination){ - users.at(i)->set_Name(newNickname); - emit eventUserChanged(); - return true; - } - } - return false; -} - -ONLINESTATE cCore::getOnlineStatus() const -{ - return this->currentOnlineStatus; -} - -void cCore::setOnlineStatus(const ONLINESTATE newStatus) -{ - if(currentOnlineStatus==newStatus) return; - - if(newStatus==User::USEROFFLINE) - { - stopCore(); - this->currentOnlineStatus=newStatus; - } - else if(newStatus==User::USERTRYTOCONNECT) - { - if(currentOnlineStatus==User::USEROFFLINE) - { - restartCore(); - this->currentOnlineStatus=newStatus; - } - } - else - { - //send new Status to every connected User - this->currentOnlineStatus=newStatus; - - for(int i=0;iget_ConnectionStatus()==ONLINE) - { - switch(this->currentOnlineStatus) - { - case USERONLINE: - { - Protocol->send(USER_ONLINESTATUS_ONLINE,users.at(i)->get_I2PStreamID(),""); - break; - } - case USEROFFLINE: - case USERINVISIBLE: - { - Protocol->send(USER_ONLINESTATUS_OFFLINE,users.at(i)->get_I2PStreamID(),""); - break; - } - case USERAWAY: - { - Protocol->send(USER_ONLINESTATUS_AWAY,users.at(i)->get_I2PStreamID(),""); - break; - - } - case USERWANTTOCHAT: - { - Protocol->send(USER_ONLINESTATUS_WANTTOCHAT,users.at(i)->get_I2PStreamID(),""); - break; - } - case USERDONT_DISTURB: - { - Protocol->send(USER_ONLINESTATUS_DONT_DISTURB,users.at(i)->get_I2PStreamID(),""); - break; - } - default: - { - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Warning); - msgBox->setText("cCore(setOnlineStatus)"); - msgBox->setInformativeText("Unknown USERSTATE"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - - } - } - - - }//if - }//for - } - emit eventOnlineStatusChanged(); -} - -void cCore::stopCore() -{ - UserConnectThread->stop(); - closeAllActiveConnections(); - I2P->doDisconnect(); -} - -void cCore::restartCore() -{ - I2P->doConnect(); - UserConnectThread->start(); -} - -void cCore::addNewFileTransfer(QString FilePath, QString Destination) -{ - cFileTransferSend * t= new cFileTransferSend(this,FilePath,Destination); - connect (t,SIGNAL(event_FileTransferFinishedOK()),SoundManager, - SLOT(event_FileSend_Finished())); - - FileSends.append(t); - -} - -bool cCore::isThisID_a_FileSendID(qint32 ID) -{ - for(int i=0;iget_StreamID()==ID){ - return true; - } - } - return false; -} - -bool cCore::isThisID_a_FileReciveID(qint32 ID) -{ - for(int i=0;iget_StreamID()==ID){ - return true; - } - } - return false; -} - -void cCore::addNewFileRecive(qint32 ID, QString FileName, QString FileSize) -{ - if(isThisIDunknown(ID)) removeUnknownID(ID); - - quint64 Size; - bool OK; - Size=FileSize.toULongLong(&OK,10); - if(OK==false) - { - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Critical); - msgBox->setText("cCore(addNewFileRecive)"); - msgBox->setInformativeText("Error convert QString to Quint64\nValue: "+FileSize +"\nFilerecive aborted"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->exec(); - - //abort the Filerecive - this->StreamSendData(ID,QString("1"));//false - this->StreamClose(ID); - return; - } - SoundManager->event_FileRecive_Incoming(); - cFileTransferRecive* t= new cFileTransferRecive(this,ID,FileName,Size); - connect(t,SIGNAL(event_FileRecivedFinishedOK()),SoundManager, - SLOT(event_FileRecive_Finished())); - - FileRecives.append(t); - t->start(); -} - - -void cCore::StreamSendData(qint32 ID, QByteArray Data) -{ - I2P->doStreamSend(ID,Data); -} - - -void cCore::StreamSendData(qint32 ID, QString Data) -{ - I2P->doStreamSend(ID,Data); -} - -void cCore::StreamClose(qint32 ID) -{ - if(FileSends.count()>0){ - for(int i=0;iget_StreamID()==ID){ - FileSends.removeAt(i); - break; - } - } - } - - if(FileRecives.count()>0){ - for(int i=0;iget_StreamID()==ID){ - FileRecives.removeAt(i); - break; - } - } - } - I2P->doStreamClose(ID); -} - -bool cCore::checkIfAFileTransferOrReciveisActive() -{ - if(FileSends.count()>0) return true; - if(FileRecives.count()>0) return true; - - return false; -} - -void cCore::MuteSound(bool t) -{ - SoundManager->doMute(t); -} - diff --git a/plugins/i2pmessenger_plugin/src/Core.h b/plugins/i2pmessenger_plugin/src/Core.h deleted file mode 100644 index 19f178470..000000000 --- a/plugins/i2pmessenger_plugin/src/Core.h +++ /dev/null @@ -1,154 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#ifndef CORE_H -#define CORE_H - -#include -#include -#include -#include -#include - -#include "User.h" -#include "ConnectionI2P.h" -#include "DebugMessageManager.h" -#include "I2PSamMessageAnalyser.h" - -#include "UserConnectThread.h" -#include "Protocol.h" -#include "PacketManager.h" -#include "FileTransferSend.h" -#include "FileTransferRecive.h" -#include "SoundManager.h" - - - -#define CLIENTVERSION "0.2.9 Beta" -#define CLIENTNAME "I2P-Messenger (QT)" - - - -struct cConnection -{ - cConnection ( qint32 ID,QString Destination ) - { - this->ID=ID; - this->Destination=Destination; - } - void operator= ( const cConnection& t ) - { - this->ID=t.ID; - this->Destination=t.Destination; - } - qint32 ID; - QString Destination; -}; - -using namespace SAM_Message_Types; -using namespace User; -class cUserConnectThread; -class cCore :public QObject -{ - - Q_OBJECT - public: - cCore(); - ~cCore(); - cDebugMessageManager* get_DebugMessageHandler(); - const QList get_userList(); - bool isThisIDunknown ( qint32 ID ); - bool removeUnknownID ( qint32 ID ); - bool isThisDestinationInunknownConnections ( QString Destination ); - - void removeUnknownIDCreateUserIfNeeded( const qint32 ID,const QString ProtocolVersion ); - - QString get_UserProtocolVersionByStreamID ( qint32 ID ); - void set_UserProtocolVersionByStreamID ( qint32 ID,QString Version ); - cUser* getUserByI2P_ID ( qint32 ID ); - cUser* getUserByI2P_Destination ( QString Destination ); - const QString getMyDestination() const; - ONLINESTATE getOnlineStatus()const; - QString get_ClientName() {return CLIENTNAME;}; - QString get_ClientVersion(){return CLIENTVERSION;}; - QString get_ProtocolVersion(){return Protocol->get_ProtocolVersion();}; - void setOnlineStatus(const ONLINESTATE newStatus); - void addNewFileTransfer(QString FilePath,QString Destination); - void addNewFileRecive(qint32 ID,QString FileName,QString FileSize); - void StreamSendData(qint32 ID,QByteArray Data); - void StreamSendData(qint32 ID,QString Data); - void StreamClose(qint32 ID); - qint32 StreamConnect (QString Destination ); - bool checkIfAFileTransferOrReciveisActive(); - - - - public slots: - bool addNewUser (QString Name,QString I2PDestination,qint32 I2PStream_ID=0); - bool deleteUserByI2PDestination (const QString I2PDestination ); - bool renameuserByI2PDestination (const QString Destination, const QString newNickname); - void doNamingLookUP ( QString Name ); - void MuteSound(bool t); - - - QString get_connectionDump(); - - private slots: - // - void StreamClosedRecived ( const SAM_Message_Types::RESULT result,qint32 ID,QString Message ); - void StreamStatusRecived ( const SAM_Message_Types::RESULT result,const qint32 ID,QString Message ); - void StreamConnectedRecived ( const QString Destinaton,const qint32 ID ); - void StreamReadyToSendRecived ( const qint32 ID ); - void StreamSendRecived ( const qint32 ID,const SAM_Message_Types::RESULT result,SAM_Message_Types::STATE state ); - void SessionStatusRecived ( const SAM_Message_Types::RESULT result,const QString Destination,const QString Message ); - void StreamDataRecived ( const qint32 ID,const QString Size,const QByteArray Data ); - void NamingReplyRecived ( const SAM_Message_Types::RESULT result,QString Name,QString Value="",QString Message="" ); - signals: - void eventUserChanged(); - void eventOnlineStatusChanged(); - - private: - cConnectionI2P* I2P; - cDebugMessageManager* DebugMessageHandler; - cProtocol* Protocol; - QList users; - QList unknownConnections; - cUserConnectThread* UserConnectThread; - QString MyDestination; - QList DataPacketsManagers; - ONLINESTATE currentOnlineStatus; - QList FileSends; - QList FileRecives; - cSoundManager* SoundManager; - - bool doesUserAllReadyExitsByI2PDestination ( QString I2PDestination ); - void init(); - void saveUserList(); - void loadUserList(); - void stopCore(); - void restartCore(); - void closeAllActiveConnections(); - void deletePacketManagerByID ( qint32 ID ); - bool isThisID_a_FileSendID(qint32 ID); - bool isThisID_a_FileReciveID(qint32 ID); - - -}; -#endif diff --git a/plugins/i2pmessenger_plugin/src/DebugMessageManager.cpp b/plugins/i2pmessenger_plugin/src/DebugMessageManager.cpp deleted file mode 100644 index 32e276db0..000000000 --- a/plugins/i2pmessenger_plugin/src/DebugMessageManager.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include "DebugMessageManager.h" - - -cDebugMessageManager::cDebugMessageManager(cConnectionI2P* I2P) -{ - - this->I2P=I2P; - - this->settings= new QSettings("./application.ini",QSettings::IniFormat); - settings->beginGroup("General"); - this->MaxMessageCount=settings->value("Debug_Max_Message_count","20").toInt(); - settings->endGroup(); - connect(I2P,SIGNAL(debugMessages(QString) ),this,SLOT(NewIncomingDebugMessage(const QString)) ); -} - -cDebugMessageManager::~cDebugMessageManager() -{ - disconnect(I2P,SIGNAL(debugMessages(QString)),this,SLOT(NewIncomingDebugMessage(const QString))); -} - -void cDebugMessageManager::clearAllMessages() -{ - Messages.clear(); -} - -const QStringList cDebugMessageManager::getAllMessages() -{ - return Messages; -} - -void cDebugMessageManager::NewIncomingDebugMessage(const QString Message){ - while(Messages.count()>= (signed int)MaxMessageCount){ - Messages.removeLast(); - } - - Messages.prepend(Message); - emit newDebugMessage(Message); -} diff --git a/plugins/i2pmessenger_plugin/src/DebugMessageManager.h b/plugins/i2pmessenger_plugin/src/DebugMessageManager.h deleted file mode 100644 index 4a05f6827..000000000 --- a/plugins/i2pmessenger_plugin/src/DebugMessageManager.h +++ /dev/null @@ -1,53 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef DEBUGMESSAGEMANAGER_H -#define DEBUGMESSAGEMANAGER_H - -#include -#include - -#include "ConnectionI2P.h" - -class cDebugMessageManager:public QObject -{ - Q_OBJECT - - public: - cDebugMessageManager(cConnectionI2P* I2P); - ~cDebugMessageManager(); - - - public slots: - void clearAllMessages(); - const QStringList getAllMessages(); - - private slots: - void NewIncomingDebugMessage(const QString Message); - - signals: - void newDebugMessage(QString Message); - - private: - cConnectionI2P* I2P; - quint32 MaxMessageCount; - QSettings* settings; - QStringList Messages; -}; -#endif diff --git a/plugins/i2pmessenger_plugin/src/FileTransferRecive.cpp b/plugins/i2pmessenger_plugin/src/FileTransferRecive.cpp deleted file mode 100644 index 8654756c2..000000000 --- a/plugins/i2pmessenger_plugin/src/FileTransferRecive.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include "Core.h" -#include "FileTransferRecive.h" - - - -cFileTransferRecive::cFileTransferRecive(cCore * Core, qint32 StreamID, QString FileName, quint64 FileSize) -:StreamID(StreamID),FileName(FileName),FileSize(FileSize) -{ - this->Core=Core; - allreadyRecivedSize=0; -} - -cFileTransferRecive::~ cFileTransferRecive() -{ - delete Dialog; - delete FileForRecive; -} - -void cFileTransferRecive::StreamStatus(const SAM_Message_Types::RESULT result, const qint32 ID, QString Message) -{ - if(result==SAM_Message_Types::OK) - { - - } - else - { - FileForRecive->close(); - FileForRecive->remove(); - emit event_FileReciveError(); - - } - -} - -void cFileTransferRecive::StreamClosed(const SAM_Message_Types::RESULT result, qint32 ID, QString Message) -{ - if(allreadyRecivedSize==FileSize){ - - FileForRecive->close(); - emit event_FileRecivedFinishedOK(); - - } - else{ - FileForRecive->close(); - FileForRecive->remove(); - emit event_FileReciveAbort(); - } - -} - -void cFileTransferRecive::operator <<(QByteArray t) -{ - - allreadyRecivedSize+=t.length(); - FileForRecive->write(t); - FileForRecive->flush(); - - emit event_allreadyRecivedSizeChanged(allreadyRecivedSize); - - if(allreadyRecivedSize==FileSize) - { - Core->StreamClose(StreamID); - FileForRecive->close(); - emit event_FileRecivedFinishedOK(); - } -} - -void cFileTransferRecive::abbortFileRecive() -{ - Core->StreamClose(StreamID); - FileForRecive->close(); - FileForRecive->remove(); -} - -void cFileTransferRecive::start() -{ - QString SFileSize; - SFileSize.setNum(FileSize); - - - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setText("Incoming FileTransfer"); - msgBox->setInformativeText("Do you want to accept it ?\nFileName: "+FileName+"\nFileSize: " +SFileSize+" Bit"); - msgBox->setStandardButtons(QMessageBox::Yes | QMessageBox::No); - msgBox->setDefaultButton(QMessageBox::Yes); - msgBox->setWindowModality(Qt::WindowModal); - int ret = msgBox->exec(); - - if(ret==QMessageBox::Yes){ - QString FilePath=QFileDialog::getSaveFileName(NULL,"File Save","./"+FileName); - - if(!FilePath.isEmpty()){ - FileForRecive= new QFile(FilePath); - FileForRecive->open(QIODevice::WriteOnly); - Core->StreamSendData(StreamID,QString("0"));//true - - Dialog= new form_fileRecive(this); - Dialog->show(); - } - else{ - Core->StreamSendData(StreamID,QString("1"));//false - Core->StreamClose(StreamID); - } - - } - else{ - Core->StreamSendData(StreamID,QString("1"));//false - Core->StreamClose(StreamID); - } -} - -void cFileTransferRecive::start_withAutoAccept(QString Path) -{ - - QString SFileSize; - SFileSize.setNum(FileSize); - - QString FilePath=Path+="/"+FileName; - - if(!FilePath.isEmpty()){ - FileForRecive= new QFile(FilePath); - FileForRecive->open(QIODevice::WriteOnly); - Core->StreamSendData(StreamID,QString("0"));//true - - Dialog= new form_fileRecive(this); - Dialog->show(); - } -} - - diff --git a/plugins/i2pmessenger_plugin/src/FileTransferRecive.h b/plugins/i2pmessenger_plugin/src/FileTransferRecive.h deleted file mode 100644 index c2f7752b6..000000000 --- a/plugins/i2pmessenger_plugin/src/FileTransferRecive.h +++ /dev/null @@ -1,61 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef FILETRANSFER_H -#define FILETRANSFER_H - -#include "gui/form_fileRecive.h" -#include "ConnectionI2P.h" - -class cCore; -class cFileTransferRecive:public QObject -{ - Q_OBJECT - public: - cFileTransferRecive(cCore* Core,qint32 StreamID,QString FileName,quint64 FileSize); - ~cFileTransferRecive(); - void start(); - void start_withAutoAccept(QString Path); - - void StreamStatus(const SAM_Message_Types::RESULT result,const qint32 ID,QString Message); - void StreamClosed(const SAM_Message_Types::RESULT result,qint32 ID,QString Message); - void operator << ( QByteArray t ); - quint64 get_FileSize(){return FileSize;}; - QString get_FileName(){return FileName;}; - qint32 get_StreamID(){return StreamID;}; - - public slots: - void abbortFileRecive(); - - signals: - void event_allreadyRecivedSizeChanged(quint64 Size); - void event_FileReciveError(); - void event_FileRecivedFinishedOK(); - void event_FileReciveAbort(); - - private: - cCore* Core; - form_fileRecive* Dialog; - const quint64 FileSize; - quint64 allreadyRecivedSize; - const QString FileName; - const qint32 StreamID; - QFile* FileForRecive; -}; -#endif diff --git a/plugins/i2pmessenger_plugin/src/FileTransferSend.cpp b/plugins/i2pmessenger_plugin/src/FileTransferSend.cpp deleted file mode 100644 index 43382662d..000000000 --- a/plugins/i2pmessenger_plugin/src/FileTransferSend.cpp +++ /dev/null @@ -1,144 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include "FileTransferSend.h" -#include "gui/form_fileSend.h" -#include "Core.h" - -cFileTransferSend::cFileTransferSend(cCore * Core, QString FilePath,QString Destination) -:FilePath(FilePath),Destination(Destination) -{ - this->Core=Core; - StreamID=Core->StreamConnect(Destination); - Core->removeUnknownID(StreamID); - - sendFirstPaket=true; - FileName=FilePath.mid(FilePath.lastIndexOf("/")+1); - FileTransferAccepted=false; - FileForSend = new QFile(FilePath); - FileSize=FileForSend->size(); - - Dialog=new form_fileSend(this); - Dialog->show(); -} - -void cFileTransferSend::abbortFileSend() -{ - FileForSend->close(); - Core->StreamClose(StreamID); -} - -void cFileTransferSend::StreamStatus(const SAM_Message_Types::RESULT result, const qint32 ID, QString Message) -{ - using namespace FileTransferProtocol; - - if(result==SAM_Message_Types::OK) - { - if(sendFirstPaket==true) - { - QString StringFileSize; - StringFileSize.setNum(FileSize); - - Core->StreamSendData(StreamID,FIRSTPAKET+StringFileSize+"\n"+FileName); - sendFirstPaket=false; - } - - } - else - { - FileForSend->close(); - emit event_FileTransferError(); - } - - -} - -void cFileTransferSend::StreamClosed(const SAM_Message_Types::RESULT result, qint32 ID, QString Message) -{ - if(result==SAM_Message_Types::OK){ - if(allreadySendedSize==FileSize){ - emit event_FileTransferFinishedOK(); - } - else - emit event_FileTransferAborted(); - } - else{ - emit event_FileTransferAborted(); - } - - FileForSend->close(); -} - -cFileTransferSend::~ cFileTransferSend() -{ - - delete FileForSend; - delete Dialog; -} - -void cFileTransferSend::StreamReadyToSend(bool t) -{ - if(t==false)return; - if(FileTransferAccepted==false)return; - - if(allreadySendedSize==FileSize) - { - emit event_FileTransferFinishedOK(); - Core->StreamClose(StreamID); - return; - } - - QByteArray Buffer; - - Buffer=FileForSend->read(MAXPAKETSIZE); - allreadySendedSize+=Buffer.length(); - - - Core->StreamSendData(StreamID,Buffer); - emit event_allreadySendedSizeChanged(allreadySendedSize); -} - -void cFileTransferSend::operator <<(QByteArray t) -{ - if(t.length()==1){ - if(t.contains("0")){//true - emit event_FileTransferAccepted(true); - FileTransferAccepted=true; - StartFileTransfer(); - - } - else{ - emit event_FileTransferAccepted(false); - Core->StreamClose(StreamID); - - } - } - else{ - emit event_FileTransferAccepted(false); - Core->StreamClose(StreamID); - } -} - -void cFileTransferSend::StartFileTransfer() -{ - allreadySendedSize=0; - FileForSend->open(QIODevice::ReadOnly); - StreamReadyToSend(true); -} diff --git a/plugins/i2pmessenger_plugin/src/FileTransferSend.h b/plugins/i2pmessenger_plugin/src/FileTransferSend.h deleted file mode 100644 index 4c14c822a..000000000 --- a/plugins/i2pmessenger_plugin/src/FileTransferSend.h +++ /dev/null @@ -1,79 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef FILETRANSFERSEND_H -#define FILETRANSFERSEND_H - -#include "ConnectionI2P.h" - -namespace FileTransferProtocol -{ - const QString PROTOCOLVERSION= "0.1"; - const QString FIRSTPAKET ="CHATSYSTEMFILETRANSFER\t"+PROTOCOLVERSION+"\n"; -//+sizeinbit\nFileName -}; - -//limited to 30Kb -//#define MAXPAKETSIZE 30720 -#define MAXPAKETSIZE 1024 -class cCore; -class form_fileSend; -class cFileTransferSend:public QObject -{ - Q_OBJECT - - public: - cFileTransferSend(cCore* Core,QString FilePath,QString Destination); - ~cFileTransferSend(); - void StreamStatus(const SAM_Message_Types::RESULT result,const qint32 ID,QString Message); - void StreamClosed(const SAM_Message_Types::RESULT result,qint32 ID,QString Message); - void StreamReadyToSend(bool t); - void operator << ( QByteArray t ); - quint64 get_FileSize(){return FileSize;}; - qint32 get_StreamID(){return StreamID;}; - QString get_FileName(){return FileName;}; - - - public slots: - void abbortFileSend(); - - signals: - void event_allreadySendedSizeChanged(quint64 Size); - void event_FileTransferAccepted(bool t); - void event_FileTransferFinishedOK(); - void event_FileTransferError(); - void event_FileTransferAborted();//the otherSide abort it - - private: - void StartFileTransfer(); - - cCore* Core; - const QString FilePath; - qint64 FileSize; - qint64 allreadySendedSize; - const QString Destination; - qint32 StreamID; - QFile* FileForSend; - bool sendFirstPaket; - bool FileTransferAccepted; - QString FileName; - form_fileSend* Dialog; - -}; -#endif diff --git a/plugins/i2pmessenger_plugin/src/I2PSamMessageAnalyser.cpp b/plugins/i2pmessenger_plugin/src/I2PSamMessageAnalyser.cpp deleted file mode 100644 index 02bd5fcf9..000000000 --- a/plugins/i2pmessenger_plugin/src/I2PSamMessageAnalyser.cpp +++ /dev/null @@ -1,251 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include "I2PSamMessageAnalyser.h" - -I2PSamMessageAnalyser::I2PSamMessageAnalyser() -{ - //Constructor -} - -const SAM_MESSAGE I2PSamMessageAnalyser::Analyse(QString Message) -{ - using namespace SAM_Message_Types; - - SAM_MESSAGE t; - QStringList list =Message.split(" ",QString::SkipEmptyParts); - - - if((list[0]=="STREAM") && (list[1]=="RECEIVED")){ - t.type=STREAM_RECEIVED; - - //get ID - QStringList temp=list[2].split("="); - QString sID=temp[1]; - - - t.ID=QStringToQint32(sID); - //get Size - temp= list[3].split("="); - t.Size=temp[1].remove("\n"); - } - else if((list[0].contains("STREAM")==true) && (list[1].contains("READY_TO_SEND")==true)){ - t.type=STREAM_READY_TO_SEND; - - //GET ID - QStringList temp=list[2].split("="); - QString sID=temp[1].remove("\n"); - - t.ID=QStringToQint32(sID); - } - else if((list[0]=="HELLO") && (list[1]=="REPLY")){ - t.type=HELLO_REPLAY; - - if(list[2].contains("RESULT=OK")==true) t.result=OK; - else if(list[2].contains("RESULT=NOVERSION")==true)t.result=NOVERSION; - - } - else if((list[0].contains("SESSION")==true) && (list[1].contains("STATUS")==true)){ - t.type=SESSION_STATUS; - - //Get Result - if(list[2].contains("RESULT=OK",Qt::CaseInsensitive))t.result=OK; - else if(list[2].contains("RESULT=DUPLICATED_DEST",Qt::CaseInsensitive))t.result=DUPLICATED_DEST; - else if(list[2].contains("RESULT=I2P_ERROR",Qt::CaseInsensitive))t.result=I2P_ERROR; - else if(list[2].contains("RESULT=INVALID_KEY",Qt::CaseInsensitive))t.result=INVALID_KEY; - else - t.type=ERROR_IN_ANALYSE; - //---------------- - - - //Get Destination - QStringList temp=list[3].split("="); - - t.Destination=temp[1].remove("\n"); - //---------------- - //Get Message - if(Message.contains("MESSAGE=",Qt::CaseInsensitive)){ - t.Message=Message.mid(Message.indexOf("MESSAGE=")+8); - t.Message.remove("\n"); - } - - //---------------- - - } - else if((list[0].contains("STREAM")==true) && (list[1].contains("STATUS")==true)){ - t.type=STREAM_STATUS; - - //Get Result - if(list[2].contains("RESULT=OK",Qt::CaseInsensitive))t.result=OK; - else if(list[2].contains("RESULT=CANT_REACH_PEER",Qt::CaseInsensitive))t.result=CANT_REACH_PEER; - else if(list[2].contains("RESULT=I2P_ERROR",Qt::CaseInsensitive))t.result=I2P_ERROR; - else if(list[2].contains("RESULT=INVALID_KEY",Qt::CaseInsensitive))t.result=INVALID_KEY; - else if(list[2].contains("RESULT=TIMEOUT",Qt::CaseInsensitive))t.result=TIMEOUT; - else - { - t.type=ERROR_IN_ANALYSE; - return t; - } - - //---------------- - //Get ID - QStringList temp=list[3].split("="); - QString sID=temp[1].remove("\n"); - - t.ID=QStringToQint32(sID); - //---------------- - //Get Message - if(Message.contains("MESSAGE=",Qt::CaseInsensitive)){ - t.Message=Message.mid(Message.indexOf("MESSAGE=")+8); - t.Message.remove("\n"); - } - //---------------- - - } - else if((list[0].contains("STREAM")==true) && (list[1].contains("CONNECTED")==true)){ - t.type=STREAM_CONNECTED; - - QStringList temp=list[2].split("="); - QString sID; - t.Destination=temp[1]; - - temp=list[3].split("="); - sID=temp[1].remove("\n"); - - t.ID=QStringToQint32(sID); - - } - else if((list[0].contains("STREAM")==true) && (list[1].contains("SEND")==true)){ - t.type=STREAM_SEND; - - //get ID - QStringList temp=list[2].split("="); - QString sID=temp[1]; - t.ID=QStringToQint32(sID); - - //Get Result - if(list[3].contains("RESULT=OK",Qt::CaseInsensitive))t.result=OK; - else if(list[2].contains("RESULT=FAILED",Qt::CaseInsensitive))t.result=FAILED; - - //get STATE - if(list[4].contains("STATE=BUFFER_FULL",Qt::CaseInsensitive))t.state=BUFFER_FULL; - else if(list[4].contains("STATE=READY",Qt::CaseInsensitive))t.state=READY; - - } - else if((list[0].contains("STREAM")==true) && (list[1].contains("CLOSED")==true)){ - t.type=STREAM_CLOSED; - - //Get RESULT - if(list[2].contains("RESULT",Qt::CaseInsensitive)) - { - - if(list[2].contains("RESULT=OK",Qt::CaseInsensitive))t.result=OK; - else if(list[2].contains("RESULT=CANT_REACH_PEER",Qt::CaseInsensitive))t.result=CANT_REACH_PEER; - else if(list[2].contains("RESULT=I2P_ERROR",Qt::CaseInsensitive))t.result=I2P_ERROR; - else if(list[2].contains("RESULT=PEER_NOT_FOUND",Qt::CaseInsensitive))t.result=PEER_NOT_FOUND; - else if(list[2].contains("RESULT=TIMEOUT",Qt::CaseInsensitive))t.result=TIMEOUT; - else{ - t.type=ERROR_IN_ANALYSE; - return t; - } - - //Get ID - QStringList temp=list[3].split("="); - QString sID=temp[1]; - t.ID=QStringToQint32(sID); - } - else - { - if(list[3].contains("RESULT=OK",Qt::CaseInsensitive))t.result=OK; - else if(list[3].contains("RESULT=CANT_REACH_PEER",Qt::CaseInsensitive))t.result=CANT_REACH_PEER; - else if(list[3].contains("RESULT=I2P_ERROR",Qt::CaseInsensitive))t.result=I2P_ERROR; - else if(list[3].contains("RESULT=PEER_NOT_FOUND",Qt::CaseInsensitive))t.result=PEER_NOT_FOUND; - else if(list[3].contains("RESULT=TIMEOUT",Qt::CaseInsensitive))t.result=TIMEOUT; - else{ - t.type=ERROR_IN_ANALYSE; - return t; - } - - //Get ID - QStringList temp=list[2].split("="); - QString sID=temp[1]; - - t.ID=QStringToQint32(sID); - - } - - //---------------- - //Get Message - if(Message.contains("MESSAGE=",Qt::CaseInsensitive)){ - t.Message=Message.mid(Message.indexOf("MESSAGE=")+8); - t.Message.remove("\n"); - } - //---------------- - } - else if((list[0].contains("NAMING")==true) && (list[1].contains("REPLY")==true)){ - t.type=NAMING_REPLY; - - //get Result - if(list[2].contains("RESULT=OK",Qt::CaseInsensitive))t.result=OK; - else if(list[2].contains("RESULT=INVALID_KEY",Qt::CaseInsensitive))t.result=INVALID_KEY; - else if(list[2].contains("RESULT=KEY_NOT_FOUND",Qt::CaseInsensitive))t.result=KEY_NOT_FOUND; - else{ - t.type=ERROR_IN_ANALYSE; - return t; - } - //get Name - QStringList temp=list[3].split("="); - t.Name=temp[1].remove("\n"); - - //get Value - if(list.count()-1>=4){ - QStringList temp=list[4].split("="); - t.Value=temp[1].remove("\n"); - } - //Get Message - if(Message.contains("MESSAGE=",Qt::CaseInsensitive)){ - t.Message=Message.mid(Message.indexOf("MESSAGE=")+8); - t.Message.remove("\n"); - } - } - else{ - t.type=ERROR_IN_ANALYSE; - } - - return t; -} - -qint32 I2PSamMessageAnalyser::QStringToQint32(QString value) -{ - bool OK=false; - qint32 iValue =value.toInt ( &OK,10 ); - - if(OK==false) - { - QMessageBox msgBox; - msgBox.setIcon(QMessageBox::Warning); - msgBox.setText("I2PSamMessageAnalyser"); - msgBox.setInformativeText("cant parse value: "+value ); - msgBox.setStandardButtons(QMessageBox::Ok); - msgBox.setDefaultButton(QMessageBox::Ok); - msgBox.exec(); - } - return iValue; -} - diff --git a/plugins/i2pmessenger_plugin/src/I2PSamMessageAnalyser.h b/plugins/i2pmessenger_plugin/src/I2PSamMessageAnalyser.h deleted file mode 100644 index 6dfc076e1..000000000 --- a/plugins/i2pmessenger_plugin/src/I2PSamMessageAnalyser.h +++ /dev/null @@ -1,96 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef I2PSAMMESSAGEANALYSER_H -#define I2PSAMMESSAGEANALYSER_H - -#include - -namespace SAM_Message_Types -{ - - - enum TYPE - { - HELLO_REPLAY, - SESSION_STATUS, - STREAM_STATUS, - STREAM_CONNECTED, - STREAM_SEND, - STREAM_READY_TO_SEND, - STREAM_CLOSED, - STREAM_RECEIVED, - NAMING_REPLY, - - ERROR_IN_ANALYSE - }; - - enum RESULT - { - OK, - DUPLICATED_DEST, - I2P_ERROR, - INVALID_KEY, - CANT_REACH_PEER, - TIMEOUT, - FAILED, - NOVERSION, - KEY_NOT_FOUND, - PEER_NOT_FOUND - }; - - enum STATE - { - BUFFER_FULL, - READY - }; -} - -struct SAM_MESSAGE -{ - public: - QString Message; - qint32 ID; - QString Destination; - QString Size; - QString Name; - QString Value; - SAM_Message_Types::TYPE type; - SAM_Message_Types::RESULT result; - SAM_Message_Types::STATE state; - /* - SAM_MESSAGE(TYPE t,RESULT r,QString Message,QString Id,QString Destination,QString Size) - :type(t),result(r),Message(Message),Id(Id),Destination(Destination),Size(Size) - { - } - */ -}; - - -class I2PSamMessageAnalyser: public QObject -{ - Q_OBJECT - public: - I2PSamMessageAnalyser(); - const SAM_MESSAGE Analyse(QString Message); - - private: - qint32 QStringToQint32(QString value); -}; -#endif diff --git a/plugins/i2pmessenger_plugin/src/Main.cpp b/plugins/i2pmessenger_plugin/src/Main.cpp deleted file mode 100644 index dff8d40fd..000000000 --- a/plugins/i2pmessenger_plugin/src/Main.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include -#include - -#include "gui/form_Main.h" - -int main(int argc, char *argv[]) -{ - - - QApplication app(argc, argv); - form_MainWindow* mainForm= new form_MainWindow(); - mainForm->show(); - return app.exec(); - app.closeAllWindows(); - - return 0; -} diff --git a/plugins/i2pmessenger_plugin/src/PacketManager.cpp b/plugins/i2pmessenger_plugin/src/PacketManager.cpp deleted file mode 100644 index 13ddf81e3..000000000 --- a/plugins/i2pmessenger_plugin/src/PacketManager.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include "PacketManager.h" - - - -cPacketManager::cPacketManager ( qint32 ID ) -:ID ( ID ) -{ - Data.clear(); -} - -cPacketManager::~cPacketManager() -{ -} -void cPacketManager::operator << ( QByteArray t ) -{ - Data.append ( t ); - checkifOnePacketIsComplead(); -} -qint32 cPacketManager::getID() -{ - return ID; -} - -void cPacketManager::checkifOnePacketIsComplead() -{ - if ( Data.length() >=8 ) - { - QString sPacketLength=Data.mid ( 0,4 ); - bool OK=false; - int iPacketLength =sPacketLength.toInt ( &OK,16 ); - if(OK==false) - { - QMessageBox msgBox; - msgBox.setIcon(QMessageBox::Warning); - msgBox.setText("cPacketManager ("+QString(ID)+")"); - msgBox.setInformativeText("cant parse PacketLength\nHexValue: "+sPacketLength ); - msgBox.setStandardButtons(QMessageBox::Ok); - msgBox.setDefaultButton(QMessageBox::Ok); - msgBox.exec(); - } - - - if ( Data.length() >=iPacketLength+4 ) - { - QByteArray CurrentPacket ( Data.mid ( 4 ),iPacketLength ); - Data.remove ( 0,iPacketLength+4 ); - emit aPacketIsComplead ( ID,CurrentPacket ); - checkifOnePacketIsComplead(); - } - } - return; -} - diff --git a/plugins/i2pmessenger_plugin/src/PacketManager.h b/plugins/i2pmessenger_plugin/src/PacketManager.h deleted file mode 100644 index 0e5d52778..000000000 --- a/plugins/i2pmessenger_plugin/src/PacketManager.h +++ /dev/null @@ -1,45 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef PACKETMANAGER_H -#define PACKETMANAGER_H - -#include -#include - -class cPacketManager :public QObject -{ - Q_OBJECT - - - public: - //cPacketManager() {} - cPacketManager ( qint32 ID ); - ~cPacketManager(); - void operator << ( QByteArray t ); - qint32 getID(); - - void checkifOnePacketIsComplead(); - signals: - void aPacketIsComplead ( const qint32 ID,const QByteArray CurrentPacket ); - private: - const qint32 ID; - QByteArray Data; -}; -#endif diff --git a/plugins/i2pmessenger_plugin/src/Protocol.cpp b/plugins/i2pmessenger_plugin/src/Protocol.cpp deleted file mode 100644 index 3a0058b63..000000000 --- a/plugins/i2pmessenger_plugin/src/Protocol.cpp +++ /dev/null @@ -1,333 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include "Protocol.h" -#include "Core.h" -#include "User.h" - -cProtocol::cProtocol(cCore * Core){ - this->Core=Core; - - connect (this,SIGNAL(eventUserChanged()),Core,SIGNAL(eventUserChanged())); - -} - -void cProtocol::newConnectionChat(const qint32 ID){ - using namespace Protocol_Info; - //send the ChatSystem\tProtocolVersion - Core->StreamSendData(ID,FIRSTPAKETCHAT); -} -void cProtocol::inputKnown(const qint32 ID, const QByteArray Data){ -using namespace Protocol_Info; - - if(Data.length()<4) - return; - - QString ProtocolInfoTag(Data.left(4)); - - //COMMANDS - if(ProtocolInfoTag=="1000"){//PING: - send(ECHO_OF_PING,ID,""); - } - else if(ProtocolInfoTag=="1001"){//GET_CLIENTVERSION: - send(ANSWER_OF_GET_CLIENTVERSION,ID,Core->get_ClientVersion()); - } - else if(ProtocolInfoTag=="1002"){//GET_CLIENTNAME: - send(ANSWER_OF_GET_CLIENTNAME,ID,Core->get_ClientName()); - } - else if(ProtocolInfoTag=="1003"){//GET_USER_ONLINESTATUS: - //TODO sendOnlineStatus - switch(Core->getOnlineStatus()) - { - case USERONLINE: - { - send(USER_ONLINESTATUS_ONLINE,ID,""); - break; - } - case USEROFFLINE: - case USERINVISIBLE: - { - send(USER_ONLINESTATUS_OFFLINE,ID,""); - break; - } - case USERAWAY: - { - send(USER_ONLINESTATUS_AWAY,ID,""); - break; - - } - case USERWANTTOCHAT: - { - send(USER_ONLINESTATUS_WANTTOCHAT,ID,""); - break; - } - case USERDONT_DISTURB: - { - send(USER_ONLINESTATUS_DONT_DISTURB,ID,""); - break; - } - default: - { - QMessageBox* msgBox= new QMessageBox(NULL); - msgBox->setIcon(QMessageBox::Warning); - msgBox->setText("cProtocol(inputKnown)"); - msgBox->setInformativeText("Unknown USERSTATE"); - msgBox->setStandardButtons(QMessageBox::Ok); - msgBox->setDefaultButton(QMessageBox::Ok); - msgBox->setWindowModality(Qt::NonModal); - msgBox->show(); - - } - } - - } - - //end of commands - - - //Messages - else if(ProtocolInfoTag=="0001"){//ANSWER_OF_GET_CLIENTVERSION - cUser* thisUser=Core->getUserByI2P_ID(ID); - if(thisUser!=NULL){ - QString ClientVersion=Data.mid(4); - thisUser->set_ClientVersion(ClientVersion); - } - - } - else if(ProtocolInfoTag=="0002"){//ANSWER_OF_GET_CLIENTNAME - cUser* thisUser=Core->getUserByI2P_ID(ID); - if(thisUser!=NULL){ - QString Clientname=Data.mid(4); - thisUser->set_ClientName(Clientname); - } - - } - else if(ProtocolInfoTag=="0003"){//chatmessage - cUser* thisUser=Core->getUserByI2P_ID(ID); - if(thisUser!=NULL){ - QByteArray temp=Data.mid(4); - thisUser->IncomingNewChatMessage(temp); - emit eventUserChanged(); - } - } - else if(ProtocolInfoTag=="0004"){//USER_ONLINESTATUS_ONLINE - cUser* thisUser=Core->getUserByI2P_ID(ID); - if(thisUser!=NULL){ - QByteArray temp=Data.mid(4); - thisUser->set_OnlineState(USERONLINE); - emit eventUserChanged(); - } - } - else if(ProtocolInfoTag=="0005"){//USER_ONLINESTATUS_OFFLINE || USER_ONLINESTATUS_INVISIBLE - cUser* thisUser=Core->getUserByI2P_ID(ID); - if(thisUser!=NULL){ - QByteArray temp=Data.mid(4); - thisUser->set_OnlineState(USEROFFLINE); - emit eventUserChanged(); - - } - } - else if(ProtocolInfoTag=="0006"){//USER_ONLINESTATUS_WANTTOCHAT - cUser* thisUser=Core->getUserByI2P_ID(ID); - if(thisUser!=NULL){ - QByteArray temp=Data.mid(4); - thisUser->set_OnlineState(USERWANTTOCHAT); - emit eventUserChanged(); - - } - } - else if(ProtocolInfoTag=="0007"){//USER_ONLINESTATUS_AWAY - cUser* thisUser=Core->getUserByI2P_ID(ID); - if(thisUser!=NULL){ - QByteArray temp=Data.mid(4); - thisUser->set_OnlineState(USERAWAY); - emit eventUserChanged(); - } - } - else if(ProtocolInfoTag=="0008"){//USER_ONLINESTATUS_DONT_DISTURB - cUser* thisUser=Core->getUserByI2P_ID(ID); - if(thisUser!=NULL){ - QByteArray temp=Data.mid(4); - thisUser->set_OnlineState(USERDONT_DISTURB); - emit eventUserChanged(); - } - } - //end Messages -} - -QByteArray cProtocol::inputUnknown(const qint32 ID, const QByteArray Data){ -using namespace Protocol_Info; - - if(Core->isThisIDunknown(ID)==true){ - //check if First Paket = from a other CHATSYSTEM - if(Data.contains("CHATSYSTEM\t")==true){ - QByteArray temp=Data.mid(Data.indexOf("\t")+1,Data.indexOf("\n")-Data.indexOf("\t")-1); - QString version(temp); - - //dont send the firstpacket if you have connected someone - //(the firstpacket is sended from core::StreamStatusRecived) - - if(ID < 0) - newConnectionChat(ID);//someone connect you - - Core->removeUnknownIDCreateUserIfNeeded(ID,version); - //remove Firstpacket - QByteArray Data2=Data; - Data2=Data2.remove(0,Data.indexOf("\n")+1); - - return Data2; - } - else if(Data.contains("CHATSYSTEMFILETRANSFER\t")==true) - { - //FIRSTPAKET ="CHATSYSTEMFILETRANSFER\t"+PROTOCOLVERSION+"\nSizeinBit\nFileName"; - QByteArray Data2=Data; - - QString ProtovolVersion=Data2.mid(Data.indexOf("\t")+1,Data2.indexOf("\n")-Data2.indexOf("\t")-1); - Data2.remove(0,Data2.indexOf("\n")+1);//CHATSYSTEMFILETRANSFER\tPROTOCOLVERSION - - QString FileSize=Data2.mid(0,Data2.indexOf("\n")); - Data2.remove(0,Data2.indexOf("\n")+1); - - QString FileName=Data2; - - Core->removeUnknownID(ID); - Core->addNewFileRecive(ID,FileName,FileSize); - Data2.clear(); - return Data2; - - } - else{ - // not from a other CHATSYSTEM - Core->StreamSendData(ID,HTTPPAGE); - Core->StreamClose(ID); - Core->removeUnknownID(ID); - QByteArray Data2; - Data2.clear(); - - return Data2; - } - - } - //not possible - return Data; -} - -void cProtocol::send(const COMMANDS_TAGS TAG,const qint32 ID){ - using namespace Protocol_Info; - QString ProtocolInfoTag; - QString Data=""; - switch(TAG){ - case PING: - { - ProtocolInfoTag="1000"; - break; - } - case GET_CLIENTVERSION: - { - ProtocolInfoTag="1001"; - break; - } - case GET_CLIENTNAME: - { - ProtocolInfoTag="1002"; - break; - } - case GET_USER_ONLINESTATUS: - { - ProtocolInfoTag="1003"; - break; - } - default: - { - break; - } - - } - Data.insert(0,ProtocolInfoTag); - Data.insert(0,"0004");//No PaketData - Core->StreamSendData(ID,Data); -} - -void cProtocol::send(const MESSAGES_TAGS TAG,const qint32 ID,QString Data){ - QString ProtocolInfoTag; - - switch(TAG) - { - case ECHO_OF_PING: - { - ProtocolInfoTag="0000"; - break; - } - case ANSWER_OF_GET_CLIENTVERSION: - { - ProtocolInfoTag="0001"; - break; - } - case ANSWER_OF_GET_CLIENTNAME: - { - ProtocolInfoTag="0002"; - break; - } - case CHATMESSAGE: - { - ProtocolInfoTag="0003"; - break; - } - case USER_ONLINESTATUS_ONLINE: - { - ProtocolInfoTag="0004"; - break; - } - case USER_ONLINESTATUS_OFFLINE: - case USER_ONLINESTATUS_INVISIBLE: - { - ProtocolInfoTag="0005"; - break; - } - case USER_ONLINESTATUS_WANTTOCHAT: - { - ProtocolInfoTag="0006"; - break; - } - case USER_ONLINESTATUS_AWAY: - { - ProtocolInfoTag="0007"; - break; - } - case USER_ONLINESTATUS_DONT_DISTURB: - { - ProtocolInfoTag="0008"; - break; - } - - default: - { - break; - } - } - QString temp; - - - temp.setNum(Data.length()+4,16);//hex - QString Paketlength=QString("%1").arg(temp,4,'0'); - - Data.insert(0,ProtocolInfoTag); - Data.insert(0,Paketlength); - Core->StreamSendData(ID,Data); -} diff --git a/plugins/i2pmessenger_plugin/src/Protocol.h b/plugins/i2pmessenger_plugin/src/Protocol.h deleted file mode 100644 index b1bd4d44b..000000000 --- a/plugins/i2pmessenger_plugin/src/Protocol.h +++ /dev/null @@ -1,95 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef PROTOCOL -#define PROTOCOL - -#include -#include - - -/* - First packet on connection must be: - CHATSYSTEM\tProtocolVersion\n - CHATSYSTEMFILETRANSFER\tProtocolVersion\nSizeinBit\nFileName - else - send //maybe with information about the user ??? - //maybe good for usersearch ? - - Every packet must be >= 8 Byte - 1-4 Byte = Paketlength in Byte (HEX) without the 4 Byte Paketlength - 5-8 Byte = PaketInfo - >8 Byte = PaketData -*/ - -namespace Protocol_Info{ - const QString PROTOCOLVERSION="0.2"; - const QString FIRSTPAKETCHAT="CHATSYSTEM\t"+PROTOCOLVERSION+"\n"; - const QString HTTPPAGE="
This is not a eepsite,this is a I2PMessenger Destination

\n\n\n"; -}; - -namespace PROTOCOL_TAGS{ - enum COMMANDS_TAGS{ - PING, - GET_PROTOCOLVERSION, - GET_CLIENTVERSION, - GET_CLIENTNAME, - GET_USER_ONLINESTATUS - }; - enum MESSAGES_TAGS{ - CHATMESSAGE, - ECHO_OF_PING, - ANSWER_OF_GET_CLIENTVERSION, - ANSWER_OF_GET_CLIENTNAME, - USER_ONLINESTATUS_ONLINE, - USER_ONLINESTATUS_OFFLINE, - USER_ONLINESTATUS_INVISIBLE, - USER_ONLINESTATUS_WANTTOCHAT, - USER_ONLINESTATUS_AWAY, - USER_ONLINESTATUS_DONT_DISTURB - }; - - -}; -using namespace Protocol_Info; -using namespace PROTOCOL_TAGS; -class cCore; -class cUser; -class cProtocol:public QObject{ -Q_OBJECT -public: - cProtocol(cCore* Core); - QString get_ProtocolVersion(){return PROTOCOLVERSION;}; -public slots: - QByteArray inputUnknown(const qint32 ID,const QByteArray Data); - void inputKnown(const qint32 ID, const QByteArray Data); - void send(const MESSAGES_TAGS TAG,const qint32 ID,QString Data); - void send(const COMMANDS_TAGS TAG,const qint32 ID); - void newConnectionChat(const qint32 ID); - -signals: - void eventUserChanged();//also used for newchatMessage -private: - cCore* Core; - - - -}; - -#endif diff --git a/plugins/i2pmessenger_plugin/src/SoundManager.cpp b/plugins/i2pmessenger_plugin/src/SoundManager.cpp deleted file mode 100644 index 169790704..000000000 --- a/plugins/i2pmessenger_plugin/src/SoundManager.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include "SoundManager.h" - -cSoundManager::cSoundManager() -{ - isMute=false; - reInit(); -} - -void cSoundManager::doMute(bool t) -{ - isMute=t; -} - -void cSoundManager::event_User_go_Online() -{ - if(isMute==true) return; - - if(enable_eventUser_go_Online) - QSound::play(SoundFileUser_go_Online); -} -void cSoundManager::event_User_go_Offline() -{ - if(isMute==true) return; - if(enable_eventUser_go_Offline) - QSound::play(SoundFileUser_go_Offline); -} -void cSoundManager::event_FileSend_Finished() -{ - if(isMute==true) return; - if(enable_eventFileSend_Finished) - QSound::play(SoundFileFileSend_Finished); -} -void cSoundManager::event_FileRecive_Incoming() -{ - if(isMute==true) return; - if(enable_eventFileRecive_Incoming) - QSound::play(SoundFileFileRecive_Incoming); -} - -void cSoundManager::event_FileRecive_Finished() -{ - if(isMute==true) return; - if(enable_eventFileRecive_Finished) - QSound::play(SoundFileFileRecive_Finished); -} - - -void cSoundManager::event_NewChatMessage() -{ - if(isMute==true) return; - if(enable_eventNewChatMessage) - { - QSound::play(SoundFileNewChatMessage); - - } -} - -void cSoundManager::reInit() -{ - QSettings* settings= new QSettings(QApplication::applicationDirPath()+"/application.ini",QSettings::IniFormat); - settings->beginGroup("Sound"); - settings->beginGroup("Enable"); - enable_eventUser_go_Online=settings->value("User_go_Online",false).toBool(); - enable_eventUser_go_Offline=settings->value("User_go_Offline",false).toBool(); - enable_eventFileSend_Finished=settings->value("FileSend_Finished",false).toBool(); - enable_eventFileRecive_Incoming=settings->value("FileRecive_Incoming",false).toBool(); - enable_eventFileRecive_Finished=settings->value("FileRecive_Finished",false).toBool(); - enable_eventNewChatMessage=settings->value("NewChatMessage",false).toBool(); - settings->endGroup(); - - settings->beginGroup("SoundFilePath"); - SoundFileUser_go_Online=settings->value("User_go_Online","").toString(); - SoundFileUser_go_Offline=settings->value("User_go_Offline","").toString(); - SoundFileFileSend_Finished=settings->value("FileSend_Finished","").toString(); - SoundFileFileRecive_Incoming=settings->value("FileRecive_Incoming","").toString(); - SoundFileFileRecive_Finished=settings->value("FileRecive_Finished","").toString(); - SoundFileNewChatMessage=settings->value("NewChatMessage","").toString(); - settings->endGroup(); - settings->endGroup(); - delete settings; -} - diff --git a/plugins/i2pmessenger_plugin/src/SoundManager.h b/plugins/i2pmessenger_plugin/src/SoundManager.h deleted file mode 100644 index d484503d2..000000000 --- a/plugins/i2pmessenger_plugin/src/SoundManager.h +++ /dev/null @@ -1,61 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef SOUND_MANAGER_H -#define SOUND_MANAGER_H - -#include -#include -#include - - -class cSoundManager :public QObject -{ - Q_OBJECT - public: - cSoundManager(); - - public slots: - void doMute(bool t); - void event_User_go_Online(); - void event_User_go_Offline(); - void event_FileSend_Finished(); - void event_FileRecive_Incoming(); - void event_FileRecive_Finished(); - void event_NewChatMessage(); - void reInit(); - - - private: - bool isMute; - QString SoundFileUser_go_Online; - QString SoundFileUser_go_Offline; - QString SoundFileFileSend_Finished; - QString SoundFileFileRecive_Incoming; - QString SoundFileFileRecive_Finished; - QString SoundFileNewChatMessage; - - bool enable_eventUser_go_Online; - bool enable_eventUser_go_Offline; - bool enable_eventFileSend_Finished; - bool enable_eventFileRecive_Incoming; - bool enable_eventFileRecive_Finished; - bool enable_eventNewChatMessage; -}; -#endif \ No newline at end of file diff --git a/plugins/i2pmessenger_plugin/src/User.cpp b/plugins/i2pmessenger_plugin/src/User.cpp deleted file mode 100644 index 8ff3468be..000000000 --- a/plugins/i2pmessenger_plugin/src/User.cpp +++ /dev/null @@ -1,224 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include "User.h" -#include "Protocol.h" - -cUser::cUser( cProtocol* Protocol, - QString Name, - QString I2PDestination, - qint32 I2PStream_ID - ):I2PDestination(I2PDestination) -{ - this->Protocol=Protocol; - this->Name=Name; - this->ReadyToSend=true; - this->I2PStream_ID=I2PStream_ID; - this->ConnectionStatus=OFFLINE; - this->HaveAllreadyOneChatWindow=false; - this->newUnreadMessages=false; - this->ClientName=""; - this->ClientVersion=""; - this->CurrentOnlineState=USEROFFLINE; - - this->textColor=Qt::black; - this->textFont=QFont("Comic Sans MS", 10); -} - -const QString cUser::get_Name()const{ - return this->Name; -} -const QString cUser::get_I2PDestination()const{ - return this->I2PDestination; -} -qint32 cUser::get_I2PStreamID()const{ - return this->I2PStream_ID; -} - -CONNECTIONTOUSER cUser::get_ConnectionStatus()const{ - return this->ConnectionStatus; -} - -void cUser::set_Name(QString newName){ - this->Name=newName; -} -void cUser::set_ConnectionStatus(CONNECTIONTOUSER Status){ - - this->ConnectionStatus=Status; - - if(Status==ONLINE){ - this->ConnectionStatus=Status; - //get some Infos from the CHATSYSTEM - client - Protocol->send(GET_CLIENTNAME,I2PStream_ID); - Protocol->send(GET_CLIENTVERSION,I2PStream_ID); - Protocol->send(GET_USER_ONLINESTATUS,I2PStream_ID); - //emit connectionOnline(); - } - - - if(Status==OFFLINE ||Status==ERROR) - { - I2PStream_ID=0; - this->CurrentOnlineState=USEROFFLINE; - this->ConnectionStatus=Status; - } -} -void cUser::set_I2PStreamID(qint32 ID){ - this->I2PStream_ID=ID; -} -void cUser::set_ReadyToSend(bool b){ - ReadyToSend=b; -} -void cUser::set_ProtocolVersion(QString Version){ - this->ProtocolVersion=Version; -} -const QString cUser::get_ProtocolVersion()const{ - return this->ProtocolVersion; -} - -void cUser::IncomingNewChatMessage(QString newMessage){ - this->Messages.push_back(Name+"("+ QTime::currentTime().toString("hh:mm:ss") +"): "+newMessage+"
"); - this->newUnreadMessages=true; - emit newMessageRecived(); - emit newIncomingMessageRecived(); -} -void cUser::sendChatMessage(QString Message){ - using namespace PROTOCOL_TAGS; - if(this->ReadyToSend==false)return; - - if(ConnectionStatus==ONLINE && - CurrentOnlineState != USEROFFLINE && - CurrentOnlineState != USERINVISIBLE - ){ - Protocol->send(CHATMESSAGE,I2PStream_ID,Message); - this->Messages.push_back("Me("+QTime::currentTime().toString("hh:mm:ss") +"): "+Message+"
"); - //this->Messages.push_back(Message); - emit newMessageRecived(); - } - else{ - - this->Messages.push_back("[SYSTEM]("+QTime::currentTime().toString("hh:mm:ss") +"): Sending the Message when the user come online
When you close the client the Message is lost
"); - - unsendedMessages.push_back(Message); - emit newMessageRecived(); - - } -} -void cUser::set_HaveAllreadyOneChatWindow(bool t){ - HaveAllreadyOneChatWindow=t; -} -bool cUser::getHaveAllreadyOneChatWindow() const{ - return HaveAllreadyOneChatWindow; -} -const QStringList& cUser::get_ChatMessages(){ - newUnreadMessages=false; - return Messages; -} -void cUser::sendAllunsendedMessages(){ - using namespace PROTOCOL_TAGS; - if(unsendedMessages.empty())return; - - - for(int i=0;isend(CHATMESSAGE,I2PStream_ID,unsendedMessages.at(i)); - - - - this->Messages.push_back("[SYSTEM]("+QTime::currentTime().toString("hh:mm:ss")+"): All unsended Messages were sended

"); - unsendedMessages.clear(); - this->newUnreadMessages=true; - emit newMessageRecived(); -} - -bool cUser::getHaveNewUnreadMessages(){ - return newUnreadMessages; -} - -const QString cUser::get_ClientName() const -{ - return ClientName; -} - -void cUser::set_ClientName(QString Name) -{ - ClientName=Name; -} - - -const QString cUser::get_ClientVersion() const -{ - return ClientVersion; -} - -void cUser::set_ClientVersion(QString Version) -{ - this->ClientVersion=Version; -} - -ONLINESTATE cUser::get_OnlineState() const -{ - return CurrentOnlineState; -} - -void cUser::set_OnlineState(const ONLINESTATE newState) -{ - - if(newState!=USEROFFLINE && - newState!=USERINVISIBLE){ - if(CurrentOnlineState==USEROFFLINE || CurrentOnlineState==USERINVISIBLE) - emit connectionOnline(); - this->sendAllunsendedMessages(); - } - else if(newState==USEROFFLINE || newState==USERINVISIBLE){ - if(newState!=CurrentOnlineState) - emit connectionOffline(); - - } - - this->CurrentOnlineState=newState; - emit OnlineStateChanged(); -} - -QColor cUser::get_textColor() -{ - return textColor; -} - -void cUser::set_textColor(QColor textColor) -{ - this->textColor=textColor; -} - -void cUser::set_textFont(QFont textFont) -{ - this->textFont=textFont; -} - -QFont cUser::get_textFont() -{ - return textFont; -} - -void cUser::IncomingMessageFromSystem(QString newMessage) -{ - this->Messages.push_back("[System]("+ QTime::currentTime().toString("hh:mm:ss") +"): "+newMessage+"
"); - this->newUnreadMessages=true; - emit newMessageRecived(); - emit newIncomingMessageRecived(); -} \ No newline at end of file diff --git a/plugins/i2pmessenger_plugin/src/User.h b/plugins/i2pmessenger_plugin/src/User.h deleted file mode 100644 index fa2be12e2..000000000 --- a/plugins/i2pmessenger_plugin/src/User.h +++ /dev/null @@ -1,127 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef USER_H -#define USER_H - -#include -#include -#include - - -namespace User -{ - enum CONNECTIONTOUSER{ - OFFLINE, - ONLINE, - TRYTOCONNECT, - ERROR - }; - - enum ONLINESTATE{ - USERONLINE, - USEROFFLINE, - USERINVISIBLE, - USERWANTTOCHAT, - USERAWAY, - USERDONT_DISTURB, - USERTRYTOCONNECT - }; - -}//namespace user - -using namespace User; -class cProtocol; -class cUser: public QObject -{ - Q_OBJECT - public: - cUser( cProtocol* Protocol, - QString Name, - QString I2PDestination, - qint32 I2PStream_ID - ); - - const QString get_Name()const; - const QString get_I2PDestination()const; - qint32 get_I2PStreamID()const; - const QString get_ProtocolVersion()const; - const QString get_ClientName()const; - const QString get_ClientVersion()const; - QColor get_textColor(); - QFont get_textFont(); - - CONNECTIONTOUSER get_ConnectionStatus()const; - ONLINESTATE get_OnlineState()const; - - const QStringList &get_ChatMessages(); - bool getHaveAllreadyOneChatWindow()const; - bool getHaveNewUnreadMessages(); - - void set_ConnectionStatus(CONNECTIONTOUSER Status); - void set_OnlineState(const ONLINESTATE newState); - void set_Name(QString newName); - void set_I2PStreamID(qint32 ID); - void set_ReadyToSend(bool b); - void set_ProtocolVersion(QString Version); - void set_HaveAllreadyOneChatWindow(bool t); - void set_ClientName(QString Name); - void set_ClientVersion(QString Version); - void IncomingNewChatMessage(QString newMessage); - void IncomingMessageFromSystem(QString newMessage); - - void set_textColor(QColor textColor); - void set_textFont(QFont textFont); - - public slots: - void sendChatMessage(QString Message); - - signals: - void OnlineStateChanged(); - void newMessageRecived(); - void newIncomingMessageRecived(); - void connectionOnline(); - void connectionOffline(); - private: - bool HaveAllreadyOneChatWindow; - bool newUnreadMessages; - void sendAllunsendedMessages(); - - const QString I2PDestination; - - QString Name; - qint32 I2PStream_ID; - - bool ReadyToSend; - - CONNECTIONTOUSER ConnectionStatus; - ONLINESTATE CurrentOnlineState; - QString ProtocolVersion; - QString ClientName; - QString ClientVersion; - QStringList Messages; - QStringList unsendedMessages; - cProtocol* Protocol; - - //Settings for the chatwindow - QColor textColor; - QFont textFont; -}; - -#endif diff --git a/plugins/i2pmessenger_plugin/src/UserConnectThread.cpp b/plugins/i2pmessenger_plugin/src/UserConnectThread.cpp deleted file mode 100644 index dc2a3d118..000000000 --- a/plugins/i2pmessenger_plugin/src/UserConnectThread.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include "UserConnectThread.h" - - -cUserConnectThread::cUserConnectThread(cCore* core,quint32 timeToWait=30000) -{ this->core=core; - this->timeToWait=timeToWait; - this->timer= new QTimer(); - connect(timer, SIGNAL(timeout()), this, SLOT(update())); -} - -cUserConnectThread::~cUserConnectThread() -{ - stop(); - disconnect(timer, SIGNAL(timeout()), this, SLOT(update())); -} - -void cUserConnectThread::update() -{ - QList users=core->get_userList(); - for(int i=0;iget_ConnectionStatus()==OFFLINE){ - if(core->isThisDestinationInunknownConnections(users.at(i)->get_I2PDestination())==false){ - users.at(i)->set_ConnectionStatus(TRYTOCONNECT); - users.at(i)->set_I2PStreamID(core->StreamConnect(users.at(i)->get_I2PDestination())); - - //users.at(i)->set_I2PStreamID(emit doStreamConnect(users.at(i)->get_I2PDestination())); - } - } - } -} -void cUserConnectThread::start() -{ - timer->start(timeToWait); -} -void cUserConnectThread::stop() -{ - timer->stop(); - -} diff --git a/plugins/i2pmessenger_plugin/src/UserConnectThread.h b/plugins/i2pmessenger_plugin/src/UserConnectThread.h deleted file mode 100644 index 1156e1123..000000000 --- a/plugins/i2pmessenger_plugin/src/UserConnectThread.h +++ /dev/null @@ -1,52 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef USERCONNECTTHREAD_H -#define USERCONNECTTHREAD_H - -#include -#include - -#include "User.h" -#include "Core.h" - -class cCore; -class cUserConnectThread :public QObject -{ - Q_OBJECT - - public: - cUserConnectThread(cCore* core,quint32 timeToWait); - ~cUserConnectThread(); - //void run(); - void stop(); - void start(); - -signals: - QString doStreamConnect ( QString Destination ); - - private: - cCore* core; - QTimer* timer; - quint32 timeToWait; - - private slots: - void update(); -}; -#endif diff --git a/plugins/i2pmessenger_plugin/templates/cpp b/plugins/i2pmessenger_plugin/templates/cpp deleted file mode 100644 index 8a1dfbe13..000000000 --- a/plugins/i2pmessenger_plugin/templates/cpp +++ /dev/null @@ -1,19 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ diff --git a/plugins/i2pmessenger_plugin/templates/h b/plugins/i2pmessenger_plugin/templates/h deleted file mode 100644 index 8a1dfbe13..000000000 --- a/plugins/i2pmessenger_plugin/templates/h +++ /dev/null @@ -1,19 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by normal * - * normal@Desktop2 * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ diff --git a/plugins/linkscloud_plugin/AddLinksDialog.cpp b/plugins/linkscloud_plugin/AddLinksDialog.cpp deleted file mode 100644 index 1041942a4..000000000 --- a/plugins/linkscloud_plugin/AddLinksDialog.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************** - * RetroShare is distributed under the following license: - * - * Copyright (C) 2008 Robert Fernie - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - ****************************************************************/ - -#include "AddLinksDialog.h" -#include "../../retroshare-gui/src/gui/RetroShareLink.h" -#include - -#include - -/* Images for context menu icons */ -#define IMAGE_EXPORTFRIEND ":/images/exportpeers_16x16.png" -#define IMAGE_GREAT ":/images/filerating5.png" -#define IMAGE_GOOD ":/images/filerating4.png" -#define IMAGE_OK ":/images/filerating3.png" -#define IMAGE_SUX ":/images/filerating2.png" -#define IMAGE_BADLINK ":/images/filerating1.png" - -/** Constructor */ -AddLinksDialog::AddLinksDialog(QString url, QWidget *parent) -: QDialog(parent) -{ - /* Invoke the Qt Designer generated object setup routine */ - ui.setupUi(this); - - setAttribute ( Qt::WA_DeleteOnClose, true ); - - /* add button */ - connect(ui.addLinkButton, SIGNAL(clicked()), this, SLOT(addLinkComment())); - connect(ui.closepushButton, SIGNAL(clicked()), this, SLOT(close())); - - connect( ui.anonBox, SIGNAL( stateChanged ( int ) ), this, SLOT( load ( void ) ) ); - - ui.linkLineEdit->setText(url); - - RetroShareLink link(url); - - if(link.valid() && link.type() == RetroShareLink::TYPE_FILE) - ui.titleLineEdit->setText(link.name()); - else - ui.titleLineEdit->setText("New File"); - - load(); - - /* Hide platform specific features */ -#ifdef Q_WS_WIN - -#endif -} - -int AddLinksDialog::IndexToScore(int index) -{ - if ((index == -1) || (index > 4)) - return 0; - int score = 2 - index; - return score; -} - -void AddLinksDialog::addLinkComment() -{ - /* get the title / link / comment */ - QString title = ui.titleLineEdit->text(); - QString link = ui.linkLineEdit->text(); - QString comment = ui.linkTextEdit->toPlainText(); - int32_t score = AddLinksDialog::IndexToScore(ui.scoreBox->currentIndex()); - - if ((link == "") || (title == "")) - { - QMessageBox::warning(NULL, tr("Add Link Failure"), tr("Missing Link and/or Title"), QMessageBox::Ok); - /* can't do anything */ - return; - } - - /* add it either way */ - if (ui.anonBox->isChecked()) - { - rsRanks->anonRankMsg("", link.toStdWString(), title.toStdWString()); - } - else - { - rsRanks->newRankMsg(link.toStdWString(), - title.toStdWString(), - comment.toStdWString(), score); - } - - close(); -} - -void AddLinksDialog::load() -{ - if (ui.anonBox->isChecked()) - { - - /* disable comment + score */ - ui.scoreBox->setEnabled(false); - ui.linkTextEdit->setEnabled(false); - - /* done! */ - return; - } - else - { - /* enable comment + score */ - ui.scoreBox->setEnabled(true); - ui.linkTextEdit->setEnabled(true); - } -} diff --git a/plugins/linkscloud_plugin/AddLinksDialog.h b/plugins/linkscloud_plugin/AddLinksDialog.h deleted file mode 100644 index 9e4451117..000000000 --- a/plugins/linkscloud_plugin/AddLinksDialog.h +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************** - * RetroShare GUI is distributed under the following license: - * - * Copyright (C) 2008 Robert Fernie - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - ****************************************************************/ - -#ifndef _ADDLINKS_DIALOG_H -#define _ADDLINKS_DIALOG_H - -#include "ui_AddLinksDialog.h" - -class AddLinksDialog : public QDialog -{ - Q_OBJECT - -public: - /** Default Constructor */ - AddLinksDialog(QString url, QWidget *parent = 0); - /** Default Destructor */ - - static int IndexToScore(int index); - -public slots: - void addLinkComment(); - - void load(); - -private: - /** Qt Designer generated object */ - Ui::AddLinksDialog ui; -}; - -#endif diff --git a/plugins/linkscloud_plugin/AddLinksDialog.ui b/plugins/linkscloud_plugin/AddLinksDialog.ui deleted file mode 100644 index 6a3dbeeac..000000000 --- a/plugins/linkscloud_plugin/AddLinksDialog.ui +++ /dev/null @@ -1,289 +0,0 @@ - - - AddLinksDialog - - - - 0 - 0 - 614 - 415 - - - - Add Link - - - - :/images/rstray3.png:/images/rstray3.png - - - - 0 - - - 0 - - - - - - 16777215 - 52 - - - - QFrame#frame{background-image: url(:/images/connect/connectFriendBanner.png);} - - - - QFrame::NoFrame - - - QFrame::Raised - - - - - - - 32 - 32 - - - - - - - :/images/irkick.png - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'DejaVu Sans'; font-size:18pt; font-weight:600; color:#ffffff;">Add Link to Cloud</span></p></body></html> - - - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - - - Cancel - - - - - - - Add Link - - - false - - - true - - - - - - - Qt::Horizontal - - - - 375 - 20 - - - - - - - - Add a new Link - - - - 1 - - - - - - - - - Title: - - - - - - - Url: - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - - 16777215 - 40 - - - - QFrame#frame_3{ -background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, -stop:0 #FEFEFE, stop:1 #E8E8E8); - -border: 1px solid #CCCCCC;} - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Add Anonymous Link - - - - - - - - +2 Great! - - - - :/images/filerating5.png:/images/filerating5.png - - - - - +1 Good - - - - :/images/filerating4.png:/images/filerating4.png - - - - - 0 Okay - - - - :/images/filerating3.png:/images/filerating3.png - - - - - -1 Sux - - - - :/images/filerating2.png:/images/filerating2.png - - - - - -2 Bad Link - - - - :/images/filerating1.png:/images/filerating1.png - - - - - - - - Qt::Horizontal - - - - 299 - 20 - - - - - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - - - - - - - - - - - - - - - diff --git a/plugins/linkscloud_plugin/LinksDialog.cpp b/plugins/linkscloud_plugin/LinksDialog.cpp deleted file mode 100644 index 33d7a7453..000000000 --- a/plugins/linkscloud_plugin/LinksDialog.cpp +++ /dev/null @@ -1,1055 +0,0 @@ -/**************************************************************** - * RetroShare is distributed under the following license: - * - * Copyright (C) 2008 Robert Fernie - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - ****************************************************************/ - -#include -#include -#include -#include -#include - -#include "LinksDialog.h" -#include "../../retroshare-gui/src/gui/RetroShareLink.h" -#include "../../retroshare-gui/src/gui/AddLinksDialog.h" -#include -#include -#include - -#include - - -/* Images for context menu icons */ -#define IMAGE_EXPORTFRIEND ":/images/exportpeers_16x16.png" -#define IMAGE_GREAT ":/images/filerating5.png" -#define IMAGE_GOOD ":/images/filerating4.png" -#define IMAGE_OK ":/images/filerating3.png" -#define IMAGE_SUX ":/images/filerating2.png" -#define IMAGE_BADLINK ":/images/filerating1.png" -#define IMAGE_NOCOMMENTRATING ":/images/filerating0.png" -#define IMAGE_DOWNLOAD ":/images/download16.png" - -/****** - * #define LINKS_DEBUG 1 - *****/ - -/** Constructor */ -LinksDialog::LinksDialog(QWidget *parent) -: QWidget(parent) -{ - /* Invoke the Qt Designer generated object setup routine */ - ui.setupUi(this); - - connect( ui.linkTreeWidget, SIGNAL( customContextMenuRequested( QPoint ) ), this, SLOT( linkTreeWidgetCostumPopupMenu( QPoint ) ) ); - - - /* link combos */ - connect( ui.rankComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( changedSortRank( int ) ) ); - connect( ui.periodComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( changedSortPeriod( int ) ) ); - connect( ui.fromComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( changedSortFrom( int ) ) ); - connect( ui.topComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( changedSortTop( int ) ) ); - - /* add button */ - connect( ui.addButton, SIGNAL( clicked( void ) ), this, SLOT( addLinkComment( void ) ) ); - connect( ui.expandButton, SIGNAL( clicked( void ) ), this, SLOT( toggleWindows( void ) ) ); - - connect( ui.pushButton, SIGNAL( clicked( ) ), this, SLOT( addNewLink( ) ) ); - - connect( ui.linkTreeWidget, SIGNAL( currentItemChanged ( QTreeWidgetItem *, QTreeWidgetItem * ) ), - this, SLOT( changedItem ( QTreeWidgetItem *, QTreeWidgetItem * ) ) ); - - connect( ui.linkTreeWidget, SIGNAL( itemDoubleClicked ( QTreeWidgetItem *, int ) ), - this, SLOT( openLink ( QTreeWidgetItem *, int ) ) ); - - connect( ui.anonBox, SIGNAL( stateChanged ( int ) ), this, SLOT( checkAnon ( void ) ) ); - - connect( ui.linklabel, SIGNAL(anchorClicked(const QUrl &)), SLOT(anchorClicked(const QUrl &))); - - - mStart = 0; - - - /* Set header resize modes and initial section sizes */ - QHeaderView * _header = ui.linkTreeWidget->header () ; - _header->setResizeMode (0, QHeaderView::Interactive); - _header->setResizeMode (1, QHeaderView::Interactive); - _header->setResizeMode (2, QHeaderView::Interactive); - - _header->resizeSection ( 0, 400 ); - _header->resizeSection ( 1, 60 ); - _header->resizeSection ( 2, 150 ); - - ui.linkTreeWidget->setSortingEnabled(true); - - ui.linklabel->setMinimumWidth(20); - - - /* Set a GUI update timer - much cleaner than - * doing everything through the notify agent - */ - - QTimer *timer = new QTimer(this); - timer->connect(timer, SIGNAL(timeout()), this, SLOT(checkUpdate())); - timer->start(1000); - - /* Hide platform specific features */ -#ifdef Q_WS_WIN - -#endif - -} - -void LinksDialog::checkUpdate() -{ - /* update */ - if (!rsRanks) - return; - - if (rsRanks->updated()) - { - updateLinks(); - } - - return; -} - -void LinksDialog::linkTreeWidgetCostumPopupMenu( QPoint point ) -{ - - QMenu contextMnu( this ); - - QAction *voteupAct = new QAction(QIcon(IMAGE_EXPORTFRIEND), tr( "Share Link Anonymously" ), &contextMnu ); - connect( voteupAct , SIGNAL( triggered() ), this, SLOT( voteup_anon() ) ); - - - QMenu *voteMenu = new QMenu( tr("Vote on Link"), &contextMnu ); - voteMenu->setIcon(QIcon(IMAGE_EXPORTFRIEND)); - - QAction *vote_p2 = new QAction( QIcon(IMAGE_GREAT), "[+2] Great", &contextMnu ); - connect( vote_p2 , SIGNAL( triggered() ), this, SLOT( voteup_p2() ) ); - voteMenu->addAction(vote_p2); - QAction *vote_p1 = new QAction( QIcon(IMAGE_GOOD), "[+1] Good", &contextMnu ); - connect( vote_p1 , SIGNAL( triggered() ), this, SLOT( voteup_p1() ) ); - voteMenu->addAction(vote_p1); - QAction *vote_p0 = new QAction( QIcon(IMAGE_OK), "[+0] Okay", &contextMnu ); - connect( vote_p0 , SIGNAL( triggered() ), this, SLOT( voteup_p0() ) ); - voteMenu->addAction(vote_p0); - QAction *vote_m1 = new QAction( QIcon(IMAGE_SUX), "[-1] Sux", &contextMnu ); - connect( vote_m1 , SIGNAL( triggered() ), this, SLOT( voteup_m1() ) ); - voteMenu->addAction(vote_m1); - QAction *vote_m2 = new QAction( QIcon(IMAGE_BADLINK), "[-2] BAD LINK", &contextMnu ); - connect( vote_m2 , SIGNAL( triggered() ), this, SLOT( voteup_m2() ) ); - voteMenu->addAction(vote_m2); - - QAction *downloadAct = new QAction(QIcon(IMAGE_DOWNLOAD), tr("Download"), &contextMnu); - connect(downloadAct, SIGNAL(triggered()), this, SLOT(downloadSelected())); - - contextMnu.addAction(voteupAct); - contextMnu.addSeparator(); - contextMnu.addMenu(voteMenu); - contextMnu.addSeparator(); - contextMnu.addAction(downloadAct); - - contextMnu.exec(QCursor::pos()); -} - -void LinksDialog::changedSortRank( int index ) -{ - /* update */ - if (!rsRanks) - return; - - /* translate */ - uint32_t type = 0; - switch (index) - { - case 1: - type = RS_RANK_TIME; - break; - case 2: - type = RS_RANK_SCORE; - break; - default: - case 0: - type = RS_RANK_ALG; - break; - } - - if (type) - { - rsRanks->setSortMethod(type); - } - updateLinks(); -} - -void LinksDialog::changedSortPeriod( int index ) -{ - /* update */ - if (!rsRanks) - return; - - /* translate */ - uint32_t period = 0; - switch (index) - { - case 1: - period = 60 * 60 * 24 * 7; /* WEEK */ - break; - case 2: - period = 60 * 60 * 24; /* DAY */ - break; - default: - case 0: - period = 60 * 60 * 24 * 30; /* MONTH */ - break; - } - - if (period) - { - rsRanks->setSortPeriod(period); - } - updateLinks(); -} - -void LinksDialog::changedSortFrom( int index ) -{ - /* update */ - if (!rsRanks) - return; - - std::list peers; - - /* translate */ - switch (index) - { - default: - case 0: - break; - case 1: - peers.push_back(rsPeers->getOwnId()); - break; - } - - if (peers.size() < 1) - { - rsRanks->clearPeerFilter(); - } - else - { - rsRanks->setPeerFilter(peers); - } - updateLinks(); -} - -#define ENTRIES_PER_BLOCK 100 - -void LinksDialog::changedSortTop( int index ) -{ - /* update */ - if (!rsRanks) - return; - - std::list peers; - - /* translate */ - switch (index) - { - default: - case 0: - mStart = 0; - break; - case 1: - mStart = 1 * ENTRIES_PER_BLOCK; - break; - case 2: - mStart = 2 * ENTRIES_PER_BLOCK; - break; - case 3: - mStart = 3 * ENTRIES_PER_BLOCK; - break; - case 4: - mStart = 4 * ENTRIES_PER_BLOCK; - break; - case 5: - mStart = -1; - break; - } - updateLinks(); -} - - -/* get the list of Links from the RsRanks. */ -void LinksDialog::updateLinks() -{ - - std::list rids; - std::list::iterator rit; - std::list::iterator cit; - -#ifdef LINKS_DEBUG - std::cerr << "LinksDialog::updateLinks()" << std::endl; -#endif - - /* Work out the number/entries to show */ - uint32_t count = rsRanks->getRankingsCount(); - uint32_t start; - - uint32_t entries = ENTRIES_PER_BLOCK; - if (count < entries) - { - entries = count; - } - - if (mStart == -1) - { - /* backwards */ - start = count-entries; - } - else - { - start = mStart; - if (start + entries > count) - { - start = count - entries; - } - } - - /* get a link to the table */ - QTreeWidget *linkWidget = ui.linkTreeWidget; - QList items; - - rsRanks->getRankings(start, entries, rids); - float maxRank = rsRanks->getMaxRank(); - - for(rit = rids.begin(); rit != rids.end(); rit++) - { - RsRankDetails detail; - if (!rsRanks->getRankDetails(*rit, detail)) - { - continue; - } - - /* create items */ - QTreeWidgetItem *item = new QTreeWidgetItem((QTreeWidget*)0); - - /* (0) Title */ - { - item -> setText(0, QString::fromStdWString(detail.title)); - item -> setSizeHint(0, QSize( 20,20 ) ); - - /* Bold and bigger */ - /*QFont font = item->font(0); - font.setBold(true); - font.setPointSize(font.pointSize() + 2); - item->setFont(0, font);*/ - } - - /* (1) Rank */ - { - std::ostringstream out; - out << 100 * (detail.rank / (maxRank + 0.01)); - item -> setText(1, QString::fromStdString(out.str())); - item -> setSizeHint(1, QSize( 20,20 ) ); - - /* Bold and bigger */ - /*QFont font = item->font(1); - font.setBold(true); - font.setPointSize(font.pointSize() + 2); - item->setFont(1, font);*/ - } - - /* (2) Link */ - { - item -> setText(2, QString::fromStdWString(detail.link)); - item -> setSizeHint(2, QSize( 20,20 ) ); - - /* Bold and bigger */ - /*QFont font = item->font(2); - font.setBold(true); - font.setPointSize(font.pointSize() + 2); - item->setFont(2, font);*/ - } - - /* (3) Date */ - /*{ - QDateTime qtime; - qtime.setTime_t(it->lastPost); - QString timestamp = qtime.toString("yyyy-MM-dd hh:mm:ss"); - item -> setText(3, timestamp); - }*/ - - - /* (4) rid */ - item -> setText(4, QString::fromStdString(detail.rid)); - - - /* add children */ - int i = 0; - for(cit = detail.comments.begin(); - cit != detail.comments.end(); cit++, i++) - { - /* create items */ - QTreeWidgetItem *child = new QTreeWidgetItem((QTreeWidget*)0); - - QString commentText; - QString peerScore; - if (cit->score > 1) - { - peerScore = "[+2] "; - child -> setIcon(0,(QIcon(IMAGE_GREAT))); - item -> setIcon(0,(QIcon(IMAGE_GREAT))); - //peerScore = "[+2 Great Link] "; - } - else if (cit->score == 1) - { - peerScore = "[+1] "; - child -> setIcon(0,(QIcon(IMAGE_GOOD))); - item -> setIcon(0,(QIcon(IMAGE_GOOD))); - //peerScore = "[+1 Good] "; - } - else if (cit->score == 0) - { - peerScore = "[+0] "; - child -> setIcon(0,(QIcon(IMAGE_OK))); - item -> setIcon(0,(QIcon(IMAGE_OK))); - //peerScore = "[+0 Okay] "; - } - else if (cit->score == -1) - { - peerScore = "[-1] "; - child -> setIcon(0,(QIcon(IMAGE_SUX))); - item -> setIcon(0,(QIcon(IMAGE_SUX))); - //peerScore = "[-1 Not Worth It] "; - } - else //if (cit->score < -1) - { - peerScore = "[-2 BAD] "; - child -> setIcon(0,(QIcon(IMAGE_BADLINK))); - item -> setIcon(0,(QIcon(IMAGE_BADLINK))); - //peerScore = "[-2 BAD Link] "; - } - - /* (0) Comment */ - if (cit->comment != L"") - { - commentText = peerScore + QString::fromStdWString(cit->comment); - } - else - { - commentText = peerScore + "No Comment"; - } - child -> setText(0, commentText); - - /* (2) Peer / Date */ - { - QDateTime qtime; - qtime.setTime_t(cit->timestamp); - QString timestamp = qtime.toString("yyyy-MM-dd hh:mm:ss"); - - QString peerLabel = QString::fromStdString(rsPeers->getPeerName(cit->id)); - if (peerLabel == "") - { - peerLabel = "<"; - peerLabel += QString::fromStdString(cit->id); - peerLabel += ">"; - } - peerLabel += " "; - - peerLabel += timestamp; - child -> setText(2, peerLabel); - - } - - /* (4) Id */ - child -> setText(4, QString::fromStdString(cit->id)); - - if (i % 2 == 1) - { - /* set to light gray background */ - child->setBackground(0,QBrush(Qt::lightGray)); - child->setBackground(1,QBrush(Qt::lightGray)); - child->setBackground(2,QBrush(Qt::lightGray)); - } - - /* push to items */ - item->addChild(child); - } - - /* add to the list */ - items.append(item); - } - - /* remove old items */ - linkWidget->clear(); - linkWidget->setColumnCount(3); - - /* add the items in! */ - linkWidget->insertTopLevelItems(0, items); - - linkWidget->update(); /* update display */ - - -} - -void LinksDialog::openLink ( QTreeWidgetItem * item, int ) -{ -#ifdef LINKS_DEBUG - std::cerr << "LinksDialog::openLink()" << std::endl; -#endif - - /* work out the ids */ - if (!item) - { - -#ifdef LINKS_DEBUG - std::cerr << "LinksDialog::openLink() Failed Item" << std::endl; -#endif - return; - } - - std::string rid; - std::string pid; - - QTreeWidgetItem *parent = item->parent(); - if (parent) - { - /* a child comment -> ignore double click */ -#ifdef LINKS_DEBUG - std::cerr << "LinksDialog::openLink() Failed Child" << std::endl; -#endif - return; - } - -#ifdef LINKS_DEBUG - std::cerr << "LinksDialog::openLink() " << (item->text(2)).toStdString() << std::endl; -#endif - /* open a browser */ - QUrl url(item->text(2)); - QDesktopServices::openUrl ( url ); - - /* close expansion */ - bool state = item->isExpanded(); - item->setExpanded(!state); -} - -void LinksDialog::changedItem(QTreeWidgetItem *curr, QTreeWidgetItem *) -{ - /* work out the ids */ - if (!curr) - { - updateComments("", ""); - return; - } - - std::string rid; - std::string pid; - - QTreeWidgetItem *parent = curr->parent(); - if (parent) - { - rid = (parent->text(4)).toStdString(); - pid = (curr->text(4)).toStdString(); - -#ifdef LINKS_DEBUG - std::cerr << "LinksDialog::changedItem() Rid: " << rid << " Pid: " << pid; - std::cerr << std::endl; -#endif - - updateComments(rid, pid); - } - else - { - rid = (curr->text(4)).toStdString(); - -#ifdef LINKS_DEBUG - std::cerr << "LinksDialog::changedItem() Rid: " << rid << " Pid: NULL"; - std::cerr << std::endl; -#endif - - updateComments(rid, ""); - } -} - -void LinksDialog::checkAnon() -{ - changedItem(ui.linkTreeWidget->currentItem(), NULL); -} - - -int IndexToScore(int index) -{ - if ((index == -1) || (index > 4)) - return 0; - int score = 2 - index; - return score; -} - -int ScoreToIndex(int score) -{ - if ((score < -2) || (score > 2)) - return 2; - int index = 2 - score; - return index; -} - - -/* get the list of Links from the RsRanks. */ -void LinksDialog::updateComments(std::string rid, std::string ) -{ - std::list::iterator cit; - - - if (ui.anonBox->isChecked()) - { - /* empty everything */ - ui.titleLineEdit->setText(""); - ui.linkLineEdit->setText(""); - ui.linkTextEdit->setText(""); - ui.scoreBox->setCurrentIndex(ScoreToIndex(0)); - mLinkId = rid; /* must be set for Context Menu */ - - /* disable comment + score */ - ui.scoreBox->setEnabled(false); - ui.linkTextEdit->setEnabled(false); - - /* done! */ - return; - } - else - { - /* enable comment + score */ - ui.scoreBox->setEnabled(true); - ui.linkTextEdit->setEnabled(true); - } - - - RsRankDetails detail; - if ((rid == "") || (!rsRanks->getRankDetails(rid, detail))) - { - /* clear it up */ - ui.titleLineEdit->setText(""); - ui.linkLineEdit->setText(""); - ui.linkTextEdit->setText(""); - ui.scoreBox->setCurrentIndex(ScoreToIndex(0)); - mLinkId = rid; - return; - } - - - /* set Link details */ - ui.titleLineEdit->setText(QString::fromStdWString(detail.title)); - ui.linkLineEdit->setText(QString::fromStdWString(detail.link)); - ui.linklabel->setHtml(" " + QString::fromStdWString(detail.link) +""); - - - if (mLinkId == rid) - { - /* leave comments */ - //ui.linkTextEdit->setText(""); - return; - } - - mLinkId = rid; - - /* Add your text to the comment */ - std::string ownId = rsPeers->getOwnId(); - - for(cit = detail.comments.begin(); cit != detail.comments.end(); cit++) - { - if (cit->id == ownId) - break; - } - - if (cit != detail.comments.end()) - { - QString comment = QString::fromStdWString(cit->comment); - ui.linkTextEdit->setText(comment); - ui.scoreBox->setCurrentIndex(ScoreToIndex(cit->score)); - } - else - { - ui.linkTextEdit->setText(""); - ui.scoreBox->setCurrentIndex(ScoreToIndex(0)); - - } - - return; -} - -void LinksDialog::addLinkComment( void ) -{ - /* get the title / link / comment */ - QString title = ui.titleLineEdit->text(); - QString link = ui.linkLineEdit->text(); - QString comment = ui.linkTextEdit->toPlainText(); - int32_t score = IndexToScore(ui.scoreBox->currentIndex()); - - if ((mLinkId == "") || (ui.anonBox->isChecked())) - { - if ((link == "") || (title == "")) - { - QMessageBox::warning ( NULL, "Add Link Failure", "Missing Link and/or Title", QMessageBox::Ok); - /* can't do anything */ - return; - } - - /* add it either way */ - if (ui.anonBox->isChecked()) - { - rsRanks->anonRankMsg("", link.toStdWString(), title.toStdWString()); - } - else - { - rsRanks->newRankMsg( - link.toStdWString(), - title.toStdWString(), - comment.toStdWString(), score); - } - - updateLinks(); - return; - } - - /* get existing details */ - - RsRankDetails detail; - if (!rsRanks->getRankDetails(mLinkId, detail)) - { - /* strange error! */ - QMessageBox::warning ( NULL, "Add Link Failure", "Missing Link Data", QMessageBox::Ok); - return; - } - - if (link.toStdWString() == detail.link) /* same link! - we can add a comment */ - { - if (comment == "") /* no comment! */ - { - QMessageBox::warning ( NULL, "Add Link Failure", "Missing Comment", QMessageBox::Ok); - return; - } - - rsRanks->updateComment(mLinkId, - comment.toStdWString(), - score); - } - else - { - QMessageBox::StandardButton sb = QMessageBox::Yes; - - if ((title.toStdWString() == detail.title) /* same title! - wrong */ - || (title == "")) - { - sb = QMessageBox::question ( NULL, "Link Title Not Changed", - "Do you want to continue?", - (QMessageBox::Yes | QMessageBox::No)); - } - - /* add Link! */ - if (sb == QMessageBox::Yes) - { - rsRanks->newRankMsg( - link.toStdWString(), - title.toStdWString(), - comment.toStdWString(), - score); - } - } - updateLinks(); - return; -} - -void LinksDialog::toggleWindows( void ) -{ - /* if msg header visible -> hide by changing splitter - */ - - QList sizeList = ui.msgSplitter->sizes(); - QList::iterator it; - - int listSize = 0; - int msgSize = 0; - int i = 0; - - for(it = sizeList.begin(); it != sizeList.end(); it++, i++) - { - if (i == 0) - { - listSize = (*it); - } - else if (i == 1) - { - msgSize = (*it); - } - } - - int totalSize = listSize + msgSize; - - bool toShrink = true; - if (msgSize < (int) totalSize / 10) - { - toShrink = false; - } - - QList newSizeList; - if (toShrink) - { - newSizeList.push_back(totalSize); - newSizeList.push_back(0); - ui.expandButton->setIcon(QIcon(QString(":/images/edit_add24.png"))); - ui.expandButton->setToolTip(tr("Expand")); - } - else - { - newSizeList.push_back(totalSize * 3/4); - newSizeList.push_back(totalSize * 1/4); - ui.expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png"))); - ui.expandButton->setToolTip(tr("Hide")); - } - - ui.msgSplitter->setSizes(newSizeList); - return; -} - - -QTreeWidgetItem *LinksDialog::getCurrentLine() -{ - /* get the current, and extract the Id */ - - /* get a link to the table */ - QTreeWidget *peerWidget = ui.linkTreeWidget; - QTreeWidgetItem *item = peerWidget -> currentItem(); - if (!item) - { -#ifdef LINKS_DEBUG - std::cerr << "Invalid Current Item" << std::endl; -#endif - return NULL; - } - -#ifdef LINKS_DEBUG - /* Display the columns of this item. */ - std::ostringstream out; - out << "CurrentPeerItem: " << std::endl; - - for(int i = 1; i < 6; i++) - { - QString txt = item -> text(i); - out << "\t" << i << ":" << txt.toStdString() << std::endl; - } - std::cerr << out.str(); -#endif - - return item; -} - -void LinksDialog::voteup_anon() -{ - //QTreeWidgetItem *c = getCurrentLine(); - - if (mLinkId == "") - { - return; - } - - RsRankDetails detail; - if (!rsRanks->getRankDetails(mLinkId, detail)) - { - /* not there! */ - return; - } - - QString link = QString::fromStdWString(detail.link); -#ifdef LINKS_DEBUG - std::cerr << "LinksDialog::voteup_anon() : " << link.toStdString() << std::endl; -#endif - // need a proper anon sharing option. - rsRanks->anonRankMsg(mLinkId, detail.link, detail.title); -} - - - - -void LinksDialog::voteup_score(int score) -{ - if (mLinkId == "") - { - return; - } - - RsRankDetails detail; - if (!rsRanks->getRankDetails(mLinkId, detail)) - { - /* not there! */ - return; - } - - QString link = QString::fromStdWString(detail.link); - std::wstring comment; -#ifdef LINKS_DEBUG - std::cerr << "LinksDialog::voteup_score() : " << link.toStdString() << std::endl; -#endif - - - std::list::iterator cit; - /* Add your text to the comment */ - std::string ownId = rsPeers->getOwnId(); - - for(cit = detail.comments.begin(); cit != detail.comments.end(); cit++) - { - if (cit->id == ownId) - break; - } - - if (cit != detail.comments.end()) - { - comment = cit->comment; - } - - rsRanks->updateComment(mLinkId, comment, score); -} - - -void LinksDialog::voteup_p2() -{ - voteup_score(2); -} - -void LinksDialog::voteup_p1() -{ - voteup_score(1); -} - -void LinksDialog::voteup_p0() -{ - voteup_score(0); -} - -void LinksDialog::voteup_m1() -{ - voteup_score(-1); -} - -void LinksDialog::voteup_m2() -{ - voteup_score(-2); -} - -void LinksDialog::downloadSelected() -{ - if (mLinkId == "") - { - return; - } - - RsRankDetails detail; - if (!rsRanks->getRankDetails(mLinkId, detail)) - { - /* not there! */ - return; - } - - QString link = QString::fromStdWString(detail.link); - std::wstring comment; -#ifdef LINKS_DEBUG - std::cerr << "LinksDialog::downloadSelected() : " << link.toStdString() << std::endl; -#endif - - RetroShareLink rslink(QString::fromStdWString(detail.link)); - - if(!rslink.valid() || rslink.type() != RetroShareLink::TYPE_FILE) - { - QMessageBox::critical(NULL,"Badly formed link","This link is badly formed. Can't parse/use it. This is a bug. Please contact the developers.") ; - return ; - } - - /* retrieve all peers id for this file */ - FileInfo info; - rsFiles->FileDetails(rslink.hash().toStdString(), 0, info); - - std::list srcIds; - std::list::iterator pit; - for (pit = info.peers.begin(); pit != info.peers.end(); pit ++) - srcIds.push_back(pit->peerId); - - rsFiles->FileRequest(rslink.name().toStdString(), rslink.hash().toStdString(), rslink.size(), "", 0, srcIds); -} - -void LinksDialog::anchorClicked (const QUrl& link ) -{ - #ifdef LINK_DEBUG - std::cerr << "LinksDialog::anchorClicked link.scheme() : " << link.scheme().toStdString() << std::endl; - #endif - - if (link.scheme() == "retroshare") - { - QStringList L = link.toString().split("|") ; - - std::string fileName = L.at(1).toStdString() ; - uint64_t fileSize = L.at(2).toULongLong(); - std::string fileHash = L.at(3).toStdString() ; - -#ifdef LINK_DEBUG - std::cerr << "LinksDialog::anchorClicked FileRequest : fileName : " << fileName << ". fileHash : " << fileHash << ". fileSize : " << fileSize << std::endl; -#endif - - if (fileName != "" && fileHash != "") - { - std::list srcIds; - - if(rsFiles->FileRequest(fileName, fileHash, fileSize, "", RS_FILE_HINTS_NETWORK_WIDE, srcIds)) - { - QMessageBox mb(tr("File Request Confirmation"), tr("The file has been added to your download list."),QMessageBox::Information,QMessageBox::Ok,0,0,this); - mb.setWindowIcon(QIcon(QString::fromUtf8(":/images/rstray3.png"))); - mb.exec(); - } - else - { - QMessageBox mb(tr("File Request canceled"), tr("The file has not been added to your download list, because you already have it."),QMessageBox::Information,QMessageBox::Ok,0,0,this); - mb.exec(); - } - } - else - { - QMessageBox mb(tr("File Request Error"), tr("The file link is malformed."),QMessageBox::Information,QMessageBox::Ok,0,0,this); - mb.setWindowIcon(QIcon(QString::fromUtf8(":/images/rstray3.png"))); - mb.exec(); - } - } - else if (link.scheme() == "http") - { - QDesktopServices::openUrl(link); - } - else if (link.scheme() == "") - { - //it's probably a web adress, let's add http:// at the beginning of the link - QString newAddress = link.toString(); - newAddress.prepend("http://"); - QDesktopServices::openUrl(QUrl(newAddress)); - } -} - -void LinksDialog::addNewLink() -{ - - AddLinksDialog *nAddLinksDialog = new AddLinksDialog(""); - - nAddLinksDialog->show(); - - /* window will destroy itself! */ -} diff --git a/plugins/linkscloud_plugin/LinksDialog.h b/plugins/linkscloud_plugin/LinksDialog.h deleted file mode 100644 index 3657568e5..000000000 --- a/plugins/linkscloud_plugin/LinksDialog.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************** - * RetroShare GUI is distributed under the following license: - * - * Copyright (C) 2008 Robert Fernie - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - ****************************************************************/ - -#ifndef _LINKS_DIALOG_H -#define _LINKS_DIALOG_H - -#include "ui_LinksDialog.h" - - -class LinksDialog : public QWidget -{ - Q_OBJECT - -public: - /** Default Constructor */ - LinksDialog(QWidget *parent = 0); - /** Default Destructor */ - - void insertExample(); - -private slots: - /** Create the context popup menu and it's submenus */ - void linkTreeWidgetCostumPopupMenu( QPoint point ); - - void voteup_anon(); - void voteup_score(int score); - void voteup_p2(); - void voteup_p1(); - void voteup_p0(); - void voteup_m1(); - void voteup_m2(); - void downloadSelected(); - - void changedSortRank( int index ); - void changedSortPeriod( int index ); - void changedSortFrom( int index ); - void changedSortTop( int index ); - - void updateLinks(); - void addLinkComment( void ); - void toggleWindows( void ); - - void openLink ( QTreeWidgetItem * item, int column ); - void changedItem(QTreeWidgetItem *curr, QTreeWidgetItem *prev); - void checkAnon(); - - void checkUpdate(); - - void anchorClicked (const QUrl &); - - void addNewLink(); - -private: - -void updateComments(std::string rid, std::string pid); - - int mStart; /* start of rank list */ - std::string mLinkId; - - /* Worker Functions */ - /* (1) Update Display */ - - /* (2) Utility Fns */ - QTreeWidgetItem *getCurrentLine(); - - QTreeWidget *exampletreeWidget; - - /** Qt Designer generated object */ - Ui::LinksDialog ui; -}; - -#endif - diff --git a/plugins/linkscloud_plugin/LinksDialog.ui b/plugins/linkscloud_plugin/LinksDialog.ui deleted file mode 100644 index 3aecb8f4b..000000000 --- a/plugins/linkscloud_plugin/LinksDialog.ui +++ /dev/null @@ -1,588 +0,0 @@ - - - LinksDialog - - - - 0 - 0 - 738 - 583 - - - - - - - - 6 - - - 0 - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 9 - - - - Qt::CustomContextMenu - - - - Title / Comment - - - - - Score - - - - - Peer / Link - - - - - - - - - - - - :/images/edit_remove24.png:/images/edit_remove24.png - - - - - - - Qt::Horizontal - - - - 16 - 20 - - - - - - - - - 75 - true - - - - Sort by - - - - - - - - Combo - - - - - Time - - - - :/images/kalarm.png:/images/kalarm.png - - - - - Ranking - - - - :/images/records.png:/images/records.png - - - - - - - - Qt::Horizontal - - - - 16 - 20 - - - - - - - - - 75 - true - - - - In last - - - - - - - - Month - - - - :/images/view_calendar_month.png:/images/view_calendar_month.png - - - - - Week - - - - :/images/view_calendar_week.png:/images/view_calendar_week.png - - - - - Day - - - - :/images/view_calendar_day.png:/images/view_calendar_day.png - - - - - - - - Qt::Horizontal - - - - 16 - 20 - - - - - - - - - 75 - true - - - - From - - - - - - - - All Peers - - - - :/images/user/friends24.png:/images/user/friends24.png - - - - - Own Links - - - - :/images/user/identity16.png:/images/user/identity16.png - - - - - - - - Qt::Horizontal - - - - 16 - 20 - - - - - - - - - 75 - true - - - - Show - - - - - - - - Top 100 - - - - :/images/records.png:/images/records.png - - - - - 101-200 - - - - - 201-300 - - - - - 301-400 - - - - - 401-500 - - - - - Bottom 100 - - - - - - - - - 16777215 - 22 - - - - QTextBrowser{border: 2px solid #CCCCCC; -border-radius: 10px; -background: white;} - - - Qt::ScrollBarAlwaysOff - - - false - - - - - - - - 75 - true - - - - Link: - - - - - - - - - - - - - Qt::Horizontal - - - - 311 - 32 - - - - - - - - - 50 - false - - - - Add Anonymous Link - - - - - - - Add Link/Comment - - - - - - - - - - - Title: - - - - - - - QLineEdit{border: 2px solid #CCCCCC; -border-radius: 10px; -background: white;} - - - - - - - Score: - - - - - - - - +2 Great! - - - - :/images/filerating5.png:/images/filerating5.png - - - - - +1 Good - - - - :/images/filerating4.png:/images/filerating4.png - - - - - 0 Okay - - - - :/images/filerating3.png:/images/filerating3.png - - - - - -1 Sux - - - - :/images/filerating2.png:/images/filerating2.png - - - - - -2 Bad Link - - - - :/images/filerating1.png:/images/filerating1.png - - - - - - - - - - - - Url: - - - - - - - QLineEdit{border: 2px solid #CCCCCC; -border-radius: 10px; -background: white;} - - - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - QTextEdit{border: 2px solid #CCCCCC; -border-radius: 10px; -background: white;} - - - - - - - - - - - - 16777215 - 32 - - - - QFrame#frame{ -background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, -stop:0 #FEFEFE, stop:1 #E8E8E8); - -border: 1px solid #CCCCCC;} - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 2 - - - - - - 24 - 24 - - - - - - - :/images/irkick.png - - - true - - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><span style=" font-weight:600;">Links Cloud</span></p></body></html> - - - - - - - Qt::Horizontal - - - - 596 - 15 - - - - - - - - QPushButton:hover { -border: 1px solid #CCCCCC; -} - - - Add new link - - - - :/images/edit_add24.png:/images/edit_add24.png - - - true - - - - - - - - - - - - - - diff --git a/plugins/linkscloud_plugin/LinksPlugin.cpp b/plugins/linkscloud_plugin/LinksPlugin.cpp deleted file mode 100644 index 48eff0d73..000000000 --- a/plugins/linkscloud_plugin/LinksPlugin.cpp +++ /dev/null @@ -1,32 +0,0 @@ -//#include -//#include -//#include - -#include "LinksPlugin.h" -#include "LinksDialog.h" - -QString -LinksPlugin::pluginDescription() const -{ - QString res; - res = "Links Cloud plugin" ; - - return res; -} - -QString -LinksPlugin::pluginName() const -{ - return "Links Cloud" ; -} - -QWidget* -LinksPlugin::pluginWidget(QWidget * parent ) -{ - LinksDialog* window = new LinksDialog(parent); - - return window; -} - - -Q_EXPORT_PLUGIN2(linkscloud_plugin, LinksPlugin) diff --git a/plugins/linkscloud_plugin/LinksPlugin.h b/plugins/linkscloud_plugin/LinksPlugin.h deleted file mode 100644 index c928e8f8e..000000000 --- a/plugins/linkscloud_plugin/LinksPlugin.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef _LC_PLUGIN_H_ -#define _LC_PLUGIN_H_ - -#include - -#include -#include - -#include - -#include - -class LinksPlugin: public QObject, public PluginInterface -{ - Q_OBJECT - Q_INTERFACES(PluginInterface) - - public slots: - - virtual QString pluginDescription() const ; - virtual QString pluginName() const ; - - virtual QWidget* pluginWidget(QWidget * parent = 0) ; - -}; - -#endif diff --git a/plugins/linkscloud_plugin/linkscloud_plugin.pro b/plugins/linkscloud_plugin/linkscloud_plugin.pro deleted file mode 100644 index e4a3e738a..000000000 --- a/plugins/linkscloud_plugin/linkscloud_plugin.pro +++ /dev/null @@ -1,58 +0,0 @@ -#=== this part is common (similar) for all plugin projects ===================== -TEMPLATE = lib -CONFIG += plugin release - -# this is directory, where PluginInterface.h is located -INCLUDEPATH += ../ - -# and, the result (*.so or *.dll) should appear in this directory -DESTDIR = ../bin -OBJECTS_DIR = temp/obj -RCC_DIR = temp/qrc -UI_DIR = temp/ui -MOC_DIR = temp/moc - - -# the name of the result file; -TARGET = $$qtLibraryTarget(linkscloud_plugin) - -HEADERS += ../PluginInterface.h \ - LinksPlugin.h -SOURCES += LinksPlugin.cpp - -#=============================================================================== - -INCLUDEPATH += ../../libretroshare/src/ - -#=== and here are definitions, specific for this program ======================= - -DEPENDPATH += . \ - -HEADERS += LinksDialog.h \ - AddLinksDialog.h - -FORMS += LinksDialog.ui \ - AddLinksDialog.ui - -SOURCES += LinksDialog.cpp \ - AddLinksDialog.cpp - -RESOURCES += ../../retroshare-gui/src/gui/images.qrc - - -#=============================================================================== - -win32 { - - #LIBS += ../../libretroshare/src/lib/libretroshare.a - #LIBS += -L"../../../../lib" - #LIBS += -lssl -lcrypto -lgpgme -lpthreadGC2d -lminiupnpc -lz - #LIBS += -luuid -lole32 -liphlpapi -lcrypt32-cygwin -lgdi32 - #LIBS += -lole32 -lwinmm - - DEFINES += WINDOWS_SYS - - #GPG_ERROR_DIR = ../../../../libgpg-error-1.7 - #GPGME_DIR = ../../../../gpgme-1.1.8 - #INCLUDEPATH += . $${GPGME_DIR}/src $${GPG_ERROR_DIR}/src -}