summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml4
-rw-r--r--res/menu/category_menu.xml3
-rw-r--r--res/menu/feed_menu.xml4
-rw-r--r--res/values/strings.xml2
-rw-r--r--src/org/fox/ttrss/FeedCategoriesFragment.java9
-rw-r--r--src/org/fox/ttrss/FeedsActivity.java26
-rw-r--r--src/org/fox/ttrss/FeedsFragment.java8
-rw-r--r--src/org/fox/ttrss/HeadlinesActivity.java20
8 files changed, 75 insertions, 1 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index cbd3af06..bf3c52aa 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -11,6 +11,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<application
android:name=".GlobalState"
@@ -41,6 +42,9 @@
android:name=".HeadlinesActivity"
android:uiOptions="splitActionBarWhenNarrow"
android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
</activity>
<activity
android:name=".CommonActivity"
diff --git a/res/menu/category_menu.xml b/res/menu/category_menu.xml
index 69f26554..28216d41 100644
--- a/res/menu/category_menu.xml
+++ b/res/menu/category_menu.xml
@@ -16,4 +16,7 @@
android:id="@+id/catchup_category"
android:title="@string/catchup"/>
+ <item
+ android:id="@+id/create_shortcut"
+ android:title="@string/place_shortcut"/>
</menu> \ No newline at end of file
diff --git a/res/menu/feed_menu.xml b/res/menu/feed_menu.xml
index dc859124..c0578897 100644
--- a/res/menu/feed_menu.xml
+++ b/res/menu/feed_menu.xml
@@ -15,5 +15,9 @@
<item
android:id="@+id/catchup_feed"
android:title="@string/catchup"/>
+
+ <item
+ android:id="@+id/create_shortcut"
+ android:title="@string/place_shortcut"/>
</menu> \ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b6831d6d..f854dabf 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -204,4 +204,6 @@
<string name="theme_system">Device Default</string>
<string name="accel_webview_summary">Disable if you see flicker or visual glitches.</string>
<string name="accel_webview_title">Accelerate web views</string>
+ <string name="place_shortcut">Place shortcut</string>
+ <string name="shortcut_has_been_placed_on_the_home_screen">Shortcut has been placed on the home screen</string>
</resources>
diff --git a/src/org/fox/ttrss/FeedCategoriesFragment.java b/src/org/fox/ttrss/FeedCategoriesFragment.java
index 3c03952b..df4e6dff 100644
--- a/src/org/fox/ttrss/FeedCategoriesFragment.java
+++ b/src/org/fox/ttrss/FeedCategoriesFragment.java
@@ -128,6 +128,15 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe
}
}
return true;
+ case R.id.create_shortcut:
+ if (true) {
+ FeedCategory cat = getCategoryAtPosition(info.position);
+ if (cat != null) {
+ m_activity.createCategoryShortcut(cat);
+ //cf.setSelectedCategory(cat);
+ }
+ }
+ return true;
case R.id.catchup_category:
if (true) {
final FeedCategory cat = getCategoryAtPosition(info.position);
diff --git a/src/org/fox/ttrss/FeedsActivity.java b/src/org/fox/ttrss/FeedsActivity.java
index f7f0c989..4cd6148c 100644
--- a/src/org/fox/ttrss/FeedsActivity.java
+++ b/src/org/fox/ttrss/FeedsActivity.java
@@ -11,10 +11,13 @@ import org.fox.ttrss.util.AppRater;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
+import android.content.ComponentName;
import android.content.Intent;
+import android.content.Intent.ShortcutIconResource;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
+import android.os.Parcelable;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
@@ -389,4 +392,27 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe
GlobalState.getInstance().m_activeArticle = null;
}
}
+
+ public void createFeedShortcut(Feed feed) {
+ final Intent shortcutIntent = new Intent(this, HeadlinesActivity.class);
+ shortcutIntent.putExtra("feed_id", feed.id);
+ shortcutIntent.putExtra("feed_is_cat", feed.is_cat);
+ shortcutIntent.putExtra("feed_title", feed.title);
+ shortcutIntent.putExtra("shortcut_mode", true);
+
+ Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
+
+ intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, feed.title);
+ intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
+ intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.icon));
+ intent.putExtra("duplicate", false);
+
+ sendBroadcast(intent);
+
+ toast(R.string.shortcut_has_been_placed_on_the_home_screen);
+ }
+
+ public void createCategoryShortcut(FeedCategory cat) {
+ createFeedShortcut(new Feed(cat.id, cat.title, true));
+ }
}
diff --git a/src/org/fox/ttrss/FeedsFragment.java b/src/org/fox/ttrss/FeedsFragment.java
index f6692ca7..fe6ba048 100644
--- a/src/org/fox/ttrss/FeedsFragment.java
+++ b/src/org/fox/ttrss/FeedsFragment.java
@@ -159,6 +159,14 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
}
}
return true;
+ case R.id.create_shortcut:
+ if (true) {
+ Feed feed = getFeedAtPosition(info.position);
+ if (feed != null) {
+ m_activity.createFeedShortcut(feed);
+ }
+ }
+ return true;
case R.id.catchup_feed:
if (true) {
final Feed feed = getFeedAtPosition(info.position);
diff --git a/src/org/fox/ttrss/HeadlinesActivity.java b/src/org/fox/ttrss/HeadlinesActivity.java
index c25c755e..ed86867e 100644
--- a/src/org/fox/ttrss/HeadlinesActivity.java
+++ b/src/org/fox/ttrss/HeadlinesActivity.java
@@ -47,7 +47,25 @@ public class HeadlinesActivity extends OnlineActivity implements HeadlinesEventL
Intent i = getIntent();
if (i.getExtras() != null) {
- final Feed feed = i.getParcelableExtra("feed");
+ boolean shortcutMode = i.getBooleanExtra("shortcut_mode", false);
+
+ Log.d(TAG, "is_shortcut_mode: " + shortcutMode);
+
+ Feed tmpFeed;
+
+ if (shortcutMode) {
+ int feedId = i.getIntExtra("feed_id", 0);
+ boolean isCat = i.getBooleanExtra("feed_is_cat", false);
+ String feedTitle = i.getStringExtra("feed_title");
+
+ tmpFeed = new Feed(feedId, feedTitle, isCat);
+
+ } else {
+ tmpFeed = i.getParcelableExtra("feed");
+ }
+
+ final Feed feed = tmpFeed;
+
final Article article = i.getParcelableExtra("article");
final String searchQuery = i.getStringExtra("searchQuery");