templatesinsertcommand.cpp
00001 /* -*- mode: C++; c-file-style: "gnu" -*- 00002 * kmail: KDE mail client 00003 * This file: Copyright (C) 2006 Dmitry Morozhnikov <dmiceman@mail.ru> 00004 * 00005 * This program is free software; you can redistribute it and/or modify 00006 * it under the terms of the GNU General Public License as published by 00007 * the Free Software Foundation; either version 2 of the License, or 00008 * (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program; if not, write to the Free Software 00017 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00018 * 00019 */ 00020 00021 #include <config.h> 00022 00023 #include <tqpushbutton.h> 00024 #include <tdeaction.h> 00025 #include <tdeactionclasses.h> 00026 #include <tdepopupmenu.h> 00027 #include <tdelocale.h> 00028 #include <tqsignalmapper.h> 00029 #include <kdebug.h> 00030 00031 #include "templatesinsertcommand.h" 00032 00033 TemplatesInsertCommand::TemplatesInsertCommand( TQWidget *parent, 00034 const char *name ) 00035 : TQPushButton( parent, name ) 00036 { 00037 setText( i18n( "&Insert Command..." ) ); 00038 connect( this, TQT_SIGNAL( clicked() ), 00039 this, TQT_SLOT( slotClicked() ) ); 00040 00041 TDEAction *action; 00042 TDEActionMenu *menu; 00043 00044 TQSignalMapper *mapper = new TQSignalMapper( TQT_TQOBJECT(this) ); 00045 connect( mapper, TQT_SIGNAL( mapped(int) ), 00046 this, TQT_SLOT( slotMapped(int) ) ); 00047 00048 mMenu = new TDEActionMenu( i18n( "Insert Command..." ), TQT_TQOBJECT(this) ); 00049 00050 // ****************************************************** 00051 menu = new TDEActionMenu( i18n( "Original Message" ), mMenu ); 00052 mMenu->insert( menu ); 00053 00054 action = new TDEAction( i18n("Quoted Message"), 00055 0, mapper, TQT_SLOT( map() ), menu ); 00056 mapper->setMapping( action, CQuote ); 00057 menu->insert( action ); 00058 action = new TDEAction( i18n("Message Text as Is"), 00059 0, mapper, TQT_SLOT( map() ), menu ); 00060 mapper->setMapping( action, CText ); 00061 menu->insert( action ); 00062 action = new TDEAction( i18n("Message Id"), 00063 0, mapper, TQT_SLOT( map() ), menu ); 00064 mapper->setMapping( action, COMsgId ); 00065 menu->insert( action ); 00066 action = new TDEAction( i18n("Date"), 00067 0, mapper, TQT_SLOT( map() ), menu ); 00068 mapper->setMapping( action, CODate ); 00069 menu->insert( action ); 00070 action = new TDEAction( i18n("Date in Short Format"), 00071 0, mapper, TQT_SLOT( map() ), menu ); 00072 mapper->setMapping( action, CODateShort ); 00073 menu->insert( action ); 00074 action = new TDEAction( i18n("Date in C Locale"), 00075 0, mapper, TQT_SLOT( map() ), menu ); 00076 mapper->setMapping( action, CODateEn ); 00077 menu->insert( action ); 00078 action = new TDEAction( i18n("Day of Week"), 00079 0, mapper, TQT_SLOT( map() ), menu ); 00080 mapper->setMapping( action, CODow ); 00081 menu->insert( action ); 00082 action = new TDEAction( i18n("Time"), 00083 0, mapper, TQT_SLOT( map() ), menu ); 00084 mapper->setMapping( action, COTime ); 00085 menu->insert( action ); 00086 action = new TDEAction( i18n("Time in Long Format"), 00087 0, mapper, TQT_SLOT( map() ), menu ); 00088 mapper->setMapping( action, COTimeLong ); 00089 menu->insert( action ); 00090 action = new TDEAction( i18n("Time in C Locale"), 00091 0, mapper, TQT_SLOT( map() ), menu ); 00092 mapper->setMapping( action, COTimeLongEn ); 00093 menu->insert( action ); 00094 action = new TDEAction( i18n("To Field Address"), 00095 0, mapper, TQT_SLOT( map() ), menu ); 00096 mapper->setMapping( action, COToAddr ); 00097 menu->insert( action ); 00098 action = new TDEAction( i18n("To Field Name"), 00099 0, mapper, TQT_SLOT( map() ), menu ); 00100 mapper->setMapping( action, COToName ); 00101 menu->insert( action ); 00102 action = new TDEAction( i18n("To Field First Name"), 00103 0, mapper, TQT_SLOT( map() ), menu ); 00104 mapper->setMapping( action, COToFName ); 00105 menu->insert( action ); 00106 action = new TDEAction( i18n("To Field Last Name"), 00107 0, mapper, TQT_SLOT( map() ), menu ); 00108 mapper->setMapping( action, COToLName ); 00109 menu->insert( action ); 00110 action = new TDEAction( i18n( "CC Field Address" ), 00111 0, mapper, TQT_SLOT( map() ), menu ); 00112 mapper->setMapping( action, COCCAddr ); 00113 menu->insert( action ); 00114 action = new TDEAction( i18n( "CC Field Name" ), 00115 0, mapper, TQT_SLOT( map() ), menu ); 00116 mapper->setMapping( action, COCCName ); 00117 menu->insert( action ); 00118 action = new TDEAction( i18n( "CC Field First Name" ), 00119 0, mapper, TQT_SLOT( map() ), menu ); 00120 mapper->setMapping( action, COCCFName ); 00121 menu->insert( action ); 00122 action = new TDEAction( i18n( "CC Field Last Name" ), 00123 0, mapper, TQT_SLOT( map() ), menu ); 00124 mapper->setMapping( action, COCCLName ); 00125 menu->insert( action ); 00126 action = new TDEAction( i18n( "From Field Address" ), 00127 0, mapper, TQT_SLOT( map() ), menu ); 00128 mapper->setMapping( action, COFromAddr ); 00129 menu->insert( action ); 00130 action = new TDEAction( i18n( "From Field Name" ), 00131 0, mapper, TQT_SLOT( map() ), menu ); 00132 mapper->setMapping( action, COFromName ); 00133 menu->insert( action ); 00134 action = new TDEAction( i18n( "From Field First Name" ), 00135 0, mapper, TQT_SLOT( map() ), menu ); 00136 mapper->setMapping( action, COFromFName ); 00137 menu->insert( action ); 00138 action = new TDEAction( i18n( "From Field Last Name" ), 00139 0, mapper, TQT_SLOT( map() ), menu ); 00140 mapper->setMapping( action, COFromLName ); 00141 menu->insert( action ); 00142 action = new TDEAction( i18n( "Addresses of all original recipients" ), 00143 0, mapper, TQT_SLOT( map() ), menu ); 00144 mapper->setMapping( action, COAddresseesAddr ); 00145 action = new TDEAction( i18n( "Subject" ), 00146 0, mapper, TQT_SLOT( map() ), menu ); 00147 mapper->setMapping( action, COFullSubject ); 00148 menu->insert( action ); 00149 action = new TDEAction( i18n( "Quoted Headers" ), 00150 0, mapper, TQT_SLOT( map() ), menu ); 00151 mapper->setMapping( action, CTQHeaders ); 00152 menu->insert( action ); 00153 action = new TDEAction( i18n( "Headers as Is" ), 00154 0, mapper, TQT_SLOT( map() ), menu ); 00155 mapper->setMapping( action, CHeaders ); 00156 menu->insert( action ); 00157 action = new TDEAction( i18n( "Header Content" ), 00158 0, mapper, TQT_SLOT( map() ), menu ); 00159 mapper->setMapping( action, COHeader ); 00160 menu->insert( action ); 00161 00162 // ****************************************************** 00163 menu = new TDEActionMenu( i18n( "Current Message" ), mMenu ); 00164 mMenu->insert( menu ); 00165 00166 action = new TDEAction( i18n( "Message Id" ), 00167 0, mapper, TQT_SLOT( map() ), menu ); 00168 mapper->setMapping( action, CMsgId ); 00169 menu->insert( action ); 00170 action = new TDEAction( i18n( "Date" ), 00171 0, mapper, TQT_SLOT( map() ), menu ); 00172 mapper->setMapping( action, CDate ); 00173 menu->insert( action ); 00174 action = new TDEAction( i18n( "Date in Short Format" ), 00175 0, mapper, TQT_SLOT( map() ), menu ); 00176 mapper->setMapping( action, CDateShort ); 00177 menu->insert( action ); 00178 action = new TDEAction( i18n( "Date in C Locale" ), 00179 0, mapper, TQT_SLOT( map() ), menu ); 00180 mapper->setMapping( action, CDateEn ); 00181 menu->insert( action ); 00182 action = new TDEAction( i18n( "Day of Week" ), 00183 0, mapper, TQT_SLOT( map() ), menu ); 00184 mapper->setMapping( action, CDow ); 00185 menu->insert( action ); 00186 action = new TDEAction( i18n( "Time" ), 00187 0, mapper, TQT_SLOT( map() ), menu ); 00188 mapper->setMapping( action, CTime ); 00189 menu->insert( action ); 00190 action = new TDEAction( i18n( "Time in Long Format" ), 00191 0, mapper, TQT_SLOT( map() ), menu ); 00192 mapper->setMapping( action, CTimeLong ); 00193 menu->insert( action ); 00194 action = new TDEAction( i18n( "Time in C Locale" ), 00195 0, mapper, TQT_SLOT( map() ), menu ); 00196 mapper->setMapping( action, CTimeLongEn ); 00197 menu->insert( action ); 00198 action = new TDEAction( i18n( "To Field Address" ), 00199 0, mapper, TQT_SLOT( map() ), menu ); 00200 mapper->setMapping( action, CToAddr ); 00201 menu->insert( action ); 00202 action = new TDEAction( i18n( "To Field Name" ), 00203 0, mapper, TQT_SLOT( map() ), menu ); 00204 mapper->setMapping( action, CToName ); 00205 menu->insert( action ); 00206 action = new TDEAction( i18n( "To Field First Name" ), 00207 0, mapper, TQT_SLOT( map() ), menu ); 00208 mapper->setMapping( action, CToFName ); 00209 menu->insert( action ); 00210 action = new TDEAction( i18n( "To Field Last Name" ), 00211 0, mapper, TQT_SLOT( map() ), menu ); 00212 mapper->setMapping( action, CToLName ); 00213 menu->insert( action ); 00214 action = new TDEAction( i18n( "CC Field Address" ), 00215 0, mapper, TQT_SLOT( map() ), menu ); 00216 mapper->setMapping( action, CCCAddr ); 00217 menu->insert( action ); 00218 action = new TDEAction( i18n( "CC Field Name" ), 00219 0, mapper, TQT_SLOT( map() ), menu ); 00220 mapper->setMapping( action, CCCName ); 00221 menu->insert( action ); 00222 action = new TDEAction( i18n( "CC Field First Name" ), 00223 0, mapper, TQT_SLOT( map() ), menu ); 00224 mapper->setMapping( action, CCCFName ); 00225 menu->insert( action ); 00226 action = new TDEAction( i18n( "CC Field Last Name" ), 00227 0, mapper, TQT_SLOT( map() ), menu ); 00228 mapper->setMapping( action, CCCLName ); 00229 menu->insert( action ); 00230 action = new TDEAction( i18n( "From Field Address" ), 00231 0, mapper, TQT_SLOT( map() ), menu ); 00232 mapper->setMapping( action, CFromAddr ); 00233 menu->insert( action ); 00234 action = new TDEAction( i18n( "From Field Name" ), 00235 0, mapper, TQT_SLOT( map() ), menu ); 00236 mapper->setMapping( action, CFromName ); 00237 menu->insert( action ); 00238 action = new TDEAction( i18n( "From Field First Name" ), 00239 0, mapper, TQT_SLOT( map() ), menu ); 00240 mapper->setMapping( action, CFromFName ); 00241 menu->insert( action ); 00242 action = new TDEAction( i18n( "From Field Last Name" ), 00243 0, mapper, TQT_SLOT( map() ), menu ); 00244 mapper->setMapping( action, CFromLName ); 00245 menu->insert( action ); 00246 action = new TDEAction( i18n( "Subject" ), 00247 0, mapper, TQT_SLOT( map() ), menu ); 00248 mapper->setMapping( action, CFullSubject ); 00249 menu->insert( action ); 00250 action = new TDEAction( i18n( "Header Content" ), 00251 0, mapper, TQT_SLOT( map() ), menu ); 00252 mapper->setMapping( action, CHeader ); 00253 menu->insert( action ); 00254 00255 // ****************************************************** 00256 menu = new TDEActionMenu( i18n( "Process With External Programs" ), mMenu ); 00257 mMenu->insert( menu ); 00258 00259 action = new TDEAction( i18n( "Insert Result of Command" ), 00260 0, mapper, TQT_SLOT( map() ), menu ); 00261 mapper->setMapping( action, CSystem ); 00262 menu->insert( action ); 00263 action = new TDEAction( i18n( "Pipe Original Message Body and Insert Result as Quoted Text" ), 00264 0, mapper, TQT_SLOT( map() ), menu ); 00265 mapper->setMapping( action, CQuotePipe ); 00266 menu->insert( action ); 00267 action = new TDEAction( i18n( "Pipe Original Message Body and Insert Result as Is" ), 00268 0, mapper, TQT_SLOT( map() ), menu ); 00269 mapper->setMapping( action, CTextPipe ); 00270 menu->insert( action ); 00271 action = new TDEAction( i18n( "Pipe Original Message with Headers and Insert Result as Is" ), 00272 0, mapper, TQT_SLOT( map() ), menu ); 00273 mapper->setMapping( action, CMsgPipe ); 00274 menu->insert( action ); 00275 action = new TDEAction( i18n( "Pipe Current Message Body and Insert Result as Is" ), 00276 0, mapper, TQT_SLOT( map() ), menu ); 00277 mapper->setMapping( action, CBodyPipe ); 00278 menu->insert( action ); 00279 action = new TDEAction( i18n( "Pipe Current Message Body and Replace with Result" ), 00280 0, mapper, TQT_SLOT( map() ), menu ); 00281 mapper->setMapping( action, CClearPipe ); 00282 menu->insert( action ); 00283 00284 // ****************************************************** 00285 menu = new TDEActionMenu( i18n( "Miscellaneous" ), mMenu ); 00286 mMenu->insert( menu ); 00287 00288 action = new TDEAction( i18n( "Set Cursor Position" ), 00289 0, mapper, TQT_SLOT( map() ), menu ); 00290 mapper->setMapping( action, CCursor ); 00291 menu->insert( action ); 00292 action = new TDEAction( i18n( "Insert File Content" ), 00293 0, mapper, TQT_SLOT( map() ), menu ); 00294 mapper->setMapping( action, CInsert ); 00295 menu->insert( action ); 00296 action = new TDEAction( i18n( "DNL" ), 00297 0, mapper, TQT_SLOT( map() ), menu ); 00298 mapper->setMapping( action, CDnl ); 00299 menu->insert( action ); 00300 action = new TDEAction( i18n( "Template Comment" ), 00301 0, mapper, TQT_SLOT( map() ), menu ); 00302 mapper->setMapping( action, CRem ); 00303 menu->insert( action ); 00304 action = new TDEAction( i18n( "No Operation" ), 00305 0, mapper, TQT_SLOT( map() ), menu ); 00306 mapper->setMapping( action, CNop ); 00307 menu->insert( action ); 00308 action = new TDEAction( i18n( "Clear Generated Message" ), 00309 0, mapper, TQT_SLOT( map() ), menu ); 00310 mapper->setMapping( action, CClear ); 00311 menu->insert( action ); 00312 action = new TDEAction( i18n( "Turn Debug On" ), 00313 0, mapper, TQT_SLOT( map() ), menu ); 00314 mapper->setMapping( action, CDebug ); 00315 menu->insert( action ); 00316 action = new TDEAction( i18n( "Turn Debug Off" ), 00317 0, mapper, TQT_SLOT( map() ), menu ); 00318 mapper->setMapping( action, CDebugOff ); 00319 menu->insert( action ); 00320 } 00321 00322 TemplatesInsertCommand::~TemplatesInsertCommand() 00323 { 00324 } 00325 00326 void TemplatesInsertCommand::slotClicked() 00327 { 00328 TQSize ps = mMenu->popupMenu()->sizeHint(); 00329 mMenu->popup( mapToGlobal( TQPoint( 0, -(ps.height()) ) ) ); 00330 } 00331 00332 void TemplatesInsertCommand::slotMapped( int cmd ) 00333 { 00334 emit insertCommand( static_cast<Command>( cmd ) ); 00335 00336 switch( cmd ) { 00337 case TemplatesInsertCommand::CQuote: emit insertCommand("%QUOTE"); break; 00338 case TemplatesInsertCommand::CText: emit insertCommand("%TEXT"); break; 00339 case TemplatesInsertCommand::COMsgId: emit insertCommand("%OMSGID"); break; 00340 case TemplatesInsertCommand::CODate: emit insertCommand("%ODATE"); break; 00341 case TemplatesInsertCommand::CODateShort: emit insertCommand("%ODATESHORT"); break; 00342 case TemplatesInsertCommand::CODateEn: emit insertCommand("%ODATEEN"); break; 00343 case TemplatesInsertCommand::CODow: emit insertCommand("%ODOW"); break; 00344 case TemplatesInsertCommand::COTime: emit insertCommand("%OTIME"); break; 00345 case TemplatesInsertCommand::COTimeLong: emit insertCommand("%OTIMELONG"); break; 00346 case TemplatesInsertCommand::COTimeLongEn: emit insertCommand("%OTIMELONGEN"); break; 00347 case TemplatesInsertCommand::COToAddr: emit insertCommand("%OTOADDR"); break; 00348 case TemplatesInsertCommand::COToName: emit insertCommand("%OTONAME"); break; 00349 case TemplatesInsertCommand::COToFName: emit insertCommand("%OTOFNAME"); break; 00350 case TemplatesInsertCommand::COToLName: emit insertCommand("%OTOLNAME"); break; 00351 case TemplatesInsertCommand::COCCAddr: emit insertCommand("%OCCADDR"); break; 00352 case TemplatesInsertCommand::COCCName: emit insertCommand("%OCCNAME"); break; 00353 case TemplatesInsertCommand::COCCFName: emit insertCommand("%OCCFNAME"); break; 00354 case TemplatesInsertCommand::COCCLName: emit insertCommand("%OCCLNAME"); break; 00355 case TemplatesInsertCommand::COFromAddr: emit insertCommand("%OFROMADDR"); break; 00356 case TemplatesInsertCommand::COFromName: emit insertCommand("%OFROMNAME"); break; 00357 case TemplatesInsertCommand::COFromFName: emit insertCommand("%OFROMFNAME"); break; 00358 case TemplatesInsertCommand::COFromLName: emit insertCommand("%OFROMLNAME"); break; 00359 case TemplatesInsertCommand::COFullSubject: emit insertCommand("%OFULLSUBJECT"); break; 00360 case TemplatesInsertCommand::CTQHeaders: emit insertCommand("%TQHEADERS"); break; 00361 case TemplatesInsertCommand::CHeaders: emit insertCommand("%HEADERS"); break; 00362 case TemplatesInsertCommand::COHeader: emit insertCommand("%OHEADER=\"\"", -1); break; 00363 case TemplatesInsertCommand::CMsgId: emit insertCommand("%MSGID"); break; 00364 case TemplatesInsertCommand::CDate: emit insertCommand("%DATE"); break; 00365 case TemplatesInsertCommand::CDateShort: emit insertCommand("%DATESHORT"); break; 00366 case TemplatesInsertCommand::CDateEn: emit insertCommand("%DATEEN"); break; 00367 case TemplatesInsertCommand::CDow: emit insertCommand("%DOW"); break; 00368 case TemplatesInsertCommand::CTime: emit insertCommand("%TIME"); break; 00369 case TemplatesInsertCommand::CTimeLong: emit insertCommand("%TIMELONG"); break; 00370 case TemplatesInsertCommand::CTimeLongEn: emit insertCommand("%TIMELONGEN"); break; 00371 case TemplatesInsertCommand::COAddresseesAddr: emit insertCommand("%OADDRESSEESADDR"); break; 00372 case TemplatesInsertCommand::CToAddr: emit insertCommand("%TOADDR"); break; 00373 case TemplatesInsertCommand::CToName: emit insertCommand("%TONAME"); break; 00374 case TemplatesInsertCommand::CToFName: emit insertCommand("%TOFNAME"); break; 00375 case TemplatesInsertCommand::CToLName: emit insertCommand("%TOLNAME"); break; 00376 case TemplatesInsertCommand::CCCAddr: emit insertCommand("%CCADDR"); break; 00377 case TemplatesInsertCommand::CCCName: emit insertCommand("%CCNAME"); break; 00378 case TemplatesInsertCommand::CCCFName: emit insertCommand("%CCFNAME"); break; 00379 case TemplatesInsertCommand::CCCLName: emit insertCommand("%CCLNAME"); break; 00380 case TemplatesInsertCommand::CFromAddr: emit insertCommand("%FROMADDR"); break; 00381 case TemplatesInsertCommand::CFromName: emit insertCommand("%FROMNAME"); break; 00382 case TemplatesInsertCommand::CFromFName: emit insertCommand("%FROMFNAME"); break; 00383 case TemplatesInsertCommand::CFromLName: emit insertCommand("%FROMLNAME"); break; 00384 case TemplatesInsertCommand::CFullSubject: emit insertCommand("%FULLSUBJECT"); break; 00385 case TemplatesInsertCommand::CHeader: emit insertCommand("%HEADER=\"\"", -1); break; 00386 case TemplatesInsertCommand::CSystem: emit insertCommand("%SYSTEM=\"\"", -1); break; 00387 case TemplatesInsertCommand::CQuotePipe: emit insertCommand("%QUOTEPIPE=\"\"", -1); break; 00388 case TemplatesInsertCommand::CTextPipe: emit insertCommand("%TEXTPIPE=\"\"", -1); break; 00389 case TemplatesInsertCommand::CMsgPipe: emit insertCommand("%MSGPIPE=\"\"", -1); break; 00390 case TemplatesInsertCommand::CBodyPipe: emit insertCommand("%BODYPIPE=\"\"", -1); break; 00391 case TemplatesInsertCommand::CClearPipe: emit insertCommand("%CLEARPIPE=\"\"", -1); break; 00392 case TemplatesInsertCommand::CCursor: emit insertCommand("%CURSOR"); break; 00393 case TemplatesInsertCommand::CInsert: emit insertCommand("%INSERT=\"\"", -1); break; 00394 case TemplatesInsertCommand::CDnl: emit insertCommand("%-"); break; 00395 case TemplatesInsertCommand::CRem: emit insertCommand("%REM=\"\"", -1); break; 00396 case TemplatesInsertCommand::CNop: emit insertCommand("%NOP"); break; 00397 case TemplatesInsertCommand::CClear: emit insertCommand("%CLEAR"); break; 00398 case TemplatesInsertCommand::CDebug: emit insertCommand("%DEBUG"); break; 00399 case TemplatesInsertCommand::CDebugOff: emit insertCommand("%DEBUGOFF"); break; 00400 default: 00401 kdDebug() << "Unknown template command index: " << cmd << endl; 00402 break; 00403 } 00404 } 00405 00406 #include "templatesinsertcommand.moc"