Skip to content

Commit 1c8980a

Browse files
authored
Merge pull request #2 from brarcher/app-skins
App skins
2 parents 6942215 + bca34ce commit 1c8980a

File tree

17 files changed

+528
-21
lines changed

17 files changed

+528
-21
lines changed

LICENSE

Lines changed: 339 additions & 0 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
11
# Video Editor
2+
[![Build Status](https://travis-ci.org/brarcher/VideoEditor.svg?branch=master)](https://travis-ci.org/brarcher/VideoEditor)
3+
4+
# Thanks
5+
6+
This application uses the following image:
7+
- [Film](https://thenounproject.com/term/film/395618/) by [Mint Shirt](https://thenounproject.com/mint10/)

app/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ android {
1313
minSdkVersion 19
1414
targetSdkVersion 27
1515
versionCode 1
16-
versionName "1.0"
16+
versionName "0.1"
1717
}
1818
buildTypes {
1919
release {
@@ -38,6 +38,7 @@ dependencies {
3838
compile 'org.florescu.android.rangeseekbar:rangeseekbar-library:0.3.0'
3939
compile 'com.android.support:cardview-v7:27.0.2'
4040
compile 'commons-io:commons-io:2.5'
41+
compile group: 'com.google.guava', name: 'guava', version: '20.0'
4142
testCompile 'junit:junit:4.12'
4243
}
4344

app/src/main/java/videoeditor/bhuvnesh/com/ffmpegvideoeditor/activity/AudioPreviewActivity.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.net.Uri;
77
import android.os.Bundle;
88
import android.support.annotation.Nullable;
9+
import android.support.v7.app.ActionBar;
910
import android.support.v7.app.AppCompatActivity;
1011
import android.view.MenuItem;
1112
import android.widget.TextView;
@@ -30,8 +31,12 @@ public class AudioPreviewActivity extends AppCompatActivity {
3031
protected void onCreate(@Nullable Bundle savedInstanceState) {
3132
super.onCreate(savedInstanceState);
3233
setContentView(R.layout.activity_audio_preview);
33-
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
34-
getSupportActionBar().setDisplayShowHomeEnabled(true);
34+
ActionBar actionBar = getSupportActionBar();
35+
if(actionBar != null)
36+
{
37+
actionBar.setDisplayHomeAsUpEnabled(true);
38+
actionBar.setDisplayShowHomeEnabled(true);
39+
}
3540

3641
mVisualizerView = (VisualizerView) findViewById(R.id.visualizerView);
3742

app/src/main/java/videoeditor/bhuvnesh/com/ffmpegvideoeditor/activity/MainActivity.java

Lines changed: 121 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import android.content.Context;
88
import android.content.DialogInterface;
99
import android.content.Intent;
10+
import android.content.pm.PackageInfo;
1011
import android.content.pm.PackageManager;
1112
import android.database.Cursor;
1213
import android.graphics.drawable.ColorDrawable;
@@ -23,8 +24,12 @@
2324
import android.support.v7.app.AlertDialog;
2425
import android.support.v7.app.AppCompatActivity;
2526
import android.util.Log;
27+
import android.view.Menu;
28+
import android.view.MenuItem;
2629
import android.view.View;
2730
import android.view.ViewGroup;
31+
import android.view.Window;
32+
import android.webkit.WebView;
2833
import android.widget.ScrollView;
2934
import android.widget.TextView;
3035
import android.widget.Toast;
@@ -35,14 +40,17 @@
3540
import com.github.hiteshsondhi88.libffmpeg.LoadBinaryResponseHandler;
3641
import com.github.hiteshsondhi88.libffmpeg.exceptions.FFmpegCommandAlreadyRunningException;
3742
import com.github.hiteshsondhi88.libffmpeg.exceptions.FFmpegNotSupportedException;
43+
import com.google.common.collect.ImmutableMap;
3844

3945
import org.apache.commons.io.comparator.LastModifiedFileComparator;
4046
import org.florescu.android.rangeseekbar.RangeSeekBar;
4147

4248
import java.io.File;
4349
import java.util.ArrayList;
4450
import java.util.Arrays;
51+
import java.util.Calendar;
4552
import java.util.List;
53+
import java.util.Map;
4654

4755
import videoeditor.bhuvnesh.com.ffmpegvideoeditor.R;
4856

@@ -57,8 +65,7 @@ public class MainActivity extends AppCompatActivity {
5765
private FFmpeg ffmpeg;
5866
private ProgressDialog progressDialog;
5967
private Uri selectedVideoUri;
60-
private static final String TAG = "BHUVNESH";
61-
private static final String POSITION = "position";
68+
private static final String TAG = "VideoEditor";
6269
private static final String FILEPATH = "filepath";
6370
private int choice = 0;
6471
private int stopPosition;
@@ -339,7 +346,6 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
339346

340347
@Override
341348
public void onPrepared(MediaPlayer mp) {
342-
// TODO Auto-generated method stub
343349
duration = mp.getDuration() / 1000;
344350
tvLeft.setText("00:00:00");
345351

@@ -870,11 +876,8 @@ public static boolean deleteDir(File dir) {
870876
* other file-based ContentProviders.
871877
*/
872878
private String getPath(final Context context, final Uri uri) {
873-
874-
final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
875-
876879
// DocumentProvider
877-
if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
880+
if (DocumentsContract.isDocumentUri(context, uri)) {
878881
// ExternalStorageProvider
879882
if (isExternalStorageDocument(uri)) {
880883
final String docId = DocumentsContract.getDocumentId(uri);
@@ -983,11 +986,120 @@ private boolean isMediaDocument(Uri uri) {
983986

984987
private Dialog showSingleOptionTextDialog(Context mContext) {
985988
Dialog textDialog = new Dialog(mContext, R.style.DialogAnimation);
986-
textDialog.getWindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
987-
textDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
989+
Window window = textDialog.getWindow();
990+
if(window != null)
991+
{
992+
window.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
993+
window.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
994+
}
988995
textDialog.setContentView(R.layout.dialog_singleoption_text);
989996
textDialog.setCancelable(false);
990997
return textDialog;
991998
}
992999

1000+
@Override
1001+
public boolean onCreateOptionsMenu(Menu menu)
1002+
{
1003+
getMenuInflater().inflate(R.menu.main_menu, menu);
1004+
return super.onCreateOptionsMenu(menu);
1005+
}
1006+
1007+
@Override
1008+
public boolean onOptionsItemSelected(MenuItem item)
1009+
{
1010+
int id = item.getItemId();
1011+
1012+
if(id == R.id.action_about)
1013+
{
1014+
displayAboutDialog();
1015+
return true;
1016+
}
1017+
1018+
return super.onOptionsItemSelected(item);
1019+
}
1020+
1021+
private void displayAboutDialog()
1022+
{
1023+
final Map<String, String> USED_LIBRARIES = ImmutableMap.of
1024+
(
1025+
"Commons IO", "https://commons.apache.org/proper/commons-io/",
1026+
"FFmpeg", "https://www.ffmpeg.org/",
1027+
"FFmpeg Android", "http://writingminds.github.io/ffmpeg-android/",
1028+
"Guava", "https://github.com/google/guava",
1029+
"Range SeekBar", "https://github.com/anothem/android-range-seek-bar"
1030+
);
1031+
1032+
final Map<String, String> USED_ASSETS = ImmutableMap.of
1033+
(
1034+
"Film by Mint Shirt", "https://thenounproject.com/term/film/395618/"
1035+
);
1036+
1037+
StringBuilder libs = new StringBuilder().append("<ul>");
1038+
for (Map.Entry<String, String> entry : USED_LIBRARIES.entrySet())
1039+
{
1040+
libs.append("<li><a href=\"").append(entry.getValue()).append("\">").append(entry.getKey()).append("</a></li>");
1041+
}
1042+
libs.append("</ul>");
1043+
1044+
StringBuilder resources = new StringBuilder().append("<ul>");
1045+
for (Map.Entry<String, String> entry : USED_ASSETS.entrySet())
1046+
{
1047+
resources.append("<li><a href=\"").append(entry.getValue()).append("\">").append(entry.getKey()).append("</a></li>");
1048+
}
1049+
resources.append("</ul>");
1050+
1051+
String appName = getString(R.string.app_name);
1052+
int year = Calendar.getInstance().get(Calendar.YEAR);
1053+
1054+
String version = "?";
1055+
try
1056+
{
1057+
PackageInfo pi = getPackageManager().getPackageInfo(getPackageName(), 0);
1058+
version = pi.versionName;
1059+
}
1060+
catch (PackageManager.NameNotFoundException e)
1061+
{
1062+
Log.w(TAG, "Package name not found", e);
1063+
}
1064+
1065+
WebView wv = new WebView(this);
1066+
String html =
1067+
"<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />" +
1068+
"<h1>" +
1069+
String.format(getString(R.string.about_title_fmt),
1070+
"<a href=\"" + getString(R.string.app_webpage_url)) + "\">" +
1071+
appName +
1072+
"</a>" +
1073+
"</h1><p>" +
1074+
appName +
1075+
" " +
1076+
String.format(getString(R.string.debug_version_fmt), version) +
1077+
"</p><p>" +
1078+
String.format(getString(R.string.app_revision_fmt),
1079+
"<a href=\"" + getString(R.string.app_revision_url) + "\">" +
1080+
getString(R.string.app_revision_url) +
1081+
"</a>") +
1082+
"</p><hr/><p>" +
1083+
String.format(getString(R.string.app_copyright_fmt), year) +
1084+
"</p><hr/><p>" +
1085+
getString(R.string.app_license) +
1086+
"</p><hr/><p>" +
1087+
String.format(getString(R.string.app_libraries), appName, libs.toString()) +
1088+
"</p><hr/><p>" +
1089+
String.format(getString(R.string.app_resources), appName, resources.toString());
1090+
1091+
wv.loadDataWithBaseURL("file:///android_res/drawable/", html, "text/html", "utf-8", null);
1092+
new AlertDialog.Builder(this)
1093+
.setView(wv)
1094+
.setCancelable(true)
1095+
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener()
1096+
{
1097+
public void onClick(DialogInterface dialog, int which)
1098+
{
1099+
dialog.dismiss();
1100+
}
1101+
})
1102+
.show();
1103+
}
1104+
9931105
}

app/src/main/java/videoeditor/bhuvnesh/com/ffmpegvideoeditor/activity/PreviewActivity.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.net.Uri;
55
import android.os.Bundle;
66
import android.support.annotation.Nullable;
7+
import android.support.v7.app.ActionBar;
78
import android.support.v7.app.AppCompatActivity;
89
import android.view.MenuItem;
910
import android.widget.SeekBar;
@@ -20,15 +21,19 @@ public class PreviewActivity extends AppCompatActivity {
2021
private VideoView videoView;
2122
private SeekBar seekBar;
2223
private int stopPosition;
23-
private static final String POSITION = "position";
2424
private static final String FILEPATH = "filepath";
2525

2626
@Override
2727
protected void onCreate(@Nullable Bundle savedInstanceState) {
2828
super.onCreate(savedInstanceState);
2929
setContentView(R.layout.activity_preview);
30-
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
31-
getSupportActionBar().setDisplayShowHomeEnabled(true);
30+
ActionBar actionBar = getSupportActionBar();
31+
if(actionBar != null)
32+
{
33+
actionBar.setDisplayHomeAsUpEnabled(true);
34+
actionBar.setDisplayShowHomeEnabled(true);
35+
}
36+
3237
videoView = (VideoView) findViewById(R.id.videoView);
3338
seekBar = (SeekBar) findViewById(R.id.seekBar);
3439

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<menu xmlns:android="http://schemas.android.com/apk/res/android"
2+
xmlns:app="http://schemas.android.com/apk/res-auto">
3+
<item
4+
android:id="@+id/action_about"
5+
android:title="@string/about"
6+
app:showAsAction="never"/>
7+
</menu>
-2.28 KB
Loading
-1.69 KB
Loading
-5.75 KB
Loading

0 commit comments

Comments
 (0)