diff -Naur addresses/addresses.module addresses_with_views/addresses.module
--- addresses/addresses.module	2010-07-13 02:09:52.000000000 +0200
+++ addresses_with_views/addresses.module	2010-10-21 13:17:56.500239059 +0200
@@ -308,6 +308,27 @@
 }
 
 /**
+ * Implementation of hook_preprocess_hook().
+ */
+function addresses_preprocess_views_view_field__country(&$variables) {
+  $country = $variables['row']->{addresses_user_country};
+  if (!empty($country)) {
+    $variables['output'] = theme('addresses_country', array('country' => $country), 'name');
+  }
+} // function addresses_preprocess_views_view_field__country
+
+/**
+ * Implementation of hook_preprocess_hook().
+ */
+function addresses_preprocess_views_view_field__province(&$variables) {
+  $country = $variables['row']->{addresses_user_country};
+  $province = $variables['row']->{addresses_user_province};
+  if (!empty($province) && !empty($country)) {
+    $variables['output'] = theme('addresses_province', array('country' => $country, 'province' => $province), 'name');
+  }
+} // function addresses_preprocess_views_view_field__province
+
+/**
  * Implementation of hook_theme().
  */
 function addresses_theme() {
@@ -396,6 +417,16 @@
       'arguments' => array('form'),
       'file' => 'addresses.settings.inc',
     ),
+    'views_view_field__country' => array(
+      'arguments' => array('view' => NULL, 'field' => NULL, 'row' => NULL, 'output' => NULL),
+      'template' => 'views-view-field--country',
+      'path' => drupal_get_path('module', 'addresses') .'/views',
+    ),
+    'views_view_field__province' => array(
+      'arguments' => array('view' => NULL, 'field' => NULL, 'row' => NULL, 'output' => NULL),
+      'template' => 'views-view-field--province',
+      'path' => drupal_get_path('module', 'addresses') .'/views',
+    ),
   );
 }
 
@@ -457,4 +488,16 @@
   }
 }
 
+/**
+ * Implementation of hook_views_api().
+ *
+ * @return array
+ */
+function addresses_views_api() {
+  return array(
+    'api' => 2.0,
+    'path' => drupal_get_path('module', 'addresses') .'/views',
+  );
+} // function addresses_views_api
+
 // vim: ts=2 sw=2 et syntax=php
diff -Naur addresses/views/addresses.views_default.inc addresses_with_views/views/addresses.views_default.inc
--- addresses/views/addresses.views_default.inc	1970-01-01 01:00:00.000000000 +0100
+++ addresses_with_views/views/addresses.views_default.inc	2010-10-21 13:40:41.160239282 +0200
@@ -0,0 +1,536 @@
+<?php
+// $Id$
+/**
+ * @file
+ * The default views for the addresses module.
+ *
+ * @author Jens Jahnke <jan0sch@gmx.net>
+ */
+
+/**
+ * Implementation of hook_views_default_views()-
+ *
+ * @return array
+ */
+function addresses_views_default_views() {
+  $views = array();
+
+  $view = new view;
+  $view = new view;
+  $view->name = 'address_book';
+  $view->description = 'View an address book containing all users that have an address.';
+  $view->tag = '';
+  $view->view_php = '';
+  $view->base_table = 'addresses_user';
+  $view->is_cacheable = FALSE;
+  $view->api_version = 2;
+  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+  $handler = $view->new_display('default', 'Defaults', 'default');
+  $handler->override_option('relationships', array(
+    'eid' => array(
+      'label' => 'user',
+      'required' => 0,
+      'id' => 'eid',
+      'table' => 'addresses_user',
+      'field' => 'eid',
+      'relationship' => 'none',
+    ),
+  ));
+  $handler->override_option('fields', array(
+    'aid' => array(
+      'label' => 'Address id',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => '',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 0,
+      'empty_zero' => 0,
+      'exclude' => 1,
+      'id' => 'aid',
+      'table' => 'addresses_user',
+      'field' => 'aid',
+      'relationship' => 'none',
+    ),
+    'eid' => array(
+      'label' => 'User id',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => '',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 0,
+      'empty_zero' => 0,
+      'exclude' => 1,
+      'id' => 'eid',
+      'table' => 'addresses_user',
+      'field' => 'eid',
+      'relationship' => 'none',
+    ),
+    'name' => array(
+      'label' => 'Login',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => '',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 0,
+      'empty_zero' => 0,
+      'link_to_user' => 1,
+      'overwrite_anonymous' => 0,
+      'anonymous_text' => '',
+      'exclude' => 0,
+      'id' => 'name',
+      'table' => 'users',
+      'field' => 'name',
+      'relationship' => 'eid',
+    ),
+    'aname' => array(
+      'label' => 'Name',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => '',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 1,
+      'empty_zero' => 0,
+      'exclude' => 0,
+      'id' => 'aname',
+      'table' => 'addresses_user',
+      'field' => 'aname',
+      'relationship' => 'none',
+    ),
+    'is_primary' => array(
+      'label' => 'Default',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => 'Primary address',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 0,
+      'empty_zero' => 0,
+      'exclude' => 1,
+      'id' => 'is_primary',
+      'table' => 'addresses_user',
+      'field' => 'is_primary',
+      'relationship' => 'none',
+    ),
+    'street' => array(
+      'label' => 'Street',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => '',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 1,
+      'empty_zero' => 0,
+      'exclude' => 0,
+      'id' => 'street',
+      'table' => 'addresses_user',
+      'field' => 'street',
+      'relationship' => 'none',
+    ),
+    'additional' => array(
+      'label' => 'Additional',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => '',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 1,
+      'empty_zero' => 0,
+      'exclude' => 0,
+      'id' => 'additional',
+      'table' => 'addresses_user',
+      'field' => 'additional',
+      'relationship' => 'none',
+    ),
+    'postal_code' => array(
+      'label' => 'Postal code',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => '',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 1,
+      'empty_zero' => 0,
+      'exclude' => 0,
+      'id' => 'postal_code',
+      'table' => 'addresses_user',
+      'field' => 'postal_code',
+      'relationship' => 'none',
+    ),
+    'city' => array(
+      'label' => 'City',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => '',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 1,
+      'empty_zero' => 0,
+      'exclude' => 0,
+      'id' => 'city',
+      'table' => 'addresses_user',
+      'field' => 'city',
+      'relationship' => 'none',
+    ),
+    'country' => array(
+      'label' => 'Country',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => '',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 1,
+      'empty_zero' => 0,
+      'exclude' => 0,
+      'id' => 'country',
+      'table' => 'addresses_user',
+      'field' => 'country',
+      'relationship' => 'none',
+    ),
+    'province' => array(
+      'label' => 'Province',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => '',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 1,
+      'empty_zero' => 0,
+      'exclude' => 0,
+      'id' => 'province',
+      'table' => 'addresses_user',
+      'field' => 'province',
+      'relationship' => 'none',
+    ),
+    'phone' => array(
+      'label' => 'Phone',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => '',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 1,
+      'empty_zero' => 0,
+      'exclude' => 0,
+      'id' => 'phone',
+      'table' => 'addresses_user',
+      'field' => 'phone',
+      'relationship' => 'none',
+    ),
+    'fax' => array(
+      'label' => 'Fax',
+      'alter' => array(
+	'alter_text' => 0,
+	'text' => '',
+	'make_link' => 0,
+	'path' => '',
+	'link_class' => '',
+	'alt' => '',
+	'prefix' => '',
+	'suffix' => '',
+	'target' => '',
+	'help' => '',
+	'trim' => 0,
+	'max_length' => '',
+	'word_boundary' => 1,
+	'ellipsis' => 1,
+	'html' => 0,
+	'strip_tags' => 0,
+      ),
+      'empty' => '',
+      'hide_empty' => 1,
+      'empty_zero' => 0,
+      'exclude' => 0,
+      'id' => 'fax',
+      'table' => 'addresses_user',
+      'field' => 'fax',
+      'relationship' => 'none',
+    ),
+  ));
+  $handler->override_option('sorts', array(
+    'name' => array(
+      'order' => 'ASC',
+      'id' => 'name',
+      'table' => 'users',
+      'field' => 'name',
+      'relationship' => 'eid',
+    ),
+  ));
+  $handler->override_option('access', array(
+    'type' => 'perm',
+    'perm' => 'administer addresses',
+  ));
+  $handler->override_option('cache', array(
+    'type' => 'none',
+  ));
+  $handler->override_option('title', 'Address book');
+  $handler->override_option('empty', 'No address records where found in your database.');
+  $handler->override_option('empty_format', '1');
+  $handler->override_option('items_per_page', 50);
+  $handler->override_option('use_pager', '1');
+  $handler->override_option('style_plugin', 'table');
+  $handler->override_option('style_options', array(
+    'grouping' => '',
+    'override' => 1,
+    'sticky' => 0,
+    'order' => 'asc',
+    'columns' => array(
+      'aid' => 'aid',
+      'eid' => 'eid',
+      'name' => 'name',
+      'aname' => 'aname',
+      'is_primary' => 'is_primary',
+      'street' => 'street',
+      'additional' => 'additional',
+      'postal_code' => 'postal_code',
+      'city' => 'city',
+      'country' => 'country',
+      'province' => 'province',
+      'phone' => 'phone',
+      'fax' => 'fax',
+    ),
+    'info' => array(
+      'aid' => array(
+	'separator' => '',
+      ),
+      'eid' => array(
+	'separator' => '',
+      ),
+      'name' => array(
+	'sortable' => 1,
+	'separator' => '',
+      ),
+      'aname' => array(
+	'separator' => '',
+      ),
+      'is_primary' => array(
+	'separator' => '',
+      ),
+      'street' => array(
+	'separator' => '',
+      ),
+      'additional' => array(
+	'separator' => '',
+      ),
+      'postal_code' => array(
+	'separator' => '',
+      ),
+      'city' => array(
+	'separator' => '',
+      ),
+      'country' => array(
+	'separator' => '',
+      ),
+      'province' => array(
+	'separator' => '',
+      ),
+      'phone' => array(
+	'separator' => '',
+      ),
+      'fax' => array(
+	'separator' => '',
+      ),
+    ),
+    'default' => 'name',
+  ));
+  $handler->override_option('row_options', array(
+    'inline' => array(
+      'postal_code' => 'postal_code',
+      'city' => 'city',
+    ),
+    'separator' => '',
+    'hide_empty' => 0,
+  ));
+  $handler = $view->new_display('page', 'Page', 'page_1');
+  $handler->override_option('path', 'address_book');
+  $handler->override_option('menu', array(
+    'type' => 'none',
+    'title' => '',
+    'description' => '',
+    'weight' => 0,
+    'name' => 'navigation',
+  ));
+  $handler->override_option('tab_options', array(
+    'type' => 'none',
+    'title' => '',
+    'description' => '',
+    'weight' => 0,
+    'name' => 'navigation',
+  ));
+
+  $views[$view->name] = $view;
+  return $views;
+} // function addresses_views_default_views
+
+// vim: ts=2 sw=2 et syntax=php
diff -Naur addresses/views/addresses.views.inc addresses_with_views/views/addresses.views.inc
--- addresses/views/addresses.views.inc	1970-01-01 01:00:00.000000000 +0100
+++ addresses_with_views/views/addresses.views.inc	2010-10-21 11:21:56.790239486 +0200
@@ -0,0 +1,132 @@
+<?php
+// $Id$
+/**
+ * @file
+ * The hooks for coupling with the views module.
+ *
+ * @author Jens Jahnke <jan0sch@gmx.net>
+ */
+
+/**
+ * Implementation of hook_views_data().
+ *
+ * @return array
+ */
+function addresses_views_data() {
+  $data = array(
+    'addresses_user' => array(
+      'table' => array(
+        'group' => t('Addresses'),
+        'base' => array(
+          'field' => 'aid',
+          'title' => t('Addresses'),
+          'help' => t('Addresses of your users provided by the addresses module.'),
+        ),
+        'join' => array(
+          'users' => array(
+            'left_field' => 'uid',
+            'field' => 'eid',
+            'type' => 'INNER', // All addresses have an user.
+          ),
+        ),
+      ),
+      'aid' => array(
+        'title' => t('Address id'),
+        'help' => t('The address.{id}.'),
+        'field' => array(
+          'handler' => 'views_handler_field',
+        ),
+      ),
+      'eid' => array(
+        'title' => t('User id'),
+        'help' => t('The user.{id} of the user the address belongs to.'),
+        'field' => array(
+          'handler' => 'views_handler_field',
+        ),
+        'relationship' => array(
+          'handler' => 'views_handler_relationship',
+          'base' => 'users',
+          'base field' => 'uid',
+          'label' => t('user'),
+        ),
+      ),
+      'is_primary' => array(
+        'title' => t('Primary address'),
+        'help' => t('If set this is the primary address of the user.'),
+        'field' => array(
+          'handler' => 'views_handler_field',
+        ),
+        'filter' => array(
+          'handler' => 'views_handler_filter',
+        ),
+      ),
+      'aname' => array(
+        'title' => t('Address name'),
+        'help' => t('A name describing the address.'),
+        'field' => array(
+          'handler' => 'views_handler_field',
+        ),
+      ),
+      'country' => array(
+        'title' => t('Country'),
+        'help' => t('The country name.'),
+        'field' => array(
+          'handler' => 'views_handler_field',
+        ),
+      ),
+      'province' => array(
+        'title' => t('Province'),
+        'help' => t('The province name.'),
+        'field' => array(
+          'handler' => 'views_handler_field',
+        ),
+      ),
+      'city' => array(
+        'title' => t('City'),
+        'help' => t('The name of the city.'),
+        'field' => array(
+          'handler' => 'views_handler_field',
+        ),
+      ),
+      'street' => array(
+        'title' => t('Street'),
+        'help' => t('The name of the street.'),
+        'field' => array(
+          'handler' => 'views_handler_field',
+        ),
+      ),
+      'additional' => array(
+        'title' => t('Additional'),
+        'help' => t('Additional information regarding the address e.g. block name.'),
+        'field' => array(
+          'handler' => 'views_handler_field',
+        ),
+      ),
+      'postal_code' => array(
+        'title' => t('Postal code'),
+        'help' => t('The postal code of the city.'),
+        'field' => array(
+          'handler' => 'views_handler_field',
+        ),
+      ),
+      'phone' => array(
+        'title' => t('Phone'),
+        'help' => t('The phone number.'),
+        'field' => array(
+          'handler' => 'views_handler_field',
+        ),
+      ),
+      'fax' => array(
+        'title' => t('Fax'),
+        'help' => t('The fax number.'),
+        'field' => array(
+          'handler' => 'views_handler_field',
+        ),
+      ),
+    ),
+  );
+
+  return $data;
+} // function addresses_views_data
+
+// vim: ts=2 sw=2 et syntax=php
diff -Naur addresses/views/views-view-field--country.tpl.php addresses_with_views/views/views-view-field--country.tpl.php
--- addresses/views/views-view-field--country.tpl.php	1970-01-01 01:00:00.000000000 +0100
+++ addresses_with_views/views/views-view-field--country.tpl.php	2010-10-21 12:54:03.680238869 +0200
@@ -0,0 +1,8 @@
+<?php
+// $Id$
+/**
+ * @file
+ * Themes the output of a country.
+ */
+print $output;
+?>
diff -Naur addresses/views/views-view-field--province.tpl.php addresses_with_views/views/views-view-field--province.tpl.php
--- addresses/views/views-view-field--province.tpl.php	1970-01-01 01:00:00.000000000 +0100
+++ addresses_with_views/views/views-view-field--province.tpl.php	2010-10-21 13:12:47.830239099 +0200
@@ -0,0 +1,8 @@
+<?php
+// $Id$
+/**
+ * @file
+ * Themes the output of a country.
+ */
+print $output;
+?>
