diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/SongFileAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/SongFileAdapter.java deleted file mode 100644 index a067e478..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/SongFileAdapter.java +++ /dev/null @@ -1,211 +0,0 @@ -package com.kabouzeid.gramophone.adapter; - -import android.graphics.PorterDuff; -import android.graphics.drawable.Drawable; -import androidx.annotation.LayoutRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.signature.MediaStoreSignature; -import com.kabouzeid.appthemehelper.util.ATHUtil; -import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.adapter.base.AbsMultiSelectAdapter; -import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder; -import com.kabouzeid.gramophone.glide.audiocover.AudioFileCover; -import com.kabouzeid.gramophone.interfaces.CabHolder; -import com.kabouzeid.gramophone.util.ImageUtil; -import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView; - -import java.io.File; -import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.List; - -public class SongFileAdapter extends AbsMultiSelectAdapter implements FastScrollRecyclerView.SectionedAdapter { - - private static final int FILE = 0; - private static final int FOLDER = 1; - - private final AppCompatActivity activity; - private List dataSet; - private final int itemLayoutRes; - @Nullable - private final Callbacks callbacks; - - public SongFileAdapter(@NonNull AppCompatActivity activity, @NonNull List songFiles, @LayoutRes int itemLayoutRes, @Nullable Callbacks callback, @Nullable CabHolder cabHolder) { - super(activity, cabHolder, R.menu.menu_media_selection); - this.activity = activity; - this.dataSet = songFiles; - this.itemLayoutRes = itemLayoutRes; - this.callbacks = callback; - setHasStableIds(true); - } - - @Override - public int getItemViewType(int position) { - return dataSet.get(position).isDirectory() ? FOLDER : FILE; - } - - @Override - public long getItemId(int position) { - return dataSet.get(position).hashCode(); - } - - public void swapDataSet(@NonNull List songFiles) { - this.dataSet = songFiles; - notifyDataSetChanged(); - } - - @Override - @NonNull - public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - return new ViewHolder(LayoutInflater.from(activity).inflate(itemLayoutRes, parent, false)); - } - - @Override - public void onBindViewHolder(@NonNull ViewHolder holder, int index) { - final File file = dataSet.get(index); - - holder.itemView.setActivated(isChecked(file)); - - if (holder.getAdapterPosition() == getItemCount() - 1) { - if (holder.shortSeparator != null) { - holder.shortSeparator.setVisibility(View.GONE); - } - } else { - if (holder.shortSeparator != null) { - holder.shortSeparator.setVisibility(View.VISIBLE); - } - } - - if (holder.title != null) { - holder.title.setText(getFileTitle(file)); - } - if (holder.text != null) { - if (holder.getItemViewType() == FILE) { - holder.text.setText(getFileText(file)); - } else { - holder.text.setVisibility(View.GONE); - } - } - - if (holder.image != null) { - loadFileImage(file, holder); - } - } - - protected String getFileTitle(File file) { - return file.getName(); - } - - protected String getFileText(File file) { - return file.isDirectory() ? null : readableFileSize(file.length()); - } - - @SuppressWarnings("ConstantConditions") - protected void loadFileImage(File file, final ViewHolder holder) { - final int iconColor = ATHUtil.resolveColor(activity, R.attr.iconColor); - if (file.isDirectory()) { - holder.image.setColorFilter(iconColor, PorterDuff.Mode.SRC_IN); - holder.image.setImageResource(R.drawable.ic_folder_white_24dp); - } else { - Drawable error = ImageUtil.getTintedVectorDrawable(activity, R.drawable.ic_file_music_white_24dp, iconColor); - Glide.with(activity) - .load(new AudioFileCover(file.getPath())) - .diskCacheStrategy(DiskCacheStrategy.NONE) - .error(error) - .placeholder(error) - .animate(android.R.anim.fade_in) - .signature(new MediaStoreSignature("", file.lastModified(), 0)) - .into(holder.image); - } - } - - public static String readableFileSize(long size) { - if (size <= 0) return size + " B"; - final String[] units = new String[]{"B", "KB", "MB", "GB", "TB"}; - int digitGroups = (int) (Math.log10(size) / Math.log10(1024)); - return new DecimalFormat("#,##0.##").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups]; - } - - @Override - public int getItemCount() { - return dataSet.size(); - } - - @Override - protected File getIdentifier(int position) { - return dataSet.get(position); - } - - @Override - protected String getName(File object) { - return getFileTitle(object); - } - - @Override - protected void onMultipleItemAction(MenuItem menuItem, List selection) { - if (callbacks == null) return; - callbacks.onMultipleItemAction(menuItem, selection); - } - - @NonNull - @Override - public String getSectionName(int position) { - return String.valueOf(dataSet.get(position).getName().charAt(0)).toUpperCase(); - } - - public class ViewHolder extends MediaEntryViewHolder { - - public ViewHolder(View itemView) { - super(itemView); - if (menu != null && callbacks != null) { - menu.setOnClickListener(v -> { - int position = getAdapterPosition(); - if (isPositionInRange(position)) { - callbacks.onFileMenuClicked(dataSet.get(position), v); - } - }); - } - } - - @Override - public void onClick(View v) { - int position = getAdapterPosition(); - if (isPositionInRange(position)) { - if (isInQuickSelectMode()) { - toggleChecked(position); - } else { - if (callbacks != null) { - callbacks.onFileSelected(dataSet.get(position)); - } - } - } - } - - @Override - public boolean onLongClick(View view) { - int position = getAdapterPosition(); - return isPositionInRange(position) && toggleChecked(position); - } - - private boolean isPositionInRange(int position) { - return position >= 0 && position < dataSet.size(); - } - } - - public interface Callbacks { - void onFileSelected(File file); - - void onFileMenuClicked(File file, View view); - - void onMultipleItemAction(MenuItem item, List files); - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/base/AbsMultiSelectAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/base/AbsMultiSelectAdapter.java index 1ea15189..2ec8eff8 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/base/AbsMultiSelectAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/base/AbsMultiSelectAdapter.java @@ -18,18 +18,19 @@ import java.util.List; * @author Karim Abou Zeid (kabouzeid) */ public abstract class AbsMultiSelectAdapter extends RecyclerView.Adapter implements MaterialCab.Callback { - @Nullable + private final Context context; private final CabHolder cabHolder; + private int menuRes; + private MaterialCab cab; private List checked; - private int menuRes; - private final Context context; public AbsMultiSelectAdapter(Context context, @Nullable CabHolder cabHolder, @MenuRes int menuRes) { - this.cabHolder = cabHolder; - checked = new ArrayList<>(); - this.menuRes = menuRes; this.context = context; + this.cabHolder = cabHolder; + this.menuRes = menuRes; + + this.checked = new ArrayList<>(); } protected void setMultiSelectMenuRes(@MenuRes int menuRes) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/SearchQueryHelper.java b/app/src/main/java/com/kabouzeid/gramophone/helper/SearchQueryHelper.java deleted file mode 100644 index b11bd335..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/SearchQueryHelper.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.kabouzeid.gramophone.helper; - -import android.app.SearchManager; -import android.content.Context; -import android.os.Bundle; -import android.provider.MediaStore; -import androidx.annotation.NonNull; - -import com.kabouzeid.gramophone.loader.SongLoader; -import com.kabouzeid.gramophone.model.Song; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author Karim Abou Zeid (kabouzeid) - */ -public class SearchQueryHelper { - private static final String TITLE_SELECTION = "lower(" + MediaStore.Audio.AudioColumns.TITLE + ") = ?"; - private static final String ALBUM_SELECTION = "lower(" + MediaStore.Audio.AudioColumns.ALBUM + ") = ?"; - private static final String ARTIST_SELECTION = "lower(" + MediaStore.Audio.AudioColumns.ARTIST + ") = ?"; - private static final String AND = " AND "; - - @NonNull - public static List getSongs(@NonNull final Context context, @NonNull final Bundle extras) { - final String query = extras.getString(SearchManager.QUERY, null); - final String artistName = extras.getString(MediaStore.EXTRA_MEDIA_ARTIST, null); - final String albumName = extras.getString(MediaStore.EXTRA_MEDIA_ALBUM, null); - final String titleName = extras.getString(MediaStore.EXTRA_MEDIA_TITLE, null); - - List songs = new ArrayList<>(); - - if (artistName != null && albumName != null && titleName != null) { - songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, ARTIST_SELECTION + AND + ALBUM_SELECTION + AND + TITLE_SELECTION, new String[]{artistName.toLowerCase().trim(), albumName.toLowerCase().trim(), titleName.toLowerCase().trim()})); - } - if (!songs.isEmpty()) { - return songs; - } - - if (artistName != null && titleName != null) { - songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, ARTIST_SELECTION + AND + TITLE_SELECTION, new String[]{artistName.toLowerCase().trim(), titleName.toLowerCase().trim()})); - } - if (!songs.isEmpty()) { - return songs; - } - - if (albumName != null && titleName != null) { - songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, ALBUM_SELECTION + AND + TITLE_SELECTION, new String[]{albumName.toLowerCase().trim(), titleName.toLowerCase().trim()})); - } - if (!songs.isEmpty()) { - return songs; - } - - if (artistName != null) { - songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, ARTIST_SELECTION, new String[]{artistName.toLowerCase().trim()})); - } - if (!songs.isEmpty()) { - return songs; - } - - if (albumName != null) { - songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, ALBUM_SELECTION, new String[]{albumName.toLowerCase().trim()})); - } - if (!songs.isEmpty()) { - return songs; - } - - if (titleName != null) { - songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, TITLE_SELECTION, new String[]{titleName.toLowerCase().trim()})); - } - if (!songs.isEmpty()) { - return songs; - } - - - songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, ARTIST_SELECTION, new String[]{query.toLowerCase().trim()})); - if (!songs.isEmpty()) { - return songs; - } - - songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, ALBUM_SELECTION, new String[]{query.toLowerCase().trim()})); - if (!songs.isEmpty()) { - return songs; - } - - songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, TITLE_SELECTION, new String[]{query.toLowerCase().trim()})); - if (!songs.isEmpty()) { - return songs; - } - - return SongLoader.getSongs(context, query); - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index 34c1f49e..0b742af2 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -2,17 +2,14 @@ package com.kabouzeid.gramophone.ui.activities; import android.annotation.SuppressLint; import android.content.Intent; -import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Handler; -import android.provider.MediaStore; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.google.android.material.navigation.NavigationView; import androidx.fragment.app.Fragment; import androidx.drawerlayout.widget.DrawerLayout; -import android.util.Log; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -24,25 +21,16 @@ import com.bumptech.glide.Glide; import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.appthemehelper.util.ATHUtil; import com.kabouzeid.appthemehelper.util.NavigationViewUtil; -import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.glide.SongGlideRequest; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; -import com.kabouzeid.gramophone.helper.SearchQueryHelper; -import com.kabouzeid.gramophone.loader.AlbumLoader; -import com.kabouzeid.gramophone.loader.ArtistLoader; -import com.kabouzeid.gramophone.loader.PlaylistSongLoader; import com.kabouzeid.gramophone.model.Song; -import com.kabouzeid.gramophone.service.MusicService; import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.LibraryFragment; import com.kabouzeid.gramophone.util.MusicUtil; import com.sothree.slidinguppanel.SlidingUpPanelLayout; -import java.util.ArrayList; -import java.util.List; - import butterknife.BindView; import butterknife.ButterKnife; @@ -102,7 +90,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { NavigationViewUtil.setItemIconColors(navigationView, ATHUtil.resolveColor(this, R.attr.iconColor, ThemeStore.textColorSecondary(this)), accentColor); NavigationViewUtil.setItemTextColors(navigationView, ThemeStore.textColorPrimary(this), accentColor); - checkSetUpPro(); navigationView.setNavigationItemSelectedListener(menuItem -> { drawerLayout.closeDrawers(); switch (menuItem.getItemId()) { @@ -110,9 +97,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { navigationView.setCheckedItem(R.id.nav_library); setCurrentFragment(LibraryFragment.newInstance()); break; - case R.id.buy_pro: - new Handler().postDelayed(() -> startActivity(new Intent(MainActivity.this, PurchaseActivity.class)), 200); - break; case R.id.nav_settings: new Handler().postDelayed(() -> startActivity(new Intent(MainActivity.this, SettingsActivity.class)), 200); break; @@ -124,16 +108,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { }); } - private void checkSetUpPro() { - if (App.isProVersion()) { - setUpPro(); - } - } - - private void setUpPro() { - navigationView.getMenu().removeGroup(R.id.navigation_drawer_menu_category_buy_pro); - } - private void setUpDrawerLayout() { setUpNavigationView(); } @@ -174,7 +148,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { public void onServiceConnected() { super.onServiceConnected(); updateNavigationDrawerHeader(); - handlePlaybackIntent(getIntent()); } @Override @@ -199,71 +172,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { return super.handleBackPress() || (currentFragment != null && currentFragment.handleBackPress()); } - private void handlePlaybackIntent(@Nullable Intent intent) { - if (intent == null) { - return; - } - - Uri uri = intent.getData(); - String mimeType = intent.getType(); - boolean handled = false; - - if (intent.getAction() != null && intent.getAction().equals(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH)) { - final List songs = SearchQueryHelper.getSongs(this, intent.getExtras()); - if (MusicPlayerRemote.getShuffleMode() == MusicService.SHUFFLE_MODE_SHUFFLE) { - MusicPlayerRemote.openAndShuffleQueue(songs, true); - } else { - MusicPlayerRemote.openQueue(songs, 0, true); - } - handled = true; - } - - if (uri != null && uri.toString().length() > 0) { - MusicPlayerRemote.playFromUri(uri); - handled = true; - } else if (MediaStore.Audio.Playlists.CONTENT_TYPE.equals(mimeType)) { - final int id = (int) parseIdFromIntent(intent, "playlistId", "playlist"); - if (id >= 0) { - int position = intent.getIntExtra("position", 0); - List songs = new ArrayList<>(PlaylistSongLoader.getPlaylistSongList(this, id)); - MusicPlayerRemote.openQueue(songs, position, true); - handled = true; - } - } else if (MediaStore.Audio.Albums.CONTENT_TYPE.equals(mimeType)) { - final int id = (int) parseIdFromIntent(intent, "albumId", "album"); - if (id >= 0) { - int position = intent.getIntExtra("position", 0); - MusicPlayerRemote.openQueue(AlbumLoader.getAlbum(this, id).songs, position, true); - handled = true; - } - } else if (MediaStore.Audio.Artists.CONTENT_TYPE.equals(mimeType)) { - final int id = (int) parseIdFromIntent(intent, "artistId", "artist"); - if (id >= 0) { - int position = intent.getIntExtra("position", 0); - MusicPlayerRemote.openQueue(ArtistLoader.getArtist(this, id).getSongs(), position, true); - handled = true; - } - } - if (handled) { - setIntent(new Intent()); - } - } - - private long parseIdFromIntent(@NonNull Intent intent, String longKey, String stringKey) { - long id = intent.getLongExtra(longKey, -1); - if (id < 0) { - String idString = intent.getStringExtra(stringKey); - if (idString != null) { - try { - id = Long.parseLong(idString); - } catch (NumberFormatException e) { - Log.e(TAG, e.getMessage()); - } - } - } - return id; - } - @Override public void onPanelExpanded(View view) { super.onPanelExpanded(view); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PurchaseActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PurchaseActivity.java index 8c831e1b..2d02681e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PurchaseActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PurchaseActivity.java @@ -53,7 +53,7 @@ public class PurchaseActivity extends AbsBaseActivity implements BillingProcesso setSupportActionBar(toolbar); //noinspection ConstantConditions getSupportActionBar().setDisplayHomeAsUpEnabled(true); - getSupportActionBar().setTitle(getString(R.string.buy_pro)); + getSupportActionBar().setTitle(getString(R.string.app_name)); restoreButton.setEnabled(false); purchaseButton.setEnabled(false); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java index a7bb042e..c0f85352 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java @@ -9,7 +9,6 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.appcompat.widget.SearchView; import androidx.appcompat.widget.Toolbar; -import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -19,9 +18,6 @@ import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.SearchAdapter; import com.kabouzeid.gramophone.interfaces.LoaderIds; -import com.kabouzeid.gramophone.loader.AlbumLoader; -import com.kabouzeid.gramophone.loader.ArtistLoader; -import com.kabouzeid.gramophone.loader.SongLoader; import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader; import com.kabouzeid.gramophone.ui.activities.base.AbsMusicServiceActivity; import com.kabouzeid.gramophone.util.Util; @@ -192,25 +188,6 @@ public class SearchActivity extends AbsMusicServiceActivity implements SearchVie @Override public List loadInBackground() { List results = new ArrayList<>(); - if (!TextUtils.isEmpty(query)) { - List songs = SongLoader.getSongs(getContext(), query.trim()); - if (!songs.isEmpty()) { - results.add(getContext().getResources().getString(R.string.songs)); - results.addAll(songs); - } - - List artists = ArtistLoader.getArtists(getContext(), query.trim()); - if (!artists.isEmpty()) { - results.add(getContext().getResources().getString(R.string.artists)); - results.addAll(artists); - } - - List albums = AlbumLoader.getAlbums(getContext(), query.trim()); - if (!albums.isEmpty()) { - results.add(getContext().getResources().getString(R.string.albums)); - results.addAll(albums); - } - } return results; } } diff --git a/app/src/main/res/menu/menu_drawer.xml b/app/src/main/res/menu/menu_drawer.xml index 6325c842..f1e0457c 100644 --- a/app/src/main/res/menu/menu_drawer.xml +++ b/app/src/main/res/menu/menu_drawer.xml @@ -23,13 +23,4 @@ android:title="@string/action_about" /> - - - - diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 6cdcd922..0c6f8048 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -170,7 +170,6 @@ تم رفض الصلاحيات. تم رفض صلاحية الوصول إلى الذاكرة الخارجية. دعم التطوير - شراء Phonograph Pro شكراً لك! تمت استعادة عملية الشراء السابقة. يرجى إعادة تشغيل التطبيق للاستفادة من جميع المميزات. الإصدار diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index f3d242d8..db268ca6 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -170,7 +170,6 @@ "Oprávnění zamítnuta. " "Přístup k otevření externího úložiště zamítnut. " Podpořte vývoj - Zakoupit Phonograph Pro "Díky! " Předchozí nákup byl obnoven. Restartujte aplikaci pro využití všech funkcí. Verze diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 742ae3a9..1d697c4e 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -174,7 +174,6 @@ Berechtigungen verweigert. Die Berechtigung für den Zugriff auf den externen Speicher wurde verweigert. Unterstütze die Entwicklung - Phonograph Pro kaufen Vielen Dank! Vorheriger Kauf wiederhergestellt. Bitte starte die App neu, um alle Features nutzen zu können. Version diff --git a/app/src/main/res/values-en-rCA/strings.xml b/app/src/main/res/values-en-rCA/strings.xml index b37d2fd5..5564deb0 100644 --- a/app/src/main/res/values-en-rCA/strings.xml +++ b/app/src/main/res/values-en-rCA/strings.xml @@ -163,7 +163,6 @@ Permissions denied. Permission to access external storage denied. Support development - Buy Phonograph Pro Thank you! Restored previous purchase. Please restart the app to make use of all features. Version diff --git a/app/src/main/res/values-en-rGB/strings.xml b/app/src/main/res/values-en-rGB/strings.xml index 810388e4..01b8fa1a 100644 --- a/app/src/main/res/values-en-rGB/strings.xml +++ b/app/src/main/res/values-en-rGB/strings.xml @@ -169,7 +169,6 @@ Permissions denied. Permission to access external storage denied. Support development - Buy Phonograph Pro Thank you! Restored previous purchase. Please restart the app to make use of all features. Version diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 22c21339..0d02663f 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -174,7 +174,6 @@ Permisos denegados. Permiso para acceder al almacenamiento externo denegado. Apoyar desarrollo - Comprar Phonograph Pro ¡Gracias! Restablecida la última compra. Por favor, reinicie la aplicación para utilizar todas las características. Versión diff --git a/app/src/main/res/values-es-rUS/strings.xml b/app/src/main/res/values-es-rUS/strings.xml index 15ef3237..b66ab3cd 100644 --- a/app/src/main/res/values-es-rUS/strings.xml +++ b/app/src/main/res/values-es-rUS/strings.xml @@ -170,7 +170,6 @@ Permisos denegados. Permiso para acceder al almacenamiento externo denegado. Apoyar el desarrollo - Comprar Phonograph Pro ¡Gracias! Compra previa restaurada. Por favor reinicie la aplicación para hacer uso de todas las características. Versión diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 7042e6dc..ce1e17e6 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -174,7 +174,6 @@ Sinulla ei ole oikeuksia tähän. Oikeus päästä muistikortille evätty. Tue kehitystä - Osta Phonograph Pro Kiitos! Palautettiin aiempi ostos. Ole hyvä ja käynnistä sovellus uudelleen saadaksesi hyödyn uusista ominaisuuksista. Versio diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index f34e4d33..3feb5444 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -170,7 +170,6 @@ Autorisation refusée. Accès au stockage externe refusé. Faire un don - Achetez Phonograph Pro Merci ! Achats précédents restaurés. Veuillez redémarrer l\'application pour débloquer toutes les fonctionnalités Version diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 48ef151b..5a168d94 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -170,7 +170,6 @@ הרשאות נדחו. הרשאה לגישה לאחסון החיצוני נדחתה. תמיכה בפיתוח - קנה את Phonograph Pro תודה לכם! רכישה קודמת שוחזרה. אנא הפעל מחדש את האפליקציה כדי שתוכל להשתמש באפשרויות החדשות. גרסה diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index e3329715..de3a8dd0 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -170,7 +170,6 @@ Pristup odbijen. Dopuštenje za pristup vanjskoj pohrani je odbijeno. Podrži razvoj - Kupi Phonograph Pro Hvala vam! Prošle kupnje su vraćene. Molimo ponovno pokrenite aplikaciju kako bi omogućili nove značajke. Verzija diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 98a7ba1e..aecc200d 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -170,7 +170,6 @@ Jogosultságok megtagadva. Hozzáférés megtagadva a külső tárhelyhez. Fejlesztés támogatás - Vásárolja med a Phonograph Pro(t) Köszönöm! Az előző vásárlás helyreállítása. Kérjük, indítsa újra az alkalmazást az összes funkció használatához. Verzió diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 65584ec3..9af4c0ae 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -174,7 +174,6 @@ Izin ditolak Izin untuk akses ke memori eksternal ditolak. Dukung pengembangan - Beli Phonographo Pro Terima kasih! Mengembalikan pembelian sebelumnya. Mohon buka kembali aplikasi untuk memakai semua fitur. Versi diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 65584ec3..9af4c0ae 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -174,7 +174,6 @@ Izin ditolak Izin untuk akses ke memori eksternal ditolak. Dukung pengembangan - Beli Phonographo Pro Terima kasih! Mengembalikan pembelian sebelumnya. Mohon buka kembali aplikasi untuk memakai semua fitur. Versi diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index a503d925..38fda114 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -174,7 +174,6 @@ Permesso negato. Permesso per accedere alla memoria esterna negato. Supporta lo sviluppo - Acquista Phonograph Pro Grazie! Ripristinato l\'acquisto precedente. Riavvia l\'app per utilizzare tutte le funzionalità. Versione diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 48ef151b..5a168d94 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -170,7 +170,6 @@ הרשאות נדחו. הרשאה לגישה לאחסון החיצוני נדחתה. תמיכה בפיתוח - קנה את Phonograph Pro תודה לכם! רכישה קודמת שוחזרה. אנא הפעל מחדש את האפליקציה כדי שתוכל להשתמש באפשרויות החדשות. גרסה diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 27f6e054..958bccbc 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -170,7 +170,6 @@ 権限が拒否されました 内部ストレージへのアクセス権限が拒否されました 開発を支援 - Phonograph Proを購入する ありがとう! 過去の購入を復元しました。すべての機能を使用するには、アプリを再起動してください。 バージョン diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 163f2b55..da87728c 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -172,7 +172,6 @@ 권한이 거부되었습니다. 외부 저장소 접근 권한이 거부되었습니다. 개발 지원 - 프로 구매하기 감사합니다! 구매를 복원했습니다. 모든 기능을 사용하시려면 앱을 다시 시작해 주세요. 버전 diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index d930d095..9c2eebef 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -170,7 +170,6 @@ Machtiging geweigerd. Toegang tot externe opslag geweigerd. Ondersteun ontwikkeling - Phonograph Pro kopen Dankjewel! Verleden aankoop hersteld. Gelieve de app te herstarten om alle functies te benutten. Versie diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 319f68d7..d23a3d2a 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -170,7 +170,6 @@ Odmówiono zezwolenia Pozwolenie na dostęp do pamięci zewnętrznej odrzucone Wspomóż rozwój - Kup wersję Pro Dziękuję! Przywrócono poprzedni zakup. Zrestartuj aplikację aby użyć wszystkich funkcji. Wersja diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 760054d5..eb86202e 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -174,7 +174,6 @@ Permissões negadas. Permissão para acessar armazenamento externo negado. Apoiar o desenvolvimento - Habilitar versão Pro do Phonograph Obrigado! Restituídas compras anteriores. Por favor, reinicie o aplicativo pra usufruir dos novos recursos. Versão diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 4c5d0dcd..e780f201 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -170,7 +170,6 @@ Permisiune refuzată. Permisiunea de a accesa stocarea externă a fost respinsă. Susţineţi dezvoltarea - Cumpăraţi Phonograph Pro Mulţumesc! A fost restaurată achiziția anterioară. Reporniți aplicația pentru a utiliza toate funcțiile. Versiune diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index fdb9880c..de7ae3e3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -174,7 +174,6 @@ В разрешениях отказано. В разрешении на доступ к внешнему хранилищу отказано. Поддержать разработку - Купить Phonograph Pro Спасибо! Восстановлена предыдущая покупка. Пожалуйста, перезагрузите приложение, чтобы использовать все функции. Версия diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index cdb2c921..76f2de08 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -170,7 +170,6 @@ İzinler reddedildi. Harici depolamaya erişim izin reddedildi. Geliştirmeyi destekleyin - Phonograph Pro\'yu Satın Alın Teşekkürler! Önceki satın alma geri yüklendi. Tüm özellikleri kullanabilmek için lütfen uygulamayı tekrar başlatın. Sürüm diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 66868633..df5c1908 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -169,7 +169,6 @@ У доступі відмовлено. Дозвіл на доступ до зовнішньої пам\'яті відмовлено. Підтримати розробника - Придбайте Phonograph Pro Щиро дякую! Відновлено попередню покупку. Перезапустіть додаток, щоб скористатися всіма функціями. Версія diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 9c588a87..fefa93c2 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -162,7 +162,6 @@ Quyền hạn bị từ chối. Quyền truy cập lưu trữ bên ngoài bị từ chối. Hỗ trợ phát triển - Mua Phonograph Pro Cảm ơn! Khôi phục mua trước đó. Vui lòng khởi động lại ứng dụng để sử dụng tất cả các tính năng. Phiên bản diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 6028699c..4c57aae3 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -172,7 +172,6 @@ 未能获取权限。 访问外部存储权限被拒绝。 支持开发者 - 购买 Phonograph Pro 非常感谢您! 已恢复购买状态。请重启应用以使用所有功能。 版本 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 42a5ecf6..2f7a8aed 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -175,7 +175,6 @@ 存取被拒 無法取得存取外部儲存空間的權限。 支援開發 - 購買 Phonograph Pro 感謝您! 恢復購買成功。請重啟應用以使用完整功能。 版本 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 01e485d2..52ac8a21 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -184,7 +184,6 @@ Permissions denied. Permission to access external storage denied. Support development - Buy Phonograph Pro Thank you! Restored previous purchase. Please restart the app to make use of all features. Version