diff --git a/.classpath b/.classpath
deleted file mode 100755
index 7bc01d9..0000000
--- a/.classpath
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/.project b/.project
deleted file mode 100755
index 93a53ed..0000000
--- a/.project
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
- Bloqq
-
-
-
-
-
- com.android.ide.eclipse.adt.ResourceManagerBuilder
-
-
-
-
- com.android.ide.eclipse.adt.PreCompilerBuilder
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- com.android.ide.eclipse.adt.ApkBuilder
-
-
-
-
-
- com.android.ide.eclipse.adt.AndroidNature
- org.eclipse.jdt.core.javanature
-
-
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c25200c..014d8ac 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -9,6 +9,8 @@
android:targetSdkVersion="19" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/README.md b/README.md
deleted file mode 100644
index d949d23..0000000
--- a/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-bloqq
-=====
-
-android web-browser based on webview
diff --git a/lint.xml b/lint.xml
deleted file mode 100755
index ee0eead..0000000
--- a/lint.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/project.properties b/project.properties
deleted file mode 100755
index 0cdc1c4..0000000
--- a/project.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system edit
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-#
-# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
-#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
-
-# Project target.
-target=android-19
-android.library.reference.1=../appcompat_v7
-android.library.reference.2=../SlidingLib
diff --git a/res/layout/activity_fav.xml b/res/layout/activity_fav.xml
new file mode 100755
index 0000000..8717786
--- /dev/null
+++ b/res/layout/activity_fav.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/activity_hist.xml b/res/layout/activity_hist.xml
index d025d0f..88dd627 100755
--- a/res/layout/activity_hist.xml
+++ b/res/layout/activity_hist.xml
@@ -3,6 +3,7 @@
android:id="@+id/hist_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:background="@color/abc_search_url_text_pressed"
android:focusable="true"
android:focusableInTouchMode="true"
android:paddingBottom="@dimen/activity_vertical_margin"
diff --git a/res/layout/fav_item.xml b/res/layout/fav_item.xml
new file mode 100755
index 0000000..86b56fb
--- /dev/null
+++ b/res/layout/fav_item.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/hist_item.xml b/res/layout/hist_item.xml
index 103272a..f080c29 100755
--- a/res/layout/hist_item.xml
+++ b/res/layout/hist_item.xml
@@ -8,6 +8,7 @@
android:id="@+id/hist_item_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:textColor="@color/abc_search_url_text_normal"
android:textSize="16sp"
android:textStyle="bold" />
@@ -15,6 +16,18 @@
android:id="@+id/hist_item_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:textSize="16sp" />
+ android:textSize="8sp" />
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/left_sliding_menu.xml b/res/layout/left_sliding_menu.xml
index dc0408b..f3ee6ee 100755
--- a/res/layout/left_sliding_menu.xml
+++ b/res/layout/left_sliding_menu.xml
@@ -9,12 +9,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
- android:columnWidth="90dp"
android:gravity="center"
- android:horizontalSpacing="10dp"
- android:numColumns="auto_fit"
+ android:numColumns="3"
android:stretchMode="columnWidth"
- android:verticalSpacing="10dp" >
+ android:verticalSpacing="50dp" >
\ No newline at end of file
diff --git a/res/menu/main.xml b/res/menu/main.xml
index 59554ec..40f8783 100755
--- a/res/menu/main.xml
+++ b/res/menu/main.xml
@@ -19,6 +19,16 @@
ActionBar:showAsAction="ifRoom"
android:orderInCategory="800"
android:title="@string/hist"/>
+
+
- History
Homepage URL
Put here your start page url
+ Favorites
+ Add favorite
+ 100
+ Font size
+ Clear history
+ Clear favorites
+
+
+
- Large
+ - Normal
+ - Small
+
+
+ - 130
+ - 100
+ - 70
+
\ No newline at end of file
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index ab0c048..cfa6d72 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -6,4 +6,28 @@
android:summary="@string/pref_homepage_summary"
android:title="@string/pref_homepage" />
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/com/bloqq/BlocksAdapter.java b/src/com/bloqq/BlocksAdapter.java
index 5b758b4..ddd13e6 100755
--- a/src/com/bloqq/BlocksAdapter.java
+++ b/src/com/bloqq/BlocksAdapter.java
@@ -1,15 +1,20 @@
package com.bloqq;
import android.annotation.SuppressLint;
+import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
+import android.graphics.Point;
import android.graphics.drawable.BitmapDrawable;
import android.util.Log;
+import android.view.Display;
import android.view.MotionEvent;
+import android.view.Surface;
import android.view.View;
+import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
@@ -19,7 +24,6 @@
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
-import android.widget.Toast;
import com.bloqq.activities.MainActivity;
import com.bloqq.cache.App;
@@ -30,10 +34,28 @@ public class BlocksAdapter extends BaseAdapter {
private Context mContext;
private SharedPreferences mPrefs;
+ private int mBlockSizePortrait;
+ private int mBlockSizeLandscape;
+ @SuppressLint("NewApi")
public BlocksAdapter(Context context, SharedPreferences prefs) {
mContext = context;
mPrefs = prefs;
+ Display display = ((Activity) mContext).getWindowManager()
+ .getDefaultDisplay();
+ int width, height;
+ if (android.os.Build.VERSION.SDK_INT >= 13) {
+ Point point = new Point();
+ display.getSize(point);
+ width = point.x;
+ height = point.y;
+ } else {
+ width = display.getWidth();
+ height = display.getHeight();
+ }
+
+ mBlockSizePortrait = width / 4;
+ mBlockSizeLandscape = height / 4;
}
@Override
@@ -56,96 +78,142 @@ public long getItemId(int position) {
public View getView(final int position, View convertView, ViewGroup parent) {
WebIconDatabase.getInstance().open(
mContext.getDir("icons", Context.MODE_PRIVATE).getPath());
- Log.i("DEBUG", "position " + position);
final BlocksAdapter adapter = this;
String uri = mPrefs.getString("uri" + position, "");
final DiskCache cache = ((App) mContext.getApplicationContext())
.getDiskCache();
- // bitmap = cache.getBitmap("uri" + position);
View blockView = null;
- // if (cache.containsKey("uri" + position)) {
- // cache.remove("uri" + position);
- // }
- if (!cache.containsKey("uri" + position)) {// bitmap == null) {
- // ImageView imageView = new ImageView(mContext);
- blockView = new WebView(mContext);
- ((WebView) blockView).setOnTouchListener(new OnTouchListener() {
-
- @SuppressLint("ClickableViewAccessibility")
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if (((WebView) v).getBackground() == null) {
- MainActivity activity = (MainActivity) mContext;
- activity.getWebView().loadUrl(v.getTag().toString());
- activity.getSlidingMenu().toggle();
- }
- // MainActivity activity = (MainActivity) mContext;
- // activity.getWebView().loadUrl(v.getTag().toString());
- // activity.getSlidingMenu().toggle();
- return false;
- }
- });
-
- ((WebView) blockView).setWebViewClient(new WebViewClient() {
- @Override
- public void onReceivedError(WebView view, int errorCode,
- String description, String failingUrl) {
- super.onReceivedError(view, errorCode, description,
- failingUrl);
- view.setBackgroundColor(Color.RED);
- Toast.makeText(mContext, "Error loading fav#" + position,
- Toast.LENGTH_LONG).show();
- Bitmap errorIcon = BitmapFactory.decodeResource(
- mContext.getResources(),
- android.R.drawable.ic_menu_close_clear_cancel);
- cache.put("uri" + position, errorIcon);
- adapter.notifyDataSetChanged();
- }
- });
-
- ((WebView) blockView).setWebChromeClient(new WebChromeClient() {
- @Override
- public void onReceivedIcon(WebView view, Bitmap icon) {
- if (icon != null) {
- Log.i("DEBUG", "FAVICON != NULL HERE");
- // if (cache.containsKey("uri" + position)) {
- // cache.remove("uri" + position);
+ if (cache != null) {
+ if (!cache.containsKey("uri" + position)) {
+ blockView = new WebView(mContext);
+
+ ((WebView) blockView).setOnTouchListener(new OnTouchListener() {
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ // if (((WebView) v).getBackground() == null) {
+ // Log.i("DEBUG", ((WebView) v).getUrl());
+ // MainActivity activity = (MainActivity) mContext;
+ // if (activity.getSlidingMenu().isMenuShowing()) {
+ // activity.getSlidingMenu().toggle();
// }
- cache.put("uri" + position, icon);
- view.setBackgroundDrawable(new BitmapDrawable(icon));
+ // activity.getWebView()
+ // .loadUrl(v.getTag().toString());
+ // Log.i("DEBUG", "dwwd");
+ // }
+ if (((WebView) v).getUrl() != null) {
+ if (((WebView) v).getBackground() == null) {
+ Log.i("DEBUG", "qwerty");
+ Bitmap errorIcon = BitmapFactory.decodeResource(
+ mContext.getResources(),
+ android.R.drawable.ic_menu_close_clear_cancel);
+ cache.put("uri" + position, errorIcon);
+ v.setBackgroundDrawable(new BitmapDrawable(
+ errorIcon));
+ adapter.notifyDataSetChanged();
+ }
+ Log.i("DEBUG", ((WebView) v).getUrl());
+ MainActivity activity = (MainActivity) mContext;
+ if (activity.getSlidingMenu().isMenuShowing()) {
+ activity.getSlidingMenu().toggle();
+ }
+ activity.getWebView().loadUrl(
+ ((WebView) v).getUrl());
+ }
+ return false;
+ }
+ });
+ //
+ // ((WebView) blockView).setOnClickListener(new
+ // OnClickListener() {
+ //
+ // @Override
+ // public void onClick(View v) {
+ // // if (((WebView) v).getBackground() != null) {
+ // // if (((WebView) v).getBackground() != mContext
+ // // .getResources().getDrawable(
+ //
+ // // android.R.drawable.gallery_thumb)) {
+ //
+ // }
+ // // }
+ // }
+ // });
+ ((WebView) blockView).setWebViewClient(new WebViewClient() {
+ @Override
+ public void onReceivedError(WebView view, int errorCode,
+ String description, String failingUrl) {
+ super.onReceivedError(view, errorCode, description,
+ failingUrl);
+ view.setBackgroundColor(Color.RED);
+ Log.i("DEBUG", "Error loading fav#" + position);
+ Bitmap errorIcon = BitmapFactory.decodeResource(
+ mContext.getResources(),
+ android.R.drawable.ic_menu_close_clear_cancel);
+ cache.put("uri" + position, errorIcon);
adapter.notifyDataSetChanged();
}
- super.onReceivedIcon(view, icon);
- }
- });
+ });
+
+ ((WebView) blockView).setWebChromeClient(new WebChromeClient() {
+ @Override
+ public void onReceivedIcon(WebView view, Bitmap icon) {
+ if (icon != null) {
+ Log.i("DEBUG", "trewq");
+ Log.i("DEBUG", "FAVICON != NULL HERE");
+ // if (cache.containsKey("uri" + position)) {
+ // cache.remove("uri" + position);
+ // }
+ cache.put("uri" + position, icon);
+ view.setBackgroundDrawable(new BitmapDrawable(icon));
+ adapter.notifyDataSetChanged();
+ }
+ super.onReceivedIcon(view, icon);
+ }
+ });
- // imageView.setInitialScale(2);
- // imageView.getSettings().setLoadWithOverviewMode(true);
- if ("".equals(uri)) {
- blockView
- .setBackgroundResource(android.R.drawable.gallery_thumb);
+ // imageView.setInitialScale(2);
+ // imageView.getSettings().setLoadWithOverviewMode(true);
+ if ("".equals(uri)) {
+ blockView
+ .setBackgroundResource(android.R.drawable.gallery_thumb);
+ } else {
+ // new LogoTask(imageView).execute(uri);
+ ((WebView) blockView).loadUrl(uri);
+ // } else {
+ /*
+ * if (android.os.Build.VERSION.SDK_INT >=
+ * android.os.Build.VERSION_CODES.JELLY_BEAN) {
+ * imageView.setBackground(new BitmapDrawable(bitmap)); }
+ * else { imageView.setBackgroundDrawable(new
+ * BitmapDrawable(bitmap)); }
+ */
+ }
} else {
- // new LogoTask(imageView).execute(uri);
- ((WebView) blockView).loadUrl(uri);
- // } else {
- /*
- * if (android.os.Build.VERSION.SDK_INT >=
- * android.os.Build.VERSION_CODES.JELLY_BEAN) {
- * imageView.setBackground(new BitmapDrawable(bitmap)); } else {
- * imageView.setBackgroundDrawable(new BitmapDrawable(bitmap));
- * }
- */
+ Bitmap bitmap = cache.getBitmap("uri" + position);
+ blockView = new ImageView(mContext);
+ ((ImageView) blockView).setImageBitmap(bitmap);
+ ((ImageView) blockView)
+ .setScaleType(ImageView.ScaleType.CENTER_CROP);
}
} else {
- Bitmap bitmap = cache.getBitmap("uri" + position);
blockView = new ImageView(mContext);
- ((ImageView) blockView).setImageBitmap(bitmap);
- ((ImageView) blockView)
- .setScaleType(ImageView.ScaleType.CENTER_CROP);
+ blockView.setBackgroundResource(android.R.drawable.gallery_thumb);
}
blockView.setTag(uri);
- blockView.setLayoutParams(new GridView.LayoutParams(120, 120));
+ // blockView.setLayoutParams(new GridView.LayoutParams(120, 120));
+
+ int rotation = ((Activity) mContext).getWindowManager()
+ .getDefaultDisplay().getRotation();
+ if (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) {
+ blockView.setLayoutParams(new GridView.LayoutParams(
+ mBlockSizeLandscape, mBlockSizeLandscape));
+ } else {
+ blockView.setLayoutParams(new GridView.LayoutParams(
+ mBlockSizePortrait, mBlockSizePortrait));
+ }
return blockView;
}
}
diff --git a/src/com/bloqq/BloqqWebView.java b/src/com/bloqq/BloqqWebView.java
index 382c889..48620e5 100755
--- a/src/com/bloqq/BloqqWebView.java
+++ b/src/com/bloqq/BloqqWebView.java
@@ -1,25 +1,89 @@
package com.bloqq;
+import java.io.File;
+
+import android.app.DownloadManager;
import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Environment;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.KeyEvent;
+import android.webkit.DownloadListener;
import android.webkit.WebView;
-import android.widget.Toast;
public class BloqqWebView extends WebView {
+ private final Context mContext;
+
public BloqqWebView(Context context) {
super(context);
+ mContext = context;
+ final DownloadManager manager = (DownloadManager) mContext
+ .getSystemService(Context.DOWNLOAD_SERVICE);
+ final File destinationDir = new File(
+ Environment.getExternalStorageDirectory(), "Bloqq");
+ if (!destinationDir.exists()) {
+ destinationDir.mkdir();
+ }
+
+ this.setDownloadListener(new DownloadListener() {
+
+ @Override
+ public void onDownloadStart(String url, String userAgent,
+ String contentDisposition, String mimetype,
+ long contentLength) {
+ Uri source = Uri.parse(url);
+
+ DownloadManager.Request request = new DownloadManager.Request(
+ source);
+ File destinationFile = new File(destinationDir, source
+ .getLastPathSegment());
+ request.setDestinationUri(Uri.fromFile(destinationFile));
+ manager.enqueue(request);
+ }
+ });
}
public BloqqWebView(Context context, AttributeSet attrs) {
super(context, attrs);
+ mContext = context;
+
+ final DownloadManager manager = (DownloadManager) mContext
+ .getSystemService(Context.DOWNLOAD_SERVICE);
+ final File destinationDir = new File(
+ Environment.getExternalStorageDirectory(),
+ mContext.getPackageName());
+ if (!destinationDir.exists()) {
+ destinationDir.mkdir();
+ }
+
+ this.setDownloadListener(new DownloadListener() {
+
+ @Override
+ public void onDownloadStart(String url, String userAgent,
+ String contentDisposition, String mimetype,
+ long contentLength) {
+ /*
+ * Intent i = new Intent(Intent.ACTION_VIEW);
+ * i.setData(Uri.parse(url)); Log.i("DEBUG", url);
+ * mContext.startActivity(i);
+ */
+ Uri source = Uri.parse(url);
+
+ DownloadManager.Request request = new DownloadManager.Request(
+ source);
+ File destinationFile = new File(destinationDir, source
+ .getLastPathSegment());
+ request.setDestinationUri(Uri.fromFile(destinationFile));
+ manager.enqueue(request);
+ }
+ });
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
- Toast.makeText(getContext(), "Back button pressed", Toast.LENGTH_LONG)
- .show();
if (canGoBack()) {
goBack();
return true;
diff --git a/src/com/bloqq/SwipeTouchListener.java b/src/com/bloqq/SwipeTouchListener.java
new file mode 100644
index 0000000..074d3b1
--- /dev/null
+++ b/src/com/bloqq/SwipeTouchListener.java
@@ -0,0 +1,55 @@
+package com.bloqq;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.view.GestureDetector;
+import android.view.GestureDetector.SimpleOnGestureListener;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnTouchListener;
+
+abstract public class SwipeTouchListener implements OnTouchListener {
+
+ private final GestureDetector gestureDetector;
+
+ public SwipeTouchListener(Context context) {
+ gestureDetector = new GestureDetector(context, new GestureListener());
+ }
+
+ abstract public void onSwipeLeft();
+
+ abstract public void onSwipeRight();
+
+ @SuppressLint("ClickableViewAccessibility")
+ public boolean onTouch(View v, MotionEvent event) {
+ return gestureDetector.onTouchEvent(event);
+ }
+
+ private final class GestureListener extends SimpleOnGestureListener {
+
+ private static final int SWIPE_DISTANCE_THRESHOLD = 100;
+ private static final int SWIPE_VELOCITY_THRESHOLD = 100;
+
+ @Override
+ public boolean onDown(MotionEvent e) {
+ return true;
+ }
+
+ @Override
+ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
+ float velocityY) {
+ float distanceX = e2.getX() - e1.getX();
+ float distanceY = e2.getY() - e1.getY();
+ if (Math.abs(distanceX) > Math.abs(distanceY)
+ && Math.abs(distanceX) > SWIPE_DISTANCE_THRESHOLD
+ && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
+ if (distanceX > 0)
+ onSwipeRight();
+ else
+ onSwipeLeft();
+ return true;
+ }
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/com/bloqq/activities/FavoriteActivity.java b/src/com/bloqq/activities/FavoriteActivity.java
new file mode 100644
index 0000000..4cd8950
--- /dev/null
+++ b/src/com/bloqq/activities/FavoriteActivity.java
@@ -0,0 +1,53 @@
+package com.bloqq.activities;
+
+import android.app.ListActivity;
+import android.content.Intent;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.support.v4.widget.SimpleCursorAdapter;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ListAdapter;
+
+import com.bloqq.R;
+import com.bloqq.sqlite.BloqqDBHelper;
+
+public class FavoriteActivity extends ListActivity {
+
+ private Cursor mCursor;
+
+ @SuppressWarnings("deprecation")
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_fav);
+
+ mCursor = getContentResolver().query(
+ BloqqDBHelper.Fav.CONTENT_URI_FAV_DB, null, null, null,
+ BloqqDBHelper.Fav.COLUMN_TITLE + " DESC");
+
+ ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.fav_item,
+ mCursor, new String[] { BloqqDBHelper.Fav.COLUMN_TITLE,
+ BloqqDBHelper.Fav.COLUMN_URL }, new int[] {
+ R.id.fav_item_title, R.id.fav_item_url });
+
+ setListAdapter(adapter);
+ getListView().setOnItemClickListener(new OnItemClickListener() {
+
+ @Override
+ public void onItemClick(AdapterView> parent, View item,
+ int position, long id) {
+ Cursor itemCursor = (Cursor) getListAdapter().getItem(position);
+
+ String url = itemCursor.getString(itemCursor
+ .getColumnIndex(BloqqDBHelper.Fav.COLUMN_URL));
+ Intent data = new Intent();
+ data.putExtra(MainActivity.EXTRA_URL, url);
+ setResult(RESULT_OK, data);
+ finish();
+ }
+ });
+
+ }
+}
diff --git a/src/com/bloqq/activities/HistoryActivity.java b/src/com/bloqq/activities/HistoryActivity.java
index 8412ce4..5ec8aca 100644
--- a/src/com/bloqq/activities/HistoryActivity.java
+++ b/src/com/bloqq/activities/HistoryActivity.java
@@ -5,14 +5,13 @@
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
-import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import com.bloqq.R;
-import com.bloqq.sqlite.HistDBHelper;
+import com.bloqq.sqlite.BloqqDBHelper;
public class HistoryActivity extends ListActivity {
@@ -24,40 +23,17 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hist);
- // Query for all people contacts using the Contacts.People convenience
- // class.
- // Put a managed wrapper around the retrieved cursor so we don't have to
- // worry about
- // requerying or closing it as the activity changes state.
mCursor = getContentResolver().query(
- HistDBHelper.Hist.CONTENT_URI_HIST_DB, null, null, null, null);
- // startManagingCursor(mCursor);
+ BloqqDBHelper.Hist.CONTENT_URI_HIST_DB, null, null, null,
+ BloqqDBHelper.Hist.COLUMN_DATE + " DESC");
- // Now create a new list adapter bound to the cursor.
- // SimpleListAdapter is designed for binding to a Cursor.
- ListAdapter adapter = new SimpleCursorAdapter(this, // Context.
- R.layout.hist_item, // Specify the row template
- // to use (here, two
- // columns bound to the
- // two retrieved
- // cursorrows).
- mCursor, // Pass in the cursor to bind to.
- new String[] { HistDBHelper.Hist.COLUMN_TITLE,
- HistDBHelper.Hist.COLUMN_URL }, // Array of cursor
- // columns to bind to.
- new int[] { R.id.hist_item_title, R.id.hist_item_url }); // Parallel
- // array
- // of
- // which
- // template
- // objects
- // to
- // bind
- // to
- // those
- // columns.
+ ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.hist_item,
+ mCursor, new String[] { BloqqDBHelper.Hist.COLUMN_TITLE,
+ BloqqDBHelper.Hist.COLUMN_URL,
+ BloqqDBHelper.Hist.COLUMN_DATE }, new int[] {
+ R.id.hist_item_title, R.id.hist_item_url,
+ R.id.hist_item_date });
- // Bind to our new adapter.
setListAdapter(adapter);
getListView().setOnItemClickListener(new OnItemClickListener() {
@@ -66,13 +42,9 @@ public void onItemClick(AdapterView> parent, View item,
int position, long id) {
Cursor itemCursor = (Cursor) getListAdapter().getItem(position);
- String title = itemCursor.getString(itemCursor
- .getColumnIndex(HistDBHelper.Hist.COLUMN_TITLE));
String url = itemCursor.getString(itemCursor
- .getColumnIndex(HistDBHelper.Hist.COLUMN_URL));
- Log.i("DEBUG", getListAdapter().getItem(position).getClass()
- .getSimpleName());
- Log.i("DEBUG", "TITLE: " + title + " | URL: " + url);
+ .getColumnIndex(BloqqDBHelper.Hist.COLUMN_URL));
+
Intent data = new Intent();
data.putExtra(MainActivity.EXTRA_URL, url);
setResult(RESULT_OK, data);
diff --git a/src/com/bloqq/activities/MainActivity.java b/src/com/bloqq/activities/MainActivity.java
index 03183c8..13c6372 100755
--- a/src/com/bloqq/activities/MainActivity.java
+++ b/src/com/bloqq/activities/MainActivity.java
@@ -5,10 +5,14 @@
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v4.view.MenuItemCompat.OnActionExpandListener;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
+import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
@@ -32,22 +36,24 @@
import com.bloqq.BlocksAdapter;
import com.bloqq.BloqqWebView;
import com.bloqq.R;
+import com.bloqq.SwipeTouchListener;
import com.bloqq.cache.App;
import com.bloqq.cache.DiskCache;
import com.bloqq.edits.AddressUrlEdit;
import com.bloqq.edits.BlockUrlEdit;
+import com.bloqq.sqlite.UpdateFavDbTask;
import com.bloqq.sqlite.UpdateHistDbTask;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
public class MainActivity extends ActionBarActivity {
- // WebView mWebView;
private BloqqWebView mWebView;
private String mHomepage;
private String mCurrentUrl;
public final static String HOMEPAGE = "homepage";
public final static int REQUEST_HIST = 0;
+ public final static int REQUEST_FAV = 1;
public final static String EXTRA_URL = "url";
private SlidingMenu mMenu;
@@ -56,80 +62,60 @@ public class MainActivity extends ActionBarActivity {
private BlockUrlEdit mInputUrl;
- private boolean mIsUrlListened;
-
- @SuppressLint("SetJavaScriptEnabled")
+ @SuppressLint({ "SetJavaScriptEnabled", "NewApi" })
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mPrefs = PreferenceManager.getDefaultSharedPreferences(this);// getSharedPreferences("settings",
- // Context.MODE_PRIVATE);
+
+ mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
mHomepage = mPrefs.getString(HOMEPAGE, "http://google.com");
- // SharedPreferences.Editor editor = mPrefs.edit();
- // editor.putString(HOMEPAGE,
- // "http://developer.android.com/about/versions/lollipop.html");
- // editor.commit();
getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.activity_main);
- // mWebView = (WebView) findViewById(R.id.webPage);
+ getActionBar().setDisplayShowHomeEnabled(false);
+ getActionBar().setDisplayShowTitleEnabled(false);
+
mWebView = (BloqqWebView) findViewById(R.id.webPage);
mWebView.setWebViewClient(new WebViewClient() {
- public void onReceivedError(WebView view, int errorCode,
- String description, String failingUrl) {
- Toast.makeText(getApplicationContext(),
- "Oh no! " + description, Toast.LENGTH_SHORT).show();
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+ App app = (App) getApplication();
+ if (!app.isOnline()) {
+ Toast toast = Toast.makeText(getApplicationContext(),
+ "Internet connection problems", Toast.LENGTH_LONG);
+ toast.setGravity(Gravity.CENTER, 0, 0);
+ toast.show();
+ }
+ return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
- final View edit = findViewById(R.id.action_go);
-
- if (edit.getClass().getSimpleName()
- .equals(AddressUrlEdit.class.getSimpleName())) {
- if (!mIsUrlListened) {
- AddressUrlEdit uInput = (AddressUrlEdit) edit;
- uInput.setOnEditorActionListener(new TextView.OnEditorActionListener() {
- @Override
- public boolean onEditorAction(TextView v,
- int actionId, KeyEvent event) {
- if (actionId == EditorInfo.IME_ACTION_GO) {
- mCurrentUrl = ((AddressUrlEdit) edit)
- .getText().toString();
- mWebView.loadUrl(mCurrentUrl);
- return true;
- }
- return false;
- }
- });
- uInput.setOnFocusChangeListener(new OnFocusChangeListener() {
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- if (v.getId() == R.id.action_go && !hasFocus) {
- InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(
- edit.getWindowToken(), 0);
- }
- }
- });
- mIsUrlListened = true;
- }
- ((AddressUrlEdit) edit).setText(url);
- }
mCurrentUrl = url;
super.onPageFinished(view, url);
- edit.clearFocus();
findViewById(R.id.main_layout).requestFocus();
new UpdateHistDbTask(getApplicationContext()).execute(mWebView
.copyBackForwardList());
}
});
-
- mWebView.getSettings().setJavaScriptEnabled(true);
+ if (mPrefs.getBoolean("js_enabled", true)) {
+ mWebView.getSettings().setJavaScriptEnabled(true);
+ }
mWebView.getSettings().setBuiltInZoomControls(true);
- mWebView.getSettings().setDefaultFixedFontSize(10);
+
+ try {
+ int fontSize = Integer.parseInt(mPrefs
+ .getString("font_size", "100"));
+ mWebView.getSettings().setTextZoom(fontSize);
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+ mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
+ }
+
final Activity activity = this;
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
@@ -142,18 +128,25 @@ public void onProgressChanged(WebView view, int newProgress) {
mMenu = new SlidingMenu(this);
mMenu.setMode(SlidingMenu.LEFT);
- // mMenu.setMode(SlidingMenu.LEFT_RIGHT);
mMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
- // menu.setShadowWidthRes(R.dimen.dialog_fixed_width_minor);//
- // shadow_width);
- // menu.setShadowDrawable(R.drawable.abc_ab_bottom_solid_light_holo);
- // menu.setBehindOffsetRes(15);// slidingmenu_offset);
mMenu.setFadeEnabled(true);
mMenu.setFadeDegree(0.35f);
mMenu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
mMenu.setMenu(R.layout.left_sliding_menu);
mMenu.setSlidingEnabled(true);
- // mMenu.setSecondaryMenu(R.layout.activity_main);
+
+ View menuLayout = findViewById(R.id.menu_relative_layout);
+ menuLayout.setOnTouchListener(new SwipeTouchListener(this) {
+
+ @Override
+ public void onSwipeRight() {
+ }
+
+ @Override
+ public void onSwipeLeft() {
+ mMenu.toggle();
+ }
+ });
GridView grid = (GridView) mMenu.findViewById(R.id.menu_grid_layout);
final BlocksAdapter adapter = new BlocksAdapter(this, mPrefs);
@@ -164,12 +157,13 @@ public void onProgressChanged(WebView view, int newProgress) {
public void onItemClick(AdapterView> parent, View v,
int position, long id) {
mWebView.loadUrl(v.getTag().toString());
- mMenu.toggle();
+ if (mMenu.isShown()) {
+ mMenu.toggle();
+ }
Log.i("DEBUG", v.getTag().toString());
}
});
grid.setOnItemLongClickListener(new OnItemLongClickListener() {
- // Left and Right
@Override
public boolean onItemLongClick(AdapterView> parent, View v,
int position, long id) {
@@ -179,14 +173,13 @@ public boolean onItemLongClick(AdapterView> parent, View v,
}
mInputUrl = new BlockUrlEdit(getApplicationContext(), position);
+ if (!v.getTag().toString().isEmpty()) {
+ mInputUrl.setText(v.getTag().toString());
+ }
+
RelativeLayout layout = (RelativeLayout) findViewById(R.id.menu_relative_layout);
- // p.topMargin = 50;
- // p.addRule(RelativeLayout.ABOVE, R.id.menu_grid_layout);
- layout.addView(mInputUrl);
- // mInputUrl.setInputType(InputType.TYPE_CLASS_TEXT);
- // mInputUrl.setContentDescription("text");
- // inputUrl.setText("http://");
+ layout.addView(mInputUrl);
mInputUrl.setOnFocusChangeListener(new OnFocusChangeListener() {
@@ -208,9 +201,17 @@ public boolean onEditorAction(TextView v,
if (actionId == EditorInfo.IME_ACTION_DONE) {
SharedPreferences.Editor editor = mPrefs
.edit();
+ String url = mInputUrl.getText().toString();
+ if (url.startsWith("http://")
+ || url.startsWith("https://")) {
+ mCurrentUrl = url;
+ } else {
+ mCurrentUrl = "http://" + url;
+ }
+
editor.putString(
"uri" + mInputUrl.getPosition(),
- mInputUrl.getText().toString());
+ mCurrentUrl);
editor.commit();
DiskCache cache = ((App) getApplication())
.getDiskCache();
@@ -219,10 +220,6 @@ public boolean onEditorAction(TextView v,
adapter.notifyDataSetChanged();
mInputUrl.setVisibility(View.GONE);
mInputUrl = null;
- // mCurrentUrl =
- // inputUrl.getText().toString();
- // mWebView.loadUrl(mCurrentUrl);
-
return true;
}
return false;
@@ -235,22 +232,85 @@ public boolean onEditorAction(TextView v,
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
+ MenuItem item = menu.findItem(R.id.action_go);
+ MenuItemCompat.setOnActionExpandListener(item,
+ new OnActionExpandListener() {
+
+ @Override
+ public boolean onMenuItemActionExpand(MenuItem item) {
+
+ final View edit = MenuItemCompat.getActionView(item);
+ if (edit.getClass().getSimpleName()
+ .equals(AddressUrlEdit.class.getSimpleName())) {
+ AddressUrlEdit uInput = (AddressUrlEdit) edit;
+ uInput.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+ @Override
+ public boolean onEditorAction(TextView v,
+ int actionId, KeyEvent event) {
+ if (actionId == EditorInfo.IME_ACTION_GO) {
+ String url = ((AddressUrlEdit) edit)
+ .getText().toString();
+ if (url.startsWith("http://")
+ || url.startsWith("https://")) {
+ mCurrentUrl = url;
+ mWebView.loadUrl(mCurrentUrl);
+ } else {
+ mCurrentUrl = "http://google.com/search?q="
+ + url;
+ mWebView.loadUrl(mCurrentUrl);
+ }
+ return true;
+ }
+ return false;
+ }
+ });
+ uInput.setOnFocusChangeListener(new OnFocusChangeListener() {
+
+ @Override
+ public void onFocusChange(View v,
+ boolean hasFocus) {
+ if (v.getId() == R.id.action_go
+ && !hasFocus) {
+ InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(
+ edit.getWindowToken(), 0);
+ }
+ }
+ });
+ ((AddressUrlEdit) edit).setText(mCurrentUrl);
+ edit.clearFocus();
+ }
+
+ return true;
+ }
+
+ @Override
+ public boolean onMenuItemActionCollapse(MenuItem item) {
+ return true;
+ }
+ });
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.go_button) {
View go = findViewById(R.id.action_go);
if (go instanceof EditText) {
- mCurrentUrl = ((EditText) go).getText().toString();
- mWebView.loadUrl(mCurrentUrl);
+ if (go instanceof EditText) {
+ String url = ((AddressUrlEdit) go).getText().toString();
+ if (url.startsWith("http://") || url.startsWith("https://")) {
+ mCurrentUrl = url;
+ mWebView.loadUrl(mCurrentUrl);
+ } else {
+ mCurrentUrl = "http://google.com/search?q=" + url;
+ mWebView.loadUrl(mCurrentUrl);
+ }
+ } else {
+ mWebView.loadUrl(mCurrentUrl);
+ }
} else {
mWebView.loadUrl(mCurrentUrl);
}
@@ -261,21 +321,21 @@ public boolean onOptionsItemSelected(MenuItem item) {
} else if (id == R.id.settings_button) {
Intent intent = new Intent(MainActivity.this,
SettingsActivity.class);
- startActivityForResult(intent, REQUEST_HIST);
+ startActivity(intent);
+ } else if (id == R.id.fav_add_button) {
+ new UpdateFavDbTask(this).execute(mWebView.getTitle(),
+ mWebView.getUrl());
+ } else if (id == R.id.fav_button) {
+ Intent intent = new Intent(MainActivity.this,
+ FavoriteActivity.class);
+ startActivityForResult(intent, REQUEST_FAV);
}
return super.onOptionsItemSelected(item);
}
- /*
- * @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if
- * (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) {
- * mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event);
- * }
- */
@Override
public void onBackPressed() {
if (mMenu.isMenuShowing()) {
- // mMenu.showContent();
mMenu.toggle(true);
}
if (mWebView.canGoBack()) {
@@ -300,7 +360,10 @@ protected void onActivityResult(int requestCode, int requestResult,
if (requestResult == RESULT_OK) {
mWebView.loadUrl(intent.getStringExtra(EXTRA_URL));
}
+ } else if (requestCode == REQUEST_FAV) {
+ if (requestResult == RESULT_OK) {
+ mWebView.loadUrl(intent.getStringExtra(EXTRA_URL));
+ }
}
}
-
}
diff --git a/src/com/bloqq/activities/ReceiveActivity.java b/src/com/bloqq/activities/ReceiveActivity.java
new file mode 100644
index 0000000..bab071c
--- /dev/null
+++ b/src/com/bloqq/activities/ReceiveActivity.java
@@ -0,0 +1,194 @@
+package com.bloqq.activities;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v4.view.MenuItemCompat.OnActionExpandListener;
+import android.support.v7.app.ActionBarActivity;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnFocusChangeListener;
+import android.view.Window;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.webkit.WebChromeClient;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.bloqq.BloqqWebView;
+import com.bloqq.R;
+import com.bloqq.cache.App;
+import com.bloqq.edits.AddressUrlEdit;
+import com.bloqq.sqlite.UpdateHistDbTask;
+
+public class ReceiveActivity extends ActionBarActivity {
+
+ private BloqqWebView mWebView;
+ private String mCurrentUrl;
+
+ @SuppressLint("SetJavaScriptEnabled")
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+
+ getWindow().requestFeature(Window.FEATURE_PROGRESS);
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ if (getIntent().getAction() != null) {
+ if (getIntent().getAction().equals(Intent.ACTION_VIEW)) {
+ Intent data = getIntent();
+ mCurrentUrl = data.getData().toString();
+ Log.i("DEBUG", "URL: " + mCurrentUrl);
+ }
+ }
+
+ mWebView = (BloqqWebView) findViewById(R.id.webPage);
+ mWebView.setWebViewClient(new WebViewClient() {
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+ App app = (App) getApplication();
+ if (!app.isOnline()) {
+ Toast toast = Toast.makeText(getApplicationContext(),
+ "Internet connection problems", Toast.LENGTH_LONG);
+ toast.setGravity(Gravity.CENTER, 0, 0);
+ toast.show();
+ }
+ if (url.contains("oauth_verifier")) {
+ Uri uri = Uri.parse(url);
+ Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+ intent.addCategory(Intent.CATEGORY_BROWSABLE);
+ intent.setData(uri);
+ startActivity(intent);
+ finish();
+ return true;
+ } else if (url.contains("denied")) {
+ Toast.makeText(getApplicationContext(),
+ "Access to account denied", Toast.LENGTH_LONG)
+ .show();
+ finish();
+ return true;
+ }
+ return super.shouldOverrideUrlLoading(view, url);
+ }
+
+ @Override
+ public void onPageFinished(WebView view, String url) {
+ mCurrentUrl = url;
+ super.onPageFinished(view, url);
+ findViewById(R.id.main_layout).requestFocus();
+ new UpdateHistDbTask(getApplicationContext()).execute(mWebView
+ .copyBackForwardList());
+ }
+ });
+
+ mWebView.getSettings().setJavaScriptEnabled(true);
+ mWebView.getSettings().setBuiltInZoomControls(true);
+ mWebView.getSettings().setDefaultFixedFontSize(10);
+ final Activity activity = this;
+ mWebView.setWebChromeClient(new WebChromeClient() {
+ @Override
+ public void onProgressChanged(WebView view, int newProgress) {
+ activity.setProgress(newProgress * 100);
+ }
+ });
+
+ mWebView.loadUrl(mCurrentUrl);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.main, menu);
+ MenuItem item = menu.findItem(R.id.action_go);
+ MenuItemCompat.setOnActionExpandListener(item,
+ new OnActionExpandListener() {
+
+ @Override
+ public boolean onMenuItemActionExpand(MenuItem item) {
+
+ final View edit = MenuItemCompat.getActionView(item);
+ if (edit.getClass().getSimpleName()
+ .equals(AddressUrlEdit.class.getSimpleName())) {
+ AddressUrlEdit uInput = (AddressUrlEdit) edit;
+ uInput.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+ @Override
+ public boolean onEditorAction(TextView v,
+ int actionId, KeyEvent event) {
+ if (actionId == EditorInfo.IME_ACTION_GO) {
+ String url = ((AddressUrlEdit) edit)
+ .getText().toString();
+ if (url.startsWith("http://")
+ || url.startsWith("https://")) {
+ mCurrentUrl = url;
+ mWebView.loadUrl(mCurrentUrl);
+ } else {
+ mCurrentUrl = "http://google.com/search?q="
+ + url;
+ mWebView.loadUrl(mCurrentUrl);
+ }
+ return true;
+ }
+ return false;
+ }
+ });
+ uInput.setOnFocusChangeListener(new OnFocusChangeListener() {
+
+ @Override
+ public void onFocusChange(View v,
+ boolean hasFocus) {
+ if (v.getId() == R.id.action_go
+ && !hasFocus) {
+ InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(
+ edit.getWindowToken(), 0);
+ }
+ }
+ });
+ ((AddressUrlEdit) edit).setText(mCurrentUrl);
+ edit.clearFocus();
+ }
+
+ return true;
+ }
+
+ @Override
+ public boolean onMenuItemActionCollapse(MenuItem item) {
+ return true;
+ }
+ });
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ int id = item.getItemId();
+ if (id == R.id.go_button) {
+ View go = findViewById(R.id.action_go);
+ if (go instanceof EditText) {
+ String url = ((AddressUrlEdit) go).getText().toString();
+ if (url.startsWith("http://") || url.startsWith("https://")) {
+ mCurrentUrl = url;
+ mWebView.loadUrl(mCurrentUrl);
+ } else {
+ mCurrentUrl = "http://google.com/search?q=" + url;
+ mWebView.loadUrl(mCurrentUrl);
+ }
+ } else {
+ mWebView.loadUrl(mCurrentUrl);
+ }
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+}
diff --git a/src/com/bloqq/activities/SettingsActivity.java b/src/com/bloqq/activities/SettingsActivity.java
index 8ccf684..e14db03 100755
--- a/src/com/bloqq/activities/SettingsActivity.java
+++ b/src/com/bloqq/activities/SettingsActivity.java
@@ -1,9 +1,15 @@
package com.bloqq.activities;
+import android.content.SharedPreferences.Editor;
import android.os.Bundle;
+import android.preference.EditTextPreference;
+import android.preference.Preference;
+import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
+import android.util.Log;
import com.bloqq.R;
+import com.bloqq.sqlite.BloqqDBHelper;
public class SettingsActivity extends PreferenceActivity {
@SuppressWarnings("deprecation")
@@ -13,6 +19,48 @@ protected void onCreate(Bundle savedInstanceState) {
addPreferencesFromResource(R.xml.preferences);
// getSupportFragmentManager().beginTransaction()
// .replace(android.R.id.content, new SettingFragment()).commit();
+ EditTextPreference homePage = (EditTextPreference) findPreference("homepage");
+ homePage.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference,
+ Object newValue) {
+ String newUrl = null;
+ String url = newValue.toString();
+ Log.i("DEBUG", url);
+ if (url.startsWith("http://") || url.startsWith("https://")) {
+ newUrl = url;
+ } else {
+ newUrl = "http://" + url;
+ }
+ Editor editor = preference.getEditor();
+ editor.putString("homepage", newUrl);
+ editor.commit();
+ return false;
+ }
+ });
+
+ Preference clearHistButton = findPreference("button_clear_hist");
+ clearHistButton
+ .setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference pref) {
+ getContentResolver().delete(
+ BloqqDBHelper.Hist.CONTENT_URI_HIST_DB,
+ "1 = 1", null);
+ return true;
+ }
+ });
+ Preference clearFavButton = findPreference("button_clear_fav");
+ clearFavButton
+ .setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference pref) {
+ getContentResolver().delete(
+ BloqqDBHelper.Fav.CONTENT_URI_FAV_DB, "1 = 1",
+ null);
+ return true;
+ }
+ });
}
}
diff --git a/src/com/bloqq/activities/SettingsFragment.java b/src/com/bloqq/activities/SettingsFragment.java
deleted file mode 100755
index a968541..0000000
--- a/src/com/bloqq/activities/SettingsFragment.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.bloqq.activities;
-
-import com.bloqq.R;
-
-import android.annotation.TargetApi;
-import android.os.Build;
-import android.os.Bundle;
-import android.preference.PreferenceFragment;
-
-@TargetApi(Build.VERSION_CODES.HONEYCOMB)
-public class SettingsFragment extends PreferenceFragment {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- // Load the preferences from an XML resource
- addPreferencesFromResource(R.xml.preferences);
- }
-}
diff --git a/src/com/bloqq/cache/App.java b/src/com/bloqq/cache/App.java
index 1f498f7..7a0bdb2 100755
--- a/src/com/bloqq/cache/App.java
+++ b/src/com/bloqq/cache/App.java
@@ -1,6 +1,6 @@
package com.bloqq.cache;
-import com.bloqq.sqlite.HistDBHelper;
+import com.bloqq.sqlite.BloqqDBHelper;
import android.app.Application;
import android.content.Context;
@@ -15,7 +15,7 @@ public class App extends Application {
private static SQLiteDatabase sDb;
- private static HistDBHelper sHelper;
+ private static BloqqDBHelper sHelper;
@Override
public void onCreate() {
@@ -23,8 +23,12 @@ public void onCreate() {
createDb();
- sDiskCache = new DiskCache(getApplicationContext(), "icons",
- 10 * 1024 * 1024, CompressFormat.JPEG, 100);
+ try {
+ sDiskCache = new DiskCache(getApplicationContext(), "icons",
+ 10 * 1024 * 1024, CompressFormat.JPEG, 100);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
public DiskCache getDiskCache() {
@@ -42,7 +46,7 @@ public SQLiteDatabase getDB() {
}
public void createDb() {
- sHelper = new HistDBHelper(this);
+ sHelper = new BloqqDBHelper(this);
sDb = sHelper.getWritableDatabase();
}
}
diff --git a/src/com/bloqq/edits/AddressUrlEdit.java b/src/com/bloqq/edits/AddressUrlEdit.java
index 6d18150..fdaa014 100755
--- a/src/com/bloqq/edits/AddressUrlEdit.java
+++ b/src/com/bloqq/edits/AddressUrlEdit.java
@@ -19,18 +19,13 @@ public AddressUrlEdit(Context context) {
this.setInputType(InputType.TYPE_CLASS_TEXT);
this.setImeOptions(EditorInfo.TYPE_TEXT_VARIATION_URI);
- // this.setBackgroundColor(Color.LTGRAY);
-
this.setShadowLayer(4.0f, 1.0f, 1.0f, Color.WHITE);
this.setTextColor(0xff000000);
- // MainActivity ma = ((MainActivity)context).getHomepage();
SharedPreferences prefs = context.getSharedPreferences("settings",
Context.MODE_PRIVATE);
- Log.i("DEBUG", "1");
this.setText(prefs
.getString(MainActivity.HOMEPAGE, "http://google.com"));
- Log.i("DEBUG", "2");
}
public AddressUrlEdit(Context context, AttributeSet attrs) {
@@ -38,9 +33,5 @@ public AddressUrlEdit(Context context, AttributeSet attrs) {
this.setImeActionLabel("Go", EditorInfo.IME_ACTION_GO);
this.setInputType(InputType.TYPE_CLASS_TEXT);
this.setImeOptions(EditorInfo.TYPE_TEXT_VARIATION_URI);
- // SharedPreferences prefs = context.getSharedPreferences("settings",
- // Context.MODE_PRIVATE);
- // this.setText(prefs
- // .getString(MainActivity.HOMEPAGE, "http://google.com"));
}
}
diff --git a/src/com/bloqq/edits/BlockUrlEdit.java b/src/com/bloqq/edits/BlockUrlEdit.java
index 80981f9..50aa117 100755
--- a/src/com/bloqq/edits/BlockUrlEdit.java
+++ b/src/com/bloqq/edits/BlockUrlEdit.java
@@ -32,30 +32,26 @@ public BlockUrlEdit(Context context, int position) {
this.setLayoutParams(p);
this.setBackgroundColor(Color.LTGRAY);
- // this.setShadowLayer(2.0f, 0.0f, 0.0f, 0xffff77ff);
- // this.setTextColor(0xffffffff);
this.setShadowLayer(4.0f, 2.0f, 2.0f, 0xff000000);
this.setTextColor(0xffffffff);
- // this.setTextColor(Color.BLACK);
-
Field f = null;
try {
f = TextView.class.getDeclaredField("mCursorDrawableRes");
+ f.setAccessible(true);
+ try {
+ f.set(this, R.drawable.cursor);
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ }
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
- f.setAccessible(true);
- try {
- f.set(this, R.drawable.cursor);
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- }
+
this.requestFocus();
- // MainActivity ma = ((MainActivity)context).getHomepage();
SharedPreferences prefs = context.getSharedPreferences("settings",
Context.MODE_PRIVATE);
this.setText(prefs.getString("uri" + mPosition, "http://"));
diff --git a/src/com/bloqq/sqlite/HistContentProvider.java b/src/com/bloqq/sqlite/BloqqContentProvider.java
similarity index 88%
rename from src/com/bloqq/sqlite/HistContentProvider.java
rename to src/com/bloqq/sqlite/BloqqContentProvider.java
index 8af8f17..694ab2f 100644
--- a/src/com/bloqq/sqlite/HistContentProvider.java
+++ b/src/com/bloqq/sqlite/BloqqContentProvider.java
@@ -9,7 +9,7 @@
import com.bloqq.cache.App;
-public class HistContentProvider extends ContentProvider {
+public class BloqqContentProvider extends ContentProvider {
@Override
public boolean onCreate() {
@@ -19,13 +19,11 @@ public boolean onCreate() {
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
- // Log.i("DEBUG", "query " + uri.toString());
- Log.i("DEBUG", "DB select..");
App app = (App) getContext();
SQLiteDatabase db = app.getDB();
Cursor cur = db.query(uri.getPath().replace('/', ' '), projection,
- selection, selectionArgs, null, null,
- HistDBHelper.Hist.COLUMN_URL + " DESC");
+ selection, selectionArgs, null, null, sortOrder);
+ // BloqqDBHelper.Hist.COLUMN_URL + " DESC");
return cur;
}
diff --git a/src/com/bloqq/sqlite/HistDBHelper.java b/src/com/bloqq/sqlite/BloqqDBHelper.java
similarity index 53%
rename from src/com/bloqq/sqlite/HistDBHelper.java
rename to src/com/bloqq/sqlite/BloqqDBHelper.java
index 5f34bd1..90acbf3 100644
--- a/src/com/bloqq/sqlite/HistDBHelper.java
+++ b/src/com/bloqq/sqlite/BloqqDBHelper.java
@@ -7,23 +7,37 @@
import android.provider.BaseColumns;
import android.util.Log;
-public class HistDBHelper extends SQLiteOpenHelper {
+public class BloqqDBHelper extends SQLiteOpenHelper {
public static final class Hist implements BaseColumns {
public static final Uri CONTENT_URI_HIST_DB = Uri
- .parse("content://com.bloqq.sqlite.HistContentProvider/hist");
+ .parse("content://com.bloqq.sqlite.BloqqContentProvider/hist");
public static final String TABLE_NAME_HIST = "hist";
public static final String COLUMN_TITLE = "title";
public static final String COLUMN_URL = "url";
+ public static final String COLUMN_DATE = "date";
}
- private static final String DB_NAME = "hist.db";
+ public static final class Fav implements BaseColumns {
+ public static final Uri CONTENT_URI_FAV_DB = Uri
+ .parse("content://com.bloqq.sqlite.BloqqContentProvider/fav");
+ public static final String TABLE_NAME_FAV = "fav";
+ public static final String COLUMN_TITLE = "title";
+ public static final String COLUMN_URL = "url";
+ }
+
+ private static final String DB_NAME = "bloqq.db";
private static final int VERSION = 1;
private static final String CREATE_TABLE_HOME = "CREATE TABLE "
+ Hist.TABLE_NAME_HIST + "(" + Hist._ID + " INTEGER PRIMARY KEY, "
- + Hist.COLUMN_TITLE + " TEXT, " + Hist.COLUMN_URL + " TEXT)";
+ + Hist.COLUMN_TITLE + " TEXT, " + Hist.COLUMN_DATE + " TEXT, "
+ + Hist.COLUMN_URL + " TEXT)";
+
+ private static final String CREATE_TABLE_FAV = "CREATE TABLE "
+ + Fav.TABLE_NAME_FAV + "(" + Fav._ID + " INTEGER PRIMARY KEY, "
+ + Fav.COLUMN_TITLE + " TEXT, " + Fav.COLUMN_URL + " TEXT)";
- public HistDBHelper(Context context) {
+ public BloqqDBHelper(Context context) {
super(context, DB_NAME, null, VERSION);
}
@@ -31,6 +45,7 @@ public HistDBHelper(Context context) {
public void onCreate(SQLiteDatabase db) {
Log.i("DEBUG", "onCreate DB");
db.execSQL(CREATE_TABLE_HOME);
+ db.execSQL(CREATE_TABLE_FAV);
}
@Override
diff --git a/src/com/bloqq/sqlite/UpdateFavDbTask.java b/src/com/bloqq/sqlite/UpdateFavDbTask.java
new file mode 100644
index 0000000..bfcb10d
--- /dev/null
+++ b/src/com/bloqq/sqlite/UpdateFavDbTask.java
@@ -0,0 +1,30 @@
+package com.bloqq.sqlite;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.os.AsyncTask;
+
+public class UpdateFavDbTask extends AsyncTask {
+
+ private final Context mContext;
+
+ public UpdateFavDbTask(Context context) {
+ mContext = context;
+ }
+
+ @Override
+ protected Void doInBackground(String... params) {
+ String favTitle = params[0];
+ String favUrl = params[1];
+ ContentResolver resolver = mContext.getContentResolver();
+ ContentValues values = new ContentValues();
+ if (favUrl != null) {
+ values.put(BloqqDBHelper.Fav.COLUMN_TITLE, favTitle);
+ values.put(BloqqDBHelper.Fav.COLUMN_URL, favUrl);
+
+ resolver.insert(BloqqDBHelper.Fav.CONTENT_URI_FAV_DB, values);
+ }
+ return null;
+ }
+}
diff --git a/src/com/bloqq/sqlite/UpdateHistDbTask.java b/src/com/bloqq/sqlite/UpdateHistDbTask.java
index 773935e..c36b2ad 100644
--- a/src/com/bloqq/sqlite/UpdateHistDbTask.java
+++ b/src/com/bloqq/sqlite/UpdateHistDbTask.java
@@ -4,6 +4,8 @@
import android.content.ContentValues;
import android.content.Context;
import android.os.AsyncTask;
+import android.text.format.Time;
+import android.util.Log;
import android.webkit.WebBackForwardList;
public class UpdateHistDbTask extends AsyncTask {
@@ -12,27 +14,35 @@ public class UpdateHistDbTask extends AsyncTask
public UpdateHistDbTask(Context context) {
mContext = context;
- }
+ }
@Override
protected Void doInBackground(WebBackForwardList... params) {
WebBackForwardList hist = params[0];
ContentResolver resolver = mContext.getContentResolver();
ContentValues values = new ContentValues();
- /*
- * for (int i = 0; i < hist.getSize(); i++) {
- * values.put(HistDBHelper.Hist.COLUMN_TITLE, hist.getItemAtIndex(i)
- * .getTitle()); values.put(HistDBHelper.Hist.COLUMN_URL,
- * hist.getItemAtIndex(i) .getOriginalUrl());
- *
- * resolver.insert(HistDBHelper.Hist.CONTENT_URI_HIST_DB, values); }
- */
- values.put(HistDBHelper.Hist.COLUMN_TITLE, hist.getCurrentItem()
- .getTitle());
- values.put(HistDBHelper.Hist.COLUMN_URL, hist.getCurrentItem()
- .getOriginalUrl());
-
- resolver.insert(HistDBHelper.Hist.CONTENT_URI_HIST_DB, values);
+
+ if (hist.getCurrentItem() != null) {
+ Time today = new Time(Time.getCurrentTimezone());
+ today.setToNow();
+ String date = checkZero(today.monthDay) + "."
+ + checkZero(today.month) + "." + today.year;
+ String time = checkZero(today.hour) + ":" + checkZero(today.minute)
+ + ":" + checkZero(today.second);
+ String datetime = date + " " + time;
+ Log.i("DEBUG", datetime);
+ values.put(BloqqDBHelper.Hist.COLUMN_TITLE, hist.getCurrentItem()
+ .getTitle());
+ values.put(BloqqDBHelper.Hist.COLUMN_URL, hist.getCurrentItem()
+ .getOriginalUrl());
+ values.put(BloqqDBHelper.Hist.COLUMN_DATE, datetime);
+
+ resolver.insert(BloqqDBHelper.Hist.CONTENT_URI_HIST_DB, values);
+ }
return null;
}
+
+ private String checkZero(int check) {
+ return check > 9 ? String.valueOf(check) : "0" + String.valueOf(check);
+ }
}