update project structure

This commit is contained in:
David-Development 2014-01-24 16:48:49 +01:00
parent f61a3827ee
commit b9f7b1fd10
29 changed files with 166 additions and 207 deletions

39
.gitignore vendored
View file

@ -1,6 +1,37 @@
.project
.classpath
.idea
/local.properties
/.idea/workspace.xml
.DS_Store
# built application files
*.apk
*.ap_
# files for the dex VM
*.dex
# Java class files
*.class
# generated files
bin/
gen/
out/
# Local configuration file (sdk path, etc)
local.properties
# Eclipse project files
.classpath
.project
# Android Studio
.idea/
.gradle
/*/local.properties
/*/out
/*/*/build
/*/*/production
*.iml
*.iws
*.ipr
*~
*.swp

View file

@ -0,0 +1 @@
#Fri Jan 24 13:04:57 CET 2014

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -2,8 +2,8 @@
host = https://www.transifex.com
[owncloud.android-news]
file_filter = res/values-<lang>/strings.xml
source_file = res/values/strings.xml
file_filter = News-Android-App/src/main/res/values-<lang>/strings.xml
source_file = News-Android-App/src/main/res/values/strings.xml
source_lang = en
type = ANDROID
lang_map = af_ZA: af-rZA, am_ET: am-rET, ar_AE: ar-rAE, ar_BH: ar-rBH, ar_DZ: ar-rDZ, ar_EG: ar-rEG, ar_IQ: ar-rIQ, ar_JO: ar-rJO, ar_KW: ar-rKW, ar_LB: ar-rLB, ar_LY: ar-rLY, ar_MA: ar-rMA, ar_OM: ar-rOM, ar_QA: ar-rQA, ar_SA: ar-rSA, ar_SY: ar-rSY, ar_TN: ar-rTN, ar_YE: ar-rYE, arn_CL: arn-rCL, as_IN: as-rIN, az_AZ: az-rAZ, ba_RU: ba-rRU, be_BY: be-rBY, bg_BG: bg-rBG, bn_BD: bn-rBD, bn_IN: bn-rIN, bo_CN: bo-rCN, br_FR: br-rFR, bs_BA: bs-rBA, ca_ES: ca-rES, co_FR: co-rFR, cs_CZ: cs-rCZ, cy_GB: cy-rGB, da_DK: da-rDK, de_AT: de-rAT, de_CH: de-rCH, de_DE: de-rDE, de_LI: de-rLI, de_LU: de-rLU, dsb_DE: dsb-rDE, dv_MV: dv-rMV, el_GR: el-rGR, en_AU: en-rAU, en_BZ: en-rBZ, en_CA: en-rCA, en_GB: en-rGB, en_IE: en-rIE, en_IN: en-rIN, en_JM: en-rJM, en_MY: en-rMY, en_NZ: en-rNZ, en_PH: en-rPH, en_SG: en-rSG, en_TT: en-rTT, en_US: en-rUS, en_ZA: en-rZA, en_ZW: en-rZW, es_AR: es-rAR, es_BO: es-rBO, es_CL: es-rCL, es_CO: es-rCO, es_CR: es-rCR, es_DO: es-rDO, es_EC: es-rEC, es_ES: es-rES, es_GT: es-rGT, es_HN: es-rHN, es_MX: es-rMX, es_NI: es-rNI, es_PA: es-rPA, es_PE: es-rPE, es_PR: es-rPR, es_PY: es-rPY, es_SV: es-rSV, es_US: es-rUS, es_UY: es-rUY, es_VE: es-rVE, et_EE: et-rEE, eu_ES: eu-rES, fa_IR: fa-rIR, fi_FI: fi-rFI, fil_PH: fil-rPH, fo_FO: fo-rFO, fr_BE: fr-rBE, fr_CA: fr-rCA, fr_CH: fr-rCH, fr_FR: fr-rFR, fr_LU: fr-rLU, fr_MC: fr-rMC, fy_NL: fy-rNL, ga_IE: ga-rIE, gd_GB: gd-rGB, gl_ES: gl-rES, gsw_FR: gsw-rFR, gu_IN: gu-rIN, ha_NG: ha-rNG, he_IL: he-rIL, hi_IN: hi-rIN, hr_BA: hr-rBA, hr_HR: hr-rHR, hsb_DE: hsb-rDE, hu_HU: hu-rHU, hy_AM: hy-rAM, id_ID: id-rID, ig_NG: ig-rNG, ii_CN: ii-rCN, is_IS: is-rIS, it_CH: it-rCH, it_IT: it-rIT, iu_CA: iu-rCA, ja_JP: ja-rJP, ka_GE: ka-rGE, kk_KZ: kk-rKZ, kl_GL: kl-rGL, km_KH: km-rKH, kn_IN: kn-rIN, ko_KR: ko-rKR, kok_IN: kok-rIN, ku_IQ: ku-rIQ, ky_KG: ky-rKG, lb_LU: lb-rLU, lo_LA: lo-rLA, lt_LT: lt-rLT, lv_LV: lv-rLV, mi_NZ: mi-rNZ, mk_MK: mk-rMK, ml_IN: ml-rIN, mn_CN: mn-rCN, mn_MN: mn-rMN, moh_CA: moh-rCA, mr_IN: mr-rIN, ms_BN: ms-rBN, ms_MY: ms-rMY, my_MM: my, mt_MT: mt-rMT, nb_NO: nb-rNO, ne_NP: ne-rNP, nl_BE: nl-rBE, nl_NL: nl-rNL, nn_NO: nn-rNO, nso_ZA: nso-rZA, oc_FR: oc-rFR, or_IN: or-rIN, pa_IN: pa-rIN, pl_PL: pl-rPL, prs_AF: prs-rAF, ps_AF: ps-rAF, pt_BR: pt-rBR, pt_PT: pt-rPT, qut_GT: qut-rGT, quz_BO: quz-rBO, quz_EC: quz-rEC, quz_PE: quz-rPE, rm_CH: rm-rCH, ro_RO: ro-rRO, ru_RU: ru-rRU, rw_RW: rw-rRW, sa_IN: sa-rIN, sah_RU: sah-rRU, se_FI: se-rFI, se_NO: se-rNO, se_SE: se-rSE, si_LK: si-rLK, sk_SK: sk-rSK, sl_SI: sl-rSI, sma_NO: sma-rNO, sma_SE: sma-rSE, smj_NO: smj-rNO, smj_SE: smj-rSE, smn_FI: smn-rFI, sms_FI: sms-rFI, sq_AL: sq-rAL, sr_BA: sr-rBA, sr_CS: sr-rCS, sr_ME: sr-rME, sr_RS: sr-rRS, sr@latin: sr-rSP, sv_FI: sv-rFI, sv_SE: sv-rSE, sw_KE: sw-rKE, syr_SY: syr-rSY, ta_IN: ta-rIN, ta_LK: ta-rLK, te_IN: te-rIN, tg_TJ: tg-rTJ, th_TH: th-rTH, tk_TM: tk-rTM, tn_ZA: tn-rZA, tr_TR: tr-rTR, tt_RU: tt-rRU, tzm_DZ: tzm-rDZ, ug_CN: ug-rCN, uk_UA: uk-rUA, ur_PK: ur-rPK, uz_UZ: uz-rUZ, vi_VN: vi-rVN, wo_SN: wo-rSN, xh_ZA: xh-rZA, yo_NG: yo-rNG, zh_CN: zh-rCN, zh_CN.GB2312:zh-rBG, zh_HK: zh-rHK, zh_MO: zh-rMO, zh_SG: zh-rSG, zh_TW: zh-rTW, zu_ZA: zu-rZA

View file

@ -1,3 +1,12 @@
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.8.+'
}
}
apply plugin: 'android'
android {

View file

@ -1,27 +0,0 @@
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion '19.0.0'
defaultConfig {
minSdkVersion 7
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.android.support:support-v4:19.0.+'
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
compile 'com.github.chrisbanes.actionbarpulltorefresh:extra-abs:+'
compile files('src/main/libs/gson-2.2.4.jar')
compile files('src/main/libs/jsoup-1.7.2.jar')
}

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.luhmer.owncloudnewsreader"
android:versionCode="40"
android:versionName="0.5.5" >
android:versionCode="41"
android:versionName="0.5.6" >
<uses-sdk
android:minSdkVersion="7"

View file

@ -209,7 +209,7 @@ public class NewsDetailActivity extends SherlockFragmentActivity {
if(keyCode == KeyEvent.KEYCODE_BACK)
{
NewsDetailFragment ndf = (NewsDetailFragment) getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + currentPosition);
if(ndf.webview != null)
if(ndf != null && ndf.webview != null)
{
if(ndf.webview.canGoBack())
{
@ -246,11 +246,19 @@ public class NewsDetailActivity extends SherlockFragmentActivity {
UpdateActionBarIcons();
}
/**
* Returns the id of a feed. When the position is invalid, -1 is returned.
* @param position
* @return
*/
public String getIdCurrentFeed(int position) {
if(position < cursor.getCount()) {
cursor.moveToPosition(position);
String idFeed = String.valueOf(cursor.getString(0));
return idFeed;
}
return "-1";
}
private void ResumeVideoPlayersOnCurrentPage()
{
@ -270,8 +278,13 @@ public class NewsDetailActivity extends SherlockFragmentActivity {
public void UpdateActionBarIcons()
{
String idFeed = getIdCurrentFeed(currentPosition);
boolean isStarred = dbConn.isFeedUnreadStarred(idFeed, false);
boolean isRead = dbConn.isFeedUnreadStarred(idFeed, true);
boolean isStarred = false;
boolean isRead = false;
if(idFeed != "-1") {
isStarred = dbConn.isFeedUnreadStarred(idFeed, false);
isRead = dbConn.isFeedUnreadStarred(idFeed, true);
}
//if(rssFiles.get(currentPosition).getStarred() && menuItem_Starred != null)
if(isStarred && menuItem_Starred != null)

View file

@ -132,7 +132,9 @@ public class NewsDetailFragment extends SherlockFragment {
webview = (WebView) rootView.findViewById(R.id.webview);
//webview.setBackgroundColor(getResources().getColor(android.R.color.background_dark));
if(ThemeChooser.isDarkTheme(getActivity())) {
webview.setBackgroundColor(getResources().getColor(android.R.color.background_dark));
}
progressbar_webview = (ProgressBar) rootView.findViewById(R.id.progressbar_webview);
@ -192,6 +194,10 @@ public class NewsDetailFragment extends SherlockFragment {
progressbar_webview.setProgress(progress);
if(progress == 100) {
progressbar_webview.setVisibility(ProgressBar.GONE);
if(ThemeChooser.isDarkTheme(getActivity())) {
webview.setBackgroundColor(getResources().getColor(android.R.color.transparent));
}
}
}
});

View file

@ -45,6 +45,8 @@ import com.devspark.robototextview.widget.RobotoCheckBox;
import java.util.ArrayList;
import de.luhmer.owncloudnewsreader.ListView.BlockingExpandableListView;
import de.luhmer.owncloudnewsreader.ListView.BlockingListView;
import de.luhmer.owncloudnewsreader.ListView.SubscriptionExpandableListAdapter;
import de.luhmer.owncloudnewsreader.cursor.IOnStayUnread;
import de.luhmer.owncloudnewsreader.cursor.NewsListCursorAdapter;
@ -161,8 +163,6 @@ public class NewsReaderDetailFragment extends SherlockListFragment implements IO
//getListView().setLayerType(View.LAYER_TYPE_SOFTWARE, null);
//lvAdapter = null;
NewsListCursorAdapter lvAdapter = new NewsListCursorAdapter(getActivity(), null, this);
setListAdapter(lvAdapter);
getActivity().getSupportLoaderManager().destroyLoader(0);
@ -212,7 +212,7 @@ public class NewsReaderDetailFragment extends SherlockListFragment implements IO
RobotoCheckBox cb = getCheckBoxAtPosition(0, view);
if(lastViewedArticleCheckbox != cb) {
if(!stayUnreadCheckboxes.contains(lastViewedArticleCheckbox));
if(! (lastViewedArticleCheckbox.isChecked() && stayUnreadCheckboxes.contains(lastViewedArticleCheckbox)));
NewsListCursorAdapter.ChangeCheckBoxState(lastViewedArticleCheckbox, true, getActivity());
lastViewedArticleCheckbox = cb;
@ -269,7 +269,18 @@ public class NewsReaderDetailFragment extends SherlockListFragment implements IO
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
NewsListCursorAdapter nca = (NewsListCursorAdapter) getListAdapter();
if(nca != null)
// Block children layout for now
BlockingListView bView = ((BlockingListView) getListView());
bView.setBlockLayoutChildren(true);
if(nca == null) {
NewsListCursorAdapter lvAdapter = new NewsListCursorAdapter(getActivity(), null, NewsReaderDetailFragment.this);
setListAdapter(lvAdapter);
nca = lvAdapter;
}
nca.swapCursor(cursor);
if(cursor.getCount() <= 0) {
@ -288,6 +299,8 @@ public class NewsReaderDetailFragment extends SherlockListFragment implements IO
} catch(Exception ex) {
ex.printStackTrace();
}
bView.setBlockLayoutChildren(false);
//((NewsListCursorAdapter) getListAdapter()).changeCursor(cursor);
}

View file

@ -28,6 +28,9 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
import android.preference.PreferenceManager;
import android.support.v4.app.FragmentActivity;
@ -241,7 +244,9 @@ public class NewsReaderListActivity extends MenuUtilsSherlockFragmentActivity im
}
public boolean isSlidingPaneOpen() {
return mSlidingLayout.isOpen();
}
private NewsReaderDetailFragment StartDetailFragmentNow() {
NewsReaderDetailFragment nrdf = null;
@ -252,7 +257,6 @@ public class NewsReaderListActivity extends MenuUtilsSherlockFragmentActivity im
return nrdf;
}
public void updateAdapter() {
NewsReaderListFragment nlf = ((NewsReaderListFragment) getSupportFragmentManager().findFragmentById(R.id.left_drawer));
if(nlf != null)

View file

@ -437,6 +437,8 @@ public class NewsReaderListFragment extends SherlockFragment implements OnCreate
if(acc.type.equals(AccountGeneral.ACCOUNT_TYPE))
ContentResolver.requestSync(acc, AccountGeneral.ACCOUNT_TYPE, accBundle);
//http://stackoverflow.com/questions/5253858/why-does-contentresolver-requestsync-not-trigger-a-sync
} else {
UpdateSyncButtonLayout();
}
} catch (RemoteException e) {
e.printStackTrace();
@ -445,7 +447,7 @@ public class NewsReaderListFragment extends SherlockFragment implements OnCreate
//_Reader.attachToRunningTask(-10, getActivity(), onAsyncTask_GetVersionFinished);
}
UpdateSyncButtonLayout();
//UpdateSyncButtonLayout();
}
@ -580,37 +582,9 @@ public class NewsReaderListFragment extends SherlockFragment implements OnCreate
eListView.setChoiceMode(activateOnItemClick ? ListView.CHOICE_MODE_SINGLE : ListView.CHOICE_MODE_NONE);
}
/*
private void setActivatedPosition(int position) {
if (position == ListView.INVALID_POSITION) {
//getListView().setItemChecked(mActivatedPosition, false);
eListView.getRefreshableView().setSelection(mActivatedPosition);
} else {
eListView.getRefreshableView().setSelection(position);
//eListView.setItemChecked(position, true);
//getListView().setItemChecked(position, true);
}
mActivatedPosition = position;
}
*/
public void UpdateSyncButtonLayout()
{
if(getActivity() != null)
((NewsReaderListActivity) getActivity()).UpdateButtonSyncLayout();
}
/*
public void setUpdateFinishedListener(AsyncUpdateFinished listener)
{
asyncUpdateFinished = listener;
}
protected void fireUpdateFinishedClicked()
{
if(asyncUpdateFinished != null)
asyncUpdateFinished.FinishedUpdate();
}*/
}

View file

@ -183,12 +183,13 @@ public class NewsListCursorAdapter extends CursorAdapter {
public void ChangeReadStateOfItem(RobotoCheckBox checkBox, View parentView, boolean isChecked, Context context) {
dbConn.updateIsReadOfItem(checkBox.getTag().toString(), isChecked);
UpdateListCursor(mContext);
pDelayHandler.DelayTimer();
RobotoTextView textView = (RobotoTextView) parentView.findViewById(R.id.summary);
if(textView != null)
if(textView != null && parentView.getTop() >= 0)
{
FontHelper fHelper = new FontHelper(context);
if(isChecked)
@ -272,23 +273,15 @@ public class NewsListCursorAdapter extends CursorAdapter {
public static void ChangeCheckBoxState(RobotoCheckBox cb, boolean state, Context context)
{
if(cb != null)
{
if(cb.isChecked() != state)
{
if(cb != null && cb.isChecked() != state)
cb.setChecked(state);
UpdateListCursor(context);
}
}
}
public static void UpdateListCursor(Context context)
{
SherlockFragmentActivity sfa = (SherlockFragmentActivity) context;
//if tablet view is enabled --> update the listview
if(sfa instanceof NewsReaderListActivity)
if(sfa instanceof NewsReaderListActivity && ((NewsReaderListActivity) sfa).isSlidingPaneOpen())
((NewsReaderListActivity) sfa).updateAdapter();
}

View file

@ -22,8 +22,11 @@
package de.luhmer.owncloudnewsreader.reader;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Build;
import android.util.SparseArray;
import de.luhmer.owncloudnewsreader.async_tasks.FillTextForTextViewAsyncTask;
import de.luhmer.owncloudnewsreader.async_tasks.GetImageAsyncTask;
import de.luhmer.owncloudnewsreader.helper.BitmapDrawableLruCache;
import de.luhmer.owncloudnewsreader.helper.ImageDownloadFinished;
@ -46,6 +49,10 @@ public class DownloadItemsToCache {
URLs.append(key, URL_TO_IMAGE);
GetImageAsyncTask getImageAsync = new GetImageAsyncTask(URL_TO_IMAGE, imgDownloadFinished, key, ImageHandler.getPathImageCache(context), context, null);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
getImageAsync.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ((Void) null));// Execute in parallel
else
getImageAsync.execute((Void)null);
}

View file

@ -192,7 +192,7 @@ public class DownloadImagesService extends IntentService {
if (comp1.equals(comp2)){
passedMap.remove(key);
mapKeys.remove(key);
sortedMap.put((String)key, (Double)val);
sortedMap.put(key, val);
break;
}
}

View file

@ -12,7 +12,7 @@
android:visibility="gone"
android:textSize="18sp" />
<ListView
<de.luhmer.owncloudnewsreader.ListView.BlockingListView
android:id="@android:id/list"
style="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"

View file

@ -40,16 +40,11 @@ The app shows an empty Toast when trying to sync or sign-in (little dark box at
- Make sure you're using the latest version of the news app and the appframework from GitHub. Otherwise you can use the Android version <= 0.3.3 (via Google Play or GitHub <a href="https://github.com/owncloud/News-Android-App/commits/master/News-Android-App.apk">Choose version</a>).
Roadmap
==================================
My ToDo List is available on: http://www.strikeapp.com/#z6679l3t
How to compile the App
==================================
Requirements:
-----------------------
>1) Eclipse + ADT Plugin + Android SDK installed or Android Studio
>1) Android Studio
>2) Git installed (you can do the following stuff without git but I'm not going to show how).
Download and install:
@ -58,32 +53,30 @@ Download and install:
>2) Navigate to your workspace
>3) Then type in:
><pre>
git clone https://github.com/JakeWharton/ActionBarSherlock.git
git clone https://github.com/David-Development/Android-PullToRefresh.git
git clone https://github.com/owncloud/News-Android-App.git
git clone https://github.com/gabrielemariotti/changeloglib.git
git clone https://github.com/MichaelFlisar/MessageBar.git
></pre>
>Go to Eclipse and import the project like in the following example:
>--> File --> Import --> Android Project from Exsisting Source --> [...]/ActionBarSherlock/actionbarsherlock
... for all other Dependencies the same ...
>Open the Project and start coding!
>Then make a right click on the News-Android-App Project and select "Properties". Select the tab "Android". In this Window you should see the Project Build Target at the top and Libarys at the buttom of the window. Two of them are maybe marked with a read cross. So remove them and add the ActionBarSherlock and the Android PullToRefresh Libary
>If you get this error message:
>"Found 2 versions of android-support-v4.jar in the dependency list, but not all the versions are identical (check is based on SHA-1 only at this time)." try to copy the [...]/News-Android-App/libs/android-support-v4.jar file to [...]/ActionBarSherlock/actionbarsherlock/android-support-v4.jar
>That's all. I hope it works for you! If something is not working, please send me an email to david-dev@live.de
Updates
==================================
0.5.6 (in development)
0.5.7 (in development)
---------------------
0.5.6 (Google Play - Beta)
---------------------
- Fixed flickering of the screen when changing Feeds (in dark Theme)
- New Pull-To-Refresh Style
- Bug fix - <a href="https://github.com/owncloud/News-Android-App/issues/200">#200 Clicking article in widget makes app crash</a>
- Bug fix - <a href="https://github.com/owncloud/News-Android-App/issues/196">#196 Stutter with "mark as read while scrolling" turned on</a>
- Improvement - <a href="https://github.com/owncloud/News-Android-App/issues/189">#189 Read mouse-over</a>
0.5.5 (Google Play - Beta)
---------------------
- Improve Changelog View

View file

@ -5,7 +5,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.7.+'
classpath 'com.android.tools.build:gradle:0.8.+'
}
}

View file

@ -1,35 +0,0 @@
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
dependencies {
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 17
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
}

Binary file not shown.

View file

@ -1,6 +0,0 @@
#Wed Apr 10 15:27:10 PDT 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http\://services.gradle.org/distributions/gradle-1.9-all.zip

View file

View file

@ -1,16 +0,0 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
target=android-17
android.library.reference.1=../ActionBarSherlock/actionbarsherlock
android.library.reference.2=../Android-PullToRefresh/library

View file

@ -1,3 +1,2 @@
include ':News-Android-App'
include ':MessageBar'
include ':News-Android-App', ':MessageBar'
include ':Changeloglib:ChangeLogLibrary'