diff --git a/app/src/main/java/max/music_cyclon/SynchronizeActivity.java b/app/src/main/java/max/music_cyclon/SynchronizeActivity.java index 42a28b8..f256da1 100644 --- a/app/src/main/java/max/music_cyclon/SynchronizeActivity.java +++ b/app/src/main/java/max/music_cyclon/SynchronizeActivity.java @@ -2,6 +2,7 @@ package max.music_cyclon; import android.Manifest; +import android.app.ActivityManager; import android.app.Dialog; import android.app.ProgressDialog; import android.content.ComponentName; @@ -27,6 +28,8 @@ import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.widget.TextView; +import android.widget.Toast; import com.google.samples.apps.iosched.ui.widget.SlidingTabLayout; @@ -40,21 +43,21 @@ import java.util.Collections; import java.util.List; import java.util.UUID; +import max.music_cyclon.preference.MainPreferenceActivity; import max.music_cyclon.service.LibraryService; /** * The main activity for synchronisation - *

+ *

* This class manages: *

- * */ public class SynchronizeActivity extends AppCompatActivity { @@ -98,6 +101,9 @@ public class SynchronizeActivity extends AppCompatActivity { pagerAdapter = new PagerAdapter(configs, getSupportFragmentManager()); + if (pagerAdapter.getCount() == 0) { + pagerAdapter.add("Default"); + } final ViewPager pager = (ViewPager) findViewById(R.id.container); assert pager != null; @@ -108,6 +114,18 @@ public class SynchronizeActivity extends AppCompatActivity { final SlidingTabLayout tabs = (SlidingTabLayout) findViewById(R.id.tabs); assert tabs != null; + tabs.setTabLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + CharSequence name = ((TextView) v).getText(); + RenameDialogFragment dialog = new RenameDialogFragment(); + dialog.setPreviousName(name.toString()); + dialog.setAdapter(getPagerAdapter()); + dialog.show(getSupportFragmentManager(), dialog.getClass().getName()); + return true; + } + }); + tabs.setDistributeEvenly(true); tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { @Override @@ -143,9 +161,11 @@ public class SynchronizeActivity extends AppCompatActivity { private void requestPermissions() { if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - ActivityCompat.requestPermissions(this, + ActivityCompat.requestPermissions( + this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, - 0); + 0 + ); } } @@ -196,6 +216,11 @@ public class SynchronizeActivity extends AppCompatActivity { notYetImplemented(this); break; case R.id.action_sync: + if (isServiceRunning(LibraryService.class)) { + Toast.makeText(this, "Already synchronizing!", Toast.LENGTH_LONG).show(); + return false; + } + startLibraryService(); bindLibraryService(); @@ -275,9 +300,19 @@ public class SynchronizeActivity extends AppCompatActivity { private void startLibraryService() { Intent intent = new Intent(SynchronizeActivity.this, LibraryService.class); - List configs = getPagerAdapter().getConfigData(); + List configs = getPagerAdapter().getConfigs(); intent.putExtra("configs", configs.toArray(new SynchronizeConfig[configs.size()])); - SynchronizeActivity.this.startService(intent); + startService(intent); + } + + private boolean isServiceRunning(Class serviceClass) { + ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); + for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { + if (serviceClass.getName().equals(service.service.getClassName())) { + return true; + } + } + return false; } private void bindLibraryService() {