You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
214 lines
6.2 KiB
214 lines
6.2 KiB
/* |
|
* Copyright 2014 A.C.R. Development |
|
*/ |
|
package acr.browser.lightning; |
|
|
|
import android.annotation.SuppressLint; |
|
import android.app.Activity; |
|
import android.app.AlertDialog; |
|
import android.content.Context; |
|
import android.content.DialogInterface; |
|
import android.content.Intent; |
|
import android.content.res.Resources; |
|
import android.graphics.Bitmap; |
|
import android.graphics.BitmapFactory; |
|
import android.graphics.Canvas; |
|
import android.graphics.Paint; |
|
import android.os.Environment; |
|
import android.util.DisplayMetrics; |
|
import android.util.Log; |
|
import android.webkit.URLUtil; |
|
import android.widget.Toast; |
|
|
|
import java.io.*; |
|
import java.net.URI; |
|
import java.net.URISyntaxException; |
|
import java.text.SimpleDateFormat; |
|
import java.util.ArrayList; |
|
import java.util.Date; |
|
import java.util.List; |
|
|
|
public final class Utils { |
|
|
|
private Utils() { |
|
} |
|
|
|
public static void downloadFile(final Activity activity, final String url, |
|
final String userAgent, final String contentDisposition, final boolean privateBrowsing) { |
|
String fileName = URLUtil.guessFileName(url, null, null); |
|
DownloadHandler.onDownloadStart(activity, url, userAgent, contentDisposition, null, |
|
privateBrowsing); |
|
Log.i(Constants.TAG, "Downloading" + fileName); |
|
} |
|
|
|
public static Intent newEmailIntent(Context context, String address, String subject, |
|
String body, String cc) { |
|
Intent intent = new Intent(Intent.ACTION_SEND); |
|
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { address }); |
|
intent.putExtra(Intent.EXTRA_TEXT, body); |
|
intent.putExtra(Intent.EXTRA_SUBJECT, subject); |
|
intent.putExtra(Intent.EXTRA_CC, cc); |
|
intent.setType("message/rfc822"); |
|
return intent; |
|
} |
|
|
|
public static void createInformativeDialog(Context context, String title, String message) { |
|
AlertDialog.Builder builder = new AlertDialog.Builder(context); |
|
builder.setTitle(title); |
|
builder.setMessage(message) |
|
.setCancelable(true) |
|
.setPositiveButton(context.getResources().getString(R.string.action_ok), |
|
new DialogInterface.OnClickListener() { |
|
@Override |
|
public void onClick(DialogInterface dialog, int id) { |
|
} |
|
}); |
|
AlertDialog alert = builder.create(); |
|
alert.show(); |
|
} |
|
|
|
public static void showToast(Context context, String message) { |
|
Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); |
|
} |
|
|
|
/** |
|
* Returns the number of pixels corresponding to the passed density pixels |
|
*/ |
|
public static int convertDpToPixels(int dp) { |
|
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); |
|
return (int) (dp * metrics.density + 0.5f); |
|
} |
|
|
|
public static String getDomainName(String url) { |
|
boolean ssl = url.startsWith(Constants.HTTPS); |
|
int index = url.indexOf('/', 8); |
|
if (index != -1) { |
|
url = url.substring(0, index); |
|
} |
|
|
|
URI uri; |
|
String domain = null; |
|
try { |
|
uri = new URI(url); |
|
domain = uri.getHost(); |
|
} catch (URISyntaxException e) { |
|
e.printStackTrace(); |
|
} |
|
|
|
if (domain == null || domain.isEmpty()) { |
|
return url; |
|
} |
|
if (ssl) |
|
return Constants.HTTPS + domain; |
|
else |
|
return domain.startsWith("www.") ? domain.substring(4) : domain; |
|
} |
|
|
|
public static String getProtocol(String url) { |
|
int index = url.indexOf('/'); |
|
return url.substring(0, index + 2); |
|
} |
|
|
|
public static List<HistoryItem> getOldBookmarks(Context context) { |
|
List<HistoryItem> bookmarks = new ArrayList<HistoryItem>(); |
|
File bookUrl = new File(context.getFilesDir(), "bookurl"); |
|
File book = new File(context.getFilesDir(), "bookmarks"); |
|
try { |
|
BufferedReader readUrl = new BufferedReader(new FileReader(bookUrl)); |
|
BufferedReader readBook = new BufferedReader(new FileReader(book)); |
|
String u, t; |
|
while ((u = readUrl.readLine()) != null && (t = readBook.readLine()) != null) { |
|
HistoryItem map = new HistoryItem(u, t, R.drawable.ic_bookmark); |
|
bookmarks.add(map); |
|
} |
|
readBook.close(); |
|
readUrl.close(); |
|
} catch (FileNotFoundException ignored) { |
|
} catch (IOException ignored) { |
|
} |
|
return bookmarks; |
|
} |
|
|
|
public static String[] getArray(String input) { |
|
return input.split("\\|\\$\\|SEPARATOR\\|\\$\\|"); |
|
} |
|
|
|
public static void trimCache(Context context) { |
|
try { |
|
File dir = context.getCacheDir(); |
|
|
|
if (dir != null && dir.isDirectory()) { |
|
deleteDir(dir); |
|
} |
|
} catch (Exception ignored) { |
|
|
|
} |
|
} |
|
|
|
public static boolean deleteDir(File dir) { |
|
if (dir != null && dir.isDirectory()) { |
|
String[] children = dir.list(); |
|
for (String aChildren : children) { |
|
boolean success = deleteDir(new File(dir, aChildren)); |
|
if (!success) { |
|
return false; |
|
} |
|
} |
|
} |
|
// The directory is now empty so delete it |
|
return dir != null && dir.delete(); |
|
} |
|
|
|
/** |
|
* Creates and returns a new favicon which is the same as the provided |
|
* favicon but with horizontal or vertical padding of 4dp |
|
* |
|
* @param bitmap |
|
* is the bitmap to pad. |
|
* @return the padded bitmap. |
|
*/ |
|
public static Bitmap padFavicon(Bitmap bitmap) { |
|
int padding = Utils.convertDpToPixels(4); |
|
|
|
Bitmap paddedBitmap = Bitmap.createBitmap(bitmap.getWidth() + padding, bitmap.getHeight() |
|
+ padding, Bitmap.Config.ARGB_8888); |
|
|
|
Canvas canvas = new Canvas(paddedBitmap); |
|
canvas.drawARGB(0x00, 0x00, 0x00, 0x00); // this represents white color |
|
canvas.drawBitmap(bitmap, padding / 2, padding / 2, new Paint(Paint.FILTER_BITMAP_FLAG)); |
|
|
|
return paddedBitmap; |
|
} |
|
|
|
@SuppressLint("SimpleDateFormat") |
|
public static File createImageFile() throws IOException { |
|
// Create an image file name |
|
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); |
|
String imageFileName = "JPEG_" + timeStamp + "_"; |
|
File storageDir = Environment |
|
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); |
|
File imageFile = File.createTempFile(imageFileName, /* prefix */ |
|
".jpg", /* suffix */ |
|
storageDir /* directory */ |
|
); |
|
return imageFile; |
|
} |
|
|
|
public static Bitmap getWebpageBitmap(Resources resources, boolean dark) { |
|
if (dark) { |
|
if (mWebIconDark == null) { |
|
mWebIconDark = BitmapFactory.decodeResource(resources, R.drawable.ic_webpage_dark); |
|
} |
|
return mWebIconDark; |
|
} else { |
|
if (mWebIconLight == null) { |
|
mWebIconLight = BitmapFactory.decodeResource(resources, R.drawable.ic_webpage); |
|
} |
|
return mWebIconLight; |
|
} |
|
} |
|
|
|
private static Bitmap mWebIconLight; |
|
private static Bitmap mWebIconDark; |
|
|
|
}
|
|
|