Merge with ui. Synchronous connection worked.
authorDa Risk <darisk972@gmail.com>
Sat, 21 Mar 2009 02:09:05 +0100
changeset 33 0e65d5f55d2f
parent 32 4d26854143e2 (diff)
parent 24 b915994d895e (current diff)
child 35 8006e9ee734e
Merge with ui. Synchronous connection worked. Add some checkstyle xml rules to use with the checkstyle plugin for eclipse and also a formatter for eclipse. Still work needs on asynchrounous connect
AndroidManifest.xml
Beem-ecipse-formatter.xml
checkstyle.xml
res/layout/main.xml
res/layout/settings.xml
res/menu/account.xml
src/com/beem/project/beem/Beem.java
src/com/beem/project/beem/BeemService.java
src/com/beem/project/beem/SettingsDialog.java
src/com/beem/project/beem/service/aidl/IXMPPFacade.aidl
src/com/beem/project/beem/ui/Beem.java
src/com/beem/project/beem/ui/ContactList.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Beem-ecipse-formatter.xml	Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<profiles version="11">
+<profile kind="CodeFormatterProfile" name="Eclipse [good tabsize]" version="11">
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="mixed"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="8"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
+<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+</profile>
+</profiles>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/checkstyle.xml	Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,225 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
+    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
+
+<!--
+
+  Checkstyle configuration that checks the sun coding conventions from:
+
+  - the Java Language Specification at
+  http://java.sun.com/docs/books/jls/second_edition/html/index.html
+
+  - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
+
+  - the Javadoc guidelines at
+  http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
+
+  - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
+
+  - some best practices
+
+  Checkstyle is very configurable. Be sure to read the documentation at
+  http://checkstyle.sf.net (or in your downloaded distribution).
+
+  Most Checks are configurable, be sure to consult the documentation.
+
+  To completely disable a check, just comment it out or delete it from the file.
+
+  Finally, it is worth reading the documentation.
+
+-->
+
+<module name="Checker">
+
+    <!-- Checks that a package.html file exists for each package.     -->
+    <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml -->
+    <module name="PackageHtml"/>
+
+    <!-- Checks whether files end with a new line.                        -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+    <module name="NewlineAtEndOfFile"/>
+
+    <!-- Checks that property files contain the same keys.         -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+    <module name="Translation"/>
+
+
+    <module name="TreeWalker">
+
+	<!-- Checks for Javadoc comments.                     -->
+	<!-- See http://checkstyle.sf.net/config_javadoc.html -->
+	<module name="JavadocMethod">
+	    <property name="allowUndeclaredRTE" value="true"/>
+	</module>
+	<module name="JavadocType"/>
+	<module name="JavadocVariable">
+	    <property name="scope" value="package" />
+	</module>
+	<module name="JavadocStyle">
+	    <property name="checkEmptyJavadoc" value="true"/>
+	</module>
+
+
+	<!-- Checks for Naming Conventions.                  -->
+	<!-- See http://checkstyle.sf.net/config_naming.html -->
+	<module name="ConstantName"/>
+	<module name="LocalFinalVariableName"/>
+	<module name="LocalVariableName"/>
+	<module name="MemberName">
+	    <property  name="format" value="^m[A-Z][a-zA-Z0-9]*$"/>
+	</module>
+	<module name="MethodName"/>
+	<module name="PackageName"/>
+	<module name="ParameterName"/>
+	<module name="StaticVariableName"/>
+	<module name="TypeName"/>
+
+
+	<!-- Checks for Headers                                -->
+	<!-- See http://checkstyle.sf.net/config_header.html   -->
+	<!-- <module name="Header">                            -->
+	<!-- The follow property value demonstrates the ability     -->
+	<!-- to have access to ANT properties. In this case it uses -->
+	<!-- the ${basedir} property to allow Checkstyle to be run  -->
+	<!-- from any directory within a project. See property      -->
+	<!-- expansion,                                             -->
+	<!-- http://checkstyle.sf.net/config.html#properties        -->
+	<!-- <property                                              -->
+	<!--     name="headerFile"                                  -->
+	<!--     value="${basedir}/java.header"/>                   -->
+	<!-- </module> -->
+
+	<!-- Following interprets the header file as regular expressions. -->
+	<!-- <module name="RegexpHeader"/>                                -->
+
+
+	<!-- Checks for imports                              -->
+	<!-- See http://checkstyle.sf.net/config_import.html -->
+	<module name="AvoidStarImport"/>
+	<module name="IllegalImport"/> <!-- defaults to sun.* packages -->
+	<module name="RedundantImport"/>
+	<module name="UnusedImports"/>
+
+
+	<!-- Checks for Size Violations.                    -->
+	<!-- See http://checkstyle.sf.net/config_sizes.html -->
+	<module name="FileLength"/>
+	<module name="LineLength">
+	    <property name="max" value="120" />
+	</module>
+	<module name="MethodLength"/>
+	<module name="ParameterNumber"/>
+	<module name="AnonInnerLength">
+	    <property name="max" value="60" />
+	</module>
+
+
+	<!-- Checks for whitespace                               -->
+	<!-- See http://checkstyle.sf.net/config_whitespace.html -->
+	<module name="EmptyForIteratorPad"/>
+	<module name="MethodParamPad"/>
+	<module name="NoWhitespaceAfter"/>
+	<module name="NoWhitespaceBefore"/>
+	<module name="OperatorWrap"/>
+	<module name="ParenPad"/>
+	<module name="TypecastParenPad"/>
+	<!-- We want mixed tabulation
+	  <module name="TabCharacter"/> 
+	  -->
+	<module name="WhitespaceAfter"/>
+	<module name="WhitespaceAround"/>
+
+
+	<!-- Modifier Checks                                    -->
+	<!-- See http://checkstyle.sf.net/config_modifiers.html -->
+	<module name="ModifierOrder"/>
+	<module name="RedundantModifier"/>
+
+
+	<!-- Checks for blocks. You know, those {}'s         -->
+	<!-- See http://checkstyle.sf.net/config_blocks.html -->
+	<module name="AvoidNestedBlocks"/>
+	<module name="EmptyBlock"/>
+	<module name="LeftCurly"/>
+	<!--
+	  <module name="NeedBraces"/>
+	  -->
+	<module name="RightCurly"/>
+
+
+	<!-- Checks for common coding problems               -->
+	<!-- See http://checkstyle.sf.net/config_coding.html -->
+	<module name="CovariantEquals"/>
+	<module name="AvoidInlineConditionals"/>
+	<module name="InnerAssignment" />
+	<module name="DoubleCheckedLocking"/>    <!-- MY FAVOURITE -->
+	<module name="EmptyStatement"/>
+	<module name="EqualsHashCode"/>
+	<module name="HiddenField">
+	    <property name="ignoreConstructorParameter" value="true"/>
+	    <property name="ignoreAbstractMethods" value="true"/>
+	    <property name="ignoreSetter" value="true"/>
+	</module>
+	<module name="IllegalInstantiation"/>
+	<module name="InnerAssignment"/>
+	<!--
+	  <module name="MagicNumber"/>
+	  -->
+	<module name="MissingSwitchDefault"/>
+	<module name="RedundantThrows"/>
+	<module name="SimplifyBooleanExpression"/>
+	<module name="SimplifyBooleanReturn"/>
+	<module name="StringLiteralEquality"/>
+	<module name="SuperFinalize"/>
+	<module name="IllegalCatch"/>
+	<module name="IllegalThrows"/>
+	<module name="PackageDeclaration"/>
+	<module name="JUnitTestCase"/>
+	<module name="DeclarationOrder"/>
+	<module name="ExplicitInitialization"/>
+	<module name="DefaultComesLast"/>
+	<module name="MissingCtor"/>
+	<module name="FallThrough"/>
+	<module name="MultipleStringLiterals"/>
+	<module name="MultipleVariableDeclarations"/>
+	<module name="UnnecessaryParentheses"/>
+	<module name="ParameterAssignment"/>
+	<module name="SuperClone"/>
+
+	<!-- Checks for class design                         -->
+	<!-- See http://checkstyle.sf.net/config_design.html -->
+	<module name="DesignForExtension"/>
+	<module name="FinalClass"/>
+	<module name="HideUtilityClassConstructor"/>
+	<module name="InterfaceIsType"/>
+	<module name="VisibilityModifier"/>
+	<module name="MutableException"/>
+
+
+	<!-- Miscellaneous other checks.                   -->
+	<!-- See http://checkstyle.sf.net/config_misc.html -->
+	<module name="ArrayTypeStyle"/>
+	<module name="FinalParameters">
+	    <property name="tokens" value="CTOR_DEF"/>
+	</module>
+	<module name="Indentation"/>
+
+	<module name="GenericIllegalRegexp">
+	    <property name="format" value="\s+$"/>
+	    <property name="message" value="Line has trailing spaces."/>
+	</module>
+	<module name="TodoComment"/>
+	<module name="UpperEll"/>
+
+	<module name="BooleanExpressionComplexity"/>
+	<module name="UpperEll"/>
+
+
+	<module name="ArrayTypeStyle"/>
+
+    </module>
+    <module name="StrictDuplicateCode"/>
+    <module name="NewlineAtEndOfFile"/>
+
+</module>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/BeemException.java	Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,67 @@
+/**
+ * 
+ */
+package com.beem.project.beem;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * @author darisk
+ *
+ */
+public class BeemException extends Exception implements Parcelable  {
+
+    public static final Parcelable.Creator<BeemException> CREATOR = new Creator<BeemException>() {
+    
+        @Override
+        public BeemException[] newArray(int size) {
+    	// TODO Auto-generated method stub
+    	   return new BeemException[size];
+        }
+    
+        @Override
+        public BeemException createFromParcel(Parcel source) {
+    	// TODO Auto-generated method stub
+    	    return new BeemException(source);
+        }
+    };
+    
+    public BeemException() {
+	super();
+	// TODO Auto-generated constructor stub
+    }
+
+    public BeemException(String detailMessage, Throwable throwable) {
+	super(detailMessage, throwable);
+	// TODO Auto-generated constructor stub
+    }
+
+    public BeemException(String detailMessage) {
+	super(detailMessage);
+	// TODO Auto-generated constructor stub
+    }
+
+    public BeemException(Throwable throwable) {
+	super(throwable);
+	// TODO Auto-generated constructor stub
+    }
+    
+    private BeemException(Parcel parcel){
+	this(parcel.readString());
+    }
+     
+    @Override
+    public int describeContents() {
+	// TODO Auto-generated method stub
+	return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+	// TODO Auto-generated method stub
+	dest.writeString(getLocalizedMessage());
+    }
+
+    
+}
--- a/src/com/beem/project/beem/BeemService.java	Sat Mar 21 00:00:14 2009 +0100
+++ b/src/com/beem/project/beem/BeemService.java	Sat Mar 21 02:09:05 2009 +0100
@@ -3,8 +3,13 @@
  */
 package com.beem.project.beem;
 
-import java.util.List;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
+import org.jivesoftware.smack.Roster;
+import org.jivesoftware.smack.RosterListener;
+import org.jivesoftware.smack.packet.Presence;
 import org.jivesoftware.smack.XMPPConnection;
 import org.jivesoftware.smack.XMPPException;
 
@@ -15,11 +20,13 @@
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.IBinder;
+import android.os.Looper;
 import android.os.RemoteException;
 import android.widget.Toast;
 
-import com.beem.project.beem.service.IXMPPFacade;
-
+import com.beem.project.beem.service.XMPPConnectionAdapter;
+import com.beem.project.beem.service.aidl.IXMPPConnection;
+import com.beem.project.beem.service.aidl.IXMPPFacade;
 /**
  * @author darisk
  * 
@@ -28,27 +35,35 @@
 
     private NotificationManager notificationManager;
 
-    private XMPPConnection connection;
-
+    private IXMPPConnection connection;
     private SharedPreferences settings;
-
-    private String login;
-
-    private String password;
-
-    private String host;
+    private String mLogin;
+    private String mPassword;
+    private String mHost;
 
     private IXMPPFacade.Stub bind = new IXMPPFacade.Stub() {
 
-        @Override
-        public List<String> getContactList() throws RemoteException {
-            return null;
-        }
+	@Override
+	public IXMPPConnection getXMPPConnection() throws RemoteException {
+	    return connection;
+	}
+
+	@Override
+	public void disconnect() throws RemoteException {
+	    connection.disconnect();
+	}
+
 
-        @Override
-        public List<String> getGroupList() throws RemoteException {
-            return null;
-        }
+	@Override
+	public void connectAsync() throws RemoteException {
+	    connection.connectAsync(mLogin, mPassword, "BEEM");
+	}
+
+
+	@Override
+	public void connectSync() throws RemoteException {
+	    connection.connectSync(mLogin, mPassword, "BEEM");
+	}
     };
 
     /*
@@ -57,25 +72,26 @@
      * @see android.app.Service#onBind(android.content.Intent)
      */
     @Override
-    public IBinder onBind(Intent arg0) {
-        try {
-            connection = new XMPPConnection("10.0.2.2"); // address du pc host
-            // de l'emulateur
-            connection.connect();
-            connection.login(login, password);
-            notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
-            showBasicNotification(R.string.BeemServiceCreated);
-        } catch (XMPPException e) {
-            // TODO Auto-generated catch block
-            Toast toast = Toast.makeText(this, "ERREUR " + e.getMessage(),
-                    Toast.LENGTH_LONG);
-            toast.show();
-            notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
-            showBasicNotification(R.string.PreferenceFileName);
-        }
-        return bind;
+    public IBinder onBind(Intent intent) {
+	showBasicNotification(R.string.BeemServiceCreated);
+	return bind;
+	// to forbid a client to bind
+	// return null;
     }
 
+    @Override
+    public void onCreate() {
+	super.onCreate();
+	settings = getSharedPreferences(getString(R.string.PreferenceFileName),
+		MODE_PRIVATE);
+	mLogin = settings.getString(getString(R.string.PreferenceLoginKey), "");
+	mPassword = settings.getString(
+		getString(R.string.PreferencePasswordKey), "");
+	mHost = settings.getString(getString(R.string.PreferenceHostKey), "");
+	notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+	connection = new XMPPConnectionAdapter("10.0.2.2"); // address
+    }
+    
     private void showBasicNotification(int stringResource) {
         String text = (String) getText(stringResource);
         Notification notif = new Notification(R.drawable.logo, text, System
@@ -90,43 +106,29 @@
     }
 
     @Override
-    public void onCreate() {
-        super.onCreate();
-        settings = getSharedPreferences(getString(R.string.PreferenceFileName),
-                MODE_PRIVATE);
-        login = settings.getString(getString(R.string.PreferenceLoginKey), "");
-        password = settings.getString(
-                getString(R.string.PreferencePasswordKey), "");
-        host = settings.getString(getString(R.string.PreferenceHostKey), "");
-    }
-
-    @Override
     public void onStart(Intent intent, int startId) {
-        try {
-            connection = new XMPPConnection("10.0.2.2"); // address du pc host
-            // de l'emulateur
-            connection.connect();
-            connection.login(login, password);
-            notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
-            showBasicNotification(R.string.BeemServiceCreated);
-        } catch (XMPPException e) {
-            // TODO Auto-generated catch block
-            Toast toast = Toast.makeText(this, "ERREUR " + e.getMessage(),
-                    Toast.LENGTH_LONG);
-            toast.show();
-            notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
-            showBasicNotification(R.string.PreferenceFileName);
-        }
-    }
-
-    private void closeConnection() {
-        if (connection != null)
-            connection.disconnect();
+	try {
+	    connection.connectSync(mLogin, mPassword, "BEEM");
+	} catch (RemoteException e) {
+	    // TODO Auto-generated catch block
+	    e.printStackTrace();
+	}
     }
 
     @Override
     public void onDestroy() {
-        closeConnection();
-            }
+	closeConnection();
+	showBasicNotification(R.string.BeemServiceDestroyed);
+    }
+
+    private void closeConnection() {
+	if (connection != null)
+	    try {
+		connection.disconnect();
+	    } catch (RemoteException e) {
+		// TODO Auto-generated catch block
+		e.printStackTrace();
+	    }
+    }
 
 }
--- a/src/com/beem/project/beem/service/IXMPPFacade.aidl	Sat Mar 21 00:00:14 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-package com.beem.project.beem.service;
-
-// import org.jivesoftware.smack.XMPPConnection;
-
-interface IXMPPFacade {
-
-  //  org.jivesoftware.smack.XMPPConnection getXMPPConnection();
-  
-  List<String> getContactList();
-  List<String> getGroupList();
-
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/RosterAdapter.java	Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,61 @@
+/**
+ * 
+ */
+package com.beem.project.beem.service;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.jivesoftware.smack.Roster;
+import org.jivesoftware.smack.RosterEntry;
+import org.jivesoftware.smack.XMPPException;
+
+import android.os.RemoteException;
+
+import com.beem.project.beem.service.aidl.IRosterEntry;
+import com.beem.project.beem.service.aidl.IRoster.Stub;
+
+/**
+ * @author darisk
+ *
+ */
+public class RosterAdapter extends com.beem.project.beem.service.aidl.IRoster.Stub {
+
+    private Roster adaptee;
+    
+    public RosterAdapter(Roster roster) {
+	adaptee = roster;
+    }
+    
+    @Override
+    public IRosterEntry createEntry(String user, String name, String[] groups)
+	    throws RemoteException {
+	try {
+	    adaptee.createEntry(user, name, groups);
+	} catch (XMPPException e) {
+	    // TODO Auto-generated catch block
+	    e.printStackTrace();
+	}
+	return null;
+    }
+
+    @Override
+    public void createGroup(String groupname) throws RemoteException {
+	// TODO Auto-generated method stub
+	adaptee.createGroup(groupname);
+    }
+
+    @Override
+    public List getEntries() throws RemoteException {
+	// TODO Auto-generated method stub
+	Collection<RosterEntry> col = adaptee.getEntries();
+	ArrayList<IRosterEntry> result = new ArrayList<IRosterEntry>(col.size());
+	for (RosterEntry rosterEntry : col ) {
+	    result.add(new RosterEntryAdapter(rosterEntry));
+	}
+	return result;
+    }
+    
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/RosterEntryAdapter.java	Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,42 @@
+/**
+ * 
+ */
+package com.beem.project.beem.service;
+
+import org.jivesoftware.smack.RosterEntry;
+import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.packet.RosterPacket.ItemStatus;
+import org.jivesoftware.smack.packet.RosterPacket.ItemType;
+
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.beem.project.beem.service.aidl.IRosterEntry;
+
+/**
+ * @author darisk
+ *
+ */
+public class RosterEntryAdapter extends IRosterEntry.Stub {
+
+    private RosterEntry adaptee;
+    
+    public RosterEntryAdapter(RosterEntry entry) {
+	adaptee = entry;
+    }
+
+    @Override
+    public String getName() throws RemoteException {
+	return adaptee.getName();
+    }
+
+    @Override
+    public String getUser() throws RemoteException {
+	return adaptee.getUser();
+    }
+
+    @Override
+    public void setName(String name) throws RemoteException {
+	adaptee.setName(name);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/XMPPConnectionAdapter.java	Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,204 @@
+/**
+ * 
+ */
+package com.beem.project.beem.service;
+
+import org.jivesoftware.smack.ConnectionConfiguration;
+import org.jivesoftware.smack.ConnectionListener;
+import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.XMPPException;
+
+import android.os.RemoteCallbackList;
+import android.os.RemoteException;
+
+import com.beem.project.beem.BeemException;
+import com.beem.project.beem.service.aidl.IBeemConnectionListener;
+import com.beem.project.beem.service.aidl.IRoster;
+import com.beem.project.beem.service.aidl.IXMPPConnection;
+
+/**
+ * @author darisk
+ * 
+ */
+public class XMPPConnectionAdapter extends IXMPPConnection.Stub {
+
+    private XMPPConnection adaptee;
+    private BeemException lastException;
+
+    private RemoteCallbackList<IBeemConnectionListener> mRemoteConnListeners = new RemoteCallbackList<IBeemConnectionListener>();
+    private ConnexionListenerAdapter mConListener = new ConnexionListenerAdapter();
+    
+    public XMPPConnectionAdapter(XMPPConnection con) {
+	adaptee = con;
+    }
+
+    public XMPPConnectionAdapter(String serviceName) {
+	this(new XMPPConnection(serviceName));
+    }
+
+    public XMPPConnectionAdapter(ConnectionConfiguration config) {
+	this(new XMPPConnection(config));
+    }
+
+    @Override
+    public boolean connectSync(String username, String password, String resource)
+            throws RemoteException {
+     	try {
+	    adaptee.connect();
+	    adaptee.addConnectionListener(mConListener);
+	    adaptee.login(username, password, resource);
+	    lastException = null;
+	    triggerAsynchronousConnectEvent();
+	    return true;
+	} catch (XMPPException e) {
+	    lastException = new BeemException(e);
+	}
+	return false;
+    }
+
+    public boolean disconnect() {
+	adaptee.disconnect();
+	lastException = null;
+	return true;
+    }
+
+    @Override
+    public IRoster getRoster() throws RemoteException {
+	return new RosterAdapter(adaptee.getRoster());
+    }
+
+    @Override
+    public void connectAsync(final String username, final String password, final String resource)
+            throws RemoteException {
+	Thread t = new Thread(new Runnable() {
+
+	    @Override
+	    public void run() {
+		try {
+		    connectSync(username,password,resource);
+		} catch (RemoteException e) {
+		   
+		}
+	    }
+	});
+	t.start();
+    }
+
+    @Override
+    public void addConnectionListener(IBeemConnectionListener listen)
+	    throws RemoteException {
+	if (listen != null)
+	    mRemoteConnListeners.register(listen);
+    }
+
+    @Override
+    public void removeConnectionListener(IBeemConnectionListener listen)
+	    throws RemoteException {
+	if (listen != null)
+	    mRemoteConnListeners.unregister(listen);
+    }
+
+    private void triggerAsynchronousConnectEvent() {
+	mConListener.onConnect();
+    }
+  
+    private class ConnexionListenerAdapter implements ConnectionListener {
+
+	public void onConnect() {
+	    final int N = mRemoteConnListeners.beginBroadcast();
+
+	    for (int i = 0; i < N; i++) {
+		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+		try {
+		    listener.onConnect();
+		} catch (RemoteException e) {
+		    // The RemoteCallbackList will take care of removing the
+		    // dead listeners.
+		}
+	    }
+	    mRemoteConnListeners.finishBroadcast();
+	}
+	
+	@Override
+	public void connectionClosed() {
+	    final int N = mRemoteConnListeners.beginBroadcast();
+
+	    for (int i = 0; i < N; i++) {
+		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+		try {
+		    listener.connectionClosed();
+		} catch (RemoteException e) {
+		    // The RemoteCallbackList will take care of removing the
+		    // dead listeners.
+		}
+	    }
+	    mRemoteConnListeners.finishBroadcast();
+	}
+
+	@Override
+	public void connectionClosedOnError(Exception arg0) {
+	    final int N = mRemoteConnListeners.beginBroadcast();
+
+	    for (int i = 0; i < N; i++) {
+		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+		try {
+		    listener.connectionClosedOnError();
+		} catch (RemoteException e) {
+		    // The RemoteCallbackList will take care of removing the
+		    // dead listeners.
+		}
+	    }
+	    mRemoteConnListeners.finishBroadcast();
+	}
+
+	@Override
+	public void reconnectingIn(int arg0) {
+	    final int N = mRemoteConnListeners.beginBroadcast();
+
+	    for (int i = 0; i < N; i++) {
+		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+		try {
+		    listener.reconnectingIn(arg0);
+		} catch (RemoteException e) {
+		    // The RemoteCallbackList will take care of removing the
+		    // dead listeners.
+		}
+	    }
+	    mRemoteConnListeners.finishBroadcast();
+	}
+
+	@Override
+	public void reconnectionFailed(Exception arg0) {
+	    final int N = mRemoteConnListeners.beginBroadcast();
+
+	    for (int i = 0; i < N; i++) {
+		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+		try {
+		    listener.reconnectionFailed();
+		} catch (RemoteException e) {
+		    // The RemoteCallbackList will take care of removing the
+		    // dead listeners.
+		}
+	    }
+	    mRemoteConnListeners.finishBroadcast();
+	}
+
+	@Override
+	public void reconnectionSuccessful() {
+	    final int N = mRemoteConnListeners.beginBroadcast();
+
+	    for (int i = 0; i < N; i++) {
+		IBeemConnectionListener listener = mRemoteConnListeners.getBroadcastItem(i);
+		try {
+		    listener.reconnectionSuccessful();
+		} catch (RemoteException e) {
+		    // The RemoteCallbackList will take care of removing the
+		    // dead listeners.
+		}
+	    }
+	    mRemoteConnListeners.finishBroadcast();
+	}	
+    }
+    
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/aidl/IBeemConnectionListener.aidl	Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,17 @@
+package com.beem.project.beem.service.aidl;
+
+interface IBeemConnectionListener {
+	
+    void connectionClosed();
+    
+    void onConnect();
+    
+    //void connectionClosedOnError(in Exception e);
+    void connectionClosedOnError();
+     
+    void reconnectingIn(in int seconds);
+    
+    void reconnectionFailed();
+     
+    void reconnectionSuccessful();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/aidl/IRoster.aidl	Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,14 @@
+package com.beem.project.beem.service.aidl;
+
+import com.beem.project.beem.service.aidl.IRosterEntry;
+
+interface IRoster {
+    
+    IRosterEntry createEntry(in String user, in String name, in String[] groups);
+    
+    void createGroup(in String groupname);
+    
+    // List<IRosterEntry>
+    List getEntries(); 
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/aidl/IRosterEntry.aidl	Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,12 @@
+package com.beem.project.beem.service.aidl;
+
+interface IRosterEntry {
+      
+    String getName(); 
+    String getUser();
+    void setName(in String name);
+    //TODO
+    // getStatus() 
+    // getType
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/aidl/IXMPPConnection.aidl	Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,20 @@
+package com.beem.project.beem.service.aidl;
+
+import  com.beem.project.beem.service.aidl.IRoster;
+import  com.beem.project.beem.service.aidl.IBeemConnectionListener;
+
+interface IXMPPConnection {
+    
+    boolean connectSync(in String username, in String password, in String resource);
+    
+    void connectAsync(in String username, in String password, in String resource);
+    
+    boolean disconnect();
+    
+  //  void login(String username, String password, String resource);
+      
+    IRoster getRoster();
+
+    void addConnectionListener(in IBeemConnectionListener listen);
+    void removeConnectionListener(in IBeemConnectionListener listen);
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/com/beem/project/beem/service/aidl/IXMPPFacade.aidl	Sat Mar 21 02:09:05 2009 +0100
@@ -0,0 +1,15 @@
+package com.beem.project.beem.service.aidl;
+
+import  com.beem.project.beem.service.aidl.IXMPPConnection;
+
+interface IXMPPFacade {
+
+    IXMPPConnection getXMPPConnection();
+    
+    void connectSync();
+    
+    void connectAsync();
+    
+    void disconnect();
+
+}
--- a/src/com/beem/project/beem/ui/Beem.java	Sat Mar 21 00:00:14 2009 +0100
+++ b/src/com/beem/project/beem/ui/Beem.java	Sat Mar 21 02:09:05 2009 +0100
@@ -4,6 +4,7 @@
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.os.Handler;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
@@ -13,62 +14,96 @@
 
 import com.beem.project.beem.R;
 
+/**
+ * La principale activite to be continuous.
+ */
 public class Beem extends Activity {
 
     private SharedPreferences mSettings;
     private BeemDialogSettings mDialog;
     private Button mButton;
+    private Handler mHandler;
+
+    /**
+     * Default constructor.
+     */
+    public Beem() {
+	super();
+	mHandler= new Handler();
+    }
 
     /**
      * Called when the activity is first created.
+     * @param savedInstanceState
+     *            previous state.
      */
     @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.beem);
-        mSettings = getSharedPreferences(
-                getString(R.string.PreferenceFileName), MODE_PRIVATE);
-        mDialog = new BeemDialogSettings(this, mSettings);
+    public final void onCreate(Bundle savedInstanceState) {
+	super.onCreate(savedInstanceState);
+	setContentView(R.layout.beem);
+	mSettings = getSharedPreferences(
+		getString(R.string.PreferenceFileName), MODE_PRIVATE);
+	mDialog = new BeemDialogSettings(this, mSettings);
 
-        mButton = (Button) findViewById(R.id.connection);
-        mButton.setOnClickListener(new OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                if (mButton.getText() == getString(R.string.BeemCreateAccount))
-                    mDialog.show();
-                else
-                    startActivity(new Intent(Beem.this, ContactList.class));
-            }
-        });
-        showJID();
+	mButton = (Button) findViewById(R.id.connection);
+	mButton.setOnClickListener(new OnClickListener() {
+	    @Override
+	    public void onClick(View v) {
+		if (mButton.getText() == getString(R.string.BeemCreateAccount))
+		    mDialog.show();
+		else
+		    startActivity(new Intent(Beem.this, ContactList.class));
+	    }
+	});
+	showJID();
     }
 
+    /**
+     * Callback for menu creation.
+     * @param menu
+     *            the menu created
+     * @return true on success, false otherwise
+     */
     @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        super.onCreateOptionsMenu(menu);
-        MenuInflater inflater = getMenuInflater();
-        inflater.inflate(R.menu.beemmenu, menu);
-        return true;
+    public final boolean onCreateOptionsMenu(Menu menu) {
+	super.onCreateOptionsMenu(menu);
+	MenuInflater inflater = getMenuInflater();
+	inflater.inflate(R.menu.beemmenu, menu);
+	return true;
     }
 
+    /**
+     * Callback for menu item selected.
+     * @param item
+     *            the item selected
+     * @return true on success, false otherwise
+     */
     @Override
-    public boolean onOptionsItemSelected(MenuItem item) {       
-        switch (item.getItemId()) {
-        case R.id.account_edit:
-           mDialog.show();
-            return true;
-        case R.id.account_about:
-            return true;
-        }
-        return false;
+    public final boolean onOptionsItemSelected(MenuItem item) {
+	switch (item.getItemId()) {
+	    case R.id.account_edit:
+		mDialog.show();
+		return true;
+	    case R.id.account_about:
+		return true;
+	    default:
+		return false;
+	}
     }
 
-    public void showJID() {  
-        String jid = mSettings.getString(getString(R.string.PreferenceLoginKey), "") + "@"
-                + mSettings.getString(getString(R.string.PreferenceHostKey), "");
-        if (jid.length() == 1)
-            jid = getString(R.string.BeemCreateAccount);
-        mButton.setText(jid);
+    /**
+     * Show jabber id in button.
+     */
+    public final void showJID() {
+	String jid = mSettings.getString(
+		getString(R.string.PreferenceLoginKey), "")
+		+ "@"
+		+ mSettings
+			.getString(getString(R.string.PreferenceHostKey), "");
+	if (jid.length() == 1)
+	    jid = getString(R.string.BeemCreateAccount);
+	mButton.setText(jid);
     }
 
+    
 }
--- a/src/com/beem/project/beem/ui/ContactList.java	Sat Mar 21 00:00:14 2009 +0100
+++ b/src/com/beem/project/beem/ui/ContactList.java	Sat Mar 21 02:09:05 2009 +0100
@@ -11,12 +11,16 @@
 import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.IBinder;
+import android.os.RemoteException;
+import android.util.Log;
 import android.widget.ExpandableListAdapter;
 import android.widget.SimpleExpandableListAdapter;
 
 import com.beem.project.beem.BeemService;
 import com.beem.project.beem.R;
-import com.beem.project.beem.service.IXMPPFacade;
+import com.beem.project.beem.service.aidl.IBeemConnectionListener;
+import com.beem.project.beem.service.aidl.IXMPPConnection;
+import com.beem.project.beem.service.aidl.IXMPPFacade;
 
 public class ContactList extends ExpandableListActivity {
 
@@ -27,7 +31,6 @@
         super.onCreate(saveBundle);
         bindService(new Intent(this, BeemService.class), mConnection,
                 BIND_AUTO_CREATE | BIND_DEBUG_UNBIND);
-        showContactList();
     }
 
     private void showContactList() {
@@ -44,7 +47,7 @@
             for (int j = 0; j < 5; j++) {
                 Map<String, String> curChildMap = new HashMap<String, String>();
                 children.add(curChildMap);
-                curChildMap.put("NAME CHILD", "Child " + j);                
+                curChildMap.put("NAOME CHILD", "Child " + j);                
             }
             childData.add(children);
         }
@@ -61,10 +64,19 @@
         @Override
         public void onServiceConnected(ComponentName name, IBinder service) {
             mService = IXMPPFacade.Stub.asInterface(service);
+            try {
+		IXMPPConnection con = mService.getXMPPConnection();
+		con.addConnectionListener(new TestConnectionListener());
+		mService.connectSync();
+		Log.i("BEEM", "Connected !!!");
+	    } catch (RemoteException e) {
+		// TODO Auto-generated catch block
+		e.printStackTrace();
+	    }
+            
             /*
              * mService.getGroupList(); mService.getContactList();
              */
-            showContactList();
         }
 
         @Override
@@ -79,4 +91,44 @@
         unbindService(mConnection);
     }
 
+    private class TestConnectionListener extends IBeemConnectionListener.Stub {
+
+	@Override
+	public void connectionClosed() throws RemoteException {
+	    // TODO Auto-generated method stub
+	    
+	}
+
+	@Override
+	public void connectionClosedOnError() throws RemoteException {
+	    // TODO Auto-generated method stub
+	    
+	}
+
+	@Override
+	public void onConnect() throws RemoteException {
+	    // TODO Auto-generated method stub
+	    showContactList();
+	}
+
+	@Override
+	public void reconnectingIn(int seconds) throws RemoteException {
+	    // TODO Auto-generated method stub
+	    
+	}
+
+	@Override
+	public void reconnectionFailed() throws RemoteException {
+	    // TODO Auto-generated method stub
+	    
+	}
+
+	@Override
+	public void reconnectionSuccessful() throws RemoteException {
+	    // TODO Auto-generated method stub
+	    
+	}
+	
+    } 
+    
 }