├── .Rhistory
├── .gitignore
├── .gitmodules
├── .travis.yml
├── COPYING
├── NOTICES.md
├── README.md
├── Sealnote.iml
├── Sealnote.ipr
├── Sealnote.iws
├── Sealnote
├── .gitignore
├── Sealnote-Sealnote.iml
├── build.gradle
├── proguard-rules.txt
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ ├── acknowledgements.html
│ ├── fonts
│ │ ├── Apache License.txt
│ │ ├── Roboto-Light.ttf
│ │ ├── RobotoCondensed-Regular.ttf
│ │ ├── SourceSansPro-Bold.ttf
│ │ ├── SourceSansPro-Light.ttf
│ │ └── SourceSansPro-Regular.ttf
│ ├── icudt46l.zip
│ └── xato_passlist.txt
│ ├── java
│ └── com
│ │ └── twistedplane
│ │ └── sealnote
│ │ ├── BackupActivity.java
│ │ ├── NoteActivity.java
│ │ ├── PasswordActivity.java
│ │ ├── RestoreActivity.java
│ │ ├── SealnoteActivity.java
│ │ ├── SealnoteApplication.java
│ │ ├── SettingsActivity.java
│ │ ├── TagsEditorActivity.java
│ │ ├── WebViewActivity.java
│ │ ├── crypto
│ │ └── PasswordQuality.java
│ │ ├── data
│ │ ├── AdapterLoader.java
│ │ ├── CardGridStaggeredCursorAdapter.java
│ │ ├── DatabaseHandler.java
│ │ ├── Note.java
│ │ ├── NoteContent.java
│ │ ├── NoteContentCard.java
│ │ ├── NoteContentGeneric.java
│ │ ├── NoteContentLogin.java
│ │ └── SealnoteAdapter.java
│ │ ├── fragment
│ │ ├── ColorDialogFragment.java
│ │ └── SealnoteFragment.java
│ │ ├── internal
│ │ ├── MultiChoiceCallback.java
│ │ └── SealnoteCard.java
│ │ ├── settings
│ │ ├── PasswordPreference.java
│ │ └── VersionPreference.java
│ │ ├── storage
│ │ └── BackupUtils.java
│ │ ├── utils
│ │ ├── EasyDate.java
│ │ ├── FontCache.java
│ │ ├── Misc.java
│ │ ├── PreferenceHandler.java
│ │ └── TimeoutHandler.java
│ │ └── view
│ │ ├── NoteCardView.java
│ │ ├── NoteGenericView.java
│ │ ├── NoteLoginView.java
│ │ ├── NoteView.java
│ │ ├── PasswordInput.java
│ │ ├── TagEditText.java
│ │ ├── simplelist
│ │ ├── SimpleListAdapter.java
│ │ └── SimpleListFragment.java
│ │ └── staggeredgrid
│ │ ├── StaggeredGridAdapter.java
│ │ ├── StaggeredGridFragment.java
│ │ └── StaggeredGridView.java
│ └── res
│ ├── anim
│ ├── flipin.xml
│ └── flipout.xml
│ ├── drawable-hdpi
│ ├── drawer_shadow.9.png
│ ├── ic_action_archive.png
│ ├── ic_action_archive_light.png
│ ├── ic_action_collection.png
│ ├── ic_action_core_overflow.png
│ ├── ic_action_discard.png
│ ├── ic_action_discard_light.png
│ ├── ic_action_new.png
│ ├── ic_action_refresh.png
│ ├── ic_action_save.png
│ ├── ic_action_unarchive.png
│ ├── ic_action_unarchive_light.png
│ ├── ic_home.png
│ ├── ic_launcher.png
│ ├── ic_menu_color.png
│ └── ic_navigation_drawer.png
│ ├── drawable-ldpi
│ └── ic_launcher.png
│ ├── drawable-mdpi
│ ├── drawer_shadow.9.png
│ ├── ic_action_archive.png
│ ├── ic_action_archive_light.png
│ ├── ic_action_collection.png
│ ├── ic_action_core_overflow.png
│ ├── ic_action_discard.png
│ ├── ic_action_discard_light.png
│ ├── ic_action_new.png
│ ├── ic_action_refresh.png
│ ├── ic_action_save.png
│ ├── ic_action_unarchive.png
│ ├── ic_action_unarchive_light.png
│ ├── ic_home.png
│ ├── ic_launcher.png
│ ├── ic_menu_color.png
│ └── ic_navigation_drawer.png
│ ├── drawable-xhdpi
│ ├── drawer_shadow.9.png
│ ├── ic_action_archive.png
│ ├── ic_action_archive_light.png
│ ├── ic_action_collection.png
│ ├── ic_action_core_overflow.png
│ ├── ic_action_discard.png
│ ├── ic_action_discard_light.png
│ ├── ic_action_new.png
│ ├── ic_action_refresh.png
│ ├── ic_action_save.png
│ ├── ic_action_unarchive.png
│ ├── ic_action_unarchive_light.png
│ ├── ic_home.png
│ ├── ic_launcher.png
│ ├── ic_menu_color.png
│ └── ic_navigation_drawer.png
│ ├── drawable-xxhdpi
│ ├── drawer_shadow.9.png
│ ├── ic_action_archive.png
│ ├── ic_action_archive_light.png
│ ├── ic_action_collection.png
│ ├── ic_action_core_overflow.png
│ ├── ic_action_discard.png
│ ├── ic_action_discard_light.png
│ ├── ic_action_new.png
│ ├── ic_action_refresh.png
│ ├── ic_action_save.png
│ ├── ic_action_unarchive.png
│ ├── ic_action_unarchive_light.png
│ ├── ic_home.png
│ ├── ic_launcher.png
│ ├── ic_menu_color.png
│ └── ic_navigation_drawer.png
│ ├── drawable-xxxhdpi
│ └── ic_launcher.png
│ ├── drawable
│ ├── ab_background.png
│ ├── ab_background_archive.png
│ ├── ab_background_tag.png
│ ├── ab_background_trash.png
│ ├── actionbar_item_selector.xml
│ ├── activated_background_card.xml
│ ├── bubble.xml
│ ├── button_background_darkblue.png
│ ├── button_create_note.xml
│ ├── button_create_note_background.xml
│ ├── button_password_login.xml
│ ├── button_text_color_selector.xml
│ ├── card_background_color0.xml
│ ├── card_background_color1.xml
│ ├── card_background_color2.xml
│ ├── card_background_color3.xml
│ ├── card_background_color4.xml
│ ├── card_background_color5.xml
│ ├── card_background_color6.xml
│ ├── card_background_color7.xml
│ ├── card_brand_americanexpress.png
│ ├── card_brand_cirrus.png
│ ├── card_brand_diners.png
│ ├── card_brand_discover.png
│ ├── card_brand_jcb.png
│ ├── card_brand_maestro.png
│ ├── card_brand_mastercard.png
│ ├── card_brand_unknown.png
│ ├── card_brand_visa.png
│ ├── card_selector_color0.xml
│ ├── card_selector_color1.xml
│ ├── card_selector_color2.xml
│ ├── card_selector_color3.xml
│ ├── card_selector_color4.xml
│ ├── card_selector_color5.xml
│ ├── card_selector_color6.xml
│ ├── card_selector_color7.xml
│ ├── checked.png
│ ├── drawer_text_selector.xml
│ ├── intelligence_gathering.jpg
│ ├── list_button_bg.xml
│ ├── no_card_background.png
│ ├── note_type_card.xml
│ ├── password_button_pressed.png
│ ├── passwordmeter_default.xml
│ ├── passwordmeter_good.xml
│ ├── passwordmeter_ok.xml
│ ├── passwordmeter_strong.xml
│ ├── passwordmeter_weak.xml
│ ├── simple_list_view_divider.xml
│ ├── simple_list_view_item_background.xml
│ ├── textlines.xml
│ └── theme_color.png
│ ├── layout-large
│ └── view_password_meter.xml
│ ├── layout
│ ├── about.xml
│ ├── actionbar_progress.xml
│ ├── activity_backup.xml
│ ├── activity_note.xml
│ ├── activity_password.xml
│ ├── activity_restore.xml
│ ├── card_layout.xml
│ ├── cardcontent.xml
│ ├── color_choose_list_item.xml
│ ├── dialog_password_pref.xml
│ ├── drawer_list_item.xml
│ ├── drawer_tag_list_item.xml
│ ├── empty_tags.xml
│ ├── fragment_sealnote.xml
│ ├── main.xml
│ ├── note_type_card.xml
│ ├── note_type_card_layout.xml
│ ├── note_type_generic.xml
│ ├── note_type_login.xml
│ ├── note_type_login_layout.xml
│ ├── simple_list_item_2.xml
│ ├── simplelist.xml
│ ├── singlecolumnview.xml
│ ├── staggeredgrid.xml
│ ├── tag_rename_dialog.xml
│ ├── tags_edit_list_item.xml
│ ├── view_password_meter.xml
│ └── webview.xml
│ ├── menu
│ ├── context_menu.xml
│ ├── main_activity_actionbar.xml
│ └── note_activity_actionbar.xml
│ ├── values-de
│ ├── array.xml
│ └── strings.xml
│ ├── values-it
│ ├── array.xml
│ └── strings.xml
│ ├── values-ja
│ └── strings.xml
│ ├── values-large
│ └── dimens.xml
│ ├── values-ru
│ └── strings.xml
│ ├── values-w820dp
│ └── dimens.xml
│ ├── values
│ ├── array.xml
│ ├── colors.xml
│ ├── dimens.xml
│ ├── strings.xml
│ └── styles.xml
│ └── xml
│ └── preferences.xml
├── TODO.md
├── aFileChooser
├── .project
├── AndroidManifest.xml
├── aFileChooser.iml
├── build.gradle
├── proguard.cfg
├── project.properties
├── res
│ ├── drawable-hdpi
│ │ ├── ic_chooser.png
│ │ ├── ic_file.png
│ │ ├── ic_folder.png
│ │ └── ic_provider.png
│ ├── drawable-mdpi
│ │ ├── ic_chooser.png
│ │ ├── ic_file.png
│ │ ├── ic_folder.png
│ │ └── ic_provider.png
│ ├── drawable-xhdpi
│ │ ├── ic_chooser.png
│ │ ├── ic_file.png
│ │ ├── ic_folder.png
│ │ └── ic_provider.png
│ ├── drawable-xxhdpi
│ │ ├── ic_chooser.png
│ │ ├── ic_file.png
│ │ ├── ic_folder.png
│ │ └── ic_provider.png
│ ├── layout
│ │ └── file.xml
│ ├── values-ca
│ │ └── strings.xml
│ ├── values-de
│ │ └── strings.xml
│ ├── values-es
│ │ └── strings.xml
│ ├── values-fr
│ │ └── strings.xml
│ ├── values-ga
│ │ └── strings.xml
│ ├── values-it
│ │ └── strings.xml
│ ├── values-ja
│ │ └── strings.xml
│ ├── values-ko
│ │ └── strings.xml
│ ├── values-pl
│ │ └── strings.xml
│ ├── values-pt-rBR
│ │ └── strings.xml
│ ├── values-ru
│ │ └── strings.xml
│ ├── values-v11
│ │ └── strings.xml
│ ├── values-v19
│ │ └── bool.xml
│ ├── values
│ │ ├── bool.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── xml
│ │ └── mimetypes.xml
└── src
│ └── com
│ ├── ianhanniballake
│ └── localstorage
│ │ └── LocalStorageProvider.java
│ └── ipaulpro
│ └── afilechooser
│ ├── FileChooserActivity.java
│ ├── FileListAdapter.java
│ ├── FileListFragment.java
│ ├── FileLoader.java
│ └── utils
│ └── FileUtils.java
├── build.gradle
├── data
├── NoCardBackground.xcf
└── ic_menu_color.xcf
├── gradle.properties
├── gradle
├── gradle.iml
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── playstore-icon.png
└── settings.gradle
/.Rhistory:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/.Rhistory
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | .idea/
3 | /local.properties
4 | /.idea/workspace.xml
5 | .DS_Store
6 | build/
7 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/.gitmodules
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: android
2 | jdk: oraclejdk8
3 | licenses:
4 | - 'android-sdk-preview-license-.+'
5 | - 'android-sdk-license-.+'
6 | - 'google-gdk-license-.+'
7 |
8 | android:
9 | components:
10 | # Uncomment the lines below if you want to
11 | # use the latest revision of Android SDK Tools
12 | - platform-tools
13 | - tools
14 |
15 | # The BuildTools version used by your project
16 | - build-tools-25.0.2
17 |
18 | # The SDK version used to compile your project
19 | - android-25
20 |
21 | # Additional components
22 | - extra-google-google_play_services
23 | - extra-google-m2repository
24 | - extra-android-m2repository
25 | - addon-google_apis-google-19
26 |
27 | # Specify at least one system image,
28 | # if you need to run emulator(s) during your tests
29 | - sys-img-armeabi-v7a-android-22
30 | - sys-img-x86-android-17
31 |
32 | script:
33 | - ./gradlew assembleDebug
34 |
--------------------------------------------------------------------------------
/COPYING:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Vishesh Yadav
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/Sealnote.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Sealnote/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/Sealnote/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | jcenter()
4 | mavenCentral()
5 | }
6 | dependencies {
7 | classpath 'com.android.tools.build:gradle:2.3.0'
8 | }
9 | }
10 | apply plugin: 'com.android.application'
11 |
12 | repositories {
13 | jcenter()
14 | }
15 |
16 | android {
17 | compileSdkVersion 25
18 | buildToolsVersion '25.0.2'
19 |
20 | defaultConfig {
21 | minSdkVersion 14
22 | targetSdkVersion 25
23 |
24 | versionCode 27
25 | versionName "0.8.7"
26 | }
27 |
28 | signingConfigs {
29 | release {
30 | storeFile file(String.valueOf(System.getenv("SEALNOTE_KEYSTORE")))
31 | storePassword System.getenv("SEALNOTE_KEYSTORE_PASSWORD")
32 | keyAlias System.getenv("SEALNOTE_KEY_ALIAS")
33 | keyPassword System.getenv("SEALNOTE_KEY_PASSWORD")
34 | }
35 | }
36 |
37 | buildTypes {
38 | release {
39 | minifyEnabled false
40 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
41 | debuggable false
42 | jniDebuggable false
43 | signingConfig signingConfigs.release
44 | }
45 | debug {
46 | debuggable true
47 | jniDebuggable true
48 | minifyEnabled false
49 | }
50 | }
51 |
52 |
53 | lintOptions {
54 | //checkReleaseBuilds false
55 |
56 | // This is temporary
57 | abortOnError false
58 | }
59 | }
60 |
61 |
62 | dependencies {
63 | compile 'com.android.support:support-v4:25.1.1'
64 | compile 'com.etsy.android.grid:library:1.0.4'
65 | compile 'com.github.gabrielemariotti.cards:library:1.6.0'
66 | compile 'com.github.gabrielemariotti.cards:library-extra:1.6.0'
67 | compile 'com.nhaarman.listviewanimations:library:2.6.0'
68 |
69 | compile 'com.github.codechimp-org.apprater:library:1.0.32'
70 | compile 'net.zetetic:android-database-sqlcipher:3.5.6@aar'
71 |
72 | compile group: 'commons-codec', name: 'commons-codec', version: '1.10'
73 | compile group: 'com.google.guava', name: 'guava', version: 'r09'
74 |
75 | compile project(':aFileChooser')
76 | }
77 |
--------------------------------------------------------------------------------
/Sealnote/proguard-rules.txt:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /home/vishesh/Applications/adt-bundle/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the ProGuard
5 | # include property in project.properties.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
--------------------------------------------------------------------------------
/Sealnote/src/main/assets/fonts/Roboto-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/assets/fonts/Roboto-Light.ttf
--------------------------------------------------------------------------------
/Sealnote/src/main/assets/fonts/RobotoCondensed-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/assets/fonts/RobotoCondensed-Regular.ttf
--------------------------------------------------------------------------------
/Sealnote/src/main/assets/fonts/SourceSansPro-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/assets/fonts/SourceSansPro-Bold.ttf
--------------------------------------------------------------------------------
/Sealnote/src/main/assets/fonts/SourceSansPro-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/assets/fonts/SourceSansPro-Light.ttf
--------------------------------------------------------------------------------
/Sealnote/src/main/assets/fonts/SourceSansPro-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/assets/fonts/SourceSansPro-Regular.ttf
--------------------------------------------------------------------------------
/Sealnote/src/main/assets/icudt46l.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/assets/icudt46l.zip
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/SealnoteApplication.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote;
2 |
3 | import android.app.Application;
4 | import android.view.ViewConfiguration;
5 | import com.twistedplane.sealnote.data.DatabaseHandler;
6 | import net.sqlcipher.database.SQLiteDatabase;
7 |
8 | import java.lang.reflect.Field;
9 |
10 | public class SealnoteApplication extends Application {
11 | public final static String TAG = "SealnoteApplication";
12 |
13 | private static DatabaseHandler mDatabase;
14 |
15 | @Override
16 | public void onCreate() {
17 | super.onCreate();
18 |
19 | // load sqlite-cipher native libraries
20 | SQLiteDatabase.loadLibs(this);
21 | mDatabase = new DatabaseHandler(this);
22 |
23 | // Force show overflow button on Action Bar
24 | try {
25 | ViewConfiguration config = ViewConfiguration.get(this);
26 | Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
27 |
28 | if (menuKeyField != null) {
29 | menuKeyField.setAccessible(true);
30 | menuKeyField.setBoolean(config, false);
31 | }
32 | }
33 | catch (Exception e) {
34 | // presumably, not relevant
35 | }
36 | }
37 |
38 | public static DatabaseHandler getDatabase() {
39 | return mDatabase;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/SettingsActivity.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote;
2 |
3 | import android.app.ActionBar;
4 | import android.os.Bundle;
5 | import android.preference.PreferenceActivity;
6 | import android.view.MenuItem;
7 |
8 | /**
9 | * Activity for configuring the preferences/settings of application.
10 | */
11 | public class SettingsActivity extends PreferenceActivity {
12 | public final static String TAG = "SettingsActivity";
13 |
14 | @Override
15 | public void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | addPreferencesFromResource(R.xml.preferences);
18 |
19 | //NOTE: for ICS
20 | ActionBar actionBar = getActionBar();
21 | actionBar.setHomeButtonEnabled(true);
22 | actionBar.setDisplayHomeAsUpEnabled(true);
23 | }
24 |
25 | @Override
26 | public boolean onOptionsItemSelected(MenuItem item) {
27 | switch (item.getItemId()) {
28 | case android.R.id.home:
29 | onBackPressed();
30 | return true;
31 | default:
32 | return super.onOptionsItemSelected(item);
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/WebViewActivity.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote;
2 |
3 | import android.app.ActionBar;
4 | import android.app.Activity;
5 | import android.os.Bundle;
6 | import android.webkit.WebView;
7 |
8 | public class WebViewActivity extends Activity {
9 | @Override
10 | public void onCreate(Bundle savedInstanceState) {
11 | super.onCreate(savedInstanceState);
12 | setContentView(R.layout.webview);
13 |
14 | WebView wv = (WebView) findViewById(R.id.webview);
15 | wv.loadUrl("file:///android_asset/acknowledgements.html");
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/data/AdapterLoader.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.data;
2 |
3 | import android.content.AsyncTaskLoader;
4 | import android.content.Context;
5 | import android.database.Cursor;
6 | import android.util.Log;
7 | import com.twistedplane.sealnote.SealnoteApplication;
8 | import com.twistedplane.sealnote.fragment.SealnoteFragment;
9 |
10 | /**
11 | * Loader for loading notes in Adapter
12 | */
13 | public class AdapterLoader extends AsyncTaskLoader {
14 | private Note.Folder currentFolder = Note.Folder.FOLDER_LIVE;
15 | private int tagid = -1;
16 | private Cursor mCursor;
17 |
18 | /**
19 | * Loads database, get cursor to all notes given folder in database
20 | */
21 | @Override
22 | public Cursor loadInBackground() {
23 | Log.d(SealnoteFragment.TAG, "Adapter loader started!");
24 |
25 | final DatabaseHandler db = SealnoteApplication.getDatabase();
26 | final Cursor cursor;
27 |
28 | switch (currentFolder) {
29 | case FOLDER_LIVE:
30 | cursor = db.getNotesCursor();
31 | break;
32 | case FOLDER_ARCHIVE:
33 | cursor = db.getArchivedNotesCursor();
34 | break;
35 | case FOLDER_TRASH:
36 | cursor = db.getDeletedNotesCursor();
37 | break;
38 | case FOLDER_TAG:
39 | cursor = db.getNotesCursor(tagid);
40 | break;
41 | default:
42 | cursor = null;
43 | }
44 |
45 | return cursor;
46 | }
47 |
48 | public AdapterLoader(Context context, Note.Folder currentFolder, int tagid) {
49 | super(context);
50 | Log.d(SealnoteFragment.TAG, "New adapter loader created");
51 | this.currentFolder = currentFolder;
52 | this.tagid = tagid;
53 | }
54 |
55 | /* Runs on the UI thread */
56 | @Override
57 | public void deliverResult(Cursor cursor) {
58 | if (isReset()) {
59 | // An async query came in while the loader is stopped
60 | if (cursor != null) {
61 | cursor.close();
62 | }
63 | return;
64 | }
65 | Cursor oldCursor = mCursor;
66 | mCursor = cursor;
67 |
68 | if (isStarted()) {
69 | super.deliverResult(cursor);
70 | }
71 |
72 | if (oldCursor != null && oldCursor != cursor && !oldCursor.isClosed()) {
73 | oldCursor.close();
74 | }
75 | }
76 |
77 | /**
78 | * Must be called from the UI thread
79 | */
80 | @Override
81 | protected void onStartLoading() {
82 | if (mCursor != null) {
83 | deliverResult(mCursor);
84 | }
85 | if (takeContentChanged() || mCursor == null) {
86 | forceLoad();
87 | }
88 | }
89 |
90 | /**
91 | * Must be called from the UI thread
92 | */
93 | @Override
94 | protected void onStopLoading() {
95 | // Attempt to cancel the current load task if possible.
96 | cancelLoad();
97 | }
98 |
99 | @Override
100 | public void onCanceled(Cursor cursor) {
101 | if (cursor != null && !cursor.isClosed()) {
102 | cursor.close();
103 | }
104 | }
105 |
106 | @Override
107 | protected void onReset() {
108 | super.onReset();
109 |
110 | // Ensure the loader is stopped
111 | onStopLoading();
112 |
113 | if (mCursor != null && !mCursor.isClosed()) {
114 | mCursor.close();
115 | }
116 | mCursor = null;
117 | }
118 | }
119 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/data/NoteContent.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.data;
2 |
3 | /**
4 | * Abstract class for different types of Note Contents
5 | */
6 | public abstract class NoteContent {
7 | protected String mContent; /* Raw unparsed content */
8 | protected String mCardString; /* String to show in cards */
9 | protected boolean mUpdated = false; /* Is mContent parsed yet? */
10 |
11 | protected NoteContent() {
12 | mUpdated = true;
13 | }
14 |
15 | protected NoteContent(String content) {
16 | mContent = content;
17 | mUpdated = false;
18 | }
19 |
20 | /**
21 | * Returns string to be shown in Cards from latest valuess
22 | */
23 | abstract public String getCardString();
24 |
25 | /**
26 | * Parse mContent and update all fields
27 | */
28 | abstract public void update();
29 |
30 | /**
31 | * Returns raw string for storage from latest values
32 | */
33 | abstract public String toString();
34 |
35 | /**
36 | * Assign card string to given string. This value is used as
37 | * cache to improve performance when showing all notes.
38 | *
39 | * This method should be called only by the DatabaseHandler
40 | * when saving or updating note
41 | */
42 | public void setCardString(String cardString) {
43 | mCardString = cardString;
44 | }
45 |
46 | /**
47 | * Return the cached value of card string which will be used to
48 | * show in cards when listing all notes
49 | * @return
50 | */
51 | public String getCardStringCached() {
52 | return mCardString;
53 | }
54 |
55 | /**
56 | * Create a NoteContent object of appropriate type from given content
57 | * @param type Type of NoteContent
58 | * @param content Raw string of NoteContent
59 | * @return Object of a derived class of NoteContent of Note.Type=type
60 | */
61 | public static NoteContent fromString(Note.Type type, String content) {
62 | switch (type) {
63 | case TYPE_GENERIC:
64 | return new NoteContentGeneric(content);
65 | case TYPE_CARD:
66 | return new NoteContentCard(content);
67 | case TYPE_LOGIN:
68 | return new NoteContentLogin(content);
69 | default:
70 | throw new IllegalArgumentException("Invalid Note.Type '" + type + "' provided");
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/data/NoteContentGeneric.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.data;
2 |
3 | /**
4 | * Note Content for plain text notes
5 | */
6 | public class NoteContentGeneric extends NoteContent {
7 | public final static String TAG = "NoteContentGeneric";
8 |
9 | private String mContent;
10 |
11 | protected NoteContentGeneric(String content) {
12 | mContent = content;
13 | }
14 |
15 | @Override
16 | public String getCardString() {
17 | return mContent;
18 | }
19 |
20 | @Override
21 | public String getCardStringCached() {
22 | // Cache not required here as we use whole note to show
23 | return mContent;
24 | }
25 |
26 | @Override
27 | public void setCardString(String string) {
28 | // no implementation required
29 | }
30 |
31 | @Override
32 | public void update() {
33 | // no implementation required
34 | }
35 |
36 | @Override
37 | public String toString() {
38 | return mContent;
39 | }
40 | }
41 |
42 |
43 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/data/NoteContentLogin.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.data;
2 |
3 |
4 | import java.util.NoSuchElementException;
5 | import java.util.Scanner;
6 |
7 |
8 | /**
9 | * Implementation of NoteContent for Note.Type = LOGIN.
10 | */
11 | public class NoteContentLogin extends NoteContent {
12 | public final static String TAG = "NoteContentLogin";
13 |
14 | private String mUrl;
15 | private String mLogin;
16 | private String mPassword;
17 | private String mAdditionalNote;
18 |
19 | protected NoteContentLogin(String content) {
20 | super(content);
21 | mUrl = mLogin = mPassword = mAdditionalNote = "";
22 | }
23 |
24 | public NoteContentLogin(String url, String login, String password, String additionalNote) {
25 | super();
26 | mUrl = url;
27 | mLogin = login;
28 | mPassword = password;
29 | mAdditionalNote = additionalNote;
30 | }
31 |
32 | @Override
33 | public String getCardString() {
34 | //NOTE: We return HTML from this
35 | if (!mUpdated) {
36 | update();
37 | }
38 | String result = mUrl.trim();
39 | if (!result.equals("")) {
40 | result += "
";
41 | }
42 | if (!mLogin.equals("")) {
43 | result += String.format("Login: %s", mLogin);
44 | }
45 | return result;
46 | }
47 |
48 | @Override
49 | public void update() {
50 | Scanner scanner = new Scanner(mContent);
51 |
52 | try {
53 | mUrl = scanner.nextLine();
54 | mLogin = scanner.nextLine();
55 | mPassword = scanner.nextLine();
56 | mAdditionalNote = scanner.nextLine();
57 | while (scanner.hasNextLine()) {
58 | mAdditionalNote += "\n";
59 | mAdditionalNote += scanner.nextLine();
60 | }
61 | } catch (NoSuchElementException e) {
62 | // Log.e(TAG, "Insufficient data in scanner stream. Done reading.");
63 | }
64 |
65 | mUpdated = true;
66 | }
67 |
68 | @Override
69 | public String toString() {
70 | final String format = "%s\n%s\n%s\n%s";
71 | return String.format(format,
72 | mUrl, mLogin, mPassword, mAdditionalNote
73 | );
74 | }
75 |
76 | public void setUrl(String url) {
77 | mUrl = url;
78 | }
79 |
80 | public String getUrl() {
81 | if (!mUpdated) {
82 | update();
83 | }
84 | return mUrl;
85 | }
86 |
87 | public void setLogin(String login) {
88 | mLogin = login;
89 | }
90 |
91 | public String getLogin() {
92 | if (!mUpdated) {
93 | update();
94 | }
95 | return mLogin;
96 | }
97 |
98 | public void setPassword(String password) {
99 | mPassword = password;
100 | }
101 |
102 | public String getPassword() {
103 | if (!mUpdated) {
104 | update();
105 | }
106 | return mPassword;
107 | }
108 |
109 | public void setAdditionalNote(String additionalNote) {
110 | mAdditionalNote = additionalNote;
111 | }
112 |
113 | public String getAdditionalNote() {
114 | if (!mUpdated) {
115 | update();
116 | }
117 | return mAdditionalNote;
118 | }
119 | }
120 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/data/SealnoteAdapter.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.data;
2 |
3 | import android.database.Cursor;
4 | import android.widget.ListAdapter;
5 |
6 | public interface SealnoteAdapter extends ListAdapter {
7 | public Cursor getCursor();
8 | public void clearCursor();
9 | public void changeCursor(Cursor cursor);
10 | public void setFolder(Note.Folder folder, int tagid);
11 | public void startActionMode();
12 | }
13 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/settings/VersionPreference.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.settings;
2 |
3 | import android.content.Context;
4 | import android.content.pm.PackageInfo;
5 | import android.content.pm.PackageManager;
6 | import android.preference.Preference;
7 | import android.util.AttributeSet;
8 | import com.twistedplane.sealnote.R;
9 |
10 | public class VersionPreference extends Preference {
11 | public VersionPreference(Context context, AttributeSet attrs) {
12 | super(context, attrs);
13 | String version = "";
14 |
15 | final PackageManager packageManager = context.getPackageManager();
16 | if (packageManager != null) {
17 | try {
18 | PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
19 | version = String.format("%s (#%d)", packageInfo.versionName, packageInfo.versionCode);
20 | } catch (PackageManager.NameNotFoundException e) {
21 | //
22 | }
23 | setSummary(version);
24 | setTitle(R.string.version);
25 | setPersistent(false);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/utils/EasyDate.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.utils;
2 |
3 | import java.text.ParseException;
4 | import java.text.SimpleDateFormat;
5 | import java.util.Calendar;
6 | import java.util.Date;
7 | import java.util.TimeZone;
8 |
9 | /**
10 | * A helper class to easily get dates and times for use in notes and views.
11 | * Appropriate conversions from current timezone to GMT is made behind the
12 | * scenes.
13 | */
14 | public class EasyDate {
15 | public final static String TAG = "EasyDate";
16 |
17 | private final static String mDF_ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS zzz";
18 |
19 | final private Date mDate;
20 |
21 | /**
22 | * Return EasyDate object containing current timestamp.
23 | */
24 | public static EasyDate now() {
25 | return new EasyDate(new Date());
26 | }
27 |
28 | /**
29 | * Convert a date given in ISO format to EasyDate object
30 | *
31 | * @param date String containing date in ISO format
32 | * @return EasyDate object with given date
33 | * @throws ParseException
34 | */
35 | public static EasyDate fromIsoString(String date) throws ParseException {
36 | SimpleDateFormat df = new SimpleDateFormat(mDF_ISO_FORMAT);
37 | df.setTimeZone(TimeZone.getTimeZone("UTC"));
38 | return new EasyDate(df.parse(date));
39 | }
40 |
41 | /**
42 | * Create a EasyDate object using given java Date object
43 | */
44 | private EasyDate(Date date) {
45 | mDate = date;
46 | }
47 |
48 | /**
49 | * Convert current EasyDate object to ISO format string with UTC
50 | * as timezone.
51 | *
52 | * @return String containing ISO format UTC time.
53 | */
54 | public String toString() {
55 | SimpleDateFormat df = new SimpleDateFormat(mDF_ISO_FORMAT);
56 | df.setTimeZone(TimeZone.getTimeZone("UTC"));
57 | return df.format(mDate);
58 | }
59 |
60 | /**
61 | * Return a string containing datetime in user friendly easy to read
62 | * form.
63 | *
64 | * + If the date equal to today, just show time. Eg "12:40 PM"
65 | * + If year is equal to current year. Eg. "24th July"
66 | * + Else show date. Eg. "24th July 2011"
67 | */
68 | public String friendly() {
69 | Calendar now = Calendar.getInstance();
70 | Calendar previous = Calendar.getInstance();
71 | SimpleDateFormat df;
72 |
73 | previous.setTime(mDate);
74 |
75 | if (previous.get(Calendar.DATE) == now.get(Calendar.DATE) &&
76 | previous.get(Calendar.MONTH) == now.get(Calendar.MONTH) &&
77 | previous.get(Calendar.YEAR) == now.get(Calendar.YEAR)) {
78 | df = new SimpleDateFormat("hh:mm aa");
79 | } else if (previous.get(Calendar.YEAR) == now.get(Calendar.YEAR)) {
80 | df = new SimpleDateFormat("MMM dd");
81 |
82 | } else {
83 | df = new SimpleDateFormat("MMM dd, yyyy");
84 | }
85 | df.setTimeZone(TimeZone.getDefault());
86 | return df.format(mDate);
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/utils/FontCache.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.utils;
2 |
3 | import android.content.Context;
4 | import android.graphics.Typeface;
5 |
6 | import java.util.HashMap;
7 | import java.util.Map;
8 |
9 | /**
10 | * Cache to store external fonts.
11 | */
12 | public class FontCache {
13 | public static final String TAG = "FontCache";
14 |
15 | final private static Map mFontMap = new HashMap();
16 |
17 | public static Typeface getFont(Context context, String fontName){
18 | if (mFontMap.containsKey(fontName)){
19 | return mFontMap.get(fontName);
20 | }
21 | else {
22 | Typeface tf = Typeface.createFromAsset(context.getApplicationContext().getAssets(),
23 | "fonts/" + fontName + ".ttf");
24 | mFontMap.put(fontName, tf);
25 | return tf;
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/utils/Misc.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.utils;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.res.Resources;
7 | import android.view.Window;
8 | import android.view.WindowManager;
9 | import com.twistedplane.sealnote.PasswordActivity;
10 | import com.twistedplane.sealnote.R;
11 | import com.twistedplane.sealnote.SealnoteApplication;
12 |
13 | /**
14 | * Miscellaneous helper functions
15 | */
16 | public class Misc {
17 | public static final String TAG = "Misc";
18 |
19 | private Misc() {}
20 |
21 | /**
22 | * Get background color corresponsing to given code
23 | *
24 | * @param context Context used to get resources
25 | * @param code Code of background color
26 | * @return Background color integer value
27 | */
28 | public static int getColorForCode(Context context, int code) {
29 | Resources resources = context.getResources();
30 |
31 | switch (code) {
32 | case 0:
33 | return resources.getColor(R.color.card_background_color0);
34 | case 1:
35 | return resources.getColor(R.color.card_background_color1);
36 | case 2:
37 | return resources.getColor(R.color.card_background_color2);
38 | case 3:
39 | return resources.getColor(R.color.card_background_color3);
40 | case 4:
41 | return resources.getColor(R.color.card_background_color4);
42 | case 5:
43 | return resources.getColor(R.color.card_background_color5);
44 | case 6:
45 | return resources.getColor(R.color.card_background_color6);
46 | case 7:
47 | return resources.getColor(R.color.card_background_color7);
48 | }
49 |
50 | // return the first color
51 | return resources.getColor(R.color.card_background_color0);
52 | }
53 |
54 | /**
55 | * Checks if secure window preference is enabled and update appropriate flags.
56 | * Secure window prevents non-secure displays such as application switcher,
57 | * screenshots etc to access the content of window.
58 | *
59 | * @param activity Activity whose window is to be secured
60 | */
61 | public static void secureWindow(Activity activity) {
62 | boolean isSecureWindow = PreferenceHandler.isSecureWindowEnabled(activity);
63 | Window window = activity.getWindow();
64 |
65 | if (isSecureWindow) {
66 | window.setFlags(WindowManager.LayoutParams.FLAG_SECURE,
67 | WindowManager.LayoutParams.FLAG_SECURE);
68 | } else {
69 | window.setFlags(0, WindowManager.LayoutParams.FLAG_SECURE);
70 | }
71 | }
72 |
73 | public static boolean isPasswordLoaded() {
74 | return SealnoteApplication.getDatabase().getPassword() != null;
75 | }
76 |
77 | public static void startPasswordActivity(Activity activity) {
78 | Intent passwordIntent = new Intent(activity, PasswordActivity.class);
79 | activity.startActivity(passwordIntent);
80 | activity.finish();
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/utils/PreferenceHandler.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.utils;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 | import android.graphics.Typeface;
6 | import android.preference.PreferenceManager;
7 |
8 | /**
9 | * Helper class to easily access preference values used by SealNote.
10 | */
11 | public class PreferenceHandler {
12 | public final static String TAG = "PreferenceHandler";
13 |
14 | public static enum NoteListViewType {
15 | VIEW_TILES, VIEW_COLUMN, VIEW_SIMPLE_LIST
16 | }
17 |
18 | public static boolean isSecureWindowEnabled(Context c) {
19 | SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(c);
20 | return sharedPrefs.getBoolean("SecureWindow", false);
21 | }
22 |
23 | public static int getPasswordTimeout(Context c) {
24 | SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(c);
25 | return Integer.parseInt(sharedPrefs.getString("PasswordTimeout", "10000")); //FIXME: Get integer
26 | }
27 |
28 | public static boolean isDynamicFontSizeEnabled(Context c) {
29 | SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(c);
30 | return sharedPrefs.getBoolean("DynamicFontSize", true);
31 | }
32 |
33 | public static NoteListViewType getNoteListViewType(Context c) {
34 | SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(c);
35 | String result = sharedPrefs.getString("NoteListViewType", "tiles");
36 |
37 | if (result.equals("tiles")) {
38 | return NoteListViewType.VIEW_TILES;
39 | } else if (result.equals("column")) {
40 | return NoteListViewType.VIEW_COLUMN;
41 | } else if (result.equals("simplelist")) {
42 | return NoteListViewType.VIEW_SIMPLE_LIST;
43 | }
44 |
45 | return NoteListViewType.VIEW_TILES;
46 | }
47 |
48 | public static boolean isAutosaveEnabled(Context c) {
49 | SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(c);
50 | return sharedPrefs.getBoolean("AutoSave", false);
51 | }
52 |
53 | public static boolean isNoteActivityBackgroundEnabled(Context c) {
54 | SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(c);
55 | return sharedPrefs.getBoolean("NoteActivityBackground", true);
56 | }
57 |
58 | public static String getFontDefault() {
59 | return "SourceSansPro-Regular";
60 | }
61 |
62 | public static String getFontLight() {
63 | return "SourceSansPro-Light";
64 | }
65 |
66 | public static String getFontBold() {
67 | return "SourceSansPro-Bold";
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/utils/TimeoutHandler.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.utils;
2 |
3 | import android.app.Activity;
4 | import android.content.Intent;
5 | import android.os.Handler;
6 | import android.util.Log;
7 | import com.twistedplane.sealnote.PasswordActivity;
8 | import com.twistedplane.sealnote.SealnoteApplication;
9 | import com.twistedplane.sealnote.data.DatabaseHandler;
10 |
11 | /**
12 | * Handler implementing the password expiry and appropriate callbacks.
13 | * This is a singleton and manages timeout for complete application
14 | * with its own Handler instance.
15 | */
16 | public class TimeoutHandler implements Runnable {
17 | public final static String TAG = "TimeoutHandler";
18 |
19 | final private Handler mHandler = new Handler();
20 |
21 | /**
22 | * Are we timed out?
23 | */
24 | private boolean mTimedOut = true;
25 |
26 | /**
27 | * Singleton instance
28 | */
29 | final private static TimeoutHandler mInstance = new TimeoutHandler();
30 |
31 | private TimeoutHandler() {}
32 |
33 | /**
34 | * Reinitalize the timeout handler
35 | */
36 | public void init() {
37 | passwordTimeoutClear();
38 | mTimedOut = true;
39 | }
40 |
41 | /**
42 | * Get singleton instance.
43 | */
44 | public static TimeoutHandler instance() {
45 | return mInstance;
46 | }
47 |
48 | /**
49 | * Method run after timeout. Recycles database and set state
50 | * as timed out.
51 | */
52 | @Override
53 | public void run() {
54 | DatabaseHandler db = SealnoteApplication.getDatabase();
55 | db.recycle();
56 | mTimedOut = true;
57 | }
58 |
59 | /**
60 | * Remove any pending timeout callbacks and halt the state
61 | */
62 | public void passwordTimeoutClear() {
63 | mHandler.removeCallbacks(mInstance, null);
64 | mTimedOut = false;
65 | }
66 |
67 | /**
68 | * Resets any existing/pending callbacks and resets the timeout/state
69 | * by postDelaying another callback.
70 | */
71 | private void passwordTimeoutStart(Activity activity) {
72 | int timeout = PreferenceHandler.getPasswordTimeout(activity);
73 | passwordTimeoutClear();
74 | mHandler.postDelayed(mInstance, timeout);
75 | mTimedOut = false;
76 | }
77 |
78 | /**
79 | * Check if we have timed out, and if so start login activity. Otherwise
80 | * clear and halt state.
81 | *
82 | * @param activity Current active activity
83 | * @return true if we are timed out, else false
84 | */
85 | public boolean resume(Activity activity) {
86 | if (mTimedOut) {
87 | Log.d(TAG, "Timed out, starting password activity.");
88 | Intent intent = new Intent(activity, PasswordActivity.class);
89 | activity.startActivity(intent);
90 | activity.finish();
91 | } else {
92 | Log.d(TAG, "Back on time. Resuming activity.");
93 | passwordTimeoutClear();
94 | }
95 | return mTimedOut;
96 | }
97 |
98 | /**
99 | * Expire the state immediately ie. set state to timed out.
100 | * Usage example: logout button
101 | *
102 | * @param activity Current active activity to use
103 | */
104 | public void expire(Activity activity) {
105 | passwordTimeoutClear();
106 | run();
107 | resume(activity);
108 | }
109 |
110 | /**
111 | * Schedule a new timeout callback. Called from activity onPause
112 | * method
113 | *
114 | * @param activity Current active activity to use
115 | */
116 | public void pause(Activity activity) {
117 | passwordTimeoutStart(activity);
118 | }
119 | }
120 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/view/NoteGenericView.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.view;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.widget.EditText;
6 | import com.twistedplane.sealnote.data.Note;
7 | import com.twistedplane.sealnote.data.NoteContent;
8 | import com.twistedplane.sealnote.utils.FontCache;
9 | import com.twistedplane.sealnote.utils.PreferenceHandler;
10 |
11 | /**
12 | * View for simple plain text note content.
13 | */
14 | public class NoteGenericView extends EditText implements NoteView {
15 | public NoteGenericView(Context context) {
16 | super(context);
17 | init();
18 | }
19 |
20 | public NoteGenericView(Context context, AttributeSet attrs) {
21 | super(context, attrs);
22 | init();
23 | }
24 |
25 | public NoteGenericView(Context context, AttributeSet attrs, int defStyle) {
26 | super(context, attrs, defStyle);
27 | init();
28 | }
29 |
30 | public void init() {
31 | setTypeface(FontCache.getFont(getContext(), PreferenceHandler.getFontDefault())); //LOOK
32 | }
33 |
34 | /**
35 | * Returns NoteContent object with latest valuess
36 | */
37 | @Override
38 | public NoteContent getNoteContent() {
39 | return NoteContent.fromString(Note.Type.TYPE_GENERIC, getText().toString());
40 | }
41 |
42 | /**
43 | * Load values into View from given NoteContent object
44 | */
45 | @Override
46 | public void setNoteContent(NoteContent noteContent) {
47 | setText(noteContent.toString());
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/view/NoteLoginView.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.view;
2 |
3 | import android.content.Context;
4 | import android.text.TextWatcher;
5 | import android.util.AttributeSet;
6 | import android.view.LayoutInflater;
7 | import android.widget.EditText;
8 | import android.widget.LinearLayout;
9 | import com.twistedplane.sealnote.R;
10 | import com.twistedplane.sealnote.data.NoteContent;
11 | import com.twistedplane.sealnote.data.NoteContentLogin;
12 | import com.twistedplane.sealnote.utils.FontCache;
13 | import com.twistedplane.sealnote.utils.PreferenceHandler;
14 |
15 | /**
16 | * View for editing note content of Note.Type = Login
17 | */
18 | public class NoteLoginView extends LinearLayout implements NoteView {
19 | private EditText mUrl;
20 | private EditText mLogin;
21 | private EditText mPassword;
22 | private EditText mNote;
23 |
24 | public NoteLoginView(Context context) {
25 | super(context);
26 | init();
27 | }
28 |
29 | public NoteLoginView(Context context, AttributeSet attrs) {
30 | super(context, attrs);
31 | init();
32 | }
33 |
34 | public NoteLoginView(Context context, AttributeSet attrs, int defStyle) {
35 | super(context, attrs, defStyle);
36 | init();
37 | }
38 |
39 | private void init() {
40 | LayoutInflater.from(getContext()).inflate(R.layout.note_type_login_layout, this);
41 |
42 | mUrl = (EditText) findViewById(R.id.note_login_url);
43 | mLogin = (EditText) findViewById(R.id.note_login_name);
44 | mPassword = (EditText) findViewById(R.id.note_login_password);
45 | mNote = (EditText) findViewById(R.id.note_additional_note);
46 |
47 | mNote.setTypeface(FontCache.getFont(getContext(), PreferenceHandler.getFontDefault())); //LOOK
48 | }
49 |
50 | @Override
51 | public NoteContent getNoteContent() {
52 | return new NoteContentLogin(
53 | mUrl.getText().toString(),
54 | mLogin.getText().toString(),
55 | mPassword.getText().toString(),
56 | mNote.getText().toString()
57 | );
58 | }
59 |
60 | @Override
61 | public void setNoteContent(NoteContent noteContent) {
62 | NoteContentLogin noteContentLogin = (NoteContentLogin) noteContent;
63 |
64 | mUrl.setText(noteContentLogin.getUrl());
65 | mLogin.setText(noteContentLogin.getLogin());
66 | mPassword.setText(noteContentLogin.getPassword());
67 | mNote.setText(noteContentLogin.getAdditionalNote());
68 | }
69 |
70 | @Override
71 | public void setEnabled(boolean enabled) {
72 | super.setEnabled(enabled);
73 | mUrl.setEnabled(enabled);
74 | mLogin.setEnabled(enabled);
75 | mPassword.setEnabled(enabled);
76 | mNote.setEnabled(enabled);
77 | }
78 |
79 | @Override
80 | public void addTextChangedListener(TextWatcher textWatcher) {
81 | mUrl.addTextChangedListener(textWatcher);
82 | mLogin.addTextChangedListener(textWatcher);
83 | mPassword.addTextChangedListener(textWatcher);
84 | mNote.addTextChangedListener(textWatcher);
85 | }
86 | }
87 |
88 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/view/NoteView.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.view;
2 |
3 | import android.text.TextWatcher;
4 | import com.twistedplane.sealnote.data.NoteContent;
5 |
6 | /**
7 | * Interface for Views for editing note content.
8 | */
9 | public interface NoteView {
10 | /**
11 | * Returns NoteContent object with latest changes.
12 | */
13 | public NoteContent getNoteContent();
14 |
15 | /**
16 | * Load values into View from give NoteContent object
17 | */
18 | public void setNoteContent(NoteContent noteContent);
19 |
20 | /**
21 | * Add Text Watcher to all input views within this View
22 | */
23 | public void addTextChangedListener(TextWatcher textWatcher);
24 | }
25 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/view/simplelist/SimpleListAdapter.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.view.simplelist;
2 |
3 | import android.content.Context;
4 | import android.database.Cursor;
5 | import android.text.Html;
6 | import android.util.Log;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 | import android.widget.SimpleCursorAdapter;
10 | import android.widget.TextView;
11 | import com.twistedplane.sealnote.R;
12 | import com.twistedplane.sealnote.data.DatabaseHandler;
13 | import com.twistedplane.sealnote.data.Note;
14 | import com.twistedplane.sealnote.data.SealnoteAdapter;
15 | import com.twistedplane.sealnote.utils.EasyDate;
16 | import com.twistedplane.sealnote.utils.FontCache;
17 | import com.twistedplane.sealnote.utils.Misc;
18 | import com.twistedplane.sealnote.utils.PreferenceHandler;
19 |
20 | import java.text.ParseException;
21 |
22 | /**
23 | * Adapter for SimpleListView.
24 | */
25 | public class SimpleListAdapter extends SimpleCursorAdapter implements SealnoteAdapter {
26 | public final static String TAG = "SimpleListAdapter";
27 |
28 | public SimpleListAdapter(Context context, Cursor cursor) {
29 | super(
30 | context,
31 | R.layout.simple_list_item_2,
32 | cursor,
33 | new String[] { /* From columns to pick from cursor */
34 | DatabaseHandler.COL_TITLE,
35 | DatabaseHandler.COL_NOTE_EXTRA,
36 | DatabaseHandler.COL_EDITED
37 | },
38 | new int[] { /* Mapped resource ids in layout to columns */
39 | R.id.text1,
40 | R.id.text2,
41 | R.id.text3
42 | }
43 | );
44 | }
45 |
46 | /**
47 | * Close the cursor held by adapter
48 | */
49 | @Override
50 | public void clearCursor() {
51 | Cursor cursor = swapCursor(null);
52 | if (cursor != null) {
53 | cursor.close();
54 | }
55 | }
56 |
57 | @Override
58 | public void bindView(View view, Context context, Cursor cursor) {
59 | super.bindView(view, context, cursor);
60 |
61 | // Set strip color
62 | int color = cursor.getInt(cursor.getColumnIndex(DatabaseHandler.COL_COLOR));
63 | View colorStrip = view.findViewById(R.id.list_item_color);
64 | colorStrip.setBackgroundColor(Misc.getColorForCode(context, color));
65 | if (color == 0) {
66 | colorStrip.setVisibility(View.GONE);
67 | } else {
68 | colorStrip.setVisibility(View.VISIBLE);
69 | }
70 | }
71 |
72 | @Override
73 | public View newView(Context context, Cursor cursor, ViewGroup parent) {
74 | View view = super.newView(context, cursor, parent);
75 |
76 | TextView text1 = (TextView) view.findViewById(R.id.text1);
77 | TextView text2 = (TextView) view.findViewById(R.id.text2);
78 | TextView text3 = (TextView) view.findViewById(R.id.text3);
79 |
80 | text1.setTypeface(FontCache.getFont(context, PreferenceHandler.getFontDefault()));
81 | text2.setTypeface(FontCache.getFont(context, PreferenceHandler.getFontDefault()));
82 | text3.setTypeface(FontCache.getFont(context, PreferenceHandler.getFontDefault()));
83 |
84 | return view;
85 | }
86 |
87 | @Override
88 | public void setViewText(TextView v, String text) {
89 | if (v.getId() == R.id.text3) {
90 | // Edited data
91 | try {
92 | v.setText(EasyDate.fromIsoString(text).friendly());
93 | } catch (ParseException e) {
94 | Log.e(TAG, "Error parsing edited date from database.");
95 | v.setText("");
96 | }
97 | } else if (v.getId() == R.id.text2) {
98 | // Note content
99 | v.setText(Html.fromHtml(text).toString());
100 | } else {
101 | // Title
102 | v.setText(text);
103 | }
104 | }
105 |
106 | /**
107 | * Sets current folder in view
108 | */
109 | @Override
110 | public void setFolder(Note.Folder folder, int tagid) {
111 | // no implementation required
112 | }
113 |
114 | @Override
115 | public void startActionMode() {
116 | // no implementation required
117 | }
118 | }
119 |
120 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/view/staggeredgrid/StaggeredGridFragment.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.view.staggeredgrid;
2 |
3 | import android.database.Cursor;
4 | import android.util.Log;
5 | import android.view.ViewStub;
6 | import android.widget.AdapterView;
7 | import com.nhaarman.listviewanimations.swinginadapters.AnimationAdapter;
8 | import com.nhaarman.listviewanimations.swinginadapters.prepared.ScaleInAnimationAdapter;
9 | import com.twistedplane.sealnote.R;
10 | import com.twistedplane.sealnote.data.SealnoteAdapter;
11 | import com.twistedplane.sealnote.fragment.SealnoteFragment;
12 | import com.twistedplane.sealnote.utils.PreferenceHandler;
13 |
14 | /**
15 | * Fragment where all cards are listed in a staggered grid
16 | */
17 | public class StaggeredGridFragment extends SealnoteFragment {
18 | public final static String TAG = "StaggeredGridFragment";
19 |
20 | /**
21 | * Create and return adapter
22 | */
23 | @Override
24 | protected SealnoteAdapter createAdapter() {
25 | if (mAdapter == null) {
26 | mAdapter = new StaggeredGridAdapter(getActivity(), null);
27 | }
28 | return mAdapter;
29 | }
30 |
31 | /**
32 | * Inflate ViewStub with Staggered Grid View. If user has selected
33 | * VIEW_COLUMN mode, then we load singlecolumn view.
34 | *
35 | * @param stub ViewStub to be replaced with adapter view
36 | * @return StaggeredGridView
37 | */
38 | @Override
39 | protected AdapterView inflateAdapterView(ViewStub stub) {
40 | if (PreferenceHandler.getNoteListViewType(getActivity()) ==
41 | PreferenceHandler.NoteListViewType.VIEW_COLUMN) {
42 | stub.setLayoutResource(R.layout.singlecolumnview);
43 | } else {
44 | stub.setLayoutResource(R.layout.staggeredgrid);
45 | }
46 | return (AdapterView) stub.inflate();
47 | }
48 |
49 | /**
50 | * Load adapter to card grid view. Reload data from database. Also setup animations.
51 | */
52 | protected void loadAdapter(Cursor cursor) {
53 | Log.d(TAG, "Loading adapter into view");
54 | setAnimationAdapter();
55 | mAdapter.changeCursor(cursor);
56 | }
57 |
58 | /**
59 | * Set animation adapter for card grid view and make it card grid's external adapter.
60 | */
61 | private void setAnimationAdapter() {
62 | StaggeredGridAdapter dataAdapter = (StaggeredGridAdapter) mAdapter;
63 | StaggeredGridView adapterView = (StaggeredGridView) mAdapterView;
64 |
65 | AnimationAdapter animCardArrayAdapter = new ScaleInAnimationAdapter(dataAdapter);
66 |
67 | animCardArrayAdapter.setAnimationDurationMillis(1000);
68 | animCardArrayAdapter.setAnimationDelayMillis(500);
69 |
70 | animCardArrayAdapter.setAbsListView(adapterView);
71 | adapterView.setExternalAdapter(animCardArrayAdapter, dataAdapter);
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/Sealnote/src/main/java/com/twistedplane/sealnote/view/staggeredgrid/StaggeredGridView.java:
--------------------------------------------------------------------------------
1 | package com.twistedplane.sealnote.view.staggeredgrid;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.util.Log;
6 | import android.widget.ListAdapter;
7 | import com.twistedplane.sealnote.data.CardGridStaggeredCursorAdapter;
8 | import it.gmariotti.cardslib.library.extra.staggeredgrid.internal.CardGridStaggeredArrayAdapter;
9 | import it.gmariotti.cardslib.library.extra.staggeredgrid.view.CardGridStaggeredView;
10 |
11 | /**
12 | * Specialized CardGridStaggeredView class used in SealNote.
13 | *
14 | * + Add support for cursor adapter
15 | * + Changes to make column mode change as per latest Sealnote settings
16 | * preferences
17 | */
18 | public class StaggeredGridView extends CardGridStaggeredView {
19 | public final static String TAG = "StaggeredGridView";
20 |
21 | public StaggeredGridView(Context context) {
22 | super(context);
23 | }
24 |
25 | public StaggeredGridView(Context context, AttributeSet attrs) {
26 | super(context, attrs);
27 | }
28 |
29 | public StaggeredGridView(Context context, AttributeSet attrs, int defStyle) {
30 | super(context, attrs, defStyle);
31 | }
32 |
33 | /**
34 | * Uses CardGridStaggeredCursorAdapter to avoid dispatch to generic
35 | * ListAdapter version of this function which doesn't support this
36 | * kind of adapter.
37 | */
38 | public void setAdapter(CardGridStaggeredCursorAdapter adapter) {
39 | super.setAdapter(adapter);
40 | adapter.setRowLayoutId(list_card_layout_resourceID);
41 | adapter.setCardGridView(this);
42 | }
43 |
44 | /**
45 | * Uses CardGridStaggeredCursorAdapter to avoid dispatch to generic
46 | * ListAdapter version of this function which doesn't support this
47 | * kind of adapter.
48 | */
49 | public void setExternalAdapter(ListAdapter adapter, CardGridStaggeredCursorAdapter cardCursorAdapter) {
50 | setAdapter(adapter);
51 | cardCursorAdapter.setCardGridView(this);
52 | cardCursorAdapter.setRowLayoutId(list_card_layout_resourceID);
53 | }
54 |
55 | /**
56 | * Add support for CardGridStaggeredCursorAdapter.
57 | */
58 | @Override
59 | public void setAdapter(ListAdapter adapter) {
60 | if (adapter instanceof CardGridStaggeredArrayAdapter) {
61 | setAdapter((CardGridStaggeredArrayAdapter)adapter);
62 | } else if (adapter instanceof CardGridStaggeredCursorAdapter) {
63 | setAdapter((CardGridStaggeredCursorAdapter)adapter);
64 | } else {
65 | Log.w(TAG, "You are using a generic adapter. Pay attention: your adapter has to call cardGridArrayAdapter#getView method.");
66 | super.setAdapter(adapter);
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/anim/flipin.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
9 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/anim/flipout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
9 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_action_archive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_action_archive.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_action_archive_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_action_archive_light.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_action_collection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_action_collection.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_action_core_overflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_action_core_overflow.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_action_discard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_action_discard.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_action_discard_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_action_discard_light.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_action_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_action_new.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_action_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_action_refresh.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_action_save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_action_save.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_action_unarchive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_action_unarchive.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_action_unarchive_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_action_unarchive_light.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_home.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_menu_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_menu_color.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-hdpi/ic_navigation_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-hdpi/ic_navigation_drawer.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_action_archive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_action_archive.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_action_archive_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_action_archive_light.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_action_collection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_action_collection.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_action_core_overflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_action_core_overflow.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_action_discard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_action_discard.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_action_discard_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_action_discard_light.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_action_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_action_new.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_action_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_action_refresh.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_action_save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_action_save.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_action_unarchive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_action_unarchive.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_action_unarchive_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_action_unarchive_light.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_home.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_menu_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_menu_color.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-mdpi/ic_navigation_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-mdpi/ic_navigation_drawer.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_action_archive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_action_archive.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_action_archive_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_action_archive_light.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_action_collection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_action_collection.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_action_core_overflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_action_core_overflow.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_action_discard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_action_discard.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_action_discard_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_action_discard_light.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_action_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_action_new.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_action_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_action_refresh.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_action_save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_action_save.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_action_unarchive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_action_unarchive.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_action_unarchive_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_action_unarchive_light.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_home.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_menu_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_menu_color.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xhdpi/ic_navigation_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xhdpi/ic_navigation_drawer.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_action_archive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_action_archive.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_action_archive_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_action_archive_light.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_action_collection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_action_collection.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_action_core_overflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_action_core_overflow.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_action_discard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_action_discard.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_action_discard_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_action_discard_light.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_action_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_action_new.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_action_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_action_refresh.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_action_save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_action_save.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_action_unarchive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_action_unarchive.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_action_unarchive_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_action_unarchive_light.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_home.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_menu_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_menu_color.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxhdpi/ic_navigation_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxhdpi/ic_navigation_drawer.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/ab_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/ab_background.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/ab_background_archive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/ab_background_archive.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/ab_background_tag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/ab_background_tag.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/ab_background_trash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/ab_background_trash.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/actionbar_item_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/activated_background_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/bubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/button_background_darkblue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/button_background_darkblue.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/button_create_note.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/button_create_note_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/button_password_login.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/button_text_color_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_background_color0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
20 |
21 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_background_color1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
20 |
21 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_background_color2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_background_color3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_background_color4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_background_color5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_background_color6.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_background_color7.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_brand_americanexpress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/card_brand_americanexpress.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_brand_cirrus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/card_brand_cirrus.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_brand_diners.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/card_brand_diners.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_brand_discover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/card_brand_discover.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_brand_jcb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/card_brand_jcb.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_brand_maestro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/card_brand_maestro.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_brand_mastercard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/card_brand_mastercard.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_brand_unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/card_brand_unknown.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_brand_visa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/card_brand_visa.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_selector_color0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_selector_color1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_selector_color2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_selector_color3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_selector_color4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_selector_color5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_selector_color6.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/card_selector_color7.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/checked.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/drawer_text_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/intelligence_gathering.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/intelligence_gathering.jpg
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/list_button_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/no_card_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/no_card_background.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/note_type_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/password_button_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/password_button_pressed.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/passwordmeter_default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 | -
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/passwordmeter_good.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 | -
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/passwordmeter_ok.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 | -
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/passwordmeter_strong.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 | -
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/passwordmeter_weak.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 | -
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/simple_list_view_divider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/simple_list_view_item_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/textlines.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
8 |
9 |
12 |
13 |
14 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/drawable/theme_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/Sealnote/src/main/res/drawable/theme_color.png
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout-large/view_password_meter.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
17 |
18 |
26 |
27 |
37 |
38 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/about.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
16 |
17 |
27 |
28 |
36 |
37 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/actionbar_progress.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/activity_backup.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
13 |
21 |
22 |
30 |
39 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/activity_password.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
13 |
14 |
26 |
27 |
38 |
39 |
40 |
49 |
50 |
52 |
59 |
67 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/card_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
20 |
21 |
26 |
27 |
28 |
35 |
36 |
39 |
44 |
45 |
46 |
51 |
52 |
53 |
54 |
56 |
61 |
62 |
63 |
69 |
70 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/cardcontent.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
25 |
26 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/color_choose_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
17 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/drawer_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
17 |
23 |
37 |
38 |
43 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/drawer_tag_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/empty_tags.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/fragment_sealnote.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
14 |
15 |
22 |
23 |
28 |
29 |
30 |
31 |
32 |
33 |
43 |
48 |
58 |
59 |
60 |
71 |
72 |
73 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/main.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
14 |
15 |
16 |
24 |
32 |
33 |
42 |
43 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/note_type_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/note_type_generic.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
24 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/note_type_login.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/note_type_login_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
18 |
28 |
29 |
34 |
41 |
42 |
49 |
50 |
51 |
56 |
63 |
64 |
72 |
73 |
74 |
75 |
76 |
77 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/simple_list_item_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
21 |
22 |
32 |
41 |
42 |
49 |
50 |
51 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/simplelist.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/singlecolumnview.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/staggeredgrid.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/tag_rename_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
16 |
17 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/tags_edit_list_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
22 |
23 |
29 |
38 |
45 |
46 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/view_password_meter.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
17 |
18 |
30 |
31 |
38 |
39 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/layout/webview.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/menu/context_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/menu/main_activity_actionbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/menu/note_activity_actionbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
10 |
11 |
16 |
21 |
22 |
27 |
28 |
33 |
34 |
39 |
40 |
45 |
46 |
51 |
52 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/values-de/array.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 | - 10 Sekunden
11 | - 30 Sekunden
12 | - 1 Minute
13 | - 1,5 Minuten
14 | - 2 Minuten
15 | - 5 Minuten
16 |
17 |
18 |
19 | - 10000
20 | - 30000
21 | - 60000
22 | - 90000
23 | - 120000
24 | - 300000
25 |
26 |
27 |
28 |
29 | - Platten
30 | - Einzelne Spalte
31 | - Einfache Liste
32 |
33 |
34 |
35 | - tiles
36 | - column
37 | - simplelist
38 |
39 |
40 |
41 |
42 | - Notizen
43 | - Archiv
44 | - Müll
45 |
46 |
47 |
48 | - @drawable/ic_action_collection
49 | - @drawable/ic_action_archive
50 | - @drawable/ic_action_discard
51 |
52 |
53 |
54 |
55 |
56 | - Schwaches
57 | - Soso
58 | - Gutes
59 | - Starkes
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/values-it/array.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 | - 10 secondi
11 | - 30 secondi
12 | - 1 minuto
13 | - 1,5 minuti
14 | - 2 minuti
15 | - 5 minuti
16 |
17 |
18 |
19 | - 10000
20 | - 30000
21 | - 60000
22 | - 90000
23 | - 120000
24 | - 300000
25 |
26 |
27 |
28 |
29 | - Tessere
30 | - Colonna singola
31 | - Lista semplice
32 |
33 |
34 |
35 | - tiles
36 | - column
37 | - simplelist
38 |
39 |
40 |
41 |
42 | - Note
43 | - Archivio
44 | - Cestino
45 |
46 |
47 |
48 | - @drawable/ic_action_collection
49 | - @drawable/ic_action_archive
50 | - @drawable/ic_action_discard
51 |
52 |
53 |
54 |
55 |
56 | - Debole
57 | - Così così
58 | - Buona
59 | - Ottima
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/values-large/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 1dp
4 |
5 | 25dp
6 | 10dp
7 | 25dp
8 |
9 | 14dp
10 | 10dp
11 |
12 |
13 | 6dp
14 | 14dp
15 | 14dp
16 | 20sp
17 | 22sp
18 |
19 |
20 | 30sp
21 | 28sp
22 |
23 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
11 | 64dp
12 |
13 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/values/array.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 | - 10 seconds
11 | - 30 seconds
12 | - 1 minute
13 | - 1.5 minutes
14 | - 2 minutes
15 | - 5 minutes
16 |
17 |
18 |
19 | - 10000
20 | - 30000
21 | - 60000
22 | - 90000
23 | - 120000
24 | - 300000
25 |
26 |
27 |
28 |
29 | - Tiles
30 | - Single Column
31 | - Simple List
32 |
33 |
34 |
35 | - tiles
36 | - column
37 | - simplelist
38 |
39 |
40 |
41 |
42 | - Notes
43 | - Archive
44 | - Trash
45 |
46 |
47 |
48 | - @drawable/ic_action_collection
49 | - @drawable/ic_action_archive
50 | - @drawable/ic_action_discard
51 |
52 |
53 |
54 |
55 |
56 | - Weak
57 | - So-so
58 | - Good
59 | - Strong
60 |
61 |
62 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 | - #ffececec
10 |
11 | - #0099bb
12 | - #005b70
13 | - #55000000
14 |
15 | - #ff666666
16 | - #ff005b70
17 |
18 | - #00000000
19 | - #22ffffff
20 | - #FF0099CC
21 | - #de000000
22 | - #44171717
23 | @color/note_foreground
24 | #bb000000
25 |
26 | #def0f0f0
27 |
28 | - #ffd3d3d3
29 | @color/pressed_grey
30 |
31 |
32 | #ffe0e0e0
33 | #fff4f4f4
34 | #fff4f4f4
35 |
36 |
37 |
38 | #ffffffff
39 | #ffffbb22
40 | #ffeeee22
41 | #ffbbe535
42 | #ff66ccdd
43 | #ff77ddbb
44 | #ffb5c5c5
45 | #fff56545
46 |
47 |
48 | - @color/card_background_color0
49 | - @color/card_background_color1
50 | - @color/card_background_color2
51 | - @color/card_background_color3
52 | - @color/card_background_color4
53 | - @color/card_background_color5
54 | - @color/card_background_color6
55 | - @color/card_background_color7
56 |
57 |
58 |
59 | - color0
60 | - color1
61 | - color2
62 | - color3
63 | - color4
64 | - color5
65 | - color6
66 | - color7
67 |
68 |
69 |
--------------------------------------------------------------------------------
/Sealnote/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 | 16dp
10 | 16dp
11 |
12 | 2dp
13 | 0dp
14 |
15 |
18 |
19 |
20 | 8dp
21 | 8dp
22 | 2dp
23 | 6dp
24 |
25 |
26 | 0dp
27 | 0dp
28 | 0dp
29 | 0dp
30 |
31 |
32 | 14sp
33 | 16sp
34 |
35 |
36 | 0dip
37 |
38 |
41 |
42 |
43 |
44 | 18dp
45 | 14dp
46 |
47 | 12sp
48 |
49 |
50 |
53 | 36dp
54 | 36dp
55 |
56 | 28dp
57 | 18dp
58 |
59 |
60 | 8dp
61 | 2dp
62 | 8dp
63 |
64 |
67 | 20sp
68 |
69 | 8dp
70 | 8dp
71 |
72 |
73 | 2dp
74 | 10dp
75 | 10dp
76 | 18sp
77 |
78 |
79 | 0dp
80 |
81 |
82 | 24sp
83 | 22sp
84 |
85 |
86 |
--------------------------------------------------------------------------------
/TODO.md:
--------------------------------------------------------------------------------
1 | Sealnote TODO
2 | =============
3 |
4 | 9 June 2014 - 15 June 2014
5 | --------------------------
6 |
7 | * [DONE] Basic functionality and UI
8 | * [DONE] Date created/edited in Note Activity
9 | * [DONE] Date edited show on Note Activity
10 | * [DONE] Colors in note
11 | * [DONE] Database encryption
12 | * [DONE] Password login screen
13 | * [DONE] [FIX] Dynamic font size
14 | * [DONE] Minimum height of cards
15 | * [DONE] Multiple select and delete
16 | * [DONE] Application Icon
17 | * [DONE] Color Picker widget for note
18 |
19 | 21st June 2014 - 30th June 2014
20 | -------------------------------
21 | * [DONE] Expire password after timeout
22 | * [DONE] Change password
23 | * [DONE] Select pre-defined colors for note
24 |
25 | 1st July 2014 - 7th July 2014
26 | -----------------------------
27 | * [DONE] Single column, multi-column layout
28 | * [DONE] Uniform font preference
29 | * [DONE] PreferenceManager helper class
30 | * [DONE] Drawable on grid when no cards are there
31 | * [DONE] Margin between cards
32 |
33 | 8th July 2014 - 15th July 2014
34 | ------------------------------
35 | * [DONE] ActionBar theming and icons
36 | * [DONE] Folders - All notes, Archive, Trash
37 | * [DONE] Note Types - Password, Card
38 | * [DONE] Switch SealnoteActivty to Fragment
39 | * [DONE] NoteType and NoteView abstraction
40 |
41 | 15th July 2014 - 22nd July 2014
42 | -------------------------------
43 | * [DONE] Note Views - SingleColumn, Grid, Tiles and preferences
44 | * [DONE] AdapterLoader to Loader Task
45 | * Note View - Grid
46 | * Search notes
47 | * Import/Export notes
48 | * Backup database to server
49 | * About in Settings
50 | * FIX: Screen-off. If there is no lockscreen, screen off doesn't result in
51 | password expiry
52 | * FIX: Save state of activity
53 | * FIX: Continue NoteActivity after unlock if required
54 | * Use fragments
55 | * List mode
56 |
57 |
58 | * Tags
59 | * Card header menu
60 | * Archive and Trash
61 | * Faster encrypted storage engine
62 |
63 | * MultiMode in AndroidStageredGrid library
64 | * [PROGRESS] LongPress in AndroidStaggeredGrid library
65 |
--------------------------------------------------------------------------------
/aFileChooser/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | aFileChooser
4 |
5 |
6 |
7 |
8 |
9 | com.android.ide.eclipse.adt.ResourceManagerBuilder
10 |
11 |
12 |
13 |
14 | com.android.ide.eclipse.adt.PreCompilerBuilder
15 |
16 |
17 |
18 |
19 | org.eclipse.jdt.core.javabuilder
20 |
21 |
22 |
23 |
24 | com.android.ide.eclipse.adt.ApkBuilder
25 |
26 |
27 |
28 |
29 |
30 | com.android.ide.eclipse.adt.AndroidNature
31 | org.eclipse.jdt.core.javanature
32 |
33 |
34 |
--------------------------------------------------------------------------------
/aFileChooser/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/aFileChooser/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | jcenter()
4 | }
5 | dependencies {
6 | classpath 'com.android.tools.build:gradle:2.3.0'
7 | }
8 | }
9 |
10 | apply plugin: 'com.android.library'
11 |
12 | dependencies {
13 | compile 'com.android.support:support-v4:25.1.1'
14 | }
15 |
16 | android {
17 | compileSdkVersion 25
18 | buildToolsVersion "25.0.2"
19 |
20 | defaultConfig {
21 | minSdkVersion 14
22 | targetSdkVersion 25
23 | }
24 |
25 | sourceSets {
26 | main {
27 | manifest.srcFile 'AndroidManifest.xml'
28 | java.srcDirs = ['src']
29 | resources.srcDirs = ['src']
30 | res.srcDirs = ['res']
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/aFileChooser/proguard.cfg:
--------------------------------------------------------------------------------
1 | -optimizationpasses 5
2 | -dontusemixedcaseclassnames
3 | -dontskipnonpubliclibraryclasses
4 | -dontpreverify
5 | -verbose
6 | -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
7 |
8 | -keep public class * extends android.app.Activity
9 | -keep public class * extends android.app.Application
10 | -keep public class * extends android.app.Service
11 | -keep public class * extends android.content.BroadcastReceiver
12 | -keep public class * extends android.content.ContentProvider
13 | -keep public class * extends android.app.backup.BackupAgentHelper
14 | -keep public class * extends android.preference.Preference
15 | -keep public class com.android.vending.licensing.ILicensingService
16 |
17 | -keepclasseswithmembernames class * {
18 | native ;
19 | }
20 |
21 | -keepclasseswithmembers class * {
22 | public (android.content.Context, android.util.AttributeSet);
23 | }
24 |
25 | -keepclasseswithmembers class * {
26 | public (android.content.Context, android.util.AttributeSet, int);
27 | }
28 |
29 | -keepclassmembers class * extends android.app.Activity {
30 | public void *(android.view.View);
31 | }
32 |
33 | -keepclassmembers enum * {
34 | public static **[] values();
35 | public static ** valueOf(java.lang.String);
36 | }
37 |
38 | -keep class * implements android.os.Parcelable {
39 | public static final android.os.Parcelable$Creator *;
40 | }
41 |
--------------------------------------------------------------------------------
/aFileChooser/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system use,
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 |
10 | # Project target.
11 | target=android-19
12 | android.library=true
13 |
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-hdpi/ic_chooser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-hdpi/ic_chooser.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-hdpi/ic_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-hdpi/ic_file.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-hdpi/ic_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-hdpi/ic_folder.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-hdpi/ic_provider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-hdpi/ic_provider.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-mdpi/ic_chooser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-mdpi/ic_chooser.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-mdpi/ic_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-mdpi/ic_file.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-mdpi/ic_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-mdpi/ic_folder.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-mdpi/ic_provider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-mdpi/ic_provider.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-xhdpi/ic_chooser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-xhdpi/ic_chooser.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-xhdpi/ic_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-xhdpi/ic_file.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-xhdpi/ic_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-xhdpi/ic_folder.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-xhdpi/ic_provider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-xhdpi/ic_provider.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-xxhdpi/ic_chooser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-xxhdpi/ic_chooser.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-xxhdpi/ic_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-xxhdpi/ic_file.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-xxhdpi/ic_folder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-xxhdpi/ic_folder.png
--------------------------------------------------------------------------------
/aFileChooser/res/drawable-xxhdpi/ic_provider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/aFileChooser/res/drawable-xxhdpi/ic_provider.png
--------------------------------------------------------------------------------
/aFileChooser/res/layout/file.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
21 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-ca/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Carpeta buida
5 | S\'ha tret o desmuntat l\'emmagatzematge.
6 | Seleccioneu un fitxer
7 | Error en seleccionar el fitxer
8 |
9 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-de/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Leerer Ordner
4 | Speicher wurde entfernt.
5 | Wähle eine Datei
6 | Fehler beim Öffnen der Datei
7 |
8 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-es/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Directorio vacío
5 | Se ha retirado o desmontado el almacenamiento.
6 | Seleccione un archivo
7 | Error al seleccionar el archivo
8 |
9 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-fr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Dossier vide
5 | Le stockage a été enlevé ou démonté.
6 | Sélectionnez un fichier
7 | Erreur lors de la sélection du fichier
8 |
9 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-ga/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Comhadlann fholamh
5 | Baineadh amach an gléas stórála nó dínascadh é.
6 | Roghnaigh comhad
7 | Tharla botún fad is a bhí comhad á roghnú
8 |
9 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-it/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Directory vuota
5 | Lo spazio di archiviazione è stato rimosso o smontato.
6 | Selezionare un file
7 | Errore nel selezionare il File
8 |
9 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-ja/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | 空のディレクトリ
19 | ストレージが削除されたか、アンマウントされました。
20 | ファイルを選択
21 | ファイルの選択時にエラー
22 | 内部ストレージ
23 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-ko/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 빈 디렉토리
5 | 저장소가 제거되었습니다.
6 | 파일 선택
7 | 파일 선택 오류
8 |
9 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-pl/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Pusty katalog
5 | Pamięć została usunięta lub odmontowana.
6 | Wybierz plik
7 | Błąd, podczas wybierania pliku
8 |
9 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-pt-rBR/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Pasta Vazia
5 | Unidade externa removida ou não preparada.
6 | Selecione um Arquivo
7 | Erro ao selecionar o Arquivo
8 |
9 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-ru/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Пустая папка
5 | Storage was removed or unmounted.
6 | Выберите файл
7 | Ошибка при выборе файла
8 |
9 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-v11/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | Choose a file
19 |
--------------------------------------------------------------------------------
/aFileChooser/res/values-v19/bool.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | false
5 | true
6 |
7 |
--------------------------------------------------------------------------------
/aFileChooser/res/values/bool.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | true
5 | false
6 |
7 |
--------------------------------------------------------------------------------
/aFileChooser/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | 0dp
19 | 16dp
20 |
--------------------------------------------------------------------------------
/aFileChooser/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 | Empty Directory
19 | Storage was removed or unmounted.
20 | Select a file
21 | Error selecting File
22 | Internal storage
23 |
--------------------------------------------------------------------------------
/aFileChooser/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
28 |
29 |
--------------------------------------------------------------------------------
/aFileChooser/res/xml/mimetypes.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/aFileChooser/src/com/ipaulpro/afilechooser/FileListAdapter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2012 Paul Burke
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.ipaulpro.afilechooser;
18 |
19 | import android.content.Context;
20 | import android.view.LayoutInflater;
21 | import android.view.View;
22 | import android.view.ViewGroup;
23 | import android.widget.BaseAdapter;
24 | import android.widget.TextView;
25 |
26 | import java.io.File;
27 | import java.util.ArrayList;
28 | import java.util.List;
29 |
30 | /**
31 | * List adapter for Files.
32 | *
33 | * @version 2013-12-11
34 | * @author paulburke (ipaulpro)
35 | */
36 | public class FileListAdapter extends BaseAdapter {
37 |
38 | private final static int ICON_FOLDER = R.drawable.ic_folder;
39 | private final static int ICON_FILE = R.drawable.ic_file;
40 |
41 | private final LayoutInflater mInflater;
42 |
43 | private List mData = new ArrayList();
44 |
45 | public FileListAdapter(Context context) {
46 | mInflater = LayoutInflater.from(context);
47 | }
48 |
49 | public void add(File file) {
50 | mData.add(file);
51 | notifyDataSetChanged();
52 | }
53 |
54 | public void remove(File file) {
55 | mData.remove(file);
56 | notifyDataSetChanged();
57 | }
58 |
59 | public void insert(File file, int index) {
60 | mData.add(index, file);
61 | notifyDataSetChanged();
62 | }
63 |
64 | public void clear() {
65 | mData.clear();
66 | notifyDataSetChanged();
67 | }
68 |
69 | @Override
70 | public File getItem(int position) {
71 | return mData.get(position);
72 | }
73 |
74 | @Override
75 | public long getItemId(int position) {
76 | return position;
77 | }
78 |
79 | @Override
80 | public int getCount() {
81 | return mData.size();
82 | }
83 |
84 | public List getListItems() {
85 | return mData;
86 | }
87 |
88 | /**
89 | * Set the list items without notifying on the clear. This prevents loss of
90 | * scroll position.
91 | *
92 | * @param data
93 | */
94 | public void setListItems(List data) {
95 | mData = data;
96 | notifyDataSetChanged();
97 | }
98 |
99 | @Override
100 | public View getView(int position, View convertView, ViewGroup parent) {
101 | View row = convertView;
102 |
103 | if (row == null)
104 | row = mInflater.inflate(R.layout.file, parent, false);
105 |
106 | TextView view = (TextView) row;
107 |
108 | // Get the file at the current position
109 | final File file = getItem(position);
110 |
111 | // Set the TextView as the file name
112 | view.setText(file.getName());
113 |
114 | // If the item is not a directory, use the file icon
115 | int icon = file.isDirectory() ? ICON_FOLDER : ICON_FILE;
116 | view.setCompoundDrawablesWithIntrinsicBounds(icon, 0, 0, 0);
117 |
118 | return row;
119 | }
120 |
121 | }
--------------------------------------------------------------------------------
/aFileChooser/src/com/ipaulpro/afilechooser/FileListFragment.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2013 Paul Burke
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.ipaulpro.afilechooser;
18 |
19 | import android.app.Activity;
20 | import android.os.Bundle;
21 | import android.os.Environment;
22 | import android.support.v4.app.ListFragment;
23 | import android.support.v4.app.LoaderManager;
24 | import android.support.v4.content.Loader;
25 | import android.view.View;
26 | import android.widget.ListView;
27 |
28 | import java.io.File;
29 | import java.util.List;
30 |
31 | /**
32 | * Fragment that displays a list of Files in a given path.
33 | *
34 | * @version 2013-12-11
35 | * @author paulburke (ipaulpro)
36 | */
37 | public class FileListFragment extends ListFragment implements
38 | LoaderManager.LoaderCallbacks> {
39 |
40 | /**
41 | * Interface to listen for events.
42 | */
43 | public interface Callbacks {
44 | /**
45 | * Called when a file is selected from the list.
46 | *
47 | * @param file The file selected
48 | */
49 | public void onFileSelected(File file);
50 | }
51 |
52 | private static final int LOADER_ID = 0;
53 |
54 | private FileListAdapter mAdapter;
55 | private String mPath;
56 |
57 | private Callbacks mListener;
58 |
59 | /**
60 | * Create a new instance with the given file path.
61 | *
62 | * @param path The absolute path of the file (directory) to display.
63 | * @return A new Fragment with the given file path.
64 | */
65 | public static FileListFragment newInstance(String path) {
66 | FileListFragment fragment = new FileListFragment();
67 | Bundle args = new Bundle();
68 | args.putString(FileChooserActivity.PATH, path);
69 | fragment.setArguments(args);
70 |
71 | return fragment;
72 | }
73 |
74 | @Override
75 | public void onAttach(Activity activity) {
76 | super.onAttach(activity);
77 |
78 | try {
79 | mListener = (Callbacks) activity;
80 | } catch (ClassCastException e) {
81 | throw new ClassCastException(activity.toString()
82 | + " must implement FileListFragment.Callbacks");
83 | }
84 | }
85 |
86 | @Override
87 | public void onCreate(Bundle savedInstanceState) {
88 | super.onCreate(savedInstanceState);
89 |
90 | mAdapter = new FileListAdapter(getActivity());
91 | mPath = getArguments() != null ? getArguments().getString(
92 | FileChooserActivity.PATH) : Environment
93 | .getExternalStorageDirectory().getAbsolutePath();
94 | }
95 |
96 | @Override
97 | public void onActivityCreated(Bundle savedInstanceState) {
98 | setEmptyText(getString(R.string.empty_directory));
99 | setListAdapter(mAdapter);
100 | setListShown(false);
101 |
102 | getLoaderManager().initLoader(LOADER_ID, null, this);
103 |
104 | super.onActivityCreated(savedInstanceState);
105 | }
106 |
107 | @Override
108 | public void onListItemClick(ListView l, View v, int position, long id) {
109 | FileListAdapter adapter = (FileListAdapter) l.getAdapter();
110 | if (adapter != null) {
111 | File file = (File) adapter.getItem(position);
112 | mPath = file.getAbsolutePath();
113 | mListener.onFileSelected(file);
114 | }
115 | }
116 |
117 | @Override
118 | public Loader> onCreateLoader(int id, Bundle args) {
119 | return new FileLoader(getActivity(), mPath);
120 | }
121 |
122 | @Override
123 | public void onLoadFinished(Loader> loader, List data) {
124 | mAdapter.setListItems(data);
125 |
126 | if (isResumed())
127 | setListShown(true);
128 | else
129 | setListShownNoAnimation(true);
130 | }
131 |
132 | @Override
133 | public void onLoaderReset(Loader> loader) {
134 | mAdapter.clear();
135 | }
136 | }
137 |
--------------------------------------------------------------------------------
/aFileChooser/src/com/ipaulpro/afilechooser/FileLoader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2013 Paul Burke
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.ipaulpro.afilechooser;
18 |
19 | import android.content.Context;
20 | import android.os.FileObserver;
21 | import android.support.v4.content.AsyncTaskLoader;
22 |
23 | import com.ipaulpro.afilechooser.utils.FileUtils;
24 |
25 | import java.io.File;
26 | import java.util.ArrayList;
27 | import java.util.Arrays;
28 | import java.util.List;
29 |
30 | /**
31 | * Loader that returns a list of Files in a given file path.
32 | *
33 | * @version 2013-12-11
34 | * @author paulburke (ipaulpro)
35 | */
36 | public class FileLoader extends AsyncTaskLoader> {
37 |
38 | private static final int FILE_OBSERVER_MASK = FileObserver.CREATE
39 | | FileObserver.DELETE | FileObserver.DELETE_SELF
40 | | FileObserver.MOVED_FROM | FileObserver.MOVED_TO
41 | | FileObserver.MODIFY | FileObserver.MOVE_SELF;
42 |
43 | private FileObserver mFileObserver;
44 |
45 | private List mData;
46 | private String mPath;
47 |
48 | public FileLoader(Context context, String path) {
49 | super(context);
50 | this.mPath = path;
51 | }
52 |
53 | @Override
54 | public List loadInBackground() {
55 |
56 | ArrayList list = new ArrayList();
57 |
58 | // Current directory File instance
59 | final File pathDir = new File(mPath);
60 |
61 | // List file in this directory with the directory filter
62 | final File[] dirs = pathDir.listFiles(FileUtils.sDirFilter);
63 | if (dirs != null) {
64 | // Sort the folders alphabetically
65 | Arrays.sort(dirs, FileUtils.sComparator);
66 | // Add each folder to the File list for the list adapter
67 | for (File dir : dirs)
68 | list.add(dir);
69 | }
70 |
71 | // List file in this directory with the file filter
72 | final File[] files = pathDir.listFiles(FileUtils.sFileFilter);
73 | if (files != null) {
74 | // Sort the files alphabetically
75 | Arrays.sort(files, FileUtils.sComparator);
76 | // Add each file to the File list for the list adapter
77 | for (File file : files)
78 | list.add(file);
79 | }
80 |
81 | return list;
82 | }
83 |
84 | @Override
85 | public void deliverResult(List data) {
86 | if (isReset()) {
87 | onReleaseResources(data);
88 | return;
89 | }
90 |
91 | List oldData = mData;
92 | mData = data;
93 |
94 | if (isStarted())
95 | super.deliverResult(data);
96 |
97 | if (oldData != null && oldData != data)
98 | onReleaseResources(oldData);
99 | }
100 |
101 | @Override
102 | protected void onStartLoading() {
103 | if (mData != null)
104 | deliverResult(mData);
105 |
106 | if (mFileObserver == null) {
107 | mFileObserver = new FileObserver(mPath, FILE_OBSERVER_MASK) {
108 | @Override
109 | public void onEvent(int event, String path) {
110 | onContentChanged();
111 | }
112 | };
113 | }
114 | mFileObserver.startWatching();
115 |
116 | if (takeContentChanged() || mData == null)
117 | forceLoad();
118 | }
119 |
120 | @Override
121 | protected void onStopLoading() {
122 | cancelLoad();
123 | }
124 |
125 | @Override
126 | protected void onReset() {
127 | onStopLoading();
128 |
129 | if (mData != null) {
130 | onReleaseResources(mData);
131 | mData = null;
132 | }
133 | }
134 |
135 | @Override
136 | public void onCanceled(List data) {
137 | super.onCanceled(data);
138 |
139 | onReleaseResources(data);
140 | }
141 |
142 | protected void onReleaseResources(List data) {
143 |
144 | if (mFileObserver != null) {
145 | mFileObserver.stopWatching();
146 | mFileObserver = null;
147 | }
148 | }
149 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:2.3.0'
9 | }
10 | }
11 |
12 | allprojects {
13 | repositories {
14 | jcenter()
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/data/NoCardBackground.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/data/NoCardBackground.xcf
--------------------------------------------------------------------------------
/data/ic_menu_color.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/data/ic_menu_color.xcf
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Settings specified in this file will override any Gradle settings
5 | # configured through the IDE.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
--------------------------------------------------------------------------------
/gradle/gradle.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/gradle/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/gradle/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Oct 28 22:46:41 IST 2014
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-1.12-bin.zip
7 |
--------------------------------------------------------------------------------
/gradle/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sun Mar 12 03:28:50 PDT 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/playstore-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vishesh/sealnote/221149cacd221e40d3990ee60524ca071fe30796/playstore-icon.png
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':Sealnote', ':aFileChooser'
2 |
--------------------------------------------------------------------------------