├── .gitignore
├── HelpStackExample
├── AndroidManifest.xml
├── build.gradle
├── crashlytics.properties
├── ic_launcher-web.png
├── proguard-project.txt
├── project.properties
├── res
│ ├── layout
│ │ ├── activity_main.xml
│ │ └── fragment_main.xml
│ ├── menu
│ │ └── main.xml
│ ├── values-v11
│ │ └── styles.xml
│ ├── values-v14
│ │ └── styles.xml
│ ├── values-w820dp
│ │ └── dimens.xml
│ ├── values
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── xml
│ │ └── articles.xml
└── src
│ └── com
│ └── example
│ └── helpstackexample
│ ├── HSApplication.java
│ └── MainActivity.java
├── Images
├── hs_preview.png
├── issuedetail_style.png
└── mainlist_style.png
├── License.md
├── README.md
├── Themes
├── HSDarkTheme
│ ├── README.md
│ ├── screenshot
│ │ └── HSDarkTheme.png
│ └── values
│ │ ├── hs_custom_theme.xml
│ │ └── hs_dark_colors.xml
├── HSFacebookTheme
│ ├── README.md
│ ├── screenshot
│ │ └── HSFacebookTheme.png
│ └── values
│ │ ├── hs_custom_theme.xml
│ │ └── hs_fb_colors.xml
├── HSHalloweenTheme
│ ├── README.md
│ ├── screenshot
│ │ └── HSHalloweenTheme.png
│ └── values
│ │ ├── hs_custom_theme.xml
│ │ └── hs_halloween_colors.xml
├── HSLightTheme
│ ├── README.md
│ ├── screenshot
│ │ └── HSLightTheme.png
│ └── values
│ │ ├── hs_custom_theme.xml
│ │ └── hs_light_colors.xml
├── HSPathTheme
│ ├── README.md
│ ├── screenshot
│ │ └── HSPathTheme.png
│ └── values
│ │ ├── hs_custom_theme.xml
│ │ └── hs_path_colors.xml
└── HSPinterestTheme
│ ├── README.md
│ ├── screenshot
│ └── HSPinterestTheme.png
│ └── values
│ ├── hs_custom_theme.xml
│ └── hs_pinterest_colors.xml
├── build.gradle
├── helpstack
├── AndroidManifest.xml
├── attachment_icon-web.png
├── build.gradle
├── ic_launcher-web.png
├── libs
│ └── gesture-imageview.jar
├── proguard-project.txt
├── project.properties
├── res
│ ├── drawable-hdpi
│ │ ├── hs_accept.png
│ │ ├── hs_accept_light.png
│ │ ├── hs_add_attachment_img.png
│ │ ├── hs_add_attachment_img_light.png
│ │ ├── hs_attachment.png
│ │ ├── hs_attachment_light.png
│ │ ├── hs_disclosure.png
│ │ ├── hs_disclosure_light.png
│ │ ├── hs_download.png
│ │ ├── hs_download_light.png
│ │ ├── hs_forward.png
│ │ ├── hs_forward_light.png
│ │ ├── hs_launcher.png
│ │ ├── hs_search.png
│ │ ├── hs_search_light.png
│ │ ├── hs_send.png
│ │ └── hs_send_light.png
│ ├── drawable-mdpi
│ │ ├── hs_accept.png
│ │ ├── hs_accept_light.png
│ │ ├── hs_add_attachment_img.png
│ │ ├── hs_add_attachment_img_light.png
│ │ ├── hs_attachment.png
│ │ ├── hs_attachment_light.png
│ │ ├── hs_disclosure.png
│ │ ├── hs_disclosure_light.png
│ │ ├── hs_download.png
│ │ ├── hs_download_light.png
│ │ ├── hs_forward.png
│ │ ├── hs_forward_light.png
│ │ ├── hs_launcher.png
│ │ ├── hs_search.png
│ │ ├── hs_search_light.png
│ │ ├── hs_send.png
│ │ └── hs_send_light.png
│ ├── drawable-xhdpi
│ │ ├── hs_accept.png
│ │ ├── hs_accept_light.png
│ │ ├── hs_add_attachment_img.png
│ │ ├── hs_add_attachment_img_light.png
│ │ ├── hs_attachment.png
│ │ ├── hs_attachment_light.png
│ │ ├── hs_disclosure.png
│ │ ├── hs_disclosure_light.png
│ │ ├── hs_download.png
│ │ ├── hs_download_light.png
│ │ ├── hs_forward.png
│ │ ├── hs_forward_light.png
│ │ ├── hs_launcher.png
│ │ ├── hs_search.png
│ │ ├── hs_search_light.png
│ │ ├── hs_send.png
│ │ └── hs_send_light.png
│ ├── drawable-xxhdpi
│ │ ├── hs_accept.png
│ │ ├── hs_accept_light.png
│ │ ├── hs_add_attachment_img.png
│ │ ├── hs_add_attachment_img_light.png
│ │ ├── hs_attachment.png
│ │ ├── hs_attachment_light.png
│ │ ├── hs_disclosure.png
│ │ ├── hs_disclosure_light.png
│ │ ├── hs_download.png
│ │ ├── hs_download_light.png
│ │ ├── hs_forward.png
│ │ ├── hs_forward_light.png
│ │ ├── hs_launcher.png
│ │ ├── hs_search.png
│ │ ├── hs_search_light.png
│ │ ├── hs_send.png
│ │ └── hs_send_light.png
│ ├── drawable
│ │ ├── brush_blue.xml
│ │ ├── brush_green.xml
│ │ ├── brush_red.xml
│ │ ├── left_chat_bubble.xml
│ │ ├── left_chat_bubble_triangle.xml
│ │ ├── paint.xml
│ │ ├── paint_pressed.xml
│ │ ├── right_chat_bubble.xml
│ │ └── right_chat_bubble_triangle.xml
│ ├── layout
│ │ ├── hs_activity_article.xml
│ │ ├── hs_activity_attachment.xml
│ │ ├── hs_activity_base.xml
│ │ ├── hs_activity_edit_attachment.xml
│ │ ├── hs_activity_home.xml
│ │ ├── hs_activity_image_attachment_display.xml
│ │ ├── hs_activity_issue_detail.xml
│ │ ├── hs_activity_new_issue.xml
│ │ ├── hs_activity_new_user.xml
│ │ ├── hs_activity_section.xml
│ │ ├── hs_attachment_dialog.xml
│ │ ├── hs_custom_searchview.xml
│ │ ├── hs_expandable_child_home_default.xml
│ │ ├── hs_expandable_child_issue_detail_staff_reply.xml
│ │ ├── hs_expandable_child_issue_detail_user_reply.xml
│ │ ├── hs_expandable_footer_powered_by_helpstack.xml
│ │ ├── hs_expandable_footer_progress_bar.xml
│ │ ├── hs_expandable_footer_report_issue.xml
│ │ ├── hs_expandable_parent_home_default.xml
│ │ ├── hs_expandable_parent_issue_detail_default.xml
│ │ ├── hs_fragment_article.xml
│ │ ├── hs_fragment_home.xml
│ │ ├── hs_fragment_image_attachment_display.xml
│ │ ├── hs_fragment_issue_detail.xml
│ │ ├── hs_fragment_new_issue.xml
│ │ ├── hs_fragment_new_user.xml
│ │ ├── hs_fragment_search.xml
│ │ ├── hs_fragment_section.xml
│ │ └── hs_sectionlist_article.xml
│ ├── menu
│ │ ├── hs_article.xml
│ │ ├── hs_attachment.xml
│ │ ├── hs_edit_attachment.xml
│ │ ├── hs_home.xml
│ │ ├── hs_image_attachment_display.xml
│ │ ├── hs_issue_detail.xml
│ │ ├── hs_issue_menu.xml
│ │ ├── hs_new_issue.xml
│ │ ├── hs_search_menu.xml
│ │ └── hs_section.xml
│ ├── values-v11
│ │ └── styles.xml
│ ├── values-v14
│ │ └── styles.xml
│ ├── values-w820dp
│ │ └── dimens.xml
│ └── values
│ │ ├── dimens.xml
│ │ ├── hs_colors.xml
│ │ ├── hs_default_theme.xml
│ │ ├── hs_default_theme_base.xml
│ │ ├── hs_dimens.xml
│ │ └── hs_strings.xml
└── src
│ └── com
│ └── tenmiles
│ └── helpstack
│ ├── HSHelpStack.java
│ ├── activities
│ ├── ArticleActivity.java
│ ├── EditAttachmentActivity.java
│ ├── HSActivityManager.java
│ ├── HSActivityParent.java
│ ├── HomeActivity.java
│ ├── ImageAttachmentDisplayActivity.java
│ ├── IssueDetailActivity.java
│ ├── NewIssueActivity.java
│ ├── NewUserActivity.java
│ └── SectionActivity.java
│ ├── fragments
│ ├── ArticleFragment.java
│ ├── HSFragmentManager.java
│ ├── HSFragmentParent.java
│ ├── HomeFragment.java
│ ├── ImageAttachmentDisplayFragment.java
│ ├── IssueDetailFragment.java
│ ├── NewIssueFragment.java
│ ├── NewUserFragment.java
│ ├── SearchFragment.java
│ ├── SectionFragment.java
│ └── TaskFragment.java
│ ├── gears
│ ├── HSDeskGear.java
│ ├── HSEmailGear.java
│ ├── HSHappyfoxGear.java
│ └── HSZendeskGear.java
│ ├── helper
│ └── HSBaseExpandableListAdapter.java
│ ├── logic
│ ├── HSArticleReader.java
│ ├── HSGear.java
│ ├── HSSource.java
│ ├── HSTestDataGear.java
│ ├── HSUtils.java
│ ├── OnFetchedArraySuccessListener.java
│ ├── OnFetchedSuccessListener.java
│ └── OnNewTicketFetchedSuccessListener.java
│ ├── model
│ ├── HSAttachment.java
│ ├── HSCachedTicket.java
│ ├── HSCachedUser.java
│ ├── HSDraft.java
│ ├── HSError.java
│ ├── HSKBItem.java
│ ├── HSTicket.java
│ ├── HSTicketUpdate.java
│ ├── HSUploadAttachment.java
│ └── HSUser.java
│ ├── service
│ ├── AttachmentDownloadReceiver.java
│ └── DownloadAttachmentUtility.java
│ └── widget
│ ├── DrawingView.java
│ └── HSExpandableListView.java
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | */bin/
2 | */gen/
3 | .classpath
4 | .settings
5 | .project
6 | local.properties
7 | .DS_Store
8 | lint.xml
9 | com_crashlytics_export_strings.xml
10 | crashlytics-build.properties
11 | .gradle
12 | .idea
13 | build/
14 | *.iml
15 | gradle/
16 | gradlew
17 | gradlew.bat
18 | *.swp
19 |
--------------------------------------------------------------------------------
/HelpStackExample/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
12 |
13 |
19 |
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/HelpStackExample/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | jcenter();
4 | maven { url 'https://maven.fabric.io/public' }
5 | }
6 |
7 | dependencies {
8 | classpath 'io.fabric.tools:gradle:1.20.1'
9 | classpath 'com.google.gms:google-services:2.0.0-beta2'
10 | }
11 | }
12 |
13 | apply plugin: 'com.android.application'
14 | apply plugin: 'io.fabric'
15 |
16 | repositories {
17 | mavenCentral()
18 | maven { url 'https://maven.fabric.io/public' }
19 | }
20 |
21 | dependencies {
22 | compile fileTree(dir: 'libs', include: '*.jar')
23 | compile project(':helpstack')
24 | compile 'com.android.support:appcompat-v7:23.0.0'
25 | compile('com.crashlytics.sdk.android:crashlytics:2.6.1@aar') {
26 | transitive = true;
27 | }
28 | }
29 |
30 | android {
31 | compileSdkVersion 23
32 | buildToolsVersion "23.0.0"
33 |
34 | sourceSets {
35 | main {
36 | manifest.srcFile 'AndroidManifest.xml'
37 | java.srcDirs = ['src']
38 | resources.srcDirs = ['src']
39 | aidl.srcDirs = ['src']
40 | renderscript.srcDirs = ['src']
41 | res.srcDirs = ['res']
42 | assets.srcDirs = ['assets']
43 | }
44 |
45 | // Move the tests to tests/java, tests/res, etc...
46 | instrumentTest.setRoot('tests')
47 |
48 | // Move the build types to build-types/
49 | // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
50 | // This moves them out of them default location under src//... which would
51 | // conflict with src/ being used by the main source set.
52 | // Adding new build types or product flavors should be accompanied
53 | // by a similar customization.
54 | debug.setRoot('build-types/debug')
55 | release.setRoot('build-types/release')
56 | }
57 |
58 | packagingOptions {
59 | exclude 'META-INF/DEPENDENCIES'
60 | exclude 'META-INF/NOTICE'
61 | exclude 'META-INF/LICENSE'
62 | }
63 |
64 | }
65 |
--------------------------------------------------------------------------------
/HelpStackExample/crashlytics.properties:
--------------------------------------------------------------------------------
1 | #Contains API Secret used to validate your application. Commit to internal source control; avoid making secret public.
2 | #Fri Jun 27 11:43:49 GMT+05:30 2014
3 | apiSecret=c98eaf326d4734c1aea8564c59a19ce37e3685ac7772de5b8550562dbd698970
4 |
--------------------------------------------------------------------------------
/HelpStackExample/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/HelpStackExample/ic_launcher-web.png
--------------------------------------------------------------------------------
/HelpStackExample/proguard-project.txt:
--------------------------------------------------------------------------------
1 | # To enable ProGuard in your project, edit project.properties
2 | # to define the proguard.config property as described in that file.
3 | #
4 | # Add project specific ProGuard rules here.
5 | # By default, the flags in this file are appended to flags specified
6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
7 | # You can edit the include path and order by changing the ProGuard
8 | # include property in project.properties.
9 | #
10 | # For more details, see
11 | # http://developer.android.com/guide/developing/tools/proguard.html
12 |
13 | # Add any project specific keep options here:
14 |
15 | # If your project uses WebView with JS, uncomment the following
16 | # and specify the fully qualified class name to the JavaScript interface
17 | # class:
18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
19 | # public *;
20 | #}
21 |
--------------------------------------------------------------------------------
/HelpStackExample/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system edit
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 | #
10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
12 |
13 | # Project target.
14 | target=android-17
15 | android.library.reference.1=../helpstack
16 | manifestmerger.enabled=true
17 |
--------------------------------------------------------------------------------
/HelpStackExample/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/HelpStackExample/res/layout/fragment_main.xml:
--------------------------------------------------------------------------------
1 |
12 |
13 |
18 |
19 |
20 |
26 |
27 |
--------------------------------------------------------------------------------
/HelpStackExample/res/menu/main.xml:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/HelpStackExample/res/values-v11/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/HelpStackExample/res/values-v14/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
12 |
13 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/HelpStackExample/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 | 64dp
9 |
10 |
11 |
--------------------------------------------------------------------------------
/HelpStackExample/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 16dp
5 | 16dp
6 |
7 |
8 |
--------------------------------------------------------------------------------
/HelpStackExample/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | HelpStackExample
5 | Hello world!
6 | Settings
7 | Show Help
8 | Clear Cache
9 |
10 |
11 |
--------------------------------------------------------------------------------
/HelpStackExample/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/HelpStackExample/res/xml/articles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
8 |
9 |
11 |
12 |
14 |
15 |
19 |
20 |
22 |
23 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/HelpStackExample/src/com/example/helpstackexample/HSApplication.java:
--------------------------------------------------------------------------------
1 | package com.example.helpstackexample;
2 |
3 | import android.app.Application;
4 |
5 | import com.crashlytics.android.Crashlytics;
6 | import com.tenmiles.helpstack.HSHelpStack;
7 | import com.tenmiles.helpstack.gears.HSEmailGear;
8 |
9 | import io.fabric.sdk.android.Fabric;
10 |
11 | public class HSApplication extends Application {
12 |
13 | public static HSHelpStack helpStack;
14 |
15 | @Override
16 | public void onCreate() {
17 | super.onCreate();
18 |
19 | Fabric.with(this, new Crashlytics());
20 | helpStack = HSHelpStack.getInstance(this);
21 |
22 | HSEmailGear emailGear = new HSEmailGear("foo@bar.com", R.xml.articles);
23 | helpStack.setGear(emailGear);
24 |
25 | /* Uncomment the following to use the HappyFox gear with appropriate support email address */
26 |
27 | // HSHappyfoxGear happyfoxGear = new HSHappyfoxGear(
28 | // "http://example.happyfox.com",
29 | // "",
30 | // "",
31 | // "",
32 | // "");
33 | //
34 | // helpStack.setGear(happyfoxGear);
35 |
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/HelpStackExample/src/com/example/helpstackexample/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.helpstackexample;
2 |
3 | import android.os.Bundle;
4 | import android.support.v4.app.Fragment;
5 | import android.support.v7.app.AppCompatActivity;
6 | import android.view.LayoutInflater;
7 | import android.view.Menu;
8 | import android.view.MenuItem;
9 | import android.view.View;
10 | import android.view.View.OnClickListener;
11 | import android.view.ViewGroup;
12 |
13 | import com.tenmiles.helpstack.HSHelpStack;
14 |
15 | public class MainActivity extends AppCompatActivity {
16 |
17 | @Override
18 | protected void onCreate(Bundle savedInstanceState) {
19 | super.onCreate(savedInstanceState);
20 | setContentView(R.layout.activity_main);
21 |
22 | if (savedInstanceState == null) {
23 | getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
24 | }
25 |
26 | getSupportActionBar().setDisplayHomeAsUpEnabled(false);
27 | getSupportActionBar().setDisplayUseLogoEnabled(false);
28 | getSupportActionBar().setIcon(R.color.hs_transparent_color);
29 | }
30 |
31 | @Override
32 | public boolean onCreateOptionsMenu(Menu menu) {
33 | getMenuInflater().inflate(R.menu.main, menu);
34 | return true;
35 | }
36 |
37 | @Override
38 | public boolean onOptionsItemSelected(MenuItem item) {
39 | int id = item.getItemId();
40 | if (id == R.id.action_settings) {
41 | return true;
42 | }
43 | return super.onOptionsItemSelected(item);
44 | }
45 |
46 | /**
47 | * A placeholder fragment containing a simple view.
48 | */
49 | public static class PlaceholderFragment extends Fragment {
50 |
51 | public PlaceholderFragment() {
52 | }
53 |
54 | @Override
55 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
56 | View rootView = inflater.inflate(R.layout.fragment_main, container, false);
57 | rootView.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
58 |
59 | @Override
60 | public void onClick(View v) {
61 | HSHelpStack.getInstance(getActivity()).showHelp(getActivity());
62 | }
63 | });
64 | rootView.findViewById(R.id.btnClearCache).setOnClickListener(new OnClickListener() {
65 |
66 | @Override
67 | public void onClick(View v) {
68 | HSHelpStack.getInstance(getActivity()).clear(getActivity());
69 | }
70 | });
71 | return rootView;
72 | }
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/Images/hs_preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/Images/hs_preview.png
--------------------------------------------------------------------------------
/Images/issuedetail_style.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/Images/issuedetail_style.png
--------------------------------------------------------------------------------
/Images/mainlist_style.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/Images/mainlist_style.png
--------------------------------------------------------------------------------
/License.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 HelpStack (http://helpstack.io)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Themes/HSDarkTheme/README.md:
--------------------------------------------------------------------------------
1 | ### Theme Details
2 |
3 | - Name: HSDarkTheme
4 | - Creator: Tenmiles
5 |
6 | This theme comes with the following files:
7 | - values
8 | - hs_custom_theme.xml
9 | - hs_dark_colors.xml
10 | - screenshot
11 | - HSDarkTheme.png
12 |
13 | ### Screenshots
14 | 
15 |
16 | ### Customizing the Action Bar
17 |
18 | Ensure your *AppTheme* style found in **res/values/styles.xml** uses **Theme.AppCompat.Light.DarkActionBar** as its parent.
19 |
20 | ### Note
21 | To know more on how to use this theme file, refer to the Theming/Skinning section of the main README document located at the root of the project.
22 |
--------------------------------------------------------------------------------
/Themes/HSDarkTheme/screenshot/HSDarkTheme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/Themes/HSDarkTheme/screenshot/HSDarkTheme.png
--------------------------------------------------------------------------------
/Themes/HSDarkTheme/values/hs_custom_theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
12 |
13 |
14 |
18 |
19 |
20 |
23 |
24 |
25 |
28 |
29 |
30 |
33 |
34 |
35 |
38 |
39 |
40 | @color/hs_dark_leftChatBubbleColor
41 |
42 |
43 | @color/hs_dark_rightChatBubbleColor
44 |
45 |
46 |
49 |
50 |
51 |
54 |
55 |
56 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
71 |
72 |
73 | @drawable/hs_add_attachment_img
74 |
75 |
76 |
--------------------------------------------------------------------------------
/Themes/HSDarkTheme/values/hs_dark_colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #646464
7 |
8 |
9 | #228CD1
10 | #ffffff
11 |
12 |
13 | #3C3C3C
14 | #ffffff
15 |
16 |
17 | #0000
18 | #0000
19 | #e1e1e1
20 |
21 |
22 | #3C3C3C
23 | #ffffff
24 |
25 |
26 | #228CD1
27 | #ffffff
28 |
29 |
30 | #ffffff
31 |
32 |
33 | #DE2527
34 |
35 |
36 | #000000
37 |
38 |
--------------------------------------------------------------------------------
/Themes/HSFacebookTheme/README.md:
--------------------------------------------------------------------------------
1 | ### Theme Details
2 |
3 | - Name: HSFacebookTheme
4 | - Creator: Tenmiles
5 |
6 | This theme comes with the following files:
7 | - values
8 | - hs_custom_theme.xml
9 | - hs_fb_colors.xml
10 | - screenshot
11 | - HSFacebookTheme.png
12 |
13 | ### Screenshots
14 | 
15 |
16 | ### Customizing the Action Bar
17 |
18 | You should make the following changes to get the Action Bar colors match the theme.
19 |
20 | In your **res/values/styles.xml** copy the below contents:
21 |
22 | ```
23 |
24 |
25 |
29 |
37 |
38 |
41 |
42 |
43 | ```
44 |
45 |
46 | In your **res/values-v11/styles.xml** copy the below contents:
47 |
48 | ```
49 |
50 |
51 |
55 |
59 |
60 |
63 |
64 |
65 | ```
66 |
67 | ### Note
68 | To know more on how to use this theme file, refer to the Theming/Skinning section of the main README document located at the root of the project.
69 |
--------------------------------------------------------------------------------
/Themes/HSFacebookTheme/screenshot/HSFacebookTheme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/Themes/HSFacebookTheme/screenshot/HSFacebookTheme.png
--------------------------------------------------------------------------------
/Themes/HSFacebookTheme/values/hs_custom_theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
13 |
14 |
15 |
19 |
20 |
21 |
24 |
25 |
26 |
29 |
30 |
31 |
34 |
35 |
36 |
39 |
40 |
41 | @color/hs_fb_leftChatBubbleColor
42 |
43 |
44 | @color/hs_fb_rightChatBubbleColor
45 |
46 |
47 |
50 |
51 |
52 |
55 |
56 |
57 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
72 |
73 |
74 | @drawable/hs_add_attachment_img
75 |
76 |
77 |
--------------------------------------------------------------------------------
/Themes/HSFacebookTheme/values/hs_fb_colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #5370AA
7 |
8 |
9 | #F7F7F7
10 |
11 |
12 | #0000
13 | #C5C9D0
14 |
15 |
16 | #ffffff
17 | #8F8F8F
18 |
19 |
20 | #ffffff
21 | #f7f7f7
22 | #0000
23 |
24 |
25 | #ffffff
26 | #787878
27 |
28 |
29 | #5370AA
30 | #ffffff
31 |
32 |
33 | #8F8F8F
34 |
35 |
36 | #DE2527
37 |
38 |
39 | #000000
40 |
41 |
42 |
--------------------------------------------------------------------------------
/Themes/HSHalloweenTheme/README.md:
--------------------------------------------------------------------------------
1 | ### Theme Details
2 |
3 | - Name: HSHalloweenTheme
4 | - Creator: Tenmiles
5 |
6 | This theme comes with the following files:
7 | - values
8 | - hs_custom_theme.xml
9 | - hs_halloween_colors.xml
10 | - screenshot
11 | - HSHalloweenTheme.png
12 |
13 | ### Screenshots
14 | 
15 |
16 | ### Customizing the Action Bar
17 |
18 | Ensure your *AppTheme* style found in **res/values/styles.xml** uses **Theme.AppCompat.Light.DarkActionBar** as its parent.
19 |
20 | ### Note
21 | To know more on how to use this theme file, refer to the Theming/Skinning section of the main README document located at the root of the project.
22 |
--------------------------------------------------------------------------------
/Themes/HSHalloweenTheme/screenshot/HSHalloweenTheme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/Themes/HSHalloweenTheme/screenshot/HSHalloweenTheme.png
--------------------------------------------------------------------------------
/Themes/HSHalloweenTheme/values/hs_custom_theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
12 |
13 |
14 |
18 |
19 |
20 |
23 |
24 |
25 |
28 |
29 |
30 |
33 |
34 |
35 |
38 |
39 |
40 | @color/hs_halloween_leftChatBubbleColor
41 |
42 |
43 | @color/hs_halloween_rightChatBubbleColor
44 |
45 |
46 |
49 |
50 |
51 |
54 |
55 |
56 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
71 |
72 |
73 | @drawable/hs_add_attachment_img
74 |
75 |
76 |
--------------------------------------------------------------------------------
/Themes/HSHalloweenTheme/values/hs_halloween_colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #000000
7 |
8 |
9 | #fc6600
10 | #ffffff
11 |
12 |
13 | #212121
14 | #ffffff
15 |
16 |
17 | #0000
18 | #0000
19 | #e1e1e1
20 |
21 |
22 | #3C3C3C
23 | #ffffff
24 |
25 |
26 | #fc6600
27 | #ffffff
28 |
29 |
30 | #ffffff
31 |
32 |
33 | #DE2527
34 |
35 |
36 | #000000
37 |
38 |
--------------------------------------------------------------------------------
/Themes/HSLightTheme/README.md:
--------------------------------------------------------------------------------
1 | ### Theme Details
2 |
3 | - Name: HSLightTheme
4 | - Creator: Tenmiles
5 |
6 | This theme comes with the following files:
7 | - values
8 | - hs_custom_theme.xml
9 | - hs_light_colors.xml
10 | - screenshot
11 | - HSLightTheme.png
12 |
13 | ### Screenshots
14 | 
15 |
16 | ### Customizing the Action Bar
17 |
18 | Ensure your *AppTheme* style found in **res/values/styles.xml** uses **Theme.AppCompat.Light** as its parent.
19 |
20 | ### Note
21 | To know more on how to use this theme file, refer to the Theming/Skinning section of the main README document located at the root of the project.
22 |
--------------------------------------------------------------------------------
/Themes/HSLightTheme/screenshot/HSLightTheme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/Themes/HSLightTheme/screenshot/HSLightTheme.png
--------------------------------------------------------------------------------
/Themes/HSLightTheme/values/hs_custom_theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
13 |
14 |
15 |
19 |
20 |
21 |
24 |
25 |
26 |
29 |
30 |
31 |
34 |
35 |
36 |
39 |
40 |
41 | @color/hs_light_leftChatBubbleColor
42 |
43 |
44 | @color/hs_light_rightChatBubbleColor
45 |
46 |
47 |
50 |
51 |
52 |
55 |
56 |
57 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
72 |
73 |
74 | @drawable/hs_add_attachment_img
75 |
76 |
77 |
--------------------------------------------------------------------------------
/Themes/HSLightTheme/values/hs_light_colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #e1e1e1
7 |
8 |
9 | #228CD1
10 | #ffffff
11 |
12 |
13 | #ffffff
14 | #000000
15 |
16 |
17 | #e2e2e2
18 | #d3d3d3
19 | #0000
20 |
21 |
22 | #ffffff
23 | #000000
24 |
25 |
26 | #228CD1
27 | #ffffff
28 |
29 |
30 | #000000
31 |
32 |
33 | #DE2527
34 |
35 |
36 | #000000
37 |
38 |
39 |
--------------------------------------------------------------------------------
/Themes/HSPathTheme/README.md:
--------------------------------------------------------------------------------
1 | ### Theme Details
2 |
3 | - Name: HSPathTheme
4 | - Creator: Tenmiles
5 |
6 | This theme comes with the following files:
7 | - values
8 | - hs_custom_theme.xml
9 | - hs_path_colors.xml
10 | - screenshot
11 | - HSPathTheme.png
12 |
13 | ### Screenshots
14 | 
15 |
16 | ### Customizing the Action Bar
17 |
18 | You should make the following changes to get the Action Bar colors match the theme.
19 |
20 | In your **res/values/styles.xml** copy the below contents:
21 |
22 | ```
23 |
24 |
25 |
29 |
37 |
38 |
41 |
42 |
43 | ```
44 |
45 |
46 | In your **res/values-v11/styles.xml** copy the below contents:
47 |
48 | ```
49 |
50 |
51 |
55 |
59 |
60 |
63 |
64 |
65 | ```
66 |
67 | ### Note
68 | To know more on how to use this theme file, refer to the Theming/Skinning section of the main README document located at the root of the project.
69 |
--------------------------------------------------------------------------------
/Themes/HSPathTheme/screenshot/HSPathTheme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/Themes/HSPathTheme/screenshot/HSPathTheme.png
--------------------------------------------------------------------------------
/Themes/HSPathTheme/values/hs_custom_theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
13 |
14 |
15 |
19 |
20 |
21 |
24 |
25 |
26 |
29 |
30 |
31 |
34 |
35 |
36 |
39 |
40 |
41 | @color/hs_path_leftChatBubbleColor
42 |
43 |
44 | @color/hs_path_rightChatBubbleColor
45 |
46 |
47 |
50 |
51 |
52 |
55 |
56 |
57 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
72 |
73 |
74 | @drawable/hs_add_attachment_img
75 |
76 |
77 |
--------------------------------------------------------------------------------
/Themes/HSPathTheme/values/hs_path_colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #E33124
7 |
8 |
9 | #F5F0EC
10 |
11 |
12 | #0000
13 | #C2BCBE
14 |
15 |
16 | #ffffff
17 | #929292
18 |
19 |
20 | #0000
21 | #0000
22 | #e1e1e1
23 |
24 |
25 | #ffffff
26 | #929292
27 |
28 |
29 | #E33124
30 | #ffffff
31 |
32 |
33 | #929292
34 |
35 |
36 | #DE2527
37 |
38 |
39 | #000000
40 |
41 |
42 |
--------------------------------------------------------------------------------
/Themes/HSPinterestTheme/README.md:
--------------------------------------------------------------------------------
1 | ### Theme Details
2 |
3 | - Name: HSPinterestTheme
4 | - Creator: Tenmiles
5 |
6 | This theme comes with the following files:
7 | - values
8 | - hs_custom_theme.xml
9 | - hs_pinterest_colors.xml
10 |
11 | ### Screenshots
12 | 
13 |
14 | ### Customizing the Action Bar
15 |
16 | You should make the following changes to get the Action Bar colors match the theme.
17 |
18 | In your **res/values/styles.xml** copy the below contents:
19 |
20 | ```
21 |
22 |
23 |
27 |
35 |
36 |
39 |
40 |
41 | ```
42 |
43 |
44 | In your **res/values-v11/styles.xml** copy the below contents:
45 |
46 | ```
47 |
48 |
49 |
53 |
57 |
58 |
61 |
62 |
63 | ```
64 |
65 | ### Note
66 | To know more on how to use this theme file, refer to the Theming/Skinning section of the main README document located at the root of the project.
67 |
--------------------------------------------------------------------------------
/Themes/HSPinterestTheme/screenshot/HSPinterestTheme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/Themes/HSPinterestTheme/screenshot/HSPinterestTheme.png
--------------------------------------------------------------------------------
/Themes/HSPinterestTheme/values/hs_custom_theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
13 |
14 |
15 |
19 |
20 |
21 |
24 |
25 |
26 |
29 |
30 |
31 |
34 |
35 |
36 |
39 |
40 |
41 | @color/hs_pinterest_leftChatBubbleColor
42 |
43 |
44 | @color/hs_pinterest_rightChatBubbleColor
45 |
46 |
47 |
50 |
51 |
52 |
55 |
56 |
57 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
72 |
73 |
74 | @drawable/hs_add_attachment_img
75 |
76 |
77 |
--------------------------------------------------------------------------------
/Themes/HSPinterestTheme/values/hs_pinterest_colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #C70A00
7 |
8 |
9 | #F7F7F7
10 |
11 |
12 | #0000
13 | #C5C9D0
14 |
15 |
16 | #ffffff
17 | #8F8F8F
18 |
19 |
20 | #ffffff
21 | #f7f7f7
22 | #0000
23 |
24 |
25 | #ffffff
26 | #787878
27 |
28 |
29 | #C70A00
30 | #ffffff
31 |
32 |
33 | #8F8F8F
34 |
35 |
36 | #DE2527
37 |
38 |
39 | #000000
40 |
41 |
42 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | buildscript {
3 | repositories {
4 | jcenter()
5 | }
6 | dependencies {
7 | classpath 'com.android.tools.build:gradle:2.2.3'
8 | }
9 | }
10 |
11 | allprojects {
12 | repositories {
13 | jcenter()
14 | }
15 | }
--------------------------------------------------------------------------------
/helpstack/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
32 |
35 |
36 |
37 |
38 |
41 |
42 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/helpstack/attachment_icon-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/attachment_icon-web.png
--------------------------------------------------------------------------------
/helpstack/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'maven'
3 |
4 | dependencies {
5 | compile fileTree(dir: 'libs', include: '*.jar')
6 |
7 |
8 | compile 'com.android.support:appcompat-v7:23.4.0'
9 | compile 'org.apache.commons:commons-io:1.3.2'
10 | compile 'com.google.code.gson:gson:2.3'
11 | compile 'org.apache.httpcomponents:httpmime:4.2.6'
12 | compile 'com.mcxiaoke.volley:library:1.0.19'
13 | compile 'com.android.support:support-v4:23.4.0'
14 | }
15 |
16 | android {
17 | compileSdkVersion 23
18 | buildToolsVersion "23.0.0"
19 |
20 | sourceSets {
21 | main {
22 | manifest.srcFile 'AndroidManifest.xml'
23 | java.srcDirs = ['src']
24 | resources.srcDirs = ['src']
25 | aidl.srcDirs = ['src']
26 | renderscript.srcDirs = ['src']
27 | res.srcDirs = ['res']
28 | assets.srcDirs = ['assets']
29 | }
30 |
31 | // Move the tests to tests/java, tests/res, etc...
32 | instrumentTest.setRoot('tests')
33 |
34 | // Move the build types to build-types/
35 | // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
36 | // This moves them out of them default location under src//... which would
37 | // conflict with src/ being used by the main source set.
38 | // Adding new build types or product flavors should be accompanied
39 | // by a similar customization.
40 | debug.setRoot('build-types/debug')
41 | release.setRoot('build-types/release')
42 | }
43 | }
44 |
45 | uploadArchives {
46 | repositories.mavenDeployer {
47 | pom.groupId = 'com.tenmiles'
48 | pom.artifactId = 'helpstack'
49 | pom.version = '1.2.0'
50 | // Add other pom properties here if you want (developer details / licenses)
51 | repository(url: "file:///Users/anirudh/Desktop/gradleRelease/")
52 | }
53 | }
54 |
55 | task androidJavadocs(type: Javadoc) {
56 | source = android.sourceSets.main.java.srcDirs
57 | classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
58 | }
59 |
60 | task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
61 | classifier = 'javadoc'
62 | from androidJavadocs.destinationDir
63 | }
64 |
65 | task androidSourcesJar(type: Jar) {
66 | classifier = 'sources'
67 | from android.sourceSets.main.java.srcDirs
68 | }
69 |
70 | artifacts {
71 | archives androidSourcesJar
72 | archives androidJavadocsJar
73 | }
--------------------------------------------------------------------------------
/helpstack/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/ic_launcher-web.png
--------------------------------------------------------------------------------
/helpstack/libs/gesture-imageview.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/libs/gesture-imageview.jar
--------------------------------------------------------------------------------
/helpstack/proguard-project.txt:
--------------------------------------------------------------------------------
1 | # To enable ProGuard in your project, edit project.properties
2 | # to define the proguard.config property as described in that file.
3 | #
4 | # Add project specific ProGuard rules here.
5 | # By default, the flags in this file are appended to flags specified
6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
7 | # You can edit the include path and order by changing the ProGuard
8 | # include property in project.properties.
9 | #
10 | # For more details, see
11 | # http://developer.android.com/guide/developing/tools/proguard.html
12 |
13 | # Add any project specific keep options here:
14 |
15 | # If your project uses WebView with JS, uncomment the following
16 | # and specify the fully qualified class name to the JavaScript interface
17 | # class:
18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
19 | # public *;
20 | #}
21 |
--------------------------------------------------------------------------------
/helpstack/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system edit
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 | #
10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
12 |
13 | # Project target.
14 | target=android-17
15 | android.library=true
16 |
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_accept.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_accept.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_accept_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_accept_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_add_attachment_img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_add_attachment_img.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_add_attachment_img_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_add_attachment_img_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_attachment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_attachment.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_attachment_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_attachment_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_disclosure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_disclosure.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_disclosure_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_disclosure_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_download.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_download_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_download_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_forward.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_forward_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_forward_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_launcher.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_search.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_search_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_search_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_send.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_send.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-hdpi/hs_send_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-hdpi/hs_send_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_accept.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_accept.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_accept_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_accept_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_add_attachment_img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_add_attachment_img.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_add_attachment_img_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_add_attachment_img_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_attachment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_attachment.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_attachment_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_attachment_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_disclosure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_disclosure.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_disclosure_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_disclosure_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_download.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_download_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_download_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_forward.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_forward_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_forward_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_launcher.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_search.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_search_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_search_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_send.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_send.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-mdpi/hs_send_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-mdpi/hs_send_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_accept.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_accept.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_accept_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_accept_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_add_attachment_img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_add_attachment_img.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_add_attachment_img_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_add_attachment_img_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_attachment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_attachment.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_attachment_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_attachment_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_disclosure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_disclosure.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_disclosure_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_disclosure_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_download.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_download_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_download_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_forward.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_forward_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_forward_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_launcher.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_search.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_search_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_search_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_send.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_send.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xhdpi/hs_send_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xhdpi/hs_send_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_accept.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_accept.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_accept_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_accept_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_add_attachment_img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_add_attachment_img.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_add_attachment_img_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_add_attachment_img_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_attachment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_attachment.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_attachment_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_attachment_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_disclosure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_disclosure.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_disclosure_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_disclosure_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_download.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_download_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_download_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_forward.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_forward_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_forward_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_launcher.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_search.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_search_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_search_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_send.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_send.png
--------------------------------------------------------------------------------
/helpstack/res/drawable-xxhdpi/hs_send_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/happyfoxinc/helpstack-android/0c875e0385e88e96e6020784384b5c1b730fba11/helpstack/res/drawable-xxhdpi/hs_send_light.png
--------------------------------------------------------------------------------
/helpstack/res/drawable/brush_blue.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/helpstack/res/drawable/brush_green.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/helpstack/res/drawable/brush_red.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/helpstack/res/drawable/left_chat_bubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/helpstack/res/drawable/left_chat_bubble_triangle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/helpstack/res/drawable/paint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/helpstack/res/drawable/paint_pressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/helpstack/res/drawable/right_chat_bubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/helpstack/res/drawable/right_chat_bubble_triangle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_activity_article.xml:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_activity_attachment.xml:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_activity_base.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_activity_edit_attachment.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
15 |
16 |
17 |
23 |
24 |
33 |
34 |
40 |
41 |
54 |
55 |
68 |
69 |
82 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_activity_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
14 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_activity_image_attachment_display.xml:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_activity_issue_detail.xml:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_activity_new_issue.xml:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_activity_new_user.xml:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_activity_section.xml:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_attachment_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_custom_searchview.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_expandable_child_home_default.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_expandable_child_issue_detail_staff_reply.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
20 |
21 |
28 |
29 |
38 |
39 |
46 |
47 |
55 |
56 |
57 |
58 |
67 |
68 |
77 |
78 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_expandable_child_issue_detail_user_reply.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
19 |
20 |
27 |
28 |
37 |
38 |
45 |
46 |
54 |
55 |
56 |
57 |
65 |
66 |
73 |
74 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_expandable_footer_powered_by_helpstack.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_expandable_footer_progress_bar.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_expandable_footer_report_issue.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_expandable_parent_home_default.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_expandable_parent_issue_detail_default.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_fragment_article.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_fragment_home.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_fragment_image_attachment_display.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
16 |
17 |
23 |
24 |
30 |
31 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_fragment_issue_detail.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
17 |
18 |
25 |
26 |
35 |
36 |
48 |
49 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_fragment_new_issue.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
12 |
13 |
24 |
25 |
34 |
35 |
36 |
52 |
53 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_fragment_new_user.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
16 |
25 |
26 |
35 |
36 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_fragment_search.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_fragment_section.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
15 |
16 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/helpstack/res/layout/hs_sectionlist_article.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/helpstack/res/menu/hs_article.xml:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/helpstack/res/menu/hs_attachment.xml:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/helpstack/res/menu/hs_edit_attachment.xml:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/helpstack/res/menu/hs_home.xml:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/helpstack/res/menu/hs_image_attachment_display.xml:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/helpstack/res/menu/hs_issue_detail.xml:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/helpstack/res/menu/hs_issue_menu.xml:
--------------------------------------------------------------------------------
1 |
20 |
--------------------------------------------------------------------------------
/helpstack/res/menu/hs_new_issue.xml:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/helpstack/res/menu/hs_search_menu.xml:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/helpstack/res/menu/hs_section.xml:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/helpstack/res/values-v11/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/helpstack/res/values-v14/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/helpstack/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 | 64dp
9 |
10 |
11 |
--------------------------------------------------------------------------------
/helpstack/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/helpstack/res/values/hs_colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #228CD1
4 | #e1e1e1
5 | #228CD1
6 | #ffffff
7 | #e2e2e2
8 | #d3d3d3
9 |
10 | #0000
11 | #ECECEC
12 | #B5B5B5
13 | #ff555555
14 |
15 | #228CD1
16 | #FFFFFF
17 | #000000
18 | #FFFFFF
19 | #000000
20 | #FFFFFF
21 | #DE2527
22 | #000000
23 |
24 |
--------------------------------------------------------------------------------
/helpstack/res/values/hs_default_theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 | @drawable/hs_attachment
64 |
65 |
66 | @drawable/hs_search_light
67 |
68 |
69 | @drawable/hs_disclosure
70 |
71 |
72 | @drawable/hs_add_attachment_img
73 |
74 |
75 | @drawable/hs_accept_light
76 |
77 |
78 | @drawable/hs_forward_light
79 |
80 |
--------------------------------------------------------------------------------
/helpstack/res/values/hs_dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 16dp
5 | 16dp
6 |
7 | 14sp
8 | 0.5dip
9 | 18sp
10 | 16sp
11 | 16sp
12 | 13sp
13 | 32dp
14 | 18sp
15 | 100dp
16 | 4dp
17 |
18 | 30dp
19 |
20 |
21 |
--------------------------------------------------------------------------------
/helpstack/res/values/hs_strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | HelpStack
4 |
5 |
6 | Help
7 | FAQ
8 | ISSUES
9 | Report An Issue
10 | Powered by HelpStack
11 |
12 |
13 | Search Articles
14 |
15 |
16 | Register New User
17 | First Name
18 | Last Name
19 | Email Address
20 | Enter your contact details to reach you later
21 |
22 |
23 | Creating issue
24 | Your issue has been created and raised
25 | Report Issue
26 | Subject
27 | Message
28 |
29 |
30 | Add Reply
31 | Send
32 | Me
33 | Staff
34 |
35 |
36 | Change
37 | Remove
38 | Select Picture
39 |
40 |
41 | Attachment
42 | Attachments
43 |
44 | Edit Attachment
45 | Attach
46 | Discard
47 | Clear
48 |
49 |
50 | Article
51 |
52 |
53 | Next
54 | Done
55 | Search
56 |
57 |
58 | Download
59 | Downloading Attachment
60 | Download complete
61 | Loading…
62 | You will be notified when the download finishes
63 | Open with
64 |
65 |
66 | Error
67 | Please check your network connection
68 | Error during download
69 | Please enter all the fields to register successfully
70 | Please enter a valid email address
71 | Error in fetching Attachment
72 | Error in fetching Articles
73 | Error in fetching Articles and Issues
74 | Error in fetching ticket updates
75 | Invalid Email
76 | Error in posting your reply, please check your network connection
77 | Error in reporting issue
78 | Subject and message cannot be empty
79 |
80 | Drawing saved to Gallery
81 | Image could not be saved
82 |
83 |
84 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/activities/ArticleActivity.java:
--------------------------------------------------------------------------------
1 | // ArticleActivity
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.activities;
24 |
25 | import android.os.Bundle;
26 | import android.support.v7.app.ActionBar;
27 | import android.view.Menu;
28 | import android.view.MenuItem;
29 |
30 | import com.tenmiles.helpstack.R;
31 | import com.tenmiles.helpstack.fragments.ArticleFragment;
32 | import com.tenmiles.helpstack.fragments.HSFragmentManager;
33 | import com.tenmiles.helpstack.model.HSKBItem;
34 |
35 | public class ArticleActivity extends HSActivityParent {
36 |
37 | public static final String EXTRAS_ARTICLE_ITEM = "item";
38 |
39 | @Override
40 | protected void onCreate(Bundle savedInstanceState) {
41 | super.onCreate(savedInstanceState);
42 | setContentView(R.layout.hs_activity_article, savedInstanceState, R.string.hs_article);
43 |
44 | if (savedInstanceState == null) {
45 | HSKBItem kbItem = (HSKBItem)getIntent().getSerializableExtra("item");
46 | ArticleFragment sectionFragment = HSFragmentManager.getArticleFragment(this, kbItem);
47 | HSFragmentManager.putFragmentInActivity(this, R.id.container, sectionFragment, "Article");
48 | }
49 | }
50 |
51 | @Override
52 | public boolean onCreateOptionsMenu(Menu menu) {
53 | getMenuInflater().inflate(R.menu.hs_article, menu);
54 | return true;
55 | }
56 |
57 | @Override
58 | public boolean onOptionsItemSelected(MenuItem item) {
59 | int id = item.getItemId();
60 | if (id == android.R.id.home) {
61 | finish();
62 | return true;
63 | }
64 | return super.onOptionsItemSelected(item);
65 | }
66 |
67 | }
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/activities/HSActivityParent.java:
--------------------------------------------------------------------------------
1 | // HSActivityParent
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.activities;
24 |
25 | import android.graphics.Color;
26 | import android.graphics.drawable.ColorDrawable;
27 | import android.os.Bundle;
28 | import android.support.v7.app.ActionBar;
29 | import android.support.v7.app.AppCompatActivity;
30 | import android.support.v7.widget.Toolbar;
31 | import android.view.LayoutInflater;
32 | import android.view.View;
33 | import android.widget.LinearLayout;
34 |
35 | import com.tenmiles.helpstack.R;
36 | import com.tenmiles.helpstack.gears.HSHappyfoxGear;
37 |
38 | /**
39 | * This is base class of all Activity used in HelpStack
40 | *
41 | * @author Nalin Chhajer
42 | */
43 | public class HSActivityParent extends AppCompatActivity {
44 |
45 | private static final String ACTION_BAR_TITLE = "Actionbar_title";
46 | private Toolbar mToolbar;
47 |
48 | // Handling actionbar title when activity changes so activity doesn't have to handle it.
49 | @Override
50 | protected void onSaveInstanceState(Bundle outState) {
51 | super.onSaveInstanceState(outState);
52 | if(getSupportActionBar() != null)
53 | outState.putString(ACTION_BAR_TITLE, getSupportActionBar().getTitle().toString());
54 | }
55 |
56 | protected void setContentView(int layoutResId, Bundle savedInstanceState, int title) {
57 | super.setContentView(R.layout.hs_activity_base);
58 | mToolbar = (Toolbar)findViewById(R.id.toolbar);
59 |
60 | LayoutInflater layoutInflater = LayoutInflater.from(this);
61 | LinearLayout lLayout = (LinearLayout) findViewById(R.id.lyt_base);
62 | View view = layoutInflater.inflate(layoutResId, null);
63 |
64 | if(getSupportActionBar() != null){
65 | ActionBar actionbar = getSupportActionBar();
66 | setTitle(savedInstanceState, title);
67 | actionbar.setHomeButtonEnabled(true);
68 | actionbar.setDisplayHomeAsUpEnabled(true);
69 | } else{
70 | mToolbar.setVisibility(View.VISIBLE);
71 | setSupportActionBar(mToolbar);
72 | setTitle(savedInstanceState, title);
73 | }
74 |
75 | getSupportActionBar().setDisplayHomeAsUpEnabled(true);
76 | getSupportActionBar().setDisplayShowHomeEnabled(true);
77 |
78 | lLayout.addView(view);
79 | }
80 |
81 | private void setTitle(Bundle savedInstanceState, int title) {
82 | ActionBar actionbar = getSupportActionBar();
83 | if (savedInstanceState != null) {
84 | actionbar.setTitle(savedInstanceState.getString(ACTION_BAR_TITLE));
85 | } else if(title != 0){
86 | actionbar.setTitle(getString(title));
87 | } else{
88 | actionbar.setTitle(getString(R.string.hs_help_title));
89 | }
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/activities/HomeActivity.java:
--------------------------------------------------------------------------------
1 | package com.tenmiles.helpstack.activities;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.view.MenuItem;
6 |
7 | import com.tenmiles.helpstack.R;
8 | import com.tenmiles.helpstack.fragments.HSFragmentManager;
9 | import com.tenmiles.helpstack.fragments.HomeFragment;
10 |
11 | public class HomeActivity extends HSActivityParent {
12 |
13 | @Override
14 | protected void onCreate(Bundle savedInstanceState) {
15 | super.onCreate(savedInstanceState);
16 | setContentView(R.layout.hs_activity_home, savedInstanceState, R.string.hs_help_title);
17 |
18 | if (savedInstanceState == null) { // Activity started first time
19 | HomeFragment homeFragment = HSFragmentManager.getHomeFragment();
20 | HSFragmentManager.putFragmentInActivity(this, R.id.container, homeFragment, "Home");
21 | }
22 | }
23 |
24 | @Override
25 | public boolean onOptionsItemSelected(MenuItem item) {
26 | int id = item.getItemId();
27 | if (id == R.id.search) {
28 | return true;
29 | } else if (id == android.R.id.home) {
30 | finish();
31 | return true;
32 | }
33 | return super.onOptionsItemSelected(item);
34 | }
35 |
36 | @Override
37 | protected void onActivityResult(int arg0, int arg1, Intent arg2) {
38 | super.onActivityResult(arg0, arg1, arg2);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/activities/ImageAttachmentDisplayActivity.java:
--------------------------------------------------------------------------------
1 | // ImageAttachmentDisplayActivity
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.activities;
24 |
25 | import android.os.Bundle;
26 | import android.support.v7.app.ActionBar;
27 | import android.view.MenuItem;
28 |
29 | import com.tenmiles.helpstack.R;
30 | import com.tenmiles.helpstack.fragments.HSFragmentManager;
31 | import com.tenmiles.helpstack.fragments.ImageAttachmentDisplayFragment;
32 |
33 | public class ImageAttachmentDisplayActivity extends HSActivityParent {
34 |
35 | public static final String EXTRAS_STRING_URL = "html_content";
36 | public static final String EXTRAS_TITLE = "title";
37 |
38 | @Override
39 | protected void onCreate(Bundle savedInstanceState) {
40 | super.onCreate(savedInstanceState);
41 | setContentView(R.layout.hs_activity_image_attachment_display, savedInstanceState, 0);
42 |
43 | if (savedInstanceState == null) {
44 | String url = getIntent().getExtras().getString(EXTRAS_STRING_URL);
45 | String title = getIntent().getExtras().getString(EXTRAS_TITLE);
46 | getSupportActionBar().setTitle(title);
47 | ImageAttachmentDisplayFragment fragment = HSFragmentManager.getImageAttachmentDisplayFragment(this, url);
48 | getSupportFragmentManager().beginTransaction().add(R.id.container, fragment).commit();
49 | }
50 | }
51 |
52 | @Override
53 | public boolean onOptionsItemSelected(MenuItem item) {
54 | int id = item.getItemId();
55 | if (id == android.R.id.home) {
56 | finish();
57 | return true;
58 | }
59 | return super.onOptionsItemSelected(item);
60 | }
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/activities/IssueDetailActivity.java:
--------------------------------------------------------------------------------
1 | // IssueDetailActivity
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.activities;
24 |
25 | import android.os.Bundle;
26 | import android.support.v7.app.ActionBar;
27 | import android.view.Menu;
28 | import android.view.MenuItem;
29 |
30 | import com.tenmiles.helpstack.R;
31 | import com.tenmiles.helpstack.fragments.HSFragmentManager;
32 | import com.tenmiles.helpstack.fragments.IssueDetailFragment;
33 | import com.tenmiles.helpstack.model.HSTicket;
34 |
35 | public class IssueDetailActivity extends HSActivityParent {
36 | private static final String TAG = IssueDetailActivity.class.getSimpleName();
37 |
38 | public static final String EXTRAS_TICKET = "ticket";
39 |
40 | @Override
41 | protected void onCreate(Bundle savedInstanceState) {
42 | super.onCreate(savedInstanceState);
43 | setContentView(R.layout.hs_activity_issue_detail, savedInstanceState, 0);
44 |
45 | if (savedInstanceState == null) {
46 | IssueDetailFragment mIssueDetailFragment = HSFragmentManager.getIssueDetailFragment();
47 |
48 | HSFragmentManager.putFragmentInActivity(this, R.id.container, mIssueDetailFragment, TAG);
49 | HSTicket ticket = (HSTicket)getIntent().getExtras().getSerializable(EXTRAS_TICKET);
50 | mIssueDetailFragment.setTicket(ticket);
51 | getSupportActionBar().setTitle(ticket.getSubject());
52 | }
53 | }
54 |
55 | @Override
56 | public boolean onCreateOptionsMenu(Menu menu) {
57 | getMenuInflater().inflate(R.menu.hs_issue_detail, menu);
58 | return true;
59 | }
60 |
61 | @Override
62 | public boolean onOptionsItemSelected(MenuItem item) {
63 | int id = item.getItemId();
64 | if (id == android.R.id.home) {
65 | finish();
66 | return true;
67 | }
68 | return super.onOptionsItemSelected(item);
69 | }
70 |
71 | }
72 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/activities/NewIssueActivity.java:
--------------------------------------------------------------------------------
1 | // NewIssueActivity
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.activities;
24 |
25 | import android.content.Intent;
26 | import android.os.Bundle;
27 | import android.support.v7.app.ActionBar;
28 | import android.view.Menu;
29 | import android.view.MenuItem;
30 |
31 | import com.tenmiles.helpstack.R;
32 | import com.tenmiles.helpstack.fragments.HSFragmentManager;
33 | import com.tenmiles.helpstack.fragments.NewIssueFragment;
34 | import com.tenmiles.helpstack.model.HSUser;
35 |
36 | public class NewIssueActivity extends HSActivityParent {
37 |
38 | public static final String RESULT_TICKET = "ticket";
39 | public static final String EXTRAS_USER = "user";
40 | public static final String EXTRAS_SUBJECT = "subject";
41 | public static final String EXTRAS_MESSAGE = "message";
42 | public static final String EXTRAS_ATTACHMENT = "attachment";
43 |
44 | @Override
45 | protected void onCreate(Bundle savedInstanceState) {
46 | super.onCreate(savedInstanceState);
47 | setContentView(R.layout.hs_activity_new_issue, savedInstanceState, R.string.hs_new_issue_title);
48 |
49 | if (savedInstanceState == null) {
50 | Bundle bundle = getIntent().getExtras();
51 | NewIssueFragment newIssueFragment;
52 | if (getIntent().hasExtra(EXTRAS_USER)) {
53 | newIssueFragment = HSFragmentManager.getNewIssueFragment((HSUser) bundle.getSerializable(EXTRAS_USER));
54 | }
55 | else {
56 | newIssueFragment = HSFragmentManager.getNewIssueFragment(null);
57 | }
58 | HSFragmentManager.putFragmentInActivity(this, R.id.container, newIssueFragment, "Issue");
59 | }
60 | }
61 |
62 | @Override
63 | public boolean onCreateOptionsMenu(Menu menu) {
64 | return true;
65 | }
66 |
67 | @Override
68 | public boolean onOptionsItemSelected(MenuItem item) {
69 | int id = item.getItemId();
70 | if (id == android.R.id.home) {
71 | finishSafe();
72 | return true;
73 | }
74 | return super.onOptionsItemSelected(item);
75 | }
76 |
77 | public void finishSafe() {
78 | Intent intent = new Intent();
79 | setResult(HSActivityManager.resultCode_cancelled,intent);
80 | finish();
81 | }
82 |
83 | }
84 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/activities/NewUserActivity.java:
--------------------------------------------------------------------------------
1 | // NewUserActivity
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.activities;
24 |
25 | import android.os.Bundle;
26 | import android.support.v7.app.ActionBar;
27 | import android.view.MenuItem;
28 |
29 | import com.tenmiles.helpstack.R;
30 | import com.tenmiles.helpstack.fragments.HSFragmentManager;
31 | import com.tenmiles.helpstack.fragments.NewUserFragment;
32 |
33 | public class NewUserActivity extends HSActivityParent {
34 |
35 | private static final String TAG = "NewUser";
36 |
37 | @Override
38 | protected void onCreate(Bundle savedInstanceState) {
39 | super.onCreate(savedInstanceState);
40 | setContentView(R.layout.hs_activity_new_user, savedInstanceState, R.string.hs_new_issue_title);
41 |
42 | if (savedInstanceState == null) {
43 | Bundle bundle = getIntent().getExtras();
44 | NewUserFragment newUserFragment = new NewUserFragment();
45 | newUserFragment.setArguments(bundle);
46 | HSFragmentManager.putFragmentInActivity(this, R.id.container, newUserFragment, TAG);
47 | }
48 | }
49 |
50 | @Override
51 | public boolean onOptionsItemSelected(MenuItem item) {
52 | int id = item.getItemId();
53 | if (id == android.R.id.home) {
54 | HSActivityManager.finishSafe(this);
55 | return true;
56 | }
57 | return super.onOptionsItemSelected(item);
58 | }
59 |
60 |
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/activities/SectionActivity.java:
--------------------------------------------------------------------------------
1 | // SectionActivity
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.activities;
24 |
25 | import android.os.Bundle;
26 | import android.support.v7.app.ActionBar;
27 | import android.view.Menu;
28 | import android.view.MenuItem;
29 |
30 | import com.tenmiles.helpstack.R;
31 | import com.tenmiles.helpstack.fragments.HSFragmentManager;
32 | import com.tenmiles.helpstack.fragments.SectionFragment;
33 | import com.tenmiles.helpstack.model.HSKBItem;
34 |
35 | /**
36 | *
37 | * Displays SectionFragment
38 | *
39 | * @author Nalin Chhajer
40 | *
41 | */
42 | public class SectionActivity extends HSActivityParent {
43 | private static final String TAG = "Section";
44 | public static final String EXTRAS_SECTION_ITEM = "section_item";
45 |
46 | @Override
47 | protected void onCreate(Bundle savedInstanceState) {
48 | super.onCreate(savedInstanceState);
49 | setContentView(R.layout.hs_activity_section, savedInstanceState, 0);
50 |
51 | if (savedInstanceState == null) {
52 | HSKBItem kbSectionItem = (HSKBItem)getIntent().getSerializableExtra(EXTRAS_SECTION_ITEM);
53 | SectionFragment sectionFragment = HSFragmentManager.getSectionFragment(this, kbSectionItem);
54 | HSFragmentManager.putFragmentInActivity(this, R.id.container, sectionFragment, TAG);
55 | getSupportActionBar().setTitle(kbSectionItem.getSubject());
56 | }
57 | }
58 |
59 | @Override
60 | public boolean onCreateOptionsMenu(Menu menu) {
61 | getMenuInflater().inflate(R.menu.hs_section, menu);
62 | return true;
63 | }
64 |
65 | @Override
66 | public boolean onOptionsItemSelected(MenuItem item) {
67 | int id = item.getItemId();
68 | if (id == android.R.id.home) {
69 | finish();
70 | return true;
71 | }
72 | return super.onOptionsItemSelected(item);
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/fragments/ArticleFragment.java:
--------------------------------------------------------------------------------
1 | // ArticleFragment
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.fragments;
24 |
25 | import android.os.Bundle;
26 | import android.view.LayoutInflater;
27 | import android.view.View;
28 | import android.view.ViewGroup;
29 | import android.webkit.WebChromeClient;
30 | import android.webkit.WebView;
31 |
32 | import com.tenmiles.helpstack.R;
33 | import com.tenmiles.helpstack.model.HSKBItem;
34 |
35 | public class ArticleFragment extends HSFragmentParent {
36 |
37 | public static final String HTML_WRAPPER_WITH_TITLE =
38 | "" +
39 | "
%s
%s";
40 |
41 | public HSKBItem kbItem;
42 | private WebView webview;
43 |
44 | public ArticleFragment() {
45 | }
46 |
47 | @Override
48 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
49 | View rootView = inflater.inflate(R.layout.hs_fragment_article, container, false);
50 |
51 | webview = (WebView) rootView.findViewById(R.id.webview);
52 |
53 | if (savedInstanceState != null) {
54 | kbItem = (HSKBItem) savedInstanceState.getSerializable("kbItem");
55 | }
56 |
57 | webview.setWebChromeClient(new WebChromeClient() {
58 | public void onProgressChanged(WebView view, int progress) {
59 | // Activities and WebViews measure progress with different scales.
60 | // The progress meter will automatically disappear when we reach 100%
61 | progress = progress * 100;
62 | if(getHelpStackActivity() != null) {
63 | getHelpStackActivity().setSupportProgressBarVisibility(progress < 98);
64 | getHelpStackActivity().setSupportProgress(progress);
65 | }
66 | }
67 | });
68 |
69 | initializeView();
70 | return rootView;
71 | }
72 |
73 | @Override
74 | public void onSaveInstanceState(Bundle outState) {
75 | super.onSaveInstanceState(outState);
76 | outState.putSerializable("kbItem", kbItem);
77 | }
78 |
79 | public void initializeView() {
80 | String content = this.kbItem.getBody();
81 | String contentText = String.format(HTML_WRAPPER_WITH_TITLE, this.kbItem.getSubject(), content);
82 | webview.loadData(contentText, "text/html", null);
83 | }
84 |
85 | }
86 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/fragments/HSFragmentManager.java:
--------------------------------------------------------------------------------
1 | // HSFragmentManager
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.fragments;
24 |
25 | import android.support.v4.app.Fragment;
26 | import android.support.v4.app.FragmentManager;
27 | import android.support.v4.app.FragmentTransaction;
28 |
29 | import com.tenmiles.helpstack.activities.HSActivityParent;
30 | import com.tenmiles.helpstack.model.HSKBItem;
31 | import com.tenmiles.helpstack.model.HSUser;
32 |
33 | /**
34 | *
35 | * Contatins functions that help in creating fragment used in HelpStack.
36 | *
37 | * @author Nalin Chhajer
38 | *
39 | */
40 | public class HSFragmentManager {
41 |
42 | public static HomeFragment getHomeFragment() {
43 | return new HomeFragment();
44 | }
45 |
46 | public static NewIssueFragment getNewIssueFragment(HSUser user) {
47 | return NewIssueFragment.createNewIssueFragment(user);
48 | }
49 |
50 | public static IssueDetailFragment getIssueDetailFragment() {
51 | return new IssueDetailFragment();
52 | }
53 |
54 | public static SearchFragment getSearchFragment() {
55 | return new SearchFragment();
56 | }
57 |
58 | public static HSFragmentParent getFragmentInActivity(HSActivityParent activity, String tag) {
59 | FragmentManager fragMgr = activity.getSupportFragmentManager();
60 | return (HSFragmentParent) fragMgr.findFragmentByTag(tag);
61 | }
62 |
63 | public static SectionFragment getSectionFragment(HSActivityParent activity, HSKBItem kbItem) {
64 | SectionFragment sectionFragment = new SectionFragment();
65 | sectionFragment.sectionItemToDisplay = kbItem;
66 | return sectionFragment;
67 | }
68 |
69 | public static ArticleFragment getArticleFragment(HSActivityParent activity, HSKBItem kbItem) {
70 | ArticleFragment sectionFragment = new ArticleFragment();
71 | sectionFragment.kbItem = kbItem;
72 | return sectionFragment;
73 | }
74 |
75 | public static ImageAttachmentDisplayFragment getImageAttachmentDisplayFragment(HSActivityParent activity, String url) {
76 | ImageAttachmentDisplayFragment fragment = new ImageAttachmentDisplayFragment();
77 | fragment.image_url = url;
78 | return fragment;
79 | }
80 |
81 | public static void putFragmentInActivity(HSActivityParent activity, int resid, HSFragmentParent frag, String tag) {
82 | FragmentManager fragMgr = activity.getSupportFragmentManager();
83 | FragmentTransaction xact = fragMgr.beginTransaction();
84 | xact.replace(resid, frag, tag);
85 | xact.commit();
86 | }
87 |
88 | public static void putFragmentBackStackInActivity(HSActivityParent activity, int resid, HSFragmentParent frag, String tag) {
89 | FragmentManager fragMgr = activity.getSupportFragmentManager();
90 | FragmentTransaction xact = fragMgr.beginTransaction();
91 | xact.replace(resid, frag);
92 | xact.addToBackStack(tag);
93 | xact.commit();
94 | }
95 |
96 | }
97 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/fragments/HSFragmentParent.java:
--------------------------------------------------------------------------------
1 | // HSFragmentParent
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.fragments;
24 |
25 | import android.app.Activity;
26 | import android.content.Context;
27 | import android.support.v4.app.Fragment;
28 | import android.support.v7.app.ActionBar;
29 |
30 | import com.tenmiles.helpstack.activities.HSActivityParent;
31 |
32 | /**
33 | *
34 | * This is the parent class for any Fragment used in HelpStack.
35 | *
36 | * @author Nalin Chhajer
37 | *
38 | */
39 | public class HSFragmentParent extends Fragment {
40 |
41 | HSActivityParent mActivity;
42 |
43 | public HSActivityParent getHelpStackActivity() {
44 | return mActivity;
45 | }
46 |
47 | @Override
48 | public void onAttach(Context context) {
49 | super.onAttach(context);
50 | mActivity = (HSActivityParent) context;
51 | }
52 |
53 | @Override
54 | public void onDetach() {
55 | super.onDetach();
56 | mActivity = null;
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/gears/HSEmailGear.java:
--------------------------------------------------------------------------------
1 | // HSEmailGear
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.gears;
24 |
25 | import com.tenmiles.helpstack.logic.HSGear;
26 |
27 | /**
28 | *
29 | * @author Nalin chhajer
30 | *
31 | */
32 | public class HSEmailGear extends HSGear {
33 |
34 | public HSEmailGear(String supportEmailAddress, int localArticleResId) {
35 | setNotImplementingKBFetching(localArticleResId);
36 | setNotImplementingTicketsFetching(supportEmailAddress);
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/logic/HSArticleReader.java:
--------------------------------------------------------------------------------
1 | // HSArticleReader
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.logic;
24 |
25 | import java.io.IOException;
26 | import java.util.ArrayList;
27 |
28 | import org.xmlpull.v1.XmlPullParser;
29 | import org.xmlpull.v1.XmlPullParserException;
30 |
31 | import android.content.Context;
32 |
33 | import com.tenmiles.helpstack.model.HSKBItem;
34 |
35 | /**
36 | *
37 | * @author Nalin Chhajer
38 | *
39 | */
40 | public class HSArticleReader {
41 |
42 | private int articleResourceId;
43 |
44 | public HSArticleReader(int articlesResourceId) {
45 | this.articleResourceId = articlesResourceId;
46 | }
47 |
48 | public HSKBItem[] readArticlesFromResource(Context context) throws XmlPullParserException, IOException {
49 | ArrayList articles = new ArrayList();
50 | XmlPullParser xpp = context.getResources().getXml(articleResourceId);
51 |
52 | while (xpp.getEventType()!=XmlPullParser.END_DOCUMENT) {
53 | if (xpp.getEventType()==XmlPullParser.START_TAG) {
54 | if (xpp.getName().equals("article")) {
55 | int attributeCount = xpp.getAttributeCount();
56 | String subject = null;
57 | String text = null;
58 |
59 | for (int i = 0; i < attributeCount; i++) {
60 | String attrName = xpp.getAttributeName(i);
61 | if (attrName.equals("subject")) {
62 | subject = xpp.getAttributeValue(i);
63 | }
64 | if (attrName.equals("text")) {
65 | text = xpp.getAttributeValue(i);
66 | }
67 | }
68 |
69 | assert subject != null : "Subject was not specified in xml for article @ index "+articles.size()+1;
70 | assert text != null : "Text was not specified in xml for article @ index "+articles.size()+1;
71 | articles.add(new HSKBItem(null, subject, text));
72 | }
73 | }
74 |
75 | xpp.next();
76 | }
77 |
78 | HSKBItem[] articleArray = new HSKBItem[0];
79 | articleArray = articles.toArray(articleArray);
80 | return articleArray;
81 | }
82 |
83 | }
84 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/logic/OnFetchedArraySuccessListener.java:
--------------------------------------------------------------------------------
1 | // OnFetchedArraySuccessListener
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.logic;
24 |
25 | public interface OnFetchedArraySuccessListener {
26 | public void onSuccess(Object[] successObject);
27 | }
28 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/logic/OnFetchedSuccessListener.java:
--------------------------------------------------------------------------------
1 | // OnFetchedSuccessListener
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.logic;
24 |
25 |
26 | public interface OnFetchedSuccessListener {
27 | public void onSuccess(Object successObject);
28 | }
29 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/logic/OnNewTicketFetchedSuccessListener.java:
--------------------------------------------------------------------------------
1 | // OnNewTicketFetchedSuccessListener
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.logic;
24 |
25 | import com.tenmiles.helpstack.model.HSTicket;
26 | import com.tenmiles.helpstack.model.HSUser;
27 |
28 |
29 | public interface OnNewTicketFetchedSuccessListener {
30 | public void onSuccess(HSUser udpatedUserDetail, HSTicket ticket);
31 | }
32 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/model/HSAttachment.java:
--------------------------------------------------------------------------------
1 | // HSAttachment
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 |
24 | package com.tenmiles.helpstack.model;
25 |
26 | import com.google.gson.annotations.SerializedName;
27 |
28 | import java.io.Serializable;
29 |
30 | public class HSAttachment implements Serializable{
31 |
32 | private static final long serialVersionUID = 8417480406914032499L;
33 |
34 | @SerializedName("file_name")
35 | private String fileName;
36 |
37 | @SerializedName("mime_type")
38 | private String mimeType;
39 |
40 | @SerializedName("url")
41 | private String url;
42 |
43 | public HSAttachment() {
44 | }
45 |
46 | public static HSAttachment createAttachment(String url, String fileName, String mimeType) {
47 | HSAttachment attachment = new HSAttachment();
48 |
49 | attachment.fileName = fileName;
50 | attachment.mimeType = mimeType;
51 | attachment.url = url;
52 |
53 | return attachment;
54 | }
55 |
56 | public String getFileName() {
57 | return fileName;
58 | }
59 |
60 | public String getUrl() {
61 | return url;
62 | }
63 |
64 | public String getMimeType() {
65 | return mimeType;
66 | }
67 |
68 | }
69 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/model/HSCachedTicket.java:
--------------------------------------------------------------------------------
1 | // HSCachedTicket
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.model;
24 |
25 | import com.google.gson.annotations.SerializedName;
26 |
27 | import java.io.Serializable;
28 | import java.util.ArrayList;
29 | import java.util.Arrays;
30 |
31 | public class HSCachedTicket implements Serializable {
32 |
33 | @SerializedName("data")
34 | HSTicket[] tickets;
35 |
36 | public HSCachedTicket() {
37 | tickets = new HSTicket[0];
38 | }
39 |
40 | public HSTicket[] getTickets() {
41 | return tickets;
42 | }
43 |
44 | public void setTickets(HSTicket[] tickets) {
45 | this.tickets = tickets;
46 | }
47 |
48 | public void addTicketAtStart(HSTicket ticket) {
49 | ArrayList ticketsList = new ArrayList();
50 | ticketsList.add(ticket);
51 | ticketsList.addAll(Arrays.asList(tickets));
52 |
53 | HSTicket[] ticketsArray = new HSTicket[0];
54 | ticketsArray = ticketsList.toArray(ticketsArray);
55 |
56 | setTickets(ticketsArray);
57 | }
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/model/HSCachedUser.java:
--------------------------------------------------------------------------------
1 | // HSCachedUser
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.model;
24 |
25 | import com.google.gson.annotations.SerializedName;
26 |
27 | import java.io.Serializable;
28 |
29 | public class HSCachedUser implements Serializable {
30 |
31 | @SerializedName ("data")
32 | private HSUser user;
33 |
34 | public HSCachedUser() {
35 | }
36 |
37 | public HSUser getUser() {
38 | return user;
39 | }
40 |
41 | public void setUser(HSUser user) {
42 | this.user = user;
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/model/HSDraft.java:
--------------------------------------------------------------------------------
1 | package com.tenmiles.helpstack.model;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | import java.io.Serializable;
6 |
7 | /**
8 | * Created by Anirudh on 19/11/14.
9 | */
10 | public class HSDraft implements Serializable {
11 |
12 | @SerializedName("draft_subject")
13 | private String draftSubject;
14 |
15 | @SerializedName("draft_message")
16 | private String draftMessage;
17 |
18 | @SerializedName("draft_attachments")
19 | private HSAttachment[] draftAttachments;
20 |
21 | @SerializedName("draft_user")
22 | private HSUser draftUser;
23 |
24 | @SerializedName("draft_reply_message")
25 | private String draftReplyMessage;
26 |
27 | @SerializedName("draft_reply_attachments")
28 | private HSAttachment[] draftReplyAttachments;
29 |
30 | public HSDraft() {
31 |
32 | }
33 |
34 | public String getSubject() {
35 | return draftSubject;
36 | }
37 |
38 | public String getMessage() {
39 | return draftMessage;
40 | }
41 |
42 | public HSAttachment[] getAttachments() {
43 | return draftAttachments;
44 | }
45 |
46 | public void setDraftSubject(String subject){
47 | this.draftSubject = subject;
48 | }
49 |
50 | public void setDraftMessage(String message) {
51 | this.draftMessage = message;
52 | }
53 |
54 | public HSUser getDraftUser() {
55 | return draftUser;
56 | }
57 |
58 | public String getDraftReplyMessage() {
59 | return draftReplyMessage;
60 | }
61 |
62 | public HSAttachment[] getDraftReplyAttachments() {
63 | return draftReplyAttachments;
64 | }
65 |
66 | public void setDraftAttachments(HSAttachment[] attachmentsArray) {
67 | this.draftAttachments = attachmentsArray;
68 | }
69 |
70 | public void setDraftUser(HSUser user) {
71 | this.draftUser = user;
72 | }
73 |
74 | public void setDraftReplyMessage(String message) {
75 | this.draftReplyMessage = message;
76 | }
77 |
78 | public void setDraftReplyAttachments(HSAttachment[] attachments) {
79 | this.draftReplyAttachments = attachments;
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/model/HSError.java:
--------------------------------------------------------------------------------
1 | package com.tenmiles.helpstack.model;
2 |
3 | /**
4 | * Created by muthukumarkrishnan on 10/15/15.
5 | */
6 | public class HSError implements Cloneable {
7 | private enum ErrorCode {
8 | AppError,
9 | HttpError,
10 | NetworkError
11 | }
12 |
13 | public String message;
14 | public int httpResponseCode;
15 | public ErrorCode errorCode;
16 |
17 | public void initWithAppError(String msg) {
18 | message = msg;
19 | errorCode = ErrorCode.AppError;
20 | }
21 |
22 | public void initWithHttpError(int responseCode, String msg) {
23 | errorCode = ErrorCode.HttpError;
24 | httpResponseCode = responseCode;
25 | message = msg;
26 | }
27 |
28 | public void initWithNetworkError(String msg) {
29 | errorCode = ErrorCode.NetworkError;
30 | message = msg;
31 | }
32 |
33 | public boolean isAppError() {
34 | return (errorCode == ErrorCode.AppError);
35 | }
36 |
37 | public boolean isNetworkError() {
38 | return (errorCode == ErrorCode.NetworkError);
39 | }
40 |
41 | public boolean isHttpError() {
42 | return (errorCode == ErrorCode.HttpError);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/model/HSKBItem.java:
--------------------------------------------------------------------------------
1 | // HSKBItem
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.model;
24 |
25 | import com.google.gson.annotations.SerializedName;
26 |
27 | import java.io.Serializable;
28 |
29 | public class HSKBItem implements Serializable{
30 |
31 | transient public static final int TYPE_ARTICLE = 0;
32 | transient public static final int TYPE_SECTION = 1;
33 |
34 | @SerializedName("subject")
35 | private String subject;
36 |
37 | @SerializedName("text")
38 | private String body;
39 |
40 | @SerializedName("id")
41 | private String id;
42 |
43 | @SerializedName("article_type")
44 | private int articleType; // 0 - article, 1 - section
45 |
46 | public HSKBItem() {
47 | }
48 |
49 | public HSKBItem(String id, String subject, String body) {
50 | this.id = id;
51 | this.subject = subject;
52 | this.body = body;
53 | }
54 |
55 | public static HSKBItem createForSection(String id, String subject) {
56 | HSKBItem item = new HSKBItem();
57 | item.id = id;
58 | item.subject = subject;
59 | item.articleType = TYPE_SECTION;
60 |
61 | return item;
62 | }
63 |
64 | public static HSKBItem createForArticle(String id, String subject, String text) {
65 | HSKBItem item = new HSKBItem();
66 | item.id = id;
67 | item.subject = subject;
68 | item.body = text;
69 | item.articleType = TYPE_ARTICLE;
70 | return item;
71 | }
72 |
73 | public String getSubject() {
74 | return subject;
75 | }
76 |
77 | public String getId() {
78 | return id;
79 | }
80 |
81 | public void setBody(String body) {
82 | this.body = body;
83 | }
84 |
85 | public String getBody() {
86 | return this.body;
87 | }
88 |
89 | public int getArticleType() {
90 | return articleType;
91 | }
92 |
93 | public void setArticleType(int type) {
94 | articleType = type;
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/model/HSTicket.java:
--------------------------------------------------------------------------------
1 | // HSTicket
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.model;
24 |
25 | import com.google.gson.annotations.SerializedName;
26 |
27 | import java.io.Serializable;
28 |
29 | /**
30 | *
31 | * @author Nalin Chhajer
32 | *
33 | */
34 | public class HSTicket implements Serializable {
35 |
36 | @SerializedName("subject")
37 | private String subject;
38 |
39 | @SerializedName("ticket_id")
40 | private String ticketId;
41 |
42 | @SerializedName("ticket_api_href")
43 | private String ticketApiHref;
44 |
45 | public static HSTicket createATicket(String id, String subject) {
46 | HSTicket ticket = new HSTicket();
47 | ticket.ticketId = id;
48 | ticket.subject = subject;
49 | return ticket;
50 | }
51 |
52 | public static HSTicket createATicket(String id, String subject, String ticketLink) {
53 | HSTicket ticket = createATicket(id, subject);
54 | ticket.ticketApiHref = ticketLink;
55 | return ticket;
56 | }
57 |
58 | public String getSubject() {
59 | return subject;
60 | }
61 |
62 | public String getTicketId() {
63 | return ticketId;
64 | }
65 |
66 | public String getApiHref() {
67 | return ticketApiHref;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/model/HSTicketUpdate.java:
--------------------------------------------------------------------------------
1 | // HSTicketUpdate
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.model;
24 |
25 | import com.google.gson.annotations.SerializedName;
26 |
27 | import java.io.Serializable;
28 | import java.util.Date;
29 |
30 | public class HSTicketUpdate implements Serializable {
31 |
32 | public static final int TYPE_STAFF = 0;
33 | public static final int TYPE_USER = 1;
34 |
35 | @SerializedName("update_id")
36 | private String updateId;
37 |
38 | @SerializedName("text")
39 | private String text;
40 |
41 | @SerializedName("update_by")
42 | private int updateBy; // 0 - Staff, 1 - User
43 |
44 | @SerializedName("update_time")
45 | private Date updateTime;
46 |
47 | @SerializedName("name")
48 | public String name;
49 |
50 | @SerializedName("attachments")
51 | private HSAttachment[] attachments;
52 |
53 | // Date, Attachments etc will come here
54 |
55 | public static HSTicketUpdate createUpdateByStaff(String updateId, String name, String text, Date updateTime, HSAttachment[] attachments) {
56 | HSTicketUpdate update = new HSTicketUpdate();
57 | update.updateBy = TYPE_STAFF;
58 | update.text = text;
59 | update.updateId = updateId;
60 | update.name = name;
61 | update.updateTime = updateTime;
62 | update.attachments = attachments;
63 | return update;
64 | }
65 |
66 | public static HSTicketUpdate createUpdateByUser(String updateId, String name, String text, Date updateTime, HSAttachment[] attachments) {
67 | HSTicketUpdate update = new HSTicketUpdate();
68 | update.updateBy = TYPE_USER;
69 | update.text = text;
70 | update.updateId = updateId;
71 | update.name = name;
72 | update.updateTime = updateTime;
73 | update.attachments = attachments;
74 | return update;
75 | }
76 |
77 | public boolean isStaffUpdate() {
78 | return updateBy == TYPE_STAFF;
79 | }
80 |
81 | public boolean isUserUpdate() {
82 | return updateBy == TYPE_USER;
83 | }
84 |
85 | public String getText() {
86 | return text;
87 | }
88 |
89 | public Date getUpdatedTime() {
90 | return updateTime;
91 | }
92 |
93 | public HSAttachment[] getAttachments() {
94 | return attachments;
95 | }
96 |
97 | public boolean isAttachmentEmpty() {
98 | if(attachments == null || attachments.length == 0) {
99 | return true;
100 | }
101 | return false;
102 | }
103 |
104 | }
105 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/model/HSUploadAttachment.java:
--------------------------------------------------------------------------------
1 | // HSUploadAttachment
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.model;
24 |
25 | import android.content.Context;
26 | import android.net.Uri;
27 |
28 | import org.apache.http.entity.mime.content.InputStreamBody;
29 |
30 | import java.io.FileNotFoundException;
31 | import java.io.InputStream;
32 |
33 | public class HSUploadAttachment {
34 |
35 | private HSAttachment attachment;
36 | private Context mContext;
37 |
38 | public HSUploadAttachment(Context context, HSAttachment attachment) {
39 | this.mContext = context;
40 | this.attachment = attachment;
41 | }
42 |
43 | public InputStreamBody generateStreamToUpload() throws FileNotFoundException {
44 | InputStream stream = generateInputStreamToUpload();
45 |
46 | String attachmentFileName = "attachment";
47 | if (attachment.getFileName()!=null) {
48 | attachmentFileName = attachment.getFileName();
49 | }
50 |
51 | InputStreamBody body = new InputStreamBody(stream, attachment.getMimeType(), attachmentFileName);
52 | return body;
53 | }
54 |
55 | public InputStream generateInputStreamToUpload() throws FileNotFoundException {
56 | InputStream stream = mContext.getContentResolver().openInputStream(Uri.parse(attachment.getUrl()));
57 | return stream;
58 | }
59 |
60 | public HSAttachment getAttachment() {
61 | return attachment;
62 | }
63 |
64 | }
65 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/model/HSUser.java:
--------------------------------------------------------------------------------
1 | // HSUser
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.model;
24 |
25 | import java.io.Serializable;
26 |
27 | import com.google.gson.annotations.SerializedName;
28 |
29 | /**
30 | *
31 | * @author Nalin Chhajer
32 | *
33 | */
34 | public class HSUser implements Serializable {
35 |
36 | @SerializedName("first_name")
37 | private String firstName;
38 |
39 | @SerializedName("last_name")
40 | private String lastName;
41 |
42 | @SerializedName("email")
43 | private String emailAddress;
44 |
45 | @SerializedName("access_token")
46 | private String token;
47 |
48 | @SerializedName("user_id")
49 | private String userId;
50 |
51 | @SerializedName("user_api_href")
52 | private String userApiHref;
53 |
54 | public HSUser() {
55 | }
56 |
57 | public static HSUser createNewUserWithDetails(String firstName, String lastName, String email) {
58 | HSUser user = new HSUser();
59 | user.firstName = firstName;
60 | user.lastName = lastName;
61 | user.emailAddress = email;
62 | return user;
63 | }
64 |
65 | public static HSUser createNewUserWithDetails(String firstName, String lastName, String email, String userLink) {
66 | HSUser user = createNewUserWithDetails(firstName, lastName, email);
67 | user.userApiHref = userLink;
68 | return user;
69 | }
70 |
71 | public String getFirstName() {
72 | return firstName;
73 | }
74 |
75 | public String getLastName() {
76 | return lastName;
77 | }
78 |
79 | public String getFullName() {
80 | return ""+ firstName +" "+ lastName;
81 | }
82 |
83 | public String getEmail() {
84 | return emailAddress;
85 | }
86 |
87 | public String getUserId() {
88 | return userId;
89 | }
90 |
91 | public String getApiHref() {
92 | return userApiHref;
93 | }
94 |
95 | public static HSUser appendCredentialOnUserDetail(HSUser user, String userId, String access_token) {
96 | user.userId = userId;
97 | return user;
98 | }
99 | }
100 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/service/DownloadAttachmentUtility.java:
--------------------------------------------------------------------------------
1 | // DownloadAttachmentUtility
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.service;
24 |
25 | import android.app.DownloadManager;
26 | import android.content.Context;
27 | import android.net.Uri;
28 | import android.os.Build;
29 | import android.widget.Toast;
30 |
31 | import com.tenmiles.helpstack.R;
32 |
33 | public class DownloadAttachmentUtility {
34 |
35 | public static long downloadAttachment(Context ctx, String url, String title) {
36 | DownloadManager dm;
37 | dm = (DownloadManager) ctx.getSystemService(Context.DOWNLOAD_SERVICE);
38 |
39 | DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
40 | request.setTitle(title);
41 | request.setDescription(ctx.getString(R.string.hs_attachments));
42 |
43 | if(Build.VERSION.SDK_INT >= 11) {
44 | request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
45 | request.allowScanningByMediaScanner();
46 | }
47 |
48 | long enqueue = dm.enqueue(request);
49 | final String toastText = ctx.getString(R.string.hs_attachments) + " " + title + ". " + ctx.getString(R.string.hs_notify_download_complete);
50 | Toast.makeText(ctx, toastText, Toast.LENGTH_LONG).show();
51 |
52 | return enqueue;
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/helpstack/src/com/tenmiles/helpstack/widget/HSExpandableListView.java:
--------------------------------------------------------------------------------
1 | // HSExpandableListView
2 | //
3 | //Copyright (c) 2014 HelpStack (http://helpstack.io)
4 | //
5 | //Permission is hereby granted, free of charge, to any person obtaining a copy
6 | //of this software and associated documentation files (the "Software"), to deal
7 | //in the Software without restriction, including without limitation the rights
8 | //to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | //copies of the Software, and to permit persons to whom the Software is
10 | //furnished to do so, subject to the following conditions:
11 | //
12 | //The above copyright notice and this permission notice shall be included in
13 | //all copies or substantial portions of the Software.
14 | //
15 | //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | //FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | //AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | //LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | //THE SOFTWARE.
22 |
23 | package com.tenmiles.helpstack.theme.widget;
24 |
25 | import android.content.Context;
26 | import android.util.AttributeSet;
27 | import android.widget.ExpandableListView;
28 |
29 | /**
30 | *
31 | * Sets up Theme properties if any.
32 | *
33 | * @author Nalin Chhajer
34 | *
35 | */
36 | public class HSExpandableListView extends ExpandableListView {
37 |
38 | public HSExpandableListView(Context context, AttributeSet attrs, int defStyle) {
39 | super(context, attrs, defStyle);
40 | initView(context);
41 | }
42 |
43 | public HSExpandableListView(Context context, AttributeSet attrs) {
44 | super(context, attrs);
45 | initView(context);
46 | }
47 |
48 | public HSExpandableListView(Context context) {
49 | super(context);
50 | initView(context);
51 | }
52 |
53 | public void initView(Context context) {
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':helpstack'
2 | include ':HelpStackExample'
3 |
--------------------------------------------------------------------------------