konradrenner / kolabnotes-android Goto Github PK
View Code? Open in Web Editor NEWNote taking app with integrated Kolab sync
License: GNU Lesser General Public License v3.0
Note taking app with integrated Kolab sync
License: GNU Lesser General Public License v3.0
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.kore.kolabnotes.android/org.kore.kolabnotes.android.DetailActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.kore.kolab.notes.Notebook.getSummary()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at
I understand there used to be but afaict this was discontinued some time ago. Since I can't find an email address or twitter handle linked to from this github repo I am unsure how the author envisions me sending him a message.
I'd be very interested in testing the app, though.
Translate the app to different languages
I don't know the (hardcoded?) sync interval yet, but it would be nice to have the interval configurable.
Either via a selection (multiple steps from 5 minutes to 24 hours) our simply by entering the number of minutes.
Create a list widget which displays notes of a specific account/root folder/tag/notebook. Notes should be displayed in a list an when an item is selected, this note should be openend in the DetailActivity of the app.
Create a list widget which displays notebooks of a specific account/root folder. Notebooks displayed in a list an when an item is selected, this notebook should be openend in the MainActivity of the app (the notes of this notebook should be shown in the MainActivity).
Create an AboutDialog/Fragment/Activity maybe use this for easy implementation: https://github.com/gao746700783/AboutLibraries
At the moment, the app changes the selected notebook when returning from an DetailActivity to the MainActivity. The notebook should not change.
It may be nice eye candy to see the notes flying into the app when you see it first, but having that effect every time you just want to look something up, and even on switching between portrait and landscape mode is kind of annoying ;-)
Integrate or implement a rich text editor which supports rich text as formatted by Kolab libraries (HTML-Format). Replace the EditText-View of the description field with the richt text editor in the DetailsActivity.
Good starting point is maybe here: http://stackoverflow.com/questions/26712606/simple-richtext-editor-in-android
Notes which contains images are downloaded and displayed correct, but when a note is created or edited in the app, the sync does not work correct (the note is not shown in the webinterface because the kolab.xml is empty).
It is possible to detect which folders have notes in them. This would alleviate the need to set the root notes folder (even if the default is usually correct) and, more importantly, remove the requirement that to be seen all notes folders must be children of that one top-level folder. Given that by default the web UI does not do this, this would make a nice improvement to the user experience when using both the web UI and the Android app.
The way notes folders are detected (and all other similar folders) is to get the metadata for folders (yeah .. all of them .. hooray! :) for the following keys:
/shared/vendor/kolab/folder-type
/private/vendor/kolab/folder-type
The values according to libkolab (Qt/C++ lib used by various bits of Kolab clients):
static const struct {
const char *name;
const char *label;
} folderTypeData[] = {
{ KOLAB_FOLDER_TYPE_MAIL, "" },
{ KOLAB_FOLDER_TYPE_CONTACT, I18N_NOOP( "Contacts" ) },
{ KOLAB_FOLDER_TYPE_EVENT, I18N_NOOP( "Calendar" ) },
{ KOLAB_FOLDER_TYPE_TASK, I18N_NOOP( "Tasks" ) },
{ KOLAB_FOLDER_TYPE_JOURNAL, I18N_NOOP( "Journal" ) },
{ KOLAB_FOLDER_TYPE_NOTE, I18N_NOOP( "Notes" ) },
{ KOLAB_FOLDER_TYPE_CONFIGURATION, I18N_NOOP( "Configuration" ) },
{ KOLAB_FOLDER_TYPE_FREEBUSY, I18N_NOOP( "Freebusy" ) },
{ KOLAB_FOLDER_TYPE_FILE, I18N_NOOP( "Files" ) }
So "Notes" is what it should be looking for. This is obviously more involved (going through all folders, checking when new folders appear or a folder changes metadata ..) but would be absolutely awesome to have.
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.kore.kolabnotes.android/org.kore.kolabnotes.android.DetailActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.kore.kolab.notes.Note.getSummary()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.kore.kolab.notes.Note.getSummary()' on a null object reference
at org.kore.kolabnotes.android.DetailActivity.onCreate(DetailActivity.java:132)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
... 10 more
Create a wearable app, which can show the content of a note or a list of notes from a selected account/rootfolder/notebook/tag.
When hitting the back button accidently while editing a note, all changes are lost immediately.
The app should ask whether the user wants to save or discard the changes.
This NullPointer sometimes occurs when saving a note, when the app wants to go back to the MainActivity:
java.lang.RuntimeException: Unable to resume activity {org.kore.kolabnotes.android/org.kore.kolabnotes.android.MainPhoneActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'org.kore.kolab.notes.Identification org.kore.kolab.notes.Notebook.getIdentification()' on a null object reference
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2986)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3017)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'org.kore.kolab.notes.Identification org.kore.kolab.notes.Notebook.getIdentification()' on a null object reference
at org.kore.kolabnotes.android.MainPhoneActivity.onResume(MainPhoneActivity.java:273)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1257)
at android.app.Activity.performResume(Activity.java:6076)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2975)
... 9 more
The app already contains a "Share" button in the DetailActivity, but it doesn't work right now. Make it work, so that other apps, which can handle text, can use the shared informations (note summary, note description).
An example could be: One wants to share an note via his mail client, if he presses the "Share" button in the kolabnotes-android app, a new EMail in the mail client will be created, where the subject is the summary of the note and the mail body is the description of the note.
It should also be able, that this app can comsume content. E.g. one wants to save the current website, which is displayed by his browser, via kolabnotes-android.
Add support for attachements to the app. It should be possible to attach a picture, video, speech record, etc to a note.
After adding my Kolab server account (pretty much default Kolab 3.3 installation from official Kolab repositories) the app crashes and syncing of the account is turned off.
When I turn on sync, it crashes again, but this time sync remains active. However, no notes from the Kolab server show up in the app.
This is 100% reproducible.
However I'm not quite sure what to enter as the "IMAP root folder". I tried "/" as well as "/Notes" and even "Notes". Maybe this is the source of the issue.
Still I would expect to get a message instead of a crash (at least at a later release stage ;-)
Android 5.1 @ LG Nexus 5
The list of notes is not separated, the single notes overlay each other.
Possibly happens when note titles require more than a single row to display and/or the list is longer than the screen
please add support for RTL languages .
Everything works just beautifully on Android 4.x devices, except the Add Account dialog which has a light grey background. Given the text is white, this makes it hard to use.
I assume on Android 5.x, your target dev platform, this works better. Feel free to ignore this issue if you do not wish to support Android 4.x fully (though 3/4ths of users are on 4.x still ..)
Sorting of the note overview int the MainActivity and sorting of the list widget should be configureable (sort with creation date, summary, sort ascending, descending, etc)
Create at least a filter which exports and imports notes in the kolab xml format (with the KolabNotesParserV3 from the kolabnotes-java lib). The user should be able to choose a notebook or the whole account to export/import. Notebooks should be treated as folders.
When no notebook is selected (e.g. no notebook exists), the "add note" button is available in the app.
When tapping the button, the app crashes.
I would expect to have either a hint "Please add a notebook before adding notes" or have the button disabled.
Finish Acitivty AuthenticatorActivity instead of just starting MainPhoneActivity
When I try to share things from other applications on Android, I do not see Kolab Notes listed as a possible sharing target. Doing this in a somewhat smart way, e.g. download/screenshot web page as part of the note on a web page along with title & short comment would be extremely useful.
In the header of the slideout nav drawer, the account name and the account address are both shown. When those are the same, it looks fairly redundant and unpolished :) It would be nice to not show the address if it is identical to the account name. In fact, I wonder if an account name is needed at all, or if the address would suffice in all cases, making configuration that much quicker?
Searching for notes does not work, the search dialog appears, but no searched is done after clicking on OK.
The UI of the current used spinner for notebook selection in the DetailActivity just sucks. Adopt the UI to look pretty, maybe use this: https://github.com/gao746700783/BetterSpinner
At the moment each certificate is accepted by the app, if imaps is used. Create a way to whitelist certificates. To trust everyone is not the best solution ;-)
Two days ago I added a note in the app. Yesterday I edited it, today I aee the original text of the note.
Apparently the old version has been synced back from the Kolab server (despite being invisible there, as described in snother issue) while it should have been written to the server.
It should be possible to rename and delete notebooks within the app (at the moment just creation is possible).
When leaving the single note view by clicking the check (save) icon or the back button, I would expect to see the list of notes in the current notebook again.
Currently there is only an empty page.
It would be cool, if a note can be shared with an other device via NFC/Android Beam. That would make it possible to share notes with other persons, without the need to give them access to a notebook.
A manual can be found here: http://developer.android.com/training/beam-files/index.html
I added a note in the app (preview 3), then clicked "sync now" in system settings - accounts - [the configured Kolab account].
The app crashed and the note was gone.
This is currently not reproducible. On a second try, sync was successful and the note was transferred into the Notes IMAP folder.
After I set up a remote account, I select this account and then click on the floating action icon to create a new note, I get this crash:
java.lang.NullPointerException: Attempt to invoke virtual method 'org.kore.kolab.notes.Note$Identification org.kore.kolab.notes.Notebook.getIdentification()' on a null object reference
at org.kore.kolabnotes.android.MainPhoneActivity$CreateButtonListener.onClick(MainPhoneActivity.java:587)
at android.view.View.performClick(View.java:4781)
at android.view.View$PerformClick.run(View.java:19873)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
At the moment it is just possible to search for notes with summary. Also it is a ugly search dialog used.
It should be the Android search view being used and the search should be more dynamic, maybe configureable (search in tags, description, etc)
If one makes a long touch on a note in the overview, a batch mode should start. The Toolbar should change and at least support batch deleting, changing tags, changing classification, changing color and moving to another notebook for all selected notes.
Create unit tests for each class/method which contains any form of logic.
Try using this code, instead of sending a broadcast:
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.example_appwidget);
appWidgetManager.updateAppWidget(mAppWidgetId, views);
The kolab notes format does support colors for notes (there is a color attribute in the kolab.xml). Make use of this attribute in the app (give a hint about the color in the notes overview, in the DetailsActivity (maybe use another color in the toolbar?), in the widgets, in the wearables app, let users search for notes with a specific color, etc.).
The successfully synced note from the app shows in the IMAP folder as mentioned in #23 (visible e.g. through Thunderbird), but it is not visible in the web UI aka Roundcubemail.
Kolab server is current version from http://obs.kolabsys.com/repositories/Kolab:/3.3
OS: Ubuntu Server 14.04
With such a provider it would be possible to expose notes to apps which use the Android Storage Access Framework file picker.
Despite quite a bit of looking around in the UI, I could not find any way to edit an existing account. If this is implemented somewhere, it evidently needs to be made more obvious ...
Actual there are different problems when syncing with a Kolab server:
There are multiple ways to switch accounts in the nav drawer: pressing on the drop down next to the account name; pressing on one of the icons that represent other accounts. The icons for accounts are, by default, using the same icon ... and if I were to set them up to something unique, they'd probably end up with my little gravitar icon, and so look the same once again. When the icons look the same, it becomes a guessing game as to which account I will switch to.
IMHO only one way to switch accounts is really necessary, and given the ambiguity of the icon accounts, perhaps move just to the drop down list? (Icons could then be folded into that representation). This would have the nice side effect of making it possible to make the drawer header smaller.
Alternatively, it might be desirable to look for gravitar icons, use the Android logo or a devie icon for the default Local collection (or something else that says "this is on your device"), check if there is a favicon available related to the service (generally checking for webmail. or /apps will work) ...
When viewing/editing a note, the note text body begins at about halfway down the screen, leaving a big blank space below the note's title.
In the actual implementation, handling of persistent data is done via direct database calls. This should be refactored, so that ContentProvider / ContentResolver are used. Also these Provider/Resolver must be documented, so that other apps can use notes from this app.
Refactor the Acitivities so that Fragements are used. Create an UI optimized for smartphones and an UI optimized for Tablets.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.