Merge pull request #123 from sschueller/develop

Release 1.0.26
This commit is contained in:
Stefan Schüller 2019-01-27 17:12:09 +01:00 committed by GitHub
commit a13d0801ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 199 additions and 59 deletions

View File

@ -1,3 +1,13 @@
### Version 1.0.26 Tag: v1.0.26 (2019-01-27)
* Larger fullscreen button target
* Fixed duration colors
* Avatar click to owner page
* Added avatar to account view
* Moved account to top menu
* Added overview placeholder
* Fixed download button wrapping
* Added fade to player controls
### Version 1.0.25 Tag: v1.0.25 (2019-01-20)
* Account overview page and videos list
* Turkish (tr) Translation added (@oktay454)

View File

@ -2,6 +2,11 @@
Android PeerTube Client
</h1>
<p align="center">
[![Latest release](https://img.shields.io/github/release/sschueller/peertube-android.svg)](https://github.com/sschueller/peertube-android/releases/latest)
[![F-Droid](https://img.shields.io/f-droid/v/net.schueller.peertube.svg)](https://f-droid.org/de/packages/net.schueller.peertube/)
</p>
<h4 align="center">
</h4>

View File

@ -6,8 +6,8 @@ android {
applicationId "net.schueller.peertube"
minSdkVersion 21
targetSdkVersion 28
versionCode 1025
versionName "1.0.25"
versionCode 1026
versionName "1.0.26"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
ext {
libVersions = [

View File

@ -23,6 +23,7 @@ import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
@ -30,6 +31,7 @@ import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.bottomnavigation.LabelVisibilityMode;
import com.mikepenz.fontawesome_typeface_library.FontAwesome;
import com.mikepenz.iconics.IconicsDrawable;
import com.squareup.picasso.Picasso;
import net.schueller.peertube.R;
import net.schueller.peertube.adapter.ChannelAdapter;
@ -37,6 +39,7 @@ import net.schueller.peertube.adapter.VideoAdapter;
import net.schueller.peertube.helper.APIUrlHelper;
import net.schueller.peertube.helper.MetaDataHelper;
import net.schueller.peertube.model.Account;
import net.schueller.peertube.model.Avatar;
import net.schueller.peertube.model.ChannelList;
import net.schueller.peertube.model.VideoList;
import net.schueller.peertube.network.GetUserService;
@ -191,6 +194,17 @@ public class AccountActivity extends CommonActivity {
joined.setText(account.getCreatedAt().toString());
ImageView accountAvatar = findViewById(R.id.account_avatar);
// set Avatar
Avatar avatar = account.getAvatar();
if (avatar != null) {
String avatarPath = avatar.getPath();
Picasso.with(AccountActivity.this)
.load(APIUrlHelper.getUrl(AccountActivity.this) + avatarPath)
.into(accountAvatar);
}
} else {
Toast.makeText(AccountActivity.this, getString(R.string.api_error), Toast.LENGTH_SHORT).show();
}

View File

@ -26,18 +26,22 @@ import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.preference.PreferenceManager;
import android.provider.SearchRecentSuggestions;
import androidx.annotation.NonNull;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.bottomnavigation.LabelVisibilityMode;
import androidx.core.app.ActivityCompat;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.os.Bundle;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.SearchView;
import androidx.appcompat.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
@ -45,8 +49,10 @@ import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.mikepenz.fontawesome_typeface_library.FontAwesome;
import com.mikepenz.iconics.IconicsDrawable;
import net.schueller.peertube.R;
import net.schueller.peertube.adapter.VideoAdapter;
import net.schueller.peertube.helper.APIUrlHelper;
@ -119,6 +125,9 @@ public class VideoListActivity extends CommonActivity {
menu.findItem(R.id.action_settings).setIcon(
new IconicsDrawable(this, FontAwesome.Icon.faw_cog).actionBar());
menu.findItem(R.id.action_account).setIcon(
new IconicsDrawable(this, FontAwesome.Icon.faw_user_circle).actionBar());
MenuItem searchMenuItem = menu.findItem(R.id.action_search);
searchMenuItem.setIcon(
@ -178,10 +187,19 @@ public class VideoListActivity extends CommonActivity {
return false;
case R.id.action_settings:
// Toast.makeText(this, "Login Selected", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, SettingsActivity.class);
this.startActivity(intent);
Intent intentSettings = new Intent(this, SettingsActivity.class);
this.startActivity(intentSettings);
return true;
case R.id.action_account:
if (!Session.getInstance().isLoggedIn()) {
Intent intentLogin = new Intent(this, LoginActivity.class);
this.startActivity(intentLogin);
} else {
Intent intentMe = new Intent(this, MeActivity.class);
this.startActivity(intentMe);
}
return false;
default:
break;
}
@ -350,23 +368,24 @@ public class VideoListActivity extends CommonActivity {
// Add Icon font
Menu navMenu = navigation.getMenu();
navMenu.findItem(R.id.navigation_home).setIcon(
new IconicsDrawable(this, FontAwesome.Icon.faw_home));
navMenu.findItem(R.id.navigation_overview).setIcon(
new IconicsDrawable(this, FontAwesome.Icon.faw_globe));
navMenu.findItem(R.id.navigation_trending).setIcon(
new IconicsDrawable(this, FontAwesome.Icon.faw_fire));
navMenu.findItem(R.id.navigation_recent).setIcon(
new IconicsDrawable(this, FontAwesome.Icon.faw_plus_circle));
navMenu.findItem(R.id.navigation_local).setIcon(
new IconicsDrawable(this, FontAwesome.Icon.faw_home));
navMenu.findItem(R.id.navigation_subscriptions).setIcon(
new IconicsDrawable(this, FontAwesome.Icon.faw_folder));
navMenu.findItem(R.id.navigation_account).setIcon(
new IconicsDrawable(this, FontAwesome.Icon.faw_user_circle));
// navMenu.findItem(R.id.navigation_account).setIcon(
// new IconicsDrawable(this, FontAwesome.Icon.faw_user_circle));
// Click Listener
navigation.setOnNavigationItemSelectedListener(menuItem -> {
switch (menuItem.getItemId()) {
case R.id.navigation_home:
//Log.v(TAG, "navigation_home");
case R.id.navigation_overview:
// TODO
if (!isLoading) {
sort = "-createdAt";
currentStart = 0;
@ -387,6 +406,16 @@ public class VideoListActivity extends CommonActivity {
loadVideos(currentStart, count, sort, filter);
}
return true;
case R.id.navigation_recent:
if (!isLoading) {
sort = "-createdAt";
currentStart = 0;
filter = null;
subscriptions = false;
loadVideos(currentStart, count, sort, filter);
}
return true;
case R.id.navigation_local:
//Log.v(TAG, "navigation_trending");
@ -420,23 +449,63 @@ public class VideoListActivity extends CommonActivity {
}
case R.id.navigation_account:
//Log.v(TAG, "navigation_account");
//Toast.makeText(VideoListActivity.this, "Account Not Implemented", Toast.LENGTH_SHORT).show();
if (!Session.getInstance().isLoggedIn()) {
Intent intent = new Intent(this, LoginActivity.class);
this.startActivity(intent);
} else {
Intent intent = new Intent(this, MeActivity.class);
this.startActivity(intent);
}
return false;
// case R.id.navigation_account:
// //Log.v(TAG, "navigation_account");
// //Toast.makeText(VideoListActivity.this, "Account Not Implemented", Toast.LENGTH_SHORT).show();
//
// if (!Session.getInstance().isLoggedIn()) {
// Intent intent = new Intent(this, LoginActivity.class);
// this.startActivity(intent);
// } else {
// Intent intent = new Intent(this, MeActivity.class);
// this.startActivity(intent);
// }
//
// return false;
}
return false;
});
// TODO: on double click jump to top and reload
// navigation.setOnNavigationItemReselectedListener(menuItemReselected -> {
// switch (menuItemReselected.getItemId()) {
// case R.id.navigation_home:
// if (!isLoading) {
// sort = "-createdAt";
// currentStart = 0;
// filter = null;
// subscriptions = false;
// loadVideos(currentStart, count, sort, filter);
// }
// case R.id.navigation_trending:
// if (!isLoading) {
// sort = "-trending";
// currentStart = 0;
// filter = null;
// subscriptions = false;
// loadVideos(currentStart, count, sort, filter);
// }
// case R.id.navigation_local:
// if (!isLoading) {
// sort = "-publishedAt";
// filter = "local";
// currentStart = 0;
// subscriptions = false;
// loadVideos(currentStart, count, sort, filter);
// }
// case R.id.navigation_subscriptions:
// if (Session.getInstance().isLoggedIn()) {
// if (!isLoading) {
// sort = "-publishedAt";
// filter = null;
// currentStart = 0;
// subscriptions = true;
// loadVideos(currentStart, count, sort, filter);
// }
// }
// }
// });
}
}

View File

@ -107,13 +107,20 @@ public class VideoAdapter extends RecyclerView.Adapter<VideoAdapter.VideoViewHol
);
holder.videoOwner.setText(displayNameAndHost);
// video owner click
holder.videoOwner.setOnClickListener(v -> {
Intent intent = new Intent(context, AccountActivity.class);
intent.putExtra(EXTRA_ACCOUNTDISPLAYNAME, displayNameAndHost);
context.startActivity(intent);
});
// avatar click
holder.avatar.setOnClickListener(v -> {
Intent intent = new Intent(context, AccountActivity.class);
intent.putExtra(EXTRA_ACCOUNTDISPLAYNAME, displayNameAndHost);
context.startActivity(intent);
});
holder.mView.setOnClickListener(v -> {
// Log.v("VideoAdapter", "click: " + videoList.get(position).getName());

View File

@ -138,9 +138,11 @@ public class VideoPlayerFragment extends Fragment implements VideoRendererEventL
torrentStatus = activity.findViewById(R.id.exo_torrent_status);
// Full screen Icon
TextView fullscreenButton = activity.findViewById(R.id.exo_fullscreen);
fullscreenButton.setText(R.string.video_expand_icon);
new Iconics.IconicsBuilder().ctx(context).on(fullscreenButton).build();
TextView fullscreenText = activity.findViewById(R.id.exo_fullscreen);
FrameLayout fullscreenButton = activity.findViewById(R.id.exo_fullscreen_button);
fullscreenText.setText(R.string.video_expand_icon);
new Iconics.IconicsBuilder().ctx(context).on(fullscreenText).build();
fullscreenButton.setOnClickListener(view -> {
Log.d(TAG, "Fullscreen");

View File

@ -45,6 +45,15 @@
android:layout_marginEnd="12dp"
android:orientation="vertical">
<de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/account_avatar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
android:paddingStart="12dp"
android:paddingTop="12dp"
android:paddingEnd="12dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@ -75,7 +75,7 @@
android:orientation="horizontal">
<LinearLayout
android:layout_width="54dp"
android:layout_width="65dp"
android:layout_height="wrap_content"
android:orientation="vertical">
@ -102,7 +102,7 @@
android:layout_weight="1" />
<LinearLayout
android:layout_width="54dp"
android:layout_width="65dp"
android:layout_height="wrap_content"
android:orientation="vertical">
@ -129,7 +129,7 @@
android:layout_weight="1" />
<LinearLayout
android:layout_width="54dp"
android:layout_width="65dp"
android:layout_height="wrap_content"
android:orientation="vertical">
@ -157,7 +157,7 @@
android:layout_weight="1" />
<LinearLayout
android:layout_width="54dp"
android:layout_width="65dp"
android:layout_height="wrap_content"
android:orientation="vertical">

View File

@ -6,6 +6,7 @@
android:layout_height="match_parent">
<com.google.android.exoplayer2.ui.PlayerView
android:animateLayoutChanges="true"
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"

View File

@ -5,14 +5,19 @@
android:layout_height="wrap_content"
card_view:cardCornerRadius="0dp"
card_view:cardElevation="0dp"
card_view:cardUseCompatPadding="true">
card_view:contentPadding="0dp"
card_view:cardPreventCornerOverlap="false"
card_view:cardUseCompatPadding="false">
<RelativeLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="12dp">
android:paddingTop="0dp"
android:paddingRight="0dp"
android:paddingLeft="0dp"
android:paddingBottom="8dp">
<ImageView
@ -25,6 +30,7 @@
android:scaleType="fitXY" />
<TextView
android:textSize="12sp"
android:paddingStart="4dp"
android:paddingEnd="4dp"
android:layout_margin="2dp"
@ -35,7 +41,8 @@
android:id="@+id/video_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#000000"/>
android:textColor="#ffffff"
android:background="#232323"/>
<de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/avatar"

View File

@ -31,17 +31,18 @@
<View
<Space
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1" />
android:layout_weight="1"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:paddingTop="4dp">
android:paddingTop="8dp">
<ImageButton
android:id="@id/exo_rew"
@ -65,11 +66,12 @@
</LinearLayout>
<View
<Space
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1" />
android:layout_weight="1"
/>
<LinearLayout
android:layout_width="match_parent"
@ -109,8 +111,8 @@
<FrameLayout
android:id="@+id/exo_fullscreen_button"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="end">
<TextView
@ -130,7 +132,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginTop="-12dp"
android:gravity="bottom"
android:orientation="horizontal">

View File

@ -3,8 +3,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/navigation_home"
android:title="@string/bottom_nav_title_home"
android:id="@+id/navigation_overview"
android:title="@string/bottom_nav_title_overview"
app:showAsAction="always|withText" />
<item
@ -12,6 +12,11 @@
android:title="@string/bottom_nav_title_trending"
app:showAsAction="always|withText"/>
<item
android:id="@+id/navigation_recent"
android:title="@string/bottom_nav_title_recent"
app:showAsAction="ifRoom|withText" />
<item
android:id="@+id/navigation_local"
android:title="@string/bottom_nav_title_local"
@ -22,9 +27,9 @@
android:title="@string/bottom_nav_title_subscriptions"
app:showAsAction="ifRoom|withText"/>
<item
android:id="@+id/navigation_account"
android:title="@string/bottom_nav_title_account"
app:showAsAction="ifRoom|withText"/>
<!--<item-->
<!--android:id="@+id/navigation_account"-->
<!--android:title="@string/bottom_nav_title_account"-->
<!--app:showAsAction="ifRoom|withText"/>-->
</menu>

View File

@ -19,4 +19,11 @@
android:textAppearance="@style/Base.TextAppearance.AppCompat.Caption"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_account"
android:orderInCategory="300"
android:title="@string/action_bar_title_account"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Caption"
app:showAsAction="ifRoom" />
</menu>

View File

@ -22,7 +22,7 @@
<string name="action_bar_title_settings">الإعدادات</string>
<!-- Bottom navigation bar -->
<string name="bottom_nav_title_home">الرئيسية</string>
<string name="bottom_nav_title_overview">الرئيسية</string>
<string name="bottom_nav_title_trending">المتصدرة</string>
<string name="bottom_nav_title_subscriptions">الإشتراكات</string>
<string name="bottom_nav_title_account">الحساب</string>

View File

@ -25,7 +25,7 @@
<string name="action_bar_title_logout">" লগআউট"</string>
<!-- Bottom navigation bar -->
<string name="bottom_nav_title_home">হোম</string>
<string name="bottom_nav_title_overview">হোম</string>
<string name="bottom_nav_title_trending">"Trending"</string>
<string name="bottom_nav_title_subscriptions">Subscriptions</string>
<string name="bottom_nav_title_account">একাউন্ট</string>

View File

@ -23,7 +23,7 @@
<string name="action_bar_title_settings">Paramètres</string>
<!-- Bottom navigation bar -->
<string name="bottom_nav_title_home">Accueil</string>
<string name="bottom_nav_title_overview">Accueil</string>
<string name="bottom_nav_title_trending">Tendances</string>
<string name="bottom_nav_title_subscriptions">Abonnements</string>
<string name="bottom_nav_title_account">Compte</string>

View File

@ -21,7 +21,7 @@
<string name="action_bar_title_logout">Выйти</string>
<!-- Bottom navigation bar -->
<string name="bottom_nav_title_home">Домашняя</string>
<string name="bottom_nav_title_overview">Домашняя</string>
<string name="bottom_nav_title_trending">Популярные</string>
<string name="bottom_nav_title_subscriptions">Подписки</string>
<string name="bottom_nav_title_account">Аккаунт</string>

View File

@ -24,7 +24,7 @@
<string name="action_bar_title_logout">Çıkış yap</string>
<!-- Bottom navigation bar -->
<string name="bottom_nav_title_home">Ev</string>
<string name="bottom_nav_title_overview">Ev</string>
<string name="bottom_nav_title_trending">Eğilimler</string>
<string name="bottom_nav_title_subscriptions">Abonelikler</string>
<string name="bottom_nav_title_account">Hesap</string>

View File

@ -6,7 +6,7 @@
<string name="prompt_server">服务</string>
<string name="title_activity_settings">设置</string>
<string name="action_bar_title_search">搜索</string>
<string name="bottom_nav_title_home">主页</string>
<string name="bottom_nav_title_overview">主页</string>
<string name="bottom_nav_title_trending">趋势</string>
<string name="bottom_nav_title_subscriptions">订阅</string>
<string name="bottom_nav_title_account">帐号</string>

View File

@ -23,11 +23,15 @@
<string name="action_bar_title_search">Search</string>
<string name="action_bar_title_settings">Settings</string>
<string name="action_bar_title_logout">Logout</string>
<string name="action_bar_title_account">Account</string>
<!-- Bottom navigation bar -->
<string name="bottom_nav_title_home">Home</string>
<string name="bottom_nav_title_overview">Overview</string>
<string name="bottom_nav_title_trending">Trending</string>
<string name="bottom_nav_title_recent">Recent</string>
<string name="bottom_nav_title_local">Local</string>
<string name="bottom_nav_title_subscriptions">Subscriptions</string>
<string name="bottom_nav_title_account">Account</string>
<!-- Strings related to Settings -->
@ -300,7 +304,6 @@
<string name="pref_title_background_play">Background Playback</string>
<string name="pref_description_background_play">If enabled, continues to play video in background.</string>
<string name="bottom_nav_title_local">Local</string>
<string name="title_activity_account">Account</string>
<string name="menu_video_more_report">Report</string>
@ -342,5 +345,4 @@
<string name="video_rating_like" translatable="false">like</string>
<string name="video_rating_dislike" translatable="false">dislike</string>
</resources>