/** {@inheritDoc} */
  @Override
  protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.a_list_with_buttons);
    initTitleBarViews();
    setTitleBarTitle(R.string.titleBarSimpleSync);

    mAddButton = (Button) findViewById(R.id.footerAdd);
    mSyncButton = (Button) findViewById(R.id.footerSync);
    mInfoButton = (ImageButton) findViewById(R.id.footerInfo);
    mList = (ListView) findViewById(android.R.id.list);

    mAddButton.setOnClickListener(getOnAddClickListener());
    mSyncButton.setOnClickListener(getOnSyncClickListener());
    mInfoButton.setOnClickListener(getOnInfoClickListener());

    // clip the add button drawable
    UIUtils.prepareClip(mAddButton);
    // clip the sync button drawable
    UIUtils.prepareClip(mSyncButton);

    boolean initialized = mSharedPrefs.getBoolean(this.getClass().getSimpleName(), false);

    List<SimpleSyncEntity> data = Mobeelizer.getDatabase().list(SimpleSyncEntity.class);
    if (!initialized) {
      showDialog(D_SIMPLE_SYNC);
      mSharedPrefs.edit().putBoolean(this.getClass().getSimpleName(), true).commit();
    }

    mAdapter = new SimpleSyncAdapter(this, data);
    mAdapter.sort(new SimpleSyncEntity());
    mList.setAdapter(mAdapter);
  }
 /** {@inheritDoc} */
 @Override
 protected void onUserChanged() {
   mAdapter.clear();
   mAdapter.addAll(Mobeelizer.getDatabase().list(SimpleSyncEntity.class));
   mAdapter.sort(new SimpleSyncEntity());
   mAdapter.notifyDataSetChanged();
 }
  /** {@inheritDoc} */
  @Override
  public void onSyncFinished(final MobeelizerSyncStatus status) {
    Bundle b = null;
    // If synchronization succeeded show examples list. Otherwise show an error dialog
    switch (status) {
      case FINISHED_WITH_SUCCESS:
        // get newly synchronized items from database
        final List<SimpleSyncEntity> newList =
            Mobeelizer.getDatabase().list(SimpleSyncEntity.class);
        // get old items from list adapter
        final List<SimpleSyncEntity> oldList = mAdapter.getItems();

        // merge new items to old list and mark them as new,
        // find removed items in old list and mark them as such
        mergeLists(oldList, newList);
        mAdapter.sort(new SimpleSyncEntity());
        // refresh the list to display animation
        mAdapter.notifyDataSetChanged();
        mList.setSelection(0);

        break;
      case FINISHED_WITH_FAILURE:
        b = new Bundle();
        b.putBoolean(BaseActivity.IS_INFO, false);
        b.putInt(BaseActivity.TEXT_RES_ID, R.string.e_syncFailed);
        break;
      case NONE:
        b = new Bundle();
        b.putBoolean(BaseActivity.IS_INFO, true);
        b.putInt(BaseActivity.TEXT_RES_ID, R.string.e_syncDisabled);
        break;
    }

    if (mSyncDialog != null) {
      mSyncDialog.dismiss();
    }

    // show dialog with synchronization status
    if (b != null) {
      SimpleSyncActivity.this.showDialog(BaseActivity.D_CUSTOM, b);
    }
  }