misc
This commit is contained in:
parent
81fec069df
commit
9eff57238f
22
README.md
Normal file
22
README.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<h1 align="center">
|
||||||
|
PeerTube for Android
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<h4 align="center">
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- [X] Recent Videos
|
||||||
|
- [X] Trending Videos
|
||||||
|
- [X] Endless scrolling
|
||||||
|
- [X] Pull to refresh
|
||||||
|
- [ ] Login
|
||||||
|
- [ ] Pick Server
|
||||||
|
- [ ] Video Playback via WebRTC
|
||||||
|
- [ ] Comment video
|
||||||
|
- [ ] Like/dislike video
|
||||||
|
- [ ] Lots more missing at this point...
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -41,11 +41,6 @@ import static android.Manifest.permission.READ_CONTACTS;
|
|||||||
*/
|
*/
|
||||||
public class LoginActivity extends AppCompatActivity implements LoaderCallbacks<Cursor> {
|
public class LoginActivity extends AppCompatActivity implements LoaderCallbacks<Cursor> {
|
||||||
|
|
||||||
/**
|
|
||||||
* Id to identity READ_CONTACTS permission request.
|
|
||||||
*/
|
|
||||||
private static final int REQUEST_READ_CONTACTS = 0;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A dummy authentication store containing known user names and passwords.
|
* A dummy authentication store containing known user names and passwords.
|
||||||
* TODO: remove after connecting to a real authentication system.
|
* TODO: remove after connecting to a real authentication system.
|
||||||
@ -70,7 +65,6 @@ public class LoginActivity extends AppCompatActivity implements LoaderCallbacks<
|
|||||||
setContentView(R.layout.activity_login);
|
setContentView(R.layout.activity_login);
|
||||||
// Set up the login form.
|
// Set up the login form.
|
||||||
mEmailView = (AutoCompleteTextView) findViewById(R.id.email);
|
mEmailView = (AutoCompleteTextView) findViewById(R.id.email);
|
||||||
populateAutoComplete();
|
|
||||||
|
|
||||||
mPasswordView = (EditText) findViewById(R.id.password);
|
mPasswordView = (EditText) findViewById(R.id.password);
|
||||||
mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
||||||
@ -96,49 +90,6 @@ public class LoginActivity extends AppCompatActivity implements LoaderCallbacks<
|
|||||||
mProgressView = findViewById(R.id.login_progress);
|
mProgressView = findViewById(R.id.login_progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void populateAutoComplete() {
|
|
||||||
if (!mayRequestContacts()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
getLoaderManager().initLoader(0, null, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean mayRequestContacts() {
|
|
||||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (checkSelfPermission(READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (shouldShowRequestPermissionRationale(READ_CONTACTS)) {
|
|
||||||
Snackbar.make(mEmailView, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE)
|
|
||||||
.setAction(android.R.string.ok, new View.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
@TargetApi(Build.VERSION_CODES.M)
|
|
||||||
public void onClick(View v) {
|
|
||||||
requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Callback received when a permissions request has been completed.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
|
|
||||||
@NonNull int[] grantResults) {
|
|
||||||
if (requestCode == REQUEST_READ_CONTACTS) {
|
|
||||||
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
|
||||||
populateAutoComplete();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempts to sign in or register the account specified by the login form.
|
* Attempts to sign in or register the account specified by the login form.
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package net.schueller.peertube.activity;
|
package net.schueller.peertube.activity;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.design.widget.BottomNavigationView;
|
import android.support.design.widget.BottomNavigationView;
|
||||||
import android.support.v4.widget.SwipeRefreshLayout;
|
import android.support.v4.widget.SwipeRefreshLayout;
|
||||||
@ -124,7 +126,7 @@ public class VideoListActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
// Set an icon in the ActionBar
|
// Set an icon in the ActionBar
|
||||||
menu.findItem(R.id.action_user).setIcon(
|
menu.findItem(R.id.action_user).setIcon(
|
||||||
new IconDrawable(this, FontAwesomeIcons.fa_user)
|
new IconDrawable(this, FontAwesomeIcons.fa_user_o)
|
||||||
.colorRes(R.color.cardview_light_background)
|
.colorRes(R.color.cardview_light_background)
|
||||||
.actionBarSize());
|
.actionBarSize());
|
||||||
|
|
||||||
@ -201,7 +203,11 @@ public class VideoListActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
|
|
||||||
GetVideoDataService service = RetrofitInstance.getRetrofitInstance().create(GetVideoDataService.class);
|
SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
|
||||||
|
String defaultApiURL = getResources().getString(R.string.api_base_url);
|
||||||
|
String apiURL = sharedPref.getString(getString(R.string.api_url_key_key), defaultApiURL);
|
||||||
|
|
||||||
|
GetVideoDataService service = RetrofitInstance.getRetrofitInstance(apiURL).create(GetVideoDataService.class);
|
||||||
|
|
||||||
Call<VideoList> call = service.getVideoData(start, count, sort);
|
Call<VideoList> call = service.getVideoData(start, count, sort);
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ import android.os.Handler;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
import net.schueller.peertube.R;
|
import net.schueller.peertube.R;
|
||||||
|
|
||||||
@ -103,6 +104,8 @@ public class VideoPlayActivity extends AppCompatActivity {
|
|||||||
mControlsView = findViewById(R.id.fullscreen_content_controls);
|
mControlsView = findViewById(R.id.fullscreen_content_controls);
|
||||||
mContentView = findViewById(R.id.fullscreen_content);
|
mContentView = findViewById(R.id.fullscreen_content);
|
||||||
|
|
||||||
|
TextView textView = findViewById(R.id.fullscreen_content);
|
||||||
|
textView.setText(videoID);
|
||||||
|
|
||||||
// Set up the user interaction to manually show or hide the system UI.
|
// Set up the user interaction to manually show or hide the system UI.
|
||||||
mContentView.setOnClickListener(new View.OnClickListener() {
|
mContentView.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@ -6,13 +6,13 @@ import retrofit2.converter.gson.GsonConverterFactory;
|
|||||||
public class RetrofitInstance {
|
public class RetrofitInstance {
|
||||||
|
|
||||||
private static Retrofit retrofit;
|
private static Retrofit retrofit;
|
||||||
private static final String BASE_URL = "https://troll.tv/api/v1/";
|
private static String baseUrl;
|
||||||
|
|
||||||
public static Retrofit getRetrofitInstance() {
|
|
||||||
if (retrofit == null) {
|
|
||||||
|
|
||||||
|
public static Retrofit getRetrofitInstance(String newBaseUrl) {
|
||||||
|
if (retrofit == null || !newBaseUrl.equals(baseUrl)) {
|
||||||
|
baseUrl = newBaseUrl;
|
||||||
retrofit = new retrofit2.Retrofit.Builder()
|
retrofit = new retrofit2.Retrofit.Builder()
|
||||||
.baseUrl(BASE_URL)
|
.baseUrl(baseUrl)
|
||||||
.addConverterFactory(GsonConverterFactory.create())
|
.addConverterFactory(GsonConverterFactory.create())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,21 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<AutoCompleteTextView
|
||||||
|
android:id="@+id/server"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/prompt_server"
|
||||||
|
android:inputType="textUri"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:singleLine="true" />
|
||||||
|
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
|
||||||
<android.support.design.widget.TextInputLayout
|
<android.support.design.widget.TextInputLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
<string name="title_activity_login">Sign in</string>
|
<string name="title_activity_login">Sign in</string>
|
||||||
|
|
||||||
<!-- Strings related to login -->
|
<!-- Strings related to login -->
|
||||||
|
<string name="prompt_server">Server</string>
|
||||||
<string name="prompt_email">Email</string>
|
<string name="prompt_email">Email</string>
|
||||||
<string name="prompt_password">Password (optional)</string>
|
<string name="prompt_password">Password (optional)</string>
|
||||||
<string name="action_sign_in">Sign in or register</string>
|
<string name="action_sign_in">Sign in</string>
|
||||||
<string name="action_sign_in_short">Sign in</string>
|
<string name="action_sign_in_short">Sign in</string>
|
||||||
<string name="error_invalid_email">This email address is invalid</string>
|
<string name="error_invalid_email">This email address is invalid</string>
|
||||||
<string name="error_invalid_password">This password is too short</string>
|
<string name="error_invalid_password">This password is too short</string>
|
||||||
@ -23,4 +24,7 @@
|
|||||||
<string name="dummy_button">Dummy Button</string>
|
<string name="dummy_button">Dummy Button</string>
|
||||||
<string name="dummy_content">DUMMY\nCONTENT</string>
|
<string name="dummy_content">DUMMY\nCONTENT</string>
|
||||||
|
|
||||||
|
<string name="api_base_url" formatted="false">https://troll.tv/api/v1/</string>
|
||||||
|
<string name="api_url_key_key">api_url</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user