merged sniperbeamer's patches
fixed bug #1828965 git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@149 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
Installation instructions for *nix:
|
||||||
|
-----------------------------------
|
||||||
|
1. qmake-qt4 / qmake
|
||||||
|
You have to use qmake of Qt >= 4.2.0, depending on your distro it is called qmake or qmake-qt4.
|
||||||
|
By default KeePassX is installed to /usr, you can change that by adding PREFIX=[PATH] to the qmake command.
|
||||||
|
You can also add RELEASE=1 to build KeePassX optimized.
|
||||||
|
2. make
|
||||||
|
3. make install
|
||||||
@@ -1,16 +1,83 @@
|
|||||||
---------------
|
---------------
|
||||||
0.2.3
|
0.2.2.6
|
||||||
---------------
|
---------------
|
||||||
-fixed to long Auto-Type delay
|
-bookmarks and the Detail View are saved in the config file
|
||||||
-fixed wrong text color in the password repeation box when using new Qt versions (Bug #???)
|
-fixed bug that caused unlock not to work when 'Remember last opened file' is disabled or the the search is used
|
||||||
-fixed problem with the assignment of group icons (custom icons metastream format rev 3)
|
-loading default Detail View didn't work
|
||||||
-more stable drag&drop implementation which also works under MacOSX
|
|
||||||
|
---------------
|
||||||
|
0.2.2.5
|
||||||
|
---------------
|
||||||
|
-fixed critical bug that caused the database to be only opened/saved with the keyfile when keyfile and password were selected
|
||||||
|
-fixed crash that could occur when locking a database that has unsaved changes
|
||||||
|
-don't hide window to tray if a modal window is opened
|
||||||
|
-auto-Type window is always on top and columns are automatically resized
|
||||||
|
|
||||||
|
---------------
|
||||||
|
0.2.2.4
|
||||||
|
---------------
|
||||||
|
-window is now minimized to tray even if the unlock dialog is shown
|
||||||
|
-fixed problem when restoring window using the tray icon
|
||||||
|
-support custom commands and placeholders in entry urls
|
||||||
|
-improved custom browser selection in the settings dialog
|
||||||
|
-all dialogs use the native button order
|
||||||
|
-window title indicates if there are unsaved changes
|
||||||
|
-improved many translation strings
|
||||||
|
|
||||||
|
---------------
|
||||||
|
0.2.2.3
|
||||||
|
---------------
|
||||||
|
-fixed a crash when the database is locked and KeePassX is restored
|
||||||
|
-fixed KeePassX is not always properly minimized after auto-type
|
||||||
|
-fixed global auto-type not working on non-ascii window titles
|
||||||
|
-added a setting to optionally use entry titles to match window for global auto-type
|
||||||
|
-added support for the delay command in auto-type
|
||||||
|
-expired entries are not used for global auto-type
|
||||||
|
-comparison of window titles is now always case-insensitive
|
||||||
|
-fixed cmd option -help didn't work
|
||||||
|
-output help on unrecognized argument
|
||||||
|
-fixed typo in desktop file
|
||||||
|
|
||||||
|
---------------
|
||||||
|
0.2.2.2
|
||||||
|
---------------
|
||||||
|
-added support for multiple Auto-Type-Window definitions
|
||||||
|
fully compatible to KeePass (http://keepass.info/help/base/autotype.html#autoglobal)
|
||||||
|
-added settings and command line options to start minimized and/or locked
|
||||||
|
-fixed window not always hidden when using 'Minimize to tray instead of taskbar'
|
||||||
|
-added pixmap and desktop file
|
||||||
|
-fixed a bunch of compiler warnings
|
||||||
|
|
||||||
|
---------------
|
||||||
|
0.2.2.1
|
||||||
|
---------------
|
||||||
|
Changes by Felix Geyer:
|
||||||
|
-added Global Auto-Type feature
|
||||||
|
-added database locking feature
|
||||||
|
-saves the sort column and order of the entry view
|
||||||
|
-added options 'Minimize to tray instead of taskbar', 'Lock workspace when minimizing the main window' and 'Global Auto-Type Shortcut'
|
||||||
|
-fixed Auto-Type while still holding modifier keys (ctrl, shift, ...) and caps lock
|
||||||
|
-fixed Auto-Type puts space at the beginning when using custom Auto-Type format
|
||||||
|
-fixed auto-typing of some non-Latin1 chars
|
||||||
|
-fixed crash when trying to auto-type invalid chars
|
||||||
|
-left click on the tray icon brings the main window to front when it's not the active window, otherwise hides it
|
||||||
|
-fixed a bunch of compiler warnings
|
||||||
|
-disabled all not yet working features
|
||||||
|
|
||||||
|
Official changes:
|
||||||
|
-system tray icon
|
||||||
|
-fine tuning options for auto-type
|
||||||
|
-fully customizable HTML based detail view
|
||||||
|
-secure random number generator based on Yarrow including an optional entropy collector
|
||||||
|
-new dialog to view expiered entries
|
||||||
|
-calendar widget to edit expiration dates in a more confortable way
|
||||||
|
-restructured password generator
|
||||||
|
-much better appearance under MacOS X
|
||||||
|
-final program icon
|
||||||
|
-misc. visual improvements
|
||||||
-new more robust and flexible database back-end api
|
-new more robust and flexible database back-end api
|
||||||
-replaced old AES implementation by the latest version of Brian Gladman's implementation.
|
-replaced old AES implementation by the latest version of Brian Gladman's implementation.
|
||||||
-now using strong random number generator 'yarrow' instead of the standard library functions.
|
-(maybe incomplete)
|
||||||
-final program icon
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---------------
|
---------------
|
||||||
0.2.2
|
0.2.2
|
||||||
@@ -30,6 +97,7 @@
|
|||||||
-alpha blending for banner icons
|
-alpha blending for banner icons
|
||||||
-new standard banner icon
|
-new standard banner icon
|
||||||
-MacOS packages: all Qt libraries are now included in the application bundle (extra installation is not longer necessary)
|
-MacOS packages: all Qt libraries are now included in the application bundle (extra installation is not longer necessary)
|
||||||
|
|
||||||
---------------
|
---------------
|
||||||
0.2.1
|
0.2.1
|
||||||
---------------
|
---------------
|
||||||
@@ -43,6 +111,7 @@
|
|||||||
for entries which don't expire
|
for entries which don't expire
|
||||||
-entry view now gets updated after changing the column setup
|
-entry view now gets updated after changing the column setup
|
||||||
-added menu entry to change the size of the toolbar icons
|
-added menu entry to change the size of the toolbar icons
|
||||||
|
|
||||||
---------------
|
---------------
|
||||||
0.2.0
|
0.2.0
|
||||||
---------------
|
---------------
|
||||||
|
|||||||
+20
-20
@@ -1,28 +1,28 @@
|
|||||||
message("See 'Install.txt' for configuration options.")
|
message("See 'INSTALL' for configuration options.")
|
||||||
message("*** Build Configuration:")
|
#message("*** Build Configuration:")
|
||||||
TEMPLATE = subdirs
|
TEMPLATE = subdirs
|
||||||
isEmpty(PREFIX){
|
isEmpty(PREFIX){
|
||||||
PREFIX = /usr
|
PREFIX = /usr
|
||||||
}
|
}
|
||||||
isEmpty(KDEDIR){
|
#isEmpty(KDEDIR){
|
||||||
KDEDIR = /usr
|
# KDEDIR = /usr
|
||||||
}
|
#}
|
||||||
SUBDIRS += src
|
SUBDIRS += src
|
||||||
contains(INT_PLUGINS,kde) {
|
#contains(INT_PLUGINS,kde) {
|
||||||
SUBDIRS +=src/plugins/kde
|
# SUBDIRS +=src/plugins/kde
|
||||||
message("Build KDE Plugin: yes")
|
# message("Build KDE Plugin: yes")
|
||||||
}
|
#}
|
||||||
!contains(INT_PLUGINS,kde) {
|
#!contains(INT_PLUGINS,kde) {
|
||||||
message("Build KDE Plugin: no")
|
# message("Build KDE Plugin: no")
|
||||||
}
|
#}
|
||||||
contains(INT_PLUGINS,gtk) {
|
#contains(INT_PLUGINS,gtk) {
|
||||||
SUBDIRS +=src/plugins/gnome
|
# SUBDIRS +=src/plugins/gnome
|
||||||
message("Build Gnome Plugin: yes")
|
# message("Build Gnome Plugin: yes")
|
||||||
}
|
#}
|
||||||
!contains(INT_PLUGINS,gtk) {
|
#!contains(INT_PLUGINS,gtk) {
|
||||||
message("Build Gnome Plugin: no")
|
# message("Build Gnome Plugin: no")
|
||||||
}
|
#}
|
||||||
message("Install Prefix:" $$PREFIX)
|
message("Install Prefix:" $$PREFIX)
|
||||||
message("KDE Prefix:" $$KDEDIR)
|
#message("KDE Prefix:" $$KDEDIR)
|
||||||
message("*** Makefile successfully generated.")
|
message("*** Makefile successfully generated.")
|
||||||
message("*** Start make now.")
|
message("*** Start make now.")
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Encoding=UTF-8
|
||||||
|
Name=KeePassX
|
||||||
|
GenericName=Cross Platform Password Manager
|
||||||
|
GenericName[fr]=Gestionnaire de mot de passe
|
||||||
|
GenericName[de]=Passwortverwaltung
|
||||||
|
Exec=keepassx
|
||||||
|
Icon=keepassx.xpm
|
||||||
|
Comment=Cross Platform Password Manager
|
||||||
|
Comment[fr]=Gestionnaire de mot de passe
|
||||||
|
Comment[de]=Passwortverwaltung
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=Qt;Utility;
|
||||||
@@ -0,0 +1,501 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char * keepassx2_xpm[] = {
|
||||||
|
"32 32 466 2",
|
||||||
|
" c None",
|
||||||
|
". c #000000",
|
||||||
|
"+ c #181B16",
|
||||||
|
"@ c #0B0C0A",
|
||||||
|
"# c #6E7967",
|
||||||
|
"$ c #9BA596",
|
||||||
|
"% c #CBCFCA",
|
||||||
|
"& c #FAFAFA",
|
||||||
|
"* c #9CA696",
|
||||||
|
"= c #707D68",
|
||||||
|
"- c #0D110B",
|
||||||
|
"; c #343A30",
|
||||||
|
"> c #BCC3B8",
|
||||||
|
", c #FFFFFF",
|
||||||
|
"' c #FEFEFE",
|
||||||
|
") c #CED1CC",
|
||||||
|
"! c #ADB6A8",
|
||||||
|
"~ c #E6E7E5",
|
||||||
|
"{ c #BDC4B9",
|
||||||
|
"] c #3A4435",
|
||||||
|
"^ c #010101",
|
||||||
|
"/ c #4D5549",
|
||||||
|
"( c #EDEEED",
|
||||||
|
"_ c #FBFBFB",
|
||||||
|
": c #92A588",
|
||||||
|
"< c #66914E",
|
||||||
|
"[ c #65A142",
|
||||||
|
"} c #6EB048",
|
||||||
|
"| c #639B44",
|
||||||
|
"1 c #70975B",
|
||||||
|
"2 c #B7C0B1",
|
||||||
|
"3 c #55614D",
|
||||||
|
"4 c #030303",
|
||||||
|
"5 c #788375",
|
||||||
|
"6 c #839080",
|
||||||
|
"7 c #869283",
|
||||||
|
"8 c #899586",
|
||||||
|
"9 c #748270",
|
||||||
|
"0 c #060905",
|
||||||
|
"a c #141713",
|
||||||
|
"b c #D1D6CF",
|
||||||
|
"c c #EAECEA",
|
||||||
|
"d c #71935E",
|
||||||
|
"e c #63A93B",
|
||||||
|
"f c #64AB3C",
|
||||||
|
"g c #64AA3B",
|
||||||
|
"h c #63AA3A",
|
||||||
|
"i c #5F9F3A",
|
||||||
|
"j c #8A9E7F",
|
||||||
|
"k c #D1D7CF",
|
||||||
|
"l c #191F15",
|
||||||
|
"m c #E5E5E5",
|
||||||
|
"n c #909D8C",
|
||||||
|
"o c #111310",
|
||||||
|
"p c #8A9385",
|
||||||
|
"q c #88A07A",
|
||||||
|
"r c #6AAE44",
|
||||||
|
"s c #6BAE44",
|
||||||
|
"t c #64A93D",
|
||||||
|
"u c #628A4B",
|
||||||
|
"v c #637957",
|
||||||
|
"w c #5A903C",
|
||||||
|
"x c #67A543",
|
||||||
|
"y c #AFB8A9",
|
||||||
|
"z c #8F9B88",
|
||||||
|
"A c #E2E2E2",
|
||||||
|
"B c #AEB5AC",
|
||||||
|
"C c #BABFB8",
|
||||||
|
"D c #F9F9F9",
|
||||||
|
"E c #8E9A8A",
|
||||||
|
"F c #050805",
|
||||||
|
"G c #131513",
|
||||||
|
"H c #F2F2F2",
|
||||||
|
"I c #C2C9BE",
|
||||||
|
"J c #64A042",
|
||||||
|
"K c #6AAE43",
|
||||||
|
"L c #718367",
|
||||||
|
"M c #FCFCFC",
|
||||||
|
"N c #9D9D9D",
|
||||||
|
"O c #365424",
|
||||||
|
"P c #678F4F",
|
||||||
|
"Q c #F5F5F5",
|
||||||
|
"R c #1B2317",
|
||||||
|
"S c #DEDEDE",
|
||||||
|
"T c #B8BDB7",
|
||||||
|
"U c #2E7922",
|
||||||
|
"V c #337D24",
|
||||||
|
"W c #63825D",
|
||||||
|
"X c #869382",
|
||||||
|
"Y c #080A08",
|
||||||
|
"Z c #3E443A",
|
||||||
|
"` c #8CA281",
|
||||||
|
" . c #5FA539",
|
||||||
|
".. c #62A83B",
|
||||||
|
"+. c #5DA135",
|
||||||
|
"@. c #BFC1BE",
|
||||||
|
"#. c #30302F",
|
||||||
|
"$. c #63A240",
|
||||||
|
"%. c #BCC2B8",
|
||||||
|
"&. c #4A5742",
|
||||||
|
"*. c #D9DAD9",
|
||||||
|
"=. c #BBC0BB",
|
||||||
|
"-. c #3A7E31",
|
||||||
|
";. c #408735",
|
||||||
|
">. c #428935",
|
||||||
|
",. c #6D8866",
|
||||||
|
"'. c #869282",
|
||||||
|
"). c #0E0F0E",
|
||||||
|
"!. c #6B7667",
|
||||||
|
"~. c #7B9A6D",
|
||||||
|
"{. c #65A845",
|
||||||
|
"]. c #68AB46",
|
||||||
|
"^. c #6CAE47",
|
||||||
|
"/. c #65A440",
|
||||||
|
"(. c #A0A0A0",
|
||||||
|
"_. c #EAEAEA",
|
||||||
|
":. c #242424",
|
||||||
|
"<. c #76A45B",
|
||||||
|
"[. c #A3B29A",
|
||||||
|
"}. c #73816B",
|
||||||
|
"|. c #D2D3D2",
|
||||||
|
"1. c #FDFDFD",
|
||||||
|
"2. c #70886E",
|
||||||
|
"3. c #317A27",
|
||||||
|
"4. c #357F29",
|
||||||
|
"5. c #378029",
|
||||||
|
"6. c #6C8667",
|
||||||
|
"7. c #7C8A79",
|
||||||
|
"8. c #020301",
|
||||||
|
"9. c #7E8A79",
|
||||||
|
"0. c #689058",
|
||||||
|
"a. c #569E34",
|
||||||
|
"b. c #59A135",
|
||||||
|
"c. c #5CA437",
|
||||||
|
"d. c #5FA737",
|
||||||
|
"e. c #60A836",
|
||||||
|
"f. c #3F4F37",
|
||||||
|
"g. c #A6A6A6",
|
||||||
|
"h. c #C4C4C4",
|
||||||
|
"i. c #515151",
|
||||||
|
"j. c #0D1309",
|
||||||
|
"k. c #64AA3C",
|
||||||
|
"l. c #93AA87",
|
||||||
|
"m. c #819078",
|
||||||
|
"n. c #546153",
|
||||||
|
"o. c #6E876B",
|
||||||
|
"p. c #367E2D",
|
||||||
|
"q. c #3A832F",
|
||||||
|
"r. c #3C8430",
|
||||||
|
"s. c #728A6D",
|
||||||
|
"t. c #7C8879",
|
||||||
|
"u. c #0F0F0F",
|
||||||
|
"v. c #758071",
|
||||||
|
"w. c #809C75",
|
||||||
|
"x. c #5DA140",
|
||||||
|
"y. c #60A441",
|
||||||
|
"z. c #64A743",
|
||||||
|
"A. c #67AA45",
|
||||||
|
"B. c #6BAD47",
|
||||||
|
"C. c #5F963F",
|
||||||
|
"D. c #2E4223",
|
||||||
|
"E. c #181818",
|
||||||
|
"F. c #273420",
|
||||||
|
"G. c #6F9E55",
|
||||||
|
"H. c #AAB7A3",
|
||||||
|
"I. c #697861",
|
||||||
|
"J. c #020202",
|
||||||
|
"K. c #687468",
|
||||||
|
"L. c #6B8668",
|
||||||
|
"M. c #377F2F",
|
||||||
|
"N. c #3B8331",
|
||||||
|
"O. c #3C8230",
|
||||||
|
"P. c #758D71",
|
||||||
|
"Q. c #838E80",
|
||||||
|
"R. c #DADCD9",
|
||||||
|
"S. c #8FA289",
|
||||||
|
"T. c #559B3A",
|
||||||
|
"U. c #599E3B",
|
||||||
|
"V. c #5BA13C",
|
||||||
|
"W. c #5FA43D",
|
||||||
|
"X. c #61A73E",
|
||||||
|
"Y. c #64A93F",
|
||||||
|
"Z. c #67AC40",
|
||||||
|
"`. c #67A743",
|
||||||
|
" + c #67AC3F",
|
||||||
|
".+ c #CFD2CD",
|
||||||
|
"++ c #3C4936",
|
||||||
|
"@+ c #717E71",
|
||||||
|
"#+ c #638060",
|
||||||
|
"$+ c #2E7A26",
|
||||||
|
"%+ c #317D26",
|
||||||
|
"&+ c #337C27",
|
||||||
|
"*+ c #788D73",
|
||||||
|
"=+ c #DBDEDB",
|
||||||
|
"-+ c #558246",
|
||||||
|
";+ c #4E9734",
|
||||||
|
">+ c #529936",
|
||||||
|
",+ c #559C37",
|
||||||
|
"'+ c #59A039",
|
||||||
|
")+ c #5CA23B",
|
||||||
|
"!+ c #61A63D",
|
||||||
|
"~+ c #64A83F",
|
||||||
|
"{+ c #66AC40",
|
||||||
|
"]+ c #68AD40",
|
||||||
|
"^+ c #799669",
|
||||||
|
"/+ c #D8DBD7",
|
||||||
|
"(+ c #0F150B",
|
||||||
|
"_+ c #879287",
|
||||||
|
":+ c #F8F8F8",
|
||||||
|
"<+ c #658262",
|
||||||
|
"[+ c #3B8233",
|
||||||
|
"}+ c #3E8534",
|
||||||
|
"|+ c #3E8333",
|
||||||
|
"1+ c #7E927A",
|
||||||
|
"2+ c #EDEEEC",
|
||||||
|
"3+ c #5E8355",
|
||||||
|
"4+ c #51953C",
|
||||||
|
"5+ c #54983E",
|
||||||
|
"6+ c #579B3E",
|
||||||
|
"7+ c #5A9E3F",
|
||||||
|
"8+ c #5DA141",
|
||||||
|
"9+ c #60A442",
|
||||||
|
"0+ c #64A744",
|
||||||
|
"a+ c #66A945",
|
||||||
|
"b+ c #6AAC46",
|
||||||
|
"c+ c #67984B",
|
||||||
|
"d+ c #D9DCD8",
|
||||||
|
"e+ c #6E7C66",
|
||||||
|
"f+ c #050505",
|
||||||
|
"g+ c #090A09",
|
||||||
|
"h+ c #939E92",
|
||||||
|
"i+ c #F6F6F6",
|
||||||
|
"j+ c #5A7C57",
|
||||||
|
"k+ c #2C7823",
|
||||||
|
"l+ c #2E7A24",
|
||||||
|
"m+ c #317924",
|
||||||
|
"n+ c #7D9179",
|
||||||
|
"o+ c #5F7F58",
|
||||||
|
"p+ c #3B8628",
|
||||||
|
"q+ c #3E892A",
|
||||||
|
"r+ c #428C2B",
|
||||||
|
"s+ c #41892A",
|
||||||
|
"t+ c #468430",
|
||||||
|
"u+ c #4B952F",
|
||||||
|
"v+ c #4E9831",
|
||||||
|
"w+ c #529B32",
|
||||||
|
"x+ c #559E33",
|
||||||
|
"y+ c #59A235",
|
||||||
|
"z+ c #648F4E",
|
||||||
|
"A+ c #C3C9BF",
|
||||||
|
"B+ c #AEB7A8",
|
||||||
|
"C+ c #040603",
|
||||||
|
"D+ c #040404",
|
||||||
|
"E+ c #0A0C0A",
|
||||||
|
"F+ c #A3ADA3",
|
||||||
|
"G+ c #F3F3F3",
|
||||||
|
"H+ c #5D7E5A",
|
||||||
|
"I+ c #398132",
|
||||||
|
"J+ c #3E8434",
|
||||||
|
"K+ c #3D8132",
|
||||||
|
"L+ c #438935",
|
||||||
|
"M+ c #478C38",
|
||||||
|
"N+ c #498F39",
|
||||||
|
"O+ c #4C9039",
|
||||||
|
"P+ c #7C9275",
|
||||||
|
"Q+ c #CDD1CB",
|
||||||
|
"R+ c #7D9874",
|
||||||
|
"S+ c #658B56",
|
||||||
|
"T+ c #5E8A4C",
|
||||||
|
"U+ c #78986A",
|
||||||
|
"V+ c #92A589",
|
||||||
|
"W+ c #EEEEED",
|
||||||
|
"X+ c #BFC7BB",
|
||||||
|
"Y+ c #323D2D",
|
||||||
|
"Z+ c #080808",
|
||||||
|
"`+ c #181C18",
|
||||||
|
" @ c #B3BAB3",
|
||||||
|
".@ c #EFF0EF",
|
||||||
|
"+@ c #567B54",
|
||||||
|
"@@ c #327C2B",
|
||||||
|
"#@ c #347E2B",
|
||||||
|
"$@ c #38812D",
|
||||||
|
"%@ c #3B852E",
|
||||||
|
"&@ c #3E872E",
|
||||||
|
"*@ c #6C8965",
|
||||||
|
"=@ c #82907B",
|
||||||
|
"-@ c #141A13",
|
||||||
|
";@ c #0A0A0A",
|
||||||
|
">@ c #171817",
|
||||||
|
",@ c #ACB4AC",
|
||||||
|
"'@ c #638262",
|
||||||
|
")@ c #2A7624",
|
||||||
|
"!@ c #2E7927",
|
||||||
|
"~@ c #327C28",
|
||||||
|
"{@ c #5E8158",
|
||||||
|
"]@ c #848F81",
|
||||||
|
"^@ c #6E7E6B",
|
||||||
|
"/@ c #919F8D",
|
||||||
|
"(@ c #ABB4A8",
|
||||||
|
"_@ c #8E9C88",
|
||||||
|
":@ c #63725D",
|
||||||
|
"<@ c #313C2B",
|
||||||
|
"[@ c #0B0B0B",
|
||||||
|
"}@ c #121512",
|
||||||
|
"|@ c #ADB4AD",
|
||||||
|
"1@ c #698469",
|
||||||
|
"2@ c #2F772D",
|
||||||
|
"3@ c #337A30",
|
||||||
|
"4@ c #357D31",
|
||||||
|
"5@ c #3C8334",
|
||||||
|
"6@ c #547E4D",
|
||||||
|
"7@ c #DCDFDC",
|
||||||
|
"8@ c #EEEFEE",
|
||||||
|
"9@ c #525F4E",
|
||||||
|
"0@ c #101311",
|
||||||
|
"a@ c #A8B1A8",
|
||||||
|
"b@ c #658165",
|
||||||
|
"c@ c #1A681B",
|
||||||
|
"d@ c #1B691C",
|
||||||
|
"e@ c #1D6C1C",
|
||||||
|
"f@ c #216F1D",
|
||||||
|
"g@ c #24721F",
|
||||||
|
"h@ c #277520",
|
||||||
|
"i@ c #2B7822",
|
||||||
|
"j@ c #497843",
|
||||||
|
"k@ c #DADDD9",
|
||||||
|
"l@ c #E6E8E5",
|
||||||
|
"m@ c #3F4C3D",
|
||||||
|
"n@ c #151815",
|
||||||
|
"o@ c #AAB2AA",
|
||||||
|
"p@ c #6F876F",
|
||||||
|
"q@ c #2A722B",
|
||||||
|
"r@ c #2C752D",
|
||||||
|
"s@ c #316B32",
|
||||||
|
"t@ c #799179",
|
||||||
|
"u@ c #829882",
|
||||||
|
"v@ c #8B9F8A",
|
||||||
|
"w@ c #4F794D",
|
||||||
|
"x@ c #388032",
|
||||||
|
"y@ c #527E4C",
|
||||||
|
"z@ c #DEE0DD",
|
||||||
|
"A@ c #424D40",
|
||||||
|
"B@ c #0E110E",
|
||||||
|
"C@ c #A7B0A7",
|
||||||
|
"D@ c #708870",
|
||||||
|
"E@ c #236C24",
|
||||||
|
"F@ c #246F25",
|
||||||
|
"G@ c #236F24",
|
||||||
|
"H@ c #306431",
|
||||||
|
"I@ c #DDE0DD",
|
||||||
|
"J@ c #447341",
|
||||||
|
"K@ c #2E7827",
|
||||||
|
"L@ c #307A27",
|
||||||
|
"M@ c #4A7844",
|
||||||
|
"N@ c #D7DAD6",
|
||||||
|
"O@ c #D4D9D3",
|
||||||
|
"P@ c #2C3629",
|
||||||
|
"Q@ c #121412",
|
||||||
|
"R@ c #A6B0A6",
|
||||||
|
"S@ c #728972",
|
||||||
|
"T@ c #206A21",
|
||||||
|
"U@ c #226E23",
|
||||||
|
"V@ c #677667",
|
||||||
|
"W@ c #98A298",
|
||||||
|
"X@ c #D5DAD5",
|
||||||
|
"Y@ c #427340",
|
||||||
|
"Z@ c #317B2C",
|
||||||
|
"`@ c #357E2D",
|
||||||
|
" # c #4D7A47",
|
||||||
|
".# c #D6D9D5",
|
||||||
|
"+# c #CBD1CA",
|
||||||
|
"@# c #31382D",
|
||||||
|
"## c #131313",
|
||||||
|
"$# c #919B91",
|
||||||
|
"%# c #798D79",
|
||||||
|
"&# c #2A702B",
|
||||||
|
"*# c #286C29",
|
||||||
|
"=# c #29652A",
|
||||||
|
"-# c #365A36",
|
||||||
|
";# c #6B7A6B",
|
||||||
|
"># c #151715",
|
||||||
|
",# c #A6AEA6",
|
||||||
|
"'# c #CCD1CC",
|
||||||
|
")# c #41733F",
|
||||||
|
"!# c #357D2F",
|
||||||
|
"~# c #378030",
|
||||||
|
"{# c #4D7A46",
|
||||||
|
"]# c #D3D8D3",
|
||||||
|
"^# c #C1C7C0",
|
||||||
|
"/# c #20281F",
|
||||||
|
"(# c #B5BAB5",
|
||||||
|
"_# c #788E79",
|
||||||
|
":# c #186419",
|
||||||
|
"<# c #19681A",
|
||||||
|
"[# c #3E6E3E",
|
||||||
|
"}# c #C1C5C1",
|
||||||
|
"|# c #697A69",
|
||||||
|
"1# c #111511",
|
||||||
|
"2# c #ADB6AE",
|
||||||
|
"3# c #C1C9C1",
|
||||||
|
"4# c #346C31",
|
||||||
|
"5# c #287422",
|
||||||
|
"6# c #2C7825",
|
||||||
|
"7# c #457640",
|
||||||
|
"8# c #D1D6D0",
|
||||||
|
"9# c #AFB6AD",
|
||||||
|
"0# c #020502",
|
||||||
|
"a# c #B7BCB7",
|
||||||
|
"b# c #296C2A",
|
||||||
|
"c# c #447345",
|
||||||
|
"d# c #D7DAD7",
|
||||||
|
"e# c #D6D8D6",
|
||||||
|
"f# c #C3C7C3",
|
||||||
|
"g# c #C3C6C3",
|
||||||
|
"h# c #5F6F5F",
|
||||||
|
"i# c #161C16",
|
||||||
|
"j# c #BBC2BB",
|
||||||
|
"k# c #BAC2BA",
|
||||||
|
"l# c #3C733A",
|
||||||
|
"m# c #367E31",
|
||||||
|
"n# c #398133",
|
||||||
|
"o# c #4F744B",
|
||||||
|
"p# c #E2E3E2",
|
||||||
|
"q# c #0C110A",
|
||||||
|
"r# c #B6BBB6",
|
||||||
|
"s# c #216B22",
|
||||||
|
"t# c #396C3A",
|
||||||
|
"u# c #CDD2CD",
|
||||||
|
"v# c #B4BDB5",
|
||||||
|
"w# c #171E17",
|
||||||
|
"x# c #1F251F",
|
||||||
|
"y# c #C3C9C3",
|
||||||
|
"z# c #AEB8AE",
|
||||||
|
"A# c #2E6B2B",
|
||||||
|
"B# c #267321",
|
||||||
|
"C# c #396A34",
|
||||||
|
"D# c #DCDDDB",
|
||||||
|
"E# c #020701",
|
||||||
|
"F# c #EFEFEF",
|
||||||
|
"G# c #B1B8B1",
|
||||||
|
"H# c #D9DBD9",
|
||||||
|
"I# c #C9CFC9",
|
||||||
|
"J# c #1D271D",
|
||||||
|
"K# c #090909",
|
||||||
|
"L# c #222A23",
|
||||||
|
"M# c #CDD1CD",
|
||||||
|
"N# c #C0C7C0",
|
||||||
|
"O# c #A3B0A3",
|
||||||
|
"P# c #D7D9D7",
|
||||||
|
"Q# c #080B07",
|
||||||
|
"R# c #B1B6B1",
|
||||||
|
"S# c #F7F7F7",
|
||||||
|
"T# c #D7DAD8",
|
||||||
|
"U# c #364336",
|
||||||
|
"V# c #2F382F",
|
||||||
|
"W# c #D6DAD7",
|
||||||
|
"X# c #D0D4D0",
|
||||||
|
"Y# c #030603",
|
||||||
|
"Z# c #0C120C",
|
||||||
|
"`# c #0D150E",
|
||||||
|
" $ c #090F09",
|
||||||
|
".$ c #262F26",
|
||||||
|
"+$ c #485648",
|
||||||
|
"@$ c #475647",
|
||||||
|
"#$ c #475646",
|
||||||
|
"$$ c #404E3F",
|
||||||
|
" . . . + . . . ",
|
||||||
|
" @ # $ % & % * = - . ",
|
||||||
|
" . ; > , ' ) ! ~ , , { ] ^ ",
|
||||||
|
". . . . . . . / ( _ : < [ } | 1 2 , ( 3 . ",
|
||||||
|
"4 5 6 7 8 9 0 a b c d e f g g g h i j , k l . ",
|
||||||
|
"4 m , , , , n o ^ p , q r r s s t u v w x y , z 4 ",
|
||||||
|
". A ( B C D , E F G H I J s r r K L M , N O P Q H R . ",
|
||||||
|
". S T U V W _ , X Y Z , ` ...f f +.@., , ' #.$.%., &.. ",
|
||||||
|
". *.=.-.;.>.,.M , '.). . !., ~.{.].^.} /.(., , _.:.<.[., }.. ",
|
||||||
|
". |.1.2.3.4.5.6.1., 7.8.. 9., 0.a.b.c.d.e.f.g.h.i.j.k.l., m.. ",
|
||||||
|
". n.M M o.p.q.r.s.' , t.u.v., w.x.y.z.A.B.C.D.E.F.G.} H., I.. ",
|
||||||
|
" J.K., _ L.M.N.O.P.' , Q.R., S.T.U.V.W.X.Y.Z.`. + +i .+, ++. ",
|
||||||
|
" . @+, & #+$+%+&+*+, , , =+-+;+>+,+'+)+!+~+{+]+]+^+, /+(+. ",
|
||||||
|
" . ^ _+, :+<+[+}+|+1+, 2+3+4+5+6+7+8+9+0+a+b+^.c+d+, e+f+ ",
|
||||||
|
" . g+h+, i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+, B+C+D+ ",
|
||||||
|
" . E+F+, G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+, X+Y+Z+ ",
|
||||||
|
" . `+ @, .@+@@@#@$@%@&@*@1., , , , , , :+=@-@;@. ",
|
||||||
|
" >@,@, _ '@)@!@~@4.{@:+, ]@^@/@(@_@:@<@^ [@ ",
|
||||||
|
" }@|@, M 1@2@3@4@I+5@6@7@, 8@9@. . ^ f+4 . ",
|
||||||
|
" 0@a@, 1.b@c@d@e@f@g@h@i@j@k@, l@m@f+ ",
|
||||||
|
" n@o@, ' p@q@r@s@t@u@v@w@x@[+y@d+, z@A@;@ ",
|
||||||
|
" B@C@, , D@E@F@G@H@, , , I@J@K@L@M@N@, O@P@. ",
|
||||||
|
" Q@R@, , S@T@U@U@G@H@, V@W@, X@Y@Z@`@ #.#, +#@### ",
|
||||||
|
". $#, , %#&#r@r@*#=#-#, ;#>#,#, '#)#!#~#{#]#, ^#/#. ",
|
||||||
|
". (#, _#:#<#<#[#}#_.1., |#. 1#2#, 3#4#5#6#7#8#, 9#0# ",
|
||||||
|
". a#}#b#r@r@c#d#, e#f#g#h#. . i#j#, k#l#m#n#o#, p#q#. ",
|
||||||
|
". r#a#s#U@t#u#, v#w#. . . . . x#y#, z#A#B#C#, D#E#. ",
|
||||||
|
". r#F#G#G#H#, I#J#K#. . . . . L#M#, N#O#R@, P#Q#. ",
|
||||||
|
". R#S#S#S#S#T#U#;@ . V#W#, , , , X#Y#. ",
|
||||||
|
". Z#`#`#`#`# $D+. . .$+$@$@$#$$$. . ",
|
||||||
|
". . . . . . . . . . . . . . . ",
|
||||||
|
" "};
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2005-2008 by Felix Geyer *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; version 2 of the License. *
|
||||||
|
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "Application_X11.h"
|
||||||
|
#include "lib/AutoType.h"
|
||||||
|
#include "lib/HelperX11.h"
|
||||||
|
|
||||||
|
KeepassApplication::KeepassApplication(int& argc, char** argv) : QApplication(argc, argv){
|
||||||
|
}
|
||||||
|
|
||||||
|
bool KeepassApplication::x11EventFilter(XEvent* event){
|
||||||
|
static const unsigned int remove_invalid = ControlMask|ShiftMask|Mod1Mask|Mod5Mask|Mod4Mask;
|
||||||
|
if (event->type==KeyPress && AutoType::shortcut.key!=0u && event->xkey.keycode==XKeysymToKeycode(event->xkey.display,HelperX11::getKeysym(AutoType::shortcut.key)) && (event->xkey.state&remove_invalid)==HelperX11::getShortcutModifierMask(AutoType::shortcut) && QApplication::focusWidget()==NULL ){
|
||||||
|
AutoType::performGlobal();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return QApplication::x11EventFilter(event);
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2005-2008 by Felix Geyer *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; version 2 of the License. *
|
||||||
|
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef APPLICATION_X11_H
|
||||||
|
#define APPLICATION_X11_H
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
class KeepassApplication : public QApplication
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
KeepassApplication(int& argc, char** argv);
|
||||||
|
bool x11EventFilter(XEvent* event);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // APPLICATION_X11_H
|
||||||
+4
-2
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "Database.h"
|
#include "Database.h"
|
||||||
#include "lib/random.h"
|
#include "lib/random.h"
|
||||||
|
#include <QCoreApplication>
|
||||||
|
|
||||||
KpxUuid::KpxUuid(){
|
KpxUuid::KpxUuid(){
|
||||||
Data.fill(0,16);
|
Data.fill(0,16);
|
||||||
@@ -76,12 +77,12 @@ bool KpxUuid::operator!=(const KpxUuid& other)const{
|
|||||||
|
|
||||||
|
|
||||||
QString KpxDateTime::toString(Qt::DateFormat format) const{
|
QString KpxDateTime::toString(Qt::DateFormat format) const{
|
||||||
if(*this==Date_Never)return QObject::tr("Never");
|
if(*this==Date_Never)return QCoreApplication::translate("Database","Never");
|
||||||
else return QDateTime::toString(format);
|
else return QDateTime::toString(format);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString KpxDateTime::dateToString(Qt::DateFormat format) const{
|
QString KpxDateTime::dateToString(Qt::DateFormat format) const{
|
||||||
if(*this==Date_Never)return QObject::tr("Never");
|
if(*this==Date_Never)return QCoreApplication::translate("Database","Never");
|
||||||
else return date().toString(format);
|
else return date().toString(format);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,6 +109,7 @@ bool KpxDateTime::operator<(const QDateTime& other){
|
|||||||
if(*this==Date_Never)return false;
|
if(*this==Date_Never)return false;
|
||||||
if(other==Date_Never)return true;
|
if(other==Date_Never)return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+15
-13
@@ -20,10 +20,9 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <qfile.h>
|
#include <QFile>
|
||||||
#include <qstringlist.h>
|
#include <QStringList>
|
||||||
#include <qobject.h>
|
#include <QDateTime>
|
||||||
#include <qdatetime.h>
|
|
||||||
#include <QSysInfo>
|
#include <QSysInfo>
|
||||||
#include <QBuffer>
|
#include <QBuffer>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
@@ -135,11 +134,13 @@ bool Kdb3Database::isMetaStream(StdEntry& p){
|
|||||||
|
|
||||||
|
|
||||||
bool Kdb3Database::parseCustomIconsMetaStreamV1(const QByteArray& dta){
|
bool Kdb3Database::parseCustomIconsMetaStreamV1(const QByteArray& dta){
|
||||||
|
Q_UNUSED(dta)
|
||||||
qDebug("Removed old CuIcMeSt v1");
|
qDebug("Removed old CuIcMeSt v1");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Kdb3Database::parseCustomIconsMetaStreamV2(const QByteArray& dta){
|
bool Kdb3Database::parseCustomIconsMetaStreamV2(const QByteArray& dta){
|
||||||
|
Q_UNUSED(dta)
|
||||||
qDebug("Removed old CuIcMeSt v2");
|
qDebug("Removed old CuIcMeSt v2");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -297,7 +298,7 @@ switch(FieldType)
|
|||||||
entry->Expire=dateFromPackedStruct5(pData);
|
entry->Expire=dateFromPackedStruct5(pData);
|
||||||
break;
|
break;
|
||||||
case 0x000D:
|
case 0x000D:
|
||||||
entry->BinaryDesc=(char*)pData;
|
entry->BinaryDesc=QString::fromUtf8((char*)pData);
|
||||||
break;
|
break;
|
||||||
case 0x000E:
|
case 0x000E:
|
||||||
if(FieldSize != 0)
|
if(FieldSize != 0)
|
||||||
@@ -525,13 +526,13 @@ RootGroup.Handle=NULL;
|
|||||||
memcpyFromLEnd16(&FieldType, pField);
|
memcpyFromLEnd16(&FieldType, pField);
|
||||||
pField += 2; pos += 2;
|
pField += 2; pos += 2;
|
||||||
if(pos >= total_size) {
|
if(pos >= total_size) {
|
||||||
error=tr("Unexpected error: Offset is out of range. [G1]");
|
error=tr("Unexpected error: Offset is out of range.").append(" [G1]");
|
||||||
return false; }
|
return false; }
|
||||||
|
|
||||||
memcpyFromLEnd32(&FieldSize, pField);
|
memcpyFromLEnd32(&FieldSize, pField);
|
||||||
pField += 4; pos += 4;
|
pField += 4; pos += 4;
|
||||||
if(pos >= (total_size + FieldSize)){
|
if(pos >= (total_size + FieldSize)){
|
||||||
error=tr("Unexpected error: Offset is out of range. [G2]");
|
error=tr("Unexpected error: Offset is out of range.").append(" [G2]");
|
||||||
return false;}
|
return false;}
|
||||||
|
|
||||||
bRet = readGroupField(&group,Levels, FieldType, FieldSize, (quint8 *)pField);
|
bRet = readGroupField(&group,Levels, FieldType, FieldSize, (quint8 *)pField);
|
||||||
@@ -542,7 +543,7 @@ RootGroup.Handle=NULL;
|
|||||||
pField += FieldSize;
|
pField += FieldSize;
|
||||||
pos += FieldSize;
|
pos += FieldSize;
|
||||||
if(pos >= total_size) {
|
if(pos >= total_size) {
|
||||||
error=tr("Unexpected error: Offset is out of range. [G1]");
|
error=tr("Unexpected error: Offset is out of range.").append(" [G1]");
|
||||||
return false;}
|
return false;}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -555,13 +556,13 @@ StdEntry entry;
|
|||||||
memcpyFromLEnd16(&FieldType, pField);
|
memcpyFromLEnd16(&FieldType, pField);
|
||||||
pField += 2; pos += 2;
|
pField += 2; pos += 2;
|
||||||
if(pos >= total_size){
|
if(pos >= total_size){
|
||||||
error=tr("Unexpected error: Offset is out of range. [E1]");
|
error=tr("Unexpected error: Offset is out of range.").append(" [E1]");
|
||||||
return false;}
|
return false;}
|
||||||
|
|
||||||
memcpyFromLEnd32(&FieldSize, pField);
|
memcpyFromLEnd32(&FieldSize, pField);
|
||||||
pField += 4; pos += 4;
|
pField += 4; pos += 4;
|
||||||
if(pos >= (total_size + FieldSize)) {
|
if(pos >= (total_size + FieldSize)) {
|
||||||
error=tr("Unexpected error: Offset is out of range. [E2]");
|
error=tr("Unexpected error: Offset is out of range.").append(" [E2]");
|
||||||
return false; }
|
return false; }
|
||||||
|
|
||||||
bRet = readEntryField(&entry,FieldType,FieldSize,(quint8*)pField);
|
bRet = readEntryField(&entry,FieldType,FieldSize,(quint8*)pField);
|
||||||
@@ -574,7 +575,7 @@ StdEntry entry;
|
|||||||
pField += FieldSize;
|
pField += FieldSize;
|
||||||
pos += FieldSize;
|
pos += FieldSize;
|
||||||
if(pos >= total_size) {
|
if(pos >= total_size) {
|
||||||
error=tr("Unexpected error: Offset is out of range. [E3]");
|
error=tr("Unexpected error: Offset is out of range.").append(" [E3]");
|
||||||
return false; }
|
return false; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1200,7 +1201,8 @@ bool Kdb3Database::save(){
|
|||||||
NumGroups = Groups.size();
|
NumGroups = Groups.size();
|
||||||
NumEntries = Entries.size()+UnknownMetaStreams.size()+MetaStreams.size();
|
NumEntries = Entries.size()+UnknownMetaStreams.size()+MetaStreams.size();
|
||||||
|
|
||||||
qSort(Entries.begin(),Entries.end(),StdEntryLessThan);
|
QList<StdEntry> saveEntries = Entries;
|
||||||
|
qSort(saveEntries.begin(),saveEntries.end(),StdEntryLessThan);
|
||||||
|
|
||||||
randomize(FinalRandomSeed,16);
|
randomize(FinalRandomSeed,16);
|
||||||
randomize(TransfRandomSeed,32);
|
randomize(TransfRandomSeed,32);
|
||||||
@@ -1209,7 +1211,7 @@ bool Kdb3Database::save(){
|
|||||||
unsigned int pos=DB_HEADER_SIZE; // Skip the header, it will be written later
|
unsigned int pos=DB_HEADER_SIZE; // Skip the header, it will be written later
|
||||||
|
|
||||||
serializeGroups(Groups,buffer,pos);
|
serializeGroups(Groups,buffer,pos);
|
||||||
serializeEntries(Entries,buffer,pos);
|
serializeEntries(saveEntries,buffer,pos);
|
||||||
serializeEntries(UnknownMetaStreams,buffer,pos);
|
serializeEntries(UnknownMetaStreams,buffer,pos);
|
||||||
serializeEntries(MetaStreams,buffer,pos);
|
serializeEntries(MetaStreams,buffer,pos);
|
||||||
SHA256::hashBuffer(buffer+DB_HEADER_SIZE,ContentsHash,pos-DB_HEADER_SIZE);
|
SHA256::hashBuffer(buffer+DB_HEADER_SIZE,ContentsHash,pos-DB_HEADER_SIZE);
|
||||||
|
|||||||
+1
-2
@@ -30,8 +30,7 @@
|
|||||||
#define PWM_FLAG_TWOFISH 8
|
#define PWM_FLAG_TWOFISH 8
|
||||||
#define PWM_STD_KEYENCROUNDS 6000
|
#define PWM_STD_KEYENCROUNDS 6000
|
||||||
|
|
||||||
#include <qcolor.h>
|
#include <QColor>
|
||||||
#include <qobject.h>
|
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QDate>
|
#include <QDate>
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
|
|||||||
+63
-1
@@ -22,10 +22,12 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "KpxConfig.h"
|
#include "KpxConfig.h"
|
||||||
#include <Qt>
|
#include <QApplication>
|
||||||
|
#include <QSettings>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
|
||||||
KpxConfig::KpxConfig(const QString& filePath) : settings(filePath,QSettings::IniFormat){
|
KpxConfig::KpxConfig(const QString& filePath) : settings(filePath,QSettings::IniFormat){
|
||||||
|
configFile=filePath;
|
||||||
if (settings.contains("Options/GroupTreeRestore") && !settings.contains("Options/GroupTreeState")){
|
if (settings.contains("Options/GroupTreeRestore") && !settings.contains("Options/GroupTreeState")){
|
||||||
switch (settings.value("Options/GroupTreeRestore",1).toInt()){
|
switch (settings.value("Options/GroupTreeRestore",1).toInt()){
|
||||||
case 0:
|
case 0:
|
||||||
@@ -45,6 +47,34 @@ KpxConfig::KpxConfig(const QString& filePath) : settings(filePath,QSettings::Ini
|
|||||||
setUrlCmd(QString());
|
setUrlCmd(QString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
Shortcut KpxConfig::globalShortcut(){
|
||||||
|
Shortcut s;
|
||||||
|
s.key = settings.value("Options/GlobalShortcutKey",0).toUInt();
|
||||||
|
QBitArray mods = settings.value("Options/GlobalShortcutMods",QBitArray(5)).toBitArray();
|
||||||
|
if (mods.size()!=5)
|
||||||
|
mods = QBitArray(5);
|
||||||
|
s.ctrl = mods.testBit(0);
|
||||||
|
s.shift = mods.testBit(1);
|
||||||
|
s.alt = mods.testBit(2);
|
||||||
|
s.altgr = mods.testBit(3);
|
||||||
|
s.win = mods.testBit(4);
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KpxConfig::setGlobalShortcut(const Shortcut& s){
|
||||||
|
settings.setValue("Options/GlobalShortcutKey", s.key);
|
||||||
|
QBitArray mods(5);
|
||||||
|
mods.setBit(0, s.ctrl);
|
||||||
|
mods.setBit(1, s.shift);
|
||||||
|
mods.setBit(2, s.alt);
|
||||||
|
mods.setBit(3, s.altgr);
|
||||||
|
mods.setBit(4, s.win);
|
||||||
|
settings.setValue("Options/GlobalShortcutMods", mods);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
unsigned KpxConfig::fileDlgHistorySize(){
|
unsigned KpxConfig::fileDlgHistorySize(){
|
||||||
settings.beginGroup("FileDlgHistory");
|
settings.beginGroup("FileDlgHistory");
|
||||||
unsigned res=static_cast<unsigned>(settings.childKeys().size());
|
unsigned res=static_cast<unsigned>(settings.childKeys().size());
|
||||||
@@ -183,3 +213,35 @@ QString KpxConfig::keyTypeToString(tKeyType keyType){
|
|||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString KpxConfig::detailViewTemplate(){
|
||||||
|
if (settings.contains("UI/DetailsView")){
|
||||||
|
return QString::fromUtf8( qUncompress(settings.value("UI/DetailsView").toByteArray()) );
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return defaultDetailViewTemplate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QString KpxConfig::defaultDetailViewTemplate(){
|
||||||
|
QFile templ(":/default-detailview.html");
|
||||||
|
templ.open(QIODevice::ReadOnly);
|
||||||
|
QString value=QString::fromUtf8(templ.readAll());
|
||||||
|
templ.close();
|
||||||
|
value.replace("Group",QCoreApplication::translate("DetailViewTemplate","Group"));
|
||||||
|
value.replace("Title",QCoreApplication::translate("DetailViewTemplate","Title"));
|
||||||
|
value.replace("Username",QCoreApplication::translate("DetailViewTemplate","Username"));
|
||||||
|
value.replace("Password",QCoreApplication::translate("DetailViewTemplate","Password"));
|
||||||
|
value.replace("URL",QCoreApplication::translate("DetailViewTemplate","URL"));
|
||||||
|
value.replace("Creation",QCoreApplication::translate("DetailViewTemplate","Creation"));
|
||||||
|
value.replace("Last Access",QCoreApplication::translate("DetailViewTemplate","Last Access"));
|
||||||
|
value.replace("Last Modification",QCoreApplication::translate("DetailViewTemplate","Last Modification"));
|
||||||
|
value.replace("Expiration",QCoreApplication::translate("DetailViewTemplate","Expiration"));
|
||||||
|
value.replace("Comment",QCoreApplication::translate("DetailViewTemplate","Comment"));
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KpxConfig::setDetailViewTemplate(const QString& value){
|
||||||
|
settings.setValue("UI/DetailsView", qCompress(value.toUtf8(),9) );
|
||||||
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
#define _KPXCONFIG_H_
|
#define _KPXCONFIG_H_
|
||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
#include "AutoType.h"
|
||||||
#include <QBitArray>
|
#include <QBitArray>
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
@@ -43,6 +44,8 @@
|
|||||||
|
|
||||||
class KpxConfig{
|
class KpxConfig{
|
||||||
public:
|
public:
|
||||||
|
friend class KpxBookmarks;
|
||||||
|
|
||||||
enum IntegrPluginType{NoIntegr,KDE,Gnome};
|
enum IntegrPluginType{NoIntegr,KDE,Gnome};
|
||||||
enum GrpTreeState{DoNothing,RestoreLast,ExpandAll};
|
enum GrpTreeState{DoNothing,RestoreLast,ExpandAll};
|
||||||
|
|
||||||
@@ -56,6 +59,8 @@ public:
|
|||||||
QBitArray columns(){return stringToBitArray(settings.value("UI/Columns","11111000000").toString(),11);}
|
QBitArray columns(){return stringToBitArray(settings.value("UI/Columns","11111000000").toString(),11);}
|
||||||
QList<int> columnOrder(){return stringToIntArray(settings.value("UI/ColumnOrder","100,100,100,100,100,100,100,100,100,100,100").toString(),11);}
|
QList<int> columnOrder(){return stringToIntArray(settings.value("UI/ColumnOrder","100,100,100,100,100,100,100,100,100,100,100").toString(),11);}
|
||||||
QList<int> columnSizes(){return stringToIntArray(settings.value("UI/ColumnSizes","15,10,10,10,10,10,10,10,10,10,10").toString(),11);}
|
QList<int> columnSizes(){return stringToIntArray(settings.value("UI/ColumnSizes","15,10,10,10,10,10,10,10,10,10,10").toString(),11);}
|
||||||
|
int columnSort(){return settings.value("UI/ColumnSort",0).toInt();}
|
||||||
|
Qt::SortOrder columnSortOrder(){return static_cast<Qt::SortOrder>(settings.value("UI/ColumnSortOrder",Qt::AscendingOrder).toInt());}
|
||||||
QStringList fileDlgHistory(unsigned index){return settings.value(QString("FileDlgHistory/ENTRY%1").arg(index)).toStringList();}
|
QStringList fileDlgHistory(unsigned index){return settings.value(QString("FileDlgHistory/ENTRY%1").arg(index)).toStringList();}
|
||||||
GrpTreeState groupTreeState(){return stringToGrpTreeState(settings.value("Options/GroupTreeState").toString());}
|
GrpTreeState groupTreeState(){return stringToGrpTreeState(settings.value("Options/GroupTreeState").toString());}
|
||||||
bool hidePasswords(){return settings.value("UI/HidePasswords",true).toBool();}
|
bool hidePasswords(){return settings.value("UI/HidePasswords",true).toBool();}
|
||||||
@@ -68,6 +73,9 @@ public:
|
|||||||
tKeyType lastKeyType(){return stringToKeyType(settings.value("Options/LastKeyType").toString());}
|
tKeyType lastKeyType(){return stringToKeyType(settings.value("Options/LastKeyType").toString());}
|
||||||
QRect mainWindowGeometry(const QRect& defaultValue){return settings.value("UI/MainWindowGeometry",defaultValue).toRect();}
|
QRect mainWindowGeometry(const QRect& defaultValue){return settings.value("UI/MainWindowGeometry",defaultValue).toRect();}
|
||||||
bool minimizeToTray(){return settings.value("Options/MinimizeToTray",false).toBool();}
|
bool minimizeToTray(){return settings.value("Options/MinimizeToTray",false).toBool();}
|
||||||
|
bool minimizeTray(){return settings.value("Options/MinimizeTray",false).toBool();}
|
||||||
|
bool startMinimized(){return settings.value("Options/StartMinimized",false).toBool();}
|
||||||
|
bool startLocked(){return settings.value("Options/StartLocked",false).toBool();}
|
||||||
QString mountDir(){return settings.value("Options/MountDir",DEFAULT_MOUNT_DIR).toString();}
|
QString mountDir(){return settings.value("Options/MountDir",DEFAULT_MOUNT_DIR).toString();}
|
||||||
bool openLastFile(){return settings.value("Options/OpenLastFile",true).toBool();}
|
bool openLastFile(){return settings.value("Options/OpenLastFile",true).toBool();}
|
||||||
QString pwGenCharList(){return settings.value("Options/PwGenCharList").toString();}
|
QString pwGenCharList(){return settings.value("Options/PwGenCharList").toString();}
|
||||||
@@ -80,15 +88,23 @@ public:
|
|||||||
bool showEntryDetails(){return settings.value("UI/ShowEntryDetails",true).toBool();}
|
bool showEntryDetails(){return settings.value("UI/ShowEntryDetails",true).toBool();}
|
||||||
bool showPasswords(){return settings.value("Options/ShowPasswords",false).toBool();}
|
bool showPasswords(){return settings.value("Options/ShowPasswords",false).toBool();}
|
||||||
bool showPasswordsPasswordDlg(){return settings.value("Options/ShowPasswordsPasswordDlg",false).toBool();}
|
bool showPasswordsPasswordDlg(){return settings.value("Options/ShowPasswordsPasswordDlg",false).toBool();}
|
||||||
|
bool lockOnMinimize(){return settings.value("Options/LockOnMinimize",false).toBool();}
|
||||||
bool showStatusbar(){return settings.value("UI/ShowStatusbar",true).toBool();}
|
bool showStatusbar(){return settings.value("UI/ShowStatusbar",true).toBool();}
|
||||||
bool showSysTrayIcon(){return settings.value("Options/ShowSysTrayIcon",false).toBool();}
|
bool showSysTrayIcon(){return settings.value("Options/ShowSysTrayIcon",false).toBool();}
|
||||||
bool showToolbar(){return settings.value("UI/ShowToolbar",true).toBool();}
|
bool showToolbar(){return settings.value("UI/ShowToolbar",true).toBool();}
|
||||||
int toolbarIconSize(){return settings.value("UI/ToolbarIconSize",16).toInt();}
|
int toolbarIconSize(){return settings.value("UI/ToolbarIconSize",16).toInt();}
|
||||||
QString urlCmd(){return settings.value("Options/UrlCmd").toString();}
|
QString urlCmd(){return settings.value("Options/UrlCmd").toString();}
|
||||||
|
bool urlCmdDef(){return settings.value("Options/UrlCmdDef",true).toBool();}
|
||||||
QByteArray vSplitterPos(){return settings.value("UI/VSplitterPos").toByteArray();}
|
QByteArray vSplitterPos(){return settings.value("UI/VSplitterPos").toByteArray();}
|
||||||
bool askBeforeDelete(){return settings.value("Options/AskBeforeDelete",true).toBool();}
|
bool askBeforeDelete(){return settings.value("Options/AskBeforeDelete",true).toBool();}
|
||||||
|
#ifdef AUTOTYPE
|
||||||
int autoTypePreGap(){return settings.value("Options/AutoTypePreGap",500).toInt();}
|
int autoTypePreGap(){return settings.value("Options/AutoTypePreGap",500).toInt();}
|
||||||
int autoTypeKeyStrokeDelay(){return settings.value("Options/AutoTypeKeyStrokeDelay",0).toInt();}
|
int autoTypeKeyStrokeDelay(){return settings.value("Options/AutoTypeKeyStrokeDelay",0).toInt();}
|
||||||
|
#endif
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
Shortcut globalShortcut();
|
||||||
|
bool entryTitlesMatch(){return settings.value("Options/EntryTitlesMatch",true).toBool();}
|
||||||
|
#endif
|
||||||
bool featureBookmarks(){return settings.value("Features/Bookmarks",true).toBool();}
|
bool featureBookmarks(){return settings.value("Features/Bookmarks",true).toBool();}
|
||||||
|
|
||||||
void setAlternatingRowColors(bool value){settings.setValue("Options/AlternatingRowColors",value);}
|
void setAlternatingRowColors(bool value){settings.setValue("Options/AlternatingRowColors",value);}
|
||||||
@@ -99,6 +115,8 @@ public:
|
|||||||
void setColumns(const QBitArray& value){settings.setValue("UI/Columns",bitArrayToString(value));}
|
void setColumns(const QBitArray& value){settings.setValue("UI/Columns",bitArrayToString(value));}
|
||||||
void setColumnOrder(const QList<int>& value){settings.setValue("UI/ColumnOrder",intArrayToString(value));}
|
void setColumnOrder(const QList<int>& value){settings.setValue("UI/ColumnOrder",intArrayToString(value));}
|
||||||
void setColumnSizes(const QList<int>& value){settings.setValue("UI/ColumnSizes",intArrayToString(value));}
|
void setColumnSizes(const QList<int>& value){settings.setValue("UI/ColumnSizes",intArrayToString(value));}
|
||||||
|
void setColumnSort(int value){settings.setValue("UI/ColumnSort",value);}
|
||||||
|
void setColumnSortOrder(int value){settings.setValue("UI/ColumnSortOrder",value);}
|
||||||
void setFileDlgHistory(unsigned index,const QStringList& value){settings.setValue(QString("FileDlgHistory/ENTRY%1").arg(index), value);}
|
void setFileDlgHistory(unsigned index,const QStringList& value){settings.setValue(QString("FileDlgHistory/ENTRY%1").arg(index), value);}
|
||||||
void setGroupTreeState(GrpTreeState value){settings.setValue("Options/GroupTreeState",grpTreeStateToString(value));}
|
void setGroupTreeState(GrpTreeState value){settings.setValue("Options/GroupTreeState",grpTreeStateToString(value));}
|
||||||
void setHidePasswords(bool value){settings.setValue("UI/HidePasswords",value);}
|
void setHidePasswords(bool value){settings.setValue("UI/HidePasswords",value);}
|
||||||
@@ -111,6 +129,9 @@ public:
|
|||||||
void setLastKeyType(tKeyType value){settings.setValue("Options/LastKeyType",keyTypeToString(value));}
|
void setLastKeyType(tKeyType value){settings.setValue("Options/LastKeyType",keyTypeToString(value));}
|
||||||
void setMainWindowGeometry(const QRect& value){settings.setValue("UI/MainWindowGeometry",value);}
|
void setMainWindowGeometry(const QRect& value){settings.setValue("UI/MainWindowGeometry",value);}
|
||||||
void setMinimizeToTray(bool value){settings.setValue("Options/MinimizeToTray",value);}
|
void setMinimizeToTray(bool value){settings.setValue("Options/MinimizeToTray",value);}
|
||||||
|
void setMinimizeTray(bool value){settings.setValue("Options/MinimizeTray",value);}
|
||||||
|
void setStartMinimized(bool value){settings.setValue("Options/StartMinimized",value);}
|
||||||
|
void setStartLocked(bool value){settings.setValue("Options/StartLocked",value);}
|
||||||
void setMountDir(const QString& value){settings.setValue("Options/MountDir",value);}
|
void setMountDir(const QString& value){settings.setValue("Options/MountDir",value);}
|
||||||
void setOpenLastFile(bool value){settings.setValue("Options/OpenLastFile",value);}
|
void setOpenLastFile(bool value){settings.setValue("Options/OpenLastFile",value);}
|
||||||
void setPwGenCharList(const QString& value){settings.setValue("Options/PwGenCharList",value);}
|
void setPwGenCharList(const QString& value){settings.setValue("Options/PwGenCharList",value);}
|
||||||
@@ -123,22 +144,35 @@ public:
|
|||||||
void setShowEntryDetails(bool value){settings.setValue("UI/ShowEntryDetails",value);}
|
void setShowEntryDetails(bool value){settings.setValue("UI/ShowEntryDetails",value);}
|
||||||
void setShowPasswords(bool value){settings.setValue("Options/ShowPasswords",value);}
|
void setShowPasswords(bool value){settings.setValue("Options/ShowPasswords",value);}
|
||||||
void setShowPasswordsPasswordDlg(bool value){settings.setValue("Options/ShowPasswordsPasswordDlg",value);}
|
void setShowPasswordsPasswordDlg(bool value){settings.setValue("Options/ShowPasswordsPasswordDlg",value);}
|
||||||
|
void setLockOnMinimize(bool value){settings.setValue("Options/LockOnMinimize",value);}
|
||||||
void setShowStatusbar(bool value){settings.setValue("UI/ShowStatusbar",value);}
|
void setShowStatusbar(bool value){settings.setValue("UI/ShowStatusbar",value);}
|
||||||
void setShowSysTrayIcon(bool value){settings.setValue("Options/ShowSysTrayIcon",value);}
|
void setShowSysTrayIcon(bool value){settings.setValue("Options/ShowSysTrayIcon",value);}
|
||||||
void setShowToolbar(bool value){settings.setValue("UI/ShowToolbar",value);}
|
void setShowToolbar(bool value){settings.setValue("UI/ShowToolbar",value);}
|
||||||
void setToolbarIconSize(int value){settings.setValue("UI/ToolbarIconSize",value);}
|
void setToolbarIconSize(int value){settings.setValue("UI/ToolbarIconSize",value);}
|
||||||
void setUrlCmd(const QString& value){settings.setValue("Options/UrlCmd",value);}
|
void setUrlCmd(const QString& value){settings.setValue("Options/UrlCmd",value);}
|
||||||
|
void setUrlCmdDef(bool value){settings.setValue("Options/UrlCmdDef",value);}
|
||||||
void setVSplitterPos(const QByteArray& value){settings.setValue("UI/VSplitterPos",value);}
|
void setVSplitterPos(const QByteArray& value){settings.setValue("UI/VSplitterPos",value);}
|
||||||
void setAskBeforeDelete(bool value){settings.setValue("Options/AskBeforeDelete",value);}
|
void setAskBeforeDelete(bool value){settings.setValue("Options/AskBeforeDelete",value);}
|
||||||
|
#ifdef AUTOTYPE
|
||||||
void setAutoTypePreGap(int value){settings.setValue("Options/AutoTypePreGap",value);}
|
void setAutoTypePreGap(int value){settings.setValue("Options/AutoTypePreGap",value);}
|
||||||
void setAutoTypeKeyStrokeDelay(int value){settings.setValue("Options/AutoTypeKeyStrokeDelay",value);}
|
void setAutoTypeKeyStrokeDelay(int value){settings.setValue("Options/AutoTypeKeyStrokeDelay",value);}
|
||||||
|
#endif
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
void setGlobalShortcut(const Shortcut& s);
|
||||||
|
void setEntryTitlesMatch(bool value){settings.setValue("Options/EntryTitlesMatch",value);}
|
||||||
|
#endif
|
||||||
void setFeatureBookmarks(bool value){settings.setValue("Features/Bookmarks",value);}
|
void setFeatureBookmarks(bool value){settings.setValue("Features/Bookmarks",value);}
|
||||||
|
|
||||||
unsigned fileDlgHistorySize();
|
unsigned fileDlgHistorySize();
|
||||||
void clearFileDlgHistory(){settings.remove("FileDlgHistory");};
|
void clearFileDlgHistory(){settings.remove("FileDlgHistory");};
|
||||||
|
|
||||||
|
QString detailViewTemplate();
|
||||||
|
QString defaultDetailViewTemplate();
|
||||||
|
void setDetailViewTemplate(const QString& value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QSettings settings;
|
QSettings settings;
|
||||||
|
QString configFile;
|
||||||
|
|
||||||
QColor stringToColor(const QString& str);
|
QColor stringToColor(const QString& str);
|
||||||
QBitArray stringToBitArray(const QString& str, unsigned count);
|
QBitArray stringToBitArray(const QString& str, unsigned count);
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@
|
|||||||
#ifndef _SHA256_H
|
#ifndef _SHA256_H
|
||||||
#define _SHA256_H
|
#define _SHA256_H
|
||||||
|
|
||||||
#include <qglobal.h>
|
#include <QGlobalStatic>
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -171,7 +171,8 @@
|
|||||||
* Standard include files will probably be ok.
|
* Standard include files will probably be ok.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <qstring.h> /* for memset(), memcpy(), and memcmp() */
|
#include <QString> /* for memset(), memcpy(), and memcmp() */
|
||||||
|
#include <cstdlib>
|
||||||
#include "twofish.h"
|
#include "twofish.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -476,7 +477,7 @@
|
|||||||
|
|
||||||
|
|
||||||
void Twofish_fatal(char* msg){
|
void Twofish_fatal(char* msg){
|
||||||
qCritical("Twofish: Fatal Error");
|
qCritical("Twofish: Fatal Error: %s",msg);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+17
-16
@@ -17,7 +17,7 @@
|
|||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include <qmessagebox.h>
|
#include <QMessageBox>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
|
||||||
#include "AboutDlg.h"
|
#include "AboutDlg.h"
|
||||||
@@ -26,41 +26,42 @@
|
|||||||
AboutDialog::AboutDialog(QWidget* parent):QDialog(parent)
|
AboutDialog::AboutDialog(QWidget* parent):QDialog(parent)
|
||||||
{
|
{
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
createBanner(&BannerPixmap,getPixmap("keepassx_large"),tr("%1 %2").arg(APP_DISPLAY_NAME, APP_VERSION),width());
|
createBanner(&BannerPixmap,getPixmap("keepassx_large"),QString("%1 %2").arg(APP_DISPLAY_NAME, APP_VERSION),width());
|
||||||
loadLicFromFile();
|
loadLicFromFile();
|
||||||
|
|
||||||
labelAppName->setText(tr(APP_DISPLAY_NAME));
|
labelAppName->setText(APP_DISPLAY_NAME);
|
||||||
labelAppFunc->setText(tr(" - %1").arg(APP_LONG_FUNC));
|
labelAppFunc->setText(QString(" - ").append(APP_LONG_FUNC));
|
||||||
|
|
||||||
QString AboutTr=tr("<b>Current Translation: None</b><br><br>","Please replace 'None' with the language of your translation");
|
QString AboutTr=tr("<b>Current Translation: None</b><br><br>","Please replace 'None' with the language of your translation");
|
||||||
if(TrActive){
|
if(TrActive){
|
||||||
AboutTr+=tr("<b>Author:</b> %1<br>").arg(tr("$TRANSLATION_AUTHOR"));
|
AboutTr+=tr("<b>Author:</b> %1<br>").arg(tr("$TRANSLATION_AUTHOR"));
|
||||||
QString mail=tr("$TRANSLATION_AUTHOR_EMAIL","Here you can enter your email or homepage if you want.");
|
QString mail=tr("$TRANSLATION_AUTHOR_EMAIL","Here you can enter your email or homepage if you want.");
|
||||||
if(mail!=QString()){
|
if(!mail.isEmpty()){
|
||||||
AboutTr+=mail+"<br>";
|
AboutTr+=mail+"<br>";
|
||||||
}
|
}
|
||||||
AboutTr+="<br>";
|
AboutTr+="<br>";
|
||||||
}
|
}
|
||||||
Edit_Translation->setHtml(AboutTr+tr("\
|
Edit_Translation->setHtml(AboutTr+tr("Information on how to translate KeePassX can be found under:")
|
||||||
Information on how to translate KeePassX can be found under:\n\
|
+"<br>http://keepassx.sourceforge.net/");
|
||||||
http://keepassx.sourceforge.net/"));
|
|
||||||
QString str;
|
QString str;
|
||||||
str+="<b>"+tr("Team")+"</b><br>";
|
str+="<b>"+tr("Team")+"</b><br>";
|
||||||
str+="<div style='margin-left:10px;'>";
|
str+="<div style='margin-left:10px;'>";
|
||||||
str+="<u>"+tr("Tarek Saidi")+"</u><br>"+tr("Developer, Project Admin")+"<br>"+tr("tarek_saidi@users.sf.net")+"<br>";
|
str+="<u>Tarek Saidi</u><br>"+tr("Developer, Project Admin")+"<br>tarek_saidi@users.sf.net<br>";
|
||||||
str+="<br>";
|
str+="<br>";
|
||||||
str+="<u>"+tr("Eugen Gorschenin")+"</u><br>"+tr("Web Designer")+"<br>"+tr("geugen@users.sf.de")+"<br>";
|
str+="<u>Eugen Gorschenin</u><br>"+tr("Web Designer")+"<br>geugen@users.sf.de<br>";
|
||||||
str+="<br>";
|
str+="<br>";
|
||||||
str+="<u>"+tr("Juan J González Cárdenas [Jota Jota]")+"</u><br>"+tr("Developer")+"<br>"+tr("myxelf@users.sf.net")+"<br>";
|
str+="<u>Juan J González Cárdenas [Jota Jota]</u><br>"+tr("Developer")+"<br>myxelf@users.sf.net<br>";
|
||||||
str+="</div><br><div style='margin-left:0px;'>";
|
str+="</div><br><div style='margin-left:0px;'>";
|
||||||
str+="<b>"+tr("Thanks To")+"</b><br>";
|
str+="<b>"+tr("Thanks To")+"</b><br>";
|
||||||
str+="</div><div style='margin-left:10px;'>";
|
str+="</div><div style='margin-left:10px;'>";
|
||||||
str+="<u>"+tr("Matthias Miller")+"</u><br>"+tr("Patches for better MacOS X support")+"<br>"+tr("www.outofhanwell.com")+"<br></div>";
|
str+="<u>Matthias Miller</u><br>"+tr("Patches for better MacOS X support")+"<br>www.outofhanwell.com<br></div>";
|
||||||
str+="<br>";
|
str+="<br>";
|
||||||
str+="<u>"+tr("James Nicholls")+"</u><br>"+tr("Main Application Icon")/*+"<br>"+tr("mailto:???")*/+"<br></div>";
|
str+="<u>James Nicholls</u><br>"+tr("Main Application Icon")/*+"<br>"+tr("mailto:???")*/+"<br></div>";
|
||||||
str+="<br>";
|
str+="<br>";
|
||||||
str+="<u>"+tr("Constantin Makshin")+"</u><br>"+tr("Various fixes and improvements")+"<br>"+tr("dinosaur-rus@users.sourceforge.net")+"<br></div>";
|
str+="<u>Constantin Makshin</u><br>"+tr("Various fixes and improvements")+"<br>dinosaur-rus@users.sourceforge.net<br></div>";
|
||||||
Edit_Thanks->setHtml(str);
|
Edit_Thanks->setHtml(str);
|
||||||
|
|
||||||
|
connect(ButtonBox, SIGNAL(accepted()), SLOT(close()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void AboutDialog::paintEvent(QPaintEvent *event){
|
void AboutDialog::paintEvent(QPaintEvent *event){
|
||||||
@@ -87,7 +88,7 @@ return;
|
|||||||
|
|
||||||
if(!gpl.open(QIODevice::ReadOnly)){
|
if(!gpl.open(QIODevice::ReadOnly)){
|
||||||
QMessageBox::critical(this,tr("Error"),tr("Could not open file '%1'")
|
QMessageBox::critical(this,tr("Error"),tr("Could not open file '%1'")
|
||||||
.arg("'license.txt'")+tr("The following error occured:\n%1").arg(gpl.errorString())
|
.arg("'license.txt'")+"\n"+tr("The following error occured:")+"\n"+gpl.errorString()
|
||||||
,tr("OK"),0,0,2,1);
|
,tr("OK"),0,0,2,1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -100,7 +101,7 @@ delete buffer;
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AboutDialog::OnHomepageClicked(){
|
void AboutDialog::OnHomepageClicked(){
|
||||||
openBrowser(tr("http://keepassx.sf.net"));
|
openBrowser("http://keepassx.sf.net");
|
||||||
}
|
}
|
||||||
|
|
||||||
void AboutDialog::OnEMailClicked(){
|
void AboutDialog::OnEMailClicked(){
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ AddBookmarkDlg::AddBookmarkDlg(QWidget* parent, QString DefaultFilename, int _It
|
|||||||
if(ItemID==-1){
|
if(ItemID==-1){
|
||||||
createBanner(&BannerPixmap,getPixmap("bookmark_add"),tr("Add Bookmark"),width());
|
createBanner(&BannerPixmap,getPixmap("bookmark_add"),tr("Add Bookmark"),width());
|
||||||
|
|
||||||
if(DefaultFilename==QString())
|
if(DefaultFilename.isEmpty())
|
||||||
OnButtonBrowse();
|
OnButtonBrowse();
|
||||||
else
|
else
|
||||||
Edit_Filename->setText(DefaultFilename);
|
Edit_Filename->setText(DefaultFilename);
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2005-2008 by Felix Geyer *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; version 2 of the License. *
|
||||||
|
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "AutoTypeDlg.h"
|
||||||
|
#include "KpxConfig.h"
|
||||||
|
#include <QDesktopWidget>
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QPaintEvent>
|
||||||
|
|
||||||
|
AutoTypeDlg::AutoTypeDlg(QList<IEntryHandle*> entries, QList<int> numbers){
|
||||||
|
setupUi(this);
|
||||||
|
createBanner(&BannerPixmap,getPixmap("keepassx_large"),tr("Auto-Type"),width());
|
||||||
|
setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
setWindowFlags(windowFlags()|Qt::WindowStaysOnTopHint);
|
||||||
|
setGeometry( QRect(QApplication::desktop()->screenGeometry(QCursor::pos()).center() - rect().center(), size()) );
|
||||||
|
setWindowIcon(getIcon("keepassx"));
|
||||||
|
entryList->setAlternatingRowColors(config->alternatingRowColors());
|
||||||
|
|
||||||
|
QList<QTreeWidgetItem*> itemList;
|
||||||
|
AutoTypeEntry autoTypeEntry;
|
||||||
|
for (int i=0; i<entries.size(); i++){
|
||||||
|
QStringList cols;
|
||||||
|
cols << entries[i]->group()->title() << entries[i]->title();
|
||||||
|
if (config->hideUsernames())
|
||||||
|
cols << "****";
|
||||||
|
else
|
||||||
|
cols << entries[i]->username();
|
||||||
|
|
||||||
|
QTreeWidgetItem* widgetItem = new QTreeWidgetItem(cols);
|
||||||
|
itemList.append(widgetItem);
|
||||||
|
autoTypeEntry.dbHandle = entries[i];
|
||||||
|
autoTypeEntry.nr = numbers[i];
|
||||||
|
itemToEntry.insert(widgetItem, autoTypeEntry);
|
||||||
|
}
|
||||||
|
|
||||||
|
qSort(itemList.begin(), itemList.end(), itemLessThan);
|
||||||
|
for (int i=0; i<itemList.size(); i++)
|
||||||
|
entryList->addTopLevelItem(itemList[i]);
|
||||||
|
|
||||||
|
entryList->resizeColumnToContents(0);
|
||||||
|
entryList->resizeColumnToContents(1);
|
||||||
|
entryList->resizeColumnToContents(2);
|
||||||
|
|
||||||
|
connect(ButtonBox, SIGNAL(rejected()), SLOT(close()));
|
||||||
|
connect(entryList, SIGNAL(itemClicked(QTreeWidgetItem*,int)), SLOT(itemSelected(QTreeWidgetItem*)));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AutoTypeDlg::itemLessThan(QTreeWidgetItem* i1, QTreeWidgetItem* i2){
|
||||||
|
if (i1->text(0) != i2->text(0))
|
||||||
|
return i1->text(0) < i2->text(0);
|
||||||
|
else if (i1->text(1) != i2->text(1))
|
||||||
|
return i1->text(1) < i2->text(1);
|
||||||
|
else
|
||||||
|
return i1->text(2) < i2->text(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutoTypeDlg::paintEvent(QPaintEvent* event){
|
||||||
|
QWidget::paintEvent(event);
|
||||||
|
QPainter painter(this);
|
||||||
|
painter.setClipRegion(event->region());
|
||||||
|
painter.drawPixmap(QPoint(0,0),BannerPixmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutoTypeDlg::itemSelected(QTreeWidgetItem* item){
|
||||||
|
close();
|
||||||
|
QString err;
|
||||||
|
AutoType::perform(itemToEntry[item].dbHandle,err,false,itemToEntry[item].nr);
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2005-2008 by Felix Geyer *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; version 2 of the License. *
|
||||||
|
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "ui_AutoTypeDlg.h"
|
||||||
|
#include "Database.h"
|
||||||
|
|
||||||
|
class AutoTypeDlg : public QWidget, private Ui::AutoTypeDlg
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
AutoTypeDlg(QList<IEntryHandle*> entries, QList<int> numbers);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void paintEvent(QPaintEvent* event);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void itemSelected(QTreeWidgetItem* item);
|
||||||
|
|
||||||
|
private:
|
||||||
|
struct AutoTypeEntry {
|
||||||
|
IEntryHandle* dbHandle;
|
||||||
|
int nr;
|
||||||
|
};
|
||||||
|
static bool itemLessThan(QTreeWidgetItem* i1, QTreeWidgetItem* i2);
|
||||||
|
QHash<QTreeWidgetItem*,AutoTypeEntry> itemToEntry;
|
||||||
|
QPixmap BannerPixmap;
|
||||||
|
};
|
||||||
@@ -27,6 +27,7 @@
|
|||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "CustomizeDetailViewDlg.h"
|
#include "CustomizeDetailViewDlg.h"
|
||||||
|
#include "KpxConfig.h"
|
||||||
|
|
||||||
bool DisableButtonSlots=false;
|
bool DisableButtonSlots=false;
|
||||||
|
|
||||||
@@ -59,14 +60,14 @@ CustomizeDetailViewDialog::CustomizeDetailViewDialog(QWidget* parent):QDialog(pa
|
|||||||
connect(BtnBold,SIGNAL(toggled(bool)),this,SLOT(OnBtnBold(bool)));
|
connect(BtnBold,SIGNAL(toggled(bool)),this,SLOT(OnBtnBold(bool)));
|
||||||
connect(BtnItalic,SIGNAL(toggled(bool)),this,SLOT(OnBtnItalic(bool)));
|
connect(BtnItalic,SIGNAL(toggled(bool)),this,SLOT(OnBtnItalic(bool)));
|
||||||
connect(BtnUnderline,SIGNAL(toggled(bool)),this,SLOT(OnBtnUnderline(bool)));
|
connect(BtnUnderline,SIGNAL(toggled(bool)),this,SLOT(OnBtnUnderline(bool)));
|
||||||
connect(BtnAlignLeft,SIGNAL(toggled(bool)),this,SLOT(OnBtnAlignLeft(bool)));
|
connect(BtnAlignLeft,SIGNAL(toggled(bool)),this,SLOT(OnBtnAlignLeft()));
|
||||||
connect(BtnAlignRight,SIGNAL(toggled(bool)),this,SLOT(OnBtnAlignRight(bool)));
|
connect(BtnAlignRight,SIGNAL(toggled(bool)),this,SLOT(OnBtnAlignRight()));
|
||||||
connect(BtnAlignCenter,SIGNAL(toggled(bool)),this,SLOT(OnBtnAlignCenter(bool)));
|
connect(BtnAlignCenter,SIGNAL(toggled(bool)),this,SLOT(OnBtnAlignCenter()));
|
||||||
connect(BtnAlignBlock,SIGNAL(toggled(bool)),this,SLOT(OnBtnAlignBlock(bool)));
|
connect(BtnAlignBlock,SIGNAL(toggled(bool)),this,SLOT(OnBtnAlignBlock()));
|
||||||
connect(BtnColor,SIGNAL(clicked()),this,SLOT(OnBtnColor()));
|
connect(BtnColor,SIGNAL(clicked()),this,SLOT(OnBtnColor()));
|
||||||
connect(ButtonSave,SIGNAL(clicked()),this,SLOT(OnSave()));
|
connect(ButtonBox,SIGNAL(accepted()),this,SLOT(OnSave()));
|
||||||
connect(ButtonCancel,SIGNAL(clicked()),this,SLOT(OnCancel()));
|
connect(ButtonBox,SIGNAL(rejected()),this,SLOT(OnCancel()));
|
||||||
connect(ButtonRestore,SIGNAL(clicked()),this,SLOT(OnRestoreDefault()));
|
connect(ButtonBox,SIGNAL(clicked(QAbstractButton*)),this,SLOT(OnRestoreDefault(QAbstractButton*)));
|
||||||
connect(tmplmenu,SIGNAL(triggered(QAction*)),this,SLOT(OnInsertTemplate(QAction*)));
|
connect(tmplmenu,SIGNAL(triggered(QAction*)),this,SLOT(OnInsertTemplate(QAction*)));
|
||||||
connect(RichEdit,SIGNAL(cursorPositionChanged()),this,SLOT(OnCursorPositionChanged()));
|
connect(RichEdit,SIGNAL(cursorPositionChanged()),this,SLOT(OnCursorPositionChanged()));
|
||||||
connect(TabWidget,SIGNAL(currentChanged(int)),this,SLOT(OnTabChanged(int)));
|
connect(TabWidget,SIGNAL(currentChanged(int)),this,SLOT(OnTabChanged(int)));
|
||||||
@@ -160,25 +161,25 @@ void CustomizeDetailViewDialog::OnBtnUnderline(bool toggled){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CustomizeDetailViewDialog::OnBtnAlignLeft(bool toggled){
|
void CustomizeDetailViewDialog::OnBtnAlignLeft(){
|
||||||
if(DisableButtonSlots)return;
|
if(DisableButtonSlots)return;
|
||||||
RichEdit->setAlignment(Qt::AlignLeft);
|
RichEdit->setAlignment(Qt::AlignLeft);
|
||||||
OnCursorPositionChanged();
|
OnCursorPositionChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CustomizeDetailViewDialog::OnBtnAlignRight(bool toggled){
|
void CustomizeDetailViewDialog::OnBtnAlignRight(){
|
||||||
if(DisableButtonSlots)return;
|
if(DisableButtonSlots)return;
|
||||||
RichEdit->setAlignment(Qt::AlignRight);
|
RichEdit->setAlignment(Qt::AlignRight);
|
||||||
OnCursorPositionChanged();
|
OnCursorPositionChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CustomizeDetailViewDialog::OnBtnAlignCenter(bool toggled){
|
void CustomizeDetailViewDialog::OnBtnAlignCenter(){
|
||||||
if(DisableButtonSlots)return;
|
if(DisableButtonSlots)return;
|
||||||
RichEdit->setAlignment(Qt::AlignHCenter);
|
RichEdit->setAlignment(Qt::AlignHCenter);
|
||||||
OnCursorPositionChanged();
|
OnCursorPositionChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CustomizeDetailViewDialog::OnBtnAlignBlock(bool toggled){
|
void CustomizeDetailViewDialog::OnBtnAlignBlock(){
|
||||||
if(DisableButtonSlots)return;
|
if(DisableButtonSlots)return;
|
||||||
RichEdit->setAlignment(Qt::AlignJustify);
|
RichEdit->setAlignment(Qt::AlignJustify);
|
||||||
OnCursorPositionChanged();
|
OnCursorPositionChanged();
|
||||||
@@ -203,6 +204,8 @@ void CustomizeDetailViewDialog::OnSave(){
|
|||||||
else if(TabWidget->currentIndex()==1)
|
else if(TabWidget->currentIndex()==1)
|
||||||
DetailViewTemplate=HtmlEdit->toPlainText();
|
DetailViewTemplate=HtmlEdit->toPlainText();
|
||||||
|
|
||||||
|
config->setDetailViewTemplate(DetailViewTemplate);
|
||||||
|
|
||||||
done(1);
|
done(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,8 +213,10 @@ void CustomizeDetailViewDialog::OnCancel(){
|
|||||||
done(0);
|
done(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CustomizeDetailViewDialog::OnRestoreDefault(){
|
void CustomizeDetailViewDialog::OnRestoreDefault(QAbstractButton* button){
|
||||||
loadDefaultDetailViewTemplate();
|
if (button==ButtonBox->button(QDialogButtonBox::RestoreDefaults)){
|
||||||
|
DetailViewTemplate = config->defaultDetailViewTemplate();
|
||||||
HtmlEdit->setPlainText(DetailViewTemplate);
|
HtmlEdit->setPlainText(DetailViewTemplate);
|
||||||
RichEdit->setHtml(DetailViewTemplate);
|
RichEdit->setHtml(DetailViewTemplate);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
#ifndef _CUSTOMIZE_DETAIL_VIEW_H_
|
#ifndef _CUSTOMIZE_DETAIL_VIEW_H_
|
||||||
#define _CUSTOMIZE_DETAIL_VIEW_H_
|
#define _CUSTOMIZE_DETAIL_VIEW_H_
|
||||||
|
|
||||||
#include "ui_CustomizeDetailViewDlg.h";
|
#include "ui_CustomizeDetailViewDlg.h"
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
|
|
||||||
@@ -33,14 +33,14 @@ class CustomizeDetailViewDialog : public QDialog, public Ui_CustomizeDetailViewD
|
|||||||
void OnBtnBold(bool);
|
void OnBtnBold(bool);
|
||||||
void OnBtnItalic(bool);
|
void OnBtnItalic(bool);
|
||||||
void OnBtnUnderline(bool);
|
void OnBtnUnderline(bool);
|
||||||
void OnBtnAlignLeft(bool);
|
void OnBtnAlignLeft();
|
||||||
void OnBtnAlignRight(bool);
|
void OnBtnAlignRight();
|
||||||
void OnBtnAlignCenter(bool);
|
void OnBtnAlignCenter();
|
||||||
void OnBtnAlignBlock(bool);
|
void OnBtnAlignBlock();
|
||||||
void OnBtnColor();
|
void OnBtnColor();
|
||||||
void OnSave();
|
void OnSave();
|
||||||
void OnCancel();
|
void OnCancel();
|
||||||
void OnRestoreDefault();
|
void OnRestoreDefault(QAbstractButton* button);
|
||||||
void OnInsertTemplate(QAction*);
|
void OnInsertTemplate(QAction*);
|
||||||
void OnCursorPositionChanged();
|
void OnCursorPositionChanged();
|
||||||
void OnTabChanged(int index);
|
void OnTabChanged(int index);
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ CDbSettingsDlg::CDbSettingsDlg(QWidget* parent,IDatabase* db, bool modal, Qt::W
|
|||||||
ComboAlgo->insertItem(1,tr("Twofish: 256 Bit"));
|
ComboAlgo->insertItem(1,tr("Twofish: 256 Bit"));
|
||||||
ComboAlgo->setCurrentIndex(database->cryptAlgorithm()); //Achtung: AlgoID muss gleich dem ComboBox Index sein!
|
ComboAlgo->setCurrentIndex(database->cryptAlgorithm()); //Achtung: AlgoID muss gleich dem ComboBox Index sein!
|
||||||
EditRounds->setText(QString::number(database->keyTransfRounds()));
|
EditRounds->setText(QString::number(database->keyTransfRounds()));
|
||||||
connect( ButtonOK, SIGNAL( clicked() ), this, SLOT( OnOK() ) );
|
connect( ButtonBox, SIGNAL( accepted() ), this, SLOT( OnOK() ) );
|
||||||
connect( ButtonCancel, SIGNAL( clicked() ), this, SLOT( OnCancel() ) );
|
connect( ButtonBox, SIGNAL( rejected() ), this, SLOT( OnCancel() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
CDbSettingsDlg::~CDbSettingsDlg()
|
CDbSettingsDlg::~CDbSettingsDlg()
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
#include "Database.h"
|
#include "Database.h"
|
||||||
#include <QPaintEvent>
|
#include <QPaintEvent>
|
||||||
|
|
||||||
class CDbSettingsDlg : public QDialog, public Ui_dbsettingdlg_base
|
class CDbSettingsDlg : public QDialog, public Ui_DatabaseSettingsDlg
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -20,21 +20,16 @@
|
|||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "KpxConfig.h"
|
#include "KpxConfig.h"
|
||||||
#include <qpushbutton.h>
|
#include <QPalette>
|
||||||
#include <qpalette.h>
|
#include <QFont>
|
||||||
#include <qfont.h>
|
|
||||||
#include <qlineedit.h>
|
|
||||||
#include <qlabel.h>
|
|
||||||
#include <QProgressBar>
|
#include <QProgressBar>
|
||||||
#include <QTextEdit>
|
#include <QPixmap>
|
||||||
#include <qpixmap.h>
|
#include <QColor>
|
||||||
#include <qcolor.h>
|
#include <QPainter>
|
||||||
#include <qcombobox.h>
|
#include <QPen>
|
||||||
#include <qpainter.h>
|
|
||||||
#include <qpen.h>
|
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <qmessagebox.h>
|
#include <QMessageBox>
|
||||||
#include <qtoolbutton.h>
|
#include <QToolButton>
|
||||||
#include <QShowEvent>
|
#include <QShowEvent>
|
||||||
#include <QResizeEvent>
|
#include <QResizeEvent>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
@@ -59,8 +54,8 @@ CEditEntryDlg::CEditEntryDlg(IDatabase* _db, IEntryHandle* _entry,QWidget* paren
|
|||||||
|
|
||||||
connect(Edit_Title, SIGNAL(textChanged(const QString&)), this, SLOT( OnTitleTextChanged(const QString&)));
|
connect(Edit_Title, SIGNAL(textChanged(const QString&)), this, SLOT( OnTitleTextChanged(const QString&)));
|
||||||
connect(Edit_Password_w, SIGNAL(editingFinished()), this, SLOT(OnPasswordwLostFocus()));
|
connect(Edit_Password_w, SIGNAL(editingFinished()), this, SLOT(OnPasswordwLostFocus()));
|
||||||
connect(Edit_Password_w, SIGNAL(textChanged(const QString&)), this, SLOT( OnPasswordwTextChanged(const QString&)));
|
connect(Edit_Password_w, SIGNAL(textChanged(const QString&)), this, SLOT( OnPasswordwTextChanged()));
|
||||||
connect(Edit_Password, SIGNAL(textChanged(const QString&)), this, SLOT( OnPasswordTextChanged(const QString&)));
|
connect(Edit_Password, SIGNAL(textChanged(const QString&)), this, SLOT( OnPasswordTextChanged()));
|
||||||
connect(ButtonEchoMode, SIGNAL(clicked()), this, SLOT( ChangeEchoMode()));
|
connect(ButtonEchoMode, SIGNAL(clicked()), this, SLOT( ChangeEchoMode()));
|
||||||
connect(buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), this, SLOT( OnButtonCancel()));
|
connect(buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), this, SLOT( OnButtonCancel()));
|
||||||
connect(ButtonOpenAttachment, SIGNAL(clicked()), this, SLOT( OnNewAttachment()));
|
connect(ButtonOpenAttachment, SIGNAL(clicked()), this, SLOT( OnNewAttachment()));
|
||||||
@@ -71,7 +66,7 @@ CEditEntryDlg::CEditEntryDlg(IDatabase* _db, IEntryHandle* _entry,QWidget* paren
|
|||||||
connect(CheckBox_ExpiresNever,SIGNAL(stateChanged(int)),this,SLOT(OnCheckBoxExpiresNeverChanged(int)));
|
connect(CheckBox_ExpiresNever,SIGNAL(stateChanged(int)),this,SLOT(OnCheckBoxExpiresNeverChanged(int)));
|
||||||
connect(Button_Icons,SIGNAL(clicked()),this,SLOT(OnButtonIcons()));
|
connect(Button_Icons,SIGNAL(clicked()),this,SLOT(OnButtonIcons()));
|
||||||
connect(ExpirePresetsMenu,SIGNAL(triggered(QAction*)),this,SLOT(OnExpirePreset(QAction*)));
|
connect(ExpirePresetsMenu,SIGNAL(triggered(QAction*)),this,SLOT(OnExpirePreset(QAction*)));
|
||||||
connect(ButtonExpirePresets,SIGNAL(triggered(QAction*)),this,SLOT(OnCalendar(QAction*)));
|
connect(ButtonExpirePresets,SIGNAL(triggered(QAction*)),this,SLOT(OnCalendar()));
|
||||||
|
|
||||||
// QAction::data() contains the time until expiration in days.
|
// QAction::data() contains the time until expiration in days.
|
||||||
ExpirePresetsMenu->addAction(tr("Today"))->setData(0);
|
ExpirePresetsMenu->addAction(tr("Today"))->setData(0);
|
||||||
@@ -281,7 +276,7 @@ void CEditEntryDlg::OnTitleTextChanged(const QString& txt)
|
|||||||
setWindowTitle((txt=="") ? tr("[Untitled Entry]") : txt);
|
setWindowTitle((txt=="") ? tr("[Untitled Entry]") : txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditEntryDlg::OnPasswordTextChanged(const QString& txt)
|
void CEditEntryDlg::OnPasswordTextChanged()
|
||||||
{
|
{
|
||||||
Edit_Password_w->setText(QString());
|
Edit_Password_w->setText(QString());
|
||||||
int bits=(Edit_Password->text().length()*8);
|
int bits=(Edit_Password->text().length()*8);
|
||||||
@@ -290,7 +285,7 @@ if(bits>128)bits=128;
|
|||||||
Progress_Quali->setValue(100*bits/128);
|
Progress_Quali->setValue(100*bits/128);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditEntryDlg::OnPasswordwTextChanged(const QString& w)
|
void CEditEntryDlg::OnPasswordwTextChanged()
|
||||||
{
|
{
|
||||||
|
|
||||||
if(QString::compare(Edit_Password_w->text(),Edit_Password->text().mid(0,(Edit_Password_w->text().length())))!=0){
|
if(QString::compare(Edit_Password_w->text(),Edit_Password->text().mid(0,(Edit_Password_w->text().length())))!=0){
|
||||||
@@ -430,7 +425,7 @@ void CEditEntryDlg::OnExpirePreset(QAction* action){
|
|||||||
DateTime_Expire->setTime(QTime(0,0,0));
|
DateTime_Expire->setTime(QTime(0,0,0));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEditEntryDlg::OnCalendar(QAction* action){
|
void CEditEntryDlg::OnCalendar(){
|
||||||
CalendarDialog dlg(this);
|
CalendarDialog dlg(this);
|
||||||
if(dlg.exec()==QDialog::Accepted){
|
if(dlg.exec()==QDialog::Accepted){
|
||||||
CheckBox_ExpiresNever->setChecked(false);
|
CheckBox_ExpiresNever->setChecked(false);
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ class CEditEntryDlg : public QDialog, public Ui_EditEntryDialog
|
|||||||
public slots:
|
public slots:
|
||||||
void OnTitleTextChanged(const QString&);
|
void OnTitleTextChanged(const QString&);
|
||||||
void OnPasswordwLostFocus();
|
void OnPasswordwLostFocus();
|
||||||
void OnPasswordwTextChanged(const QString&);
|
void OnPasswordwTextChanged();
|
||||||
void OnPasswordTextChanged(const QString&);
|
void OnPasswordTextChanged();
|
||||||
void ChangeEchoMode();
|
void ChangeEchoMode();
|
||||||
void OnButtonCancel();
|
void OnButtonCancel();
|
||||||
void OnNewAttachment();
|
void OnNewAttachment();
|
||||||
@@ -60,7 +60,7 @@ class CEditEntryDlg : public QDialog, public Ui_EditEntryDialog
|
|||||||
void OnButtonIcons();
|
void OnButtonIcons();
|
||||||
void OnButtonOK();
|
void OnButtonOK();
|
||||||
void OnExpirePreset(QAction*);
|
void OnExpirePreset(QAction*);
|
||||||
void OnCalendar(QAction*);
|
void OnCalendar();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void showEvent(QShowEvent *);
|
virtual void showEvent(QShowEvent *);
|
||||||
|
|||||||
@@ -20,8 +20,6 @@
|
|||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
#include <qcombobox.h>
|
|
||||||
#include <qlineedit.h>
|
|
||||||
#include <QShowEvent>
|
#include <QShowEvent>
|
||||||
#include "EditGroupDlg.h"
|
#include "EditGroupDlg.h"
|
||||||
#include "SelectIconDlg.h"
|
#include "SelectIconDlg.h"
|
||||||
@@ -35,8 +33,8 @@ CEditGroupDialog::CEditGroupDialog(IDatabase* database,IGroupHandle* Handle,QWid
|
|||||||
group=new CGroup();
|
group=new CGroup();
|
||||||
group->Title=handle->title();
|
group->Title=handle->title();
|
||||||
group->Image=handle->image();
|
group->Image=handle->image();
|
||||||
connect( ButtonOK, SIGNAL( clicked() ), this, SLOT( OnOK() ) );
|
connect( ButtonBox, SIGNAL( accepted() ), this, SLOT( OnOK() ) );
|
||||||
connect( ButtonCancel, SIGNAL( clicked() ), this, SLOT( OnCancel() ) );
|
connect( ButtonBox, SIGNAL( rejected() ), this, SLOT( OnCancel() ) );
|
||||||
connect( Button_Icon, SIGNAL( clicked() ), this, SLOT( OnIconDlg() ));
|
connect( Button_Icon, SIGNAL( clicked() ), this, SLOT( OnIconDlg() ));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,8 +46,8 @@ CEditGroupDialog::CEditGroupDialog(IDatabase* database,CGroup* Group,QWidget* pa
|
|||||||
db=database;
|
db=database;
|
||||||
group=Group;
|
group=Group;
|
||||||
handle=NULL;
|
handle=NULL;
|
||||||
connect( ButtonOK, SIGNAL( clicked() ), this, SLOT( OnOK() ) );
|
connect( ButtonBox, SIGNAL( accepted() ), this, SLOT( OnOK() ) );
|
||||||
connect( ButtonCancel, SIGNAL( clicked() ), this, SLOT( OnCancel() ) );
|
connect( ButtonBox, SIGNAL( rejected() ), this, SLOT( OnCancel() ) );
|
||||||
connect( Button_Icon, SIGNAL( clicked() ), this, SLOT( OnIconDlg() ));
|
connect( Button_Icon, SIGNAL( clicked() ), this, SLOT( OnIconDlg() ));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
#define EDITGROUPDLG_H
|
#define EDITGROUPDLG_H
|
||||||
|
|
||||||
#include "ui_EditGroupDlg.h"
|
#include "ui_EditGroupDlg.h"
|
||||||
#include <qstring.h>
|
#include <QString>
|
||||||
#include <QShowEvent>
|
#include <QShowEvent>
|
||||||
#include "Database.h"
|
#include "Database.h"
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ ExpiredEntriesDialog::ExpiredEntriesDialog(QWidget* parent,IDatabase* database,c
|
|||||||
item->setIcon(1,database->icon(Entries[i]->image()));
|
item->setIcon(1,database->icon(Entries[i]->image()));
|
||||||
|
|
||||||
}
|
}
|
||||||
connect(treeWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(OnItemDoubleClicked(QTreeWidgetItem*,int)));
|
connect(treeWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(OnItemDoubleClicked(QTreeWidgetItem*)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ void ExpiredEntriesDialog::resizeEvent(QResizeEvent* event){
|
|||||||
QDialog::resizeEvent(event);
|
QDialog::resizeEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExpiredEntriesDialog::OnItemDoubleClicked(QTreeWidgetItem* item, int column){
|
void ExpiredEntriesDialog::OnItemDoubleClicked(QTreeWidgetItem* item){
|
||||||
SelectedEntry=Entries[item->data(0,Qt::UserRole).toInt()];
|
SelectedEntry=Entries[item->data(0,Qt::UserRole).toInt()];
|
||||||
accept();
|
accept();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class ExpiredEntriesDialog:public QDialog, public Ui_ExpiredEntriesDialog{
|
|||||||
virtual void resizeEvent(QResizeEvent *);
|
virtual void resizeEvent(QResizeEvent *);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void OnItemDoubleClicked(QTreeWidgetItem*,int);
|
void OnItemDoubleClicked(QTreeWidgetItem*);
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
+10
-18
@@ -25,7 +25,6 @@
|
|||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QStringList>
|
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QPalette>
|
#include <QPalette>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
@@ -56,7 +55,7 @@ CPasswordDialog::CPasswordDialog(QWidget* parent,QString filename,IDatabase* DB,
|
|||||||
}
|
}
|
||||||
|
|
||||||
Combo_Dirs->setEditText(QString());
|
Combo_Dirs->setEditText(QString());
|
||||||
if(config->rememberLastKey() && !ChangeKeyMode){
|
if(config->rememberLastKey() && config->openLastFile() && !ChangeKeyMode){
|
||||||
switch(config->lastKeyType()){
|
switch(config->lastKeyType()){
|
||||||
case KEYFILE:
|
case KEYFILE:
|
||||||
setStateKeyFileOnly();
|
setStateKeyFileOnly();
|
||||||
@@ -101,24 +100,22 @@ CPasswordDialog::CPasswordDialog(QWidget* parent,QString filename,IDatabase* DB,
|
|||||||
}
|
}
|
||||||
|
|
||||||
connect(Combo_Dirs, SIGNAL( editTextChanged(const QString&) ),this, SLOT( OnComboTextChanged(const QString&)));
|
connect(Combo_Dirs, SIGNAL( editTextChanged(const QString&) ),this, SLOT( OnComboTextChanged(const QString&)));
|
||||||
connect(ButtonCancel, SIGNAL( clicked() ), this, SLOT( OnCancel() ) );
|
connect(ButtonBox, SIGNAL( rejected() ), this, SLOT( OnCancel() ) );
|
||||||
connect(Edit_Password, SIGNAL( textChanged(const QString&) ), this, SLOT( OnPasswordChanged(const QString&) ) );
|
connect(Edit_Password, SIGNAL( textChanged(const QString&) ), this, SLOT( OnPasswordChanged(const QString&) ) );
|
||||||
connect(CheckBox_Both, SIGNAL( stateChanged(int) ), this, SLOT( OnCheckBox_BothChanged(int) ) );
|
connect(CheckBox_Both, SIGNAL( stateChanged(int) ), this, SLOT( OnCheckBox_BothChanged(int) ) );
|
||||||
connect(ButtonChangeEchoMode, SIGNAL( clicked() ), this, SLOT( ChangeEchoModeDatabaseKey() ) );
|
connect(ButtonChangeEchoMode, SIGNAL( clicked() ), this, SLOT( ChangeEchoModeDatabaseKey() ) );
|
||||||
connect(Edit_Password, SIGNAL( returnPressed() ), this, SLOT( OnOK() ) );
|
connect(Edit_Password, SIGNAL( returnPressed() ), this, SLOT( OnOK() ) );
|
||||||
connect(Edit_PasswordRep, SIGNAL( returnPressed() ), this, SLOT( OnOK() ) );
|
connect(Edit_PasswordRep, SIGNAL( returnPressed() ), this, SLOT( OnOK() ) );
|
||||||
connect(ButtonExit, SIGNAL( clicked()),this,SLOT(OnButtonExit()));
|
|
||||||
connect(BookmarkMenu,SIGNAL(triggered(QAction*)),this,SLOT(OnBookmarkTriggered(QAction*)));
|
connect(BookmarkMenu,SIGNAL(triggered(QAction*)),this,SLOT(OnBookmarkTriggered(QAction*)));
|
||||||
|
|
||||||
ButtonExit->setVisible(IsAuto);
|
|
||||||
Mode_Set=ChangeKeyMode;
|
Mode_Set=ChangeKeyMode;
|
||||||
if(!ChangeKeyMode){
|
if(!ChangeKeyMode){
|
||||||
Edit_PasswordRep->hide();
|
Edit_PasswordRep->hide();
|
||||||
Label_PasswordRep->hide();
|
Label_PasswordRep->hide();
|
||||||
connect( ButtonOK, SIGNAL( clicked() ), this, SLOT( OnOK() ) );
|
connect( ButtonBox, SIGNAL( accepted() ), this, SLOT( OnOK() ) );
|
||||||
connect( ButtonBrowse, SIGNAL( clicked() ), this, SLOT( OnButtonBrowse() ) );
|
connect( ButtonBrowse, SIGNAL( clicked() ), this, SLOT( OnButtonBrowse() ) );
|
||||||
}else{
|
}else{
|
||||||
connect( ButtonOK, SIGNAL( clicked() ), this, SLOT( OnOK_Set() ) );
|
connect( ButtonBox, SIGNAL( accepted() ), this, SLOT( OnOK_Set() ) );
|
||||||
connect( ButtonBrowse, SIGNAL( clicked() ), this, SLOT( OnButtonBrowse_Set() ) );
|
connect( ButtonBrowse, SIGNAL( clicked() ), this, SLOT( OnButtonBrowse_Set() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,7 +165,7 @@ void CPasswordDialog::setStateBoth(){
|
|||||||
void CPasswordDialog::OnButtonBrowse()
|
void CPasswordDialog::OnButtonBrowse()
|
||||||
{
|
{
|
||||||
QString filename=KpxFileDialogs::openExistingFile(this,"PasswordDlg",tr("Select a Key File"),
|
QString filename=KpxFileDialogs::openExistingFile(this,"PasswordDlg",tr("Select a Key File"),
|
||||||
QStringList() << tr("All Files (*)") << tr("Key Files (*.key)"));
|
QStringList() << tr("Key Files (*.key)") << tr("All Files (*)"));
|
||||||
if(filename!=QString()){
|
if(filename!=QString()){
|
||||||
Combo_Dirs->setEditText(filename);
|
Combo_Dirs->setEditText(filename);
|
||||||
}
|
}
|
||||||
@@ -178,7 +175,7 @@ void CPasswordDialog::OnButtonBrowse()
|
|||||||
void CPasswordDialog::OnButtonBrowse_Set()
|
void CPasswordDialog::OnButtonBrowse_Set()
|
||||||
{
|
{
|
||||||
QString filename=KpxFileDialogs::saveFile(this,"PasswordDlg",tr("Select a Key File"),
|
QString filename=KpxFileDialogs::saveFile(this,"PasswordDlg",tr("Select a Key File"),
|
||||||
QStringList() << tr("All Files (*)") << tr("Key Files (*.key)"),
|
QStringList() << tr("Key Files (*.key)") << tr("All Files (*)"),
|
||||||
false);
|
false);
|
||||||
if(filename!=QString()){
|
if(filename!=QString()){
|
||||||
Combo_Dirs->setEditText(filename);
|
Combo_Dirs->setEditText(filename);
|
||||||
@@ -307,14 +304,14 @@ bool CPasswordDialog::doAuth(){
|
|||||||
if(!password.isEmpty() && keyfile.isEmpty()){
|
if(!password.isEmpty() && keyfile.isEmpty()){
|
||||||
DbAuth->authByPwd(password);
|
DbAuth->authByPwd(password);
|
||||||
}
|
}
|
||||||
if(password.isEmpty() && !keyfile.isEmpty()){
|
else if(password.isEmpty() && !keyfile.isEmpty()){
|
||||||
if(!DbAuth->authByFile(keyfile))return false;
|
if(!DbAuth->authByFile(keyfile))return false;
|
||||||
}
|
}
|
||||||
if(!password.isEmpty() && !keyfile.isEmpty()){
|
else if(!password.isEmpty() && !keyfile.isEmpty()){
|
||||||
if(!DbAuth->authByFile(keyfile))return false;
|
if(!DbAuth->authByFileAndPwd(password, keyfile))return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(config->rememberLastKey()){
|
if(config->rememberLastKey() && config->openLastFile()){
|
||||||
QString KeyLocation=keyfile;
|
QString KeyLocation=keyfile;
|
||||||
if(config->saveRelativePaths()){
|
if(config->saveRelativePaths()){
|
||||||
KeyLocation=KeyLocation.left(KeyLocation.lastIndexOf("/"));
|
KeyLocation=KeyLocation.left(KeyLocation.lastIndexOf("/"));
|
||||||
@@ -371,11 +368,6 @@ else{
|
|||||||
Edit_PasswordRep->setEchoMode(QLineEdit::Normal);}
|
Edit_PasswordRep->setEchoMode(QLineEdit::Normal);}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CPasswordDialog::OnButtonExit(){
|
|
||||||
done(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CPasswordDialog::paintEvent(QPaintEvent* event){
|
void CPasswordDialog::paintEvent(QPaintEvent* event){
|
||||||
QDialog::paintEvent(event);
|
QDialog::paintEvent(event);
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
|
|||||||
@@ -48,15 +48,14 @@ class CPasswordDialog : public QDialog, public Ui_PasswordDlg
|
|||||||
QString BookmarkFilename;
|
QString BookmarkFilename;
|
||||||
tKeyType KeyType;
|
tKeyType KeyType;
|
||||||
bool OverwriteKeyFile;
|
bool OverwriteKeyFile;
|
||||||
CPasswordDialog(QWidget* parent,QString filename,IDatabase* DB,bool ShowExitButton = false, bool KeyMode_Set=false);
|
CPasswordDialog(QWidget* parent,QString filename,IDatabase* DB,bool IsAuto=false,bool ChangeKeyMode=false);
|
||||||
|
|
||||||
public slots:
|
private slots:
|
||||||
void OnOK();
|
void OnOK();
|
||||||
void OnOK_Set();
|
void OnOK_Set();
|
||||||
void OnCancel();
|
void OnCancel();
|
||||||
void OnButtonBrowse();
|
void OnButtonBrowse();
|
||||||
void OnButtonBrowse_Set();
|
void OnButtonBrowse_Set();
|
||||||
void OnButtonExit();
|
|
||||||
void OnPasswordChanged(const QString &txt);
|
void OnPasswordChanged(const QString &txt);
|
||||||
void OnCheckBox_BothChanged(int state);
|
void OnCheckBox_BothChanged(int state);
|
||||||
void ChangeEchoModeDatabaseKey();
|
void ChangeEchoModeDatabaseKey();
|
||||||
|
|||||||
@@ -58,12 +58,12 @@ CGenPwDialog::CGenPwDialog(QWidget* parent, bool StandAloneMode,Qt::WFlags fl)
|
|||||||
connect(Edit_chars,SIGNAL(textEdited(const QString&)),this,SLOT(OnCharsChanged(const QString&)));
|
connect(Edit_chars,SIGNAL(textEdited(const QString&)),this,SLOT(OnCharsChanged(const QString&)));
|
||||||
|
|
||||||
if(!StandAloneMode){
|
if(!StandAloneMode){
|
||||||
AcceptButton=DialogButtons->addButton(tr("Accept"),QDialogButtonBox::AcceptRole);
|
AcceptButton=DialogButtons->addButton(QDialogButtonBox::Ok);
|
||||||
AcceptButton->setDisabled(true);
|
AcceptButton->setDisabled(true);
|
||||||
DialogButtons->addButton(QDialogButtonBox::Cancel);
|
DialogButtons->addButton(QDialogButtonBox::Cancel);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
DialogButtons->addButton(tr("OK"),QDialogButtonBox::AcceptRole);
|
DialogButtons->addButton(QDialogButtonBox::Close);
|
||||||
AcceptButton=NULL;
|
AcceptButton=NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,7 +259,7 @@ void CGenPwDialog::estimateQuality(){
|
|||||||
Progress_Quali->setFormat(tr("%1 Bits").arg((int)bits));
|
Progress_Quali->setFormat(tr("%1 Bits").arg((int)bits));
|
||||||
Progress_Quali->update();
|
Progress_Quali->update();
|
||||||
if(bits>128)bits=128;
|
if(bits>128)bits=128;
|
||||||
Progress_Quali->setValue(bits);
|
Progress_Quali->setValue((int)bits);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGenPwDialog::OnCharsChanged(const QString& str){
|
void CGenPwDialog::OnCharsChanged(const QString& str){
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
|
#include <QPushButton>
|
||||||
#include <QRegExp>
|
#include <QRegExp>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
@@ -32,8 +33,9 @@
|
|||||||
SearchDialog::SearchDialog(IDatabase* database,IGroupHandle* Group,QWidget* parent):QDialog(parent)
|
SearchDialog::SearchDialog(IDatabase* database,IGroupHandle* Group,QWidget* parent):QDialog(parent)
|
||||||
{
|
{
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
|
QPushButton* Button_Search = ButtonBox->addButton(tr("Search"),QDialogButtonBox::ActionRole);
|
||||||
connect( Button_Search, SIGNAL( clicked() ), this, SLOT( OnSearch() ) );
|
connect( Button_Search, SIGNAL( clicked() ), this, SLOT( OnSearch() ) );
|
||||||
connect( Button_Close, SIGNAL( clicked() ), this, SLOT( OnClose() ) );
|
connect( ButtonBox, SIGNAL( rejected() ), this, SLOT( OnClose() ) );
|
||||||
db=database;
|
db=database;
|
||||||
group=Group;
|
group=Group;
|
||||||
createBanner(&BannerPixmap,getPixmap("search"),tr("Search"),width());
|
createBanner(&BannerPixmap,getPixmap("search"),tr("Search"),width());
|
||||||
|
|||||||
@@ -22,12 +22,12 @@
|
|||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
|
#include <QPushButton>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QShowEvent>
|
#include <QShowEvent>
|
||||||
#include "SelectIconDlg.h"
|
#include "SelectIconDlg.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CSelectIconDlg::CSelectIconDlg(IDatabase* database,int CurrentId,QWidget* parent, bool modal, Qt::WFlags fl):QDialog(parent,fl){
|
CSelectIconDlg::CSelectIconDlg(IDatabase* database,int CurrentId,QWidget* parent, bool modal, Qt::WFlags fl):QDialog(parent,fl){
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
db=database;
|
db=database;
|
||||||
@@ -35,12 +35,14 @@ CSelectIconDlg::CSelectIconDlg(IDatabase* database,int CurrentId,QWidget* parent
|
|||||||
CtxMenu=new QMenu(this);
|
CtxMenu=new QMenu(this);
|
||||||
ReplaceAction=CtxMenu->addAction(getIcon("swap"),tr("Replace..."));
|
ReplaceAction=CtxMenu->addAction(getIcon("swap"),tr("Replace..."));
|
||||||
DeleteAction=CtxMenu->addAction(getIcon("delete"),tr("Delete"));
|
DeleteAction=CtxMenu->addAction(getIcon("delete"),tr("Delete"));
|
||||||
|
QPushButton* Button_AddIcon = ButtonBox->addButton(tr("Add Custom Icon"), QDialogButtonBox::ActionRole);
|
||||||
|
Button_PickIcon = ButtonBox->addButton(tr("Pick"), QDialogButtonBox::AcceptRole);
|
||||||
connect(Button_AddIcon, SIGNAL(clicked()), this, SLOT(OnAddIcon()));
|
connect(Button_AddIcon, SIGNAL(clicked()), this, SLOT(OnAddIcon()));
|
||||||
connect(Button_PickIcon, SIGNAL(clicked()), this, SLOT(OnPickIcon()));
|
connect(Button_PickIcon, SIGNAL(clicked()), this, SLOT(OnPickIcon()));
|
||||||
connect(Button_Cancel, SIGNAL(clicked()), this, SLOT(OnCancel()));
|
connect(ButtonBox, SIGNAL(rejected()), this, SLOT(OnCancel()));
|
||||||
connect(DeleteAction,SIGNAL(triggered()),this,SLOT(OnDelete()));
|
connect(DeleteAction,SIGNAL(triggered()),this,SLOT(OnDelete()));
|
||||||
connect(ReplaceAction,SIGNAL(triggered()),this,SLOT(OnReplace()));
|
connect(ReplaceAction,SIGNAL(triggered()),this,SLOT(OnReplace()));
|
||||||
connect(List,SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(OnSelectionChanged(QListWidgetItem*,QListWidgetItem*)));
|
connect(List,SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(OnSelectionChanged(QListWidgetItem*)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSelectIconDlg::updateView(){
|
void CSelectIconDlg::updateView(){
|
||||||
@@ -64,12 +66,12 @@ void CSelectIconDlg::OnAddIcon(){
|
|||||||
for(int i=0;i<filenames.size();i++){
|
for(int i=0;i<filenames.size();i++){
|
||||||
QPixmap icon;
|
QPixmap icon;
|
||||||
if(!icon.load(filenames[i])){
|
if(!icon.load(filenames[i])){
|
||||||
errors+=tr("%1: File could not be loaded.\n").arg(filenames[i].section("/",-1));
|
errors+=tr("%1: File could not be loaded.").arg(filenames[i].section("/",-1)).append("\n");
|
||||||
continue;}
|
continue;}
|
||||||
dynamic_cast<ICustomIcons*>(db)->addIcon(icon.scaled(16,16,Qt::KeepAspectRatio,Qt::SmoothTransformation));
|
dynamic_cast<ICustomIcons*>(db)->addIcon(icon.scaled(16,16,Qt::KeepAspectRatio,Qt::SmoothTransformation));
|
||||||
}
|
}
|
||||||
if(errors.size())
|
if(errors.size())
|
||||||
QMessageBox::warning(this,tr("Error"),tr("An error occured while loading the icon(s):\n%1").arg(errors));
|
QMessageBox::warning(this,tr("Error"),tr("An error occured while loading the icon(s):").append("\n").append(errors));
|
||||||
updateView();
|
updateView();
|
||||||
List->setCurrentItem(List->item(List->count()-1));
|
List->setCurrentItem(List->item(List->count()-1));
|
||||||
}
|
}
|
||||||
@@ -96,7 +98,7 @@ void CSelectIconDlg::OnDelete(){
|
|||||||
void CSelectIconDlg::OnReplace(){
|
void CSelectIconDlg::OnReplace(){
|
||||||
QString filename=QFileDialog::getOpenFileName(this,tr("Add Icons..."),QDir::homePath(),tr("Images (%1)")
|
QString filename=QFileDialog::getOpenFileName(this,tr("Add Icons..."),QDir::homePath(),tr("Images (%1)")
|
||||||
.arg("*.png *.jpeg *.jpg *.bmp *.gif *.bpm *.pgm *.ppm *.xbm *xpm"));
|
.arg("*.png *.jpeg *.jpg *.bmp *.gif *.bpm *.pgm *.ppm *.xbm *xpm"));
|
||||||
if(filename==QString())return;
|
if(filename.isEmpty())return;
|
||||||
QPixmap icon;
|
QPixmap icon;
|
||||||
if(!icon.load(filename)){
|
if(!icon.load(filename)){
|
||||||
QMessageBox::warning(this,tr("Error"),tr("An error occured while loading the icon."));
|
QMessageBox::warning(this,tr("Error"),tr("An error occured while loading the icon."));
|
||||||
@@ -114,7 +116,7 @@ void CSelectIconDlg::OnCancel(){
|
|||||||
done(-1);
|
done(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSelectIconDlg::OnSelectionChanged(QListWidgetItem* cur,QListWidgetItem* prev){
|
void CSelectIconDlg::OnSelectionChanged(QListWidgetItem* cur){
|
||||||
Button_PickIcon->setEnabled(cur);
|
Button_PickIcon->setEnabled(cur);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public slots:
|
|||||||
void OnCancel();
|
void OnCancel();
|
||||||
void OnDelete();
|
void OnDelete();
|
||||||
void OnReplace();
|
void OnReplace();
|
||||||
void OnSelectionChanged(QListWidgetItem*,QListWidgetItem*);
|
void OnSelectionChanged(QListWidgetItem*);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int Id;
|
int Id;
|
||||||
@@ -48,6 +48,7 @@ private:
|
|||||||
QMenu* CtxMenu;
|
QMenu* CtxMenu;
|
||||||
QAction* DeleteAction;
|
QAction* DeleteAction;
|
||||||
QAction* ReplaceAction;
|
QAction* ReplaceAction;
|
||||||
|
QPushButton* Button_PickIcon;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void contextMenuEvent(QContextMenuEvent *event);
|
virtual void contextMenuEvent(QContextMenuEvent *event);
|
||||||
|
|||||||
+78
-57
@@ -19,11 +19,8 @@
|
|||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "KpxConfig.h"
|
#include "KpxConfig.h"
|
||||||
#include <qpixmap.h>
|
#include <QPixmap>
|
||||||
#include <qcheckbox.h>
|
#include <QColorDialog>
|
||||||
#include <qspinbox.h>
|
|
||||||
#include <qcolordialog.h>
|
|
||||||
#include <qlineedit.h>
|
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
@@ -41,28 +38,48 @@ CSettingsDlg::CSettingsDlg(QWidget* parent):QDialog(parent,Qt::Dialog)
|
|||||||
connect(DialogButtons, SIGNAL( rejected() ), this, SLOT( OnCancel() ) );
|
connect(DialogButtons, SIGNAL( rejected() ), this, SLOT( OnCancel() ) );
|
||||||
connect(DialogButtons, SIGNAL( clicked(QAbstractButton*)), this, SLOT(OnOtherButton(QAbstractButton*)));
|
connect(DialogButtons, SIGNAL( clicked(QAbstractButton*)), this, SLOT(OnOtherButton(QAbstractButton*)));
|
||||||
|
|
||||||
|
connect(CheckBox_ShowSysTrayIcon, SIGNAL( toggled(bool) ), CheckBox_CloseToTray, SLOT( setEnabled(bool) ) );
|
||||||
|
connect(CheckBox_ShowSysTrayIcon, SIGNAL( toggled(bool) ), CheckBox_MinimizeTray, SLOT( setEnabled(bool) ) );
|
||||||
|
connect(CheckBox_OpenLast, SIGNAL( toggled(bool) ), CheckBox_RememberLastKey, SLOT( setEnabled(bool) ) );
|
||||||
|
connect(CheckBox_OpenLast, SIGNAL( toggled(bool) ), CheckBox_StartMinimized, SLOT( setEnabled(bool) ) );
|
||||||
|
connect(CheckBox_OpenLast, SIGNAL( toggled(bool) ), CheckBox_StartLocked, SLOT( setEnabled(bool) ) );
|
||||||
|
|
||||||
connect(Button_ClearFileDlgHistory, SIGNAL(clicked()), &fileDlgHistory, SLOT(clear()));
|
connect(Button_ClearFileDlgHistory, SIGNAL(clicked()), &fileDlgHistory, SLOT(clear()));
|
||||||
connect(ButtonColor1, SIGNAL( clicked() ), this, SLOT( OnColor1() ) );
|
connect(ButtonColor1, SIGNAL( clicked() ), this, SLOT( OnColor1() ) );
|
||||||
connect(ButtonColor2, SIGNAL( clicked() ), this, SLOT( OnColor2() ) );
|
connect(ButtonColor2, SIGNAL( clicked() ), this, SLOT( OnColor2() ) );
|
||||||
connect(ButtonTextColor, SIGNAL( clicked() ), this, SLOT( OnTextColor() ) );
|
connect(ButtonTextColor, SIGNAL( clicked() ), this, SLOT( OnTextColor() ) );
|
||||||
connect(CheckBox_OpenLast,SIGNAL(stateChanged(int)),this,SLOT(OnCheckBoxOpenLastChanged(int)));
|
|
||||||
connect(Button_MountDirBrowse,SIGNAL(clicked()),this,SLOT(OnMountDirBrowse()));
|
connect(Button_MountDirBrowse,SIGNAL(clicked()),this,SLOT(OnMountDirBrowse()));
|
||||||
|
connect(Button_BrowserCmdBrowse,SIGNAL(clicked()),this,SLOT(OnBrowserCmdBrowse()));
|
||||||
|
|
||||||
connect(Radio_IntPlugin_None,SIGNAL(toggled(bool)),this,SLOT(OnIntPluginNone(bool)));
|
connect(Radio_IntPlugin_None,SIGNAL(toggled(bool)),this,SLOT(OnIntPluginNone()));
|
||||||
connect(Radio_IntPlugin_Gnome,SIGNAL(toggled(bool)),this,SLOT(OnIntPluginGnome(bool)));
|
connect(Radio_IntPlugin_Gnome,SIGNAL(toggled(bool)),this,SLOT(OnIntPluginGnome()));
|
||||||
connect(Radio_IntPlugin_Kde,SIGNAL(toggled(bool)),this,SLOT(OnIntPluginKde(bool)));
|
connect(Radio_IntPlugin_Kde,SIGNAL(toggled(bool)),this,SLOT(OnIntPluginKde()));
|
||||||
|
|
||||||
connect(CheckBox_BrowserDefault,SIGNAL(stateChanged(int)),this,SLOT(OnCheckBoxBrowserDefaultChanged(int)));
|
|
||||||
connect(Button_CustomizeEntryDetails,SIGNAL(clicked()),this,SLOT(OnCustomizeEntryDetails()));
|
connect(Button_CustomizeEntryDetails,SIGNAL(clicked()),this,SLOT(OnCustomizeEntryDetails()));
|
||||||
|
|
||||||
|
#if !defined(AUTOTYPE)
|
||||||
|
Box_AutoType->setVisible(false);
|
||||||
|
#endif
|
||||||
|
#if !defined(GLOBAL_AUTOTYPE)
|
||||||
|
Label_GlobalShortcut->setVisible(false);
|
||||||
|
Edit_GlobalShortcut->setVisible(false);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
pShortcut = AutoType::shortcut;
|
||||||
|
connect(this,SIGNAL(rejected()),SLOT(resetGlobalShortcut()));
|
||||||
|
#endif
|
||||||
|
|
||||||
createBanner(&BannerPixmap,getPixmap("appsettings"),tr("Settings"),width());
|
createBanner(&BannerPixmap,getPixmap("appsettings"),tr("Settings"),width());
|
||||||
|
|
||||||
//General
|
//General
|
||||||
CheckBox_OpenLast->setChecked(config->openLastFile());
|
CheckBox_OpenLast->setChecked(config->openLastFile());
|
||||||
CheckBox_RememberLastKey->setChecked(config->rememberLastKey());
|
CheckBox_RememberLastKey->setChecked(config->rememberLastKey());
|
||||||
checkBox_ShowSysTrayIcon->setChecked(config->showSysTrayIcon());
|
CheckBox_ShowSysTrayIcon->setChecked(config->showSysTrayIcon());
|
||||||
checkBox_MinimizeToTray->setChecked(config->minimizeToTray());
|
CheckBox_CloseToTray->setChecked(config->minimizeToTray());
|
||||||
|
CheckBox_MinimizeTray->setChecked(config->minimizeTray());
|
||||||
|
CheckBox_StartMinimized->setChecked(config->startMinimized());
|
||||||
|
CheckBox_StartLocked->setChecked(config->startLocked());
|
||||||
checkBox_SaveFileDlgHistory->setChecked(config->saveFileDlgHistory());
|
checkBox_SaveFileDlgHistory->setChecked(config->saveFileDlgHistory());
|
||||||
checkBox_AskBeforeDelete->setChecked(config->askBeforeDelete());
|
checkBox_AskBeforeDelete->setChecked(config->askBeforeDelete());
|
||||||
|
|
||||||
@@ -103,13 +120,15 @@ CSettingsDlg::CSettingsDlg(QWidget* parent):QDialog(parent,Qt::Dialog)
|
|||||||
SpinBox_ClipboardTime->setValue(config->clipboardTimeOut());
|
SpinBox_ClipboardTime->setValue(config->clipboardTimeOut());
|
||||||
CheckBox_ShowPasswords->setChecked(config->showPasswords());
|
CheckBox_ShowPasswords->setChecked(config->showPasswords());
|
||||||
CheckBox_ShowPasswords_PasswordDlg->setChecked(config->showPasswordsPasswordDlg());
|
CheckBox_ShowPasswords_PasswordDlg->setChecked(config->showPasswordsPasswordDlg());
|
||||||
|
CheckBox_LockMinimize->setChecked(config->lockOnMinimize());
|
||||||
|
|
||||||
//Features
|
//Features
|
||||||
CheckBox_FeatureBookmarks->setChecked(config->featureBookmarks());
|
CheckBox_FeatureBookmarks->setChecked(config->featureBookmarks());
|
||||||
|
|
||||||
|
|
||||||
//Desktop Integration
|
// TODO Desktop Integration
|
||||||
if(PluginLoadError==QString())
|
tabWidgetSettings->removeTab(tabWidgetSettings->indexOf(tabIntegration));
|
||||||
|
/*if(PluginLoadError==QString())
|
||||||
Label_IntPlugin_Error->hide();
|
Label_IntPlugin_Error->hide();
|
||||||
else
|
else
|
||||||
Label_IntPlugin_Error->setText(QString("<html><p style='font-weight:600; color:#8b0000;'>%1</p></body></html>")
|
Label_IntPlugin_Error->setText(QString("<html><p style='font-weight:600; color:#8b0000;'>%1</p></body></html>")
|
||||||
@@ -126,24 +145,23 @@ CSettingsDlg::CSettingsDlg(QWidget* parent):QDialog(parent,Qt::Dialog)
|
|||||||
Radio_IntPlugin_None->setChecked(true);
|
Radio_IntPlugin_None->setChecked(true);
|
||||||
}
|
}
|
||||||
if(!PluginsModified)
|
if(!PluginsModified)
|
||||||
Label_IntPlugin_Info->hide();
|
Label_IntPlugin_Info->hide();*/
|
||||||
|
|
||||||
|
|
||||||
//Advanced
|
//Advanced
|
||||||
QString BrowserCmd=config->urlCmd();
|
Box_BrowserCmd->setChecked(!config->urlCmdDef());
|
||||||
if(BrowserCmd.isEmpty()){
|
Edit_BrowserCmd->setText(config->urlCmd());
|
||||||
CheckBox_BrowserDefault->setChecked(true);
|
|
||||||
Edit_BrowserCmd->setDisabled(true);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
Edit_BrowserCmd->setText(BrowserCmd);
|
|
||||||
CheckBox_BrowserDefault->setChecked(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
Edit_MountDir->setText(config->mountDir());
|
Edit_MountDir->setText(config->mountDir());
|
||||||
CheckBox_SaveRelativePaths->setChecked(config->saveRelativePaths());
|
CheckBox_SaveRelativePaths->setChecked(config->saveRelativePaths());
|
||||||
|
#ifdef AUTOTYPE
|
||||||
SpinBox_AutoTypePreGap->setValue(config->autoTypePreGap());
|
SpinBox_AutoTypePreGap->setValue(config->autoTypePreGap());
|
||||||
SpinBox_AutoTypeKeyStrokeDelay->setValue(config->autoTypeKeyStrokeDelay());
|
SpinBox_AutoTypeKeyStrokeDelay->setValue(config->autoTypeKeyStrokeDelay());
|
||||||
|
#endif
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
Edit_GlobalShortcut->setShortcut(config->globalShortcut());
|
||||||
|
CheckBox_EntryTitlesMatch->setChecked(config->entryTitlesMatch());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
CSettingsDlg::~CSettingsDlg()
|
CSettingsDlg::~CSettingsDlg()
|
||||||
@@ -157,16 +175,6 @@ void CSettingsDlg::paintEvent(QPaintEvent *event){
|
|||||||
painter.drawPixmap(QPoint(0,0),BannerPixmap);
|
painter.drawPixmap(QPoint(0,0),BannerPixmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSettingsDlg::OnCheckBoxBrowserDefaultChanged(int state){
|
|
||||||
if(state==Qt::Checked){
|
|
||||||
Edit_BrowserCmd->setDisabled(true);
|
|
||||||
Edit_BrowserCmd->setText(QString());
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
Edit_BrowserCmd->setDisabled(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CSettingsDlg::OnOK()
|
void CSettingsDlg::OnOK()
|
||||||
{
|
{
|
||||||
apply();
|
apply();
|
||||||
@@ -186,8 +194,11 @@ void CSettingsDlg::OnOtherButton(QAbstractButton* button){
|
|||||||
void CSettingsDlg::apply(){
|
void CSettingsDlg::apply(){
|
||||||
|
|
||||||
//General
|
//General
|
||||||
config->setShowSysTrayIcon(checkBox_ShowSysTrayIcon->isChecked());
|
config->setShowSysTrayIcon(CheckBox_ShowSysTrayIcon->isChecked());
|
||||||
config->setMinimizeToTray(checkBox_MinimizeToTray->isChecked());
|
config->setMinimizeToTray(CheckBox_CloseToTray->isChecked());
|
||||||
|
config->setMinimizeTray(CheckBox_MinimizeTray->isChecked());
|
||||||
|
config->setStartMinimized(CheckBox_StartMinimized->isChecked());
|
||||||
|
config->setStartLocked(CheckBox_StartLocked->isChecked());
|
||||||
config->setSaveFileDlgHistory(checkBox_SaveFileDlgHistory->isChecked());
|
config->setSaveFileDlgHistory(checkBox_SaveFileDlgHistory->isChecked());
|
||||||
if(Radio_GroupTreeRestore->isChecked())config->setGroupTreeState(KpxConfig::RestoreLast);
|
if(Radio_GroupTreeRestore->isChecked())config->setGroupTreeState(KpxConfig::RestoreLast);
|
||||||
else if(Radio_GroupTreeExpand->isChecked())config->setGroupTreeState(KpxConfig::ExpandAll);
|
else if(Radio_GroupTreeExpand->isChecked())config->setGroupTreeState(KpxConfig::ExpandAll);
|
||||||
@@ -206,27 +217,32 @@ void CSettingsDlg::apply(){
|
|||||||
config->setClipboardTimeOut(SpinBox_ClipboardTime->value());
|
config->setClipboardTimeOut(SpinBox_ClipboardTime->value());
|
||||||
config->setShowPasswords(CheckBox_ShowPasswords->isChecked());
|
config->setShowPasswords(CheckBox_ShowPasswords->isChecked());
|
||||||
config->setShowPasswordsPasswordDlg(CheckBox_ShowPasswords_PasswordDlg->isChecked());
|
config->setShowPasswordsPasswordDlg(CheckBox_ShowPasswords_PasswordDlg->isChecked());
|
||||||
|
config->setLockOnMinimize(CheckBox_LockMinimize->isChecked());
|
||||||
|
|
||||||
//Features
|
//Features
|
||||||
config->setFeatureBookmarks(CheckBox_FeatureBookmarks->isChecked());
|
config->setFeatureBookmarks(CheckBox_FeatureBookmarks->isChecked());
|
||||||
|
|
||||||
//Desktop Integration
|
//TODO Desktop Integration
|
||||||
PluginsModified=Label_IntPlugin_Info->isVisible();
|
/*PluginsModified=Label_IntPlugin_Info->isVisible();
|
||||||
if(Radio_IntPlugin_Kde->isChecked())config->setIntegrPlugin(KpxConfig::KDE);
|
if(Radio_IntPlugin_Kde->isChecked())config->setIntegrPlugin(KpxConfig::KDE);
|
||||||
else if(Radio_IntPlugin_Gnome->isChecked())config->setIntegrPlugin(KpxConfig::Gnome);
|
else if(Radio_IntPlugin_Gnome->isChecked())config->setIntegrPlugin(KpxConfig::Gnome);
|
||||||
else config->setIntegrPlugin(KpxConfig::NoIntegr);
|
else config->setIntegrPlugin(KpxConfig::NoIntegr);*/
|
||||||
|
|
||||||
//Advanced
|
//Advanced
|
||||||
|
config->setUrlCmdDef(!Box_BrowserCmd->isChecked());
|
||||||
config->setUrlCmd(Edit_BrowserCmd->text());
|
config->setUrlCmd(Edit_BrowserCmd->text());
|
||||||
config->setMountDir(Edit_MountDir->text());
|
config->setMountDir(Edit_MountDir->text());
|
||||||
if(!config->mountDir().isEmpty() && config->mountDir().right(1)!="/")
|
if(!config->mountDir().isEmpty() && config->mountDir().right(1)!="/")
|
||||||
config->setMountDir(config->mountDir()+"/");
|
config->setMountDir(config->mountDir()+"/");
|
||||||
if(CheckBox_BrowserDefault->isChecked())config->setUrlCmd(QString());
|
|
||||||
else config->setUrlCmd(Edit_BrowserCmd->text());
|
|
||||||
config->setSaveRelativePaths(CheckBox_SaveRelativePaths->isChecked());
|
config->setSaveRelativePaths(CheckBox_SaveRelativePaths->isChecked());
|
||||||
|
#ifdef AUTOTYPE
|
||||||
config->setAutoTypePreGap(SpinBox_AutoTypePreGap->value());
|
config->setAutoTypePreGap(SpinBox_AutoTypePreGap->value());
|
||||||
config->setAutoTypeKeyStrokeDelay(SpinBox_AutoTypeKeyStrokeDelay->value());
|
config->setAutoTypeKeyStrokeDelay(SpinBox_AutoTypeKeyStrokeDelay->value());
|
||||||
|
#endif
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
config->setGlobalShortcut(Edit_GlobalShortcut->shortcut());
|
||||||
|
config->setEntryTitlesMatch(CheckBox_EntryTitlesMatch->isChecked());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSettingsDlg::OnTextColor()
|
void CSettingsDlg::OnTextColor()
|
||||||
@@ -270,31 +286,29 @@ void CSettingsDlg::OnColor1()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSettingsDlg::OnCheckBoxOpenLastChanged(int state){
|
|
||||||
if(state==Qt::Checked){
|
|
||||||
CheckBox_RememberLastKey->setEnabled(true);
|
|
||||||
}else{
|
|
||||||
CheckBox_RememberLastKey->setEnabled(false);
|
|
||||||
CheckBox_RememberLastKey->setChecked(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CSettingsDlg::OnMountDirBrowse(){
|
void CSettingsDlg::OnMountDirBrowse(){
|
||||||
QString dir=QFileDialog::getExistingDirectory(this,tr("Select a directory..."),"/");
|
QString dir=QFileDialog::getExistingDirectory(this,tr("Select a directory..."));
|
||||||
if(dir!=QString()){
|
if(!dir.isEmpty()){
|
||||||
Edit_MountDir->setText(dir);
|
Edit_MountDir->setText(dir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSettingsDlg::OnIntPluginNone(bool toggled){
|
void CSettingsDlg::OnBrowserCmdBrowse(){
|
||||||
|
QString filename=QFileDialog::getOpenFileName(this,tr("Select an executable..."));
|
||||||
|
if(!filename.isEmpty()){
|
||||||
|
Edit_BrowserCmd->setText(filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsDlg::OnIntPluginNone(){
|
||||||
Label_IntPlugin_Info->show();
|
Label_IntPlugin_Info->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSettingsDlg::OnIntPluginGnome(bool toggled){
|
void CSettingsDlg::OnIntPluginGnome(){
|
||||||
Label_IntPlugin_Info->show();
|
Label_IntPlugin_Info->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSettingsDlg::OnIntPluginKde(bool toggled){
|
void CSettingsDlg::OnIntPluginKde(){
|
||||||
Label_IntPlugin_Info->show();
|
Label_IntPlugin_Info->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -303,3 +317,10 @@ void CSettingsDlg::OnCustomizeEntryDetails(){
|
|||||||
CustomizeDetailViewDialog dlg(this);
|
CustomizeDetailViewDialog dlg(this);
|
||||||
dlg.exec();
|
dlg.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
void CSettingsDlg::resetGlobalShortcut(){
|
||||||
|
AutoType::unregisterGlobalShortcut();
|
||||||
|
AutoType::registerGlobalShortcut(pShortcut);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
#include <QPaintEvent>
|
#include <QPaintEvent>
|
||||||
#include "ui_SettingsDlg.h"
|
#include "ui_SettingsDlg.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
#include "lib/AutoType.h"
|
||||||
|
|
||||||
class CSettingsDlg : public QDialog, public Ui_SettingsDialog
|
class CSettingsDlg : public QDialog, public Ui_SettingsDialog
|
||||||
{
|
{
|
||||||
@@ -42,19 +43,27 @@ class CSettingsDlg : public QDialog, public Ui_SettingsDialog
|
|||||||
virtual void OnColor2();
|
virtual void OnColor2();
|
||||||
virtual void OnColor1();
|
virtual void OnColor1();
|
||||||
void OnOtherButton(QAbstractButton*);
|
void OnOtherButton(QAbstractButton*);
|
||||||
void OnIntPluginNone(bool);
|
void OnIntPluginNone();
|
||||||
void OnIntPluginGnome(bool);
|
void OnIntPluginGnome();
|
||||||
void OnIntPluginKde(bool);
|
void OnIntPluginKde();
|
||||||
void OnCheckBoxOpenLastChanged(int state);
|
|
||||||
void OnCheckBoxBrowserDefaultChanged(int state);
|
|
||||||
void OnMountDirBrowse();
|
void OnMountDirBrowse();
|
||||||
|
void OnBrowserCmdBrowse();
|
||||||
void OnCustomizeEntryDetails();
|
void OnCustomizeEntryDetails();
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
private slots:
|
||||||
|
void resetGlobalShortcut();
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void paintEvent(QPaintEvent*);
|
virtual void paintEvent(QPaintEvent*);
|
||||||
void apply();
|
void apply();
|
||||||
QColor color1,color2,textcolor;
|
QColor color1,color2,textcolor;
|
||||||
QPixmap BannerPixmap;
|
QPixmap BannerPixmap;
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
Shortcut pShortcut;
|
||||||
|
#endif
|
||||||
static bool PluginsModified;
|
static bool PluginsModified;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ SimplePasswordDialog::~SimplePasswordDialog()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SimplePasswordDialog::OnTextChanged(const QString& txt){
|
void SimplePasswordDialog::OnTextChanged(const QString& txt){
|
||||||
if(txt==QString())
|
if(txt.isEmpty())
|
||||||
buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
||||||
else
|
else
|
||||||
buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
|
buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ TrashCanDialog::TrashCanDialog(QWidget* parent,IDatabase* database,const QList<I
|
|||||||
item->setIcon(1,database->icon(Entries[i]->image()));
|
item->setIcon(1,database->icon(Entries[i]->image()));
|
||||||
|
|
||||||
}
|
}
|
||||||
connect(treeWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(OnItemDoubleClicked(QTreeWidgetItem*,int)));
|
connect(treeWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(OnItemDoubleClicked(QTreeWidgetItem*)));
|
||||||
connect(treeWidget,SIGNAL(customContextMenuRequested(const QPoint&)),this,SLOT(OnContextMenu(const QPoint&)));
|
connect(treeWidget,SIGNAL(customContextMenuRequested(const QPoint&)),this,SLOT(OnContextMenu(const QPoint&)));
|
||||||
ContextMenu=new QMenu(this);
|
ContextMenu=new QMenu(this);
|
||||||
ContextMenu->addAction(getIcon("restore"),"Restore");
|
ContextMenu->addAction(getIcon("restore"),"Restore");
|
||||||
@@ -59,7 +59,7 @@ void TrashCanDialog::resizeEvent(QResizeEvent* event){
|
|||||||
QDialog::resizeEvent(event);
|
QDialog::resizeEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrashCanDialog::OnItemDoubleClicked(QTreeWidgetItem* item, int column){
|
void TrashCanDialog::OnItemDoubleClicked(QTreeWidgetItem* item){
|
||||||
SelectedEntry=Entries[item->data(0,Qt::UserRole).toInt()];
|
SelectedEntry=Entries[item->data(0,Qt::UserRole).toInt()];
|
||||||
accept();
|
accept();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ class TrashCanDialog:public QDialog, public Ui_TrashCanDialog{
|
|||||||
virtual void resizeEvent(QResizeEvent *);
|
virtual void resizeEvent(QResizeEvent *);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void OnItemDoubleClicked(QTreeWidgetItem*,int);
|
void OnItemDoubleClicked(QTreeWidgetItem*);
|
||||||
void OnContextMenu(const QPoint&);
|
void OnContextMenu(const QPoint&);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
QFile* ExporterBase::openFile(QWidget* parent, QString id, QStringList Filters){
|
QFile* ExporterBase::openFile(QWidget* parent, QString id, QStringList Filters){
|
||||||
QString filename=KpxFileDialogs::saveFile(parent,id,tr("Import File..."),Filters);
|
QString filename=KpxFileDialogs::saveFile(parent,id,tr("Import File..."),Filters);
|
||||||
if(filename==QString())return NULL;
|
if(filename.isEmpty())return NULL;
|
||||||
QFile* file=new QFile(filename);
|
QFile* file=new QFile(filename);
|
||||||
if(!file->open(QIODevice::ReadWrite|QIODevice::Truncate)){
|
if(!file->open(QIODevice::ReadWrite|QIODevice::Truncate)){
|
||||||
QMessageBox::critical(parent,tr("Export Failed"),decodeFileError(file->error()));
|
QMessageBox::critical(parent,tr("Export Failed"),decodeFileError(file->error()));
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ class IExport{
|
|||||||
};
|
};
|
||||||
|
|
||||||
class ExporterBase:public QObject{
|
class ExporterBase:public QObject{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual QFile* openFile(QWidget* GuiParent,QString id,QStringList Filter);
|
virtual QFile* openFile(QWidget* GuiParent,QString id,QStringList Filter);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -21,14 +21,16 @@
|
|||||||
#ifndef _EXPORT_KPX_XML_H_
|
#ifndef _EXPORT_KPX_XML_H_
|
||||||
#define _EXPORT_KPX_XML_H_
|
#define _EXPORT_KPX_XML_H_
|
||||||
|
|
||||||
#include <QObject>
|
#include <QDomElement>
|
||||||
#include "Export.h"
|
#include "Export.h"
|
||||||
|
|
||||||
class Export_KeePassX_Xml:public IExport, public ExporterBase{
|
class Export_KeePassX_Xml:public ExporterBase, public IExport{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool exportDatabase(QWidget* GuiParent, IDatabase* Database);
|
virtual bool exportDatabase(QWidget* GuiParent, IDatabase* Database);
|
||||||
virtual QString identifier(){return "EXPORT_KEEPASSX_XML";}
|
virtual QString identifier(){return "EXPORT_KEEPASSX_XML";}
|
||||||
virtual QString title(){return "KeePassX XML File";}
|
virtual QString title(){return tr("KeePassX XML File");}
|
||||||
private:
|
private:
|
||||||
void addGroup(IGroupHandle* group,QDomElement& parent,QDomDocument& doc);
|
void addGroup(IGroupHandle* group,QDomElement& parent,QDomDocument& doc);
|
||||||
void addEntry(IEntryHandle* group,QDomElement& parent,QDomDocument& doc);
|
void addEntry(IEntryHandle* group,QDomElement& parent,QDomDocument& doc);
|
||||||
|
|||||||
@@ -23,11 +23,13 @@
|
|||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include "Export.h"
|
#include "Export.h"
|
||||||
|
|
||||||
class Export_Txt:public IExport, public ExporterBase{
|
class Export_Txt:public ExporterBase, public IExport{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool exportDatabase(QWidget* GuiParent, IDatabase* Database);
|
virtual bool exportDatabase(QWidget* GuiParent, IDatabase* Database);
|
||||||
virtual QString identifier(){return "e_txt";}
|
virtual QString identifier(){return "e_txt";}
|
||||||
virtual QString title(){return "Text File";}
|
virtual QString title(){return tr("Text File");}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+12
-8
@@ -6,7 +6,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>419</width>
|
<width>419</width>
|
||||||
<height>268</height>
|
<height>305</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
@@ -18,13 +18,13 @@
|
|||||||
<property name="minimumSize" >
|
<property name="minimumSize" >
|
||||||
<size>
|
<size>
|
||||||
<width>419</width>
|
<width>419</width>
|
||||||
<height>268</height>
|
<height>305</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize" >
|
<property name="maximumSize" >
|
||||||
<size>
|
<size>
|
||||||
<width>419</width>
|
<width>419</width>
|
||||||
<height>268</height>
|
<height>309</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle" >
|
<property name="windowTitle" >
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tabWidget" >
|
<widget class="QTabWidget" name="tabWidget" >
|
||||||
<property name="currentIndex" >
|
<property name="currentIndex" >
|
||||||
<number>0</number>
|
<number>3</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tab" >
|
<widget class="QWidget" name="tab" >
|
||||||
<attribute name="title" >
|
<attribute name="title" >
|
||||||
@@ -167,9 +167,6 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout" >
|
||||||
<property name="spacing" >
|
|
||||||
<number>12</number>
|
|
||||||
</property>
|
|
||||||
<property name="leftMargin" >
|
<property name="leftMargin" >
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
@@ -183,7 +180,7 @@
|
|||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="LinkLabel" name="label_2" >
|
<widget class="LinkLabel" name="label_5" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>http://keepassx.sourceforge.net</string>
|
<string>http://keepassx.sourceforge.net</string>
|
||||||
</property>
|
</property>
|
||||||
@@ -303,6 +300,13 @@ General Public License (GPL) version 2.</string>
|
|||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="ButtonBox" >
|
||||||
|
<property name="standardButtons" >
|
||||||
|
<set>QDialogButtonBox::Ok</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11" />
|
<layoutdefault spacing="6" margin="11" />
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
<ui version="4.0" >
|
||||||
|
<class>AutoTypeDlg</class>
|
||||||
|
<widget class="QWidget" name="AutoTypeDlg" >
|
||||||
|
<property name="geometry" >
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>502</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle" >
|
||||||
|
<string>KeePassX - Auto-Type</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" >
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType" >
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>481</width>
|
||||||
|
<height>50</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Click on an entry to auto-type it.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTreeWidget" name="entryList" >
|
||||||
|
<property name="cursor" stdset="0" >
|
||||||
|
<cursorShape>PointingHandCursor</cursorShape>
|
||||||
|
</property>
|
||||||
|
<property name="rootIsDecorated" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="itemsExpandable" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="allColumnsShowFocus" >
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<column>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Group</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Title</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Username</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="ButtonBox" >
|
||||||
|
<property name="standardButtons" >
|
||||||
|
<set>QDialogButtonBox::Cancel</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
||||||
@@ -13,12 +13,21 @@
|
|||||||
<string>Dialog</string>
|
<string>Dialog</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout" >
|
||||||
<property name="margin" >
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="TabWidget" >
|
<widget class="QTabWidget" name="TabWidget" >
|
||||||
<property name="currentIndex" >
|
<property name="currentIndex" >
|
||||||
@@ -29,20 +38,38 @@
|
|||||||
<string>Rich Text Editor</string>
|
<string>Rich Text Editor</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout" >
|
||||||
<property name="margin" >
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" >
|
<layout class="QHBoxLayout" >
|
||||||
<property name="margin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QToolButton" name="BtnBold" >
|
<widget class="QToolButton" name="BtnBold" >
|
||||||
<property name="toolTip" >
|
<property name="toolTip" >
|
||||||
@@ -291,12 +318,21 @@
|
|||||||
<string>HTML</string>
|
<string>HTML</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout" >
|
||||||
<property name="margin" >
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTextEdit" name="HtmlEdit" >
|
<widget class="QTextEdit" name="HtmlEdit" >
|
||||||
<property name="acceptRichText" >
|
<property name="acceptRichText" >
|
||||||
@@ -309,58 +345,12 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" >
|
<widget class="QDialogButtonBox" name="ButtonBox" >
|
||||||
<property name="margin" >
|
<property name="standardButtons" >
|
||||||
<number>0</number>
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok|QDialogButtonBox::RestoreDefaults</set>
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="ButtonRestore" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Restore Default</string>
|
|
||||||
</property>
|
|
||||||
<property name="autoDefault" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<spacer>
|
|
||||||
<property name="orientation" >
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" >
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="ButtonSave" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Save</string>
|
|
||||||
</property>
|
|
||||||
<property name="autoDefault" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="ButtonCancel" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Cancel</string>
|
|
||||||
</property>
|
|
||||||
<property name="autoDefault" >
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
<ui version="4.0" stdsetdef="1" >
|
<ui version="4.0" >
|
||||||
<author></author>
|
<class>DatabaseSettingsDlg</class>
|
||||||
<comment></comment>
|
|
||||||
<exportmacro></exportmacro>
|
|
||||||
<class>dbsettingdlg_base</class>
|
|
||||||
<widget class="QDialog" name="DatabaseSettingsDlg" >
|
<widget class="QDialog" name="DatabaseSettingsDlg" >
|
||||||
<property name="geometry" >
|
<property name="geometry" >
|
||||||
<rect>
|
<rect>
|
||||||
@@ -13,9 +10,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
<sizepolicy>
|
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
||||||
<hsizetype>0</hsizetype>
|
|
||||||
<vsizetype>0</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
@@ -94,46 +89,25 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QPushButton" name="ButtonOK" >
|
<widget class="QDialogButtonBox" name="ButtonBox" >
|
||||||
<property name="geometry" >
|
<property name="geometry" >
|
||||||
<rect>
|
<rect>
|
||||||
<x>210</x>
|
<x>12</x>
|
||||||
<y>180</y>
|
<y>180</y>
|
||||||
<width>102</width>
|
<width>411</width>
|
||||||
<height>23</height>
|
<height>27</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="text" >
|
<property name="standardButtons" >
|
||||||
<string>O&K</string>
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Ctrl+K</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="ButtonCancel" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>320</x>
|
|
||||||
<y>180</y>
|
|
||||||
<width>102</width>
|
|
||||||
<height>23</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>&Cancel</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Ctrl+C</string>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11" />
|
<layoutdefault spacing="6" margin="11" />
|
||||||
<pixmapfunction></pixmapfunction>
|
|
||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>ComboAlgo</tabstop>
|
<tabstop>ComboAlgo</tabstop>
|
||||||
<tabstop>EditRounds</tabstop>
|
<tabstop>EditRounds</tabstop>
|
||||||
<tabstop>ButtonOK</tabstop>
|
|
||||||
<tabstop>ButtonCancel</tabstop>
|
|
||||||
<tabstop>pushButton1</tabstop>
|
|
||||||
</tabstops>
|
</tabstops>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
+30
-51
@@ -1,7 +1,5 @@
|
|||||||
<ui version="4.0" >
|
<ui version="4.0" >
|
||||||
<author>Tarek Saidi</author>
|
<author>Tarek Saidi</author>
|
||||||
<comment></comment>
|
|
||||||
<exportmacro></exportmacro>
|
|
||||||
<class>EditGroupDialog</class>
|
<class>EditGroupDialog</class>
|
||||||
<widget class="QDialog" name="EditGroupDialog" >
|
<widget class="QDialog" name="EditGroupDialog" >
|
||||||
<property name="geometry" >
|
<property name="geometry" >
|
||||||
@@ -13,9 +11,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
<sizepolicy>
|
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
||||||
<hsizetype>0</hsizetype>
|
|
||||||
<vsizetype>0</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
@@ -36,18 +32,39 @@
|
|||||||
<string>Group Properties</string>
|
<string>Group Properties</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout" >
|
||||||
<property name="margin" >
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" >
|
<layout class="QGridLayout" >
|
||||||
<property name="margin" >
|
<property name="leftMargin" >
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="spacing" >
|
<property name="topMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="horizontalSpacing" >
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="verticalSpacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="1" column="0" >
|
<item row="1" column="0" >
|
||||||
@@ -106,48 +123,12 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" >
|
<widget class="QDialogButtonBox" name="ButtonBox" >
|
||||||
<property name="margin" >
|
<property name="standardButtons" >
|
||||||
<number>0</number>
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<spacer>
|
|
||||||
<property name="orientation" >
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" >
|
|
||||||
<size>
|
|
||||||
<width>121</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="ButtonOK" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>O&K</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Alt+K</string>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="ButtonCancel" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>&Cancel</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Alt+C</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11" />
|
<layoutdefault spacing="6" margin="11" />
|
||||||
@@ -155,8 +136,6 @@
|
|||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>EditTitle</tabstop>
|
<tabstop>EditTitle</tabstop>
|
||||||
<tabstop>ComboIconPicker</tabstop>
|
<tabstop>ComboIconPicker</tabstop>
|
||||||
<tabstop>ButtonOK</tabstop>
|
|
||||||
<tabstop>ButtonCancel</tabstop>
|
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|||||||
@@ -57,6 +57,11 @@
|
|||||||
<property name="dragEnabled" >
|
<property name="dragEnabled" >
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
|
<column>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Groups</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QSplitter" name="HSplitter" >
|
<widget class="QSplitter" name="HSplitter" >
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
@@ -84,6 +89,9 @@
|
|||||||
<property name="rootIsDecorated" >
|
<property name="rootIsDecorated" >
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="sortingEnabled" >
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QTextBrowser" name="DetailView" >
|
<widget class="QTextBrowser" name="DetailView" >
|
||||||
<property name="enabled" >
|
<property name="enabled" >
|
||||||
@@ -479,6 +487,9 @@
|
|||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>&KeePassX Handbook...</string>
|
<string>&KeePassX Handbook...</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="visible" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="HideSearchResultsAction" >
|
<action name="HideSearchResultsAction" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
@@ -554,6 +565,9 @@
|
|||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>Recycle Bin...</string>
|
<string>Recycle Bin...</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="visible" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="AddBookmarkAction" >
|
<action name="AddBookmarkAction" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>578</width>
|
<width>578</width>
|
||||||
<height>275</height>
|
<height>280</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
@@ -18,13 +18,13 @@
|
|||||||
<property name="minimumSize" >
|
<property name="minimumSize" >
|
||||||
<size>
|
<size>
|
||||||
<width>578</width>
|
<width>578</width>
|
||||||
<height>275</height>
|
<height>280</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize" >
|
<property name="maximumSize" >
|
||||||
<size>
|
<size>
|
||||||
<width>578</width>
|
<width>578</width>
|
||||||
<height>275</height>
|
<height>280</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle" >
|
<property name="windowTitle" >
|
||||||
@@ -306,58 +306,12 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" >
|
<widget class="QDialogButtonBox" name="ButtonBox" >
|
||||||
<property name="spacing" >
|
<property name="standardButtons" >
|
||||||
<number>6</number>
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
|
||||||
</property>
|
|
||||||
<property name="leftMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<spacer>
|
|
||||||
<property name="orientation" >
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" >
|
|
||||||
<size>
|
|
||||||
<width>351</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="ButtonOK" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>OK</string>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="ButtonCancel" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Cancel</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="ButtonExit" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Exit</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11" />
|
<layoutdefault spacing="6" margin="11" />
|
||||||
@@ -367,9 +321,6 @@
|
|||||||
<tabstop>Combo_Dirs</tabstop>
|
<tabstop>Combo_Dirs</tabstop>
|
||||||
<tabstop>ButtonBrowse</tabstop>
|
<tabstop>ButtonBrowse</tabstop>
|
||||||
<tabstop>CheckBox_Both</tabstop>
|
<tabstop>CheckBox_Both</tabstop>
|
||||||
<tabstop>ButtonOK</tabstop>
|
|
||||||
<tabstop>ButtonCancel</tabstop>
|
|
||||||
<tabstop>ButtonExit</tabstop>
|
|
||||||
<tabstop>Button_Bookmarks</tabstop>
|
<tabstop>Button_Bookmarks</tabstop>
|
||||||
<tabstop>ButtonChangeEchoMode</tabstop>
|
<tabstop>ButtonChangeEchoMode</tabstop>
|
||||||
</tabstops>
|
</tabstops>
|
||||||
|
|||||||
+55
-58
@@ -10,9 +10,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
<sizepolicy>
|
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
||||||
<hsizetype>0</hsizetype>
|
|
||||||
<vsizetype>0</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
@@ -33,12 +31,21 @@
|
|||||||
<string>Search...</string>
|
<string>Search...</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout" >
|
||||||
<property name="margin" >
|
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="leftMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
@@ -57,10 +64,22 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" >
|
<layout class="QGridLayout" >
|
||||||
<property name="margin" >
|
<property name="leftMargin" >
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="spacing" >
|
<property name="topMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="horizontalSpacing" >
|
||||||
|
<number>4</number>
|
||||||
|
</property>
|
||||||
|
<property name="verticalSpacing" >
|
||||||
<number>4</number>
|
<number>4</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="1" column="0" >
|
<item row="1" column="0" >
|
||||||
@@ -85,10 +104,22 @@
|
|||||||
<string>Include:</string>
|
<string>Include:</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" >
|
<layout class="QGridLayout" >
|
||||||
<property name="margin" >
|
<property name="leftMargin" >
|
||||||
<number>9</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="spacing" >
|
<property name="topMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="horizontalSpacing" >
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="verticalSpacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="1" >
|
<item row="0" column="1" >
|
||||||
@@ -156,10 +187,19 @@
|
|||||||
</item>
|
</item>
|
||||||
<item row="1" column="1" >
|
<item row="1" column="1" >
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout" >
|
||||||
<property name="margin" >
|
<property name="spacing" >
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="spacing" >
|
<property name="leftMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
@@ -217,53 +257,12 @@
|
|||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" >
|
<widget class="QDialogButtonBox" name="ButtonBox" >
|
||||||
<property name="margin" >
|
<property name="standardButtons" >
|
||||||
<number>0</number>
|
<set>QDialogButtonBox::Close</set>
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<spacer>
|
|
||||||
<property name="orientation" >
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" >
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="Button_Search" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy>
|
|
||||||
<hsizetype>0</hsizetype>
|
|
||||||
<vsizetype>0</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Search</string>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="Button_Close" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Clo&se</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Alt+S</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11" />
|
<layoutdefault spacing="6" margin="11" />
|
||||||
@@ -277,8 +276,6 @@
|
|||||||
<tabstop>checkBox_Comment</tabstop>
|
<tabstop>checkBox_Comment</tabstop>
|
||||||
<tabstop>checkBox_URL</tabstop>
|
<tabstop>checkBox_URL</tabstop>
|
||||||
<tabstop>checkBox_Attachment</tabstop>
|
<tabstop>checkBox_Attachment</tabstop>
|
||||||
<tabstop>Button_Search</tabstop>
|
|
||||||
<tabstop>Button_Close</tabstop>
|
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|||||||
+11
-93
@@ -1,7 +1,4 @@
|
|||||||
<ui version="4.0" >
|
<ui version="4.0" >
|
||||||
<author></author>
|
|
||||||
<comment></comment>
|
|
||||||
<exportmacro></exportmacro>
|
|
||||||
<class>SelectIconDlg</class>
|
<class>SelectIconDlg</class>
|
||||||
<widget class="QDialog" name="SelectIconDlg" >
|
<widget class="QDialog" name="SelectIconDlg" >
|
||||||
<property name="geometry" >
|
<property name="geometry" >
|
||||||
@@ -9,13 +6,11 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>478</width>
|
<width>478</width>
|
||||||
<height>280</height>
|
<height>284</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
<sizepolicy>
|
<sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
|
||||||
<hsizetype>5</hsizetype>
|
|
||||||
<vsizetype>5</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
<verstretch>0</verstretch>
|
<verstretch>0</verstretch>
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
@@ -23,56 +18,8 @@
|
|||||||
<property name="windowTitle" >
|
<property name="windowTitle" >
|
||||||
<string>Icon Selection</string>
|
<string>Icon Selection</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" >
|
<layout class="QVBoxLayout" >
|
||||||
<property name="margin" >
|
<item>
|
||||||
<number>9</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="0" >
|
|
||||||
<layout class="QGridLayout" >
|
|
||||||
<property name="margin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item row="1" column="0" >
|
|
||||||
<widget class="QPushButton" name="Button_AddIcon" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Add Custom Icon...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="2" >
|
|
||||||
<widget class="QPushButton" name="Button_PickIcon" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Pick</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="3" >
|
|
||||||
<widget class="QPushButton" name="Button_Cancel" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Cancel</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1" >
|
|
||||||
<spacer>
|
|
||||||
<property name="orientation" >
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" >
|
|
||||||
<size>
|
|
||||||
<width>131</width>
|
|
||||||
<height>31</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0" colspan="4" >
|
|
||||||
<widget class="QListWidget" name="List" >
|
<widget class="QListWidget" name="List" >
|
||||||
<property name="iconSize" >
|
<property name="iconSize" >
|
||||||
<size>
|
<size>
|
||||||
@@ -103,44 +50,15 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="ButtonBox" >
|
||||||
|
<property name="standardButtons" >
|
||||||
|
<set>QDialogButtonBox::Cancel</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<pixmapfunction></pixmapfunction>
|
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections>
|
<connections/>
|
||||||
<connection>
|
|
||||||
<sender>Button_PickIcon</sender>
|
|
||||||
<signal>clicked()</signal>
|
|
||||||
<receiver>SelectIconDlg</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel" >
|
|
||||||
<x>278</x>
|
|
||||||
<y>253</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel" >
|
|
||||||
<x>96</x>
|
|
||||||
<y>254</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>Button_Cancel</sender>
|
|
||||||
<signal>clicked()</signal>
|
|
||||||
<receiver>SelectIconDlg</receiver>
|
|
||||||
<slot>reject()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel" >
|
|
||||||
<x>369</x>
|
|
||||||
<y>253</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel" >
|
|
||||||
<x>179</x>
|
|
||||||
<y>282</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
+304
-196
@@ -6,19 +6,25 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>571</width>
|
<width>571</width>
|
||||||
<height>420</height>
|
<height>440</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="sizePolicy" >
|
||||||
|
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
<property name="minimumSize" >
|
<property name="minimumSize" >
|
||||||
<size>
|
<size>
|
||||||
<width>571</width>
|
<width>571</width>
|
||||||
<height>420</height>
|
<height>440</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize" >
|
<property name="maximumSize" >
|
||||||
<size>
|
<size>
|
||||||
<width>571</width>
|
<width>571</width>
|
||||||
<height>420</height>
|
<height>441</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle" >
|
<property name="windowTitle" >
|
||||||
@@ -60,7 +66,7 @@
|
|||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tabWidget4" >
|
<widget class="QTabWidget" name="tabWidgetSettings" >
|
||||||
<property name="tabPosition" >
|
<property name="tabPosition" >
|
||||||
<enum>QTabWidget::North</enum>
|
<enum>QTabWidget::North</enum>
|
||||||
</property>
|
</property>
|
||||||
@@ -70,7 +76,7 @@
|
|||||||
<property name="currentIndex" >
|
<property name="currentIndex" >
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tab" >
|
<widget class="QWidget" name="TabGeneral" >
|
||||||
<property name="whatsThis" >
|
<property name="whatsThis" >
|
||||||
<string>The integration plugins provide features like usage of the native file dialogs and message boxes of the particular desktop environments.</string>
|
<string>The integration plugins provide features like usage of the native file dialogs and message boxes of the particular desktop environments.</string>
|
||||||
</property>
|
</property>
|
||||||
@@ -79,36 +85,74 @@
|
|||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout" >
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="checkBox_ShowSysTrayIcon" >
|
<widget class="QCheckBox" name="CheckBox_ShowSysTrayIcon" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>Show system tray icon</string>
|
<string>Show system tray icon</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="checkBox_MinimizeToTray" >
|
<layout class="QHBoxLayout" >
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType" >
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>25</width>
|
||||||
|
<height>10</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="CheckBox_MinimizeTray" >
|
||||||
|
<property name="enabled" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Minimize to tray instead of taskbar</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType" >
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>25</width>
|
||||||
|
<height>10</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="CheckBox_CloseToTray" >
|
||||||
|
<property name="enabled" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>Minimize to tray when clicking the main window's close button</string>
|
<string>Minimize to tray when clicking the main window's close button</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" >
|
<layout class="QVBoxLayout" >
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="leftMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="CheckBox_OpenLast" >
|
<widget class="QCheckBox" name="CheckBox_OpenLast" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
@@ -119,6 +163,8 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
@@ -129,32 +175,84 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" >
|
<property name="sizeHint" >
|
||||||
<size>
|
<size>
|
||||||
<width>10</width>
|
<width>25</width>
|
||||||
<height>20</height>
|
<height>10</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="CheckBox_RememberLastKey" >
|
<widget class="QCheckBox" name="CheckBox_RememberLastKey" >
|
||||||
|
<property name="enabled" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>Remember last key type and location</string>
|
<string>Remember last key type and location</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="sizeType" >
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
<property name="sizeHint" >
|
<property name="sizeHint" >
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>25</width>
|
||||||
<height>20</height>
|
<height>10</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="CheckBox_StartMinimized" >
|
||||||
|
<property name="enabled" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Start minimized</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType" >
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>25</width>
|
||||||
|
<height>10</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="CheckBox_StartLocked" >
|
||||||
|
<property name="enabled" >
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Start locked</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@@ -226,88 +324,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" >
|
|
||||||
<property name="spacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="leftMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<layout class="QGridLayout" >
|
|
||||||
<property name="leftMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="horizontalSpacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="verticalSpacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item row="0" column="0" >
|
|
||||||
<widget class="QLabel" name="label_3" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Group tree at start-up:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1" >
|
|
||||||
<widget class="QRadioButton" name="Radio_GroupTreeRestore" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Restore last state</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1" >
|
|
||||||
<widget class="QRadioButton" name="Radio_GroupTreeExpand" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Expand all items</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1" >
|
|
||||||
<widget class="QRadioButton" name="Radio_GroupTreeDoNothing" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Do not expand any item</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer>
|
|
||||||
<property name="orientation" >
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" >
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
@@ -626,13 +642,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QCheckBox" name="checkBox" >
|
|
||||||
<property name="text" >
|
|
||||||
<string>Unified Title and Toolbar</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" >
|
<layout class="QHBoxLayout" >
|
||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
@@ -672,6 +681,73 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
|
<item>
|
||||||
|
<layout class="QGridLayout" >
|
||||||
|
<property name="leftMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="horizontalSpacing" >
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="verticalSpacing" >
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="0" >
|
||||||
|
<widget class="QLabel" name="label_3" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Group tree at start-up:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1" >
|
||||||
|
<widget class="QRadioButton" name="Radio_GroupTreeRestore" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Restore last state</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1" >
|
||||||
|
<widget class="QRadioButton" name="Radio_GroupTreeExpand" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Expand all items</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1" >
|
||||||
|
<widget class="QRadioButton" name="Radio_GroupTreeDoNothing" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Do not expand any item</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
@@ -687,7 +763,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="tab_3" >
|
<widget class="QWidget" name="tabSecurity" >
|
||||||
<attribute name="title" >
|
<attribute name="title" >
|
||||||
<string>Security</string>
|
<string>Security</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
@@ -815,6 +891,13 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="CheckBox_LockMinimize" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Lock workspace when minimizing the main window</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
@@ -830,7 +913,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="Seite" >
|
<widget class="QWidget" name="tabFeatures" >
|
||||||
<attribute name="title" >
|
<attribute name="title" >
|
||||||
<string>Features</string>
|
<string>Features</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
@@ -867,7 +950,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="tab_2" >
|
<widget class="QWidget" name="tabIntegration" >
|
||||||
<attribute name="title" >
|
<attribute name="title" >
|
||||||
<string>Desktop Integration</string>
|
<string>Desktop Integration</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
@@ -1015,7 +1098,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="tab" >
|
<widget class="QWidget" name="TabAdvanced" >
|
||||||
<attribute name="title" >
|
<attribute name="title" >
|
||||||
<string>Advanced</string>
|
<string>Advanced</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
@@ -1036,7 +1119,7 @@
|
|||||||
<number>9</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="groupBox_3" >
|
<widget class="QGroupBox" name="Box_AutoType" >
|
||||||
<property name="title" >
|
<property name="title" >
|
||||||
<string>Auto-Type Fine Tuning</string>
|
<string>Auto-Type Fine Tuning</string>
|
||||||
</property>
|
</property>
|
||||||
@@ -1122,52 +1205,30 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" >
|
<widget class="QGroupBox" name="Box_BrowserCmd" >
|
||||||
<property name="leftMargin" >
|
<property name="title" >
|
||||||
<number>0</number>
|
<string>Custom Browser Command</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="topMargin" >
|
<property name="checkable" >
|
||||||
<number>0</number>
|
<bool>true</bool>
|
||||||
</property>
|
|
||||||
<property name="rightMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin" >
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="horizontalSpacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="verticalSpacing" >
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<item row="1" column="2" >
|
|
||||||
<widget class="QPushButton" name="Button_MountDirBrowse" >
|
|
||||||
<property name="minimumSize" >
|
|
||||||
<size>
|
|
||||||
<width>0</width>
|
|
||||||
<height>23</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="maximumSize" >
|
|
||||||
<size>
|
|
||||||
<width>16777215</width>
|
|
||||||
<height>23</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
</property>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="Edit_BrowserCmd" />
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="Button_BrowserCmdBrowse" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>Browse...</string>
|
<string>Browse</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1" >
|
</layout>
|
||||||
<widget class="QLineEdit" name="Edit_MountDir" >
|
|
||||||
<property name="whatsThis" >
|
|
||||||
<string>The directory where storage devices like CDs and memory sticks are normally mounted.</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0" >
|
<item>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
|
<item>
|
||||||
<widget class="QLabel" name="label_2" >
|
<widget class="QLabel" name="label_2" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>Media Root:</string>
|
<string>Media Root:</string>
|
||||||
@@ -1177,45 +1238,17 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0" >
|
<item>
|
||||||
<widget class="QLabel" name="label" >
|
<widget class="QLineEdit" name="Edit_MountDir" >
|
||||||
<property name="text" >
|
<property name="whatsThis" >
|
||||||
<string>Browser Command:</string>
|
<string>The directory where storage devices like CDs and memory sticks are normally mounted.</string>
|
||||||
</property>
|
|
||||||
<property name="alignment" >
|
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1" >
|
<item>
|
||||||
<widget class="QLineEdit" name="Edit_BrowserCmd" />
|
<widget class="QPushButton" name="Button_MountDirBrowse" >
|
||||||
</item>
|
|
||||||
<item row="1" column="3" >
|
|
||||||
<spacer>
|
|
||||||
<property name="orientation" >
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeType" >
|
|
||||||
<enum>QSizePolicy::Maximum</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" >
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="2" colspan="2" >
|
|
||||||
<widget class="QCheckBox" name="CheckBox_BrowserDefault" >
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy vsizetype="Fixed" hsizetype="Maximum" >
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>System Default</string>
|
<string>Browse...</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -1231,6 +1264,44 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="Label_GlobalShortcut" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Global Auto-Type Shortcut:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="ShortcutWidget" name="Edit_GlobalShortcut" >
|
||||||
|
<property name="readOnly" >
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="CheckBox_EntryTitlesMatch" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Use entry titles to match the window for Global Auto-Type</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
@@ -1261,11 +1332,48 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11" />
|
<layoutdefault spacing="6" margin="11" />
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>ShortcutWidget</class>
|
||||||
|
<extends>QLineEdit</extends>
|
||||||
|
<header>lib/ShortcutWidget.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>tabWidget4</tabstop>
|
<tabstop>tabWidgetSettings</tabstop>
|
||||||
|
<tabstop>CheckBox_ShowSysTrayIcon</tabstop>
|
||||||
|
<tabstop>CheckBox_MinimizeTray</tabstop>
|
||||||
|
<tabstop>CheckBox_CloseToTray</tabstop>
|
||||||
|
<tabstop>CheckBox_OpenLast</tabstop>
|
||||||
|
<tabstop>CheckBox_RememberLastKey</tabstop>
|
||||||
|
<tabstop>CheckBox_StartMinimized</tabstop>
|
||||||
|
<tabstop>CheckBox_StartLocked</tabstop>
|
||||||
|
<tabstop>checkBox_SaveFileDlgHistory</tabstop>
|
||||||
|
<tabstop>Button_ClearFileDlgHistory</tabstop>
|
||||||
|
<tabstop>checkBox_AskBeforeDelete</tabstop>
|
||||||
<tabstop>ButtonColor1</tabstop>
|
<tabstop>ButtonColor1</tabstop>
|
||||||
<tabstop>ButtonTextColor</tabstop>
|
|
||||||
<tabstop>ButtonColor2</tabstop>
|
<tabstop>ButtonColor2</tabstop>
|
||||||
|
<tabstop>ButtonTextColor</tabstop>
|
||||||
|
<tabstop>CheckBox_AlternatingRowColors</tabstop>
|
||||||
|
<tabstop>Button_CustomizeEntryDetails</tabstop>
|
||||||
|
<tabstop>Radio_GroupTreeRestore</tabstop>
|
||||||
|
<tabstop>Radio_GroupTreeExpand</tabstop>
|
||||||
|
<tabstop>Radio_GroupTreeDoNothing</tabstop>
|
||||||
|
<tabstop>CheckBox_ShowPasswords</tabstop>
|
||||||
|
<tabstop>CheckBox_ShowPasswords_PasswordDlg</tabstop>
|
||||||
|
<tabstop>SpinBox_ClipboardTime</tabstop>
|
||||||
|
<tabstop>CheckBox_LockMinimize</tabstop>
|
||||||
|
<tabstop>CheckBox_FeatureBookmarks</tabstop>
|
||||||
|
<tabstop>Radio_IntPlugin_None</tabstop>
|
||||||
|
<tabstop>Radio_IntPlugin_Gnome</tabstop>
|
||||||
|
<tabstop>Radio_IntPlugin_Kde</tabstop>
|
||||||
|
<tabstop>IntPlugin_Button_Config</tabstop>
|
||||||
|
<tabstop>SpinBox_AutoTypePreGap</tabstop>
|
||||||
|
<tabstop>SpinBox_AutoTypeKeyStrokeDelay</tabstop>
|
||||||
|
<tabstop>CheckBox_SaveRelativePaths</tabstop>
|
||||||
|
<tabstop>Edit_GlobalShortcut</tabstop>
|
||||||
|
<tabstop>CheckBox_EntryTitlesMatch</tabstop>
|
||||||
|
<tabstop>DialogButtons</tabstop>
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ class IImport{
|
|||||||
};
|
};
|
||||||
|
|
||||||
class ImporterBase:public QObject{
|
class ImporterBase:public QObject{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual QFile* openFile(QWidget* GuiParent,QString id,QStringList Filter);
|
virtual QFile* openFile(QWidget* GuiParent,QString id,QStringList Filter);
|
||||||
virtual QString getPassword(QWidget* GuiParent);
|
virtual QString getPassword(QWidget* GuiParent);
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
#include "Database.h"
|
#include "Database.h"
|
||||||
|
|
||||||
class Import_GnuKeyRing:public QObject,public IImport{
|
class Import_GnuKeyRing:public QObject,public IImport{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual QString importDatabase(QWidget* GuiParent, IDatabase* Database);
|
virtual QString importDatabase(QWidget* GuiParent, IDatabase* Database);
|
||||||
virtual QString name(){return "GnuKeyRing";}
|
virtual QString name(){return "GnuKeyRing";}
|
||||||
|
|||||||
@@ -23,7 +23,9 @@
|
|||||||
#include "Database.h"
|
#include "Database.h"
|
||||||
#include "Import.h"
|
#include "Import.h"
|
||||||
|
|
||||||
class Import_KWalletXml:public IImport, public ImporterBase{
|
class Import_KWalletXml:public ImporterBase, public IImport{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool importDatabase(QWidget* GuiParent, IDatabase* Database);
|
virtual bool importDatabase(QWidget* GuiParent, IDatabase* Database);
|
||||||
virtual QString identifier(){return "KWalletXml";}
|
virtual QString identifier(){return "KWalletXml";}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ bool Import_KeePassX_Xml::importDatabase(QWidget* Parent, IDatabase* database){
|
|||||||
QStringList GroupNames;
|
QStringList GroupNames;
|
||||||
for(int i=0;i<TopLevelGroupNodes.count();i++){
|
for(int i=0;i<TopLevelGroupNodes.count();i++){
|
||||||
if(TopLevelGroupNodes.at(i).toElement().tagName()!="group"){
|
if(TopLevelGroupNodes.at(i).toElement().tagName()!="group"){
|
||||||
qWarning("Import_KeePassX_Xml: Error: Unknow tag '%s'",TopLevelGroupNodes.at(i).toElement().tagName());
|
qWarning("Import_KeePassX_Xml: Error: Unknow tag '%s'",TopLevelGroupNodes.at(i).toElement().tagName().toUtf8().constData());
|
||||||
QMessageBox::critical(GuiParent,tr("Import Failed"),tr("Parsing error: File is no valid KeePassX XML file."));
|
QMessageBox::critical(GuiParent,tr("Import Failed"),tr("Parsing error: File is no valid KeePassX XML file."));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,9 @@
|
|||||||
#include "Import.h"
|
#include "Import.h"
|
||||||
|
|
||||||
|
|
||||||
class Import_KeePassX_Xml:public IImport, public ImporterBase{
|
class Import_KeePassX_Xml:public ImporterBase, public IImport{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool importDatabase(QWidget* GuiParent, IDatabase* Database);
|
virtual bool importDatabase(QWidget* GuiParent, IDatabase* Database);
|
||||||
virtual QString identifier(){return "KeePassX_Xml";}
|
virtual QString identifier(){return "KeePassX_Xml";}
|
||||||
|
|||||||
@@ -32,12 +32,18 @@ bool Import_PwManager::importDatabase(QWidget* GuiParent, IDatabase* db){
|
|||||||
QFile* file=openFile(GuiParent,identifier(),QStringList()<<tr("PwManager Files (*.pwm)")<<tr("All Files (*)"));
|
QFile* file=openFile(GuiParent,identifier(),QStringList()<<tr("PwManager Files (*.pwm)")<<tr("All Files (*)"));
|
||||||
if(!file)return false;
|
if(!file)return false;
|
||||||
QString password=getPassword(GuiParent);
|
QString password=getPassword(GuiParent);
|
||||||
if(password==QString()){delete file; return false;}
|
if(password.isEmpty()){delete file; return false;}
|
||||||
char* buffer=NULL;
|
char* buffer=NULL;
|
||||||
int offset=0;
|
int offset=0;
|
||||||
int len=0;
|
int len=0;
|
||||||
if(len=file->size()) buffer=new char[len];
|
if(len=file->size()){
|
||||||
else {QMessageBox::critical(GuiParent,tr("Import Failed"),tr("File is empty.")); delete file; return false;}
|
buffer=new char[len];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
QMessageBox::critical(GuiParent,tr("Import Failed"),tr("File is empty."));
|
||||||
|
delete file;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
file->read(buffer,len);
|
file->read(buffer,len);
|
||||||
file->close();
|
file->close();
|
||||||
delete file;
|
delete file;
|
||||||
|
|||||||
@@ -26,7 +26,9 @@
|
|||||||
#include "Import.h"
|
#include "Import.h"
|
||||||
|
|
||||||
|
|
||||||
class Import_PwManager:public IImport, public ImporterBase{
|
class Import_PwManager:public ImporterBase, public IImport{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool importDatabase(QWidget* GuiParent, IDatabase* Database);
|
virtual bool importDatabase(QWidget* GuiParent, IDatabase* Database);
|
||||||
virtual QString identifier(){return "PwManager";}
|
virtual QString identifier(){return "PwManager";}
|
||||||
|
|||||||
+18
-30
@@ -1,5 +1,5 @@
|
|||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Copyright (C) 2005-2006 by Tarek Saidi *
|
* Copyright (C) 2005-2006 by Tarek Saidi, Felix Geyer *
|
||||||
* tarek.saidi@arcor.de *
|
* tarek.saidi@arcor.de *
|
||||||
* *
|
* *
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
@@ -21,42 +21,30 @@
|
|||||||
#ifndef _AUTOTYPE_H_
|
#ifndef _AUTOTYPE_H_
|
||||||
#define _AUTOTYPE_H_
|
#define _AUTOTYPE_H_
|
||||||
|
|
||||||
#include <QObject>
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#ifdef Q_WS_X11
|
|
||||||
#define XK_MISCELLANY
|
|
||||||
#define XK_XKB_KEYS
|
|
||||||
#define XK_3270
|
|
||||||
#include <X11/extensions/XTest.h>
|
|
||||||
#include <X11/keysymdef.h>
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
#endif
|
|
||||||
#include "Database.h"
|
#include "Database.h"
|
||||||
|
|
||||||
typedef struct tKeysymMap{
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
quint16 keysym;
|
struct Shortcut{
|
||||||
quint16 unicode;
|
bool ctrl, shift, alt, altgr, win;
|
||||||
|
quint32 key;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AutoType:public QObject{
|
|
||||||
public:
|
|
||||||
static QWidget* MainWin;
|
|
||||||
static void perform(IEntryHandle* entry,QString& errors);
|
|
||||||
private:
|
|
||||||
#ifdef Q_WS_X11
|
|
||||||
static tKeysymMap KeysymMap[];
|
|
||||||
static quint16 getKeysym(const QChar& unicode);
|
|
||||||
static int getModifiers(Display*,KeySym,int);
|
|
||||||
static void pressModifiers(Display*,int,bool Press=true);
|
|
||||||
static void releaseModifiers(Display*,int);
|
|
||||||
static void templateToKeysyms(const QString& Template, QList<quint16>& KeySymList,IEntryHandle* entry);
|
|
||||||
static void stringToKeysyms(const QString& string,QList<quint16>& KeySymList);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef AUTOTYPE
|
||||||
|
class KeepassMainWindow;
|
||||||
|
|
||||||
|
class AutoType{
|
||||||
|
public:
|
||||||
|
static KeepassMainWindow* MainWin;
|
||||||
|
static void perform(IEntryHandle* entry, QString& err,bool hideWindow=true,int nr=0);
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
static Shortcut shortcut;
|
||||||
|
static void performGlobal();
|
||||||
|
static bool registerGlobalShortcut(const Shortcut& s);
|
||||||
|
static void unregisterGlobalShortcut();
|
||||||
|
#endif // GLOBAL_AUTOTYPE
|
||||||
};
|
};
|
||||||
|
#endif // AUTOTYPE
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+336
-950
File diff suppressed because it is too large
Load Diff
+14
-12
@@ -41,6 +41,7 @@ QList<EntryViewItem*>* pItems;
|
|||||||
KeepassEntryView* pEntryView;
|
KeepassEntryView* pEntryView;
|
||||||
|
|
||||||
KeepassEntryView::KeepassEntryView(QWidget* parent):QTreeWidget(parent){
|
KeepassEntryView::KeepassEntryView(QWidget* parent):QTreeWidget(parent){
|
||||||
|
ViewMode=Normal;
|
||||||
AutoResizeColumns=true;
|
AutoResizeColumns=true;
|
||||||
header()->setResizeMode(QHeaderView::Interactive);
|
header()->setResizeMode(QHeaderView::Interactive);
|
||||||
header()->setStretchLastSection(false);
|
header()->setStretchLastSection(false);
|
||||||
@@ -51,6 +52,7 @@ KeepassEntryView::KeepassEntryView(QWidget* parent):QTreeWidget(parent){
|
|||||||
ColumnOrder=config->columnOrder();
|
ColumnOrder=config->columnOrder();
|
||||||
|
|
||||||
updateColumns();
|
updateColumns();
|
||||||
|
header()->setSortIndicator(config->columnSort(), config->columnSortOrder());
|
||||||
|
|
||||||
connect(header(),SIGNAL(sectionResized(int,int,int)),this,SLOT(OnColumnResized(int,int,int)));
|
connect(header(),SIGNAL(sectionResized(int,int,int)),this,SLOT(OnColumnResized(int,int,int)));
|
||||||
connect(this,SIGNAL(itemSelectionChanged()),this,SLOT(OnItemsChanged()));
|
connect(this,SIGNAL(itemSelectionChanged()),this,SLOT(OnItemsChanged()));
|
||||||
@@ -69,6 +71,8 @@ KeepassEntryView::~KeepassEntryView(){
|
|||||||
config->setColumnSizes(ColumnSizes);
|
config->setColumnSizes(ColumnSizes);
|
||||||
config->setColumns(Columns);
|
config->setColumns(Columns);
|
||||||
config->setColumnOrder(ColumnOrder);
|
config->setColumnOrder(ColumnOrder);
|
||||||
|
config->setColumnSort(header()->sortIndicatorSection());
|
||||||
|
config->setColumnSortOrder(header()->sortIndicatorOrder());
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassEntryView::OnGroupChanged(IGroupHandle* group){
|
void KeepassEntryView::OnGroupChanged(IGroupHandle* group){
|
||||||
@@ -106,14 +110,11 @@ bool sortSearchResultsLessThan(const IEntryHandle* a, const IEntryHandle* b){
|
|||||||
|
|
||||||
|
|
||||||
void KeepassEntryView::OnHeaderSectionClicked(int index){
|
void KeepassEntryView::OnHeaderSectionClicked(int index){
|
||||||
if(header()->isSortIndicatorShown() && header()->sortIndicatorSection()==index){
|
if(header()->sortIndicatorSection()==index){
|
||||||
header()->setSortIndicator(index,header()->sortIndicatorOrder() ? Qt::DescendingOrder : Qt::AscendingOrder);
|
header()->setSortIndicator(index,header()->sortIndicatorOrder() ? Qt::DescendingOrder : Qt::AscendingOrder);
|
||||||
sortItems(index,header()->sortIndicatorOrder());
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
header()->setSortIndicator(index,Qt::AscendingOrder);
|
header()->setSortIndicator(index,Qt::AscendingOrder);
|
||||||
header()->setSortIndicatorShown(true);
|
|
||||||
sortItems(index,Qt::AscendingOrder);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ViewMode==Normal){
|
if(ViewMode==Normal){
|
||||||
@@ -272,7 +273,7 @@ void KeepassEntryView::OnEditEntry(){
|
|||||||
|
|
||||||
void KeepassEntryView::OnEditOpenUrl(){
|
void KeepassEntryView::OnEditOpenUrl(){
|
||||||
if (selectedItems().size() == 0) return;
|
if (selectedItems().size() == 0) return;
|
||||||
openBrowser(((EntryViewItem*)selectedItems().first())->text(logicalColIndex(2)));
|
openBrowser( ((EntryViewItem*)selectedItems().first())->EntryHandle );
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassEntryView::OnUsernameToClipboard(){
|
void KeepassEntryView::OnUsernameToClipboard(){
|
||||||
@@ -360,7 +361,6 @@ void KeepassEntryView::showGroup(IGroupHandle* group){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void KeepassEntryView::createItems(QList<IEntryHandle*>& entries){
|
void KeepassEntryView::createItems(QList<IEntryHandle*>& entries){
|
||||||
header()->setSortIndicatorShown(false);
|
|
||||||
for(int i=0;i<entries.size();i++){
|
for(int i=0;i<entries.size();i++){
|
||||||
if(!entries[i]->isValid())continue;
|
if(!entries[i]->isValid())continue;
|
||||||
EntryViewItem* item=new EntryViewItem(this);
|
EntryViewItem* item=new EntryViewItem(this);
|
||||||
@@ -480,6 +480,7 @@ int KeepassEntryView::logicalColIndex(int LstIndex){
|
|||||||
if(i==LstIndex)return c;
|
if(i==LstIndex)return c;
|
||||||
}
|
}
|
||||||
Q_ASSERT(false);
|
Q_ASSERT(false);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassEntryView::resizeColumns(){
|
void KeepassEntryView::resizeColumns(){
|
||||||
@@ -514,8 +515,8 @@ void KeepassEntryView::resizeColumns(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
int KeepassEntryView::columnListIndex(int LogicalIndex){
|
int KeepassEntryView::columnListIndex(int LogicalIndex){
|
||||||
int c=-1; int i=0;
|
int c=-1; int i;
|
||||||
for(i;i<NUM_COLUMNS;i++){
|
for(i=0;i<NUM_COLUMNS;i++){
|
||||||
if(Columns.at(i))c++;
|
if(Columns.at(i))c++;
|
||||||
if(i==10 && Columns.at(10) && ViewMode!=ShowSearchResults)c--;
|
if(i==10 && Columns.at(10) && ViewMode!=ShowSearchResults)c--;
|
||||||
if(c==LogicalIndex)break;
|
if(c==LogicalIndex)break;
|
||||||
@@ -574,8 +575,7 @@ void KeepassEntryView::mouseMoveEvent(QMouseEvent *event){
|
|||||||
mimeData->setData("text/plain;charset=UTF-8",DragItems.first()->text(0).toUtf8());
|
mimeData->setData("text/plain;charset=UTF-8",DragItems.first()->text(0).toUtf8());
|
||||||
mimeData->setData("application/x-keepassx-entry",QByteArray((char*)&pDragItems,sizeof(void*)));
|
mimeData->setData("application/x-keepassx-entry",QByteArray((char*)&pDragItems,sizeof(void*)));
|
||||||
drag->setMimeData(mimeData);
|
drag->setMimeData(mimeData);
|
||||||
drag->setPixmap(DragPixmap);
|
drag->exec(Qt::MoveAction);
|
||||||
drag->start();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -591,11 +591,13 @@ void KeepassEntryView::removeDragItems(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef AUTOTYPE
|
||||||
void KeepassEntryView::OnAutoType(){
|
void KeepassEntryView::OnAutoType(){
|
||||||
if (selectedItems().size() == 0) return;
|
if (selectedItems().size() == 0) return;
|
||||||
QString error;
|
QString error;
|
||||||
AutoType::perform(((EntryViewItem*)selectedItems().first())->EntryHandle,error);
|
AutoType::perform(((EntryViewItem*)selectedItems().first())->EntryHandle,error);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void KeepassEntryView::paintEvent(QPaintEvent * event){
|
void KeepassEntryView::paintEvent(QPaintEvent * event){
|
||||||
QTreeWidget::paintEvent(event);
|
QTreeWidget::paintEvent(event);
|
||||||
@@ -653,8 +655,8 @@ bool EntryViewItem::operator<(const QTreeWidgetItem& other)const{
|
|||||||
|
|
||||||
void KeepassEntryView::setCurrentEntry(IEntryHandle* entry){
|
void KeepassEntryView::setCurrentEntry(IEntryHandle* entry){
|
||||||
bool found=false;
|
bool found=false;
|
||||||
int i=0;
|
int i;
|
||||||
for(i;i<Items.size();i++)
|
for(i=0;i<Items.size();i++)
|
||||||
if(Items.at(i)->EntryHandle==entry){found=true; break;}
|
if(Items.at(i)->EntryHandle==entry){found=true; break;}
|
||||||
if(!found)return;
|
if(!found)return;
|
||||||
setCurrentItem(Items.at(i));
|
setCurrentItem(Items.at(i));
|
||||||
|
|||||||
+2
-1
@@ -65,7 +65,6 @@ class KeepassEntryView:public QTreeWidget{
|
|||||||
bool AutoResizeColumns;
|
bool AutoResizeColumns;
|
||||||
QPoint DragStartPos;
|
QPoint DragStartPos;
|
||||||
QList<QTreeWidgetItem*> DragItems;
|
QList<QTreeWidgetItem*> DragItems;
|
||||||
QPixmap DragPixmap;
|
|
||||||
IGroupHandle* CurrentGroup;
|
IGroupHandle* CurrentGroup;
|
||||||
enum EntryViewMode {Normal, ShowSearchResults};
|
enum EntryViewMode {Normal, ShowSearchResults};
|
||||||
EntryViewMode ViewMode;
|
EntryViewMode ViewMode;
|
||||||
@@ -94,7 +93,9 @@ class KeepassEntryView:public QTreeWidget{
|
|||||||
void OnCloneEntry();
|
void OnCloneEntry();
|
||||||
void OnDeleteEntry();
|
void OnDeleteEntry();
|
||||||
void OnSaveAttachment();
|
void OnSaveAttachment();
|
||||||
|
#ifdef AUTOTYPE
|
||||||
void OnAutoType();
|
void OnAutoType();
|
||||||
|
#endif
|
||||||
void removeDragItems();
|
void removeDragItems();
|
||||||
void OnColumnMoved(int LogIndex,int OldVisIndex,int NewVisIndex);
|
void OnColumnMoved(int LogIndex,int OldVisIndex,int NewVisIndex);
|
||||||
void OnEditOpenUrl();
|
void OnEditOpenUrl();
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ class KpxFileDialogs{
|
|||||||
|
|
||||||
class QtStandardFileDialogs:public QObject,public IFileDialog{
|
class QtStandardFileDialogs:public QObject,public IFileDialog{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
Q_INTERFACES(IFileDialog);
|
||||||
public:
|
public:
|
||||||
QString openExistingFileDialog(QWidget* parent,QString title,QString dir,QStringList Filters,int SelectedFilter);
|
QString openExistingFileDialog(QWidget* parent,QString title,QString dir,QStringList Filters,int SelectedFilter);
|
||||||
QStringList openExistingFilesDialog(QWidget* parent,QString title,QString dir,QStringList Filters,int SelectedFilter);
|
QStringList openExistingFilesDialog(QWidget* parent,QString title,QString dir,QStringList Filters,int SelectedFilter);
|
||||||
|
|||||||
+10
-12
@@ -41,12 +41,10 @@
|
|||||||
#define INSERT_AREA_WIDTH 4
|
#define INSERT_AREA_WIDTH 4
|
||||||
|
|
||||||
KeepassGroupView::KeepassGroupView(QWidget* parent):QTreeWidget(parent){
|
KeepassGroupView::KeepassGroupView(QWidget* parent):QTreeWidget(parent){
|
||||||
|
|
||||||
db=NULL;
|
db=NULL;
|
||||||
setHeaderLabels(QStringList()<<tr("Groups"));
|
|
||||||
ContextMenu=new QMenu(this);
|
ContextMenu=new QMenu(this);
|
||||||
ContextMenuSearchGroup=new QMenu(this);
|
ContextMenuSearchGroup=new QMenu(this);
|
||||||
connect(this,SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),this,SLOT(OnCurrentGroupChanged(QTreeWidgetItem*,QTreeWidgetItem*)));
|
connect(this,SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),this,SLOT(OnCurrentGroupChanged(QTreeWidgetItem*)));
|
||||||
connect(this,SIGNAL(itemExpanded(QTreeWidgetItem*)),this,SLOT(OnItemExpanded(QTreeWidgetItem*)));
|
connect(this,SIGNAL(itemExpanded(QTreeWidgetItem*)),this,SLOT(OnItemExpanded(QTreeWidgetItem*)));
|
||||||
connect(this,SIGNAL(itemCollapsed(QTreeWidgetItem*)),this,SLOT(OnItemCollapsed(QTreeWidgetItem*)));
|
connect(this,SIGNAL(itemCollapsed(QTreeWidgetItem*)),this,SLOT(OnItemCollapsed(QTreeWidgetItem*)));
|
||||||
}
|
}
|
||||||
@@ -167,7 +165,7 @@ void KeepassGroupView::contextMenuEvent(QContextMenuEvent* e){
|
|||||||
ContextMenu->popup(e->globalPos());
|
ContextMenu->popup(e->globalPos());
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassGroupView::OnCurrentGroupChanged(QTreeWidgetItem* cur,QTreeWidgetItem* prev){
|
void KeepassGroupView::OnCurrentGroupChanged(QTreeWidgetItem* cur){
|
||||||
if(cur){
|
if(cur){
|
||||||
if(cur==SearchResultItem)
|
if(cur==SearchResultItem)
|
||||||
emit searchResultsSelected();
|
emit searchResultsSelected();
|
||||||
@@ -181,8 +179,8 @@ void KeepassGroupView::OnCurrentGroupChanged(QTreeWidgetItem* cur,QTreeWidgetIte
|
|||||||
|
|
||||||
void KeepassGroupView::setCurrentGroup(IGroupHandle* group){
|
void KeepassGroupView::setCurrentGroup(IGroupHandle* group){
|
||||||
bool found=false;
|
bool found=false;
|
||||||
int i=0;
|
int i;
|
||||||
for(i;i<Items.size();i++)
|
for(i=0;i<Items.size();i++)
|
||||||
if(Items[i]->GroupHandle==group){found=true; break;}
|
if(Items[i]->GroupHandle==group){found=true; break;}
|
||||||
if(!found)return;
|
if(!found)return;
|
||||||
setCurrentItem(Items[i]);
|
setCurrentItem(Items[i]);
|
||||||
@@ -194,13 +192,13 @@ void KeepassGroupView::dragEnterEvent ( QDragEnterEvent * event ){
|
|||||||
|
|
||||||
if(event->mimeData()->hasFormat("application/x-keepassx-group")){
|
if(event->mimeData()->hasFormat("application/x-keepassx-group")){
|
||||||
DragType=GroupDrag;
|
DragType=GroupDrag;
|
||||||
event->accept();
|
event->acceptProposedAction();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(event->mimeData()->hasFormat("application/x-keepassx-entry")){
|
if(event->mimeData()->hasFormat("application/x-keepassx-entry")){
|
||||||
DragType=EntryDrag;
|
DragType=EntryDrag;
|
||||||
memcpy(&EntryDragItems,event->mimeData()->data("application/x-keepassx-entry").data(),sizeof(void*));
|
memcpy(&EntryDragItems,event->mimeData()->data("application/x-keepassx-entry").data(),sizeof(void*));
|
||||||
event->accept();
|
event->acceptProposedAction();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -371,7 +369,7 @@ void KeepassGroupView::entryDragMoveEvent( QDragMoveEvent * event ){
|
|||||||
Item->setForeground(0,QBrush(QApplication::palette().color(QPalette::HighlightedText)));
|
Item->setForeground(0,QBrush(QApplication::palette().color(QPalette::HighlightedText)));
|
||||||
LastHoverItem=Item;
|
LastHoverItem=Item;
|
||||||
}
|
}
|
||||||
event->accept();
|
event->acceptProposedAction();
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -393,7 +391,7 @@ void KeepassGroupView::dragMoveEvent( QDragMoveEvent * event ){
|
|||||||
InsLinePos=-1;
|
InsLinePos=-1;
|
||||||
viewport()->update(QRegion(0,RemoveLine-2,viewport()->width(),4));
|
viewport()->update(QRegion(0,RemoveLine-2,viewport()->width(),4));
|
||||||
}
|
}
|
||||||
event->accept();
|
event->acceptProposedAction();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(Item==DragItem || Item==SearchResultItem){
|
if(Item==DragItem || Item==SearchResultItem){
|
||||||
@@ -435,7 +433,7 @@ void KeepassGroupView::dragMoveEvent( QDragMoveEvent * event ){
|
|||||||
InsLineStart=ItemRect.x();
|
InsLineStart=ItemRect.x();
|
||||||
viewport()->update(QRegion(0,InsLinePos-2,viewport()->width(),4));
|
viewport()->update(QRegion(0,InsLinePos-2,viewport()->width(),4));
|
||||||
}
|
}
|
||||||
event->accept();
|
event->acceptProposedAction();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -486,7 +484,7 @@ void KeepassGroupView::mouseMoveEvent(QMouseEvent *event){
|
|||||||
mimeData->setData("application/x-keepassx-group",QByteArray());
|
mimeData->setData("application/x-keepassx-group",QByteArray());
|
||||||
drag->setMimeData(mimeData);
|
drag->setMimeData(mimeData);
|
||||||
|
|
||||||
Qt::DropAction dropAction = drag->start(Qt::MoveAction);
|
drag->exec(Qt::MoveAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassGroupView::OnItemExpanded(QTreeWidgetItem* item){
|
void KeepassGroupView::OnItemExpanded(QTreeWidgetItem* item){
|
||||||
|
|||||||
+1
-1
@@ -62,7 +62,7 @@ class KeepassGroupView:public QTreeWidget{
|
|||||||
QList<QTreeWidgetItem*>* EntryDragItems;
|
QList<QTreeWidgetItem*>* EntryDragItems;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void OnCurrentGroupChanged(QTreeWidgetItem*,QTreeWidgetItem*);
|
void OnCurrentGroupChanged(QTreeWidgetItem*);
|
||||||
void OnDeleteGroup();
|
void OnDeleteGroup();
|
||||||
void OnNewGroup();
|
void OnNewGroup();
|
||||||
void OnEditGroup();
|
void OnEditGroup();
|
||||||
|
|||||||
@@ -0,0 +1,899 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2005-2006 by Tarek Saidi, Felix Geyer *
|
||||||
|
* tarek.saidi@arcor.de *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; version 2 of the License. *
|
||||||
|
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "HelperX11.h"
|
||||||
|
|
||||||
|
#include <QX11Info>
|
||||||
|
|
||||||
|
int HelperX11::getModifiers(Display *d,KeySym keysym, int keycode){
|
||||||
|
int SymsPerKey;
|
||||||
|
KeySym* Syms=XGetKeyboardMapping(d,keycode,1,&SymsPerKey);
|
||||||
|
int c=-1;
|
||||||
|
for(int i=0;i<4;i++)
|
||||||
|
if(Syms[i]==keysym){
|
||||||
|
c=i; break;
|
||||||
|
}
|
||||||
|
Q_ASSERT(c!=-1);
|
||||||
|
XFree(Syms);
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HelperX11::pressModifiers(Display* d,int mods,bool press){
|
||||||
|
switch(mods){
|
||||||
|
case 0: //no modifier
|
||||||
|
break;
|
||||||
|
case 1: //Shift
|
||||||
|
XTestFakeKeyEvent(d,XKeysymToKeycode(d,XK_Shift_L),press,2);
|
||||||
|
break;
|
||||||
|
case 2: //AltGr
|
||||||
|
XTestFakeKeyEvent(d,XKeysymToKeycode(d,XK_ISO_Level3_Shift),press,2);
|
||||||
|
break;
|
||||||
|
case 3: //Shift+AltGr
|
||||||
|
XTestFakeKeyEvent(d,XKeysymToKeycode(d,XK_Shift_L),press,2);
|
||||||
|
XTestFakeKeyEvent(d,XKeysymToKeycode(d,XK_ISO_Level3_Shift),press,2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HelperX11::releaseModifiers(Display* d,int mods){
|
||||||
|
pressModifiers(d,mods,False);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
int HelperX11::getShortcutModifierMask(const Shortcut& s){
|
||||||
|
int mod=0;
|
||||||
|
if (s.ctrl) mod |= ControlMask;
|
||||||
|
if (s.shift) mod |= ShiftMask;
|
||||||
|
if (s.alt) mod |= Mod1Mask;
|
||||||
|
if (s.altgr) mod |= Mod5Mask;
|
||||||
|
if (s.win) mod |= Mod4Mask;
|
||||||
|
return mod;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
unsigned int HelperX11::keyboardModifiers(Display* d){
|
||||||
|
Window root, child;
|
||||||
|
int root_x, root_y, x, y;
|
||||||
|
unsigned int mask;
|
||||||
|
XQueryPointer(d, RootWindow(d, DefaultScreen(d)), &root, &child, &root_x, &root_y, &x, &y, &mask);
|
||||||
|
return mask;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HelperX11:: startCatchErrors(){
|
||||||
|
Q_ASSERT(!catchErrors);
|
||||||
|
catchErrors = true;
|
||||||
|
pErrorOccurred = false;
|
||||||
|
oldHandler = XSetErrorHandler(x11ErrorHandler);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HelperX11::stopCatchErrors(){
|
||||||
|
Q_ASSERT(catchErrors);
|
||||||
|
XSync(QX11Info::display(), false);
|
||||||
|
XSetErrorHandler(oldHandler);
|
||||||
|
catchErrors = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int HelperX11::x11ErrorHandler(Display* display, XErrorEvent* error){
|
||||||
|
Q_UNUSED(display)
|
||||||
|
Q_UNUSED(error)
|
||||||
|
if (catchErrors)
|
||||||
|
pErrorOccurred = true;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int (*HelperX11::oldHandler) (Display*, XErrorEvent*) = NULL;
|
||||||
|
bool HelperX11::catchErrors = false;
|
||||||
|
bool HelperX11::pErrorOccurred = false;
|
||||||
|
|
||||||
|
const quint16 HelperX11::KeysymMap[][2] = {
|
||||||
|
{ 0x01a1, 0x0104 }, /* Aogonek Ą LATIN CAPITAL LETTER A WITH OGONEK */
|
||||||
|
{ 0x01a2, 0x02d8 }, /* breve ˘ BREVE */
|
||||||
|
{ 0x01a3, 0x0141 }, /* Lstroke Ł LATIN CAPITAL LETTER L WITH STROKE */
|
||||||
|
{ 0x01a5, 0x013d }, /* Lcaron Ľ LATIN CAPITAL LETTER L WITH CARON */
|
||||||
|
{ 0x01a6, 0x015a }, /* Sacute Ś LATIN CAPITAL LETTER S WITH ACUTE */
|
||||||
|
{ 0x01a9, 0x0160 }, /* Scaron Š LATIN CAPITAL LETTER S WITH CARON */
|
||||||
|
{ 0x01aa, 0x015e }, /* Scedilla Ş LATIN CAPITAL LETTER S WITH CEDILLA */
|
||||||
|
{ 0x01ab, 0x0164 }, /* Tcaron Ť LATIN CAPITAL LETTER T WITH CARON */
|
||||||
|
{ 0x01ac, 0x0179 }, /* Zacute Ź LATIN CAPITAL LETTER Z WITH ACUTE */
|
||||||
|
{ 0x01ae, 0x017d }, /* Zcaron Ž LATIN CAPITAL LETTER Z WITH CARON */
|
||||||
|
{ 0x01af, 0x017b }, /* Zabovedot Ż LATIN CAPITAL LETTER Z WITH DOT ABOVE */
|
||||||
|
{ 0x01b1, 0x0105 }, /* aogonek ą LATIN SMALL LETTER A WITH OGONEK */
|
||||||
|
{ 0x01b2, 0x02db }, /* ogonek ˛ OGONEK */
|
||||||
|
{ 0x01b3, 0x0142 }, /* lstroke ł LATIN SMALL LETTER L WITH STROKE */
|
||||||
|
{ 0x01b5, 0x013e }, /* lcaron ľ LATIN SMALL LETTER L WITH CARON */
|
||||||
|
{ 0x01b6, 0x015b }, /* sacute ś LATIN SMALL LETTER S WITH ACUTE */
|
||||||
|
{ 0x01b7, 0x02c7 }, /* caron ˇ CARON */
|
||||||
|
{ 0x01b9, 0x0161 }, /* scaron š LATIN SMALL LETTER S WITH CARON */
|
||||||
|
{ 0x01ba, 0x015f }, /* scedilla ş LATIN SMALL LETTER S WITH CEDILLA */
|
||||||
|
{ 0x01bb, 0x0165 }, /* tcaron ť LATIN SMALL LETTER T WITH CARON */
|
||||||
|
{ 0x01bc, 0x017a }, /* zacute ź LATIN SMALL LETTER Z WITH ACUTE */
|
||||||
|
{ 0x01bd, 0x02dd }, /* doubleacute ˝ DOUBLE ACUTE ACCENT */
|
||||||
|
{ 0x01be, 0x017e }, /* zcaron ž LATIN SMALL LETTER Z WITH CARON */
|
||||||
|
{ 0x01bf, 0x017c }, /* zabovedot ż LATIN SMALL LETTER Z WITH DOT ABOVE */
|
||||||
|
{ 0x01c0, 0x0154 }, /* Racute Ŕ LATIN CAPITAL LETTER R WITH ACUTE */
|
||||||
|
{ 0x01c3, 0x0102 }, /* Abreve Ă LATIN CAPITAL LETTER A WITH BREVE */
|
||||||
|
{ 0x01c5, 0x0139 }, /* Lacute Ĺ LATIN CAPITAL LETTER L WITH ACUTE */
|
||||||
|
{ 0x01c6, 0x0106 }, /* Cacute Ć LATIN CAPITAL LETTER C WITH ACUTE */
|
||||||
|
{ 0x01c8, 0x010c }, /* Ccaron Č LATIN CAPITAL LETTER C WITH CARON */
|
||||||
|
{ 0x01ca, 0x0118 }, /* Eogonek Ę LATIN CAPITAL LETTER E WITH OGONEK */
|
||||||
|
{ 0x01cc, 0x011a }, /* Ecaron Ě LATIN CAPITAL LETTER E WITH CARON */
|
||||||
|
{ 0x01cf, 0x010e }, /* Dcaron Ď LATIN CAPITAL LETTER D WITH CARON */
|
||||||
|
{ 0x01d0, 0x0110 }, /* Dstroke Đ LATIN CAPITAL LETTER D WITH STROKE */
|
||||||
|
{ 0x01d1, 0x0143 }, /* Nacute Ń LATIN CAPITAL LETTER N WITH ACUTE */
|
||||||
|
{ 0x01d2, 0x0147 }, /* Ncaron Ň LATIN CAPITAL LETTER N WITH CARON */
|
||||||
|
{ 0x01d5, 0x0150 }, /* Odoubleacute Ő LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
|
||||||
|
{ 0x01d8, 0x0158 }, /* Rcaron Ř LATIN CAPITAL LETTER R WITH CARON */
|
||||||
|
{ 0x01d9, 0x016e }, /* Uring Ů LATIN CAPITAL LETTER U WITH RING ABOVE */
|
||||||
|
{ 0x01db, 0x0170 }, /* Udoubleacute Ű LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
|
||||||
|
{ 0x01de, 0x0162 }, /* Tcedilla Ţ LATIN CAPITAL LETTER T WITH CEDILLA */
|
||||||
|
{ 0x01e0, 0x0155 }, /* racute ŕ LATIN SMALL LETTER R WITH ACUTE */
|
||||||
|
{ 0x01e3, 0x0103 }, /* abreve ă LATIN SMALL LETTER A WITH BREVE */
|
||||||
|
{ 0x01e5, 0x013a }, /* lacute ĺ LATIN SMALL LETTER L WITH ACUTE */
|
||||||
|
{ 0x01e6, 0x0107 }, /* cacute ć LATIN SMALL LETTER C WITH ACUTE */
|
||||||
|
{ 0x01e8, 0x010d }, /* ccaron č LATIN SMALL LETTER C WITH CARON */
|
||||||
|
{ 0x01ea, 0x0119 }, /* eogonek ę LATIN SMALL LETTER E WITH OGONEK */
|
||||||
|
{ 0x01ec, 0x011b }, /* ecaron ě LATIN SMALL LETTER E WITH CARON */
|
||||||
|
{ 0x01ef, 0x010f }, /* dcaron ď LATIN SMALL LETTER D WITH CARON */
|
||||||
|
{ 0x01f0, 0x0111 }, /* dstroke đ LATIN SMALL LETTER D WITH STROKE */
|
||||||
|
{ 0x01f1, 0x0144 }, /* nacute ń LATIN SMALL LETTER N WITH ACUTE */
|
||||||
|
{ 0x01f2, 0x0148 }, /* ncaron ň LATIN SMALL LETTER N WITH CARON */
|
||||||
|
{ 0x01f5, 0x0151 }, /* odoubleacute ő LATIN SMALL LETTER O WITH DOUBLE ACUTE */
|
||||||
|
{ 0x01f8, 0x0159 }, /* rcaron ř LATIN SMALL LETTER R WITH CARON */
|
||||||
|
{ 0x01f9, 0x016f }, /* uring ů LATIN SMALL LETTER U WITH RING ABOVE */
|
||||||
|
{ 0x01fb, 0x0171 }, /* udoubleacute ű LATIN SMALL LETTER U WITH DOUBLE ACUTE */
|
||||||
|
{ 0x01fe, 0x0163 }, /* tcedilla ţ LATIN SMALL LETTER T WITH CEDILLA */
|
||||||
|
{ 0x01ff, 0x02d9 }, /* abovedot ˙ DOT ABOVE */
|
||||||
|
{ 0x02a1, 0x0126 }, /* Hstroke Ħ LATIN CAPITAL LETTER H WITH STROKE */
|
||||||
|
{ 0x02a6, 0x0124 }, /* Hcircumflex Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
|
||||||
|
{ 0x02a9, 0x0130 }, /* Iabovedot İ LATIN CAPITAL LETTER I WITH DOT ABOVE */
|
||||||
|
{ 0x02ab, 0x011e }, /* Gbreve Ğ LATIN CAPITAL LETTER G WITH BREVE */
|
||||||
|
{ 0x02ac, 0x0134 }, /* Jcircumflex Ĵ LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
|
||||||
|
{ 0x02b1, 0x0127 }, /* hstroke ħ LATIN SMALL LETTER H WITH STROKE */
|
||||||
|
{ 0x02b6, 0x0125 }, /* hcircumflex ĥ LATIN SMALL LETTER H WITH CIRCUMFLEX */
|
||||||
|
{ 0x02b9, 0x0131 }, /* idotless ı LATIN SMALL LETTER DOTLESS I */
|
||||||
|
{ 0x02bb, 0x011f }, /* gbreve ğ LATIN SMALL LETTER G WITH BREVE */
|
||||||
|
{ 0x02bc, 0x0135 }, /* jcircumflex ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX */
|
||||||
|
{ 0x02c5, 0x010a }, /* Cabovedot Ċ LATIN CAPITAL LETTER C WITH DOT ABOVE */
|
||||||
|
{ 0x02c6, 0x0108 }, /* Ccircumflex Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
|
||||||
|
{ 0x02d5, 0x0120 }, /* Gabovedot Ġ LATIN CAPITAL LETTER G WITH DOT ABOVE */
|
||||||
|
{ 0x02d8, 0x011c }, /* Gcircumflex Ĝ LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
|
||||||
|
{ 0x02dd, 0x016c }, /* Ubreve Ŭ LATIN CAPITAL LETTER U WITH BREVE */
|
||||||
|
{ 0x02de, 0x015c }, /* Scircumflex Ŝ LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
|
||||||
|
{ 0x02e5, 0x010b }, /* cabovedot ċ LATIN SMALL LETTER C WITH DOT ABOVE */
|
||||||
|
{ 0x02e6, 0x0109 }, /* ccircumflex ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX */
|
||||||
|
{ 0x02f5, 0x0121 }, /* gabovedot ġ LATIN SMALL LETTER G WITH DOT ABOVE */
|
||||||
|
{ 0x02f8, 0x011d }, /* gcircumflex ĝ LATIN SMALL LETTER G WITH CIRCUMFLEX */
|
||||||
|
{ 0x02fd, 0x016d }, /* ubreve ŭ LATIN SMALL LETTER U WITH BREVE */
|
||||||
|
{ 0x02fe, 0x015d }, /* scircumflex ŝ LATIN SMALL LETTER S WITH CIRCUMFLEX */
|
||||||
|
{ 0x03a2, 0x0138 }, /* kra ĸ LATIN SMALL LETTER KRA */
|
||||||
|
{ 0x03a3, 0x0156 }, /* Rcedilla Ŗ LATIN CAPITAL LETTER R WITH CEDILLA */
|
||||||
|
{ 0x03a5, 0x0128 }, /* Itilde Ĩ LATIN CAPITAL LETTER I WITH TILDE */
|
||||||
|
{ 0x03a6, 0x013b }, /* Lcedilla Ļ LATIN CAPITAL LETTER L WITH CEDILLA */
|
||||||
|
{ 0x03aa, 0x0112 }, /* Emacron Ē LATIN CAPITAL LETTER E WITH MACRON */
|
||||||
|
{ 0x03ab, 0x0122 }, /* Gcedilla Ģ LATIN CAPITAL LETTER G WITH CEDILLA */
|
||||||
|
{ 0x03ac, 0x0166 }, /* Tslash Ŧ LATIN CAPITAL LETTER T WITH STROKE */
|
||||||
|
{ 0x03b3, 0x0157 }, /* rcedilla ŗ LATIN SMALL LETTER R WITH CEDILLA */
|
||||||
|
{ 0x03b5, 0x0129 }, /* itilde ĩ LATIN SMALL LETTER I WITH TILDE */
|
||||||
|
{ 0x03b6, 0x013c }, /* lcedilla ļ LATIN SMALL LETTER L WITH CEDILLA */
|
||||||
|
{ 0x03ba, 0x0113 }, /* emacron ē LATIN SMALL LETTER E WITH MACRON */
|
||||||
|
{ 0x03bb, 0x0123 }, /* gcedilla ģ LATIN SMALL LETTER G WITH CEDILLA */
|
||||||
|
{ 0x03bc, 0x0167 }, /* tslash ŧ LATIN SMALL LETTER T WITH STROKE */
|
||||||
|
{ 0x03bd, 0x014a }, /* ENG Ŋ LATIN CAPITAL LETTER ENG */
|
||||||
|
{ 0x03bf, 0x014b }, /* eng ŋ LATIN SMALL LETTER ENG */
|
||||||
|
{ 0x03c0, 0x0100 }, /* Amacron Ā LATIN CAPITAL LETTER A WITH MACRON */
|
||||||
|
{ 0x03c7, 0x012e }, /* Iogonek Į LATIN CAPITAL LETTER I WITH OGONEK */
|
||||||
|
{ 0x03cc, 0x0116 }, /* Eabovedot Ė LATIN CAPITAL LETTER E WITH DOT ABOVE */
|
||||||
|
{ 0x03cf, 0x012a }, /* Imacron Ī LATIN CAPITAL LETTER I WITH MACRON */
|
||||||
|
{ 0x03d1, 0x0145 }, /* Ncedilla Ņ LATIN CAPITAL LETTER N WITH CEDILLA */
|
||||||
|
{ 0x03d2, 0x014c }, /* Omacron Ō LATIN CAPITAL LETTER O WITH MACRON */
|
||||||
|
{ 0x03d3, 0x0136 }, /* Kcedilla Ķ LATIN CAPITAL LETTER K WITH CEDILLA */
|
||||||
|
{ 0x03d9, 0x0172 }, /* Uogonek Ų LATIN CAPITAL LETTER U WITH OGONEK */
|
||||||
|
{ 0x03dd, 0x0168 }, /* Utilde Ũ LATIN CAPITAL LETTER U WITH TILDE */
|
||||||
|
{ 0x03de, 0x016a }, /* Umacron Ū LATIN CAPITAL LETTER U WITH MACRON */
|
||||||
|
{ 0x03e0, 0x0101 }, /* amacron ā LATIN SMALL LETTER A WITH MACRON */
|
||||||
|
{ 0x03e7, 0x012f }, /* iogonek į LATIN SMALL LETTER I WITH OGONEK */
|
||||||
|
{ 0x03ec, 0x0117 }, /* eabovedot ė LATIN SMALL LETTER E WITH DOT ABOVE */
|
||||||
|
{ 0x03ef, 0x012b }, /* imacron ī LATIN SMALL LETTER I WITH MACRON */
|
||||||
|
{ 0x03f1, 0x0146 }, /* ncedilla ņ LATIN SMALL LETTER N WITH CEDILLA */
|
||||||
|
{ 0x03f2, 0x014d }, /* omacron ō LATIN SMALL LETTER O WITH MACRON */
|
||||||
|
{ 0x03f3, 0x0137 }, /* kcedilla ķ LATIN SMALL LETTER K WITH CEDILLA */
|
||||||
|
{ 0x03f9, 0x0173 }, /* uogonek ų LATIN SMALL LETTER U WITH OGONEK */
|
||||||
|
{ 0x03fd, 0x0169 }, /* utilde ũ LATIN SMALL LETTER U WITH TILDE */
|
||||||
|
{ 0x03fe, 0x016b }, /* umacron ū LATIN SMALL LETTER U WITH MACRON */
|
||||||
|
{ 0x047e, 0x203e }, /* overline ‾ OVERLINE */
|
||||||
|
{ 0x04a1, 0x3002 }, /* kana_fullstop 。 IDEOGRAPHIC FULL STOP */
|
||||||
|
{ 0x04a2, 0x300c }, /* kana_openingbracket 「 LEFT CORNER BRACKET */
|
||||||
|
{ 0x04a3, 0x300d }, /* kana_closingbracket 」 RIGHT CORNER BRACKET */
|
||||||
|
{ 0x04a4, 0x3001 }, /* kana_comma 、 IDEOGRAPHIC COMMA */
|
||||||
|
{ 0x04a5, 0x30fb }, /* kana_conjunctive ・ KATAKANA MIDDLE DOT */
|
||||||
|
{ 0x04a6, 0x30f2 }, /* kana_WO ヲ KATAKANA LETTER WO */
|
||||||
|
{ 0x04a7, 0x30a1 }, /* kana_a ァ KATAKANA LETTER SMALL A */
|
||||||
|
{ 0x04a8, 0x30a3 }, /* kana_i ィ KATAKANA LETTER SMALL I */
|
||||||
|
{ 0x04a9, 0x30a5 }, /* kana_u ゥ KATAKANA LETTER SMALL U */
|
||||||
|
{ 0x04aa, 0x30a7 }, /* kana_e ェ KATAKANA LETTER SMALL E */
|
||||||
|
{ 0x04ab, 0x30a9 }, /* kana_o ォ KATAKANA LETTER SMALL O */
|
||||||
|
{ 0x04ac, 0x30e3 }, /* kana_ya ャ KATAKANA LETTER SMALL YA */
|
||||||
|
{ 0x04ad, 0x30e5 }, /* kana_yu ュ KATAKANA LETTER SMALL YU */
|
||||||
|
{ 0x04ae, 0x30e7 }, /* kana_yo ョ KATAKANA LETTER SMALL YO */
|
||||||
|
{ 0x04af, 0x30c3 }, /* kana_tsu ッ KATAKANA LETTER SMALL TU */
|
||||||
|
{ 0x04b0, 0x30fc }, /* prolongedsound ー KATAKANA-HIRAGANA PROLONGED SOUND MARK */
|
||||||
|
{ 0x04b1, 0x30a2 }, /* kana_A ア KATAKANA LETTER A */
|
||||||
|
{ 0x04b2, 0x30a4 }, /* kana_I イ KATAKANA LETTER I */
|
||||||
|
{ 0x04b3, 0x30a6 }, /* kana_U ウ KATAKANA LETTER U */
|
||||||
|
{ 0x04b4, 0x30a8 }, /* kana_E エ KATAKANA LETTER E */
|
||||||
|
{ 0x04b5, 0x30aa }, /* kana_O オ KATAKANA LETTER O */
|
||||||
|
{ 0x04b6, 0x30ab }, /* kana_KA カ KATAKANA LETTER KA */
|
||||||
|
{ 0x04b7, 0x30ad }, /* kana_KI キ KATAKANA LETTER KI */
|
||||||
|
{ 0x04b8, 0x30af }, /* kana_KU ク KATAKANA LETTER KU */
|
||||||
|
{ 0x04b9, 0x30b1 }, /* kana_KE ケ KATAKANA LETTER KE */
|
||||||
|
{ 0x04ba, 0x30b3 }, /* kana_KO コ KATAKANA LETTER KO */
|
||||||
|
{ 0x04bb, 0x30b5 }, /* kana_SA サ KATAKANA LETTER SA */
|
||||||
|
{ 0x04bc, 0x30b7 }, /* kana_SHI シ KATAKANA LETTER SI */
|
||||||
|
{ 0x04bd, 0x30b9 }, /* kana_SU ス KATAKANA LETTER SU */
|
||||||
|
{ 0x04be, 0x30bb }, /* kana_SE セ KATAKANA LETTER SE */
|
||||||
|
{ 0x04bf, 0x30bd }, /* kana_SO ソ KATAKANA LETTER SO */
|
||||||
|
{ 0x04c0, 0x30bf }, /* kana_TA タ KATAKANA LETTER TA */
|
||||||
|
{ 0x04c1, 0x30c1 }, /* kana_CHI チ KATAKANA LETTER TI */
|
||||||
|
{ 0x04c2, 0x30c4 }, /* kana_TSU ツ KATAKANA LETTER TU */
|
||||||
|
{ 0x04c3, 0x30c6 }, /* kana_TE テ KATAKANA LETTER TE */
|
||||||
|
{ 0x04c4, 0x30c8 }, /* kana_TO ト KATAKANA LETTER TO */
|
||||||
|
{ 0x04c5, 0x30ca }, /* kana_NA ナ KATAKANA LETTER NA */
|
||||||
|
{ 0x04c6, 0x30cb }, /* kana_NI ニ KATAKANA LETTER NI */
|
||||||
|
{ 0x04c7, 0x30cc }, /* kana_NU ヌ KATAKANA LETTER NU */
|
||||||
|
{ 0x04c8, 0x30cd }, /* kana_NE ネ KATAKANA LETTER NE */
|
||||||
|
{ 0x04c9, 0x30ce }, /* kana_NO ノ KATAKANA LETTER NO */
|
||||||
|
{ 0x04ca, 0x30cf }, /* kana_HA ハ KATAKANA LETTER HA */
|
||||||
|
{ 0x04cb, 0x30d2 }, /* kana_HI ヒ KATAKANA LETTER HI */
|
||||||
|
{ 0x04cc, 0x30d5 }, /* kana_FU フ KATAKANA LETTER HU */
|
||||||
|
{ 0x04cd, 0x30d8 }, /* kana_HE ヘ KATAKANA LETTER HE */
|
||||||
|
{ 0x04ce, 0x30db }, /* kana_HO ホ KATAKANA LETTER HO */
|
||||||
|
{ 0x04cf, 0x30de }, /* kana_MA マ KATAKANA LETTER MA */
|
||||||
|
{ 0x04d0, 0x30df }, /* kana_MI ミ KATAKANA LETTER MI */
|
||||||
|
{ 0x04d1, 0x30e0 }, /* kana_MU ム KATAKANA LETTER MU */
|
||||||
|
{ 0x04d2, 0x30e1 }, /* kana_ME メ KATAKANA LETTER ME */
|
||||||
|
{ 0x04d3, 0x30e2 }, /* kana_MO モ KATAKANA LETTER MO */
|
||||||
|
{ 0x04d4, 0x30e4 }, /* kana_YA ヤ KATAKANA LETTER YA */
|
||||||
|
{ 0x04d5, 0x30e6 }, /* kana_YU ユ KATAKANA LETTER YU */
|
||||||
|
{ 0x04d6, 0x30e8 }, /* kana_YO ヨ KATAKANA LETTER YO */
|
||||||
|
{ 0x04d7, 0x30e9 }, /* kana_RA ラ KATAKANA LETTER RA */
|
||||||
|
{ 0x04d8, 0x30ea }, /* kana_RI リ KATAKANA LETTER RI */
|
||||||
|
{ 0x04d9, 0x30eb }, /* kana_RU ル KATAKANA LETTER RU */
|
||||||
|
{ 0x04da, 0x30ec }, /* kana_RE レ KATAKANA LETTER RE */
|
||||||
|
{ 0x04db, 0x30ed }, /* kana_RO ロ KATAKANA LETTER RO */
|
||||||
|
{ 0x04dc, 0x30ef }, /* kana_WA ワ KATAKANA LETTER WA */
|
||||||
|
{ 0x04dd, 0x30f3 }, /* kana_N ン KATAKANA LETTER N */
|
||||||
|
{ 0x04de, 0x309b }, /* voicedsound ゛ KATAKANA-HIRAGANA VOICED SOUND MARK */
|
||||||
|
{ 0x04df, 0x309c }, /* semivoicedsound ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
|
||||||
|
{ 0x05ac, 0x060c }, /* Arabic_comma ، ARABIC COMMA */
|
||||||
|
{ 0x05bb, 0x061b }, /* Arabic_semicolon ؛ ARABIC SEMICOLON */
|
||||||
|
{ 0x05bf, 0x061f }, /* Arabic_question_mark ؟ ARABIC QUESTION MARK */
|
||||||
|
{ 0x05c1, 0x0621 }, /* Arabic_hamza ء ARABIC LETTER HAMZA */
|
||||||
|
{ 0x05c2, 0x0622 }, /* Arabic_maddaonalef آ ARABIC LETTER ALEF WITH MADDA ABOVE */
|
||||||
|
{ 0x05c3, 0x0623 }, /* Arabic_hamzaonalef أ ARABIC LETTER ALEF WITH HAMZA ABOVE */
|
||||||
|
{ 0x05c4, 0x0624 }, /* Arabic_hamzaonwaw ؤ ARABIC LETTER WAW WITH HAMZA ABOVE */
|
||||||
|
{ 0x05c5, 0x0625 }, /* Arabic_hamzaunderalef إ ARABIC LETTER ALEF WITH HAMZA BELOW */
|
||||||
|
{ 0x05c6, 0x0626 }, /* Arabic_hamzaonyeh ئ ARABIC LETTER YEH WITH HAMZA ABOVE */
|
||||||
|
{ 0x05c7, 0x0627 }, /* Arabic_alef ا ARABIC LETTER ALEF */
|
||||||
|
{ 0x05c8, 0x0628 }, /* Arabic_beh ب ARABIC LETTER BEH */
|
||||||
|
{ 0x05c9, 0x0629 }, /* Arabic_tehmarbuta ة ARABIC LETTER TEH MARBUTA */
|
||||||
|
{ 0x05ca, 0x062a }, /* Arabic_teh ت ARABIC LETTER TEH */
|
||||||
|
{ 0x05cb, 0x062b }, /* Arabic_theh ث ARABIC LETTER THEH */
|
||||||
|
{ 0x05cc, 0x062c }, /* Arabic_jeem ج ARABIC LETTER JEEM */
|
||||||
|
{ 0x05cd, 0x062d }, /* Arabic_hah ح ARABIC LETTER HAH */
|
||||||
|
{ 0x05ce, 0x062e }, /* Arabic_khah خ ARABIC LETTER KHAH */
|
||||||
|
{ 0x05cf, 0x062f }, /* Arabic_dal د ARABIC LETTER DAL */
|
||||||
|
{ 0x05d0, 0x0630 }, /* Arabic_thal ذ ARABIC LETTER THAL */
|
||||||
|
{ 0x05d1, 0x0631 }, /* Arabic_ra ر ARABIC LETTER REH */
|
||||||
|
{ 0x05d2, 0x0632 }, /* Arabic_zain ز ARABIC LETTER ZAIN */
|
||||||
|
{ 0x05d3, 0x0633 }, /* Arabic_seen س ARABIC LETTER SEEN */
|
||||||
|
{ 0x05d4, 0x0634 }, /* Arabic_sheen ش ARABIC LETTER SHEEN */
|
||||||
|
{ 0x05d5, 0x0635 }, /* Arabic_sad ص ARABIC LETTER SAD */
|
||||||
|
{ 0x05d6, 0x0636 }, /* Arabic_dad ض ARABIC LETTER DAD */
|
||||||
|
{ 0x05d7, 0x0637 }, /* Arabic_tah ط ARABIC LETTER TAH */
|
||||||
|
{ 0x05d8, 0x0638 }, /* Arabic_zah ظ ARABIC LETTER ZAH */
|
||||||
|
{ 0x05d9, 0x0639 }, /* Arabic_ain ع ARABIC LETTER AIN */
|
||||||
|
{ 0x05da, 0x063a }, /* Arabic_ghain غ ARABIC LETTER GHAIN */
|
||||||
|
{ 0x05e0, 0x0640 }, /* Arabic_tatweel ـ ARABIC TATWEEL */
|
||||||
|
{ 0x05e1, 0x0641 }, /* Arabic_feh ف ARABIC LETTER FEH */
|
||||||
|
{ 0x05e2, 0x0642 }, /* Arabic_qaf ق ARABIC LETTER QAF */
|
||||||
|
{ 0x05e3, 0x0643 }, /* Arabic_kaf ك ARABIC LETTER KAF */
|
||||||
|
{ 0x05e4, 0x0644 }, /* Arabic_lam ل ARABIC LETTER LAM */
|
||||||
|
{ 0x05e5, 0x0645 }, /* Arabic_meem م ARABIC LETTER MEEM */
|
||||||
|
{ 0x05e6, 0x0646 }, /* Arabic_noon ن ARABIC LETTER NOON */
|
||||||
|
{ 0x05e7, 0x0647 }, /* Arabic_ha ه ARABIC LETTER HEH */
|
||||||
|
{ 0x05e8, 0x0648 }, /* Arabic_waw و ARABIC LETTER WAW */
|
||||||
|
{ 0x05e9, 0x0649 }, /* Arabic_alefmaksura ى ARABIC LETTER ALEF MAKSURA */
|
||||||
|
{ 0x05ea, 0x064a }, /* Arabic_yeh ي ARABIC LETTER YEH */
|
||||||
|
{ 0x05eb, 0x064b }, /* Arabic_fathatan ً ARABIC FATHATAN */
|
||||||
|
{ 0x05ec, 0x064c }, /* Arabic_dammatan ٌ ARABIC DAMMATAN */
|
||||||
|
{ 0x05ed, 0x064d }, /* Arabic_kasratan ٍ ARABIC KASRATAN */
|
||||||
|
{ 0x05ee, 0x064e }, /* Arabic_fatha َ ARABIC FATHA */
|
||||||
|
{ 0x05ef, 0x064f }, /* Arabic_damma ُ ARABIC DAMMA */
|
||||||
|
{ 0x05f0, 0x0650 }, /* Arabic_kasra ِ ARABIC KASRA */
|
||||||
|
{ 0x05f1, 0x0651 }, /* Arabic_shadda ّ ARABIC SHADDA */
|
||||||
|
{ 0x05f2, 0x0652 }, /* Arabic_sukun ْ ARABIC SUKUN */
|
||||||
|
{ 0x06a1, 0x0452 }, /* Serbian_dje ђ CYRILLIC SMALL LETTER DJE */
|
||||||
|
{ 0x06a2, 0x0453 }, /* Macedonia_gje ѓ CYRILLIC SMALL LETTER GJE */
|
||||||
|
{ 0x06a3, 0x0451 }, /* Cyrillic_io ё CYRILLIC SMALL LETTER IO */
|
||||||
|
{ 0x06a4, 0x0454 }, /* Ukrainian_ie є CYRILLIC SMALL LETTER UKRAINIAN IE */
|
||||||
|
{ 0x06a5, 0x0455 }, /* Macedonia_dse ѕ CYRILLIC SMALL LETTER DZE */
|
||||||
|
{ 0x06a6, 0x0456 }, /* Ukrainian_i і CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
|
||||||
|
{ 0x06a7, 0x0457 }, /* Ukrainian_yi ї CYRILLIC SMALL LETTER YI */
|
||||||
|
{ 0x06a8, 0x0458 }, /* Cyrillic_je ј CYRILLIC SMALL LETTER JE */
|
||||||
|
{ 0x06a9, 0x0459 }, /* Cyrillic_lje љ CYRILLIC SMALL LETTER LJE */
|
||||||
|
{ 0x06aa, 0x045a }, /* Cyrillic_nje њ CYRILLIC SMALL LETTER NJE */
|
||||||
|
{ 0x06ab, 0x045b }, /* Serbian_tshe ћ CYRILLIC SMALL LETTER TSHE */
|
||||||
|
{ 0x06ac, 0x045c }, /* Macedonia_kje ќ CYRILLIC SMALL LETTER KJE */
|
||||||
|
{ 0x06ae, 0x045e }, /* Byelorussian_shortu ў CYRILLIC SMALL LETTER SHORT U */
|
||||||
|
{ 0x06af, 0x045f }, /* Cyrillic_dzhe џ CYRILLIC SMALL LETTER DZHE */
|
||||||
|
{ 0x06b0, 0x2116 }, /* numerosign № NUMERO SIGN */
|
||||||
|
{ 0x06b1, 0x0402 }, /* Serbian_DJE Ђ CYRILLIC CAPITAL LETTER DJE */
|
||||||
|
{ 0x06b2, 0x0403 }, /* Macedonia_GJE Ѓ CYRILLIC CAPITAL LETTER GJE */
|
||||||
|
{ 0x06b3, 0x0401 }, /* Cyrillic_IO Ё CYRILLIC CAPITAL LETTER IO */
|
||||||
|
{ 0x06b4, 0x0404 }, /* Ukrainian_IE Є CYRILLIC CAPITAL LETTER UKRAINIAN IE */
|
||||||
|
{ 0x06b5, 0x0405 }, /* Macedonia_DSE Ѕ CYRILLIC CAPITAL LETTER DZE */
|
||||||
|
{ 0x06b6, 0x0406 }, /* Ukrainian_I І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
|
||||||
|
{ 0x06b7, 0x0407 }, /* Ukrainian_YI Ї CYRILLIC CAPITAL LETTER YI */
|
||||||
|
{ 0x06b8, 0x0408 }, /* Cyrillic_JE Ј CYRILLIC CAPITAL LETTER JE */
|
||||||
|
{ 0x06b9, 0x0409 }, /* Cyrillic_LJE Љ CYRILLIC CAPITAL LETTER LJE */
|
||||||
|
{ 0x06ba, 0x040a }, /* Cyrillic_NJE Њ CYRILLIC CAPITAL LETTER NJE */
|
||||||
|
{ 0x06bb, 0x040b }, /* Serbian_TSHE Ћ CYRILLIC CAPITAL LETTER TSHE */
|
||||||
|
{ 0x06bc, 0x040c }, /* Macedonia_KJE Ќ CYRILLIC CAPITAL LETTER KJE */
|
||||||
|
{ 0x06be, 0x040e }, /* Byelorussian_SHORTU Ў CYRILLIC CAPITAL LETTER SHORT U */
|
||||||
|
{ 0x06bf, 0x040f }, /* Cyrillic_DZHE Џ CYRILLIC CAPITAL LETTER DZHE */
|
||||||
|
{ 0x06c0, 0x044e }, /* Cyrillic_yu ю CYRILLIC SMALL LETTER YU */
|
||||||
|
{ 0x06c1, 0x0430 }, /* Cyrillic_a а CYRILLIC SMALL LETTER A */
|
||||||
|
{ 0x06c2, 0x0431 }, /* Cyrillic_be б CYRILLIC SMALL LETTER BE */
|
||||||
|
{ 0x06c3, 0x0446 }, /* Cyrillic_tse ц CYRILLIC SMALL LETTER TSE */
|
||||||
|
{ 0x06c4, 0x0434 }, /* Cyrillic_de д CYRILLIC SMALL LETTER DE */
|
||||||
|
{ 0x06c5, 0x0435 }, /* Cyrillic_ie е CYRILLIC SMALL LETTER IE */
|
||||||
|
{ 0x06c6, 0x0444 }, /* Cyrillic_ef ф CYRILLIC SMALL LETTER EF */
|
||||||
|
{ 0x06c7, 0x0433 }, /* Cyrillic_ghe г CYRILLIC SMALL LETTER GHE */
|
||||||
|
{ 0x06c8, 0x0445 }, /* Cyrillic_ha х CYRILLIC SMALL LETTER HA */
|
||||||
|
{ 0x06c9, 0x0438 }, /* Cyrillic_i и CYRILLIC SMALL LETTER I */
|
||||||
|
{ 0x06ca, 0x0439 }, /* Cyrillic_shorti й CYRILLIC SMALL LETTER SHORT I */
|
||||||
|
{ 0x06cb, 0x043a }, /* Cyrillic_ka к CYRILLIC SMALL LETTER KA */
|
||||||
|
{ 0x06cc, 0x043b }, /* Cyrillic_el л CYRILLIC SMALL LETTER EL */
|
||||||
|
{ 0x06cd, 0x043c }, /* Cyrillic_em м CYRILLIC SMALL LETTER EM */
|
||||||
|
{ 0x06ce, 0x043d }, /* Cyrillic_en н CYRILLIC SMALL LETTER EN */
|
||||||
|
{ 0x06cf, 0x043e }, /* Cyrillic_o о CYRILLIC SMALL LETTER O */
|
||||||
|
{ 0x06d0, 0x043f }, /* Cyrillic_pe п CYRILLIC SMALL LETTER PE */
|
||||||
|
{ 0x06d1, 0x044f }, /* Cyrillic_ya я CYRILLIC SMALL LETTER YA */
|
||||||
|
{ 0x06d2, 0x0440 }, /* Cyrillic_er р CYRILLIC SMALL LETTER ER */
|
||||||
|
{ 0x06d3, 0x0441 }, /* Cyrillic_es с CYRILLIC SMALL LETTER ES */
|
||||||
|
{ 0x06d4, 0x0442 }, /* Cyrillic_te т CYRILLIC SMALL LETTER TE */
|
||||||
|
{ 0x06d5, 0x0443 }, /* Cyrillic_u у CYRILLIC SMALL LETTER U */
|
||||||
|
{ 0x06d6, 0x0436 }, /* Cyrillic_zhe ж CYRILLIC SMALL LETTER ZHE */
|
||||||
|
{ 0x06d7, 0x0432 }, /* Cyrillic_ve в CYRILLIC SMALL LETTER VE */
|
||||||
|
{ 0x06d8, 0x044c }, /* Cyrillic_softsign ь CYRILLIC SMALL LETTER SOFT SIGN */
|
||||||
|
{ 0x06d9, 0x044b }, /* Cyrillic_yeru ы CYRILLIC SMALL LETTER YERU */
|
||||||
|
{ 0x06da, 0x0437 }, /* Cyrillic_ze з CYRILLIC SMALL LETTER ZE */
|
||||||
|
{ 0x06db, 0x0448 }, /* Cyrillic_sha ш CYRILLIC SMALL LETTER SHA */
|
||||||
|
{ 0x06dc, 0x044d }, /* Cyrillic_e э CYRILLIC SMALL LETTER E */
|
||||||
|
{ 0x06dd, 0x0449 }, /* Cyrillic_shcha щ CYRILLIC SMALL LETTER SHCHA */
|
||||||
|
{ 0x06de, 0x0447 }, /* Cyrillic_che ч CYRILLIC SMALL LETTER CHE */
|
||||||
|
{ 0x06df, 0x044a }, /* Cyrillic_hardsign ъ CYRILLIC SMALL LETTER HARD SIGN */
|
||||||
|
{ 0x06e0, 0x042e }, /* Cyrillic_YU Ю CYRILLIC CAPITAL LETTER YU */
|
||||||
|
{ 0x06e1, 0x0410 }, /* Cyrillic_A А CYRILLIC CAPITAL LETTER A */
|
||||||
|
{ 0x06e2, 0x0411 }, /* Cyrillic_BE Б CYRILLIC CAPITAL LETTER BE */
|
||||||
|
{ 0x06e3, 0x0426 }, /* Cyrillic_TSE Ц CYRILLIC CAPITAL LETTER TSE */
|
||||||
|
{ 0x06e4, 0x0414 }, /* Cyrillic_DE Д CYRILLIC CAPITAL LETTER DE */
|
||||||
|
{ 0x06e5, 0x0415 }, /* Cyrillic_IE Е CYRILLIC CAPITAL LETTER IE */
|
||||||
|
{ 0x06e6, 0x0424 }, /* Cyrillic_EF Ф CYRILLIC CAPITAL LETTER EF */
|
||||||
|
{ 0x06e7, 0x0413 }, /* Cyrillic_GHE Г CYRILLIC CAPITAL LETTER GHE */
|
||||||
|
{ 0x06e8, 0x0425 }, /* Cyrillic_HA Х CYRILLIC CAPITAL LETTER HA */
|
||||||
|
{ 0x06e9, 0x0418 }, /* Cyrillic_I И CYRILLIC CAPITAL LETTER I */
|
||||||
|
{ 0x06ea, 0x0419 }, /* Cyrillic_SHORTI Й CYRILLIC CAPITAL LETTER SHORT I */
|
||||||
|
{ 0x06eb, 0x041a }, /* Cyrillic_KA К CYRILLIC CAPITAL LETTER KA */
|
||||||
|
{ 0x06ec, 0x041b }, /* Cyrillic_EL Л CYRILLIC CAPITAL LETTER EL */
|
||||||
|
{ 0x06ed, 0x041c }, /* Cyrillic_EM М CYRILLIC CAPITAL LETTER EM */
|
||||||
|
{ 0x06ee, 0x041d }, /* Cyrillic_EN Н CYRILLIC CAPITAL LETTER EN */
|
||||||
|
{ 0x06ef, 0x041e }, /* Cyrillic_O О CYRILLIC CAPITAL LETTER O */
|
||||||
|
{ 0x06f0, 0x041f }, /* Cyrillic_PE П CYRILLIC CAPITAL LETTER PE */
|
||||||
|
{ 0x06f1, 0x042f }, /* Cyrillic_YA Я CYRILLIC CAPITAL LETTER YA */
|
||||||
|
{ 0x06f2, 0x0420 }, /* Cyrillic_ER Р CYRILLIC CAPITAL LETTER ER */
|
||||||
|
{ 0x06f3, 0x0421 }, /* Cyrillic_ES С CYRILLIC CAPITAL LETTER ES */
|
||||||
|
{ 0x06f4, 0x0422 }, /* Cyrillic_TE Т CYRILLIC CAPITAL LETTER TE */
|
||||||
|
{ 0x06f5, 0x0423 }, /* Cyrillic_U У CYRILLIC CAPITAL LETTER U */
|
||||||
|
{ 0x06f6, 0x0416 }, /* Cyrillic_ZHE Ж CYRILLIC CAPITAL LETTER ZHE */
|
||||||
|
{ 0x06f7, 0x0412 }, /* Cyrillic_VE В CYRILLIC CAPITAL LETTER VE */
|
||||||
|
{ 0x06f8, 0x042c }, /* Cyrillic_SOFTSIGN Ь CYRILLIC CAPITAL LETTER SOFT SIGN */
|
||||||
|
{ 0x06f9, 0x042b }, /* Cyrillic_YERU Ы CYRILLIC CAPITAL LETTER YERU */
|
||||||
|
{ 0x06fa, 0x0417 }, /* Cyrillic_ZE З CYRILLIC CAPITAL LETTER ZE */
|
||||||
|
{ 0x06fb, 0x0428 }, /* Cyrillic_SHA Ш CYRILLIC CAPITAL LETTER SHA */
|
||||||
|
{ 0x06fc, 0x042d }, /* Cyrillic_E Э CYRILLIC CAPITAL LETTER E */
|
||||||
|
{ 0x06fd, 0x0429 }, /* Cyrillic_SHCHA Щ CYRILLIC CAPITAL LETTER SHCHA */
|
||||||
|
{ 0x06fe, 0x0427 }, /* Cyrillic_CHE Ч CYRILLIC CAPITAL LETTER CHE */
|
||||||
|
{ 0x06ff, 0x042a }, /* Cyrillic_HARDSIGN Ъ CYRILLIC CAPITAL LETTER HARD SIGN */
|
||||||
|
{ 0x07a1, 0x0386 }, /* Greek_ALPHAaccent Ά GREEK CAPITAL LETTER ALPHA WITH TONOS */
|
||||||
|
{ 0x07a2, 0x0388 }, /* Greek_EPSILONaccent Έ GREEK CAPITAL LETTER EPSILON WITH TONOS */
|
||||||
|
{ 0x07a3, 0x0389 }, /* Greek_ETAaccent Ή GREEK CAPITAL LETTER ETA WITH TONOS */
|
||||||
|
{ 0x07a4, 0x038a }, /* Greek_IOTAaccent Ί GREEK CAPITAL LETTER IOTA WITH TONOS */
|
||||||
|
{ 0x07a5, 0x03aa }, /* Greek_IOTAdiaeresis Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
|
||||||
|
{ 0x07a7, 0x038c }, /* Greek_OMICRONaccent Ό GREEK CAPITAL LETTER OMICRON WITH TONOS */
|
||||||
|
{ 0x07a8, 0x038e }, /* Greek_UPSILONaccent Ύ GREEK CAPITAL LETTER UPSILON WITH TONOS */
|
||||||
|
{ 0x07a9, 0x03ab }, /* Greek_UPSILONdieresis Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
|
||||||
|
{ 0x07ab, 0x038f }, /* Greek_OMEGAaccent Ώ GREEK CAPITAL LETTER OMEGA WITH TONOS */
|
||||||
|
{ 0x07ae, 0x0385 }, /* Greek_accentdieresis ΅ GREEK DIALYTIKA TONOS */
|
||||||
|
{ 0x07af, 0x2015 }, /* Greek_horizbar ― HORIZONTAL BAR */
|
||||||
|
{ 0x07b1, 0x03ac }, /* Greek_alphaaccent ά GREEK SMALL LETTER ALPHA WITH TONOS */
|
||||||
|
{ 0x07b2, 0x03ad }, /* Greek_epsilonaccent έ GREEK SMALL LETTER EPSILON WITH TONOS */
|
||||||
|
{ 0x07b3, 0x03ae }, /* Greek_etaaccent ή GREEK SMALL LETTER ETA WITH TONOS */
|
||||||
|
{ 0x07b4, 0x03af }, /* Greek_iotaaccent ί GREEK SMALL LETTER IOTA WITH TONOS */
|
||||||
|
{ 0x07b5, 0x03ca }, /* Greek_iotadieresis ϊ GREEK SMALL LETTER IOTA WITH DIALYTIKA */
|
||||||
|
{ 0x07b6, 0x0390 }, /* Greek_iotaaccentdieresis ΐ GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
|
||||||
|
{ 0x07b7, 0x03cc }, /* Greek_omicronaccent ό GREEK SMALL LETTER OMICRON WITH TONOS */
|
||||||
|
{ 0x07b8, 0x03cd }, /* Greek_upsilonaccent ύ GREEK SMALL LETTER UPSILON WITH TONOS */
|
||||||
|
{ 0x07b9, 0x03cb }, /* Greek_upsilondieresis ϋ GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
|
||||||
|
{ 0x07ba, 0x03b0 }, /* Greek_upsilonaccentdieresis ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
|
||||||
|
{ 0x07bb, 0x03ce }, /* Greek_omegaaccent ώ GREEK SMALL LETTER OMEGA WITH TONOS */
|
||||||
|
{ 0x07c1, 0x0391 }, /* Greek_ALPHA Α GREEK CAPITAL LETTER ALPHA */
|
||||||
|
{ 0x07c2, 0x0392 }, /* Greek_BETA Β GREEK CAPITAL LETTER BETA */
|
||||||
|
{ 0x07c3, 0x0393 }, /* Greek_GAMMA Γ GREEK CAPITAL LETTER GAMMA */
|
||||||
|
{ 0x07c4, 0x0394 }, /* Greek_DELTA Δ GREEK CAPITAL LETTER DELTA */
|
||||||
|
{ 0x07c5, 0x0395 }, /* Greek_EPSILON Ε GREEK CAPITAL LETTER EPSILON */
|
||||||
|
{ 0x07c6, 0x0396 }, /* Greek_ZETA Ζ GREEK CAPITAL LETTER ZETA */
|
||||||
|
{ 0x07c7, 0x0397 }, /* Greek_ETA Η GREEK CAPITAL LETTER ETA */
|
||||||
|
{ 0x07c8, 0x0398 }, /* Greek_THETA Θ GREEK CAPITAL LETTER THETA */
|
||||||
|
{ 0x07c9, 0x0399 }, /* Greek_IOTA Ι GREEK CAPITAL LETTER IOTA */
|
||||||
|
{ 0x07ca, 0x039a }, /* Greek_KAPPA Κ GREEK CAPITAL LETTER KAPPA */
|
||||||
|
{ 0x07cb, 0x039b }, /* Greek_LAMBDA Λ GREEK CAPITAL LETTER LAMDA */
|
||||||
|
{ 0x07cc, 0x039c }, /* Greek_MU Μ GREEK CAPITAL LETTER MU */
|
||||||
|
{ 0x07cd, 0x039d }, /* Greek_NU Ν GREEK CAPITAL LETTER NU */
|
||||||
|
{ 0x07ce, 0x039e }, /* Greek_XI Ξ GREEK CAPITAL LETTER XI */
|
||||||
|
{ 0x07cf, 0x039f }, /* Greek_OMICRON Ο GREEK CAPITAL LETTER OMICRON */
|
||||||
|
{ 0x07d0, 0x03a0 }, /* Greek_PI Π GREEK CAPITAL LETTER PI */
|
||||||
|
{ 0x07d1, 0x03a1 }, /* Greek_RHO Ρ GREEK CAPITAL LETTER RHO */
|
||||||
|
{ 0x07d2, 0x03a3 }, /* Greek_SIGMA Σ GREEK CAPITAL LETTER SIGMA */
|
||||||
|
{ 0x07d4, 0x03a4 }, /* Greek_TAU Τ GREEK CAPITAL LETTER TAU */
|
||||||
|
{ 0x07d5, 0x03a5 }, /* Greek_UPSILON Υ GREEK CAPITAL LETTER UPSILON */
|
||||||
|
{ 0x07d6, 0x03a6 }, /* Greek_PHI Φ GREEK CAPITAL LETTER PHI */
|
||||||
|
{ 0x07d7, 0x03a7 }, /* Greek_CHI Χ GREEK CAPITAL LETTER CHI */
|
||||||
|
{ 0x07d8, 0x03a8 }, /* Greek_PSI Ψ GREEK CAPITAL LETTER PSI */
|
||||||
|
{ 0x07d9, 0x03a9 }, /* Greek_OMEGA Ω GREEK CAPITAL LETTER OMEGA */
|
||||||
|
{ 0x07e1, 0x03b1 }, /* Greek_alpha α GREEK SMALL LETTER ALPHA */
|
||||||
|
{ 0x07e2, 0x03b2 }, /* Greek_beta β GREEK SMALL LETTER BETA */
|
||||||
|
{ 0x07e3, 0x03b3 }, /* Greek_gamma γ GREEK SMALL LETTER GAMMA */
|
||||||
|
{ 0x07e4, 0x03b4 }, /* Greek_delta δ GREEK SMALL LETTER DELTA */
|
||||||
|
{ 0x07e5, 0x03b5 }, /* Greek_epsilon ε GREEK SMALL LETTER EPSILON */
|
||||||
|
{ 0x07e6, 0x03b6 }, /* Greek_zeta ζ GREEK SMALL LETTER ZETA */
|
||||||
|
{ 0x07e7, 0x03b7 }, /* Greek_eta η GREEK SMALL LETTER ETA */
|
||||||
|
{ 0x07e8, 0x03b8 }, /* Greek_theta θ GREEK SMALL LETTER THETA */
|
||||||
|
{ 0x07e9, 0x03b9 }, /* Greek_iota ι GREEK SMALL LETTER IOTA */
|
||||||
|
{ 0x07ea, 0x03ba }, /* Greek_kappa κ GREEK SMALL LETTER KAPPA */
|
||||||
|
{ 0x07eb, 0x03bb }, /* Greek_lambda λ GREEK SMALL LETTER LAMDA */
|
||||||
|
{ 0x07ec, 0x03bc }, /* Greek_mu μ GREEK SMALL LETTER MU */
|
||||||
|
{ 0x07ed, 0x03bd }, /* Greek_nu ν GREEK SMALL LETTER NU */
|
||||||
|
{ 0x07ee, 0x03be }, /* Greek_xi ξ GREEK SMALL LETTER XI */
|
||||||
|
{ 0x07ef, 0x03bf }, /* Greek_omicron ο GREEK SMALL LETTER OMICRON */
|
||||||
|
{ 0x07f0, 0x03c0 }, /* Greek_pi π GREEK SMALL LETTER PI */
|
||||||
|
{ 0x07f1, 0x03c1 }, /* Greek_rho ρ GREEK SMALL LETTER RHO */
|
||||||
|
{ 0x07f2, 0x03c3 }, /* Greek_sigma σ GREEK SMALL LETTER SIGMA */
|
||||||
|
{ 0x07f3, 0x03c2 }, /* Greek_finalsmallsigma ς GREEK SMALL LETTER FINAL SIGMA */
|
||||||
|
{ 0x07f4, 0x03c4 }, /* Greek_tau τ GREEK SMALL LETTER TAU */
|
||||||
|
{ 0x07f5, 0x03c5 }, /* Greek_upsilon υ GREEK SMALL LETTER UPSILON */
|
||||||
|
{ 0x07f6, 0x03c6 }, /* Greek_phi φ GREEK SMALL LETTER PHI */
|
||||||
|
{ 0x07f7, 0x03c7 }, /* Greek_chi χ GREEK SMALL LETTER CHI */
|
||||||
|
{ 0x07f8, 0x03c8 }, /* Greek_psi ψ GREEK SMALL LETTER PSI */
|
||||||
|
{ 0x07f9, 0x03c9 }, /* Greek_omega ω GREEK SMALL LETTER OMEGA */
|
||||||
|
{ 0x08a1, 0x23b7 }, /* leftradical ⎷ ??? */
|
||||||
|
{ 0x08a2, 0x250c }, /* topleftradical ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */
|
||||||
|
{ 0x08a3, 0x2500 }, /* horizconnector ─ BOX DRAWINGS LIGHT HORIZONTAL */
|
||||||
|
{ 0x08a4, 0x2320 }, /* topintegral ⌠ TOP HALF INTEGRAL */
|
||||||
|
{ 0x08a5, 0x2321 }, /* botintegral ⌡ BOTTOM HALF INTEGRAL */
|
||||||
|
{ 0x08a6, 0x2502 }, /* vertconnector │ BOX DRAWINGS LIGHT VERTICAL */
|
||||||
|
{ 0x08a7, 0x23a1 }, /* topleftsqbracket ⎡ ??? */
|
||||||
|
{ 0x08a8, 0x23a3 }, /* botleftsqbracket ⎣ ??? */
|
||||||
|
{ 0x08a9, 0x23a4 }, /* toprightsqbracket ⎤ ??? */
|
||||||
|
{ 0x08aa, 0x23a6 }, /* botrightsqbracket ⎦ ??? */
|
||||||
|
{ 0x08ab, 0x239b }, /* topleftparens ⎛ ??? */
|
||||||
|
{ 0x08ac, 0x239d }, /* botleftparens ⎝ ??? */
|
||||||
|
{ 0x08ad, 0x239e }, /* toprightparens ⎞ ??? */
|
||||||
|
{ 0x08ae, 0x23a0 }, /* botrightparens ⎠ ??? */
|
||||||
|
{ 0x08af, 0x23a8 }, /* leftmiddlecurlybrace ⎨ ??? */
|
||||||
|
{ 0x08b0, 0x23ac }, /* rightmiddlecurlybrace ⎬ ??? */
|
||||||
|
/* 0x08b1 topleftsummation ? ??? */
|
||||||
|
/* 0x08b2 botleftsummation ? ??? */
|
||||||
|
/* 0x08b3 topvertsummationconnector ? ??? */
|
||||||
|
/* 0x08b4 botvertsummationconnector ? ??? */
|
||||||
|
/* 0x08b5 toprightsummation ? ??? */
|
||||||
|
/* 0x08b6 botrightsummation ? ??? */
|
||||||
|
/* 0x08b7 rightmiddlesummation ? ??? */
|
||||||
|
{ 0x08bc, 0x2264 }, /* lessthanequal ≤ LESS-THAN OR EQUAL TO */
|
||||||
|
{ 0x08bd, 0x2260 }, /* notequal ≠ NOT EQUAL TO */
|
||||||
|
{ 0x08be, 0x2265 }, /* greaterthanequal ≥ GREATER-THAN OR EQUAL TO */
|
||||||
|
{ 0x08bf, 0x222b }, /* integral ∫ INTEGRAL */
|
||||||
|
{ 0x08c0, 0x2234 }, /* therefore ∴ THEREFORE */
|
||||||
|
{ 0x08c1, 0x221d }, /* variation ∝ PROPORTIONAL TO */
|
||||||
|
{ 0x08c2, 0x221e }, /* infinity ∞ INFINITY */
|
||||||
|
{ 0x08c5, 0x2207 }, /* nabla ∇ NABLA */
|
||||||
|
{ 0x08c8, 0x223c }, /* approximate ∼ TILDE OPERATOR */
|
||||||
|
{ 0x08c9, 0x2243 }, /* similarequal ≃ ASYMPTOTICALLY EQUAL TO */
|
||||||
|
{ 0x08cd, 0x21d4 }, /* ifonlyif ⇔ LEFT RIGHT DOUBLE ARROW */
|
||||||
|
{ 0x08ce, 0x21d2 }, /* implies ⇒ RIGHTWARDS DOUBLE ARROW */
|
||||||
|
{ 0x08cf, 0x2261 }, /* identical ≡ IDENTICAL TO */
|
||||||
|
{ 0x08d6, 0x221a }, /* radical √ SQUARE ROOT */
|
||||||
|
{ 0x08da, 0x2282 }, /* includedin ⊂ SUBSET OF */
|
||||||
|
{ 0x08db, 0x2283 }, /* includes ⊃ SUPERSET OF */
|
||||||
|
{ 0x08dc, 0x2229 }, /* intersection ∩ INTERSECTION */
|
||||||
|
{ 0x08dd, 0x222a }, /* union ∪ UNION */
|
||||||
|
{ 0x08de, 0x2227 }, /* logicaland ∧ LOGICAL AND */
|
||||||
|
{ 0x08df, 0x2228 }, /* logicalor ∨ LOGICAL OR */
|
||||||
|
{ 0x08ef, 0x2202 }, /* partialderivative ∂ PARTIAL DIFFERENTIAL */
|
||||||
|
{ 0x08f6, 0x0192 }, /* function ƒ LATIN SMALL LETTER F WITH HOOK */
|
||||||
|
{ 0x08fb, 0x2190 }, /* leftarrow ← LEFTWARDS ARROW */
|
||||||
|
{ 0x08fc, 0x2191 }, /* uparrow ↑ UPWARDS ARROW */
|
||||||
|
{ 0x08fd, 0x2192 }, /* rightarrow → RIGHTWARDS ARROW */
|
||||||
|
{ 0x08fe, 0x2193 }, /* downarrow ↓ DOWNWARDS ARROW */
|
||||||
|
/* 0x09df blank ? ??? */
|
||||||
|
{ 0x09e0, 0x25c6 }, /* soliddiamond ◆ BLACK DIAMOND */
|
||||||
|
{ 0x09e1, 0x2592 }, /* checkerboard ▒ MEDIUM SHADE */
|
||||||
|
{ 0x09e2, 0x2409 }, /* ht ␉ SYMBOL FOR HORIZONTAL TABULATION */
|
||||||
|
{ 0x09e3, 0x240c }, /* ff ␌ SYMBOL FOR FORM FEED */
|
||||||
|
{ 0x09e4, 0x240d }, /* cr ␍ SYMBOL FOR CARRIAGE RETURN */
|
||||||
|
{ 0x09e5, 0x240a }, /* lf ␊ SYMBOL FOR LINE FEED */
|
||||||
|
{ 0x09e8, 0x2424 }, /* nl  SYMBOL FOR NEWLINE */
|
||||||
|
{ 0x09e9, 0x240b }, /* vt ␋ SYMBOL FOR VERTICAL TABULATION */
|
||||||
|
{ 0x09ea, 0x2518 }, /* lowrightcorner ┘ BOX DRAWINGS LIGHT UP AND LEFT */
|
||||||
|
{ 0x09eb, 0x2510 }, /* uprightcorner ┐ BOX DRAWINGS LIGHT DOWN AND LEFT */
|
||||||
|
{ 0x09ec, 0x250c }, /* upleftcorner ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT */
|
||||||
|
{ 0x09ed, 0x2514 }, /* lowleftcorner └ BOX DRAWINGS LIGHT UP AND RIGHT */
|
||||||
|
{ 0x09ee, 0x253c }, /* crossinglines ┼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
|
||||||
|
{ 0x09ef, 0x23ba }, /* horizlinescan1 ⎺ HORIZONTAL SCAN LINE-1 (Unicode 3.2 draft) */
|
||||||
|
{ 0x09f0, 0x23bb }, /* horizlinescan3 ⎻ HORIZONTAL SCAN LINE-3 (Unicode 3.2 draft) */
|
||||||
|
{ 0x09f1, 0x2500 }, /* horizlinescan5 ─ BOX DRAWINGS LIGHT HORIZONTAL */
|
||||||
|
{ 0x09f2, 0x23bc }, /* horizlinescan7 ⎼ HORIZONTAL SCAN LINE-7 (Unicode 3.2 draft) */
|
||||||
|
{ 0x09f3, 0x23bd }, /* horizlinescan9 ⎽ HORIZONTAL SCAN LINE-9 (Unicode 3.2 draft) */
|
||||||
|
{ 0x09f4, 0x251c }, /* leftt ├ BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
|
||||||
|
{ 0x09f5, 0x2524 }, /* rightt ┤ BOX DRAWINGS LIGHT VERTICAL AND LEFT */
|
||||||
|
{ 0x09f6, 0x2534 }, /* bott ┴ BOX DRAWINGS LIGHT UP AND HORIZONTAL */
|
||||||
|
{ 0x09f7, 0x252c }, /* topt ┬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
|
||||||
|
{ 0x09f8, 0x2502 }, /* vertbar │ BOX DRAWINGS LIGHT VERTICAL */
|
||||||
|
{ 0x0aa1, 0x2003 }, /* emspace EM SPACE */
|
||||||
|
{ 0x0aa2, 0x2002 }, /* enspace EN SPACE */
|
||||||
|
{ 0x0aa3, 0x2004 }, /* em3space THREE-PER-EM SPACE */
|
||||||
|
{ 0x0aa4, 0x2005 }, /* em4space FOUR-PER-EM SPACE */
|
||||||
|
{ 0x0aa5, 0x2007 }, /* digitspace FIGURE SPACE */
|
||||||
|
{ 0x0aa6, 0x2008 }, /* punctspace PUNCTUATION SPACE */
|
||||||
|
{ 0x0aa7, 0x2009 }, /* thinspace THIN SPACE */
|
||||||
|
{ 0x0aa8, 0x200a }, /* hairspace HAIR SPACE */
|
||||||
|
{ 0x0aa9, 0x2014 }, /* emdash — EM DASH */
|
||||||
|
{ 0x0aaa, 0x2013 }, /* endash – EN DASH */
|
||||||
|
/* 0x0aac signifblank ? ??? */
|
||||||
|
{ 0x0aae, 0x2026 }, /* ellipsis … HORIZONTAL ELLIPSIS */
|
||||||
|
{ 0x0aaf, 0x2025 }, /* doubbaselinedot ‥ TWO DOT LEADER */
|
||||||
|
{ 0x0ab0, 0x2153 }, /* onethird ⅓ VULGAR FRACTION ONE THIRD */
|
||||||
|
{ 0x0ab1, 0x2154 }, /* twothirds ⅔ VULGAR FRACTION TWO THIRDS */
|
||||||
|
{ 0x0ab2, 0x2155 }, /* onefifth ⅕ VULGAR FRACTION ONE FIFTH */
|
||||||
|
{ 0x0ab3, 0x2156 }, /* twofifths ⅖ VULGAR FRACTION TWO FIFTHS */
|
||||||
|
{ 0x0ab4, 0x2157 }, /* threefifths ⅗ VULGAR FRACTION THREE FIFTHS */
|
||||||
|
{ 0x0ab5, 0x2158 }, /* fourfifths ⅘ VULGAR FRACTION FOUR FIFTHS */
|
||||||
|
{ 0x0ab6, 0x2159 }, /* onesixth ⅙ VULGAR FRACTION ONE SIXTH */
|
||||||
|
{ 0x0ab7, 0x215a }, /* fivesixths ⅚ VULGAR FRACTION FIVE SIXTHS */
|
||||||
|
{ 0x0ab8, 0x2105 }, /* careof ℅ CARE OF */
|
||||||
|
{ 0x0abb, 0x2012 }, /* figdash ‒ FIGURE DASH */
|
||||||
|
{ 0x0abc, 0x2329 }, /* leftanglebracket 〈 LEFT-POINTING ANGLE BRACKET */
|
||||||
|
/* 0x0abd decimalpoint ? ??? */
|
||||||
|
{ 0x0abe, 0x232a }, /* rightanglebracket 〉 RIGHT-POINTING ANGLE BRACKET */
|
||||||
|
/* 0x0abf marker ? ??? */
|
||||||
|
{ 0x0ac3, 0x215b }, /* oneeighth ⅛ VULGAR FRACTION ONE EIGHTH */
|
||||||
|
{ 0x0ac4, 0x215c }, /* threeeighths ⅜ VULGAR FRACTION THREE EIGHTHS */
|
||||||
|
{ 0x0ac5, 0x215d }, /* fiveeighths ⅝ VULGAR FRACTION FIVE EIGHTHS */
|
||||||
|
{ 0x0ac6, 0x215e }, /* seveneighths ⅞ VULGAR FRACTION SEVEN EIGHTHS */
|
||||||
|
{ 0x0ac9, 0x2122 }, /* trademark ™ TRADE MARK SIGN */
|
||||||
|
{ 0x0aca, 0x2613 }, /* signaturemark ☓ SALTIRE */
|
||||||
|
/* 0x0acb trademarkincircle ? ??? */
|
||||||
|
{ 0x0acc, 0x25c1 }, /* leftopentriangle ◁ WHITE LEFT-POINTING TRIANGLE */
|
||||||
|
{ 0x0acd, 0x25b7 }, /* rightopentriangle ▷ WHITE RIGHT-POINTING TRIANGLE */
|
||||||
|
{ 0x0ace, 0x25cb }, /* emopencircle ○ WHITE CIRCLE */
|
||||||
|
{ 0x0acf, 0x25af }, /* emopenrectangle ▯ WHITE VERTICAL RECTANGLE */
|
||||||
|
{ 0x0ad0, 0x2018 }, /* leftsinglequotemark ‘ LEFT SINGLE QUOTATION MARK */
|
||||||
|
{ 0x0ad1, 0x2019 }, /* rightsinglequotemark ’ RIGHT SINGLE QUOTATION MARK */
|
||||||
|
{ 0x0ad2, 0x201c }, /* leftdoublequotemark “ LEFT DOUBLE QUOTATION MARK */
|
||||||
|
{ 0x0ad3, 0x201d }, /* rightdoublequotemark ” RIGHT DOUBLE QUOTATION MARK */
|
||||||
|
{ 0x0ad4, 0x211e }, /* prescription ℞ PRESCRIPTION TAKE */
|
||||||
|
{ 0x0ad6, 0x2032 }, /* minutes ′ PRIME */
|
||||||
|
{ 0x0ad7, 0x2033 }, /* seconds ″ DOUBLE PRIME */
|
||||||
|
{ 0x0ad9, 0x271d }, /* latincross ✝ LATIN CROSS */
|
||||||
|
/* 0x0ada hexagram ? ??? */
|
||||||
|
{ 0x0adb, 0x25ac }, /* filledrectbullet ▬ BLACK RECTANGLE */
|
||||||
|
{ 0x0adc, 0x25c0 }, /* filledlefttribullet ◀ BLACK LEFT-POINTING TRIANGLE */
|
||||||
|
{ 0x0add, 0x25b6 }, /* filledrighttribullet ▶ BLACK RIGHT-POINTING TRIANGLE */
|
||||||
|
{ 0x0ade, 0x25cf }, /* emfilledcircle ● BLACK CIRCLE */
|
||||||
|
{ 0x0adf, 0x25ae }, /* emfilledrect ▮ BLACK VERTICAL RECTANGLE */
|
||||||
|
{ 0x0ae0, 0x25e6 }, /* enopencircbullet ◦ WHITE BULLET */
|
||||||
|
{ 0x0ae1, 0x25ab }, /* enopensquarebullet ▫ WHITE SMALL SQUARE */
|
||||||
|
{ 0x0ae2, 0x25ad }, /* openrectbullet ▭ WHITE RECTANGLE */
|
||||||
|
{ 0x0ae3, 0x25b3 }, /* opentribulletup △ WHITE UP-POINTING TRIANGLE */
|
||||||
|
{ 0x0ae4, 0x25bd }, /* opentribulletdown ▽ WHITE DOWN-POINTING TRIANGLE */
|
||||||
|
{ 0x0ae5, 0x2606 }, /* openstar ☆ WHITE STAR */
|
||||||
|
{ 0x0ae6, 0x2022 }, /* enfilledcircbullet • BULLET */
|
||||||
|
{ 0x0ae7, 0x25aa }, /* enfilledsqbullet ▪ BLACK SMALL SQUARE */
|
||||||
|
{ 0x0ae8, 0x25b2 }, /* filledtribulletup ▲ BLACK UP-POINTING TRIANGLE */
|
||||||
|
{ 0x0ae9, 0x25bc }, /* filledtribulletdown ▼ BLACK DOWN-POINTING TRIANGLE */
|
||||||
|
{ 0x0aea, 0x261c }, /* leftpointer ☜ WHITE LEFT POINTING INDEX */
|
||||||
|
{ 0x0aeb, 0x261e }, /* rightpointer ☞ WHITE RIGHT POINTING INDEX */
|
||||||
|
{ 0x0aec, 0x2663 }, /* club ♣ BLACK CLUB SUIT */
|
||||||
|
{ 0x0aed, 0x2666 }, /* diamond ♦ BLACK DIAMOND SUIT */
|
||||||
|
{ 0x0aee, 0x2665 }, /* heart ♥ BLACK HEART SUIT */
|
||||||
|
{ 0x0af0, 0x2720 }, /* maltesecross ✠ MALTESE CROSS */
|
||||||
|
{ 0x0af1, 0x2020 }, /* dagger † DAGGER */
|
||||||
|
{ 0x0af2, 0x2021 }, /* doubledagger ‡ DOUBLE DAGGER */
|
||||||
|
{ 0x0af3, 0x2713 }, /* checkmark ✓ CHECK MARK */
|
||||||
|
{ 0x0af4, 0x2717 }, /* ballotcross ✗ BALLOT X */
|
||||||
|
{ 0x0af5, 0x266f }, /* musicalsharp ♯ MUSIC SHARP SIGN */
|
||||||
|
{ 0x0af6, 0x266d }, /* musicalflat ♭ MUSIC FLAT SIGN */
|
||||||
|
{ 0x0af7, 0x2642 }, /* malesymbol ♂ MALE SIGN */
|
||||||
|
{ 0x0af8, 0x2640 }, /* femalesymbol ♀ FEMALE SIGN */
|
||||||
|
{ 0x0af9, 0x260e }, /* telephone ☎ BLACK TELEPHONE */
|
||||||
|
{ 0x0afa, 0x2315 }, /* telephonerecorder ⌕ TELEPHONE RECORDER */
|
||||||
|
{ 0x0afb, 0x2117 }, /* phonographcopyright ℗ SOUND RECORDING COPYRIGHT */
|
||||||
|
{ 0x0afc, 0x2038 }, /* caret ‸ CARET */
|
||||||
|
{ 0x0afd, 0x201a }, /* singlelowquotemark ‚ SINGLE LOW-9 QUOTATION MARK */
|
||||||
|
{ 0x0afe, 0x201e }, /* doublelowquotemark „ DOUBLE LOW-9 QUOTATION MARK */
|
||||||
|
/* 0x0aff cursor ? ??? */
|
||||||
|
{ 0x0ba3, 0x003c }, /* leftcaret < LESS-THAN SIGN */
|
||||||
|
{ 0x0ba6, 0x003e }, /* rightcaret > GREATER-THAN SIGN */
|
||||||
|
{ 0x0ba8, 0x2228 }, /* downcaret ∨ LOGICAL OR */
|
||||||
|
{ 0x0ba9, 0x2227 }, /* upcaret ∧ LOGICAL AND */
|
||||||
|
{ 0x0bc0, 0x00af }, /* overbar ¯ MACRON */
|
||||||
|
{ 0x0bc2, 0x22a5 }, /* downtack ⊥ UP TACK */
|
||||||
|
{ 0x0bc3, 0x2229 }, /* upshoe ∩ INTERSECTION */
|
||||||
|
{ 0x0bc4, 0x230a }, /* downstile ⌊ LEFT FLOOR */
|
||||||
|
{ 0x0bc6, 0x005f }, /* underbar _ LOW LINE */
|
||||||
|
{ 0x0bca, 0x2218 }, /* jot ∘ RING OPERATOR */
|
||||||
|
{ 0x0bcc, 0x2395 }, /* quad ⎕ APL FUNCTIONAL SYMBOL QUAD */
|
||||||
|
{ 0x0bce, 0x22a4 }, /* uptack ⊤ DOWN TACK */
|
||||||
|
{ 0x0bcf, 0x25cb }, /* circle ○ WHITE CIRCLE */
|
||||||
|
{ 0x0bd3, 0x2308 }, /* upstile ⌈ LEFT CEILING */
|
||||||
|
{ 0x0bd6, 0x222a }, /* downshoe ∪ UNION */
|
||||||
|
{ 0x0bd8, 0x2283 }, /* rightshoe ⊃ SUPERSET OF */
|
||||||
|
{ 0x0bda, 0x2282 }, /* leftshoe ⊂ SUBSET OF */
|
||||||
|
{ 0x0bdc, 0x22a2 }, /* lefttack ⊢ RIGHT TACK */
|
||||||
|
{ 0x0bfc, 0x22a3 }, /* righttack ⊣ LEFT TACK */
|
||||||
|
{ 0x0cdf, 0x2017 }, /* hebrew_doublelowline ‗ DOUBLE LOW LINE */
|
||||||
|
{ 0x0ce0, 0x05d0 }, /* hebrew_aleph א HEBREW LETTER ALEF */
|
||||||
|
{ 0x0ce1, 0x05d1 }, /* hebrew_bet ב HEBREW LETTER BET */
|
||||||
|
{ 0x0ce2, 0x05d2 }, /* hebrew_gimel ג HEBREW LETTER GIMEL */
|
||||||
|
{ 0x0ce3, 0x05d3 }, /* hebrew_dalet ד HEBREW LETTER DALET */
|
||||||
|
{ 0x0ce4, 0x05d4 }, /* hebrew_he ה HEBREW LETTER HE */
|
||||||
|
{ 0x0ce5, 0x05d5 }, /* hebrew_waw ו HEBREW LETTER VAV */
|
||||||
|
{ 0x0ce6, 0x05d6 }, /* hebrew_zain ז HEBREW LETTER ZAYIN */
|
||||||
|
{ 0x0ce7, 0x05d7 }, /* hebrew_chet ח HEBREW LETTER HET */
|
||||||
|
{ 0x0ce8, 0x05d8 }, /* hebrew_tet ט HEBREW LETTER TET */
|
||||||
|
{ 0x0ce9, 0x05d9 }, /* hebrew_yod י HEBREW LETTER YOD */
|
||||||
|
{ 0x0cea, 0x05da }, /* hebrew_finalkaph ך HEBREW LETTER FINAL KAF */
|
||||||
|
{ 0x0ceb, 0x05db }, /* hebrew_kaph כ HEBREW LETTER KAF */
|
||||||
|
{ 0x0cec, 0x05dc }, /* hebrew_lamed ל HEBREW LETTER LAMED */
|
||||||
|
{ 0x0ced, 0x05dd }, /* hebrew_finalmem ם HEBREW LETTER FINAL MEM */
|
||||||
|
{ 0x0cee, 0x05de }, /* hebrew_mem מ HEBREW LETTER MEM */
|
||||||
|
{ 0x0cef, 0x05df }, /* hebrew_finalnun ן HEBREW LETTER FINAL NUN */
|
||||||
|
{ 0x0cf0, 0x05e0 }, /* hebrew_nun נ HEBREW LETTER NUN */
|
||||||
|
{ 0x0cf1, 0x05e1 }, /* hebrew_samech ס HEBREW LETTER SAMEKH */
|
||||||
|
{ 0x0cf2, 0x05e2 }, /* hebrew_ayin ע HEBREW LETTER AYIN */
|
||||||
|
{ 0x0cf3, 0x05e3 }, /* hebrew_finalpe ף HEBREW LETTER FINAL PE */
|
||||||
|
{ 0x0cf4, 0x05e4 }, /* hebrew_pe פ HEBREW LETTER PE */
|
||||||
|
{ 0x0cf5, 0x05e5 }, /* hebrew_finalzade ץ HEBREW LETTER FINAL TSADI */
|
||||||
|
{ 0x0cf6, 0x05e6 }, /* hebrew_zade צ HEBREW LETTER TSADI */
|
||||||
|
{ 0x0cf7, 0x05e7 }, /* hebrew_qoph ק HEBREW LETTER QOF */
|
||||||
|
{ 0x0cf8, 0x05e8 }, /* hebrew_resh ר HEBREW LETTER RESH */
|
||||||
|
{ 0x0cf9, 0x05e9 }, /* hebrew_shin ש HEBREW LETTER SHIN */
|
||||||
|
{ 0x0cfa, 0x05ea }, /* hebrew_taw ת HEBREW LETTER TAV */
|
||||||
|
{ 0x0da1, 0x0e01 }, /* Thai_kokai ก THAI CHARACTER KO KAI */
|
||||||
|
{ 0x0da2, 0x0e02 }, /* Thai_khokhai ข THAI CHARACTER KHO KHAI */
|
||||||
|
{ 0x0da3, 0x0e03 }, /* Thai_khokhuat ฃ THAI CHARACTER KHO KHUAT */
|
||||||
|
{ 0x0da4, 0x0e04 }, /* Thai_khokhwai ค THAI CHARACTER KHO KHWAI */
|
||||||
|
{ 0x0da5, 0x0e05 }, /* Thai_khokhon ฅ THAI CHARACTER KHO KHON */
|
||||||
|
{ 0x0da6, 0x0e06 }, /* Thai_khorakhang ฆ THAI CHARACTER KHO RAKHANG */
|
||||||
|
{ 0x0da7, 0x0e07 }, /* Thai_ngongu ง THAI CHARACTER NGO NGU */
|
||||||
|
{ 0x0da8, 0x0e08 }, /* Thai_chochan จ THAI CHARACTER CHO CHAN */
|
||||||
|
{ 0x0da9, 0x0e09 }, /* Thai_choching ฉ THAI CHARACTER CHO CHING */
|
||||||
|
{ 0x0daa, 0x0e0a }, /* Thai_chochang ช THAI CHARACTER CHO CHANG */
|
||||||
|
{ 0x0dab, 0x0e0b }, /* Thai_soso ซ THAI CHARACTER SO SO */
|
||||||
|
{ 0x0dac, 0x0e0c }, /* Thai_chochoe ฌ THAI CHARACTER CHO CHOE */
|
||||||
|
{ 0x0dad, 0x0e0d }, /* Thai_yoying ญ THAI CHARACTER YO YING */
|
||||||
|
{ 0x0dae, 0x0e0e }, /* Thai_dochada ฎ THAI CHARACTER DO CHADA */
|
||||||
|
{ 0x0daf, 0x0e0f }, /* Thai_topatak ฏ THAI CHARACTER TO PATAK */
|
||||||
|
{ 0x0db0, 0x0e10 }, /* Thai_thothan ฐ THAI CHARACTER THO THAN */
|
||||||
|
{ 0x0db1, 0x0e11 }, /* Thai_thonangmontho ฑ THAI CHARACTER THO NANGMONTHO */
|
||||||
|
{ 0x0db2, 0x0e12 }, /* Thai_thophuthao ฒ THAI CHARACTER THO PHUTHAO */
|
||||||
|
{ 0x0db3, 0x0e13 }, /* Thai_nonen ณ THAI CHARACTER NO NEN */
|
||||||
|
{ 0x0db4, 0x0e14 }, /* Thai_dodek ด THAI CHARACTER DO DEK */
|
||||||
|
{ 0x0db5, 0x0e15 }, /* Thai_totao ต THAI CHARACTER TO TAO */
|
||||||
|
{ 0x0db6, 0x0e16 }, /* Thai_thothung ถ THAI CHARACTER THO THUNG */
|
||||||
|
{ 0x0db7, 0x0e17 }, /* Thai_thothahan ท THAI CHARACTER THO THAHAN */
|
||||||
|
{ 0x0db8, 0x0e18 }, /* Thai_thothong ธ THAI CHARACTER THO THONG */
|
||||||
|
{ 0x0db9, 0x0e19 }, /* Thai_nonu น THAI CHARACTER NO NU */
|
||||||
|
{ 0x0dba, 0x0e1a }, /* Thai_bobaimai บ THAI CHARACTER BO BAIMAI */
|
||||||
|
{ 0x0dbb, 0x0e1b }, /* Thai_popla ป THAI CHARACTER PO PLA */
|
||||||
|
{ 0x0dbc, 0x0e1c }, /* Thai_phophung ผ THAI CHARACTER PHO PHUNG */
|
||||||
|
{ 0x0dbd, 0x0e1d }, /* Thai_fofa ฝ THAI CHARACTER FO FA */
|
||||||
|
{ 0x0dbe, 0x0e1e }, /* Thai_phophan พ THAI CHARACTER PHO PHAN */
|
||||||
|
{ 0x0dbf, 0x0e1f }, /* Thai_fofan ฟ THAI CHARACTER FO FAN */
|
||||||
|
{ 0x0dc0, 0x0e20 }, /* Thai_phosamphao ภ THAI CHARACTER PHO SAMPHAO */
|
||||||
|
{ 0x0dc1, 0x0e21 }, /* Thai_moma ม THAI CHARACTER MO MA */
|
||||||
|
{ 0x0dc2, 0x0e22 }, /* Thai_yoyak ย THAI CHARACTER YO YAK */
|
||||||
|
{ 0x0dc3, 0x0e23 }, /* Thai_rorua ร THAI CHARACTER RO RUA */
|
||||||
|
{ 0x0dc4, 0x0e24 }, /* Thai_ru ฤ THAI CHARACTER RU */
|
||||||
|
{ 0x0dc5, 0x0e25 }, /* Thai_loling ล THAI CHARACTER LO LING */
|
||||||
|
{ 0x0dc6, 0x0e26 }, /* Thai_lu ฦ THAI CHARACTER LU */
|
||||||
|
{ 0x0dc7, 0x0e27 }, /* Thai_wowaen ว THAI CHARACTER WO WAEN */
|
||||||
|
{ 0x0dc8, 0x0e28 }, /* Thai_sosala ศ THAI CHARACTER SO SALA */
|
||||||
|
{ 0x0dc9, 0x0e29 }, /* Thai_sorusi ษ THAI CHARACTER SO RUSI */
|
||||||
|
{ 0x0dca, 0x0e2a }, /* Thai_sosua ส THAI CHARACTER SO SUA */
|
||||||
|
{ 0x0dcb, 0x0e2b }, /* Thai_hohip ห THAI CHARACTER HO HIP */
|
||||||
|
{ 0x0dcc, 0x0e2c }, /* Thai_lochula ฬ THAI CHARACTER LO CHULA */
|
||||||
|
{ 0x0dcd, 0x0e2d }, /* Thai_oang อ THAI CHARACTER O ANG */
|
||||||
|
{ 0x0dce, 0x0e2e }, /* Thai_honokhuk ฮ THAI CHARACTER HO NOKHUK */
|
||||||
|
{ 0x0dcf, 0x0e2f }, /* Thai_paiyannoi ฯ THAI CHARACTER PAIYANNOI */
|
||||||
|
{ 0x0dd0, 0x0e30 }, /* Thai_saraa ะ THAI CHARACTER SARA A */
|
||||||
|
{ 0x0dd1, 0x0e31 }, /* Thai_maihanakat ั THAI CHARACTER MAI HAN-AKAT */
|
||||||
|
{ 0x0dd2, 0x0e32 }, /* Thai_saraaa า THAI CHARACTER SARA AA */
|
||||||
|
{ 0x0dd3, 0x0e33 }, /* Thai_saraam ำ THAI CHARACTER SARA AM */
|
||||||
|
{ 0x0dd4, 0x0e34 }, /* Thai_sarai ิ THAI CHARACTER SARA I */
|
||||||
|
{ 0x0dd5, 0x0e35 }, /* Thai_saraii ี THAI CHARACTER SARA II */
|
||||||
|
{ 0x0dd6, 0x0e36 }, /* Thai_saraue ึ THAI CHARACTER SARA UE */
|
||||||
|
{ 0x0dd7, 0x0e37 }, /* Thai_sarauee ื THAI CHARACTER SARA UEE */
|
||||||
|
{ 0x0dd8, 0x0e38 }, /* Thai_sarau ุ THAI CHARACTER SARA U */
|
||||||
|
{ 0x0dd9, 0x0e39 }, /* Thai_sarauu ู THAI CHARACTER SARA UU */
|
||||||
|
{ 0x0dda, 0x0e3a }, /* Thai_phinthu ฺ THAI CHARACTER PHINTHU */
|
||||||
|
/* 0x0dde Thai_maihanakat_maitho ? ??? */
|
||||||
|
{ 0x0ddf, 0x0e3f }, /* Thai_baht ฿ THAI CURRENCY SYMBOL BAHT */
|
||||||
|
{ 0x0de0, 0x0e40 }, /* Thai_sarae เ THAI CHARACTER SARA E */
|
||||||
|
{ 0x0de1, 0x0e41 }, /* Thai_saraae แ THAI CHARACTER SARA AE */
|
||||||
|
{ 0x0de2, 0x0e42 }, /* Thai_sarao โ THAI CHARACTER SARA O */
|
||||||
|
{ 0x0de3, 0x0e43 }, /* Thai_saraaimaimuan ใ THAI CHARACTER SARA AI MAIMUAN */
|
||||||
|
{ 0x0de4, 0x0e44 }, /* Thai_saraaimaimalai ไ THAI CHARACTER SARA AI MAIMALAI */
|
||||||
|
{ 0x0de5, 0x0e45 }, /* Thai_lakkhangyao ๅ THAI CHARACTER LAKKHANGYAO */
|
||||||
|
{ 0x0de6, 0x0e46 }, /* Thai_maiyamok ๆ THAI CHARACTER MAIYAMOK */
|
||||||
|
{ 0x0de7, 0x0e47 }, /* Thai_maitaikhu ็ THAI CHARACTER MAITAIKHU */
|
||||||
|
{ 0x0de8, 0x0e48 }, /* Thai_maiek ่ THAI CHARACTER MAI EK */
|
||||||
|
{ 0x0de9, 0x0e49 }, /* Thai_maitho ้ THAI CHARACTER MAI THO */
|
||||||
|
{ 0x0dea, 0x0e4a }, /* Thai_maitri ๊ THAI CHARACTER MAI TRI */
|
||||||
|
{ 0x0deb, 0x0e4b }, /* Thai_maichattawa ๋ THAI CHARACTER MAI CHATTAWA */
|
||||||
|
{ 0x0dec, 0x0e4c }, /* Thai_thanthakhat ์ THAI CHARACTER THANTHAKHAT */
|
||||||
|
{ 0x0ded, 0x0e4d }, /* Thai_nikhahit ํ THAI CHARACTER NIKHAHIT */
|
||||||
|
{ 0x0df0, 0x0e50 }, /* Thai_leksun ๐ THAI DIGIT ZERO */
|
||||||
|
{ 0x0df1, 0x0e51 }, /* Thai_leknung ๑ THAI DIGIT ONE */
|
||||||
|
{ 0x0df2, 0x0e52 }, /* Thai_leksong ๒ THAI DIGIT TWO */
|
||||||
|
{ 0x0df3, 0x0e53 }, /* Thai_leksam ๓ THAI DIGIT THREE */
|
||||||
|
{ 0x0df4, 0x0e54 }, /* Thai_leksi ๔ THAI DIGIT FOUR */
|
||||||
|
{ 0x0df5, 0x0e55 }, /* Thai_lekha ๕ THAI DIGIT FIVE */
|
||||||
|
{ 0x0df6, 0x0e56 }, /* Thai_lekhok ๖ THAI DIGIT SIX */
|
||||||
|
{ 0x0df7, 0x0e57 }, /* Thai_lekchet ๗ THAI DIGIT SEVEN */
|
||||||
|
{ 0x0df8, 0x0e58 }, /* Thai_lekpaet ๘ THAI DIGIT EIGHT */
|
||||||
|
{ 0x0df9, 0x0e59 }, /* Thai_lekkao ๙ THAI DIGIT NINE */
|
||||||
|
{ 0x0ea1, 0x3131 }, /* Hangul_Kiyeog ㄱ HANGUL LETTER KIYEOK */
|
||||||
|
{ 0x0ea2, 0x3132 }, /* Hangul_SsangKiyeog ㄲ HANGUL LETTER SSANGKIYEOK */
|
||||||
|
{ 0x0ea3, 0x3133 }, /* Hangul_KiyeogSios ㄳ HANGUL LETTER KIYEOK-SIOS */
|
||||||
|
{ 0x0ea4, 0x3134 }, /* Hangul_Nieun ㄴ HANGUL LETTER NIEUN */
|
||||||
|
{ 0x0ea5, 0x3135 }, /* Hangul_NieunJieuj ㄵ HANGUL LETTER NIEUN-CIEUC */
|
||||||
|
{ 0x0ea6, 0x3136 }, /* Hangul_NieunHieuh ㄶ HANGUL LETTER NIEUN-HIEUH */
|
||||||
|
{ 0x0ea7, 0x3137 }, /* Hangul_Dikeud ㄷ HANGUL LETTER TIKEUT */
|
||||||
|
{ 0x0ea8, 0x3138 }, /* Hangul_SsangDikeud ㄸ HANGUL LETTER SSANGTIKEUT */
|
||||||
|
{ 0x0ea9, 0x3139 }, /* Hangul_Rieul ㄹ HANGUL LETTER RIEUL */
|
||||||
|
{ 0x0eaa, 0x313a }, /* Hangul_RieulKiyeog ㄺ HANGUL LETTER RIEUL-KIYEOK */
|
||||||
|
{ 0x0eab, 0x313b }, /* Hangul_RieulMieum ㄻ HANGUL LETTER RIEUL-MIEUM */
|
||||||
|
{ 0x0eac, 0x313c }, /* Hangul_RieulPieub ㄼ HANGUL LETTER RIEUL-PIEUP */
|
||||||
|
{ 0x0ead, 0x313d }, /* Hangul_RieulSios ㄽ HANGUL LETTER RIEUL-SIOS */
|
||||||
|
{ 0x0eae, 0x313e }, /* Hangul_RieulTieut ㄾ HANGUL LETTER RIEUL-THIEUTH */
|
||||||
|
{ 0x0eaf, 0x313f }, /* Hangul_RieulPhieuf ㄿ HANGUL LETTER RIEUL-PHIEUPH */
|
||||||
|
{ 0x0eb0, 0x3140 }, /* Hangul_RieulHieuh ㅀ HANGUL LETTER RIEUL-HIEUH */
|
||||||
|
{ 0x0eb1, 0x3141 }, /* Hangul_Mieum ㅁ HANGUL LETTER MIEUM */
|
||||||
|
{ 0x0eb2, 0x3142 }, /* Hangul_Pieub ㅂ HANGUL LETTER PIEUP */
|
||||||
|
{ 0x0eb3, 0x3143 }, /* Hangul_SsangPieub ㅃ HANGUL LETTER SSANGPIEUP */
|
||||||
|
{ 0x0eb4, 0x3144 }, /* Hangul_PieubSios ㅄ HANGUL LETTER PIEUP-SIOS */
|
||||||
|
{ 0x0eb5, 0x3145 }, /* Hangul_Sios ㅅ HANGUL LETTER SIOS */
|
||||||
|
{ 0x0eb6, 0x3146 }, /* Hangul_SsangSios ㅆ HANGUL LETTER SSANGSIOS */
|
||||||
|
{ 0x0eb7, 0x3147 }, /* Hangul_Ieung ㅇ HANGUL LETTER IEUNG */
|
||||||
|
{ 0x0eb8, 0x3148 }, /* Hangul_Jieuj ㅈ HANGUL LETTER CIEUC */
|
||||||
|
{ 0x0eb9, 0x3149 }, /* Hangul_SsangJieuj ㅉ HANGUL LETTER SSANGCIEUC */
|
||||||
|
{ 0x0eba, 0x314a }, /* Hangul_Cieuc ㅊ HANGUL LETTER CHIEUCH */
|
||||||
|
{ 0x0ebb, 0x314b }, /* Hangul_Khieuq ㅋ HANGUL LETTER KHIEUKH */
|
||||||
|
{ 0x0ebc, 0x314c }, /* Hangul_Tieut ㅌ HANGUL LETTER THIEUTH */
|
||||||
|
{ 0x0ebd, 0x314d }, /* Hangul_Phieuf ㅍ HANGUL LETTER PHIEUPH */
|
||||||
|
{ 0x0ebe, 0x314e }, /* Hangul_Hieuh ㅎ HANGUL LETTER HIEUH */
|
||||||
|
{ 0x0ebf, 0x314f }, /* Hangul_A ㅏ HANGUL LETTER A */
|
||||||
|
{ 0x0ec0, 0x3150 }, /* Hangul_AE ㅐ HANGUL LETTER AE */
|
||||||
|
{ 0x0ec1, 0x3151 }, /* Hangul_YA ㅑ HANGUL LETTER YA */
|
||||||
|
{ 0x0ec2, 0x3152 }, /* Hangul_YAE ㅒ HANGUL LETTER YAE */
|
||||||
|
{ 0x0ec3, 0x3153 }, /* Hangul_EO ㅓ HANGUL LETTER EO */
|
||||||
|
{ 0x0ec4, 0x3154 }, /* Hangul_E ㅔ HANGUL LETTER E */
|
||||||
|
{ 0x0ec5, 0x3155 }, /* Hangul_YEO ㅕ HANGUL LETTER YEO */
|
||||||
|
{ 0x0ec6, 0x3156 }, /* Hangul_YE ㅖ HANGUL LETTER YE */
|
||||||
|
{ 0x0ec7, 0x3157 }, /* Hangul_O ㅗ HANGUL LETTER O */
|
||||||
|
{ 0x0ec8, 0x3158 }, /* Hangul_WA ㅘ HANGUL LETTER WA */
|
||||||
|
{ 0x0ec9, 0x3159 }, /* Hangul_WAE ㅙ HANGUL LETTER WAE */
|
||||||
|
{ 0x0eca, 0x315a }, /* Hangul_OE ㅚ HANGUL LETTER OE */
|
||||||
|
{ 0x0ecb, 0x315b }, /* Hangul_YO ㅛ HANGUL LETTER YO */
|
||||||
|
{ 0x0ecc, 0x315c }, /* Hangul_U ㅜ HANGUL LETTER U */
|
||||||
|
{ 0x0ecd, 0x315d }, /* Hangul_WEO ㅝ HANGUL LETTER WEO */
|
||||||
|
{ 0x0ece, 0x315e }, /* Hangul_WE ㅞ HANGUL LETTER WE */
|
||||||
|
{ 0x0ecf, 0x315f }, /* Hangul_WI ㅟ HANGUL LETTER WI */
|
||||||
|
{ 0x0ed0, 0x3160 }, /* Hangul_YU ㅠ HANGUL LETTER YU */
|
||||||
|
{ 0x0ed1, 0x3161 }, /* Hangul_EU ㅡ HANGUL LETTER EU */
|
||||||
|
{ 0x0ed2, 0x3162 }, /* Hangul_YI ㅢ HANGUL LETTER YI */
|
||||||
|
{ 0x0ed3, 0x3163 }, /* Hangul_I ㅣ HANGUL LETTER I */
|
||||||
|
{ 0x0ed4, 0x11a8 }, /* Hangul_J_Kiyeog ᆨ HANGUL JONGSEONG KIYEOK */
|
||||||
|
{ 0x0ed5, 0x11a9 }, /* Hangul_J_SsangKiyeog ᆩ HANGUL JONGSEONG SSANGKIYEOK */
|
||||||
|
{ 0x0ed6, 0x11aa }, /* Hangul_J_KiyeogSios ᆪ HANGUL JONGSEONG KIYEOK-SIOS */
|
||||||
|
{ 0x0ed7, 0x11ab }, /* Hangul_J_Nieun ᆫ HANGUL JONGSEONG NIEUN */
|
||||||
|
{ 0x0ed8, 0x11ac }, /* Hangul_J_NieunJieuj ᆬ HANGUL JONGSEONG NIEUN-CIEUC */
|
||||||
|
{ 0x0ed9, 0x11ad }, /* Hangul_J_NieunHieuh ᆭ HANGUL JONGSEONG NIEUN-HIEUH */
|
||||||
|
{ 0x0eda, 0x11ae }, /* Hangul_J_Dikeud ᆮ HANGUL JONGSEONG TIKEUT */
|
||||||
|
{ 0x0edb, 0x11af }, /* Hangul_J_Rieul ᆯ HANGUL JONGSEONG RIEUL */
|
||||||
|
{ 0x0edc, 0x11b0 }, /* Hangul_J_RieulKiyeog ᆰ HANGUL JONGSEONG RIEUL-KIYEOK */
|
||||||
|
{ 0x0edd, 0x11b1 }, /* Hangul_J_RieulMieum ᆱ HANGUL JONGSEONG RIEUL-MIEUM */
|
||||||
|
{ 0x0ede, 0x11b2 }, /* Hangul_J_RieulPieub ᆲ HANGUL JONGSEONG RIEUL-PIEUP */
|
||||||
|
{ 0x0edf, 0x11b3 }, /* Hangul_J_RieulSios ᆳ HANGUL JONGSEONG RIEUL-SIOS */
|
||||||
|
{ 0x0ee0, 0x11b4 }, /* Hangul_J_RieulTieut ᆴ HANGUL JONGSEONG RIEUL-THIEUTH */
|
||||||
|
{ 0x0ee1, 0x11b5 }, /* Hangul_J_RieulPhieuf ᆵ HANGUL JONGSEONG RIEUL-PHIEUPH */
|
||||||
|
{ 0x0ee2, 0x11b6 }, /* Hangul_J_RieulHieuh ᆶ HANGUL JONGSEONG RIEUL-HIEUH */
|
||||||
|
{ 0x0ee3, 0x11b7 }, /* Hangul_J_Mieum ᆷ HANGUL JONGSEONG MIEUM */
|
||||||
|
{ 0x0ee4, 0x11b8 }, /* Hangul_J_Pieub ᆸ HANGUL JONGSEONG PIEUP */
|
||||||
|
{ 0x0ee5, 0x11b9 }, /* Hangul_J_PieubSios ᆹ HANGUL JONGSEONG PIEUP-SIOS */
|
||||||
|
{ 0x0ee6, 0x11ba }, /* Hangul_J_Sios ᆺ HANGUL JONGSEONG SIOS */
|
||||||
|
{ 0x0ee7, 0x11bb }, /* Hangul_J_SsangSios ᆻ HANGUL JONGSEONG SSANGSIOS */
|
||||||
|
{ 0x0ee8, 0x11bc }, /* Hangul_J_Ieung ᆼ HANGUL JONGSEONG IEUNG */
|
||||||
|
{ 0x0ee9, 0x11bd }, /* Hangul_J_Jieuj ᆽ HANGUL JONGSEONG CIEUC */
|
||||||
|
{ 0x0eea, 0x11be }, /* Hangul_J_Cieuc ᆾ HANGUL JONGSEONG CHIEUCH */
|
||||||
|
{ 0x0eeb, 0x11bf }, /* Hangul_J_Khieuq ᆿ HANGUL JONGSEONG KHIEUKH */
|
||||||
|
{ 0x0eec, 0x11c0 }, /* Hangul_J_Tieut ᇀ HANGUL JONGSEONG THIEUTH */
|
||||||
|
{ 0x0eed, 0x11c1 }, /* Hangul_J_Phieuf ᇁ HANGUL JONGSEONG PHIEUPH */
|
||||||
|
{ 0x0eee, 0x11c2 }, /* Hangul_J_Hieuh ᇂ HANGUL JONGSEONG HIEUH */
|
||||||
|
{ 0x0eef, 0x316d }, /* Hangul_RieulYeorinHieuh ㅭ HANGUL LETTER RIEUL-YEORINHIEUH */
|
||||||
|
{ 0x0ef0, 0x3171 }, /* Hangul_SunkyeongeumMieum ㅱ HANGUL LETTER KAPYEOUNMIEUM */
|
||||||
|
{ 0x0ef1, 0x3178 }, /* Hangul_SunkyeongeumPieub ㅸ HANGUL LETTER KAPYEOUNPIEUP */
|
||||||
|
{ 0x0ef2, 0x317f }, /* Hangul_PanSios ㅿ HANGUL LETTER PANSIOS */
|
||||||
|
{ 0x0ef3, 0x3181 }, /* Hangul_KkogjiDalrinIeung ㆁ HANGUL LETTER YESIEUNG */
|
||||||
|
{ 0x0ef4, 0x3184 }, /* Hangul_SunkyeongeumPhieuf ㆄ HANGUL LETTER KAPYEOUNPHIEUPH */
|
||||||
|
{ 0x0ef5, 0x3186 }, /* Hangul_YeorinHieuh ㆆ HANGUL LETTER YEORINHIEUH */
|
||||||
|
{ 0x0ef6, 0x318d }, /* Hangul_AraeA ㆍ HANGUL LETTER ARAEA */
|
||||||
|
{ 0x0ef7, 0x318e }, /* Hangul_AraeAE ㆎ HANGUL LETTER ARAEAE */
|
||||||
|
{ 0x0ef8, 0x11eb }, /* Hangul_J_PanSios ᇫ HANGUL JONGSEONG PANSIOS */
|
||||||
|
{ 0x0ef9, 0x11f0 }, /* Hangul_J_KkogjiDalrinIeung ᇰ HANGUL JONGSEONG YESIEUNG */
|
||||||
|
{ 0x0efa, 0x11f9 }, /* Hangul_J_YeorinHieuh ᇹ HANGUL JONGSEONG YEORINHIEUH */
|
||||||
|
{ 0x0eff, 0x20a9 }, /* Korean_Won ₩ WON SIGN */
|
||||||
|
{ 0x13a4, 0x20ac }, /* Euro € EURO SIGN */
|
||||||
|
{ 0x13bc, 0x0152 }, /* OE Œ LATIN CAPITAL LIGATURE OE */
|
||||||
|
{ 0x13bd, 0x0153 }, /* oe œ LATIN SMALL LIGATURE OE */
|
||||||
|
{ 0x13be, 0x0178 }, /* Ydiaeresis Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS */
|
||||||
|
{ 0x20ac, 0x20ac }, /* EuroSign € EURO SIGN */
|
||||||
|
};
|
||||||
|
|
||||||
|
quint16 HelperX11::getKeysym(const QChar& c){
|
||||||
|
quint16 unicode=c.unicode();
|
||||||
|
/* first check for Latin-1 characters (1:1 mapping) */
|
||||||
|
if ((unicode >= 0x0020 && unicode <= 0x007e) ||
|
||||||
|
(unicode >= 0x00a0 && unicode <= 0x00ff))
|
||||||
|
return unicode;
|
||||||
|
|
||||||
|
/*if((unicode & 0xFF000000)==0x00)
|
||||||
|
return (unicode & 0x00FFFFFF)|0x01FFFFFF;*/
|
||||||
|
|
||||||
|
int MapSize=sizeof(KeysymMap);
|
||||||
|
|
||||||
|
for(int i=0; i<MapSize;i++){
|
||||||
|
if(unicode==KeysymMap[i][0])
|
||||||
|
return KeysymMap[i][1];
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2005-2008 by Felix Geyer *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; version 2 of the License. *
|
||||||
|
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef HELPERX11_H
|
||||||
|
#define HELPERX11_H
|
||||||
|
|
||||||
|
#include "AutoType.h"
|
||||||
|
#include <QChar>
|
||||||
|
|
||||||
|
#define XK_MISCELLANY
|
||||||
|
#define XK_XKB_KEYS
|
||||||
|
#define XK_3270
|
||||||
|
#define XK_CURRENCY
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/extensions/XTest.h>
|
||||||
|
#include <X11/keysymdef.h>
|
||||||
|
|
||||||
|
class HelperX11{
|
||||||
|
public:
|
||||||
|
static int getModifiers(Display *d,KeySym keysym, int keycode);
|
||||||
|
static void pressModifiers(Display*,int mods,bool Press=true);
|
||||||
|
static void releaseModifiers(Display*,int mods);
|
||||||
|
static quint16 getKeysym(const QChar& c);
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
static int getShortcutModifierMask(const Shortcut& s);
|
||||||
|
#endif
|
||||||
|
static unsigned int keyboardModifiers(Display* d);
|
||||||
|
|
||||||
|
static void startCatchErrors();
|
||||||
|
static void stopCatchErrors();
|
||||||
|
inline static bool errorOccurred() { return pErrorOccurred; };
|
||||||
|
|
||||||
|
private:
|
||||||
|
static int x11ErrorHandler(Display* display, XErrorEvent* error);
|
||||||
|
static int (*oldHandler) (Display*, XErrorEvent*);
|
||||||
|
static bool catchErrors;
|
||||||
|
static bool pErrorOccurred;
|
||||||
|
static const quint16 KeysymMap[][2];
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // HELPERX11_H
|
||||||
+2
-2
@@ -21,8 +21,8 @@
|
|||||||
#define _SECSTRING_H_
|
#define _SECSTRING_H_
|
||||||
|
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
#include <qstring.h>
|
#include <QString>
|
||||||
#include <qglobal.h>
|
#include <QGlobalStatic>
|
||||||
#include "crypto/arcfour.h"
|
#include "crypto/arcfour.h"
|
||||||
|
|
||||||
//! QString based class with in-memory encryption of its content.
|
//! QString based class with in-memory encryption of its content.
|
||||||
|
|||||||
@@ -0,0 +1,118 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2005-2008 by Felix Geyer *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; version 2 of the License. *
|
||||||
|
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "ShortcutWidget.h"
|
||||||
|
#include <QKeyEvent>
|
||||||
|
#include <QX11Info>
|
||||||
|
#include <QPalette>
|
||||||
|
#include "HelperX11.h"
|
||||||
|
|
||||||
|
#if defined(GLOBAL_AUTOTYPE) && defined(Q_WS_X11)
|
||||||
|
ShortcutWidget::ShortcutWidget(QWidget* parent) : QLineEdit(parent), lock(false), failed(false){
|
||||||
|
}
|
||||||
|
|
||||||
|
Shortcut ShortcutWidget::shortcut(){
|
||||||
|
if (lock)
|
||||||
|
return pShortcut;
|
||||||
|
else
|
||||||
|
return Shortcut();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShortcutWidget::setShortcut(const Shortcut& s){
|
||||||
|
lock = true;
|
||||||
|
displayShortcut(s.key, false, s.ctrl, s.shift, s.alt, s.altgr, s.win);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShortcutWidget::keyPressEvent(QKeyEvent* event){
|
||||||
|
keyEvent(event, false);
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShortcutWidget::keyReleaseEvent(QKeyEvent* event){
|
||||||
|
keyEvent(event, true);
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShortcutWidget::keyEvent(QKeyEvent* event, bool release){
|
||||||
|
if (release && lock)
|
||||||
|
return;
|
||||||
|
|
||||||
|
unsigned int mods = HelperX11::keyboardModifiers(QX11Info::display());
|
||||||
|
displayShortcut(event->nativeVirtualKey(), release, mods&ControlMask, mods&ShiftMask, mods&Mod1Mask, mods&Mod5Mask, mods&Mod4Mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShortcutWidget::displayShortcut(quint32 key, bool release, bool ctrl, bool shift, bool alt, bool altgr, bool win){
|
||||||
|
QString text;
|
||||||
|
|
||||||
|
if (ctrl)
|
||||||
|
text.append(tr("Ctrl")).append(" + ");
|
||||||
|
if (shift)
|
||||||
|
text.append(tr("Shift")).append(" + ");
|
||||||
|
if (alt)
|
||||||
|
text.append(tr("Alt")).append(" + ");
|
||||||
|
if (altgr)
|
||||||
|
text.append(tr("AltGr")).append(" + ");
|
||||||
|
if (win)
|
||||||
|
text.append(tr("Win")).append(" + ");
|
||||||
|
|
||||||
|
if ( !release && (key<XK_Shift_L || key>XK_Hyper_R) && (key<XK_ISO_Lock || key>XK_ISO_Last_Group_Lock) ){
|
||||||
|
KeySym keysym = XKeycodeToKeysym(QX11Info::display(), XKeysymToKeycode(QX11Info::display(),key), 0);
|
||||||
|
if (keysym>=0xfd00 && keysym<=0xffff){
|
||||||
|
text.append(XKeysymToString(keysym));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
text.append(static_cast<quint32>(keysym));
|
||||||
|
}
|
||||||
|
|
||||||
|
lock = ctrl || shift || alt || altgr || win;
|
||||||
|
if (lock){
|
||||||
|
pShortcut.key = keysym;
|
||||||
|
pShortcut.ctrl = ctrl;
|
||||||
|
pShortcut.shift = shift;
|
||||||
|
pShortcut.alt = alt;
|
||||||
|
pShortcut.altgr = altgr;
|
||||||
|
pShortcut.win = win;
|
||||||
|
failed = AutoType::registerGlobalShortcut(pShortcut);
|
||||||
|
if (!failed)
|
||||||
|
setBackgroundColor(QColor(255, 150, 150));
|
||||||
|
else
|
||||||
|
setBackgroundColor(Qt::white);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
lock = false;
|
||||||
|
if (failed)
|
||||||
|
setBackgroundColor(Qt::white);
|
||||||
|
}
|
||||||
|
|
||||||
|
setText(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShortcutWidget::setBackgroundColor(const QColor& c){
|
||||||
|
QPalette p( palette() );
|
||||||
|
p.setColor(backgroundRole(), c);
|
||||||
|
setPalette(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
ShortcutWidget::ShortcutWidget(QWidget* parent) : QLineEdit(parent){
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2005-2008 by Felix Geyer *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; version 2 of the License. *
|
||||||
|
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef SHORTCUT_WIDGET_H
|
||||||
|
#define SHORTCUT_WIDGET_H
|
||||||
|
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include "lib/AutoType.h"
|
||||||
|
|
||||||
|
class ShortcutWidget : public QLineEdit{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
ShortcutWidget(QWidget* parent = 0);
|
||||||
|
#if defined(GLOBAL_AUTOTYPE) && defined(Q_WS_X11)
|
||||||
|
Shortcut shortcut();
|
||||||
|
void setShortcut(const Shortcut& s);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void keyPressEvent(QKeyEvent* event);
|
||||||
|
void keyReleaseEvent(QKeyEvent* event);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void keyEvent(QKeyEvent* event, bool release);
|
||||||
|
void displayShortcut(quint32 key, bool release, bool ctrl, bool shift, bool alt, bool altgr, bool win);
|
||||||
|
void setBackgroundColor(const QColor& c);
|
||||||
|
bool lock;
|
||||||
|
bool failed;
|
||||||
|
Shortcut pShortcut;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SHORTCUT_WIDGET_H
|
||||||
+20
-49
@@ -17,51 +17,24 @@
|
|||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include <QFile>
|
|
||||||
#include "bookmarks.h"
|
#include "bookmarks.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#define CSTR(x)(x.toUtf8().data())
|
#include "KpxConfig.h"
|
||||||
|
|
||||||
QList<KpxBookmarks::BookmarkEntry> KpxBookmarks::Bookmarks;
|
QList<KpxBookmarks::BookmarkEntry> KpxBookmarks::Bookmarks;
|
||||||
QString KpxBookmarks::filename;
|
|
||||||
|
|
||||||
bool KpxBookmarks::load(const QString& _filename){
|
void KpxBookmarks::load(){
|
||||||
/*
|
if (!config->settings.contains("Bookmarks/size") || config->settings.value("Bookmarks/size").toInt()==0)
|
||||||
Fileformat:
|
return;
|
||||||
"Title1" "Path1"\n
|
|
||||||
"Title2" "Path2"\n
|
|
||||||
...
|
|
||||||
*/
|
|
||||||
|
|
||||||
filename=_filename;
|
int size = config->settings.value("Bookmarks/size").toInt();
|
||||||
QFile file(filename);
|
for(int i=1;i<=size;i++){
|
||||||
if(!file.exists()){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if(!file.open(QIODevice::ReadOnly)){
|
|
||||||
qWarning("Reading bookmarks failed: %s",CSTR(decodeFileError(file.error())));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
QString content=QString::fromUtf8(file.readAll());
|
|
||||||
file.close();
|
|
||||||
content.replace("\r","");
|
|
||||||
QStringList lines=content.split("\n");
|
|
||||||
for(int i=0;i<lines.size();i++){
|
|
||||||
if(lines[i].simplified()==QString()) continue; //skip empty line
|
|
||||||
if(lines[i].count("\"")!=4){
|
|
||||||
qWarning("Bookmark parsing error: Skipping line %i.",i);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
int a_title=lines[i].indexOf("\"");
|
|
||||||
int b_title=lines[i].indexOf("\"",a_title+1);
|
|
||||||
int a_path=lines[i].indexOf("\"",b_title+1);
|
|
||||||
int b_path=lines[i].indexOf("\"",a_path+1);
|
|
||||||
BookmarkEntry entry;
|
BookmarkEntry entry;
|
||||||
entry.Title=lines[i].mid(a_title+1,b_title-a_title-1);
|
entry.Title = config->settings.value( QString("Bookmarks/%1/Title").arg(i) ).toString();
|
||||||
entry.Path=lines[i].mid(a_path+1,b_path-a_path-1);
|
entry.Path = config->settings.value( QString("Bookmarks/%1/Path").arg(i) ).toString();
|
||||||
|
if (!entry.Title.isNull() && !entry.Path.isNull())
|
||||||
Bookmarks << entry;
|
Bookmarks << entry;
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int KpxBookmarks::count(){
|
int KpxBookmarks::count(){
|
||||||
@@ -88,21 +61,19 @@ int KpxBookmarks::add(const QString& Title,const QString& Path){
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool KpxBookmarks::save(){
|
bool KpxBookmarks::save(){
|
||||||
QFile file(filename);
|
for (int i=0;i<count();i++){
|
||||||
if(!file.exists()){
|
config->settings.setValue( QString("Bookmarks/%1/Title").arg(i+1), Bookmarks[i].Title );
|
||||||
return false;
|
config->settings.setValue( QString("Bookmarks/%1/Path").arg(i+1), Bookmarks[i].Path );
|
||||||
}
|
}
|
||||||
if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate)){
|
config->settings.setValue("Bookmarks/size", count());
|
||||||
qWarning("Writing bookmarks failed: %s",CSTR(decodeFileError(file.error())));
|
|
||||||
return false;
|
// remove orphaned entries
|
||||||
|
int i = count()+1;
|
||||||
|
while ( config->settings.contains( QString("Bookmarks/%1/Title").arg(i) ) ){
|
||||||
|
config->settings.remove( QString("Bookmarks/%1/Title").arg(i) );
|
||||||
|
config->settings.remove( QString("Bookmarks/%1/Path").arg(i) );
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
QString data;
|
|
||||||
for(int i=0;i<Bookmarks.size();i++){
|
|
||||||
data+=QString("\"%1\" \"%2\"\n").arg(Bookmarks[i].Title)
|
|
||||||
.arg(Bookmarks[i].Path);
|
|
||||||
}
|
|
||||||
file.write(data.toUtf8());
|
|
||||||
file.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KpxBookmarks::remove(int index){
|
void KpxBookmarks::remove(int index){
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
class KpxBookmarks {
|
class KpxBookmarks {
|
||||||
public:
|
public:
|
||||||
static bool load(const QString& file);
|
static void load();
|
||||||
static int add(const QString& Title,const QString& Path);
|
static int add(const QString& Title,const QString& Path);
|
||||||
static void remove(int id);
|
static void remove(int id);
|
||||||
static void edit(const QString& Title,const QString& Path, int Index);
|
static void edit(const QString& Title,const QString& Path, int Index);
|
||||||
|
|||||||
+2
-2
@@ -19,8 +19,8 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <qdatetime.h>
|
#include <QDateTime>
|
||||||
#include <qobject.h>
|
#include <QObject>
|
||||||
#include "random.h"
|
#include "random.h"
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
|||||||
+113
-132
@@ -20,26 +20,27 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <qapplication.h>
|
#include <QLibraryInfo>
|
||||||
#include <qlibrary.h>
|
#include <QLocale>
|
||||||
#include <qlocale.h>
|
#include <QDir>
|
||||||
#include <qdir.h>
|
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QTranslator>
|
#include <QTranslator>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
#include <QStyleFactory>
|
#include <QStyleFactory>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QLibraryInfo>
|
|
||||||
#include <QPluginLoader>
|
|
||||||
#include <QDesktopServices>
|
#include <QDesktopServices>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
|
|
||||||
|
/*
|
||||||
|
#include <QLibary>
|
||||||
|
#include <QPluginLoader>
|
||||||
#include "plugins/interfaces/IFileDialog.h"
|
#include "plugins/interfaces/IFileDialog.h"
|
||||||
#include "plugins/interfaces/IKdeInit.h"
|
#include "plugins/interfaces/IKdeInit.h"
|
||||||
#include "plugins/interfaces/IGnomeInit.h"
|
#include "plugins/interfaces/IGnomeInit.h"
|
||||||
#include "plugins/interfaces/IIconTheme.h"
|
#include "plugins/interfaces/IIconTheme.h"
|
||||||
#include "lib/FileDialogs.h"
|
#include "lib/FileDialogs.h"
|
||||||
|
*/
|
||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "lib/FileDialogs.h"
|
#include "lib/FileDialogs.h"
|
||||||
@@ -48,18 +49,11 @@
|
|||||||
#include "Kdb3Database.h"
|
#include "Kdb3Database.h"
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "crypto/yarrow.h"
|
#include "crypto/yarrow.h"
|
||||||
using namespace std;
|
#if defined(Q_WS_X11) && defined(GLOBAL_AUTOTYPE)
|
||||||
|
#include "Application_X11.h"
|
||||||
#ifdef Q_WS_X11
|
|
||||||
#include <X11/extensions/XTest.h>
|
|
||||||
#define XK_LATIN1
|
|
||||||
#define XK_MISCELLANY
|
|
||||||
#define XK_XKB_KEYS
|
|
||||||
#include <X11/keysymdef.h>
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CSTR(x)(x.toUtf8().data())
|
using namespace std;
|
||||||
|
|
||||||
QHash<QString,QPixmap*>PixmapCache;
|
QHash<QString,QPixmap*>PixmapCache;
|
||||||
QHash<QString,QIcon*>IconCache;
|
QHash<QString,QIcon*>IconCache;
|
||||||
@@ -71,40 +65,22 @@ bool TrActive;
|
|||||||
QString DetailViewTemplate;
|
QString DetailViewTemplate;
|
||||||
|
|
||||||
QPixmap* EntryIcons;
|
QPixmap* EntryIcons;
|
||||||
IIconTheme* IconLoader=NULL;
|
//IIconTheme* IconLoader=NULL; //TODO plugins
|
||||||
char ** argv;
|
char ** argv;
|
||||||
|
|
||||||
inline void loadImages();
|
inline void loadImages();
|
||||||
inline void parseCmdLineArgs(int argc, char** argv,QString &ArgFile,QString& ArgCfg,QString& ArgLang);
|
inline void parseCmdLineArgs(int argc, char** argv,QString &ArgFile,QString& ArgCfg,QString& ArgLang,bool& ArgMin,bool& ArgLock);
|
||||||
bool loadTranslation(QTranslator* tr,const QString& prefix,const QString& LocaleCode,const QStringList& SearchPaths);
|
bool loadTranslation(QTranslator* tr,const QString& prefix,const QString& LocaleCode,const QStringList& SearchPaths);
|
||||||
|
|
||||||
void test_getAllWindowTitles(){
|
|
||||||
#ifdef Q_WS_X11
|
|
||||||
Display* pDisplay = XOpenDisplay( NULL );
|
|
||||||
Window r,p;
|
|
||||||
Window* c;
|
|
||||||
unsigned int num_ch=0;
|
|
||||||
XQueryTree(pDisplay,DefaultRootWindow(pDisplay),&r,&p,&c,&num_ch);
|
|
||||||
qDebug("%u",num_ch);
|
|
||||||
for(int i=0;i<num_ch;i++){
|
|
||||||
int num_prop=0;
|
|
||||||
Atom* atom=XListProperties(pDisplay,c[i],&num_prop);
|
|
||||||
for(int p=0;p<num_prop;p++){
|
|
||||||
qDebug("%i %i: %s",i,p,XGetAtomName(pDisplay,atom[p]));
|
|
||||||
}
|
|
||||||
XFree(atom);
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **_argv)
|
int main(int argc, char **_argv)
|
||||||
{
|
{
|
||||||
argv=_argv;
|
argv=_argv;
|
||||||
QString ArgFile,ArgCfg,ArgLang,IniFilename;
|
QString ArgFile,ArgCfg,ArgLang,IniFilename;
|
||||||
QApplication* app=NULL;
|
QApplication* app=NULL;
|
||||||
AppDir=applicationDirPath();
|
AppDir=applicationDirPath();
|
||||||
parseCmdLineArgs(argc,argv,ArgFile,ArgCfg,ArgLang);
|
bool ArgMin = false;
|
||||||
|
bool ArgLock = false;
|
||||||
|
parseCmdLineArgs(argc,argv,ArgFile,ArgCfg,ArgLang,ArgMin,ArgLock);
|
||||||
qDebug(CSTR(QDir::current().absolutePath()));
|
qDebug(CSTR(QDir::current().absolutePath()));
|
||||||
|
|
||||||
//Load Config
|
//Load Config
|
||||||
@@ -123,8 +99,8 @@ int main(int argc, char **_argv)
|
|||||||
config = new KpxConfig(IniFilename);
|
config = new KpxConfig(IniFilename);
|
||||||
fileDlgHistory.load();
|
fileDlgHistory.load();
|
||||||
|
|
||||||
//Plugins
|
// TODO Plugins
|
||||||
if(config->integrPlugin()!=KpxConfig::NoIntegr){
|
/*if(config->integrPlugin()!=KpxConfig::NoIntegr){
|
||||||
QString LibName="libkeepassx-";
|
QString LibName="libkeepassx-";
|
||||||
if(config->integrPlugin()==KpxConfig::KDE)
|
if(config->integrPlugin()==KpxConfig::KDE)
|
||||||
LibName+="kde.so";
|
LibName+="kde.so";
|
||||||
@@ -165,8 +141,13 @@ int main(int argc, char **_argv)
|
|||||||
qWarning(CSTR(QString("Could not load desktop integration plugin: File '%1' not found.").arg(LibName)));
|
qWarning(CSTR(QString("Could not load desktop integration plugin: File '%1' not found.").arg(LibName)));
|
||||||
PluginLoadError=QObject::tr("Could not locate library file.");
|
PluginLoadError=QObject::tr("Could not locate library file.");
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
if(!app) QApplication* app=new QApplication(argc,argv);
|
|
||||||
|
#if defined(Q_WS_X11) && defined(GLOBAL_AUTOTYPE)
|
||||||
|
if(!app) new KeepassApplication(argc,argv);
|
||||||
|
#else
|
||||||
|
if(!app) new QApplication(argc,argv);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//Internationalization
|
//Internationalization
|
||||||
@@ -184,11 +165,13 @@ int main(int argc, char **_argv)
|
|||||||
if(loadTranslation(translator,"keepass-",loc.name(),QStringList()
|
if(loadTranslation(translator,"keepass-",loc.name(),QStringList()
|
||||||
<< app->applicationDirPath()+"/../share/keepass/i18n/"
|
<< app->applicationDirPath()+"/../share/keepass/i18n/"
|
||||||
<< QDir::homePath()+"/.keepassx/" ))
|
<< QDir::homePath()+"/.keepassx/" ))
|
||||||
{app->installTranslator(translator);
|
{
|
||||||
TrActive=true;}
|
app->installTranslator(translator);
|
||||||
|
TrActive=true;
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
if(loc.name()!="en_US")
|
if(loc.name()!="en_US")
|
||||||
qWarning(QString("Kpx: No Translation found for '%1 (%2)'using 'English (UnitedStates)'")
|
qWarning(QString("Kpx: No Translation found for '%1 (%2)' using 'English (UnitedStates)'")
|
||||||
.arg(QLocale::languageToString(loc.language()))
|
.arg(QLocale::languageToString(loc.language()))
|
||||||
.arg(QLocale::countryToString(loc.country())).toAscii());
|
.arg(QLocale::countryToString(loc.country())).toAscii());
|
||||||
delete translator;
|
delete translator;
|
||||||
@@ -202,42 +185,25 @@ int main(int argc, char **_argv)
|
|||||||
app->installTranslator(qtTranslator);
|
app->installTranslator(qtTranslator);
|
||||||
else{
|
else{
|
||||||
if(loc.name()!="en_US")
|
if(loc.name()!="en_US")
|
||||||
qWarning(QString("Qt: No Translation found for '%1 (%2)'using 'English (UnitedStates)'")
|
qWarning(QString("Qt: No Translation found for '%1 (%2)' using 'English (UnitedStates)'")
|
||||||
.arg(QLocale::languageToString(loc.language()))
|
.arg(QLocale::languageToString(loc.language()))
|
||||||
.arg(QLocale::countryToString(loc.country())).toAscii());
|
.arg(QLocale::countryToString(loc.country())).toAscii());
|
||||||
delete qtTranslator;
|
delete qtTranslator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QFile templ(QDir::homePath()+"/.keepassx/detailview-template.html"); ///FIXME ArgCfg
|
DetailViewTemplate=config->detailViewTemplate();
|
||||||
if(templ.open(QIODevice::ReadOnly)){
|
|
||||||
DetailViewTemplate=QString::fromUtf8(templ.readAll());
|
|
||||||
templ.close();
|
|
||||||
}
|
|
||||||
else loadDefaultDetailViewTemplate();
|
|
||||||
|
|
||||||
loadImages();
|
loadImages();
|
||||||
KpxBookmarks::load(QDir::homePath()+"/.keepassx/bookmarks");
|
KpxBookmarks::load();
|
||||||
initYarrow(); //init random number generator
|
initYarrow(); //init random number generator
|
||||||
SecString::generateSessionKey();
|
SecString::generateSessionKey();
|
||||||
|
|
||||||
int r=0;
|
QApplication::setQuitOnLastWindowClosed(false);
|
||||||
KeepassMainWindow *mainWin = new KeepassMainWindow(ArgFile);
|
KeepassMainWindow *mainWin = new KeepassMainWindow(ArgFile,ArgMin,ArgLock);
|
||||||
if(mainWin->Start){
|
int r=app->exec();
|
||||||
mainWin->show();
|
|
||||||
r=app->exec();
|
|
||||||
}
|
|
||||||
delete mainWin;
|
delete mainWin;
|
||||||
|
|
||||||
if(templ.open(QIODevice::WriteOnly)){
|
|
||||||
templ.write(DetailViewTemplate.toUtf8());
|
|
||||||
templ.close();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
qWarning("Failed to save detail view template: %s",decodeFileError(templ.error()).toUtf8().data());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fileDlgHistory.save();
|
fileDlgHistory.save();
|
||||||
delete app;
|
delete app;
|
||||||
delete config;
|
delete config;
|
||||||
@@ -245,34 +211,6 @@ int main(int argc, char **_argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void loadDefaultDetailViewTemplate(){
|
|
||||||
QFile templ(":/default-detailview.html");
|
|
||||||
templ.open(QIODevice::ReadOnly);
|
|
||||||
DetailViewTemplate=QString::fromUtf8(templ.readAll());
|
|
||||||
templ.close();
|
|
||||||
DetailViewTemplate.replace("Group",QCoreApplication::translate("DetailViewTemplate","Group"));
|
|
||||||
DetailViewTemplate.replace("Title",QCoreApplication::translate("DetailViewTemplate","Title"));
|
|
||||||
DetailViewTemplate.replace("Username",QCoreApplication::translate("DetailViewTemplate","Username"));
|
|
||||||
DetailViewTemplate.replace("Password",QCoreApplication::translate("DetailViewTemplate","Password"));
|
|
||||||
DetailViewTemplate.replace("URL",QCoreApplication::translate("DetailViewTemplate","URL"));
|
|
||||||
DetailViewTemplate.replace("Creation",QCoreApplication::translate("DetailViewTemplate","Creation"));
|
|
||||||
DetailViewTemplate.replace("Last Access",QCoreApplication::translate("DetailViewTemplate","Last Access"));
|
|
||||||
DetailViewTemplate.replace("Last Modification",QCoreApplication::translate("DetailViewTemplate","Last Modification"));
|
|
||||||
DetailViewTemplate.replace("Expiration",QCoreApplication::translate("DetailViewTemplate","Expiration"));
|
|
||||||
DetailViewTemplate.replace("Comment",QCoreApplication::translate("DetailViewTemplate","Comment"));
|
|
||||||
}
|
|
||||||
|
|
||||||
//obsolete
|
|
||||||
void createBanner(QLabel *Banner,const QPixmap* symbol,QString text){
|
|
||||||
QPixmap Pixmap;
|
|
||||||
createBanner(&Pixmap,symbol,text
|
|
||||||
,Banner->width()
|
|
||||||
,config->bannerColor1()
|
|
||||||
,config->bannerColor2()
|
|
||||||
,config->bannerTextColor());
|
|
||||||
Banner->setPixmap(Pixmap);
|
|
||||||
}
|
|
||||||
|
|
||||||
void createBanner(QPixmap* Pixmap,const QPixmap* IconAlpha,const QString& Text,int Width){
|
void createBanner(QPixmap* Pixmap,const QPixmap* IconAlpha,const QString& Text,int Width){
|
||||||
createBanner(Pixmap,IconAlpha,Text,Width,config->bannerColor1(),config->bannerColor2(),config->bannerTextColor());
|
createBanner(Pixmap,IconAlpha,Text,Width,config->bannerColor1(),config->bannerColor2(),config->bannerTextColor());
|
||||||
}
|
}
|
||||||
@@ -317,37 +255,62 @@ QString decodeFileError(QFile::FileError Code){
|
|||||||
case QFile::PermissionsError: return QApplication::translate("FileErrors","The file could not be accessed.");
|
case QFile::PermissionsError: return QApplication::translate("FileErrors","The file could not be accessed.");
|
||||||
case QFile::CopyError: return QApplication::translate("FileErrors","The file could not be copied.");
|
case QFile::CopyError: return QApplication::translate("FileErrors","The file could not be copied.");
|
||||||
}
|
}
|
||||||
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void openBrowser(QString UrlString){
|
void openBrowser(IEntryHandle* entry){
|
||||||
|
QString url = entry->url();
|
||||||
|
url.replace("{TITLE}", entry->title(), Qt::CaseInsensitive);
|
||||||
|
url.replace("{USERNAME}", entry->username(), Qt::CaseInsensitive);
|
||||||
|
|
||||||
|
if (url.contains("{PASSWORD}",Qt::CaseInsensitive)){
|
||||||
|
SecString password=entry->password();
|
||||||
|
password.unlock();
|
||||||
|
url.replace("{PASSWORD}", password, Qt::CaseInsensitive);
|
||||||
|
}
|
||||||
|
|
||||||
|
openBrowser(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
void openBrowser(const QString& UrlString){
|
||||||
|
if (UrlString.startsWith("cmd://") && UrlString.length()>6){
|
||||||
|
QProcess::startDetached(UrlString.right(UrlString.length()-6));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
QUrl url(UrlString);
|
QUrl url(UrlString);
|
||||||
if(url.scheme().isEmpty())
|
if(url.scheme().isEmpty())
|
||||||
url=QUrl("http://"+UrlString);
|
url=QUrl("http://"+UrlString);
|
||||||
if(config->urlCmd().isEmpty()){
|
if(config->urlCmdDef()){
|
||||||
QDesktopServices::openUrl(url);
|
QDesktopServices::openUrl(url);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
QStringList args=config->urlCmd().arg(url.toString()).split(' ');
|
QByteArray UrlEncoded = url.toEncoded();
|
||||||
QString cmd=args.takeFirst();
|
QString browser = config->urlCmd();
|
||||||
QProcess::startDetached(cmd,args);
|
if (browser.contains("%u", Qt::CaseInsensitive))
|
||||||
|
browser.replace("%u", UrlEncoded, Qt::CaseInsensitive);
|
||||||
|
else if (browser.contains("%1"))
|
||||||
|
browser.replace("%1", UrlEncoded);
|
||||||
|
else
|
||||||
|
browser.append(" ").append(UrlEncoded);
|
||||||
|
QProcess::startDetached(browser);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
///TODO 0.2.3 remove
|
///TODO 0.2.3 remove
|
||||||
void loadImg(QString name,QPixmap& Img){
|
void loadImg(QString name,QPixmap& Img){
|
||||||
if(Img.load(AppDir+"/../share/keepass/icons/"+name)==false){
|
if(Img.load(AppDir+"/../share/keepass/icons/"+name)==false){
|
||||||
if(Img.load(AppDir+"/share/"+name)==false){
|
if(Img.load(AppDir+"/share/"+name)==false){
|
||||||
QMessageBox::critical(0,QObject::tr("Error"),QObject::tr("File '%1' could not be found.")
|
QMessageBox::critical(0,QApplication::translate("Main","Error"),
|
||||||
.arg(name),QObject::tr("OK"),0,0,2,1);
|
QApplication::translate("Main","File '%1' could not be found.")
|
||||||
|
.arg(name),QApplication::translate("Main","OK"),0,0,2,1);
|
||||||
exit(1);
|
exit(1);
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
///TODO 0.2.3 remove
|
///TODO 0.2.3 remove
|
||||||
void loadImages(){
|
void loadImages(){
|
||||||
bool small=true;
|
|
||||||
QString ThemeDir=AppDir+"/../share/keepass/icons/nuvola/32x32";
|
|
||||||
QPixmap tmpImg;
|
QPixmap tmpImg;
|
||||||
loadImg("clientic.png",tmpImg);
|
loadImg("clientic.png",tmpImg);
|
||||||
EntryIcons=new QPixmap[BUILTIN_ICONS];
|
EntryIcons=new QPixmap[BUILTIN_ICONS];
|
||||||
@@ -361,7 +324,8 @@ const QIcon& getIcon(const QString& name){
|
|||||||
if(CachedIcon)
|
if(CachedIcon)
|
||||||
return *CachedIcon;
|
return *CachedIcon;
|
||||||
QIcon* NewIcon=NULL;
|
QIcon* NewIcon=NULL;
|
||||||
if(IconLoader){
|
//TODO plugins
|
||||||
|
/*if(IconLoader){
|
||||||
NewIcon=new QIcon(IconLoader->getIcon(name));
|
NewIcon=new QIcon(IconLoader->getIcon(name));
|
||||||
if(NewIcon->isNull()){
|
if(NewIcon->isNull()){
|
||||||
delete NewIcon;
|
delete NewIcon;
|
||||||
@@ -369,7 +333,7 @@ const QIcon& getIcon(const QString& name){
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
IconCache.insert(name,NewIcon);
|
IconCache.insert(name,NewIcon);
|
||||||
}
|
}*/
|
||||||
if(!NewIcon)
|
if(!NewIcon)
|
||||||
{
|
{
|
||||||
QFileInfo IconFile(AppDir+"/../share/keepass/icons/"+name+".png");
|
QFileInfo IconFile(AppDir+"/../share/keepass/icons/"+name+".png");
|
||||||
@@ -399,9 +363,10 @@ const QPixmap* getPixmap(const QString& name){
|
|||||||
|
|
||||||
|
|
||||||
bool loadTranslation(QTranslator* tr,const QString& prefix,const QString& loc,const QStringList& paths){
|
bool loadTranslation(QTranslator* tr,const QString& prefix,const QString& loc,const QStringList& paths){
|
||||||
for(int i=0;i<paths.size();i++)
|
for(int i=0;i<paths.size();i++)
|
||||||
if(tr->load(prefix+loc+".qm",paths[i])) return true;
|
if(tr->load(prefix+loc+".qm",paths[i])) return true;
|
||||||
for(int i=0;i<paths.size();i++){
|
|
||||||
|
for(int i=0;i<paths.size();i++){
|
||||||
QDir dir(paths[i]);
|
QDir dir(paths[i]);
|
||||||
QStringList TrFiles=dir.entryList(QStringList()<<"*.qm",QDir::Files);
|
QStringList TrFiles=dir.entryList(QStringList()<<"*.qm",QDir::Files);
|
||||||
for(int j=0;j<TrFiles.size();j++){
|
for(int j=0;j<TrFiles.size();j++){
|
||||||
@@ -409,29 +374,34 @@ for(int i=0;i<paths.size();i++){
|
|||||||
if(tr->load(TrFiles[j],paths[i]))return true;
|
if(tr->load(TrFiles[j],paths[i]))return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void printHelp(){
|
||||||
|
|
||||||
void parseCmdLineArgs(int argc, char** argv,QString &ArgFile,QString& ArgCfg,QString& ArgLang){
|
|
||||||
if(argc>1){
|
|
||||||
int i=1;
|
|
||||||
if(argv[i][0]!='-'){
|
|
||||||
ArgFile=QString::fromUtf8(argv[i]);
|
|
||||||
i++; }
|
|
||||||
for(i; i<argc;i++){
|
|
||||||
if(QString(argv[i])=="-help"){
|
|
||||||
cout << "KeePassX" << APP_VERSION << endl;
|
cout << "KeePassX" << APP_VERSION << endl;
|
||||||
cout << "Usage: keepass [Filename] [Options]" << endl;
|
cout << "Usage: keepass [Filename] [Options]" << endl;
|
||||||
cout << " -help This Help" << endl;
|
cout << " -help This Help" << endl;
|
||||||
cout << " -cfg <CONFIG> Use specified file for loading/saving the configuration." << endl;
|
cout << " -cfg <CONFIG> Use specified file for loading/saving the configuration." << endl;
|
||||||
|
cout << " -min Start minimized." << endl;
|
||||||
|
cout << " -lock Start locked." << endl;
|
||||||
cout << " -lang <LOCALE> Use specified language instead of systems default." << endl;
|
cout << " -lang <LOCALE> Use specified language instead of systems default." << endl;
|
||||||
cout << " <LOCALE> is the ISO-639 language code with or without ISO-3166 country code" << endl;
|
cout << " <LOCALE> is the ISO-639 language code with or without ISO-3166 country code" << endl;
|
||||||
cout << " Examples: de German" << endl;
|
cout << " Examples: de German" << endl;
|
||||||
cout << " de_CH German(Switzerland)"<<endl;
|
cout << " de_CH German(Switzerland)"<<endl;
|
||||||
cout << " pt_BR Portuguese(Brazil)"<<endl;
|
cout << " pt_BR Portuguese(Brazil)"<<endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void parseCmdLineArgs(int argc, char** argv,QString &ArgFile,QString& ArgCfg,QString& ArgLang,bool& ArgMin, bool& ArgLock){
|
||||||
|
if(argc>1){
|
||||||
|
int i=1;
|
||||||
|
if(argv[i][0]!='-'){
|
||||||
|
ArgFile=QString::fromUtf8(argv[i]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
for(; i<argc; i++){
|
||||||
|
if(QString(argv[i])=="-help"){
|
||||||
|
printHelp();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
else if(QString(argv[i])=="-cfg"){
|
else if(QString(argv[i])=="-cfg"){
|
||||||
@@ -439,21 +409,32 @@ int i=1;
|
|||||||
else{ArgCfg=QString::fromUtf8(argv[i+1]); i++;}
|
else{ArgCfg=QString::fromUtf8(argv[i+1]); i++;}
|
||||||
}
|
}
|
||||||
else if(QString(argv[i])=="-lang"){
|
else if(QString(argv[i])=="-lang"){
|
||||||
if(i-1==argc) cout << "Missing argument for -lang" << endl;
|
if(i-1==argc)
|
||||||
else{ArgLang=QString::fromUtf8(argv[i+1]); i++;}
|
cout << "Missing argument for -lang" << endl;
|
||||||
|
else
|
||||||
|
ArgLang=QString::fromUtf8(argv[i+1]); i++;
|
||||||
}
|
}
|
||||||
else if(QString(argv[i])=="-test"){/*
|
else if(QString(argv[i])=="-min"){
|
||||||
|
ArgMin = true;
|
||||||
|
}
|
||||||
|
else if(QString(argv[i])=="-lock"){
|
||||||
|
ArgLock = true;
|
||||||
|
}
|
||||||
|
/*else if(QString(argv[i])=="-test"){
|
||||||
if (testDatabase()) exit(0);
|
if (testDatabase()) exit(0);
|
||||||
else exit(1);*/
|
else exit(1);
|
||||||
|
}*/
|
||||||
|
else{
|
||||||
|
cout << "** Unrecognized argument: " << argv[i] << endl << endl;
|
||||||
|
printHelp();
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
else{cout << "** Unrecognized argument: " << argv[i] << endl;
|
|
||||||
exit(1);}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void showErrMsg(const QString& msg,QWidget* parent){
|
void showErrMsg(const QString& msg,QWidget* parent){
|
||||||
QMessageBox::critical(parent,QObject::tr("Error"),msg,QObject::tr("OK"));
|
QMessageBox::critical(parent,QApplication::translate("Main","Error"),msg,QApplication::translate("Main","OK"));
|
||||||
}
|
}
|
||||||
|
|
||||||
QString findPlugin(const QString& filename){
|
QString findPlugin(const QString& filename){
|
||||||
|
|||||||
+7
-4
@@ -33,17 +33,21 @@
|
|||||||
#define APP_SHORT_FUNC "Password Manager"
|
#define APP_SHORT_FUNC "Password Manager"
|
||||||
#define APP_LONG_FUNC "Cross Platform Password Manager"
|
#define APP_LONG_FUNC "Cross Platform Password Manager"
|
||||||
|
|
||||||
#define APP_VERSION "0.2.3"
|
#define APP_VERSION "0.3.0"
|
||||||
|
|
||||||
#define BUILTIN_ICONS 65
|
#define BUILTIN_ICONS 65
|
||||||
|
|
||||||
|
#define CSTR(x)(x.toLocal8Bit().constData())
|
||||||
|
|
||||||
|
class IEntryHandle;
|
||||||
|
|
||||||
typedef enum tKeyType {PASSWORD=0,KEYFILE=1,BOTH=2};
|
typedef enum tKeyType {PASSWORD=0,KEYFILE=1,BOTH=2};
|
||||||
class KpxConfig;
|
class KpxConfig;
|
||||||
|
|
||||||
void createBanner(QLabel *Banner,const QPixmap* symbol,QString text);
|
|
||||||
void createBanner(QPixmap* Pixmap, const QPixmap* IconAlpha,const QString& Text,int Width);
|
void createBanner(QPixmap* Pixmap, const QPixmap* IconAlpha,const QString& Text,int Width);
|
||||||
void createBanner(QPixmap* Pixmap, const QPixmap* IconAlpha,const QString& Text,int Width, QColor Color1, QColor Color2, QColor TextColor);
|
void createBanner(QPixmap* Pixmap, const QPixmap* IconAlpha,const QString& Text,int Width, QColor Color1, QColor Color2, QColor TextColor);
|
||||||
void openBrowser(QString url);
|
void openBrowser(IEntryHandle* entry);
|
||||||
|
void openBrowser(const QString& UrlString);
|
||||||
void showErrMsg(const QString& msg,QWidget* parent=NULL);
|
void showErrMsg(const QString& msg,QWidget* parent=NULL);
|
||||||
QString applicationFilePath();
|
QString applicationFilePath();
|
||||||
QString applicationDirPath();
|
QString applicationDirPath();
|
||||||
@@ -52,7 +56,6 @@ const QPixmap* getPixmap(const QString& name);
|
|||||||
QString decodeFileError(QFile::FileError Code);
|
QString decodeFileError(QFile::FileError Code);
|
||||||
QString findPlugin(const QString& filename);
|
QString findPlugin(const QString& filename);
|
||||||
QString makePathRelative(const QString& Abs,const QString& Cur);
|
QString makePathRelative(const QString& Abs,const QString& Cur);
|
||||||
void loadDefaultDetailViewTemplate();
|
|
||||||
extern QString PluginLoadError;
|
extern QString PluginLoadError;
|
||||||
|
|
||||||
extern KpxConfig *config;
|
extern KpxConfig *config;
|
||||||
|
|||||||
+271
-91
@@ -59,7 +59,7 @@
|
|||||||
#include "dialogs/CollectEntropyDlg.h"
|
#include "dialogs/CollectEntropyDlg.h"
|
||||||
#include "dialogs/CustomizeDetailViewDlg.h"
|
#include "dialogs/CustomizeDetailViewDlg.h"
|
||||||
#include "dialogs/ExpiredEntriesDlg.h"
|
#include "dialogs/ExpiredEntriesDlg.h"
|
||||||
#include "dialogs/TrashCanDlg.h"
|
//#include "dialogs/TrashCanDlg.h" //TODO TrashCan
|
||||||
#include "dialogs/AddBookmarkDlg.h"
|
#include "dialogs/AddBookmarkDlg.h"
|
||||||
#include "dialogs/ManageBookmarksDlg.h"
|
#include "dialogs/ManageBookmarksDlg.h"
|
||||||
|
|
||||||
@@ -72,15 +72,22 @@ Export_Txt export_Txt;
|
|||||||
Export_KeePassX_Xml export_KeePassX_Xml;
|
Export_KeePassX_Xml export_KeePassX_Xml;
|
||||||
|
|
||||||
|
|
||||||
KeepassMainWindow::KeepassMainWindow(const QString& ArgFile,QWidget *parent, Qt::WFlags flags):QMainWindow(parent,flags){
|
KeepassMainWindow::KeepassMainWindow(const QString& ArgFile,bool ArgMin,bool ArgLock,QWidget *parent, Qt::WFlags flags) :QMainWindow(parent,flags){
|
||||||
Start=true;
|
|
||||||
ShutingDown=false;
|
ShutingDown=false;
|
||||||
IsLocked=false;
|
IsLocked=false;
|
||||||
|
InUnLock=false;
|
||||||
|
unlockDlg=NULL;
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
#ifdef QT_WS_MAC
|
#ifdef QT_WS_MAC
|
||||||
setUnifiedTitleAndToolBarOnMac(true);
|
setUnifiedTitleAndToolBarOnMac(true);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef AUTOTYPE
|
||||||
AutoType::MainWin=this;
|
AutoType::MainWin=this;
|
||||||
|
#endif
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
AutoType::registerGlobalShortcut(config->globalShortcut());
|
||||||
|
#endif
|
||||||
|
setWindowModified(false);
|
||||||
setGeometry(config->mainWindowGeometry(geometry()));
|
setGeometry(config->mainWindowGeometry(geometry()));
|
||||||
VSplitter->restoreState(config->vSplitterPos());
|
VSplitter->restoreState(config->vSplitterPos());
|
||||||
HSplitter->restoreState(config->hSplitterPos());
|
HSplitter->restoreState(config->hSplitterPos());
|
||||||
@@ -103,20 +110,42 @@ KeepassMainWindow::KeepassMainWindow(const QString& ArgFile,QWidget *parent, Qt:
|
|||||||
|
|
||||||
setupConnections();
|
setupConnections();
|
||||||
|
|
||||||
|
bool showWindow=true;
|
||||||
FileOpen=false;
|
FileOpen=false;
|
||||||
if(!ArgFile.isEmpty())
|
if(!ArgFile.isEmpty()){
|
||||||
openDatabase(QDir::cleanPath(QDir::current().absoluteFilePath(ArgFile)),false);
|
QString f = QDir::cleanPath(QDir::current().absoluteFilePath(ArgFile));
|
||||||
|
showWindow = !ArgMin;
|
||||||
|
if (ArgLock)
|
||||||
|
fakeOpenDatabase(f);
|
||||||
|
else
|
||||||
|
openDatabase(f,false);
|
||||||
|
}
|
||||||
else if(config->openLastFile() && !config->lastFile().isEmpty()){
|
else if(config->openLastFile() && !config->lastFile().isEmpty()){
|
||||||
QFileInfo file(config->lastFile());
|
QFileInfo file(config->lastFile());
|
||||||
if(file.exists())
|
if(file.exists()){
|
||||||
openDatabase(QDir::cleanPath(QDir::current().absoluteFilePath(config->lastFile())),true);
|
QString f = QDir::cleanPath(QDir::current().absoluteFilePath(config->lastFile()));
|
||||||
|
showWindow = !config->startMinimized();
|
||||||
|
if (config->startLocked())
|
||||||
|
fakeOpenDatabase(f);
|
||||||
|
else
|
||||||
|
openDatabase(f,true);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
config->setLastFile(QString());
|
config->setLastFile(QString());
|
||||||
}
|
}
|
||||||
HelpBrowser = new QAssistantClient(QString(),this);
|
else if (ArgLock){
|
||||||
HelpBrowser->setArguments(QStringList()<< "-profile" << "/home/tarek/Documents/KeePassX/share/keepass/doc/keepassx.adp");
|
showWindow = false;
|
||||||
|
}
|
||||||
|
// TODO HelpBrowser
|
||||||
|
/*HelpBrowser = new QAssistantClient(QString(),this);
|
||||||
|
HelpBrowser->setArguments(QStringList()<< "-profile" << "share/keepass/doc/keepassx.adp");*/
|
||||||
|
|
||||||
createBookmarkActions();
|
createBookmarkActions();
|
||||||
|
|
||||||
|
if (showWindow)
|
||||||
|
show();
|
||||||
|
else if (!config->showSysTrayIcon())
|
||||||
|
showMinimized();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::setupConnections(){
|
void KeepassMainWindow::setupConnections(){
|
||||||
@@ -146,7 +175,9 @@ void KeepassMainWindow::setupConnections(){
|
|||||||
connect(EditSaveAttachmentAction, SIGNAL(triggered()),EntryView, SLOT(OnSaveAttachment()));
|
connect(EditSaveAttachmentAction, SIGNAL(triggered()),EntryView, SLOT(OnSaveAttachment()));
|
||||||
connect(EditSearchAction, SIGNAL(triggered()), this, SLOT(OnSearch()));
|
connect(EditSearchAction, SIGNAL(triggered()), this, SLOT(OnSearch()));
|
||||||
connect(EditGroupSearchAction, SIGNAL(triggered()), this, SLOT(OnGroupSearch()));
|
connect(EditGroupSearchAction, SIGNAL(triggered()), this, SLOT(OnGroupSearch()));
|
||||||
|
#ifdef AUTOTYPE
|
||||||
connect(EditAutoTypeAction,SIGNAL(triggered()),EntryView,SLOT(OnAutoType()));
|
connect(EditAutoTypeAction,SIGNAL(triggered()),EntryView,SLOT(OnAutoType()));
|
||||||
|
#endif
|
||||||
|
|
||||||
connect(ViewShowToolbarAction,SIGNAL(toggled(bool)),this,SLOT(OnViewShowToolbar(bool)));
|
connect(ViewShowToolbarAction,SIGNAL(toggled(bool)),this,SLOT(OnViewShowToolbar(bool)));
|
||||||
connect(ViewShowEntryDetailsAction,SIGNAL(toggled(bool)),this,SLOT(OnViewShowEntryDetails(bool)));
|
connect(ViewShowEntryDetailsAction,SIGNAL(toggled(bool)),this,SLOT(OnViewShowEntryDetails(bool)));
|
||||||
@@ -162,9 +193,9 @@ void KeepassMainWindow::setupConnections(){
|
|||||||
connect(ExtrasSettingsAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasSettings()));
|
connect(ExtrasSettingsAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasSettings()));
|
||||||
connect(ExtrasPasswordGenAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasPasswordGen()));
|
connect(ExtrasPasswordGenAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasPasswordGen()));
|
||||||
connect(ExtrasShowExpiredEntriesAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasShowExpiredEntries()));
|
connect(ExtrasShowExpiredEntriesAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasShowExpiredEntries()));
|
||||||
connect(ExtrasTrashCanAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasTrashCan()));
|
//connect(ExtrasTrashCanAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasTrashCan())); //TODO ExtrasTrashCan
|
||||||
|
|
||||||
connect(HelpHandbookAction,SIGNAL(triggered()),this,SLOT(OnHelpHandbook()));
|
//connect(HelpHandbookAction,SIGNAL(triggered()),this,SLOT(OnHelpHandbook())); //TODO Handbook
|
||||||
connect(HelpAboutAction,SIGNAL(triggered()),this,SLOT(OnHelpAbout()));
|
connect(HelpAboutAction,SIGNAL(triggered()),this,SLOT(OnHelpAbout()));
|
||||||
|
|
||||||
connect(EntryView,SIGNAL(itemActivated(QTreeWidgetItem*,int)),EntryView,SLOT(OnEntryActivated(QTreeWidgetItem*,int)));
|
connect(EntryView,SIGNAL(itemActivated(QTreeWidgetItem*,int)),EntryView,SLOT(OnEntryActivated(QTreeWidgetItem*,int)));
|
||||||
@@ -182,7 +213,7 @@ void KeepassMainWindow::setupConnections(){
|
|||||||
connect(SysTray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(OnSysTrayActivated(QSystemTrayIcon::ActivationReason)));
|
connect(SysTray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(OnSysTrayActivated(QSystemTrayIcon::ActivationReason)));
|
||||||
connect(DetailView,SIGNAL(anchorClicked(const QUrl&)),this,SLOT(OnDetailViewUrlClicked(const QUrl&)));
|
connect(DetailView,SIGNAL(anchorClicked(const QUrl&)),this,SLOT(OnDetailViewUrlClicked(const QUrl&)));
|
||||||
connect(WorkspaceLockedWidget.Button_Unlock,SIGNAL(clicked()),this,SLOT(OnUnLockWorkspace()));
|
connect(WorkspaceLockedWidget.Button_Unlock,SIGNAL(clicked()),this,SLOT(OnUnLockWorkspace()));
|
||||||
connect(WorkspaceLockedWidget.Button_CloseDatabase,SIGNAL(clicked()),this,SLOT(OnFileClose()));
|
connect(WorkspaceLockedWidget.Button_CloseDatabase,SIGNAL(clicked()),this,SLOT(OnLockClose()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::setupToolbar(){
|
void KeepassMainWindow::setupToolbar(){
|
||||||
@@ -234,10 +265,12 @@ void KeepassMainWindow::setupIcons(){
|
|||||||
EditGroupSearchAction->setIcon(getIcon("groupsearch"));
|
EditGroupSearchAction->setIcon(getIcon("groupsearch"));
|
||||||
ExtrasShowExpiredEntriesAction->setIcon(getIcon("expired"));
|
ExtrasShowExpiredEntriesAction->setIcon(getIcon("expired"));
|
||||||
ExtrasPasswordGenAction->setIcon(getIcon("generator"));
|
ExtrasPasswordGenAction->setIcon(getIcon("generator"));
|
||||||
ExtrasTrashCanAction->setIcon(getIcon("trashcan"));
|
//ExtrasTrashCanAction->setIcon(getIcon("trashcan")); //TODO ExtrasTrashCan
|
||||||
ExtrasSettingsAction->setIcon(getIcon("appsettings"));
|
ExtrasSettingsAction->setIcon(getIcon("appsettings"));
|
||||||
|
#ifdef AUTOTYPE
|
||||||
EditAutoTypeAction->setIcon(getIcon("autotype"));
|
EditAutoTypeAction->setIcon(getIcon("autotype"));
|
||||||
HelpHandbookAction->setIcon(getIcon("manual"));
|
#endif
|
||||||
|
//HelpHandbookAction->setIcon(getIcon("manual")); //TODO Handbook
|
||||||
HelpAboutAction->setIcon(getIcon("help"));
|
HelpAboutAction->setIcon(getIcon("help"));
|
||||||
menuBookmarks->menuAction()->setIcon(getIcon("bookmark_folder"));
|
menuBookmarks->menuAction()->setIcon(getIcon("bookmark_folder"));
|
||||||
AddThisAsBookmarkAction->setIcon(getIcon("bookmark_this"));
|
AddThisAsBookmarkAction->setIcon(getIcon("bookmark_this"));
|
||||||
@@ -262,7 +295,9 @@ void KeepassMainWindow::setupMenus(){
|
|||||||
EntryView->ContextMenu->addAction(EditPasswordToClipboardAction);
|
EntryView->ContextMenu->addAction(EditPasswordToClipboardAction);
|
||||||
EntryView->ContextMenu->addAction(EditOpenUrlAction);
|
EntryView->ContextMenu->addAction(EditOpenUrlAction);
|
||||||
EntryView->ContextMenu->addAction(EditSaveAttachmentAction);
|
EntryView->ContextMenu->addAction(EditSaveAttachmentAction);
|
||||||
|
#ifdef AUTOTYPE
|
||||||
EntryView->ContextMenu->addAction(EditAutoTypeAction);
|
EntryView->ContextMenu->addAction(EditAutoTypeAction);
|
||||||
|
#endif
|
||||||
EntryView->ContextMenu->addSeparator();
|
EntryView->ContextMenu->addSeparator();
|
||||||
EntryView->ContextMenu->addAction(EditNewEntryAction);
|
EntryView->ContextMenu->addAction(EditNewEntryAction);
|
||||||
EntryView->ContextMenu->addAction(EditEditEntryAction);
|
EntryView->ContextMenu->addAction(EditEditEntryAction);
|
||||||
@@ -294,12 +329,12 @@ void KeepassMainWindow::setupMenus(){
|
|||||||
case 28: ViewToolButtonSize28Action->setChecked(true); break;
|
case 28: ViewToolButtonSize28Action->setChecked(true); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
SysTrayMenu = new QMenu(tr(APP_DISPLAY_NAME),this);
|
SysTrayMenu = new QMenu(APP_DISPLAY_NAME,this);
|
||||||
SysTrayMenu->addAction(FileUnLockWorkspaceAction);
|
SysTrayMenu->addAction(FileUnLockWorkspaceAction);
|
||||||
SysTrayMenu->addSeparator();
|
SysTrayMenu->addSeparator();
|
||||||
SysTrayMenu->addAction(FileExitAction);
|
SysTrayMenu->addAction(FileExitAction);
|
||||||
SysTray->setContextMenu(SysTrayMenu);
|
SysTray->setContextMenu(SysTrayMenu);
|
||||||
SysTray->setToolTip(tr("%1 %2").arg(APP_DISPLAY_NAME, APP_SHORT_FUNC) + " - " + tr((IsLocked) ? "Locked" : "Unlocked"));
|
SysTray->setToolTip(QString("%1 %2 - %3").arg(APP_DISPLAY_NAME, APP_SHORT_FUNC, (IsLocked) ? tr("Locked") : tr("Unlocked")));
|
||||||
|
|
||||||
#define _add_import(name){\
|
#define _add_import(name){\
|
||||||
QAction* import=new QAction(this);\
|
QAction* import=new QAction(this);\
|
||||||
@@ -333,14 +368,16 @@ void KeepassMainWindow::setupMenus(){
|
|||||||
EditDeleteEntryAction->setShortcut(tr("Ctrl+D"));
|
EditDeleteEntryAction->setShortcut(tr("Ctrl+D"));
|
||||||
EditCloneEntryAction->setShortcut(tr("Ctrl+K"));
|
EditCloneEntryAction->setShortcut(tr("Ctrl+K"));
|
||||||
EditSearchAction->setShortcut(tr("Ctrl+F"));
|
EditSearchAction->setShortcut(tr("Ctrl+F"));
|
||||||
|
#ifdef AUTOTYPE
|
||||||
EditAutoTypeAction->setShortcut(tr("Ctrl+V"));
|
EditAutoTypeAction->setShortcut(tr("Ctrl+V"));
|
||||||
|
#endif
|
||||||
#ifdef Q_WS_MAC
|
#ifdef Q_WS_MAC
|
||||||
FileCloseAction->setShortcut(tr("Ctrl+W"));
|
FileCloseAction->setShortcut(tr("Ctrl+W"));
|
||||||
FileSaveAsAction->setShortcut(tr("Shift+Ctrl+S"));
|
FileSaveAsAction->setShortcut(tr("Shift+Ctrl+S"));
|
||||||
EditGroupSearchAction->setShortcut(tr("Shift+Ctrl+F"));
|
EditGroupSearchAction->setShortcut(tr("Shift+Ctrl+F"));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ExtrasTrashCanAction->setVisible(false); //For KP 2.x only
|
//ExtrasTrashCanAction->setVisible(false); //TODO For KP 2.x only
|
||||||
menuBookmarks->menuAction()->setVisible(config->featureBookmarks());
|
menuBookmarks->menuAction()->setVisible(config->featureBookmarks());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -354,16 +391,28 @@ void KeepassMainWindow::setupDatabaseConnections(IDatabase* DB){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void KeepassMainWindow::openDatabase(QString filename,bool IsAuto){
|
bool KeepassMainWindow::openDatabase(QString filename,bool IsAuto){
|
||||||
|
if (!QFile::exists(filename)){
|
||||||
|
QMessageBox::critical(this,tr("Error")
|
||||||
|
,tr("The database file does not exist."));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if(!IsAuto){
|
if(!IsAuto){
|
||||||
config->setLastKeyLocation(QString());
|
config->setLastKeyLocation(QString());
|
||||||
config->setLastKeyType(PASSWORD);}
|
config->setLastKeyType(PASSWORD);
|
||||||
db=dynamic_cast<IDatabase*>(new Kdb3Database());
|
|
||||||
CPasswordDialog PasswordDlg(this,filename,db,IsAuto,false);
|
|
||||||
switch(PasswordDlg.exec()){
|
|
||||||
case 0: return;
|
|
||||||
case 2: Start=false; return;
|
|
||||||
}
|
}
|
||||||
|
db=dynamic_cast<IDatabase*>(new Kdb3Database());
|
||||||
|
CPasswordDialog PasswordDlg(this,filename,db,(IsAuto&&!InUnLock),false);
|
||||||
|
if (InUnLock){
|
||||||
|
PasswordDlg.setWindowModality(Qt::WindowModal);
|
||||||
|
unlockDlg = &PasswordDlg;
|
||||||
|
}
|
||||||
|
bool rejected = (PasswordDlg.exec()==QDialog::Rejected);
|
||||||
|
if (InUnLock)
|
||||||
|
unlockDlg = NULL;
|
||||||
|
if (rejected)
|
||||||
|
return false;
|
||||||
|
|
||||||
if(PasswordDlg.BookmarkFilename!=QString())
|
if(PasswordDlg.BookmarkFilename!=QString())
|
||||||
filename=PasswordDlg.BookmarkFilename;
|
filename=PasswordDlg.BookmarkFilename;
|
||||||
|
|
||||||
@@ -373,31 +422,49 @@ void KeepassMainWindow::openDatabase(QString filename,bool IsAuto){
|
|||||||
QString err;
|
QString err;
|
||||||
StatusBarGeneral->setText(tr("Loading Database..."));
|
StatusBarGeneral->setText(tr("Loading Database..."));
|
||||||
if(db->load(filename)==true){
|
if(db->load(filename)==true){
|
||||||
|
if (IsLocked)
|
||||||
|
resetLock();
|
||||||
saveLastFilename(filename);
|
saveLastFilename(filename);
|
||||||
setWindowTitle(tr("%1 - KeePassX").arg(filename));
|
setWindowTitle(QString("%1[*] - KeePassX").arg(filename));
|
||||||
GroupView->createItems();
|
GroupView->createItems();
|
||||||
EntryView->showGroup(NULL);
|
EntryView->showGroup(NULL);
|
||||||
setStateFileOpen(true);
|
setStateFileOpen(true);
|
||||||
setStateFileModified(false);
|
setStateFileModified(false);
|
||||||
|
currentFile = filename;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
StatusBarGeneral->setText(tr("Loading Failed"));
|
StatusBarGeneral->setText(tr("Loading Failed"));
|
||||||
QString error=db->getError();
|
QString error=db->getError();
|
||||||
if(error==QString())error=tr("Unknown error while loading database.");
|
if(error.isEmpty())error=tr("Unknown error while loading database.");
|
||||||
QMessageBox::critical(this,tr("Error")
|
QMessageBox::critical(this,tr("Error")
|
||||||
,tr("The following error occured while opening the database:\n%1")
|
,QString("%1\n%2").arg(tr("The following error occured while opening the database:"))
|
||||||
.arg(error),tr("OK"));
|
.arg(error));
|
||||||
if(dynamic_cast<IFilePasswordAuth*>(db)->isKeyError()){
|
if(dynamic_cast<IFilePasswordAuth*>(db)->isKeyError()){
|
||||||
delete db;
|
delete db;
|
||||||
openDatabase(filename,IsAuto);
|
return openDatabase(filename,IsAuto);
|
||||||
}
|
}
|
||||||
else
|
else{
|
||||||
delete db;
|
delete db;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
StatusBarGeneral->setText(tr("Ready"));
|
StatusBarGeneral->setText(tr("Ready"));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool KeepassMainWindow::closeDatabase(){
|
void KeepassMainWindow::fakeOpenDatabase(const QString& filename){
|
||||||
|
if (!QFile::exists(filename)){
|
||||||
|
QMessageBox::critical(this,tr("Error")
|
||||||
|
,tr("The database file does not exist."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
config->setLastFile(filename);
|
||||||
|
currentFile = filename;
|
||||||
|
setLock();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool KeepassMainWindow::closeDatabase(bool lock){
|
||||||
Q_ASSERT(FileOpen);
|
Q_ASSERT(FileOpen);
|
||||||
Q_ASSERT(db!=NULL);
|
Q_ASSERT(db!=NULL);
|
||||||
if(ModFlag){
|
if(ModFlag){
|
||||||
@@ -417,8 +484,13 @@ bool KeepassMainWindow::closeDatabase(){
|
|||||||
GroupView->clear();
|
GroupView->clear();
|
||||||
GroupView->Items.clear();
|
GroupView->Items.clear();
|
||||||
SearchResults.clear();
|
SearchResults.clear();
|
||||||
|
if (lock)
|
||||||
|
IsLocked = true;
|
||||||
setStateFileOpen(false);
|
setStateFileOpen(false);
|
||||||
setWindowTitle("KeePassX Password Manager");
|
if (!lock){
|
||||||
|
setWindowTitle(APP_DISPLAY_NAME);
|
||||||
|
currentFile.clear();
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -431,8 +503,10 @@ void KeepassMainWindow::OnFileNewKdb(){
|
|||||||
if(dlg.exec()==1){
|
if(dlg.exec()==1){
|
||||||
if(FileOpen)
|
if(FileOpen)
|
||||||
if(!closeDatabase())return;
|
if(!closeDatabase())return;
|
||||||
|
if (IsLocked)
|
||||||
|
resetLock();
|
||||||
db=dynamic_cast<IDatabase*>(db_new);
|
db=dynamic_cast<IDatabase*>(db_new);
|
||||||
setWindowTitle(tr("%1 - KeePassX").arg(tr("[new]")));
|
setWindowTitle(QString("[%1][*] - KeePassX").arg(tr("new")));
|
||||||
GroupView->db=db;
|
GroupView->db=db;
|
||||||
EntryView->db=db;
|
EntryView->db=db;
|
||||||
GroupView->createItems();
|
GroupView->createItems();
|
||||||
@@ -466,32 +540,36 @@ void KeepassMainWindow::OnFileOpen(){
|
|||||||
if(!FileDlg.selectedFiles().size())return;*/
|
if(!FileDlg.selectedFiles().size())return;*/
|
||||||
QString filename=KpxFileDialogs::openExistingFile(this,"MainWindow_FileOpen",
|
QString filename=KpxFileDialogs::openExistingFile(this,"MainWindow_FileOpen",
|
||||||
tr("Open Database..."),QStringList()<<tr("KeePass Databases (*.kdb)")<< tr("All Files (*)"));
|
tr("Open Database..."),QStringList()<<tr("KeePass Databases (*.kdb)")<< tr("All Files (*)"));
|
||||||
if(filename==QString())return;
|
if(filename.isEmpty())return;
|
||||||
if(FileOpen)
|
if(FileOpen)
|
||||||
if(!closeDatabase())return;
|
if(!closeDatabase())return;
|
||||||
openDatabase(filename);
|
openDatabase(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::OnFileClose(){
|
void KeepassMainWindow::OnFileClose(){
|
||||||
|
if (IsLocked)
|
||||||
|
OnLockClose();
|
||||||
|
else
|
||||||
closeDatabase();
|
closeDatabase();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::setStateFileOpen(bool IsOpen){
|
void KeepassMainWindow::setStateFileOpen(bool IsOpen){
|
||||||
FileOpen=IsOpen;
|
FileOpen=IsOpen;
|
||||||
FileSaveAction->setEnabled(IsOpen);
|
FileSaveAction->setEnabled(IsOpen);
|
||||||
FileSaveAsAction->setEnabled(IsOpen);
|
FileSaveAsAction->setEnabled(IsOpen);
|
||||||
FileCloseAction->setEnabled(IsOpen);
|
FileCloseAction->setEnabled(IsOpen||IsLocked);
|
||||||
FileSettingsAction->setEnabled(IsOpen);
|
FileSettingsAction->setEnabled(IsOpen);
|
||||||
FileChangeKeyAction->setEnabled(IsOpen);
|
FileChangeKeyAction->setEnabled(IsOpen);
|
||||||
EditSearchAction->setEnabled(IsOpen);
|
EditSearchAction->setEnabled(IsOpen);
|
||||||
GroupView->setEnabled(IsOpen);
|
GroupView->setEnabled(IsOpen);
|
||||||
EntryView->setEnabled(IsOpen);
|
EntryView->setEnabled(IsOpen);
|
||||||
DetailView->setEnabled(IsOpen);
|
DetailView->setEnabled(IsOpen);
|
||||||
QuickSearchEdit->setEnabled(IsOpen);
|
QuickSearchEdit->setEnabled(IsOpen);
|
||||||
ExtrasShowExpiredEntriesAction->setEnabled(IsOpen);
|
ExtrasShowExpiredEntriesAction->setEnabled(IsOpen);
|
||||||
AddThisAsBookmarkAction->setEnabled(IsOpen);
|
AddThisAsBookmarkAction->setEnabled(IsOpen);
|
||||||
|
FileUnLockWorkspaceAction->setEnabled(IsOpen||IsLocked);
|
||||||
|
|
||||||
if(!IsOpen){
|
if(!IsOpen){
|
||||||
EditNewGroupAction->setEnabled(false);
|
EditNewGroupAction->setEnabled(false);
|
||||||
EditEditGroupAction->setEnabled(false);
|
EditEditGroupAction->setEnabled(false);
|
||||||
EditDeleteGroupAction->setEnabled(false);
|
EditDeleteGroupAction->setEnabled(false);
|
||||||
@@ -504,13 +582,14 @@ if(!IsOpen){
|
|||||||
EditCloneEntryAction->setEnabled(false);
|
EditCloneEntryAction->setEnabled(false);
|
||||||
EditDeleteEntryAction->setEnabled(false);
|
EditDeleteEntryAction->setEnabled(false);
|
||||||
EditGroupSearchAction->setEnabled(false);
|
EditGroupSearchAction->setEnabled(false);
|
||||||
|
#ifdef AUTOTYPE
|
||||||
EditAutoTypeAction->setEnabled(false);
|
EditAutoTypeAction->setEnabled(false);
|
||||||
}
|
#endif
|
||||||
else{
|
}
|
||||||
//OnGroupSelectionChanged();
|
/*else{
|
||||||
//OnEntrySelectionChanged();
|
OnGroupSelectionChanged();
|
||||||
}
|
OnEntrySelectionChanged();
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -524,6 +603,7 @@ void KeepassMainWindow::setStateFileModified(bool mod){
|
|||||||
FileSaveAction->setIcon(getIcon("filesave"));
|
FileSaveAction->setIcon(getIcon("filesave"));
|
||||||
else
|
else
|
||||||
FileSaveAction->setIcon(getIcon("filesavedisabled"));
|
FileSaveAction->setIcon(getIcon("filesavedisabled"));
|
||||||
|
setWindowModified(mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::setStateGroupSelected(SelectionState s){
|
void KeepassMainWindow::setStateGroupSelected(SelectionState s){
|
||||||
@@ -604,7 +684,7 @@ void KeepassMainWindow::updateDetailView(){
|
|||||||
|
|
||||||
if(years){
|
if(years){
|
||||||
if(out!=QString())
|
if(out!=QString())
|
||||||
out.prepend(tr(", "));
|
out.prepend(", ");
|
||||||
if(years==1)
|
if(years==1)
|
||||||
out.prepend(tr("1 Year"));
|
out.prepend(tr("1 Year"));
|
||||||
if(years>1)
|
if(years>1)
|
||||||
@@ -612,7 +692,7 @@ void KeepassMainWindow::updateDetailView(){
|
|||||||
}
|
}
|
||||||
else if(days){
|
else if(days){
|
||||||
if(out!=QString())
|
if(out!=QString())
|
||||||
out.append(tr(", "));
|
out.append(", ");
|
||||||
if(days==1)
|
if(days==1)
|
||||||
out.append(tr("1 Day"));
|
out.append(tr("1 Day"));
|
||||||
if(days>1)
|
if(days>1)
|
||||||
@@ -646,7 +726,9 @@ switch(EntrySelection){
|
|||||||
EditCloneEntryAction->setText(tr("Clone Entry"));
|
EditCloneEntryAction->setText(tr("Clone Entry"));
|
||||||
EditDeleteEntryAction->setEnabled(false);
|
EditDeleteEntryAction->setEnabled(false);
|
||||||
EditDeleteEntryAction->setText(tr("Delete Entry"));
|
EditDeleteEntryAction->setText(tr("Delete Entry"));
|
||||||
|
#ifdef AUTOTYPE
|
||||||
EditAutoTypeAction->setEnabled(false);
|
EditAutoTypeAction->setEnabled(false);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case SINGLE:
|
case SINGLE:
|
||||||
EditPasswordToClipboardAction->setEnabled(true);
|
EditPasswordToClipboardAction->setEnabled(true);
|
||||||
@@ -658,7 +740,9 @@ switch(EntrySelection){
|
|||||||
EditCloneEntryAction->setText(tr("Clone Entry"));
|
EditCloneEntryAction->setText(tr("Clone Entry"));
|
||||||
EditDeleteEntryAction->setEnabled(true);
|
EditDeleteEntryAction->setEnabled(true);
|
||||||
EditDeleteEntryAction->setText(tr("Delete Entry"));
|
EditDeleteEntryAction->setText(tr("Delete Entry"));
|
||||||
|
#ifdef AUTOTYPE
|
||||||
EditAutoTypeAction->setEnabled(true);
|
EditAutoTypeAction->setEnabled(true);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case MULTIPLE:
|
case MULTIPLE:
|
||||||
EditPasswordToClipboardAction->setEnabled(false);
|
EditPasswordToClipboardAction->setEnabled(false);
|
||||||
@@ -670,7 +754,9 @@ switch(EntrySelection){
|
|||||||
EditCloneEntryAction->setText(tr("Clone Entries"));
|
EditCloneEntryAction->setText(tr("Clone Entries"));
|
||||||
EditDeleteEntryAction->setEnabled(true);
|
EditDeleteEntryAction->setEnabled(true);
|
||||||
EditDeleteEntryAction->setText(tr("Delete Entries"));
|
EditDeleteEntryAction->setText(tr("Delete Entries"));
|
||||||
|
#ifdef AUTOTYPE
|
||||||
EditAutoTypeAction->setEnabled(false);
|
EditAutoTypeAction->setEnabled(false);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
default: Q_ASSERT(false);
|
default: Q_ASSERT(false);
|
||||||
}
|
}
|
||||||
@@ -686,7 +772,9 @@ switch(EntrySelection){
|
|||||||
EditCloneEntryAction->setText(tr("Clone Entry"));
|
EditCloneEntryAction->setText(tr("Clone Entry"));
|
||||||
EditDeleteEntryAction->setEnabled(false);
|
EditDeleteEntryAction->setEnabled(false);
|
||||||
EditDeleteEntryAction->setText(tr("Delete Entry"));
|
EditDeleteEntryAction->setText(tr("Delete Entry"));
|
||||||
|
#ifdef AUTOTYPE
|
||||||
EditAutoTypeAction->setEnabled(false);
|
EditAutoTypeAction->setEnabled(false);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case SINGLE:
|
case SINGLE:
|
||||||
EditUsernameToClipboardAction->setEnabled(true);
|
EditUsernameToClipboardAction->setEnabled(true);
|
||||||
@@ -698,7 +786,9 @@ switch(EntrySelection){
|
|||||||
EditCloneEntryAction->setText(tr("Clone Entry"));
|
EditCloneEntryAction->setText(tr("Clone Entry"));
|
||||||
EditDeleteEntryAction->setEnabled(true);
|
EditDeleteEntryAction->setEnabled(true);
|
||||||
EditDeleteEntryAction->setText(tr("Delete Entry"));
|
EditDeleteEntryAction->setText(tr("Delete Entry"));
|
||||||
|
#ifdef AUTOTYPE
|
||||||
EditAutoTypeAction->setEnabled(true);
|
EditAutoTypeAction->setEnabled(true);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case MULTIPLE:
|
case MULTIPLE:
|
||||||
EditUsernameToClipboardAction->setEnabled(false);
|
EditUsernameToClipboardAction->setEnabled(false);
|
||||||
@@ -710,7 +800,9 @@ switch(EntrySelection){
|
|||||||
EditCloneEntryAction->setText(tr("Clone Entries"));
|
EditCloneEntryAction->setText(tr("Clone Entries"));
|
||||||
EditDeleteEntryAction->setEnabled(true);
|
EditDeleteEntryAction->setEnabled(true);
|
||||||
EditDeleteEntryAction->setText(tr("Delete Entries"));
|
EditDeleteEntryAction->setText(tr("Delete Entries"));
|
||||||
|
#ifdef AUTOTYPE
|
||||||
EditAutoTypeAction->setEnabled(false);
|
EditAutoTypeAction->setEnabled(false);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
default: Q_ASSERT(false);
|
default: Q_ASSERT(false);
|
||||||
}
|
}
|
||||||
@@ -719,35 +811,35 @@ else Q_ASSERT(false);
|
|||||||
|
|
||||||
|
|
||||||
bool KeepassMainWindow::OnFileSave(){
|
bool KeepassMainWindow::OnFileSave(){
|
||||||
if(!db->file())
|
if(!db->file())
|
||||||
return OnFileSaveAs();
|
return OnFileSaveAs();
|
||||||
saveLastFilename(db->file()->fileName());
|
saveLastFilename(db->file()->fileName());
|
||||||
if(db->save())
|
if(db->save())
|
||||||
setStateFileModified(false);
|
setStateFileModified(false);
|
||||||
else{
|
else{
|
||||||
showErrMsg(tr("File could not be saved.\n%1").arg(db->getError()));
|
showErrMsg(QString("%1\n%2").arg(tr("File could not be saved.")).arg(db->getError()));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool KeepassMainWindow::OnFileSaveAs(){
|
bool KeepassMainWindow::OnFileSaveAs(){
|
||||||
QString filename=KpxFileDialogs::saveFile(this,"MainWindow_FileSave",
|
QString filename=KpxFileDialogs::saveFile(this,"MainWindow_FileSave",
|
||||||
tr("Save Database..."),QStringList()<<tr("KeePass Databases (*.kdb)")<< tr("All Files (*)"));
|
tr("Save Database..."),QStringList()<<tr("KeePass Databases (*.kdb)")<< tr("All Files (*)"));
|
||||||
if(filename==QString())return false;
|
if(filename.isEmpty())return false;
|
||||||
if(!db->changeFile(filename)){
|
if(!db->changeFile(filename)){
|
||||||
showErrMsg(tr("File could not be saved.\n%1").arg(db->getError()));
|
showErrMsg(QString("%1\n%2").arg(tr("File could not be saved.")).arg(db->getError()));
|
||||||
db->changeFile(QString());
|
db->changeFile(QString());
|
||||||
setWindowTitle(tr("KeePassX - [unsaved]").arg(filename));
|
//setWindowTitle(tr("KeePassX - [unsaved]").arg(filename));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
setWindowTitle(tr("%1 - KeePassX").arg(filename));
|
setWindowTitle(QString("%1[*] - KeePassX").arg(filename));
|
||||||
return OnFileSave();
|
return OnFileSave();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::OnFileSettings(){
|
void KeepassMainWindow::OnFileSettings(){
|
||||||
CDbSettingsDlg dlg(this,db);
|
CDbSettingsDlg dlg(this,db);
|
||||||
if(dlg.exec())setStateFileModified(true);
|
if(dlg.exec()) setStateFileModified(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::OnFileChangeKey(){
|
void KeepassMainWindow::OnFileChangeKey(){
|
||||||
@@ -782,7 +874,7 @@ void KeepassMainWindow::OnImport(QAction* action){
|
|||||||
GroupView->db=db;
|
GroupView->db=db;
|
||||||
EntryView->db=db;
|
EntryView->db=db;
|
||||||
setupDatabaseConnections(db);
|
setupDatabaseConnections(db);
|
||||||
setWindowTitle(tr("* - KeePassX"));
|
setWindowTitle(QString("[%1][*] - KeePassX").arg(tr("new")));
|
||||||
GroupView->createItems();
|
GroupView->createItems();
|
||||||
EntryView->showGroup(NULL);
|
EntryView->showGroup(NULL);
|
||||||
setStateFileOpen(true);
|
setStateFileOpen(true);
|
||||||
@@ -793,18 +885,16 @@ void KeepassMainWindow::OnImport(QAction* action){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
void KeepassMainWindow::removeFromSearchResults(int id){
|
void KeepassMainWindow::removeFromSearchResults(int id){
|
||||||
/*
|
|
||||||
for(int i=0; i<SearchResults.size();i++){
|
for(int i=0; i<SearchResults.size();i++){
|
||||||
if(SearchResults[i]==id){
|
if(SearchResults[i]==id){
|
||||||
SearchResults.removeAt(i);
|
SearchResults.removeAt(i);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
void KeepassMainWindow::search(IGroupHandle* group){
|
void KeepassMainWindow::search(IGroupHandle* group){
|
||||||
SearchDialog dlg(db,group,this);
|
SearchDialog dlg(db,group,this);
|
||||||
@@ -855,14 +945,21 @@ setStateFileModified(true);
|
|||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::closeEvent(QCloseEvent* e){
|
void KeepassMainWindow::closeEvent(QCloseEvent* e){
|
||||||
if(!ShutingDown && config->minimizeToTray()){
|
if(!ShutingDown && config->showSysTrayIcon() && config->minimizeToTray()){
|
||||||
e->ignore();
|
e->ignore();
|
||||||
|
if (config->lockOnMinimize() && !IsLocked && FileOpen)
|
||||||
|
OnUnLockWorkspace();
|
||||||
hide();
|
hide();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef GLOBAL_AUTOTYPE
|
||||||
|
AutoType::unregisterGlobalShortcut();
|
||||||
|
#endif
|
||||||
|
|
||||||
config->setMainWindowGeometry(geometry());
|
config->setMainWindowGeometry(geometry());
|
||||||
config->setVSplitterPos(VSplitter->saveState());
|
config->setVSplitterPos(VSplitter->saveState());
|
||||||
|
if (config->showEntryDetails())
|
||||||
config->setHSplitterPos(HSplitter->saveState());
|
config->setHSplitterPos(HSplitter->saveState());
|
||||||
config->setShowStatusbar(statusBar()->isVisible());
|
config->setShowStatusbar(statusBar()->isVisible());
|
||||||
|
|
||||||
@@ -877,8 +974,31 @@ void KeepassMainWindow::closeEvent(QCloseEvent* e){
|
|||||||
else
|
else
|
||||||
e->accept();
|
e->accept();
|
||||||
delete SysTray;
|
delete SysTray;
|
||||||
|
QCoreApplication::quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KeepassMainWindow::hideEvent(QHideEvent* event){
|
||||||
|
if (event->spontaneous() && QApplication::activeModalWidget()==NULL){
|
||||||
|
if (config->lockOnMinimize() && !IsLocked && FileOpen)
|
||||||
|
OnUnLockWorkspace();
|
||||||
|
if (config->showSysTrayIcon() && config->minimizeTray()){
|
||||||
|
setVisible(false);
|
||||||
|
event->accept();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QMainWindow::hideEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KeepassMainWindow::showEvent(QShowEvent* event){
|
||||||
|
if (IsLocked && !InUnLock && event->spontaneous()){
|
||||||
|
showNormal(); // workaround for some graphic glitches
|
||||||
|
OnUnLockWorkspace();
|
||||||
|
}
|
||||||
|
|
||||||
|
QMainWindow::showEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::OnExtrasSettings(){
|
void KeepassMainWindow::OnExtrasSettings(){
|
||||||
CSettingsDlg dlg(this);
|
CSettingsDlg dlg(this);
|
||||||
@@ -894,11 +1014,12 @@ AboutDialog dlg(this);
|
|||||||
dlg.exec();
|
dlg.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::OnHelpHandbook(){
|
//TODO Handbook
|
||||||
|
/*void KeepassMainWindow::OnHelpHandbook(){
|
||||||
HelpBrowser->openAssistant();
|
HelpBrowser->openAssistant();
|
||||||
|
|
||||||
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
void KeepassMainWindow::OnViewShowToolbar(bool show){
|
void KeepassMainWindow::OnViewShowToolbar(bool show){
|
||||||
config->setShowToolbar(show);
|
config->setShowToolbar(show);
|
||||||
@@ -960,8 +1081,21 @@ void KeepassMainWindow::OnViewToolbarIconSize28(bool state){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::OnSysTrayActivated(QSystemTrayIcon::ActivationReason reason){
|
void KeepassMainWindow::OnSysTrayActivated(QSystemTrayIcon::ActivationReason reason){
|
||||||
if(reason!=QSystemTrayIcon::Context)
|
if(reason!=QSystemTrayIcon::Context){
|
||||||
this->show();
|
bool unlockActive = (unlockDlg!=NULL && unlockDlg->isActiveWindow());
|
||||||
|
if (isVisible()){
|
||||||
|
if (unlockDlg!=NULL)
|
||||||
|
unlockDlg->reject();
|
||||||
|
else if (config->lockOnMinimize() && !IsLocked && FileOpen)
|
||||||
|
OnUnLockWorkspace();
|
||||||
|
hide();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
showNormal();
|
||||||
|
if (IsLocked)
|
||||||
|
OnUnLockWorkspace();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::OnExtrasPasswordGen(){
|
void KeepassMainWindow::OnExtrasPasswordGen(){
|
||||||
@@ -992,13 +1126,14 @@ void KeepassMainWindow::OnExtrasShowExpiredEntries(){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::OnExtrasTrashCan(){
|
//TODO TrashCan
|
||||||
|
/*void KeepassMainWindow::OnExtrasTrashCan(){
|
||||||
TrashCanDialog dlg(this,db,db->expiredEntries());
|
TrashCanDialog dlg(this,db,db->expiredEntries());
|
||||||
if(dlg.exec()==QDialog::Accepted){
|
if(dlg.exec()==QDialog::Accepted){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
void KeepassMainWindow::OnDetailViewUrlClicked(const QUrl& url){
|
void KeepassMainWindow::OnDetailViewUrlClicked(const QUrl& url){
|
||||||
openBrowser(url.toString());
|
openBrowser(url.toString());
|
||||||
@@ -1006,24 +1141,69 @@ void KeepassMainWindow::OnDetailViewUrlClicked(const QUrl& url){
|
|||||||
|
|
||||||
void KeepassMainWindow::OnUnLockWorkspace(){
|
void KeepassMainWindow::OnUnLockWorkspace(){
|
||||||
if(IsLocked){
|
if(IsLocked){
|
||||||
LockedCentralWidget->setVisible(false);
|
if (InUnLock) return;
|
||||||
LockedCentralWidget->setParent(NULL);
|
InUnLock = true;
|
||||||
setCentralWidget(NormalCentralWidget);
|
if ( openDatabase(currentFile,true) ){
|
||||||
NormalCentralWidget->setVisible(true);
|
QTreeWidgetItem* item = GroupView->invisibleRootItem();
|
||||||
SysTray->setIcon(getIcon("keepassx_large"));
|
if (lockGroup.size()>0){
|
||||||
SysTray->setToolTip(tr("%1 %2").arg(APP_DISPLAY_NAME, APP_SHORT_FUNC) + " - " + tr("Unlocked"));
|
for (int i=0; i<lockGroup.size(); i++){
|
||||||
FileUnLockWorkspaceAction->setText(tr("&Lock Workspace"));
|
item = item->child(lockGroup[i]);
|
||||||
IsLocked=false;
|
if (item==NULL) break;
|
||||||
|
}
|
||||||
|
if (item!=NULL)
|
||||||
|
GroupView->setCurrentItem(item);
|
||||||
|
lockGroup.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
InUnLock = false;
|
||||||
} else {
|
} else {
|
||||||
|
QTreeWidgetItem* item = GroupView->currentItem();
|
||||||
|
bool root = false;
|
||||||
|
while (item!=NULL){
|
||||||
|
QTreeWidgetItem* parent = item->parent();
|
||||||
|
if (parent==NULL && !root) {
|
||||||
|
parent = GroupView->invisibleRootItem();
|
||||||
|
root = true;
|
||||||
|
}
|
||||||
|
if (parent!=NULL)
|
||||||
|
lockGroup.prepend(parent->indexOfChild(item));
|
||||||
|
item = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (closeDatabase(true))
|
||||||
|
setLock();
|
||||||
|
else
|
||||||
|
lockGroup.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KeepassMainWindow::OnLockClose(){
|
||||||
|
resetLock();
|
||||||
|
setStateFileOpen(false);
|
||||||
|
setWindowTitle(APP_DISPLAY_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KeepassMainWindow::setLock(){
|
||||||
NormalCentralWidget->setVisible(false);
|
NormalCentralWidget->setVisible(false);
|
||||||
NormalCentralWidget->setParent(NULL);
|
NormalCentralWidget->setParent(NULL);
|
||||||
setCentralWidget(LockedCentralWidget);
|
setCentralWidget(LockedCentralWidget);
|
||||||
LockedCentralWidget->setVisible(true);
|
LockedCentralWidget->setVisible(true);
|
||||||
SysTray->setIcon(getIcon("keepassx_locked"));
|
SysTray->setIcon(getIcon("keepassx_locked"));
|
||||||
SysTray->setToolTip(tr("%1 %2").arg(APP_DISPLAY_NAME, APP_SHORT_FUNC) + " - " + tr("Locked"));
|
SysTray->setToolTip(QString("%1 %2").arg(APP_DISPLAY_NAME, APP_SHORT_FUNC) + " - " + tr("Locked"));
|
||||||
FileUnLockWorkspaceAction->setText(tr("Un&lock Workspace"));
|
FileUnLockWorkspaceAction->setText(tr("Un&lock Workspace"));
|
||||||
IsLocked=true;
|
IsLocked=true;
|
||||||
}
|
setStateFileOpen(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KeepassMainWindow::resetLock(){
|
||||||
|
LockedCentralWidget->setVisible(false);
|
||||||
|
LockedCentralWidget->setParent(NULL);
|
||||||
|
setCentralWidget(NormalCentralWidget);
|
||||||
|
NormalCentralWidget->setVisible(true);
|
||||||
|
SysTray->setIcon(getIcon("keepassx_large"));
|
||||||
|
SysTray->setToolTip(QString("%1 %2").arg(APP_DISPLAY_NAME, APP_SHORT_FUNC) + " - " + tr("Unlocked"));
|
||||||
|
FileUnLockWorkspaceAction->setText(tr("&Lock Workspace"));
|
||||||
|
IsLocked=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::OnBookmarkTriggered(QAction* action){
|
void KeepassMainWindow::OnBookmarkTriggered(QAction* action){
|
||||||
|
|||||||
+19
-10
@@ -27,7 +27,7 @@
|
|||||||
#include <QFont>
|
#include <QFont>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
#include <qapplication.h>
|
#include <QApplication>
|
||||||
#include <QShowEvent>
|
#include <QShowEvent>
|
||||||
#include <QTranslator>
|
#include <QTranslator>
|
||||||
#include <QDropEvent>
|
#include <QDropEvent>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
#include <QSystemTrayIcon>
|
#include <QSystemTrayIcon>
|
||||||
#include <QAssistantClient>
|
//#include <QAssistantClient> //TODO HelpBrowser
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
|
|
||||||
#include "Kdb3Database.h"
|
#include "Kdb3Database.h"
|
||||||
@@ -52,9 +52,8 @@
|
|||||||
class KeepassMainWindow : public QMainWindow, public Ui_MainWindow{
|
class KeepassMainWindow : public QMainWindow, public Ui_MainWindow{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
KeepassMainWindow (const QString& ArgFile,QWidget *parent=0, Qt::WFlags flags=0);
|
KeepassMainWindow (const QString& ArgFile,bool ArgMin,bool ArgLock,QWidget *parent=0, Qt::WFlags flags=0);
|
||||||
IDatabase* db;
|
IDatabase* db;
|
||||||
bool Start;
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void entryChanged();
|
void entryChanged();
|
||||||
@@ -85,9 +84,9 @@ class KeepassMainWindow : public QMainWindow, public Ui_MainWindow{
|
|||||||
void OnExtrasSettings();
|
void OnExtrasSettings();
|
||||||
void OnExtrasPasswordGen();
|
void OnExtrasPasswordGen();
|
||||||
void OnExtrasShowExpiredEntries();
|
void OnExtrasShowExpiredEntries();
|
||||||
void OnExtrasTrashCan();
|
//void OnExtrasTrashCan(); //TODO TrashCan
|
||||||
void OnHelpAbout();
|
void OnHelpAbout();
|
||||||
void OnHelpHandbook();
|
//void OnHelpHandbook(); //TODO Handbook
|
||||||
void OnItemExpanded(QTreeWidgetItem*);
|
void OnItemExpanded(QTreeWidgetItem*);
|
||||||
void OnItemCollaped(QTreeWidgetItem*);
|
void OnItemCollaped(QTreeWidgetItem*);
|
||||||
void OnShowSearchResults();
|
void OnShowSearchResults();
|
||||||
@@ -97,9 +96,14 @@ class KeepassMainWindow : public QMainWindow, public Ui_MainWindow{
|
|||||||
void OnExport(QAction*);
|
void OnExport(QAction*);
|
||||||
void OnDetailViewUrlClicked(const QUrl& url);
|
void OnDetailViewUrlClicked(const QUrl& url);
|
||||||
void OnUnLockWorkspace();
|
void OnUnLockWorkspace();
|
||||||
|
void OnLockClose();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void closeEvent(QCloseEvent* event);
|
void closeEvent(QCloseEvent* event);
|
||||||
|
void hideEvent(QHideEvent* event);
|
||||||
|
void showEvent(QShowEvent* event);
|
||||||
|
void setLock();
|
||||||
|
void resetLock();
|
||||||
SelectionState GroupSelection, EntrySelection;
|
SelectionState GroupSelection, EntrySelection;
|
||||||
bool FileOpen;
|
bool FileOpen;
|
||||||
bool ModFlag;
|
bool ModFlag;
|
||||||
@@ -113,11 +117,12 @@ class KeepassMainWindow : public QMainWindow, public Ui_MainWindow{
|
|||||||
void setStateFileModified(bool);
|
void setStateFileModified(bool);
|
||||||
void setStateGroupSelected(SelectionState s);
|
void setStateGroupSelected(SelectionState s);
|
||||||
void setStateEntrySelected(SelectionState s);
|
void setStateEntrySelected(SelectionState s);
|
||||||
void openDatabase(QString filename,bool IsAuto=false);
|
bool openDatabase(QString filename,bool IsAuto=false);
|
||||||
|
void fakeOpenDatabase(const QString& filename);
|
||||||
void setupDatabaseConnections(IDatabase* DB);
|
void setupDatabaseConnections(IDatabase* DB);
|
||||||
bool closeDatabase();
|
bool closeDatabase(bool lock=false);
|
||||||
void search(IGroupHandle* Group);
|
void search(IGroupHandle* Group);
|
||||||
void removeFromSearchResults(int sID);
|
//void removeFromSearchResults(int sID);
|
||||||
void updateDetailView();
|
void updateDetailView();
|
||||||
void exportDatabase(IExport* exporter,QStringList filters);
|
void exportDatabase(IExport* exporter,QStringList filters);
|
||||||
void saveLastFilename(const QString& filename);
|
void saveLastFilename(const QString& filename);
|
||||||
@@ -129,11 +134,15 @@ class KeepassMainWindow : public QMainWindow, public Ui_MainWindow{
|
|||||||
QSystemTrayIcon* SysTray;
|
QSystemTrayIcon* SysTray;
|
||||||
QAction* ViewShowToolbarAction;
|
QAction* ViewShowToolbarAction;
|
||||||
QMenu* SysTrayMenu;
|
QMenu* SysTrayMenu;
|
||||||
QAssistantClient* HelpBrowser;
|
//QAssistantClient* HelpBrowser; //TODO HelpBrowser
|
||||||
QWidget* NormalCentralWidget;
|
QWidget* NormalCentralWidget;
|
||||||
QWidget* LockedCentralWidget;
|
QWidget* LockedCentralWidget;
|
||||||
Ui_WorkspaceLockedWidget WorkspaceLockedWidget;
|
Ui_WorkspaceLockedWidget WorkspaceLockedWidget;
|
||||||
bool ShutingDown;
|
bool ShutingDown;
|
||||||
|
bool InUnLock;
|
||||||
|
QList<int> lockGroup;
|
||||||
|
QDialog* unlockDlg;
|
||||||
|
QString currentFile;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+47
-15
@@ -19,20 +19,42 @@ isEmpty(PREFIX){
|
|||||||
}
|
}
|
||||||
|
|
||||||
unix : !macx {
|
unix : !macx {
|
||||||
|
!isEqual(AUTOTYPE,0){
|
||||||
|
DEFINES += AUTOTYPE
|
||||||
|
!isEqual(GLOBAL_AUTOTYPE,0){
|
||||||
|
DEFINES += GLOBAL_AUTOTYPE
|
||||||
|
}
|
||||||
|
}
|
||||||
target.path = $${PREFIX}/bin
|
target.path = $${PREFIX}/bin
|
||||||
data.path = $${PREFIX}/share/keepass
|
data.path = $${PREFIX}/share/keepass
|
||||||
LIBS += -lXtst -lQtDBus
|
pixmaps.files = ../share/pixmaps/*
|
||||||
SOURCES += lib/AutoType_X11.cpp
|
pixmaps.path = $${PREFIX}/share/pixmaps
|
||||||
|
desktop.files = ../share/applications/*
|
||||||
|
desktop.path = $${PREFIX}/share/applications
|
||||||
|
INSTALLS += pixmaps desktop
|
||||||
|
contains(DEFINES,AUTOTYPE){
|
||||||
|
LIBS += -lXtst
|
||||||
|
SOURCES += lib/HelperX11.cpp lib/AutoType_X11.cpp
|
||||||
|
HEADERS += lib/HelperX11.h
|
||||||
}
|
}
|
||||||
|
contains(DEFINES,GLOBAL_AUTOTYPE){
|
||||||
|
SOURCES += Application_X11.cpp
|
||||||
|
HEADERS += Application_X11.h
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
contains(DEFINES,GLOBAL_AUTOTYPE){
|
||||||
|
FORMS += forms/AutoTypeDlg.ui
|
||||||
|
HEADERS += dialogs/AutoTypeDlg.h
|
||||||
|
SOURCES += dialogs/AutoTypeDlg.cpp
|
||||||
|
}
|
||||||
|
|
||||||
macx {
|
macx {
|
||||||
target.path = /Applications
|
target.path = /Applications
|
||||||
data.path = /Applications/keepass.app/Contents/share/keepass
|
data.path = /Applications/keepass.app/Contents/share/keepass
|
||||||
SOURCES += lib/AutoType_X11.cpp
|
|
||||||
}
|
}
|
||||||
|
|
||||||
win32 {
|
win32 {
|
||||||
SOURCES += lib/AutoType_Win.cpp
|
|
||||||
TARGET = ../$$TARGET
|
TARGET = ../$$TARGET
|
||||||
QMAKE_LINK_OBJECT_SCRIPT = ../build/$$QMAKE_LINK_OBJECT_SCRIPT
|
QMAKE_LINK_OBJECT_SCRIPT = ../build/$$QMAKE_LINK_OBJECT_SCRIPT
|
||||||
|
|
||||||
@@ -52,7 +74,7 @@ FORMS += forms/EditGroupDlg.ui \
|
|||||||
forms/CollectEntropyDlg.ui \
|
forms/CollectEntropyDlg.ui \
|
||||||
forms/CustomizeDetailViewDlg.ui \
|
forms/CustomizeDetailViewDlg.ui \
|
||||||
forms/CalendarDlg.ui \
|
forms/CalendarDlg.ui \
|
||||||
forms/TrashCanDlg.ui \
|
# forms/TrashCanDlg.ui \
|
||||||
forms/ExpiredEntriesDlg.ui \
|
forms/ExpiredEntriesDlg.ui \
|
||||||
forms/WorkspaceLockedWidget.ui \
|
forms/WorkspaceLockedWidget.ui \
|
||||||
forms/AddBookmarkDlg.ui \
|
forms/AddBookmarkDlg.ui \
|
||||||
@@ -91,12 +113,13 @@ HEADERS += lib/IniReader.h \
|
|||||||
dialogs/CustomizeDetailViewDlg.h \
|
dialogs/CustomizeDetailViewDlg.h \
|
||||||
dialogs/CalendarDlg.h \
|
dialogs/CalendarDlg.h \
|
||||||
dialogs/ExpiredEntriesDlg.h \
|
dialogs/ExpiredEntriesDlg.h \
|
||||||
dialogs/TrashCanDlg.h \
|
# dialogs/TrashCanDlg.h \
|
||||||
lib/random.h \
|
lib/random.h \
|
||||||
Database.h \
|
Database.h \
|
||||||
lib/KdePlugin.h \
|
# lib/KdePlugin.h \
|
||||||
lib/AutoType.h \
|
lib/AutoType.h \
|
||||||
lib/FileDialogs.h \
|
lib/FileDialogs.h \
|
||||||
|
lib/ShortcutWidget.h \
|
||||||
global.h \
|
global.h \
|
||||||
main.h \
|
main.h \
|
||||||
lib/GroupView.h \
|
lib/GroupView.h \
|
||||||
@@ -119,7 +142,7 @@ HEADERS += lib/IniReader.h \
|
|||||||
plugins/interfaces/IGnomeInit.h \
|
plugins/interfaces/IGnomeInit.h \
|
||||||
plugins/interfaces/IIconTheme.h \
|
plugins/interfaces/IIconTheme.h \
|
||||||
KpxConfig.h \
|
KpxConfig.h \
|
||||||
KpxFirefox.h \
|
# KpxFirefox.h \
|
||||||
dialogs/AddBookmarkDlg.h \
|
dialogs/AddBookmarkDlg.h \
|
||||||
lib/bookmarks.h \
|
lib/bookmarks.h \
|
||||||
dialogs/ManageBookmarksDlg.h
|
dialogs/ManageBookmarksDlg.h
|
||||||
@@ -153,15 +176,16 @@ SOURCES += lib/UrlLabel.cpp \
|
|||||||
dialogs/CustomizeDetailViewDlg.cpp \
|
dialogs/CustomizeDetailViewDlg.cpp \
|
||||||
dialogs/CalendarDlg.cpp \
|
dialogs/CalendarDlg.cpp \
|
||||||
dialogs/ExpiredEntriesDlg.cpp \
|
dialogs/ExpiredEntriesDlg.cpp \
|
||||||
dialogs/TrashCanDlg.cpp \
|
# dialogs/TrashCanDlg.cpp \
|
||||||
lib/random.cpp \
|
lib/random.cpp \
|
||||||
Database.cpp \
|
Database.cpp \
|
||||||
lib/KdePlugin.cpp \
|
# lib/KdePlugin.cpp \
|
||||||
lib/GroupView.cpp \
|
lib/GroupView.cpp \
|
||||||
lib/EntryView.cpp \
|
lib/EntryView.cpp \
|
||||||
lib/FileDialogs.cpp \
|
lib/FileDialogs.cpp \
|
||||||
crypto/arcfour.cpp \
|
crypto/arcfour.cpp \
|
||||||
lib/KpFileIconProvider.cpp \
|
lib/KpFileIconProvider.cpp \
|
||||||
|
lib/ShortcutWidget.cpp \
|
||||||
crypto/aescrypt.c \
|
crypto/aescrypt.c \
|
||||||
crypto/aeskey.c \
|
crypto/aeskey.c \
|
||||||
crypto/aestab.c \
|
crypto/aestab.c \
|
||||||
@@ -170,7 +194,7 @@ SOURCES += lib/UrlLabel.cpp \
|
|||||||
crypto/yarrow.cpp \
|
crypto/yarrow.cpp \
|
||||||
lib/WaitAnimationWidget.cpp \
|
lib/WaitAnimationWidget.cpp \
|
||||||
KpxConfig.cpp \
|
KpxConfig.cpp \
|
||||||
KpxFirefox.cpp \
|
# KpxFirefox.cpp \
|
||||||
dialogs/AddBookmarkDlg.cpp \
|
dialogs/AddBookmarkDlg.cpp \
|
||||||
lib/bookmarks.cpp \
|
lib/bookmarks.cpp \
|
||||||
dialogs/ManageBookmarksDlg.cpp
|
dialogs/ManageBookmarksDlg.cpp
|
||||||
@@ -179,11 +203,12 @@ MOC_DIR = ../build/moc
|
|||||||
UI_DIR = ../build/ui
|
UI_DIR = ../build/ui
|
||||||
OBJECTS_DIR = ../build/
|
OBJECTS_DIR = ../build/
|
||||||
RCC_DIR = ../build/rcc
|
RCC_DIR = ../build/rcc
|
||||||
CONFIG += debug \
|
CONFIG = qt \
|
||||||
qt \
|
uic \
|
||||||
|
resources \
|
||||||
thread \
|
thread \
|
||||||
warn_off \
|
stl \
|
||||||
assistant
|
warn_off
|
||||||
QT += xml
|
QT += xml
|
||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
INCLUDEPATH += . \
|
INCLUDEPATH += . \
|
||||||
@@ -194,3 +219,10 @@ export \
|
|||||||
import \
|
import \
|
||||||
dialogs \
|
dialogs \
|
||||||
./
|
./
|
||||||
|
|
||||||
|
isEqual(RELEASE,1){
|
||||||
|
CONFIG += release
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
CONFIG += debug
|
||||||
|
}
|
||||||
|
|||||||
+411
-844
File diff suppressed because it is too large
Load Diff
+394
-897
File diff suppressed because it is too large
Load Diff
+475
-969
File diff suppressed because it is too large
Load Diff
+414
-877
File diff suppressed because it is too large
Load Diff
+400
-853
File diff suppressed because it is too large
Load Diff
+1045
-1601
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user