2014-08-21 14:35:29 -04:00
|
|
|
package acr.browser.lightning;
|
|
|
|
|
|
|
|
import java.io.BufferedReader;
|
|
|
|
import java.io.BufferedWriter;
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.FileNotFoundException;
|
|
|
|
import java.io.FileReader;
|
|
|
|
import java.io.FileWriter;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.util.ArrayList;
|
2014-09-01 21:01:18 -04:00
|
|
|
import java.util.Collections;
|
|
|
|
import java.util.Comparator;
|
2014-08-21 14:35:29 -04:00
|
|
|
import java.util.List;
|
2014-09-01 21:01:18 -04:00
|
|
|
import java.util.Locale;
|
2014-08-22 11:12:48 -04:00
|
|
|
import java.util.SortedMap;
|
|
|
|
import java.util.TreeMap;
|
2014-08-21 14:35:29 -04:00
|
|
|
|
|
|
|
import org.json.JSONException;
|
|
|
|
import org.json.JSONObject;
|
|
|
|
|
|
|
|
import android.content.Context;
|
|
|
|
import android.database.Cursor;
|
|
|
|
import android.os.Environment;
|
|
|
|
import android.provider.Browser;
|
2014-09-01 21:01:18 -04:00
|
|
|
import android.widget.Toast;
|
2014-08-21 14:35:29 -04:00
|
|
|
|
|
|
|
public class BookmarkManager {
|
|
|
|
|
|
|
|
private Context mContext;
|
|
|
|
private static final String TITLE = "title";
|
|
|
|
private static final String URL = "url";
|
|
|
|
private static final String FOLDER = "folder";
|
|
|
|
private static final String ORDER = "order";
|
|
|
|
private static final String FILE_BOOKMARKS = "bookmarks.dat";
|
2014-08-22 11:12:48 -04:00
|
|
|
private static SortedMap<String, Integer> mBookmarkMap = new TreeMap<String, Integer>(
|
|
|
|
String.CASE_INSENSITIVE_ORDER);
|
2014-08-21 14:35:29 -04:00
|
|
|
|
|
|
|
public BookmarkManager(Context context) {
|
|
|
|
mContext = context;
|
2014-08-22 11:12:48 -04:00
|
|
|
mBookmarkMap = getBookmarkUrls();
|
2014-08-21 14:35:29 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2014-08-21 18:37:56 -04:00
|
|
|
* This method adds the the HistoryItem item to permanent bookmark storage
|
2014-08-21 14:35:29 -04:00
|
|
|
*
|
|
|
|
* @param item
|
|
|
|
*/
|
2014-08-22 13:32:22 -04:00
|
|
|
public synchronized boolean addBookmark(HistoryItem item) {
|
2014-08-21 18:37:56 -04:00
|
|
|
File bookmarksFile = new File(mContext.getFilesDir(), FILE_BOOKMARKS);
|
2015-01-28 21:17:44 -05:00
|
|
|
if (item.getUrl() == null || mBookmarkMap.containsKey(item.getUrl())) {
|
2014-08-22 13:32:22 -04:00
|
|
|
return false;
|
2014-08-21 23:08:22 -04:00
|
|
|
}
|
2014-08-21 14:35:29 -04:00
|
|
|
try {
|
2014-08-21 18:37:56 -04:00
|
|
|
BufferedWriter bookmarkWriter = new BufferedWriter(new FileWriter(bookmarksFile, true));
|
2014-08-21 14:35:29 -04:00
|
|
|
JSONObject object = new JSONObject();
|
|
|
|
object.put(TITLE, item.getTitle());
|
|
|
|
object.put(URL, item.getUrl());
|
|
|
|
object.put(FOLDER, item.getFolder());
|
|
|
|
object.put(ORDER, item.getOrder());
|
|
|
|
bookmarkWriter.write(object.toString());
|
|
|
|
bookmarkWriter.newLine();
|
|
|
|
bookmarkWriter.close();
|
2014-08-22 11:12:48 -04:00
|
|
|
mBookmarkMap.put(item.getUrl(), 1);
|
2014-08-21 14:35:29 -04:00
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (JSONException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
2014-08-22 13:32:22 -04:00
|
|
|
return true;
|
2014-08-21 14:35:29 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2014-08-21 18:37:56 -04:00
|
|
|
* This method adds the list of HistoryItems to permanent bookmark storage
|
2014-08-21 14:35:29 -04:00
|
|
|
*
|
|
|
|
* @param list
|
|
|
|
*/
|
2014-08-22 13:32:22 -04:00
|
|
|
public synchronized void addBookmarkList(List<HistoryItem> list) {
|
2014-08-21 18:37:56 -04:00
|
|
|
File bookmarksFile = new File(mContext.getFilesDir(), FILE_BOOKMARKS);
|
2014-08-21 14:35:29 -04:00
|
|
|
try {
|
2014-08-21 18:37:56 -04:00
|
|
|
BufferedWriter bookmarkWriter = new BufferedWriter(new FileWriter(bookmarksFile, true));
|
2014-08-21 14:35:29 -04:00
|
|
|
for (HistoryItem item : list) {
|
2015-01-28 21:17:44 -05:00
|
|
|
if (item.getUrl() != null && !mBookmarkMap.containsKey(item.getUrl())) {
|
2014-08-22 11:12:48 -04:00
|
|
|
JSONObject object = new JSONObject();
|
|
|
|
object.put(TITLE, item.getTitle());
|
|
|
|
object.put(URL, item.getUrl());
|
|
|
|
object.put(FOLDER, item.getFolder());
|
|
|
|
object.put(ORDER, item.getOrder());
|
|
|
|
bookmarkWriter.write(object.toString());
|
|
|
|
bookmarkWriter.newLine();
|
|
|
|
mBookmarkMap.put(item.getUrl(), 1);
|
|
|
|
}
|
2014-08-21 14:35:29 -04:00
|
|
|
}
|
|
|
|
bookmarkWriter.close();
|
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (JSONException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-08-21 23:08:22 -04:00
|
|
|
/**
|
|
|
|
* This method deletes the bookmark with the given url
|
|
|
|
*
|
|
|
|
* @param url
|
|
|
|
*/
|
2014-08-22 13:32:22 -04:00
|
|
|
public synchronized boolean deleteBookmark(String url) {
|
2014-08-21 23:08:22 -04:00
|
|
|
List<HistoryItem> list = new ArrayList<HistoryItem>();
|
2015-01-28 21:17:44 -05:00
|
|
|
if (url == null) {
|
|
|
|
return false;
|
|
|
|
}
|
2014-08-22 11:12:48 -04:00
|
|
|
mBookmarkMap.remove(url);
|
2014-09-01 21:01:18 -04:00
|
|
|
list = getBookmarks(false);
|
2014-08-21 23:08:22 -04:00
|
|
|
File bookmarksFile = new File(mContext.getFilesDir(), FILE_BOOKMARKS);
|
2014-08-22 13:32:22 -04:00
|
|
|
boolean bookmarkDeleted = false;
|
2014-08-21 23:08:22 -04:00
|
|
|
try {
|
|
|
|
BufferedWriter fileWriter = new BufferedWriter(new FileWriter(bookmarksFile, false));
|
|
|
|
for (HistoryItem item : list) {
|
|
|
|
if (!item.getUrl().equalsIgnoreCase(url)) {
|
|
|
|
JSONObject object = new JSONObject();
|
|
|
|
object.put(TITLE, item.getTitle());
|
|
|
|
object.put(URL, item.getUrl());
|
|
|
|
object.put(FOLDER, item.getFolder());
|
|
|
|
object.put(ORDER, item.getOrder());
|
|
|
|
fileWriter.write(object.toString());
|
|
|
|
fileWriter.newLine();
|
2014-08-22 13:32:22 -04:00
|
|
|
} else {
|
|
|
|
bookmarkDeleted = true;
|
2014-08-21 23:08:22 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
fileWriter.close();
|
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (JSONException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
2014-08-22 13:32:22 -04:00
|
|
|
return bookmarkDeleted;
|
2014-08-21 23:08:22 -04:00
|
|
|
}
|
|
|
|
|
2014-08-21 14:35:29 -04:00
|
|
|
/**
|
|
|
|
* This method exports the stored bookmarks to a text file in the device's
|
|
|
|
* external download directory
|
|
|
|
*/
|
2014-08-22 13:32:22 -04:00
|
|
|
public synchronized void exportBookmarks() {
|
2014-09-01 21:01:18 -04:00
|
|
|
List<HistoryItem> bookmarkList = getBookmarks(true);
|
2014-08-21 14:35:29 -04:00
|
|
|
File bookmarksExport = new File(
|
|
|
|
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
|
|
|
|
"BookmarksExport.txt");
|
2014-09-01 21:01:18 -04:00
|
|
|
int counter = 0;
|
|
|
|
while (bookmarksExport.exists()) {
|
|
|
|
counter++;
|
|
|
|
bookmarksExport = new File(
|
|
|
|
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
|
|
|
|
"BookmarksExport-" + counter + ".txt");
|
|
|
|
}
|
2014-08-21 14:35:29 -04:00
|
|
|
try {
|
|
|
|
BufferedWriter bookmarkWriter = new BufferedWriter(new FileWriter(bookmarksExport,
|
|
|
|
false));
|
|
|
|
for (HistoryItem item : bookmarkList) {
|
|
|
|
JSONObject object = new JSONObject();
|
|
|
|
object.put(TITLE, item.getTitle());
|
|
|
|
object.put(URL, item.getUrl());
|
|
|
|
object.put(FOLDER, item.getFolder());
|
|
|
|
object.put(ORDER, item.getOrder());
|
|
|
|
bookmarkWriter.write(object.toString());
|
|
|
|
bookmarkWriter.newLine();
|
|
|
|
}
|
|
|
|
bookmarkWriter.close();
|
2014-09-01 21:01:18 -04:00
|
|
|
Toast.makeText(
|
|
|
|
mContext,
|
|
|
|
mContext.getString(R.string.bookmark_export_path) + " "
|
|
|
|
+ bookmarksExport.getPath(), Toast.LENGTH_SHORT).show();
|
2014-08-21 14:35:29 -04:00
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (JSONException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
2014-09-01 21:01:18 -04:00
|
|
|
|
2014-08-21 14:35:29 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This method returns a list of all stored bookmarks
|
|
|
|
*
|
|
|
|
* @return
|
|
|
|
*/
|
2014-09-01 21:01:18 -04:00
|
|
|
public synchronized List<HistoryItem> getBookmarks(boolean sort) {
|
2014-08-21 14:35:29 -04:00
|
|
|
List<HistoryItem> bookmarks = new ArrayList<HistoryItem>();
|
2014-08-21 18:37:56 -04:00
|
|
|
File bookmarksFile = new File(mContext.getFilesDir(), FILE_BOOKMARKS);
|
2014-08-21 14:35:29 -04:00
|
|
|
try {
|
2014-08-21 18:37:56 -04:00
|
|
|
BufferedReader bookmarksReader = new BufferedReader(new FileReader(bookmarksFile));
|
2014-08-21 14:35:29 -04:00
|
|
|
String line;
|
|
|
|
while ((line = bookmarksReader.readLine()) != null) {
|
|
|
|
JSONObject object = new JSONObject(line);
|
|
|
|
HistoryItem item = new HistoryItem();
|
|
|
|
item.setTitle(object.getString(TITLE));
|
|
|
|
item.setUrl(object.getString(URL));
|
|
|
|
item.setFolder(object.getString(FOLDER));
|
|
|
|
item.setOrder(object.getInt(ORDER));
|
2014-08-22 13:32:22 -04:00
|
|
|
item.setImageId(R.drawable.ic_bookmark);
|
2014-08-21 14:35:29 -04:00
|
|
|
bookmarks.add(item);
|
|
|
|
}
|
|
|
|
bookmarksReader.close();
|
|
|
|
} catch (FileNotFoundException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (JSONException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
2014-09-01 21:01:18 -04:00
|
|
|
if (sort) {
|
|
|
|
Collections.sort(bookmarks, new SortIgnoreCase());
|
|
|
|
}
|
2014-08-21 14:35:29 -04:00
|
|
|
return bookmarks;
|
|
|
|
}
|
|
|
|
|
2014-08-21 18:37:56 -04:00
|
|
|
/**
|
|
|
|
* This method returns a list of bookmarks located in the specified folder
|
|
|
|
*
|
|
|
|
* @param folder
|
|
|
|
* @return
|
|
|
|
*/
|
2014-08-22 13:32:22 -04:00
|
|
|
public synchronized List<HistoryItem> getBookmarksFromFolder(String folder) {
|
2014-08-21 18:37:56 -04:00
|
|
|
List<HistoryItem> bookmarks = new ArrayList<HistoryItem>();
|
|
|
|
File bookmarksFile = new File(mContext.getFilesDir(), FILE_BOOKMARKS);
|
|
|
|
try {
|
|
|
|
BufferedReader bookmarksReader = new BufferedReader(new FileReader(bookmarksFile));
|
|
|
|
String line;
|
|
|
|
while ((line = bookmarksReader.readLine()) != null) {
|
|
|
|
JSONObject object = new JSONObject(line);
|
|
|
|
if (object.getString(FOLDER).equals(folder)) {
|
|
|
|
HistoryItem item = new HistoryItem();
|
|
|
|
item.setTitle(object.getString(TITLE));
|
|
|
|
item.setUrl(object.getString(URL));
|
|
|
|
item.setFolder(object.getString(FOLDER));
|
|
|
|
item.setOrder(object.getInt(ORDER));
|
2014-08-22 13:32:22 -04:00
|
|
|
item.setImageId(R.drawable.ic_bookmark);
|
2014-08-21 18:37:56 -04:00
|
|
|
bookmarks.add(item);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bookmarksReader.close();
|
|
|
|
} catch (FileNotFoundException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (JSONException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
return bookmarks;
|
|
|
|
}
|
|
|
|
|
2014-08-21 23:08:22 -04:00
|
|
|
/**
|
|
|
|
* Method is used internally for searching the bookmarks
|
|
|
|
*
|
|
|
|
* @return
|
|
|
|
*/
|
2014-08-22 13:32:22 -04:00
|
|
|
private synchronized SortedMap<String, Integer> getBookmarkUrls() {
|
2014-08-22 11:12:48 -04:00
|
|
|
SortedMap<String, Integer> map = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
|
2014-08-21 23:08:22 -04:00
|
|
|
File bookmarksFile = new File(mContext.getFilesDir(), FILE_BOOKMARKS);
|
|
|
|
try {
|
|
|
|
BufferedReader bookmarksReader = new BufferedReader(new FileReader(bookmarksFile));
|
|
|
|
String line;
|
|
|
|
while ((line = bookmarksReader.readLine()) != null) {
|
|
|
|
JSONObject object = new JSONObject(line);
|
2014-08-22 11:12:48 -04:00
|
|
|
map.put(object.getString(URL), 1);
|
2014-08-21 23:08:22 -04:00
|
|
|
}
|
|
|
|
bookmarksReader.close();
|
|
|
|
} catch (FileNotFoundException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (JSONException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
2014-08-22 11:12:48 -04:00
|
|
|
return map;
|
2014-08-21 23:08:22 -04:00
|
|
|
}
|
|
|
|
|
2014-08-21 18:37:56 -04:00
|
|
|
/**
|
|
|
|
* This method returns a list of all folders
|
|
|
|
*
|
|
|
|
* @return
|
|
|
|
*/
|
2014-08-22 13:32:22 -04:00
|
|
|
public synchronized List<HistoryItem> getFolders() {
|
2014-08-21 18:37:56 -04:00
|
|
|
List<HistoryItem> folders = new ArrayList<HistoryItem>();
|
2014-08-22 11:12:48 -04:00
|
|
|
SortedMap<String, Integer> folderMap = new TreeMap<String, Integer>(
|
|
|
|
String.CASE_INSENSITIVE_ORDER);
|
2014-08-21 18:37:56 -04:00
|
|
|
File bookmarksFile = new File(mContext.getFilesDir(), FILE_BOOKMARKS);
|
|
|
|
try {
|
|
|
|
BufferedReader bookmarksReader = new BufferedReader(new FileReader(bookmarksFile));
|
|
|
|
String line;
|
|
|
|
while ((line = bookmarksReader.readLine()) != null) {
|
|
|
|
JSONObject object = new JSONObject(line);
|
|
|
|
String folderName = object.getString(FOLDER);
|
2014-08-22 11:12:48 -04:00
|
|
|
if (!folderName.isEmpty() && !folderMap.containsKey(folderName)) {
|
2014-08-21 18:37:56 -04:00
|
|
|
HistoryItem item = new HistoryItem();
|
|
|
|
item.setTitle(folderName);
|
|
|
|
item.setUrl(Constants.FOLDER + folderName);
|
2014-08-22 11:12:48 -04:00
|
|
|
folderMap.put(folderName, 1);
|
2014-08-21 18:37:56 -04:00
|
|
|
folders.add(item);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bookmarksReader.close();
|
|
|
|
} catch (FileNotFoundException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (JSONException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
return folders;
|
|
|
|
}
|
|
|
|
|
2014-08-21 14:35:29 -04:00
|
|
|
/**
|
|
|
|
* This method imports all bookmarks that are included in the device's
|
|
|
|
* permanent bookmark storage
|
|
|
|
*/
|
2014-08-22 13:32:22 -04:00
|
|
|
public synchronized void importBookmarksFromBrowser() {
|
2014-08-21 14:35:29 -04:00
|
|
|
if (mContext.getSharedPreferences(PreferenceConstants.PREFERENCES, 0).getBoolean(
|
|
|
|
PreferenceConstants.SYSTEM_BROWSER_PRESENT, false)) {
|
|
|
|
|
|
|
|
List<HistoryItem> bookmarkList = new ArrayList<HistoryItem>();
|
|
|
|
String[] columns = new String[] { Browser.BookmarkColumns.TITLE,
|
|
|
|
Browser.BookmarkColumns.URL };
|
|
|
|
String selection = Browser.BookmarkColumns.BOOKMARK + " = 1";
|
|
|
|
Cursor cursor = mContext.getContentResolver().query(Browser.BOOKMARKS_URI, columns,
|
|
|
|
selection, null, null);
|
|
|
|
|
|
|
|
String title, url;
|
|
|
|
int number = 0;
|
|
|
|
if (cursor.moveToFirst()) {
|
|
|
|
do {
|
|
|
|
title = cursor.getString(0);
|
|
|
|
url = cursor.getString(1);
|
|
|
|
if (title.isEmpty()) {
|
|
|
|
title = Utils.getDomainName(url);
|
|
|
|
}
|
2014-08-22 11:12:48 -04:00
|
|
|
number++;
|
|
|
|
bookmarkList.add(new HistoryItem(url, title));
|
2014-08-21 14:35:29 -04:00
|
|
|
} while (cursor.moveToNext());
|
|
|
|
}
|
|
|
|
|
|
|
|
cursor.close();
|
|
|
|
addBookmarkList(bookmarkList);
|
|
|
|
|
|
|
|
Utils.showToast(mContext,
|
|
|
|
number + " " + mContext.getResources().getString(R.string.message_import));
|
|
|
|
} else {
|
|
|
|
Utils.createInformativeDialog(mContext,
|
|
|
|
mContext.getResources().getString(R.string.title_error), mContext
|
|
|
|
.getResources().getString(R.string.dialog_import_error));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2014-08-21 18:37:56 -04:00
|
|
|
* This method imports the bookmarks from a backup file that is located on
|
|
|
|
* external storage
|
2014-08-21 14:35:29 -04:00
|
|
|
*
|
|
|
|
* @param dir
|
|
|
|
* @param file
|
|
|
|
*/
|
2014-09-01 21:01:18 -04:00
|
|
|
public synchronized void importBookmarksFromFile(File file) {
|
|
|
|
if (file == null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
File bookmarksImport = file;
|
2014-08-22 11:12:48 -04:00
|
|
|
List<HistoryItem> list = new ArrayList<HistoryItem>();
|
2014-08-21 14:35:29 -04:00
|
|
|
try {
|
|
|
|
BufferedReader bookmarksReader = new BufferedReader(new FileReader(bookmarksImport));
|
|
|
|
String line;
|
2014-09-01 21:01:18 -04:00
|
|
|
int number = 0;
|
2014-08-21 14:35:29 -04:00
|
|
|
while ((line = bookmarksReader.readLine()) != null) {
|
|
|
|
JSONObject object = new JSONObject(line);
|
2014-08-22 11:12:48 -04:00
|
|
|
HistoryItem item = new HistoryItem();
|
|
|
|
item.setTitle(object.getString(TITLE));
|
|
|
|
item.setUrl(object.getString(URL));
|
|
|
|
item.setFolder(object.getString(FOLDER));
|
|
|
|
item.setOrder(object.getInt(ORDER));
|
|
|
|
list.add(item);
|
2014-09-01 21:01:18 -04:00
|
|
|
number++;
|
2014-08-21 14:35:29 -04:00
|
|
|
}
|
|
|
|
bookmarksReader.close();
|
2014-08-22 11:12:48 -04:00
|
|
|
addBookmarkList(list);
|
2014-09-01 21:01:18 -04:00
|
|
|
Utils.showToast(mContext,
|
|
|
|
number + " " + mContext.getResources().getString(R.string.message_import));
|
2014-08-21 14:35:29 -04:00
|
|
|
} catch (FileNotFoundException e) {
|
|
|
|
e.printStackTrace();
|
2014-09-01 21:01:18 -04:00
|
|
|
Utils.createInformativeDialog(mContext,
|
|
|
|
mContext.getResources().getString(R.string.title_error), mContext
|
|
|
|
.getResources().getString(R.string.import_bookmark_error));
|
2014-08-21 14:35:29 -04:00
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
2014-09-01 21:01:18 -04:00
|
|
|
Utils.createInformativeDialog(mContext,
|
|
|
|
mContext.getResources().getString(R.string.title_error), mContext
|
|
|
|
.getResources().getString(R.string.import_bookmark_error));
|
2014-08-21 14:35:29 -04:00
|
|
|
} catch (JSONException e) {
|
|
|
|
e.printStackTrace();
|
2014-09-01 21:01:18 -04:00
|
|
|
Utils.createInformativeDialog(mContext,
|
|
|
|
mContext.getResources().getString(R.string.title_error), mContext
|
|
|
|
.getResources().getString(R.string.import_bookmark_error));
|
2014-08-21 14:35:29 -04:00
|
|
|
}
|
|
|
|
}
|
2014-08-21 18:37:56 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* This method overwrites the entire bookmark file with the list of
|
|
|
|
* bookmarks. This is useful when an edit has been made to one or more
|
|
|
|
* bookmarks in the list
|
|
|
|
*
|
|
|
|
* @param list
|
|
|
|
*/
|
2014-08-22 13:32:22 -04:00
|
|
|
public synchronized void overwriteBookmarks(List<HistoryItem> list) {
|
2014-08-21 18:37:56 -04:00
|
|
|
File bookmarksFile = new File(mContext.getFilesDir(), FILE_BOOKMARKS);
|
|
|
|
try {
|
|
|
|
BufferedWriter bookmarkWriter = new BufferedWriter(new FileWriter(bookmarksFile, false));
|
|
|
|
for (HistoryItem item : list) {
|
|
|
|
JSONObject object = new JSONObject();
|
|
|
|
object.put(TITLE, item.getTitle());
|
|
|
|
object.put(URL, item.getUrl());
|
|
|
|
object.put(FOLDER, item.getFolder());
|
|
|
|
object.put(ORDER, item.getOrder());
|
|
|
|
bookmarkWriter.write(object.toString());
|
|
|
|
bookmarkWriter.newLine();
|
|
|
|
}
|
|
|
|
bookmarkWriter.close();
|
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (JSONException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
2014-09-01 21:01:18 -04:00
|
|
|
|
|
|
|
private class SortIgnoreCase implements Comparator<HistoryItem> {
|
|
|
|
|
|
|
|
public int compare(HistoryItem o1, HistoryItem o2) {
|
2015-01-28 21:17:44 -05:00
|
|
|
if (o1 == null || o2 == null) {
|
|
|
|
return 0;
|
|
|
|
} else if (o1.getTitle() == null || o2.getTitle() == null) {
|
|
|
|
return o1.getTitle().compareTo(o2.getTitle());
|
|
|
|
}
|
2014-09-01 21:01:18 -04:00
|
|
|
return o1.getTitle().toLowerCase(Locale.getDefault())
|
|
|
|
.compareTo(o2.getTitle().toLowerCase(Locale.getDefault()));
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2014-08-21 14:35:29 -04:00
|
|
|
}
|