Skip to content
This repository has been archived by the owner on Jan 6, 2022. It is now read-only.

Commit

Permalink
Merge branch 'indev' - v 1.4
Browse files Browse the repository at this point in the history
  • Loading branch information
vhaudiquet committed Jan 25, 2019
2 parents 1657f7b + f847aff commit 274a51f
Show file tree
Hide file tree
Showing 35 changed files with 787 additions and 145 deletions.
65 changes: 65 additions & 0 deletions .idea/assetWizardSettings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified .idea/caches/build_file_checksums.ser
Binary file not shown.
5 changes: 1 addition & 4 deletions app/app.iml
Expand Up @@ -96,6 +96,7 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-apk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-main-apk-res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaPrecompile" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
Expand Down Expand Up @@ -143,8 +144,6 @@
<orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.3.1@jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:rules-0.5" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:support-core-utils-27.1.1" level="project" />
<orderEntry type="library" name="Gradle: ch.acra:acra-core-5.1.3" level="project" />
<orderEntry type="library" name="Gradle: ch.acra:acra-javacore:5.1.3@jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:2.0.1@jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: javax.inject:javax.inject:1@jar" level="project" />
<orderEntry type="library" name="Gradle: com.deezer.sdk:deezer-sdk-0.11.2:@aar" level="project" />
Expand All @@ -154,7 +153,6 @@
<orderEntry type="library" name="Gradle: android.arch.core:runtime-1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3@jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: com.android.support.test:runner-0.5" level="project" />
<orderEntry type="library" name="Gradle: ch.acra:acra-toast-5.1.3" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:design-27.1.1" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:appcompat-v7-27.1.1" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:customtabs-25.1.1" level="project" />
Expand All @@ -164,7 +162,6 @@
<orderEntry type="library" name="Gradle: net.jthink:jaudiotagger:2.2.3@jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3@jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3@jar" level="project" />
<orderEntry type="library" name="Gradle: ch.acra:acra-http-5.1.3" level="project" />
<orderEntry type="library" name="Gradle: android.arch.core:common:1.1.0@jar" level="project" />
<orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime-1.1.0" level="project" />
<orderEntry type="module" module-name="library" />
Expand Down
7 changes: 2 additions & 5 deletions app/build.gradle
Expand Up @@ -7,8 +7,8 @@ android {
applicationId "v.blade"
minSdkVersion 16
targetSdkVersion 27
versionCode 13
versionName "1.3.1"
versionCode 14
versionName "1.4"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
compileOptions {
Expand Down Expand Up @@ -40,9 +40,6 @@ dependencies {
//playback (play sdk)
//deezer
implementation 'com.deezer.sdk:deezer-sdk-0.11.2@aar'
//acra
implementation 'ch.acra:acra-http:5.1.3'
implementation 'ch.acra:acra-toast:5.1.3'
//compat libs
implementation 'com.android.support:support-compat:27.1.1'
implementation 'com.android.support:preference-v7:27.1.1'
Expand Down
Binary file not shown.
14 changes: 11 additions & 3 deletions app/src/main/AndroidManifest.xml
Expand Up @@ -98,13 +98,21 @@
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.settings.SettingsActivity"/>
</activity>
<activity android:name=".ui.settings.LinkManagerActivity"
android:label="@string/link_manager"
android:parentActivityName=".ui.settings.SettingsActivity">
<activity
android:name=".ui.settings.LinkManagerActivity"
android:label="@string/link_manager"
android:parentActivityName=".ui.settings.SettingsActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.settings.SettingsActivity"/>
</activity>
<activity android:name=".ui.LyricsActivity"
android:label="@string/lyrics"
android:parentActivityName=".ui.PlayActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.PlayActivity"/>
</activity>
</application>

</manifest>
24 changes: 2 additions & 22 deletions app/src/main/java/v/blade/BladeApplication.java
Expand Up @@ -3,13 +3,6 @@
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.widget.Toast;
import org.acra.ACRA;
import org.acra.config.CoreConfigurationBuilder;
import org.acra.config.HttpSenderConfigurationBuilder;
import org.acra.config.ToastConfigurationBuilder;
import org.acra.data.StringFormat;
import org.acra.sender.HttpSender;
import v.blade.ui.settings.SettingsActivity;
import v.blade.ui.settings.ThemesActivity;

Expand All @@ -20,21 +13,6 @@ protected void attachBaseContext(Context base)
{
super.attachBaseContext(base);

//initialize ACRA
CoreConfigurationBuilder builder = new CoreConfigurationBuilder(this);
builder.setBuildConfigClass(BuildConfig.class)
.setReportFormat(StringFormat.JSON);
builder.getPluginConfigurationBuilder(ToastConfigurationBuilder.class)
.setResText(R.string.oncrash)
.setLength(Toast.LENGTH_LONG).setEnabled(true);
builder.getPluginConfigurationBuilder(HttpSenderConfigurationBuilder.class)
.setUri("http://valou3433.fr:5984/acra-blade/_design/acra-storage/_update/report")
.setBasicAuthLogin("REPORTER")
.setBasicAuthPassword("thereporterpassword")
.setHttpMethod(HttpSender.Method.PUT)
.setEnabled(true);
ACRA.init(this, builder);

//load saved theme
SharedPreferences generalPrefs = base.getSharedPreferences(SettingsActivity.PREFERENCES_GENERAL_FILE_NAME, Context.MODE_PRIVATE);
String theme = generalPrefs.getString("theme", null);
Expand All @@ -48,6 +26,8 @@ else if(theme.equalsIgnoreCase("green"))
ThemesActivity.setThemeToGreen();
else if(theme.equalsIgnoreCase("red"))
ThemesActivity.setThemeToRed();
else if(theme.equalsIgnoreCase("dark"))
ThemesActivity.setThemeToDark();
}
}
}
158 changes: 158 additions & 0 deletions app/src/main/java/v/blade/library/Folder.java
@@ -0,0 +1,158 @@
package v.blade.library;

import android.os.Environment;
import v.blade.R;

import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Folder extends LibraryObject
{
public static final Folder root = new Folder("/", new ArrayList<>());
public static final String stoRootPath = Environment.getExternalStorageDirectory().getAbsolutePath();

private ArrayList<LibraryObject> objects;
private String path = null;

public Folder(String name, ArrayList<LibraryObject> objs)
{
this.name = name;
this.objects = objs;
}
public Folder(String name, String path)
{
this.name = name;
this.path = path;
}

public ArrayList<LibraryObject> getContent()
{
if(objects == null && path != null)
objects = fromRealFolder(path);

return objects;
}

public int getSongPosition(Song song)
{
int tr = 0;
for(LibraryObject e : getContent())
{
if(e instanceof Song)
{
if(e == song) return tr;
tr++;
}
}
return 0;
}
public boolean contains(String f)
{
for(LibraryObject o : objects)
if(o.getName().equals(f)) return true;
return false;
}
public Folder getFolder(String f)
{
for(LibraryObject o : objects)
if(o.getName().equals(f) && o instanceof Folder) return ((Folder) o);
return null;
}
public Folder createFolder(String f)
{
Folder tr = new Folder(f, new ArrayList<>());
objects.add(tr);
return tr;
}

/*
public static void addToFolder(String path, LibraryObject object)
{
path = path.replaceAll(Environment.getExternalStorageDirectory().getAbsolutePath(), "/" + (Environment.isExternalStorageRemovable() ? LibraryService.appContext.getResources().getString(R.string.external_storage) : LibraryService.appContext.getResources().getString(R.string.internal_storage)));
String[] sp = path.split("/");
int len = sp.length;
Folder current = root;
for(int i = 1; i<len-1;i++)
{
String s = sp[i];
Folder got = current.getFolder(s);
if(got != null) current = got;
else current = current.createFolder(s);
}
current.objects.add(object);
}
*/

public void sortFolder()
{
Collections.sort(objects, new Comparator<LibraryObject>()
{
public int compare(LibraryObject a, LibraryObject b)
{
if(a instanceof Folder && !(b instanceof Folder)) return 0;
else if(!(a instanceof Folder) && b instanceof Folder) return 1;
if(a.getName() != null && b.getName() != null) return a.getName().toLowerCase().compareTo(b.getName().toLowerCase());
else return 0;
}
});
}

/*
public static void sortFolders(Folder f)
{
f.sortFolder();
for(LibraryObject l : f.getContent())
{
if(l instanceof Folder) sortFolders((Folder) l);
}
}
*/

public static void initFolders()
{
root.objects.add(new Folder(LibraryService.appContext.getResources().getString(R.string.internal_storage), stoRootPath));
}

public static ArrayList<Song> getSongContent(Folder f)
{
ArrayList<Song> tr = new ArrayList<>();
for(LibraryObject e : f.getContent())
if(e instanceof Folder) tr.addAll(getSongContent((Folder) e));
else if(e instanceof Song) tr.add((Song) e);
return tr;
}

public static ArrayList<LibraryObject> fromRealFolder(String path)
{
File folder = new File(path);
ArrayList<LibraryObject> tr = new ArrayList<>();
for(File f : folder.listFiles())
{
if(f.isDirectory())
{
Folder obj = new Folder(f.getName(), f.getAbsolutePath());
tr.add(obj);
}
else if(f.isFile())
{
for(Song s : LibraryService.getSongs())
if(s.getPath() != null && s.getPath().equals(f.getPath())) tr.add(s);
}
}

Collections.sort(tr, new Comparator<LibraryObject>()
{
public int compare(LibraryObject a, LibraryObject b)
{
if(a instanceof Folder && !(b instanceof Folder)) return 0;
else if(!(a instanceof Folder) && b instanceof Folder) return 1;
if(a.getName() != null && b.getName() != null) return a.getName().toLowerCase().compareTo(b.getName().toLowerCase());
else return 0;
}
});

return tr;
}
}
15 changes: 15 additions & 0 deletions app/src/main/java/v/blade/library/LibraryService.java
Expand Up @@ -7,6 +7,8 @@
import android.net.Uri;
import android.os.Looper;
import android.util.Log;
import android.widget.Toast;
import v.blade.R;
import v.blade.library.sources.Source;
import v.blade.ui.settings.SettingsActivity;

Expand All @@ -26,6 +28,7 @@ public class LibraryService
public static final String CACHE_SEPARATOR = "##";

/* user preferences */
public static final boolean FOLDER_VIEW_ENABLED = true ;
public static boolean configured = false;
public static boolean SAVE_PLAYLISTS_TO_LIBRARY;
public static boolean REGISTER_SONGS_BETTER_SOURCES;
Expand Down Expand Up @@ -119,6 +122,15 @@ private static void registerCachedSongs()
Log.println(Log.ERROR, "[BLADE-CACHE]", "Cache restore : IOException");
e.printStackTrace();
}
catch(NumberFormatException e1)
{
Log.println(Log.ERROR, "[BLADE-CACHE]", "Cache restore : NumberFormatException");
e1.printStackTrace();

//cleaning cache
betterSourceFile.delete();
Toast.makeText(appContext, R.string.cache_cleaned, Toast.LENGTH_LONG).show();
}
}

registerSongLinks();
Expand Down Expand Up @@ -167,6 +179,9 @@ public static void configureLibrary(Context appContext)
//setup each source
for(Source s : Source.SOURCES) s.initConfig(accountsPrefs);

//init folders
Folder.initFolders();

configured = true;
}

Expand Down

0 comments on commit 274a51f

Please sign in to comment.