From 430e0dc798bea2a028196d2ddd9a917ab9f3d386 Mon Sep 17 00:00:00 2001 From: NudeDude Date: Fri, 29 Dec 2017 18:37:55 +0100 Subject: [PATCH] Base --- app/src/main/AndroidManifest.xml | 4 + .../twidda/DataBase/TweetDatabase.java | 10 +- .../twidda/Engine/ProfileInformation.java | 4 +- .../twidda/Engine/ProfileTweets.java | 4 +- .../twidda/Engine/TwitterEngine.java | 7 +- .../org/nuclearfog/twidda/MainActivity.java | 38 ++++--- .../twidda/ViewAdapter/TimelineAdapter.java | 18 +++- .../twidda/ViewAdapter/TrendsAdapter.java | 6 +- .../org/nuclearfog/twidda/Window/Profile.java | 10 +- .../org/nuclearfog/twidda/Window/Tweet.java | 44 +++++++++ app/src/main/res/drawable/favorite_icon.xml | 5 + app/src/main/res/drawable/hash.xml | 4 + app/src/main/res/drawable/ic_home.xml | 4 + app/src/main/res/drawable/mention.xml | 4 + app/src/main/res/drawable/mention_icon.xml | 5 + app/src/main/res/drawable/timeline_icon.xml | 6 ++ app/src/main/res/drawable/trends_icon.xml | 5 + app/src/main/res/layout/profile.xml | 5 +- app/src/main/res/layout/tweet_detail.xml | 98 +++++++++++++++++++ app/src/main/res/values-v21/styles.xml | 11 --- 20 files changed, 247 insertions(+), 45 deletions(-) create mode 100644 app/src/main/java/org/nuclearfog/twidda/Window/Tweet.java create mode 100644 app/src/main/res/drawable/favorite_icon.xml create mode 100644 app/src/main/res/drawable/hash.xml create mode 100644 app/src/main/res/drawable/ic_home.xml create mode 100644 app/src/main/res/drawable/mention.xml create mode 100644 app/src/main/res/drawable/mention_icon.xml create mode 100644 app/src/main/res/drawable/timeline_icon.xml create mode 100644 app/src/main/res/drawable/trends_icon.xml create mode 100644 app/src/main/res/layout/tweet_detail.xml delete mode 100644 app/src/main/res/values-v21/styles.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b6d67eea..75f90447 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -37,5 +37,9 @@ android:theme="@style/AppTheme" android:screenOrientation="portrait"> + \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/DataBase/TweetDatabase.java b/app/src/main/java/org/nuclearfog/twidda/DataBase/TweetDatabase.java index fc1d8db8..0fdcc41c 100644 --- a/app/src/main/java/org/nuclearfog/twidda/DataBase/TweetDatabase.java +++ b/app/src/main/java/org/nuclearfog/twidda/DataBase/TweetDatabase.java @@ -16,6 +16,7 @@ public class TweetDatabase { public static final int HOME_TL = 0; public static final int FAV_TL = 1; public static final int USER_TL = 2; + public static final int GET_TWEET = 3; private AppDatabase dataHelper; private List user,tweet,noRT,noFav,noAns,pbLink; @@ -34,7 +35,7 @@ public class TweetDatabase { * @param CurrentId current User ID * @see #HOME_TL#FAV_TL#USER_TL */ - public TweetDatabase(List stats, Context context, int mode,long CurrentId) { + public TweetDatabase(List stats, Context context, final int mode,long CurrentId) { this.stats=stats; this.CurrentId = CurrentId; this.mode=mode; @@ -49,9 +50,9 @@ public class TweetDatabase { * Read Data * @param context MainActivity Context * @param mode which type of data should be loaded - * @param CurrentId current User's ID + * @param CurrentId current ID (USER OR TWEET) */ - public TweetDatabase(Context context, int mode, long CurrentId) { + public TweetDatabase(Context context, final int mode, long CurrentId) { this.CurrentId=CurrentId; this.mode=mode; dataHelper = AppDatabase.getInstance(context); @@ -124,6 +125,9 @@ public class TweetDatabase { } else if(mode==USER_TL) { SQL_GET_HOME = "SELECT * FROM user INNER JOIN tweet ON user.userID = tweet.userID " + "WHERE user.userID = "+CurrentId+" ORDER BY tweet.time DESC"; + } else if(mode==GET_TWEET) { + SQL_GET_HOME = "SELECT * FROM user INNER JOIN tweet ON user.userID = tweet.userID " + + "WHERE tweet.tweetID = "+CurrentId+" ORDER BY tweet.time DESC"; } Cursor cursor = db.rawQuery(SQL_GET_HOME,null); diff --git a/app/src/main/java/org/nuclearfog/twidda/Engine/ProfileInformation.java b/app/src/main/java/org/nuclearfog/twidda/Engine/ProfileInformation.java index 2f4fff6a..d48c17fc 100644 --- a/app/src/main/java/org/nuclearfog/twidda/Engine/ProfileInformation.java +++ b/app/src/main/java/org/nuclearfog/twidda/Engine/ProfileInformation.java @@ -51,8 +51,8 @@ public class ProfileInformation extends AsyncTask Twitter twitter = mTwitter.getTwitter(); try { User user = twitter.showUser(args[0]); - screenName = user.getScreenName(); - username = "@"+ user.getName(); + screenName = '@'+ user.getScreenName(); + username = user.getName(); description = user.getDescription(); location = user.getLocation(); follower = "Follower: "+ user.getFollowersCount(); diff --git a/app/src/main/java/org/nuclearfog/twidda/Engine/ProfileTweets.java b/app/src/main/java/org/nuclearfog/twidda/Engine/ProfileTweets.java index f6deee69..626cd3f7 100644 --- a/app/src/main/java/org/nuclearfog/twidda/Engine/ProfileTweets.java +++ b/app/src/main/java/org/nuclearfog/twidda/Engine/ProfileTweets.java @@ -44,10 +44,10 @@ public class ProfileTweets extends AsyncTask { Twitter twitter = twitterStore.getTwitter(); if(id[1] == 0) { TweetDatabase hTweets = new TweetDatabase(twitter.getUserTimeline(userId), context,TweetDatabase.USER_TL,userId); - homeTl = new TimelineAdapter(context,R.layout.tweet,hTweets); + homeTl = new TimelineAdapter(context,hTweets); } else if(id[1] == 1) { TweetDatabase fTweets = new TweetDatabase(twitter.getFavorites(userId), context,TweetDatabase.FAV_TL,userId); - homeFav = new TimelineAdapter(context,R.layout.tweet,fTweets); + homeFav = new TimelineAdapter(context,fTweets); } } catch(Exception err){err.printStackTrace();} return null; diff --git a/app/src/main/java/org/nuclearfog/twidda/Engine/TwitterEngine.java b/app/src/main/java/org/nuclearfog/twidda/Engine/TwitterEngine.java index 1a328231..2b3e2e27 100644 --- a/app/src/main/java/org/nuclearfog/twidda/Engine/TwitterEngine.java +++ b/app/src/main/java/org/nuclearfog/twidda/Engine/TwitterEngine.java @@ -57,16 +57,17 @@ public class TwitterEngine extends AsyncTask try { if(args[0]==0) { TweetDatabase mTweets = new TweetDatabase(twitter.getHomeTimeline(), context,TweetDatabase.HOME_TL,0); - timelineAdapter = new TimelineAdapter(context,R.layout.tweet,mTweets); + timelineAdapter = new TimelineAdapter(context,mTweets); } else if(args[0]==1) { TrendDatabase trend = new TrendDatabase(twitter.getPlaceTrends(23424829),context); //Germany by default - trendsAdapter = new TrendsAdapter(context,R.layout.trend,trend); + trendsAdapter = new TrendsAdapter(context,trend); } else if(args[0]==2) { //TODO + // twitter.getMentionsTimeline() } } catch (TwitterException e) { - Toast.makeText(context, ERR_MSG, Toast.LENGTH_SHORT).show(); + Toast.makeText(context, ERR_MSG, Toast.LENGTH_LONG).show(); } catch (Exception e){ e.printStackTrace(); } return null; } diff --git a/app/src/main/java/org/nuclearfog/twidda/MainActivity.java b/app/src/main/java/org/nuclearfog/twidda/MainActivity.java index fe9e5e3e..6018ff0f 100644 --- a/app/src/main/java/org/nuclearfog/twidda/MainActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/MainActivity.java @@ -9,9 +9,14 @@ import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.animation.Animation; +import android.view.animation.AnimationSet; +import android.view.animation.TranslateAnimation; import android.widget.AdapterView; +import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; +import android.widget.FrameLayout; import android.widget.ListView; import android.widget.TabHost; import android.widget.TabHost.TabSpec; @@ -26,6 +31,7 @@ import org.nuclearfog.twidda.ViewAdapter.TimelineAdapter; import org.nuclearfog.twidda.ViewAdapter.TrendsAdapter; import org.nuclearfog.twidda.Window.Profile; import org.nuclearfog.twidda.Window.Settings; +import org.nuclearfog.twidda.Window.Tweet; import org.nuclearfog.twidda.Window.TweetWindow; public class MainActivity extends AppCompatActivity @@ -33,6 +39,8 @@ public class MainActivity extends AppCompatActivity private SwipeRefreshLayout timelineReload,trendReload,mentionReload; private ListView timelineList, trendList,mentionList; private SharedPreferences settings; + private TweetDatabase tweetDeck; + private TrendDatabase trendDeck; private EditText pin; private Context con; private Toolbar toolbar; @@ -152,17 +160,17 @@ public class MainActivity extends AppCompatActivity // Tab #1 TabSpec tab1 = tabhost.newTabSpec("timeline"); tab1.setContent(R.id.timeline); - tab1.setIndicator("Timeline"); + tab1.setIndicator("",getResources().getDrawable(R.drawable.timeline_icon)); tabhost.addTab(tab1); // Tab #2 TabSpec tab2 = tabhost.newTabSpec("trends"); tab2.setContent(R.id.trends); - tab2.setIndicator("Trend"); + tab2.setIndicator("",getResources().getDrawable(R.drawable.trends_icon)); tabhost.addTab(tab2); // Tab #3 TabSpec tab3 = tabhost.newTabSpec("mention"); tab3.setContent(R.id.mention); - tab3.setIndicator("Mention"); + tab3.setIndicator("",getResources().getDrawable(R.drawable.mention_icon)); tabhost.addTab(tab3); tabhost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { @Override @@ -180,11 +188,11 @@ public class MainActivity extends AppCompatActivity * separate THREAD */ private void setTabContent() { - TweetDatabase tweetDeck = new TweetDatabase(con,TweetDatabase.HOME_TL, 0L); - TimelineAdapter tlAdapt = new TimelineAdapter(con,R.layout.tweet,tweetDeck); + tweetDeck = new TweetDatabase(con,TweetDatabase.HOME_TL, 0L); + trendDeck = new TrendDatabase(con); + TimelineAdapter tlAdapt = new TimelineAdapter(con,tweetDeck); + TrendsAdapter trendAdp = new TrendsAdapter(con,trendDeck); timelineList.setAdapter(tlAdapt); - TrendDatabase trendDeck = new TrendDatabase(con); - TrendsAdapter trendAdp = new TrendsAdapter(con,R.layout.trend,trendDeck); trendList.setAdapter(trendAdp); } @@ -216,23 +224,30 @@ public class MainActivity extends AppCompatActivity } private void setListViewListener() { - timelineList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - System.out.println("id: "+id+"\nPos: "+position); + if(!timelineReload.isRefreshing()) { + int index = timelineList.getPositionForView(view); + long tweetID = tweetDeck.getTweetId(index); + Intent intent = new Intent(con, Tweet.class); + Bundle bundle = new Bundle(); + bundle.putLong("tweetID",tweetID); + intent.putExtras(bundle); + startActivity(intent); + } } }); trendList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - System.out.println("Trend klick: "+position); //TODO + System.out.println("1 klick: "+position); //TODO } }); mentionList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - System.out.println("Mention klick"); //TODO + System.out.println("2 klick"+position); //TODO } }); } @@ -260,4 +275,5 @@ public class MainActivity extends AppCompatActivity break; } } + } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/ViewAdapter/TimelineAdapter.java b/app/src/main/java/org/nuclearfog/twidda/ViewAdapter/TimelineAdapter.java index faf5dc7d..56d4678a 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ViewAdapter/TimelineAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/ViewAdapter/TimelineAdapter.java @@ -17,9 +17,10 @@ import org.nuclearfog.twidda.DataBase.TweetDatabase; public class TimelineAdapter extends ArrayAdapter { private TweetDatabase mTweets; private Context context; + private ViewGroup p; - public TimelineAdapter(Context context, int layout, TweetDatabase mTweets) { - super(context, layout); + public TimelineAdapter(Context context, TweetDatabase mTweets) { + super(context, R.layout.tweet); this.mTweets = mTweets; this.context = context; } @@ -31,6 +32,7 @@ public class TimelineAdapter extends ArrayAdapter { @Override public View getView(int position, View v, ViewGroup parent) { + p = parent; if(v == null) { LayoutInflater inf=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = inf.inflate(R.layout.tweet, parent,false); @@ -41,12 +43,20 @@ public class TimelineAdapter extends ArrayAdapter { ((TextView) v.findViewById(R.id.retweet_number)).setText(mTweets.getRetweet(position)); ((TextView) v.findViewById(R.id.favorite_number)).setText(mTweets.getFavorite(position)); ((TextView) v.findViewById(R.id.time)).setText(mTweets.getDate(position)); - /* ImageView imgView = v.findViewById(R.id.tweetPb); + ImageView imgView = v.findViewById(R.id.tweetPb); + + v.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ((ListView)p).performItemClick(v,0,0); + } + }); if(mTweets.loadImages()) { ImageDownloader imgDl = new ImageDownloader(imgView); imgDl.execute(mTweets.getPbImg(position)); - }*/ + } + return v; } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/ViewAdapter/TrendsAdapter.java b/app/src/main/java/org/nuclearfog/twidda/ViewAdapter/TrendsAdapter.java index c3eb92e3..75465179 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ViewAdapter/TrendsAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/ViewAdapter/TrendsAdapter.java @@ -14,8 +14,8 @@ public class TrendsAdapter extends ArrayAdapter { private TrendDatabase trend; private Context context; - public TrendsAdapter(Context context, int layout, TrendDatabase trend) { - super(context, layout); + public TrendsAdapter(Context context, TrendDatabase trend) { + super(context, R.layout.trend);//test this.trend = trend; this.context = context; } @@ -35,4 +35,4 @@ public class TrendsAdapter extends ArrayAdapter { ((TextView) v.findViewById(R.id.trendname)).setText(trendName); return v; } -} +} \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/Window/Profile.java b/app/src/main/java/org/nuclearfog/twidda/Window/Profile.java index f9e449e1..93ca584f 100644 --- a/app/src/main/java/org/nuclearfog/twidda/Window/Profile.java +++ b/app/src/main/java/org/nuclearfog/twidda/Window/Profile.java @@ -73,11 +73,13 @@ public class Profile extends AppCompatActivity { mTab.setup(); // Tab #1 TabHost.TabSpec tab1 = mTab.newTabSpec("tweets"); - tab1.setIndicator("Tweets").setContent(R.id.hometweets); + tab1.setContent(R.id.hometweets); + tab1.setIndicator("",getResources().getDrawable(R.drawable.timeline_icon)); mTab.addTab(tab1); // Tab #2 TabHost.TabSpec tab2 = mTab.newTabSpec("favorites"); - tab2.setIndicator("Favorits").setContent(R.id.homefavorits); + tab2.setContent(R.id.homefavorits); + tab2.setIndicator("",getResources().getDrawable(R.drawable.favorite_icon)); mTab.addTab(tab2); // Listener mTab.setOnTabChangedListener(new TabHost.OnTabChangeListener() { @@ -114,10 +116,10 @@ public class Profile extends AppCompatActivity { @Override public void run(){ TweetDatabase mTweet = new TweetDatabase(Profile.this, TweetDatabase.USER_TL, userId); - TimelineAdapter tl = new TimelineAdapter(Profile.this,R.layout.tweet,mTweet); + TimelineAdapter tl = new TimelineAdapter(Profile.this,mTweet); homeTweets.setAdapter(tl); TweetDatabase fTweet = new TweetDatabase(Profile.this, TweetDatabase.FAV_TL, userId); - TimelineAdapter fl = new TimelineAdapter(Profile.this,R.layout.tweet,fTweet); + TimelineAdapter fl = new TimelineAdapter(Profile.this,fTweet); homeFavorits.setAdapter(fl); } }.run(); diff --git a/app/src/main/java/org/nuclearfog/twidda/Window/Tweet.java b/app/src/main/java/org/nuclearfog/twidda/Window/Tweet.java new file mode 100644 index 00000000..52b1f1e4 --- /dev/null +++ b/app/src/main/java/org/nuclearfog/twidda/Window/Tweet.java @@ -0,0 +1,44 @@ +package org.nuclearfog.twidda.Window; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.widget.ImageView; +import android.widget.TextView; + +import org.nuclearfog.twidda.DataBase.TweetDatabase; +import org.nuclearfog.twidda.R; + +public class Tweet extends AppCompatActivity { + + private TweetDatabase mTweet; + private TextView tweet, username; + + + private long tweetID; + + @Override + protected void onCreate(Bundle b){ + super.onCreate(b); + setContentView(R.layout.tweet_detail); + + tweet = (TextView) findViewById(R.id.tweetdetail); + username = (TextView) findViewById(R.id.usernamedetail); + + ImageView pb = (ImageView) findViewById(R.id.profileimage_detail); + + + + tweetID = getIntent().getExtras().getLong("tweetID"); + + setContent(); + + } + + + + private void setContent() { + mTweet = new TweetDatabase(getApplicationContext(),TweetDatabase.GET_TWEET,tweetID); + tweet.setText(mTweet.getTweet(0)); + username.setText(mTweet.getUsername(0)); + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/favorite_icon.xml b/app/src/main/res/drawable/favorite_icon.xml new file mode 100644 index 00000000..629795e7 --- /dev/null +++ b/app/src/main/res/drawable/favorite_icon.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/hash.xml b/app/src/main/res/drawable/hash.xml new file mode 100644 index 00000000..9d7d3461 --- /dev/null +++ b/app/src/main/res/drawable/hash.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 00000000..ed57c3c2 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/drawable/mention.xml b/app/src/main/res/drawable/mention.xml new file mode 100644 index 00000000..04df889a --- /dev/null +++ b/app/src/main/res/drawable/mention.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/drawable/mention_icon.xml b/app/src/main/res/drawable/mention_icon.xml new file mode 100644 index 00000000..e0290e92 --- /dev/null +++ b/app/src/main/res/drawable/mention_icon.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/timeline_icon.xml b/app/src/main/res/drawable/timeline_icon.xml new file mode 100644 index 00000000..52e1f7c1 --- /dev/null +++ b/app/src/main/res/drawable/timeline_icon.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/trends_icon.xml b/app/src/main/res/drawable/trends_icon.xml new file mode 100644 index 00000000..fb98f69e --- /dev/null +++ b/app/src/main/res/drawable/trends_icon.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/profile.xml b/app/src/main/res/layout/profile.xml index 5804f977..07da83e0 100644 --- a/app/src/main/res/layout/profile.xml +++ b/app/src/main/res/layout/profile.xml @@ -46,16 +46,17 @@ android:orientation="horizontal"> + + + + + + + + + + + + + + + + + + + +