Commit Graph

552 Enmetoj

Author SHA1 Message Date
Jaidyn Ann 0ffe3e5ce8 Replace CreateAccountMenu() with dedicated class
CreateAccountMenu() is used to populate a BMenu with items corresponding
to the map of accounts provided to it― but when an account is disabled
or enabled, it can't update automatically.

A dedicated class, fAccountsMenu, now replaces it― it'll automatically
repopulate the list whenever the active accounts update.
2021-07-21 12:14:25 -05:00
Jaidyn Ann 9245dc7135 Auto-scroll ConversationView, fix RunView append 2021-07-21 12:10:20 -05:00
Jaidyn Ann 20c6b9fc30 (purple) Automatically reconnect disconnected account 2021-07-19 19:59:27 -05:00
Jaidyn Ann e698d412a8 Init XMPP catkeys 2021-07-19 12:10:26 -05:00
Jaidyn Ann 1900b7c5ab Esperanto translation of app 2021-07-19 12:10:18 -05:00
Jaidyn Ann 82c06bba25 Localization, init catkeys 2021-07-19 09:54:27 -05:00
Jaidyn Ann 2d36152296 (purple) Not all account slots are necessary
Since libpurple doesn't mark individual account settings as "required"
or not (Pidgin will accept account settings even with all-blank answers,
unlike Cardie), every setting was marked as required by Cardie, just to
err on the side of caution.

But that's not necessary now, and was bad to begin with (especially for
Jabber, etc, with superfluous options)― in the case of libpurple, we can
follow Pidgin's example. Cardie will accept account settings with
mostly-blank options, but the add-on will send an error (and disable the
account) when it doesn't work.
2021-07-19 06:41:50 -05:00
Jaidyn Ann 3516c64ffc (jabber) Localization, init catkeys 2021-07-18 22:25:38 -05:00
Jaidyn Ann 6875c3cb75 (purple) Localization, init catkeys 2021-07-18 21:51:38 -05:00
Jaidyn Ann 23e6f4ba5a (jabber) Add debug output 2021-07-18 20:03:42 -05:00
Jaidyn Ann 4905dbbe6c Redesign add-on disconnection
Currently, add-ons are disconnected when ChatProtocol::Shutdown() is
called, which the add-on can do by itself― but there is no standard way
for add-ons to notify the app about their Shutdown. Because of this,
they tend to not call Shutdown()― instead (as in the case of the Jabber
add-on), they display a BAlert (IM_ERROR) notifying the user of the
connection error, but the account is considered active by Cardie (and
its threads are still existant, including its ProtocolLooper).

Zombies are bad, so this is redesigned somewhat with this commit:
Protocols should no longer call ChatProtocol::Shutdown() themselves,
they must send an IM_MESSAGE of IM_PROTOCOL_DISABLE to the app.

This will delete its ProtocolLooper, which in turn will send a
notification to the user and delete the ChatProtocol, and so
calling ChatProtocol::Shutdown().

In the included protocols, an IM_ERROR is sent right before
IM_PROTOCOL_DISABLE is sent if due to a connection error. This is not
required, but it is courteous to inform your user about the "why." :)
2021-07-18 17:52:36 -05:00
Jaidyn Ann 6dcb6f4405 Notify on account disabling, more detailed alerts
Like the notification sent when accounts are ready (IM_PROTOCOL_READY),
one's been added for when accounds have disconnected/are disabled:
IM_PROTOCOL_DISABLED.

Also, error BAlerts (created with IM_ERROR messages) are now more
detailed, showing the associated accounts' name in the header.
2021-07-18 15:39:30 -05:00
Jaidyn Ann 8d47983c47 (purple) Send errors to Cardie; IM_PROTOCOL_DISABLED
Connection errors are now sent to Cardie through an IM_ERROR message
(which appear in a BAlert), and an IM_PROTOCOL_DISABLED IM_MESSAGE is
sent to Cardie when the account is disabled/connection fails.
2021-07-18 13:54:31 -05:00
Jaidyn Ann d43d09b238 (purple) Default SSL dir, fix message users 2021-07-17 14:18:06 -05:00
Jaidyn Ann 6f73db12b7 Highlight room list-items, auto-scroll in chat
When a new message is posted (or the user is messaged), the room's item
in the roomlist is now highlighted, like Vision.

Chat also auto-scrolls when new messages are posted.
2021-07-17 00:23:56 -05:00
Jaidyn Ann fe4d0661a7 Move notifications from ConversationView to Conversation itself 2021-07-16 16:28:58 -05:00
Jaidyn Ann c6f907101a (librunview) Remove URL hovering
It's less stable than I'd anticipated, and needs more workshopping. I'll
keep it in another branch (and git history) for later use.
2021-07-16 15:41:35 -05:00
Jaidyn Ann e1ec602be8 Message/mention notifications
If the user's in a one-on-one chat, notify on every message― otherwise,
only notify when the user's name/ID is mentioned by another user.

Notifications should be managed by roomflags, but that's for another
time.
2021-07-15 18:01:58 -05:00
Jaidyn Ann 0c8af4dd86 (purple) Chat-members leaving, receiving statuses 2021-07-15 16:41:22 -05:00
Jaidyn Ann e07ee29d13 (librunview) Fix hover-over for multiple links 2021-07-15 14:59:51 -05:00
Jaidyn Ann b7c7ad6064 (librunview) URL hover-over/visited colouring 2021-07-15 13:01:21 -05:00
Jaidyn Ann 67ea3cd760 (librunview) Add right-click menu 2021-07-14 22:13:59 -05:00
Jaidyn Ann 9c2ab6ed0a (librunview) Selecting URLs 2021-07-14 20:28:52 -05:00
Jaidyn Ann bc55617f81 (librunview) URL highlighting 2021-07-14 15:13:36 -05:00
Jaidyn Ann e760818007 (librunview) Init new RenderView/RunView
Base-level replacement of the Vision-derived text RunView― a couple
important features supported by the replacee haven't been implemented yet,
including:
	* Right-click menu
	* URL-highlighting/selection
	* Emote support
2021-07-14 15:12:04 -05:00
Jaidyn Ann 7f30571703 Fix SmileTextRender crash
Fixes #22
2021-07-13 17:11:49 -05:00
Jaidyn Ann 5ec79ebbf5 Fix status view's avatar icon
The StatusView (below the roomlist) now shows a default icon if no
accounts have associated avatars, and will use an account's cached avatar
if available.
2021-07-13 14:43:48 -05:00
Jaidyn Ann 91ab9d8fb7 (purple) NotifyMessage dialog
First of the NotifyUiOps― not sure if the others are used for anything
useful in our use-case, I'll implement as I run into them.
2021-07-12 10:09:29 -05:00
Jaidyn Ann 2415be542e Update README and Contributors 2021-07-11 15:31:37 -05:00
Jaidyn Ann c5521ad9a3 (purple) RequestAction dialogs
First progress in support for purple's Request dialogs
2021-07-11 15:22:49 -05:00
Jaidyn Ann 437154310b Add debug mode 2021-07-10 09:31:31 -05:00
Jaidyn Ann 5217c282e2 (purple) Fix message receive 2021-07-09 11:53:16 -05:00
Jaidyn Ann f4df6d0d3b Typing auto-complete for usernames 2021-07-09 11:52:57 -05:00
Jaidyn Ann 8a3f22d5e9 Move sendbox to conversation view, replace filter
The BTextBox used for sending messages has been moved from the main
window to individual ConversationViews, allowing seperate histories,
texts, etc., to exist in different conversations.

EditingFilter (a filter that hooked into MainWindow) was previously used
to field special key combos with this textbox, including "ENTER" for
sending, but this has been replaced with a new textview subclass
(SendTextView).
2021-07-08 16:07:03 -05:00
Jaidyn Ann 352a6751da Slight UserInfoWindow redesign 2021-07-07 22:35:44 -05:00
Jaidyn Ann 988a4ebfb6 (purple) Handle user_id and user_name dichotomy
Fixes #29
2021-07-07 20:44:11 -05:00
Jaidyn Ann 4294993761 (purple) Fix rdef in Makefile 2021-07-07 15:49:48 -05:00
Jaidyn Ann 4b372238cc Build purple by default 2021-07-07 15:09:19 -05:00
Jaidyn Ann d05793bbf9 (purple) Add-on and protocol icons
Pidgin's icon has been borrowed as the add-on's icon― and protocol icons
are taken from `$DATA_DIR/pixmaps/Pidgin/protocol/`, just as
Pidgin/libpurple installs them.

Any third-party plugins will also install their icons there, even
if just locally.

I've updated the libpurple package to include these icons, hopefully
that'll get merged.
2021-07-07 15:05:49 -05:00
Jaidyn Ann 2bd9ecb6a8 Reformat ChatProtocol, default own contact to null 2021-07-07 10:59:56 -05:00
Jaidyn Ann 4cca893e91 Fix perms for 'User Info…' menuitem 2021-07-06 14:48:31 -05:00
Jaidyn Ann 52a580e03d Remove own user from contacts; fix roster bitmaps
It doesn't make sense to lump the user themself with their contacts
list― their Contact object is now stored seperately.

BBitmap loading for RosterItems are fixed, as well.

Fixes #33
2021-07-06 14:46:28 -05:00
Jaidyn Ann f0f2375b09 (purple) Senderless messages are system messages 2021-07-06 14:27:14 -05:00
Jaidyn Ann 735dda4188 (purple) Remove mod perms, command warnings
Since moderation commands are implemented per-protocol in libpurple
(with no easy way to use with the catch-all IM_ROOM_BAN_PARTICIPANT
message and corresponding command), the PERM_BAN, PERM_KICK, and a
couple other moderative perms aren't afforded to the user, disabling
these non-functional options in the UI.

The commands can still be implemented by the libpurple plugin, though.
If they aren't, purple will complain with some error message.
2021-07-06 14:13:10 -05:00
Jaidyn Ann 1515ab0d00 Tweak permissions handling in UserListView 2021-07-06 13:47:37 -05:00
Jaidyn Ann 9d8b35fc86 (purple) Send user-roles to Cardie
Fixes #24
2021-07-06 12:08:51 -05:00
Jaidyn Ann e88a8372dc (purple) Unescape XML entities 2021-07-06 02:09:18 -05:00
Jaidyn Ann 0c48cf514b (purple) Execute commands, report status
Fixes #25
2021-07-06 01:22:08 -05:00
Jaidyn Ann 0864ddae81 (purple) Reformat UI ops 2021-07-06 00:56:16 -05:00
Jaidyn Ann 91c7e44b44 (purple) Register per-protocol commands 2021-07-05 23:56:59 -05:00