Commit e669a260 authored by Donald's avatar Donald

changelog stuff

improvements & clean
parent 64860bcf
v0.6-beta-1
==================
* Fixed crash on startup and some random crash
* Fixed crash opening video (Nougat)
* fixed zoom out issue with SubScaling ImageView enabled
* Updated translations
* General improvements
\ No newline at end of file
apply plugin: 'com.android.application'
repositories {
jcenter()
maven { url "http://repo1.maven.org/maven2" }
maven { url "http://dl.bintray.com/dasar/maven" }
maven { url "https://jitpack.io" }
}
......
#### Contributing
###### Code & Issues
If you are a developer and you wish to contribute to the app please fork the project
and submit a pull request if possible make it on the [dev branch](https://github.com/HoraApps/LeafPic/tree/dev).
You can trace the status of known issues on [waffle.io](https://waffle.io/HoraApps/LeafPic),
also feel free to file a new issue (helpful description, screenshots and logcat are appreciated), or send me an [email](mailto:dnld.sht@gmail.com) if you have any questions.
###### Translations
If you are able to contribute with a new translation of a missing language or if you want to improve an existing one, we greatly appreciate any suggestion!
The project uses [Crowdin](https://crowdin.com/project/leafpic), a platform that allows anybody to contribute to translating the app
#### Licensing
LeafPic is licensed under the [GNU v3 Public License](https://github.com/HoraApps/LeafPic/blob/master/LICENSE).
In addition to the terms set by the GNU v3 Public License, we ask that if you use any code from this repository that you send us a message to let us know.
\ No newline at end of file
v0.6-beta-1
==================
- Fixed crash on startup and some random crash
- Fixed crash opening video (Nougat)
- fixed zoom out issue with SubScaling ImageView enabled
- Updated translations
- General improvements
\ No newline at end of file
......@@ -44,7 +44,7 @@ public class AboutActivity extends ThemedActivity {
toolbar = (Toolbar) findViewById(R.id.toolbar);
scr = (ScrollView)findViewById(R.id.aboutAct_scrollView);
cts = new CustomTabService(AboutActivity.this,getPrimaryColor());
cts = new CustomTabService(AboutActivity.this);
initUi();
setUpActions();
......@@ -92,7 +92,7 @@ public class AboutActivity extends ThemedActivity {
findViewById(R.id.ll_about_changelog).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog alertDialog = AlertDialogsHelper.changelogDialog(AboutActivity.this);
AlertDialog alertDialog = AlertDialogsHelper.showChangelogDialog(AboutActivity.this);
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.ok_action).toUpperCase(), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {}
......
......@@ -193,29 +193,6 @@ public class MainActivity extends SharedMediaActivity {
firstLaunch = false;
}
private void showChangelog(){
String titleHtml = "<font color='" + getTextColor() + "'>" + getString(R.string.changelog) + " <b>" + BuildConfig.VERSION_NAME + "</b>" + "</font>";
String buttonHtml= "<font color='" + getAccentColor() + "'>" + getString(R.string.view).toUpperCase() + "</font>";
Snackbar snackbar = Snackbar
.make(coordinatorMainLayout, StringUtils.html(titleHtml), Snackbar.LENGTH_LONG)
.setAction(StringUtils.html(buttonHtml), new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog alertDialog = AlertDialogsHelper.changelogDialog(MainActivity.this);
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.ok_action).toUpperCase(), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {}
});
alertDialog.show();
}
});
View snackbarView = snackbar.getView();
snackbarView.setBackgroundColor(getBackgroundColor());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
snackbarView.setElevation(getResources().getDimension(R.dimen.snackbar_elevation));
}
snackbar.show();
}
private void displayCurrentAlbumMedia(boolean reload) {
toolbar.setTitle(getAlbum().getName());
......@@ -425,14 +402,35 @@ public class MainActivity extends SharedMediaActivity {
}
@Override
public void updateUiElements() {
protected void onPostResume() {
super.onPostResume();
new Thread(new Runnable() {
@Override
public void run() {
if (SP.getInt("last_version_code", 0) < BuildConfig.VERSION_CODE) {
String titleHtml = String.format(Locale.ENGLISH, "<font color='%d'>%s <b>%s</b></font>", getTextColor(), getString(R.string.changelog), BuildConfig.VERSION_NAME),
buttonHtml = String.format(Locale.ENGLISH, "<font color='%d'>%s</font>", getAccentColor(), getString(R.string.view).toUpperCase());
Snackbar snackbar = Snackbar
.make(coordinatorMainLayout, StringUtils.html(titleHtml), Snackbar.LENGTH_LONG)
.setAction(StringUtils.html(buttonHtml), new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialogsHelper.showChangelogDialog(MainActivity.this);
}
});
View snackbarView = snackbar.getView();
snackbarView.setBackgroundColor(getBackgroundColor());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
snackbarView.setElevation(getResources().getDimension(R.dimen.snackbar_elevation));
snackbar.show();
SP.putInt("last_version_code", BuildConfig.VERSION_CODE);
}
}
}).start();
}
/** CHANGELOG **/
int versionCode = BuildConfig.VERSION_CODE;
if (SP.getInt("last_version_code", 0) != versionCode) {
showChangelog();
SP.putInt("last_version_code", versionCode);
}
@Override
public void updateUiElements() {
//TODO: MUST BE FIXED
toolbar.setPopupTheme(getPopupToolbarStyle());
......@@ -507,39 +505,6 @@ public class MainActivity extends SharedMediaActivity {
}
}
//region TESTING
// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
// @Override
// public final void onActivityResult(final int requestCode, final int resultCode, final Intent resultData) {
// if (resultCode == RESULT_OK) {
// if (requestCode == REQUEST_CODE_SD_CARD_PERMISSIONS) {
// Uri treeUri = resultData.getData();
// // Persist URI in shared preference so that you can use it later.
// ContentHelper.saveSdCardInfo(getApplicationContext(), treeUri);
// getContentResolver().takePersistableUriPermission(treeUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// Toast.makeText(this, R.string.got_permission_wr_sdcard, Toast.LENGTH_SHORT).choseProvider();
// }
// }
// }
// //endregion
//
// private void requestSdCardPermissions() {
// final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this, getDialogStyle());
//
// AlertDialogsHelper.getTextDialog(MainActivity.this, dialogBuilder,
// R.string.sd_card_write_permission_title, R.string.sd_card_permissions_message);
//
// dialogBuilder.setPositiveButton(getString(R.string.ok_action).toUpperCase(), new DialogInterface.OnClickListener() {
// @Override
// public void onClick(DialogInterface dialogInterface, int i) {
// if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP)
// startActivityForResult(new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE), REQUEST_CODE_SD_CARD_PERMISSIONS);
// }
// });
// dialogBuilder.choseProvider();
// }
private void updateSelectedStuff() {
if (albumsMode) {
if (editMode) toolbar.setTitle(getAlbums().getSelectedCount() + "/" + getAlbums().albums.size());
......@@ -595,8 +560,8 @@ public class MainActivity extends SharedMediaActivity {
((TextView) findViewById(R.id.nothing_to_show)).setTextColor(getSubTextColor());
((LinearLayout) findViewById(R.id.ll_nothing_to_show)).setVisibility(
albumsMode && getAlbums().albums.size() == 0 ||
!albumsMode && getAlbum().getMedia().size() == 0
? View.VISIBLE : View.GONE);
!albumsMode && getAlbum().getMedia().size() == 0
? View.VISIBLE : View.GONE);
}
//region MENU
......
......@@ -27,11 +27,13 @@ import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.mikepenz.community_material_typeface_library.CommunityMaterial;
import com.mikepenz.google_material_typeface_library.GoogleMaterial;
import com.mikepenz.iconics.view.IconicsImageView;
import com.yalantis.ucrop.UCrop;
import org.horaapps.leafpic.R;
......@@ -56,6 +58,7 @@ import org.horaapps.leafpic.util.StringUtils;
import org.horaapps.leafpic.views.HackyViewPager;
import java.io.File;
import java.io.InputStream;
/**
* Created by dnld on 18/02/16.
......@@ -86,11 +89,12 @@ public class SingleMediaActivity extends SharedMediaActivity {
if (savedInstanceState != null)
mViewPager.setLocked(savedInstanceState.getBoolean(ISLOCKED_ARG, false));
try
{
if ((getIntent().getAction().equals(Intent.ACTION_VIEW) || getIntent().getAction().equals(ACTION_REVIEW)) && getIntent().getData() != null) {
String path = ContentHelper.getMediaPath(getApplicationContext(), getIntent().getData());
Album album = null;
if (path != null) {
album = ContentProviderHelper.getAlbumFromMedia(getApplicationContext(), path);
if (album != null) {
......@@ -99,19 +103,27 @@ public class SingleMediaActivity extends SharedMediaActivity {
}
}
if (album == null) {
if (album == null || album.getCount() == 0) {
Uri mediaUri = getIntent().getData();
Media media;
album = new Album(mediaUri.toString(), mediaUri.getPath());
album.settings = AlbumSettings.getDefaults();
album.addMedia(new Media(getApplicationContext(), mediaUri));
album.setCount(1);
try {
InputStream inputStream = getContentResolver().openInputStream(mediaUri);
if (inputStream != null) inputStream.close();
} catch (Exception ex) {
((TextView) findViewById(R.id.nothing_to_show)).setText(R.string.error_occured_open_media);
findViewById(R.id.ll_nothing_to_show).setVisibility(View.VISIBLE);
}
media = new Media(getApplicationContext(), mediaUri);
if (album.addMedia(media)) album.setCount(1);
customUri = true;
}
getAlbums().addAlbum(0, album);
}
} catch (Exception e) { e.printStackTrace(); }
adapter = new MediaPagerAdapter(getSupportFragmentManager(), getAlbum().getMedia());
initUi();
}
......@@ -183,6 +195,9 @@ public class SingleMediaActivity extends SharedMediaActivity {
setNavBarColor();
setRecentApp(getString(R.string.app_name));
((IconicsImageView) findViewById(R.id.nothing_to_show_icon)).setColor(getSubTextColor());
((TextView) findViewById(R.id.nothing_to_show)).setTextColor(getSubTextColor());
/**** SETTINGS ****/
......@@ -492,7 +507,7 @@ public class SingleMediaActivity extends SharedMediaActivity {
Intent editIntent = new Intent(Intent.ACTION_EDIT);
editIntent.setDataAndType(getAlbum().getCurrentMedia().getUri(), getAlbum().getCurrentMedia().getMimeType());
editIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(editIntent, "Edit with"));
startActivity(Intent.createChooser(editIntent, getString(R.string.edit_with)));
break;
case R.id.action_details:
......
......@@ -81,22 +81,22 @@ public class ContentProviderHelper {
Cursor cur = context.getContentResolver().query(MediaStore.Files.getContentUri("external"),
new String[]{ MediaStore.Files.FileColumns.PARENT },
MediaStore.Files.FileColumns.DATA+"=?", new String[]{ mediaPath }, null);
if(cur != null && cur.moveToNext()){
if(cur != null && cur.moveToFirst()){
id = cur.getLong(0);
cur.close();
}
return id;
}
@TestOnly
public static ArrayList<Media> getAllMedia(Context context) {
@TestOnly public static ArrayList<Media> getAllMedia(Context context) {
ArrayList<Media> list = new ArrayList<Media>();
// TODO: 11/21/16 implement
return list;
}
@TestOnly
private String getThumbnailPath(Context context, long id) {
@TestOnly private String getThumbnailPath(Context context, long id) {
Cursor cursor = MediaStore.Images.Thumbnails.queryMiniThumbnail(
context.getContentResolver(), id, MediaStore.Images.Thumbnails.MINI_KIND,
new String[]{ MediaStore.Images.Thumbnails.DATA });
......
......@@ -41,7 +41,7 @@ public class Media implements Parcelable, Serializable {
private String mimeType = "unknown";
private int orientation = 0;
private String uri = null;
private String uriString = null;
private long size = -1;
private boolean selected = false;
......@@ -66,7 +66,7 @@ public class Media implements Parcelable, Serializable {
}
public Media(Context context, Uri mediaUri) {
this.uri = mediaUri.toString();
this.uriString = mediaUri.toString();
this.path = null;
this.mimeType = context.getContentResolver().getType(getUri());
}
......@@ -80,7 +80,7 @@ public class Media implements Parcelable, Serializable {
}
public void setUri(String uriString) {
this.uri = uriString;
this.uriString = uriString;
}
public void setPath(String path) {
......@@ -106,7 +106,7 @@ public class Media implements Parcelable, Serializable {
public boolean isVideo() { return mimeType.startsWith("video"); }
public Uri getUri() {
return uri != null ? Uri.parse(uri) : Uri.fromFile(new File(path));
return uriString != null ? Uri.parse(uriString) : Uri.fromFile(new File(path));
}
private InputStream getInputStream(ContentResolver contentResolver) throws Exception {
......
package org.horaapps.leafpic.util;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.PorterDuff;
import android.graphics.Typeface;
......@@ -23,12 +25,14 @@ import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.drew.lang.GeoLocation;
import org.horaapps.leafpic.BuildConfig;
import org.horaapps.leafpic.R;
import org.horaapps.leafpic.activities.base.ThemedActivity;
import org.horaapps.leafpic.model.Media;
import org.horaapps.leafpic.model.base.MediaDetailsMap;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.Locale;
......@@ -93,7 +97,7 @@ public class AlertDialogsHelper {
dialogTitle.setBackgroundColor(activity.getPrimaryColor());
((CardView) dialogLayout.findViewById(org.horaapps.leafpic.R.id.progress_dialog_card)).setCardBackgroundColor(activity.getCardBackgroundColor());
((ProgressBar) dialogLayout.findViewById(org.horaapps.leafpic.R.id.progress_dialog_loading)).getIndeterminateDrawable().setColorFilter(activity.getPrimaryColor(), android.graphics
.PorterDuff.Mode.SRC_ATOP);
.PorterDuff.Mode.SRC_ATOP);
dialogTitle.setText(title);
dialogMessage.setText(message);
......@@ -186,8 +190,8 @@ public class AlertDialogsHelper {
loadDetails(dialogLayout ,activity , metadata);
}
public static AlertDialog changelogDialog(final ThemedActivity activity) {
AlertDialog.Builder changelogDialogBuilder = new AlertDialog.Builder(activity, activity.getDialogStyle());
public static AlertDialog showChangelogDialog(final ThemedActivity activity) {
final AlertDialog.Builder changelogDialogBuilder = new AlertDialog.Builder(activity, activity.getDialogStyle());
View dialogLayout = activity.getLayoutInflater().inflate(R.layout.dialog_changelog, null);
TextView dialogTitle = (TextView) dialogLayout.findViewById(R.id.dialog_changelog_title);
......@@ -199,77 +203,42 @@ public class AlertDialogsHelper {
dialogTitle.setBackgroundColor(activity.getPrimaryColor());
activity.getThemeHelper().setScrollViewColor(scrChangelog);
dialogTitle.setText(StringUtils.html(String.format(Locale.ENGLISH,"%s <font color='%d'>%s</font>", activity.getString(R.string.changelog), activity.getAccentColor(), BuildConfig.VERSION_NAME )));
Bypass bypass = new Bypass();
String markdownString = "An h1 header\n" +
"============\n" +
"\n" +
"Paragraphs are separated by a blank line.\n" +
"\n" +
"2nd paragraph. *Italic*, **bold**, and `monospace`. Itemized lists\n" +
"look like:\n" +
"\n" +
" * this one\n" +
" * that one\n" +
" * the other one\n" +
"\n" +
"Note that --- not considering the asterisk --- the actual text\n" +
"content starts at 4-columns in.\n" +
"\n" +
"> Block quotes are\n" +
"> written like so.\n" +
">\n" +
"> They can span multiple paragraphs,\n" +
"> if you like.\n" +
"\n" +
"Use 3 dashes for an em-dash. Use 2 dashes for ranges (ex., \"it's all\n" +
"in chapters 12--14\"). Three dots ... will be converted to an ellipsis.\n" +
"Unicode is supported. ☺\n" +
"\n" +
"\n" +
"\n" +
"An h2 header\n" +
"------------\n" +
"\n" +
"Here's a numbered list:\n" +
"\n" +
" 1. first item\n" +
" 2. second item\n" +
" 3. third item\n" +
"\n" +
"Note again how the actual text starts at 4 columns in (4 characters\n" +
"from the left side). Here's a code sample:\n" +
"\n" +
" # Let me re-iterate ...\n" +
" for i in 1 .. 10 { do-something(i) }\n" +
"\n" +
"As you probably guessed, indented 4 spaces. By the way, instead of\n" +
"indenting the block, you can use delimited blocks, if you like:\n" +
"\n" +
"~~~\n" +
"define foobar() {\n" +
" print \"Welcome to flavor country!\";\n" +
"}\n" +
"~~~\n" +
"\n" +
"(which makes copying & pasting easier). You can optionally mark the\n" +
"delimited block for Pandoc to syntax highlight it:\n" +
"\n" +
"~~~python\n" +
"import time\n" +
"# Quick, count to ten!\n" +
"for i in range(10):\n" +
" # (but not *too* quick)\n" +
" time.sleep(0.5)\n" +
" print i\n" +
"~~~";
dialogTitle.setText(activity.getString(R.string.changelog));
Bypass bypass = new Bypass(activity);
String markdownString;
try {
markdownString = getChangeLogFromAssets(activity);
} catch (IOException e) {
CustomTabService.openUrl(activity, "https://github.com/HoraApps/LeafPic/blob/dev/CHANGELOG.md");
return null;
}
CharSequence string = bypass.markdownToSpannable(markdownString);
dialogMessage.setText(string);
dialogMessage.setMovementMethod(LinkMovementMethod.getInstance());
dialogMessage.setTextColor(activity.getTextColor());
changelogDialogBuilder.setView(dialogLayout);
return changelogDialogBuilder.create();
changelogDialogBuilder.setPositiveButton(activity.getString(R.string.ok_action).toUpperCase(), null);
changelogDialogBuilder.setNeutralButton(activity.getString(R.string.show_full).toUpperCase(), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
CustomTabService.openUrl(activity, "https://github.com/HoraApps/LeafPic/blob/dev/CHANGELOG.md");
}
});
return changelogDialogBuilder.show();
}
private static String getChangeLogFromAssets(Context context) throws IOException {
InputStream inputStream = context.getAssets().open("latest_changelog.md");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int i;
while ((i = inputStream.read()) != -1)
outputStream.write(i);
inputStream.close();
return outputStream.toString();
}
}
......@@ -526,13 +526,13 @@ public class ContentHelper {
//easy way
String a = getDataColumn(context, uri, null, null);
if (a != null) return a;
} catch (Exception ignored){ }
} catch (Exception ignored) { }
// work around for general uri generated by FileProvider.getUriForFile()
String[] split = uri.getPath().split("/");
int z = -1;
for (int i = 0; i < split.length; i++) {
int z = -1, len = split.length;
for (int i = 0; i < len; i++) {
if (split[i].equals("external_files")) {
z = i;
break;
......@@ -541,7 +541,7 @@ public class ContentHelper {
if(z != -1) {
StringBuilder partialPath = new StringBuilder();
for (int i = z + 1; i < split.length; i++)
for (int i = z + 1; i < len; i++)
partialPath.append(split[i]).append('/');
String p = partialPath.toString();
......
package org.horaapps.leafpic.util;
import android.app.Activity;
import android.content.ComponentName;
import android.net.Uri;
import android.support.customtabs.CustomTabsClient;
......@@ -9,47 +8,53 @@ import android.support.customtabs.CustomTabsServiceConnection;
import android.support.customtabs.CustomTabsSession;
import android.widget.Toast;
import org.horaapps.leafpic.activities.base.ThemedActivity;
public class CustomTabService {
private CustomTabsClient mCustomTabsClient;
private CustomTabsSession mCustomTabsSession;
private CustomTabsServiceConnection mCustomTabsServiceConnection;
private CustomTabsIntent mCustomTabsIntent;
private Activity activity;
private int color;
private ThemedActivity activity;
public CustomTabService (Activity act, int c) {
public CustomTabService (ThemedActivity act) {
this.activity = act;
this.color = c;
init();
}
private void init() {
mCustomTabsServiceConnection = new CustomTabsServiceConnection() {
CustomTabsServiceConnection mCustomTabsServiceConnection = new CustomTabsServiceConnection() {
@Override
public void onCustomTabsServiceConnected(ComponentName componentName, CustomTabsClient customTabsClient) {
mCustomTabsClient = customTabsClient;
mCustomTabsClient.warmup(0L);
mCustomTabsSession = mCustomTabsClient.newSession(null);
}
@Override
public void onServiceDisconnected(ComponentName name) {
mCustomTabsClient= null;
mCustomTabsClient = null;
}
};
CustomTabsClient.bindCustomTabsService(activity, activity.getPackageName(), mCustomTabsServiceConnection);
mCustomTabsIntent = new CustomTabsIntent.Builder(mCustomTabsSession)
.setShowTitle(true)
.setToolbarColor(color)
.setToolbarColor(activity.getPrimaryColor())
.build();
}
public void launchUrl(String Url){
try{
try {
mCustomTabsIntent.launchUrl(activity, Uri.parse(Url));
}catch (Exception e){
} catch (Exception e) {
Toast.makeText(activity.getApplication(), "Error: "+e.toString(), Toast.LENGTH_SHORT).show();
}
}
public static void openUrl(ThemedActivity activity, String url) {
CustomTabService service = new CustomTabService(activity);
service.launchUrl(url);
}
}
......@@ -17,7 +17,11 @@ import java.util.regex.Pattern;
public class StringUtils {
public static String getMimeType(String path) {
String extension = path.substring(path.lastIndexOf('.')+1).toLowerCase();
int index;
if (path == null || (index = path.lastIndexOf('.')) == -1)
return "unknown";
String extension = path.substring(index + 1).toLowerCase();
return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
}
......
......@@ -45,10 +45,6 @@
android:scrollbarThumbVertical="@drawable/ic_scrollbar"
/>
<include layout="@layout/there_is_nothing_to_show"/>
<!--
android:scrollbars="vertical"
android:scrollbarThumbVertical="@drawable/ic_scrollbar"
-->
</RelativeLayout>
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
......
......@@ -18,4 +18,5 @@
android:id="@+id/photos_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<include layout="@layout/there_is_nothing_to_show"/>
</RelativeLayout>
\ No newline at end of file
......@@ -46,6 +46,7 @@
<string name="drawer_close">Close navigation drawer</string>
<string name="refresh">Refresh</string>
<string name="sent_to_action">Send to</string>
<string name="show_full">Show full</string>
<string name="filter_menu_title">Filter</string>
<string name="all">All</string>
......@@ -366,7 +367,8 @@ and this could make the media inaccessible from other apps. Use the exclude opti
<string name="excluded_items">Excluded items</string>
<string name="manage_your_folders">Manage your folders</string>
<string name="manage_your_folders_sub">Here can handle the excluded folders and include folders that don\'t show up</string>
<string name="white_list_explaination">You can add folders that aren\'t listed or folders with some problems.
<string name="white_list_explaination">You can add folders that are not listed or folders with some media missing.
White-listed folders will be scanned periodically when the device is in idle mode, so it won\'t cause any performance issue</string>
<string name="no_media_in_this_folder">No media in this folder</string>
<string name="error_occured_open_media">An error occurred opening this media.</string>
</resources>
......@@ -63,7 +63,7 @@ public class DonateActivity extends ThemedActivity {
bar = (SeekBar) findViewById(R.id.seek_bar_donations);
setNavBarColor();
cts = new CustomTabService(DonateActivity.this, getPrimaryColor());
cts = new CustomTabService(DonateActivity.this);
scr = (ScrollView)findViewById(org.horaapps.leafpic.R.id.donateAct_scrollView);
initUi();
mHelper = new IabHelper(this, SecretConstants.getBase64EncodedPublicKey(getApplicationContext()));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment