diff --git a/Apk/GithubWidget_1.0.2.apk b/Apk/GithubWidget_1.0.2.apk new file mode 100644 index 0000000..8f35773 Binary files /dev/null and b/Apk/GithubWidget_1.0.2.apk differ diff --git a/Apk/GithubWidget_1.0.2.png b/Apk/GithubWidget_1.0.2.png new file mode 100644 index 0000000..2d596ed Binary files /dev/null and b/Apk/GithubWidget_1.0.2.png differ diff --git a/Apk/GithubWidget_1.0.3.apk b/Apk/GithubWidget_1.0.3.apk new file mode 100644 index 0000000..dc25f8d Binary files /dev/null and b/Apk/GithubWidget_1.0.3.apk differ diff --git a/Apk/GithubWidget_1.0.3.png b/Apk/GithubWidget_1.0.3.png new file mode 100644 index 0000000..a2c765b Binary files /dev/null and b/Apk/GithubWidget_1.0.3.png differ diff --git a/README-ZH.md b/README-ZH.md index 4eb8a0d..3089af9 100644 --- a/README-ZH.md +++ b/README-ZH.md @@ -9,6 +9,8 @@ [![BlurLockView](https://github.com/Nightonke/BlurLockView/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/BlurLockView) [![LeeCo](https://github.com/Nightonke/LeeCo/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/LeeCo) [![GithubWidget](https://github.com/Nightonke/GithubWidget/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/GithubWidget) +[![JellyToggleButton](https://github.com/Nightonke/JellyToggleButton/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/JellyToggleButton) +[![FaceOffToggleButton](https://github.com/Nightonke/FaceOffToggleButton/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/FaceOffToggleButton) # Guide #### [Englist README](https://github.com/Nightonke/GithubWidget) @@ -53,13 +55,14 @@ Github Widget是一个轻量级、现版本拥有11中风格的显示以下Githu ### Download 查看 [Apk](https://github.com/Nightonke/GithubWidget/tree/master/Apk) 文件夹来获取所有版本的Apk文件和二维码。 -通过 [这里](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.1.apk?raw=true)下载最新的版本。 +通过 [这里](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.3.apk?raw=true)下载最新的版本。 或者通过 [fir.im/GithubWidget](http://fir.im/GithubWidget)。 再或者通过二维码: -![Qrcode](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.1.png?raw=true) +![Qrcode](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.3.png?raw=true) ### Styles of Github Widget -第一个版本支持11种风格。 +第一个版本支持11种风格。 +注意从版本1.0.3开始,所有的widget都支持宽度超过或等于4个格子。但是仍然建议使用4个格子宽度的widget,因为有时候在太宽的widget上显示效果会比较差。 #### 4×1 ✓ 2D 贡献图表 @@ -228,6 +231,12 @@ Github Widget是一个轻量级、现版本拥有11中风格的显示以下Githu ### Version List ##### First Version [V 1.0.1](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.1.apk?raw=true) +##### 1.0.2 +[ V1.0.2](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.2.apk?raw=true) +加入热门仓库所有语言支持。 +##### 1.0.3 +[ V1.0.3](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.3.apk?raw=true) +删除表情、链接等符号,支持更大的宽度。 ### License diff --git a/README.md b/README.md index 266904e..f3dad26 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ Contributions, stars, followers, trending etc. on Github. [![BlurLockView](https://github.com/Nightonke/BlurLockView/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/BlurLockView) [![LeeCo](https://github.com/Nightonke/LeeCo/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/LeeCo) [![GithubWidget](https://github.com/Nightonke/GithubWidget/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/GithubWidget) +[![JellyToggleButton](https://github.com/Nightonke/JellyToggleButton/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/JellyToggleButton) +[![FaceOffToggleButton](https://github.com/Nightonke/FaceOffToggleButton/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/FaceOffToggleButton) # Guide #### [中文文档](https://github.com/Nightonke/GithubWidget/blob/master/README-ZH.md) @@ -53,13 +55,14 @@ After installing Github Widget, there is no launch icon for it. Try to add widge ### Download Check the [Apk](https://github.com/Nightonke/GithubWidget/tree/master/Apk) diectory for all versions apks and qrcode pictures. -Download the current version [here](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.1.apk?raw=true). +Download the current version [here](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.3.apk?raw=true). Or from [fir.im/GithubWidget](http://fir.im/GithubWidget). Or by qrcode: -![Qrcode](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.1.png?raw=true) +![Qrcode](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.3.png?raw=true) ### Styles of Github Widget -The first version supports 11 styles for showing part of the above information. +The first version supports 11 styles for showing part of the above information. +Notice that from version 1.0.3, all the widgets support width larger or equal than 4-blocks. But I suggest 4-blocks-width widgets should be used because sometimes images look strange when the widgets are too wide. #### 4×1 ✓ 2D Contributions chart @@ -227,7 +230,13 @@ Maybe you get problems or bugs? Just tell me in issues or email. And you can tel ### Version List ##### First Version -[V 1.0.1](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.1.apk?raw=true) +[ V1.0.1](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.1.apk?raw=true) +##### 1.0.2 +[ V1.0.2](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.2.apk?raw=true) +Add all language support. +##### 1.0.3 +[ V1.0.3](https://github.com/Nightonke/GithubWidget/blob/master/Apk/GithubWidget_1.0.3.apk?raw=true) +Delete url and img tags, support larger width. ### License diff --git a/app/build.gradle b/app/build.gradle index a3fb9cc..e5d2597 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ android { minSdkVersion 14 targetSdkVersion 23 versionCode 1 - versionName "1.0.1" + versionName "1.0.3" } buildTypes { release { diff --git a/app/src/main/java/com/nightonke/githubwidget/Language.java b/app/src/main/java/com/nightonke/githubwidget/Language.java index 58fe8d9..8e21b71 100644 --- a/app/src/main/java/com/nightonke/githubwidget/Language.java +++ b/app/src/main/java/com/nightonke/githubwidget/Language.java @@ -5,6 +5,7 @@ */ public enum Language { + ALL_LANGUAGE("All Language"), JAVASCRIPT("JavaScript"), CSS("CSS"), RUBY("Ruby"), diff --git a/app/src/main/java/com/nightonke/githubwidget/ListViewContentTask.java b/app/src/main/java/com/nightonke/githubwidget/ListViewContentTask.java index 8795fb7..f9be0a2 100644 --- a/app/src/main/java/com/nightonke/githubwidget/ListViewContentTask.java +++ b/app/src/main/java/com/nightonke/githubwidget/ListViewContentTask.java @@ -121,13 +121,16 @@ private String getTrending() { String urlString = ""; if (SettingsManager.getListViewContent().equals(ListViewContent.TRENDING_DAILY)) urlString = "https://github.com/trending/" - + SettingsManager.getLanguage().v + "?since=daily"; + + (Language.ALL_LANGUAGE.equals(SettingsManager.getLanguage()) ? + "" : SettingsManager.getLanguage().v) + "?since=daily"; if (SettingsManager.getListViewContent().equals(ListViewContent.TRENDING_WEEKLY)) urlString = "https://github.com/trending/" - + SettingsManager.getLanguage().v + "?since=weekly"; + + (Language.ALL_LANGUAGE.equals(SettingsManager.getLanguage()) ? + "" : SettingsManager.getLanguage().v) + "?since=weekly"; if (SettingsManager.getListViewContent().equals(ListViewContent.TRENDING_MONTHLY)) urlString = "https://github.com/trending/" - + SettingsManager.getLanguage().v + "?since=monthly"; + + (Language.ALL_LANGUAGE.equals(SettingsManager.getLanguage()) ? + "" : SettingsManager.getLanguage().v) + "?since=monthly"; urlString = urlString.replace(" ", "%20"); if (BuildConfig.DEBUG) Log.d("GithubWidget", "Get trending: " + urlString); diff --git a/app/src/main/java/com/nightonke/githubwidget/SettingsManager.java b/app/src/main/java/com/nightonke/githubwidget/SettingsManager.java index 0c690ea..31f52c0 100644 --- a/app/src/main/java/com/nightonke/githubwidget/SettingsManager.java +++ b/app/src/main/java/com/nightonke/githubwidget/SettingsManager.java @@ -52,7 +52,7 @@ public class SettingsManager { private static ListViewContent listViewContent = ListViewContent.TRENDING_DAILY; - private static Language language = Language.JAVA; + private static Language language = Language.ALL_LANGUAGE; private static ArrayList> listViewContents = null; @@ -377,6 +377,8 @@ public static ArrayList> getListViewContents() { public static final String TITLE_END = "\""; public static final String CONTENT = "

\n "; public static final String CONTENT_END = "\n

\n"; + public static final String LANGUAGE = "

\n "; + public static final String LANGUAGE_END = "\n\n •"; public static final String CORNER = " •\n\n "; public static final String CORNER_END = " star"; public static void setListViewContents(String contents) { @@ -408,13 +410,33 @@ public static void setListViewContents(String contents) { end = contents.indexOf(CORNER_END, start); String starsString = contents.substring(start, end); starsString = starsString.replaceAll(",", ""); + + int starsIndex = start; + + start = contents.indexOf(LANGUAGE, repoIndex) + LANGUAGE.length(); + end = contents.indexOf(LANGUAGE_END, start); + String language = ""; + if (end != -1) language = contents.substring(start, end) + " • "; + if (language.length() > 30 || end == -1) { + // no language, like markdown + language = ""; + int p1 = contents.indexOf("

", repoIndex); + int p2 = contents.indexOf(" star", p1); + int p3 = p2 - 1; + while ('0' <= contents.charAt(p3) && contents.charAt(p3) <= '9') p3--; + starsString = contents.substring(p3 + 1, p2); + } else if (start > starsIndex) { + language = ""; + } + try { Integer.parseInt(starsString); - content.put("corner", starsString); + if ("1".equals(starsString)) starsString += " star"; + else starsString += " stars"; + content.put("corner", language + starsString); } catch (NumberFormatException n) { - content.put("corner", "0"); + content.put("corner", language + "0" + " stars"); } - int starsIndex = start; start = contents.indexOf(CONTENT, repoIndex) + CONTENT.length(); if (start > starsIndex) { @@ -422,7 +444,8 @@ public static void setListViewContents(String contents) { content.put("content", ""); } else { end = contents.indexOf(CONTENT_END, start); - content.put("content", contents.substring(start, end)); + content.put("content", + Util.deleteUselessString(contents.substring(start, end))); } listViewContents.add(content); diff --git a/app/src/main/java/com/nightonke/githubwidget/Util.java b/app/src/main/java/com/nightonke/githubwidget/Util.java index a0f9ae5..2669db5 100644 --- a/app/src/main/java/com/nightonke/githubwidget/Util.java +++ b/app/src/main/java/com/nightonke/githubwidget/Util.java @@ -1849,14 +1849,11 @@ public static Bitmap getTrendingBitmap(int index) { canvas.getHeight() - contentPaddingBottom, contentPaint); - String starsString = content.get("corner"); - if ("1".equals(starsString)) starsString += " star"; - else starsString += " stars"; - starsString = SettingsManager.getLanguage().v + " • " + starsString; - canvas.drawText(starsString, + String cornerString = content.get("corner"); + canvas.drawText(cornerString, canvas.getWidth() - cornerPaddingRight - - getTextWidth(cornerPaint, starsString), - cornerPaddingTop + getTextHeight(cornerPaint, starsString), + - getTextWidth(cornerPaint, cornerString), + cornerPaddingTop + getTextHeight(cornerPaint, cornerString), cornerPaint); return bitmap; @@ -1986,6 +1983,12 @@ public static Bitmap getLoadingBitmap() { return bitmap; } + /** + * Transform the UTC time to the local time zone. + * + * @param string Input time. + * @return Output time. + */ public static String getTime(String string) { string = string.replace("T", " "); string = string.replace("Z", ""); @@ -2008,6 +2011,24 @@ public static String getTime(String string) { } } + public static final String[] keyWordsStart = new String[]{"", "", ">", ">"}; + public static String deleteUselessString(String input) { + StringBuilder builder = new StringBuilder(input); + for (int i = 0; i < keyWordsStart.length; i++) { + while (true) { + int index = builder.indexOf(keyWordsStart[i]); + if (index != -1) { + int end = builder.indexOf(keyWordsEnd[i], index); + builder.delete(index, end + 1); + } else { + break; + } + } + } + return builder.toString(); + } + diff --git a/app/src/main/res/xml/appwidget_provider_0.xml b/app/src/main/res/xml/appwidget_provider_0.xml index 48e95a2..084cd84 100644 --- a/app/src/main/res/xml/appwidget_provider_0.xml +++ b/app/src/main/res/xml/appwidget_provider_0.xml @@ -4,6 +4,7 @@ android:initialLayout="@layout/github_widget_0" android:minWidth="250dp" android:minHeight="40dp" + android:resizeMode="horizontal" > \ No newline at end of file diff --git a/app/src/main/res/xml/appwidget_provider_1.xml b/app/src/main/res/xml/appwidget_provider_1.xml index 7c5cb54..7591b55 100644 --- a/app/src/main/res/xml/appwidget_provider_1.xml +++ b/app/src/main/res/xml/appwidget_provider_1.xml @@ -4,6 +4,7 @@ android:initialLayout="@layout/github_widget_1" android:minWidth="250dp" android:minHeight="180dp" + android:resizeMode="horizontal" > \ No newline at end of file diff --git a/app/src/main/res/xml/appwidget_provider_10.xml b/app/src/main/res/xml/appwidget_provider_10.xml index d458448..779f649 100644 --- a/app/src/main/res/xml/appwidget_provider_10.xml +++ b/app/src/main/res/xml/appwidget_provider_10.xml @@ -4,6 +4,7 @@ android:initialLayout="@layout/github_widget_10" android:minWidth="250dp" android:minHeight="320dp" + android:resizeMode="horizontal" > \ No newline at end of file diff --git a/app/src/main/res/xml/appwidget_provider_2.xml b/app/src/main/res/xml/appwidget_provider_2.xml index d5de5a4..1849f7c 100644 --- a/app/src/main/res/xml/appwidget_provider_2.xml +++ b/app/src/main/res/xml/appwidget_provider_2.xml @@ -4,6 +4,7 @@ android:initialLayout="@layout/github_widget_2" android:minWidth="250dp" android:minHeight="110dp" + android:resizeMode="horizontal" > \ No newline at end of file diff --git a/app/src/main/res/xml/appwidget_provider_3.xml b/app/src/main/res/xml/appwidget_provider_3.xml index 62eef8e..de80e99 100644 --- a/app/src/main/res/xml/appwidget_provider_3.xml +++ b/app/src/main/res/xml/appwidget_provider_3.xml @@ -4,6 +4,7 @@ android:initialLayout="@layout/github_widget_3" android:minWidth="250dp" android:minHeight="110dp" + android:resizeMode="horizontal" > \ No newline at end of file diff --git a/app/src/main/res/xml/appwidget_provider_4.xml b/app/src/main/res/xml/appwidget_provider_4.xml index aae1654..61566fe 100644 --- a/app/src/main/res/xml/appwidget_provider_4.xml +++ b/app/src/main/res/xml/appwidget_provider_4.xml @@ -4,6 +4,7 @@ android:initialLayout="@layout/github_widget_4" android:minWidth="250dp" android:minHeight="250dp" + android:resizeMode="horizontal" > \ No newline at end of file diff --git a/app/src/main/res/xml/appwidget_provider_5.xml b/app/src/main/res/xml/appwidget_provider_5.xml index 9c4bcbc..f8bf8e5 100644 --- a/app/src/main/res/xml/appwidget_provider_5.xml +++ b/app/src/main/res/xml/appwidget_provider_5.xml @@ -4,6 +4,7 @@ android:initialLayout="@layout/github_widget_5" android:minWidth="250dp" android:minHeight="250dp" + android:resizeMode="horizontal" > \ No newline at end of file diff --git a/app/src/main/res/xml/appwidget_provider_6.xml b/app/src/main/res/xml/appwidget_provider_6.xml index 1761d4a..1942fb0 100644 --- a/app/src/main/res/xml/appwidget_provider_6.xml +++ b/app/src/main/res/xml/appwidget_provider_6.xml @@ -4,7 +4,7 @@ android:initialLayout="@layout/github_widget_6" android:minWidth="250dp" android:minHeight="180dp" - android:resizeMode="vertical" + android:resizeMode="vertical|horizontal" > \ No newline at end of file diff --git a/app/src/main/res/xml/appwidget_provider_7.xml b/app/src/main/res/xml/appwidget_provider_7.xml index 50e3811..6257edc 100644 --- a/app/src/main/res/xml/appwidget_provider_7.xml +++ b/app/src/main/res/xml/appwidget_provider_7.xml @@ -4,7 +4,7 @@ android:initialLayout="@layout/github_widget_7" android:minWidth="250dp" android:minHeight="180dp" - android:resizeMode="vertical" + android:resizeMode="vertical|horizontal" > \ No newline at end of file diff --git a/app/src/main/res/xml/appwidget_provider_8.xml b/app/src/main/res/xml/appwidget_provider_8.xml index c83f8fe..f7bc97c 100644 --- a/app/src/main/res/xml/appwidget_provider_8.xml +++ b/app/src/main/res/xml/appwidget_provider_8.xml @@ -4,7 +4,7 @@ android:initialLayout="@layout/github_widget_8" android:minWidth="250dp" android:minHeight="250dp" - android:resizeMode="vertical" + android:resizeMode="vertical|horizontal" > \ No newline at end of file diff --git a/app/src/main/res/xml/appwidget_provider_9.xml b/app/src/main/res/xml/appwidget_provider_9.xml index 4e02dda..67860ff 100644 --- a/app/src/main/res/xml/appwidget_provider_9.xml +++ b/app/src/main/res/xml/appwidget_provider_9.xml @@ -4,6 +4,7 @@ android:initialLayout="@layout/github_widget_9" android:minWidth="250dp" android:minHeight="320dp" + android:resizeMode="horizontal" > \ No newline at end of file