Merge branch 'develop' of https://github.com/owncloud/android into material_toolbar
authorAndy Scherzinger <info@andy-scherzinger.de>
Thu, 6 Aug 2015 15:23:02 +0000 (17:23 +0200)
committerAndy Scherzinger <info@andy-scherzinger.de>
Thu, 6 Aug 2015 15:23:02 +0000 (17:23 +0200)
Conflicts:
owncloud-android-library

1  2 
res/values-de-rDE/strings.xml
res/values-de/strings.xml
res/values/strings.xml
src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java
src/com/owncloud/android/ui/activity/FileActivity.java
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
src/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java

    <string name="confirmation_remove_local">Nur lokal</string>
    <string name="confirmation_remove_folder_local">Nur lokale Inhalte</string>
    <string name="confirmation_remove_remote">Vom Server entfernen</string>
 -  <string name="confirmation_remove_remote_and_local">Lokal und auf dem Server</string>
 +  <string name="confirmation_remove_remote_and_local">Lokal und auf Server</string>
    <string name="remove_success_msg">Erfolgreich gelöscht</string>
    <string name="remove_fail_msg">Der Löschvorgang konnte nicht beendet werden</string>
    <string name="rename_dialog_title">Geben Sie einen neuen Namen ein</string>
    <string name="instant_upload_on_wifi">Fotos nur über WiFi hochladen</string>
    <string name="instant_video_upload_on_wifi">Videos nur über WiFi hochladen</string>
    <string name="instant_upload_path">/SofortUpload</string>
-   <string name="conflict_title">Konflikt beim Update</string>
-   <string name="conflict_message">Serverdatei %s ist nicht synchronisiert mit der lokalen Datei. Weitermachen bedeutet, dass der Inhalt der Datei auf dem Server ersetzt wird.</string>
    <string name="conflict_keep_both">Beide behalten</string>
-   <string name="conflict_overwrite">Überschreiben</string>
-   <string name="conflict_dont_upload">Nicht hochladen</string>
    <string name="preview_image_description">Bildvorschau</string>
    <string name="preview_image_error_unknown_format">Dieses Bild kann nicht angezeigt werden</string>
    <string name="error__upload__local_file_not_copied">%1$s konnte nicht in den lokalen %2$s Ordner kopiert werden</string>
    <string name="confirmation_remove_local">Nur lokal</string>
    <string name="confirmation_remove_folder_local">Nur lokale Inhalte</string>
    <string name="confirmation_remove_remote">Vom Server entfernen</string>
 -  <string name="confirmation_remove_remote_and_local">Lokal und auf dem Server</string>
 +  <string name="confirmation_remove_remote_and_local">Lokal und auf Server</string>
    <string name="remove_success_msg">Erfolgreich gelöscht</string>
    <string name="remove_fail_msg">Der Löschvorgang konnte nicht beendet werden</string>
    <string name="rename_dialog_title">Gib einen neuen Namen ein</string>
    <string name="instant_upload_on_wifi">Fotos nur über WiFi hochladen</string>
    <string name="instant_video_upload_on_wifi">Videos nur über WiFi hochladen</string>
    <string name="instant_upload_path">/SofortUpload</string>
-   <string name="conflict_title">Konflikt beim Update</string>
-   <string name="conflict_message">Serverdatei %s ist nicht synchronisiert mit der lokalen Datei. Weitermachen bedeutet, dass der Inhalt der Datei auf dem Server ersetzt wird.</string>
    <string name="conflict_keep_both">Beide behalten</string>
-   <string name="conflict_overwrite">Überschreiben</string>
-   <string name="conflict_dont_upload">Nicht hochladen</string>
    <string name="preview_image_description">Bildvorschau</string>
    <string name="preview_image_error_unknown_format">Dieses Bild kann nicht angezeigt werden</string>
    <string name="error__upload__local_file_not_copied">%1$s konnte nicht in den lokalen %2$s Ordner kopiert werden</string>
diff --combined res/values/strings.xml
@@@ -28,7 -28,6 +28,7 @@@
      <string name="drawer_item_settings">Settings</string>
      <string name="drawer_item_logs">Logs</string>
        <string name="drawer_close">Close</string>
 +    <string name="drawer_open">Open</string>
      <string name="prefs_category_general">General</string>
      <string name="prefs_category_more">More</string>
      <string name="prefs_accounts">Accounts</string>
      <string name="instant_upload_on_wifi">Upload pictures via WiFi only</string>
      <string name="instant_video_upload_on_wifi">Upload videos via WiFi only</string>
      <string name="instant_upload_path">/InstantUpload</string>
-     <string name="conflict_title">Update conflict</string>
-     <string name="conflict_message">Remote file %s is not synchronized with local file. Continuing will replace content of file on server.</string>
+     <string name="conflict_title">File conflict</string>
+     <string name="conflict_message">Which files do you want to keep? If you select both versions, the local file will have a number added to its name.</string>
      <string name="conflict_keep_both">Keep both</string>
-     <string name="conflict_overwrite">Overwrite</string>
-     <string name="conflict_dont_upload">Don\'t upload</string>
+     <string name="conflict_use_local_version">Use local version</string>
+     <string name="conflict_use_server_version">Use server version</string>
      
      <string name="preview_image_description">Image preview</string>
      <string name="preview_image_error_unknown_format">This image cannot be shown</string>
        <string name="with_you_subject_header">with you</string>
      
        <string name="subject_token">%1$s shared \"%2$s\" with you</string>
+     <string name="saml_subject_token">\"%1$s\" has been shared with you</string>
  
      <string name="auth_refresh_button">Refresh connection</string>
      <string name="auth_host_address">Server address</string>
  
  package com.owncloud.android.ui.activity;
  
 +import android.content.Intent;
 +import android.os.Bundle;
 +
  import com.owncloud.android.datamodel.OCFile;
+ import com.owncloud.android.files.services.FileDownloader;
  import com.owncloud.android.files.services.FileUploader;
  import com.owncloud.android.lib.common.utils.Log_OC;
  import com.owncloud.android.ui.dialog.ConflictsResolveDialog;
  import com.owncloud.android.ui.dialog.ConflictsResolveDialog.Decision;
  import com.owncloud.android.ui.dialog.ConflictsResolveDialog.OnConflictDecisionMadeListener;
 -import com.owncloud.android.utils.DisplayUtils;
 -
 -import android.app.ActionBar;
 -import android.content.Intent;
 -import android.os.Bundle;
  
  /**
   * Wrapper activity which will be launched if keep-in-sync file will be modified by external
@@@ -43,6 -46,8 +44,6 @@@ public class ConflictsResolveActivity e
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
 -        ActionBar actionBar = getActionBar();
 -        actionBar.setIcon(DisplayUtils.getSeasonalIconId());
      }
  
      @Override
                  finish();
                  return;
              case OVERWRITE:
+                 // use local version -> overwrite on server
                  i.putExtra(FileUploader.KEY_FORCE_OVERWRITE, true);
                  break;
              case KEEP_BOTH:
                  i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_MOVE);
                  break;
+             case SERVER:
+                 // use server version -> delete local, request download
+                 Intent intent = new Intent(this, FileDownloader.class);
+                 intent.putExtra(FileDownloader.EXTRA_ACCOUNT, getAccount());
+                 intent.putExtra(FileDownloader.EXTRA_FILE, getFile());
+                 startService(intent);
+                 finish();
+                 return;
              default:
                  Log_OC.wtf(TAG, "Unhandled conflict decision " + decision);
                  return;
@@@ -35,20 -35,18 +35,20 @@@ import android.content.res.Configuratio
  import android.os.Bundle;
  import android.os.Handler;
  import android.os.IBinder;
 -import android.support.v4.app.ActionBarDrawerToggle;
  import android.support.v4.app.Fragment;
  import android.support.v4.app.FragmentManager;
  import android.support.v4.app.FragmentTransaction;
  import android.support.v4.view.GravityCompat;
  import android.support.v4.widget.DrawerLayout;
  import android.support.v7.app.ActionBar;
 -import android.support.v7.app.ActionBarActivity;
 +import android.support.v7.app.ActionBarDrawerToggle;
 +import android.support.v7.app.AppCompatActivity;
 +import android.util.Log;
  import android.view.View;
  import android.widget.AdapterView;
 -import android.widget.LinearLayout;
  import android.widget.ListView;
 +import android.widget.RelativeLayout;
 +import android.widget.TextView;
  import android.widget.Toast;
  
  import com.owncloud.android.BuildConfig;
@@@ -78,6 -76,8 +78,6 @@@ import com.owncloud.android.ui.Navigati
  import com.owncloud.android.ui.adapter.NavigationDrawerListAdapter;
  import com.owncloud.android.ui.dialog.LoadingDialog;
  import com.owncloud.android.ui.dialog.SharePasswordDialogFragment;
 -import com.owncloud.android.ui.fragment.FileDetailFragment;
 -import com.owncloud.android.ui.fragment.FileFragment;
  import com.owncloud.android.utils.ErrorMessageAdapter;
  
  import java.util.ArrayList;
@@@ -87,7 -87,7 +87,7 @@@
   * Activity with common behaviour for activities handling {@link OCFile}s in ownCloud
   * {@link Account}s .
   */
 -public class FileActivity extends ActionBarActivity
 +public class FileActivity extends AppCompatActivity
          implements OnRemoteOperationListener, ComponentsGetter {
  
      public static final String EXTRA_FILE = "com.owncloud.android.ui.activity.FILE";
          // Sync the toggle state after onRestoreInstanceState has occurred.
          if (mDrawerToggle != null) {
              mDrawerToggle.syncState();
 -            if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
 +            if (isDrawerOpen()) {
                  getSupportActionBar().setTitle(R.string.app_name);
                  mDrawerToggle.setDrawerIndicatorEnabled(true);
              }
          }
      }
  
 +    @Override
 +    public void onBackPressed() {
 +        if (isDrawerOpen()) {
 +            closeNavDrawer();
 +            return;
 +        }
 +        super.onBackPressed();
 +    }
 +
 +    public boolean isDrawerOpen() {
 +        return mDrawerLayout.isDrawerOpen(GravityCompat.START);
 +    }
 +
 +    public void closeNavDrawer() {
 +        mDrawerLayout.closeDrawer(GravityCompat.START);
 +    }
 +
      protected void initDrawer(){
          // constant settings for action bar when navigation drawer is inited
          getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
  
          mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
          // Notification Drawer
 -        LinearLayout navigationDrawerLayout = (LinearLayout) findViewById(R.id.left_drawer);
 +        RelativeLayout navigationDrawerLayout = (RelativeLayout) findViewById(R.id.left_drawer);
          mDrawerList = (ListView) navigationDrawerLayout.findViewById(R.id.drawer_list);
  
          // TODO re-enable when "Accounts" is available in Navigation Drawer
  //            username.setText(account.name.substring(0, lastAtPos));
  //        }
  
 +        // Display username in drawer
 +        Account account = AccountUtils.getCurrentOwnCloudAccount(getApplicationContext());
 +        if (account != null) {
 +            TextView username = (TextView) navigationDrawerLayout.findViewById(R.id.drawer_username);
 +            int lastAtPos = account.name.lastIndexOf("@");
 +            username.setText(account.name.substring(0, lastAtPos));
 +        }
 +
          // load slide menu items
          mDrawerTitles = getResources().getStringArray(R.array.drawer_items);
  
          // mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0],
          // mDrawerContentDescriptions[0]));
          // All Files
 -        mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0], mDrawerContentDescriptions[0]));
 +        mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0], mDrawerContentDescriptions[0],
 +                R.drawable.ic_folder_open));
  
          // TODO Enable when "On Device" is recovered
          // On Device
          //        mDrawerContentDescriptions[2]));
  
          // Settings
 -        mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[1], mDrawerContentDescriptions[1]));
 +        mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[1], mDrawerContentDescriptions[1],
 +                R.drawable.ic_settings));
          // Logs
          if (BuildConfig.DEBUG) {
              mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[2],
 -                    mDrawerContentDescriptions[2]));
 +                    mDrawerContentDescriptions[2],R.drawable.ic_log));
          }
  
          // setting the nav drawer list adapter
                  mDrawerItems);
          mDrawerList.setAdapter(mNavigationDrawerAdapter);
  
 -        mDrawerToggle = new ActionBarDrawerToggle(
 -                this,
 -                mDrawerLayout,
 -                R.drawable.ic_drawer,
 -                R.string.app_name,
 -                R.string.drawer_close) {
 +
 +        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,R.string.drawer_open,R.string.drawer_close) {
  
              /** Called when a drawer has settled in a completely closed state. */
              public void onDrawerClosed(View view) {
                  invalidateOptionsMenu();
              }
          };
 -
 -        //mDrawerToggle.setDrawerIndicatorEnabled(true);
 +        
          // Set the list's click listener
          mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
  
          // Set the drawer toggle as the DrawerListener
          mDrawerLayout.setDrawerListener(mDrawerToggle);
 +        mDrawerToggle.setDrawerIndicatorEnabled(false);
      }
  
      /**
          outState.putBoolean(FileActivity.EXTRA_FROM_NOTIFICATION, mFromNotification);
          outState.putLong(KEY_WAITING_FOR_OP_ID, mFileOperationsHelper.getOpIdWaitingFor());
          outState.putBoolean(KEY_TRY_SHARE_AGAIN, mTryShareAgain);
 -        outState.putString(KEY_ACTION_BAR_TITLE, getSupportActionBar().getTitle().toString());
 +        if(getSupportActionBar().getTitle() != null) {
 +            // Null check in case the actionbar is used in ActionBar.NAVIGATION_MODE_LIST
 +            // since it doesn't have a title then
 +            outState.putString(KEY_ACTION_BAR_TITLE, getSupportActionBar().getTitle().toString());
 +        }
      }
  
  
                  i.putExtra(ConflictsResolveActivity.EXTRA_FILE, syncedFile);
                  i.putExtra(ConflictsResolveActivity.EXTRA_ACCOUNT, getAccount());
                  startActivity(i);
              }
          } else {
              if (!operation.transferWasRequested()) {
                  Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result,
                          operation, getResources()), Toast.LENGTH_LONG);
                  msg.show();
              }
+             invalidateOptionsMenu();
          }
      }
  
@@@ -48,15 -48,12 +48,15 @@@ import android.provider.OpenableColumns
  import android.support.v4.app.Fragment;
  import android.support.v4.app.FragmentManager;
  import android.support.v4.app.FragmentTransaction;
 +import android.support.v4.content.ContextCompat;
  import android.support.v4.view.GravityCompat;
  import android.view.Menu;
  import android.view.MenuInflater;
  import android.view.MenuItem;
  import android.view.View;
 -import android.view.Window;
 +import android.widget.ProgressBar;
 +import android.widget.RelativeLayout;
 +import android.widget.TextView;
  import android.widget.Toast;
  
  import com.owncloud.android.MainApp;
@@@ -123,7 -120,6 +123,7 @@@ public class FileDisplayActivity extend
      private boolean mDualPane;
      private View mLeftFragmentContainer;
      private View mRightFragmentContainer;
 +    private ProgressBar mProgressBar;
  
      private static final String KEY_WAITING_TO_PREVIEW = "WAITING_TO_PREVIEW";
      private static final String KEY_SYNC_IN_PROGRESS = "SYNC_IN_PROGRESS";
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          Log_OC.v(TAG, "onCreate() start");
 -        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
  
          super.onCreate(savedInstanceState); // this calls onAccountChanged() when ownCloud Account
                                              // is valid
          // Navigation Drawer
          initDrawer();
  
 +        mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
 +        mProgressBar.setIndeterminateDrawable(
 +                ContextCompat.getDrawable(this,
 +                        R.drawable.actionbar_progress_indeterminate_horizontal));
 +
          mDualPane = getResources().getBoolean(R.bool.large_land_layout);
          mLeftFragmentContainer = findViewById(R.id.left_fragment_container);
          mRightFragmentContainer = findViewById(R.id.right_fragment_container);
                                                                  // according to the official
                                                                  // documentation
  
 -        setSupportProgressBarIndeterminateVisibility(mSyncInProgress
 -        /*|| mRefreshSharesInProgress*/);
 +        // enable ActionBar app icon to behave as action to toggle nav drawer
 +        //getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 +        getSupportActionBar().setHomeButtonEnabled(true);
 +
 +        mProgressBar.setIndeterminate(mSyncInProgress);
          // always AFTER setContentView(...) ; to work around bug in its implementation
          
          setBackgroundText();
      protected void onStart() {
          Log_OC.v(TAG, "onStart() start");
          super.onStart();
 -        getSupportActionBar().setIcon(DisplayUtils.getSeasonalIconId());
          Log_OC.v(TAG, "onStart() end");
      }
  
                  file = getStorageManager().getFileByPath(OCFile.ROOT_PATH);  // never returns null
              }
              setFile(file);
 -            
 +
 +            if (mAccountWasSet) {
 +                RelativeLayout navigationDrawerLayout = (RelativeLayout) findViewById(R.id.left_drawer);
 +                if (navigationDrawerLayout != null && getAccount() != null) {
 +                    TextView username = (TextView) navigationDrawerLayout.findViewById(R.id.drawer_username);
 +                    int lastAtPos = getAccount().name.lastIndexOf("@");
 +                    username.setText(getAccount().name.substring(0, lastAtPos));
 +                }
 +            }
 +
              if (!stateWasRecovered) {
                  Log_OC.d(TAG, "Initializing Fragments in onAccountChanged..");
                  initFragmentsWithFile();
  
      @Override
      public void onBackPressed() {
 -        OCFileListFragment listOfFiles = getListOfFilesFragment(); 
 -        if (mDualPane || getSecondFragment() == null) {
 -            OCFile currentDir = getCurrentDir();
 -            if (currentDir == null || currentDir.getParentId() == FileDataStorageManager.ROOT_PARENT_ID) {
 -                finish();
 -                return;
 +        if (!isDrawerOpen()){
 +            OCFileListFragment listOfFiles = getListOfFilesFragment();
 +            if (mDualPane || getSecondFragment() == null) {
 +                OCFile currentDir = getCurrentDir();
 +                if (currentDir == null || currentDir.getParentId() == FileDataStorageManager.ROOT_PARENT_ID) {
 +                    finish();
 +                    return;
 +                }
 +                if (listOfFiles != null) {  // should never be null, indeed
 +                    listOfFiles.onBrowseUp();
 +                }
              }
              if (listOfFiles != null) {  // should never be null, indeed
 -                listOfFiles.onBrowseUp();
 +                setFile(listOfFiles.getCurrentFile());
              }
 +            cleanSecondFragment();
 +        } else {
 +            super.onBackPressed();
          }
 -        if (listOfFiles != null) {  // should never be null, indeed
 -            setFile(listOfFiles.getCurrentFile());
 -        }
 -        cleanSecondFragment();
 -
      }
  
      @Override
                      }
                      removeStickyBroadcast(intent);
                      Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress);
 -                    setSupportProgressBarIndeterminateVisibility(mSyncInProgress
 -                    /*|| mRefreshSharesInProgress*/);
 +                    mProgressBar.setIndeterminate(mSyncInProgress);
 +                    //mProgressBar.setVisibility((mSyncInProgress) ? View.VISIBLE : View.INVISIBLE);
 +                    //setSupportProgressBarIndeterminateVisibility(mSyncInProgress
 +                    /*|| mRefreshSharesInProgress*/ //);
  
                      setBackgroundText();
                          
                          startImagePreview(getFile());
                      } // TODO what about other kind of previews?
                  }
 -                
 +
 +                mProgressBar.setIndeterminate(false);
              } finally {
                  if (intent != null) {
                      removeStickyBroadcast(intent);
  
      }
  
 -
      @Override
      protected ServiceConnection newTransferenceServiceConnection() {
          return new ListServiceConnection();
          super.onRemoteOperationFinish(operation, result);
          
          if (operation instanceof RemoveFileOperation) {
-             onRemoveFileOperationFinish((RemoveFileOperation)operation, result);
+             onRemoveFileOperationFinish((RemoveFileOperation) operation, result);
  
          } else if (operation instanceof RenameFileOperation) {
              onRenameFileOperationFinish((RenameFileOperation)operation, result);
  
      private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation,
                                                    RemoteOperationResult result) {
-         dismissLoadingDialog();
-         OCFile syncedFile = operation.getLocalFile();
-         if (!result.isSuccess()) {
-             if (result.getCode() == ResultCode.SYNC_CONFLICT) {
-                 Intent i = new Intent(this, ConflictsResolveActivity.class);
-                 i.putExtra(ConflictsResolveActivity.EXTRA_FILE, syncedFile);
-                 i.putExtra(ConflictsResolveActivity.EXTRA_ACCOUNT, getAccount());
-                 startActivity(i);
-             } 
-             
-         } else {
+         if (result.isSuccess()) {
              if (operation.transferWasRequested()) {
+                 OCFile syncedFile = operation.getLocalFile();
                  onTransferStateChanged(syncedFile, true, true);
-                 
-             } else {
-                 Toast msg = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result,
-                                 operation, getResources()), Toast.LENGTH_LONG);
-                 msg.show();
+                 invalidateOptionsMenu();
              }
-             invalidateOptionsMenu();
          }
      }
  
                  getApplicationContext()
          );
          synchFolderOp.execute(getAccount(), MainApp.getAppContext(), this, null, null);
 -        
 -        setSupportProgressBarIndeterminateVisibility(true);
 +        mProgressBar.setIndeterminate(true);
  
          setBackgroundText();
      }
@@@ -28,7 -28,7 +28,7 @@@ import android.os.Bundle
  import android.support.v4.app.DialogFragment;
  import android.support.v4.app.Fragment;
  import android.support.v4.app.FragmentTransaction;
 -import android.support.v7.app.ActionBarActivity;
 +import android.support.v7.app.AppCompatActivity;
  
  import com.owncloud.android.R;
  import com.owncloud.android.utils.DisplayUtils;
@@@ -42,7 -42,8 +42,8 @@@ public class ConflictsResolveDialog ext
      public static enum Decision { 
          CANCEL,
          KEEP_BOTH,
-         OVERWRITE
+         OVERWRITE,
+         SERVER
      }
      
      OnConflictDecisionMadeListener mListener;
@@@ -63,7 -64,7 +64,7 @@@
                     .setIcon(DisplayUtils.getSeasonalIconId())
                     .setTitle(R.string.conflict_title)
                     .setMessage(String.format(getString(R.string.conflict_message), remotepath))
-                    .setPositiveButton(R.string.conflict_overwrite,
+                    .setPositiveButton(R.string.conflict_use_local_version,
                         new DialogInterface.OnClickListener() {
  
                             @Override
                                      mListener.conflictDecisionMade(Decision.KEEP_BOTH);
                              }
                          })
-                    .setNegativeButton(R.string.conflict_dont_upload,
+                    .setNegativeButton(R.string.conflict_use_server_version,
                         new DialogInterface.OnClickListener() {
                             @Override
                             public void onClick(DialogInterface dialog, int which) {
                                 if (mListener != null)
-                                    mListener.conflictDecisionMade(Decision.CANCEL);
+                                    mListener.conflictDecisionMade(Decision.SERVER);
                             }
                     })
                     .create();
      }
      
 -    public void showDialog(ActionBarActivity activity) {
 +    public void showDialog(AppCompatActivity activity) {
          Fragment prev = activity.getSupportFragmentManager().findFragmentByTag("dialog");
          FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
          if (prev != null) {
          this.show(ft, "dialog");
      }
  
 -    public void dismissDialog(ActionBarActivity activity) {
 +    public void dismissDialog(AppCompatActivity activity) {
          Fragment prev = activity.getSupportFragmentManager().findFragmentByTag(getTag());
          if (prev != null) {
              FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();