/*************************************************************************** * optionswindow.h * * Fri Jul 29 19:58:21 2005 * Copyright 2005 User * Email ****************************************************************************/ #ifndef _OPTIONSWINDOW_H #define _OPTIONSWINDOW_H #include "imuserdaemon.h" #include "imownerdaemon.h" #include "basicwindow.h" #include "settings.h" #include "gettext.h" #include "convwindow.h" #include "utilities.h" #include "mainwindow.h" class optionsWindow: public basicWindow { public: optionsWindow(); ~optionsWindow(); private: GtkListStore *itemsStore; GtkWidget *notebook, *itemsView, *applyButton; GList *optionsItems; GtkWidget *createWindowContent(); void destroyWindowContent(); GtkWidget *createButtonbar(); // callbacks static void cb_optionsItemSelected(optionsWindow* self); static void cb_applyButtonClicked(optionsWindow* self); }; class optionsWindowItem { public: GdkPixbuf *titleImage; gchar *titleString; GtkWidget *tabWidget, *parentContainer, *window; gboolean hasOwnNotebook; optionsWindowItem(); virtual ~optionsWindowItem(); virtual GtkWidget *createTab(); virtual void destroyTab(); virtual gboolean applyChanges(); }; class optionsWindowItem_contactList: public optionsWindowItem { public: optionsWindowItem_contactList(); ~optionsWindowItem_contactList(); GtkWidget *createTab(); gboolean applyChanges(); private: GtkWidget *sortOrderList, *blinkByOnlineCheckbox, *blinkByARCheckbox, *blinkEventsCheckbox, *detailledModeCheckbox, *useColorsCheckbox, *useRealNamesCheckbox, *showExtendedCheckbox, *showTipsCheckbox, *tipStatusCheckbox, *tipRealnameCheckbox, *tipEmailCheckbox, *tipClientNameCheckbox, *tipIPCheckbox, *tipOnlineSinceCheckbox, *tipARCheckbox, *tipIDLETimeCheckbox, *tipProtocolCheckbox, *tipIDCheckbox, *vlistColorButton, *noMsgColorButton, *idleColorButton, *extendedAResponseCheckbox, *extendedBirthdayCheckbox, *extendedCellCheckbox, *extendedPhoneCheckbox, *extendedTypingCheckbox, *extendedEncryptCheckbox, *contactsFontButton, *useOwnFontCheckbox; GtkWidget *sortUpButton, *sortDownButton; GtkListStore *sortStore; GtkWidget *createGeneralTab(); GtkWidget *createColorsLookTab(); void moveSelectedCriteria(gboolean moveUp); // callbacks static void cb_sortUpButtonClicked(optionsWindowItem_contactList* self); static void cb_sortDownButtonClicked(optionsWindowItem_contactList* self); static void cb_sortListCursorChanged(optionsWindowItem_contactList* self); static void cb_sortListEnabledToggled(GtkCellRendererToggle* t, gchar* pathStr, optionsWindowItem_contactList* self); }; class optionsWindowItem_mainWindow: public optionsWindowItem { public: optionsWindowItem_mainWindow(); ~optionsWindowItem_mainWindow(); GtkWidget *createTab(); gboolean applyChanges(); private: GtkWidget *showMainMenuCheckbox, *showNotifyBoxCheckbox, *showStatusButtonsCheckbox, *createWindowBorderCheckbox, *alwaysOnTopCheckbox, *dockWindowCheckbox, *dockLeftRadiobox, *dockRightRadiobox, *inTaskbarMaximizedCheckbox, *inTaskbarMinimizedCheckbox, *inPagerCheckbox, *titleShowStarCheckbox, *titleShowOwnersCheckbox, *showWindowOnAllCheckbox, *dockDoubleClickCheckbox; }; struct editToolbarElements { GList *list; GtkListStore *store; gchar *rules; gulong spacing; gboolean visible; GtkWidget *container; }; class optionsWindowItem_msgWindow: public optionsWindowItem { public: optionsWindowItem_msgWindow(); ~optionsWindowItem_msgWindow(); GtkWidget *createTab(); gboolean applyChanges(); private: editToolbarElements localbar, remotebar, buttonbar, *currentbar; GtkListStore *toolsStore; GtkWidget *editToolsView, *toolsView, *editToolsSelection, *showToolbarCheckbox, *toolbarSpacingSpinButton, *addElementButton, *removeElementButton, *remotePreviewView, *localPreviewView; GtkWidget *sendTypingCheckbox, *showSmileysCheckbox, *showURIsCheckbox, *showHistoryCheckbox, *historyCountBox, *recColorButton, *sentColorButton, *msgColorButton, *typeColorButton, *dontApplyColorsButton, *msgFormatEntry, *msgFontButton, *encodingComboBox, *sendViaServerCheckbox, *sendByReturnCheckbox; GdkColor incomingCol, outgoingCol, msgCol, typeCol; gchar *messageTag, *standardEncoding; gboolean dontApplyColors, sendTyping, showSmileys, showURIs, showHistory, sendViaServer, sendByReturn; gulong historyCount; GtkTreeViewColumn *editToolsColumn; void createPreviewToolbar(editToolbarElements* tb); GtkWidget *createPreview(); GtkWidget *createGeneralTab(); GtkWidget *createColorsTab(); GtkWidget *createToolbarsTab(); GtkListStore *createToolbarStore(GList *el); void refreshRemoteViewPreview(); void refreshMessageFormatList(gchar* tag, gchar* alias, gchar* firstname, gchar* lastname, GtkTextBuffer* buf, gchar* dirTag); static void cb_toolbarSelected(optionsWindowItem_msgWindow* self); static void cb_addElementButtonClicked(optionsWindowItem_msgWindow* self); static void cb_removeElementButtonClicked(optionsWindowItem_msgWindow* self); static void cb_showToolbarBoxClicked(optionsWindowItem_msgWindow* self); static void cb_msgRefreshButtonClicked(optionsWindowItem_msgWindow* self); static void cb_msgHelpButtonClicked(optionsWindowItem_msgWindow* self); static void cb_msgColorSelected(GtkColorButton* but, optionsWindowItem_msgWindow* self); static void cb_dontApplyColorsButtonClicked(optionsWindowItem_msgWindow* self); }; class optionsWindowItem_extensions: public optionsWindowItem { public: optionsWindowItem_extensions(); ~optionsWindowItem_extensions(); GtkWidget *createTab(); gboolean applyChanges(); private: GtkWidget *useGnomeCheckbox, *openURLinTabRadiobox, *openURLinWndRadiobox, *openURLinCurRadiobox, *browserCombobox, *ownBrowserEntry, *ownBrowserHBox, *ownBrowserInfoLabel; u_browserInfo *createBrowsersBox(gchar* browserCommand); static void cb_browserComboboxChanged(optionsWindowItem_extensions* self); }; class optionsWindowItem_onEvent: public optionsWindowItem { public: optionsWindowItem_onEvent(); ~optionsWindowItem_onEvent(); GtkWidget *createTab(); gboolean applyChanges(); private: GtkWidget *paramBox, *acceptBox, *generalBox; GtkWidget *enableCheckbox, *commandEntry, *paramMsgEntry, *paramURLEntry, *paramChatEntry, *paramFTEntry, *paramONEntry, *paramSysMsgEntry, *paramMsgSentEntry, *acceptAwayCheckbox, *acceptNACheckbox, *acceptOccCheckbox, *acceptDnDCheckbox, *acceptLogonCheckbox; }; struct editServerConTab { IMPluginDaemon *proto; GtkWidget *server, *port; }; class optionsWindowItem_connections: public optionsWindowItem { public: optionsWindowItem_connections(); ~optionsWindowItem_connections(); GtkWidget *createTab(); gboolean applyChanges(); private: GList *serverTabs; GtkWidget *fwEnableCheckbox, *fwDirectConnectionsCheckbox, *fwPortsFromSpinButton, *fwPortsToSpinButton, *pxUseCheckbox, *pxUseAuthorizationCheckbox, *pxServerEntry, *pxPortSpinButton, *pxUsernameEntry, *pxPasswordEntry, *kcIDClashCheckbox, *kcDisconnectCheckbox, *kcDisconnectSpinButton, *notebook; GtkWidget *createPluginsConnectionTabs(); void appendPluginsConnectionTab(IMPluginDaemon *proto); static gboolean cb_eventCallback(userEventType type, gint command, gint lastResult, gpointer info, optionsWindowItem_connections* self); }; class optionsWindowItem_plugins: public optionsWindowItem { public: optionsWindowItem_plugins(); ~optionsWindowItem_plugins(); GtkWidget *createTab(); private: GtkListStore *standardStore, *protoStore; GtkWidget *createPluginsList(GtkListStore **store); static void cb_loadedCheckboxToggled(GtkCellRenderer* t, gchar* pathString, optionsWindowItem_plugins* self); static void cb_enabledCheckboxToggled(GtkCellRenderer* t, gchar* pathString, optionsWindowItem_plugins* self); static gboolean cb_eventCallback(userEventType type, gint command, gint lastResult, gpointer info, optionsWindowItem_plugins* self); }; class optionsWindowItem_start: public optionsWindowItem { public: optionsWindowItem_start(); ~optionsWindowItem_start(); GtkWidget *createTab(); gboolean applyChanges(); private: GtkWidget *autoLogonStatusList, *autoLogonEnabledCheckbox, *autoLogonInvisibleCheckbox; }; class optionsWindowItem_aresponse: public optionsWindowItem { public: optionsWindowItem_aresponse(); ~optionsWindowItem_aresponse(); GtkWidget *createTab(); gboolean applyChanges(); private: GtkWidget *arTypeView, *arTemplatesView, *arTemplateEntryView, *arAutoAwayEnabledCheckbox, *arAutoNAEnabledCheckbox, *arAutoAwaySpinButton, *arAutoNASpinButton, *arAutoAwayTemplatesCombo, *arAutoNATemplatesCombo; GtkListStore *arTypeStore, *lastStore; GtkTreeIter lastIter; GtkTreeViewColumn *col; // callbacks static void cb_arTypeChanged(optionsWindowItem_aresponse* self); static void cb_arTemplateChanged(optionsWindowItem_aresponse* self); static void cb_arTemplatesViewEdited(GtkCellRendererText *cell, gchar *pathStr, gchar *newText, optionsWindowItem_aresponse* self); }; class optionsWindowItem_themes: public optionsWindowItem { public: optionsWindowItem_themes(); ~optionsWindowItem_themes(); GtkWidget *createTab(); gboolean applyChanges(); private: GtkWidget *statusCombo, *eventCombo, *extendedCombo, *smileysCombo, *statusBox, *eventBox, *extendedBox, *smileysBox; GList *statusIcons, *eventIcons, *extendedIcons; iconManagerSmiley *smileys; void fillThemeCombos(); GtkWidget *createThemeCombo(); void showIcons(GtkWidget *box, GList *list); void showSmileys(); // callbacks static void cb_statusComboChanged(optionsWindowItem_themes* self); static void cb_eventComboChanged(optionsWindowItem_themes* self); static void cb_extendedComboChanged(optionsWindowItem_themes* self); static void cb_smileysComboChanged(optionsWindowItem_themes* self); }; void o_cb_sensitivityToggleButtonClicked(GtkWidget* btn, GtkWidget* victim); #endif /* _OPTIONSWINDOW_H */